Advertisement
Matthen

Pendulum Spring Swinging

Jan 12th, 2012
526
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.45 KB | None | 0 0
  1. eqns = {
  2. x''[t] + (Sqrt[x[t]^2 + y[t]^2] - 1) x[t]/ Sqrt[
  3. x[t]^2 + y[t]^2] == 0,
  4. y''[t] + (Sqrt[x[t]^2 + y[t]^2] - 1) y[t]/ Sqrt[x[t]^2 + y[t]^2] +
  5. 1/4 == 0,
  6. x'[0] == 0, x[0] == 0.001,
  7. y'[0] == 0.5, y[0] == -1};
  8. soln = NDSolve[eqns, {x[t], y[t], x'[t], y'[t]}, {t, 0, 114.8},
  9. Method -> "ExplicitRungeKutta", MaxSteps -> 30000];
  10. Rugo[xkezd_, ykezd_, xveg_, yveg_] :=
  11. Module[{hx, hossz, dh, hy, veghossz, szel}, {
  12. hx = xveg - xkezd; hy = yveg - ykezd; szel = 0.1; veghossz = 0.3;
  13. hossz = Sqrt[hx^2 + hy^2];
  14. dh = (hossz - 2*veghossz)/30;
  15. {xkezd, ykezd}}~
  16. Join~{{xkezd + hx*(dh + veghossz)/hossz,
  17. ykezd + hy*(dh + veghossz)/hossz}}~Join~
  18. Table[If[
  19. OddQ[i], {xkezd + hx*(i*dh + veghossz)/hossz + hy*szel/hossz,
  20. ykezd + hy*(i*dh + veghossz)/hossz - hx*szel/hossz},
  21. {xkezd + hx*(i*dh + veghossz)/hossz - hy*szel/hossz,
  22. ykezd + hy*(i*dh + veghossz)/hossz + hx*szel/hossz}], {i, 2,
  23. 28}]~Join~{{xkezd + hx*(29*dh + veghossz)/hossz,
  24. ykezd + hy*(29*dh + veghossz)/hossz}}~Join~{{xveg, yveg}}];
  25. frame[tt_] := Show[
  26. Graphics[{
  27. Line[Rugo @@ First[{0, 0, x[t], y[t]} /. soln /. {t -> tt}]],
  28. Disk[First[{x[t], y[t]} /. soln /. {t -> tt}], 0.1]
  29. }, PlotRange -> {{-1.2, 1.2}, {-1.8, 0}}, ImageSize -> 300],
  30. ParametricPlot[{x[t], y[t]} /. soln /. {t -> \[Tau]}, {\[Tau], tt,
  31. tt + 1}, PlotStyle -> Directive[Thick, Red]]
  32. ];
  33. Manipulate[frame[tt],{tt,0,114.8}]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement