hat geschrieben:Viel Spass beim Lösen.
Na wenn hier eh nur noch alte Beiträge hin und her gespammt werden kann ich die Gelegenheit ja nutzen um hier wieder ein bisschen Übersicht zu schaffen:
hat geschrieben:1. kleine Amplituden
Wenn die initialen Winkel klein sind können die höheren Terme vernachlässigt werden und die Schwingungsdauer ist für alle Pendel annähernd gleich.
Winkel nach Zeit:
Schwingungsdauer:
Position nach Zeit:
In den Rechnungen wird g = 10 m/sek² und r = 1 m gesetzt. Alle Winkel sind in Radianten angegeben. Die Schweiflänge ist 1/20 Sekunde (je höher die Geschwindigkeit desto länger der Schweif). Code:
- Code: Alles auswählen
(* Syntax: Mathematica || yukterez.net *)
θ[t_, θ0_] := θ0 Cos[Sqrt[g/r] t]
x[t_, θ0_] := +Sin[θ[t, θ0]] r
y[t_, θ0_] := -Cos[θ[t, θ0]] r
g = 10; r = 1; θ1 = -π/8; θ2 = -π/6; θ3 = -π/4;
Do[Print[Rasterize[Grid[{{Show[
Graphics[
{LightGray, Line[{{0, 0}, {x[τ, θ1], y[τ, θ1]}}]},
PlotRange -> {{-1.1 r, 1.1 r}, {-1.1 r, 0 r}},
Frame -> True, ImageSize -> 420],
Graphics[
{LightGray, Line[{{0, 0}, {x[τ, θ2], y[τ, θ2]}}]}],
Graphics[
{LightGray, Line[{{0, 0}, {x[τ, θ3], y[τ, θ3]}}]}],
Graphics[{LightGray, Dashed, Circle[]}],
ParametricPlot[{
{x[t, θ3], y[t, θ3]},
{x[t, θ2], y[t, θ2]},
{x[t, θ1], y[t, θ1]}
}, {t, Max[0, τ - 0.05], τ},
PlotStyle -> {{Opacity[0.5], Red}, {Opacity[0.5], Cyan}, {Opacity[0.5], Blue}}]
]}, {"t" -> Evaluate[τ]}}, Alignment -> Left]]],
{τ, 0.01, 2 π Sqrt[r/g], 0.01}]
2. beliebig hohe Amplituden
Bei höheren Startwinkeln können die höheren Terme nicht mehr vernachlässigt werden. Für die höchste Genauigkeit wird integriert; nach einem halben Zyklus (-θ[sub]0[/sub]..+θ[sub]0[/sub]) kehrt sich bei gleichbleibender Funktion einfach die Richtung des Pendels um.
Die vom momentanen Winkel abhängige Zeit bei Startwinkel ist:
Für eine volle Periode (die Zeit bis das Pendel wieder an seiner Ausgangsposition angekommen ist) gilt daher:
Position nach Zeit:
Dauer nach Winkel (x: Winkel, y: Zeit):
Zeitlicher Unterschied zur Kleinwinkelapproximation bei steigendem Startwinkel (Integral/Vereinfachung):
Die x-Achse hat die Einheit Radiant (für Grad mit 180/π = 57.3 multiplizieren): bei einem Startwinkel von 45° liegt der Unterschied in der Periodendauer bei 4%, bei 90° bereits bei 18% und bei knapp unter 180° liegt der Faktor sogar bei 2п.
Code zur Animation:
- Code: Alles auswählen
(* Syntax: Mathematica || yukterez.net *)
set = {"GlobalAdaptive", "MaxErrorIncreases" -> 100,
Method -> "GaussKronrodRule"}; n = 100;
int[f_, {x_, xmin_, xmax_}] :=
Quiet[NIntegrate[f, {x, xmin, xmax}, Method -> set,
MaxRecursion -> n]];
t[φ_, θ0_] := Sqrt[r/(2 g)] int[1/Sqrt[Cos[θ] - Cos[θ0]], {θ, φ, θ0}];
α[т_, θ0_] := Quiet[Re[λ /. FindRoot[t[λ, θ0] - т, {λ, θ0}]]];
x[т_, θ0_] := Quiet[+Sin[α[т, θ0]]] r;
y[т_, θ0_] := Quiet[-Cos[α[т, θ0]]] r;
g = 10; r = 1; δ = 3 π/4; ε = π/2; κ = π/4;
Do[Print[Rasterize[Grid[{{Show[
Graphics[{LightGray, Line[{{0, 0}, {x[τ, δ], y[τ, δ]}}]},
PlotRange -> {{-1.1 r, 1.1 r}, {-1.1 r, 1.1 r}},
Frame -> True, ImageSize -> 420],
Graphics[{LightGray, Line[{{0, 0}, {x[τ, ε], y[τ, ε]}}]}],
Graphics[{LightGray, Line[{{0, 0}, {x[τ, κ], y[τ, κ]}}]}],
Graphics[{LightGray, Dashed, Circle[]}],
ParametricPlot[{
{x[T, κ], y[T, κ]},
{x[T, ε], y[T, ε]},
{x[T, δ], y[T, δ]}
},
{T, Max[0, τ - 0.05], τ},
PlotStyle -> {{Opacity[0.5], Red}, {Opacity[0.5], Cyan}, {Opacity[0.5], Blue}}]]},
{"t" -> Evaluate[τ]},
{"δ" -> Evaluate[α[τ, δ]]},
{"ε" -> Evaluate[α[τ, ε]]},
{"κ" -> Evaluate[α[τ, κ]]}},
Alignment -> Left]]],
{τ, 0.01, 3, 0.01}]
3. Pendel mit Initialgeschwindigkeit
Wird dem Pendel bei Position eine initiale Winkelgeschwindigkeit mitgegeben ergibt sich
Damit das Integral bei mehr als einer Umrundung nicht zusammenbricht wird bei ausreichender Initialgeschwindigkeit gesetzt, und
Bei einem schwingenden Pendel ohne Überschlag kann in der Formel für stattdessen auch einfach und gesetzt werden.
Beispiel: einem Pendel mit Radius r = 1 m im Schwerefeld der Erde von g = 9.8 m/sek² wird zum Zeitpunkt t = 0 bei der Auslenkung θ[sub]i[/sub] = 170° eine Umlaufgeschwindigkeit von v = 1 m/sek verpasst.
Nach Hausnummer 8 sek befindet es sich bei der Position φ = -21.461 rad, oder in Grad: Mod[-Ceiling[φ/π]·π,φ]·180/π = -149.646°. Animation: t=0..8.png
Numerische Umkehrfunktion von t(φ) auf φ(t) und animierter Plot für einen abgeschlossenen Umlauf, der in diesem Beispiel 2.1637 sek dauert:
Die Schweiflänge in der Animation beträgt 1/10 sek. Code:
- Code: Alles auswählen
(* Syntax: Mathematica || yukterez.net *)
g = 98/10; r = 1; θ0 = π; θi = 170/180 π; ωi = 1;
set = {"GlobalAdaptive", "MaxErrorIncreases" -> 100, Method -> "GaussKronrodRule"}; n = 100;
int[f_, {x_, xmin_, xmax_}] := Quiet[NIntegrate[f, {x, xmin, xmax}, Method -> set, MaxRecursion -> n]];
Clear[ω];
F[θ_, θ0_] := Sqrt[(2 g (Cos[θ] - Cos[θ0]))/r + ω^2];
t[φ_, θ0_] := int[F[θ, θ0]^-1, {θ, φ, θ0}];
α[т_, θ0_] := Quiet[Re[λ /. FindRoot[t[λ, θ0] - т, {λ, θ0}]]];
ω = Solve[F[θi, θ0] == ωi, ω][[1]][[1]][[2]];
x[т_, θ0_] := Quiet[+Sin[α[т, θ0]]] r;
y[т_, θ0_] := Quiet[-Cos[α[т, θ0]]] r;
tu = 2 t[0, θ0]; "Umlaufzeit" -> tu "sek"
ti = t[θi, θ0];
Plot[{t[w, θ0] - ti}, {w, -3 π, +3 π},
PlotStyle -> Red, Frame -> True, ImageSize -> 420, GridLines -> {Table[π n, {n, -5, 5}], None}]
(* Zeit nach Winkel *)
Plot[{α[T + ti, θ0]}, {T, -4 t[0, θ0], +4 t[0, θ0]},
PlotStyle -> Red, Frame -> True, ImageSize -> 420, GridLines -> {None, Table[π n, {n, -5, 5}]}]
(* Winkel nach Zeit *)
Do[Print[Rasterize[Grid[{{Show[
Graphics[{Gray, Dashed, Circle[]},
PlotRange -> {{-1.1 r, 1.1 r}, {-1.1 r, 1.1 r}},
Frame -> True, ImageSize -> 420],
Graphics[{Gray, Line[{{0, 0}, {x[τ, θ0], y[τ, θ0]}}]}],
ParametricPlot[{{x[T, θ0], y[T, θ0]}}, {T, τ - 0.1, τ},
PlotStyle -> {{Opacity[1], Red}}]]},
{"t" -> Evaluate[τ - ti]},
{"x" -> Evaluate[x[τ, θ0]]},
{"y" -> Evaluate[y[τ, θ0]]},
{"ψ" -> Evaluate[α[τ, θ0]]},
{"ω" -> Evaluate[F[α[τ, θ0], θ0]]}},
Alignment -> Left]]],
{τ, 0 + ti, tu + ti, 0.01}]
,