Serie 13 - SAM
Serie 13 - SAM
Serie 13 - SAM
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
D-MATH Numerische Methoden für D-PHYS FS 20<strong>13</strong><br />
Dr. Vasile Gradinaru<br />
Dr. Roger Käppeli<br />
<strong>Serie</strong> <strong>13</strong><br />
1. Anfangsamplitude eines Pendels zu gegebener Periode<br />
Die Bewegungsgleichung eines mathematischen Pendels (Reibung vernachlässigt) der Länge l ist eine<br />
nicht-lineare gewöhnliche Differentialgleichung 2. Ordnung, und das zugehörige Anfangswertproblem<br />
ist<br />
¨φ = − g l sin(φ), φ(0) = φ 0 ∈ (0,π/2] , ˙φ(0) = 0 , (1)<br />
wobeiφder Winkel des Pendels in Bezug zur vertikalen Richtung andg die Gravitationskonstante ist.<br />
Bei kleinen Winkelnφist es gerechtfertig die Näherungsin(φ) ≈ φ zu verwenden, um die Gleichung zu<br />
approximieren. In diesem Fall ist die Lösung eine harmonische Oszillation, deren PeriodeT unabhängig<br />
vom Anfangswertφ 0 ist. Für grosse Amplituden jedoch ist die PeriodeT der Lösung eine Funktion des<br />
Anfangswertes.<br />
Wir betrachten daher im Folgenden das nicht-lineare Anfangswertproblem (1) mit l = 0.6 m und<br />
g = 9.81 ms −2 und betrachten das Problem:<br />
Bestimme den Anfangswertφ 0 , so dassT = 1.8 die Periode der Lösung ist.<br />
Für die numerische Lösung dieses Problems müssen wir sowohl numerische Integration als auch numerische<br />
Nullstellensuche verwenden.<br />
a) Schreibe die Differentialgleichung 2. Ordnung (1) als eine System von Differentialgleichungen 1.<br />
Ordnung.<br />
b) Schreibe eine Python Funktion<br />
IntegratePendulum(phi0,tEnd,l,g,flag)<br />
die den Integratorode45 verwendet um (1) mit den Parameternl andg zu lösen. Fürflag=True<br />
soll nur die numerische Approximation von ϕ(tEnd) anstatt die gesamte numerische Lösung zurückgegeben<br />
werden.<br />
c) Löse das Anfangswertproblem (1) für die Anfangswerte φ 0 = 0.8 π 2 und φ 0 = 0.99 π 2<br />
. Plotte in<br />
beiden Fällen den zeitlichen Verlauf vonφund ˙φ. Verifiziere, dass die Periode der Lösung für den<br />
ersten Startwert kleiner und für den zweiten Startwert grösser alsT = 1.8.<br />
Aufgrund der Symmetrie folgt: Das Pendel passiert in jedem Fall beit = T 4 undt = 3 4T seinen tiefsten<br />
Punkt. Daher können wir das Problem (1.) folgendermassen formulieren:<br />
Bestimme φ 0 > 0, so dass für die Lösungt ↦→ φ(t) von (1)φ(0.45) = 0. gilt<br />
Dieses Problem kann als Nullstellensuche für die Funktion F : [0,π/2] ↦→ R, F(φ 0 ) := φ(0.45)<br />
formuliert werden, wobeiφ(t) durch (1) definiert ist.<br />
Die Funktion F ist stetig and steigend auf [0.8π/2,0.99π/2] (grössere Anfangswerte sind längere Perioden).<br />
Daher hatF auf diesem Intervall eine eindeutige Nullstelle, die beispielsweise mit der Bisektionsmethode<br />
numerisch berechnet werden kann.
d) Verwende die Python-Funktonfsolve aus dem Modulescipy.optimize um die Nullstelle<br />
von F(φ 0 ) zu bestimmmen. VerwendeIntegratePendulum aus Teilaufgabe b) um den Wert<br />
F(φ 0 ) = φ(0.45) zu approximieren.<br />
Plotte die Lösung und verifiziere, dass die numerische Lösung tatsächlich die PeriodeT = 1.8 hat.<br />
Hinweis: Verwende das TemplatePendulum_Template.py undode45.py.<br />
2. Numerische Lösung der Pendelgleichung und Energieerhaltung<br />
Implementiere im TemplatependSolver_Template.py jeweils das explizite Eulerverfahren, das<br />
implizite Eulerverfahren und die implizite Mittelpunktsregel in den Funktionen{IntegratePendulumEE,<br />
IntegratePendulumIE<br />
undIntegratePendulumIM um numerische Lösungen der Pendelgleichung (s. <strong>Serie</strong> 12) auf einem<br />
equidistanten Gitter zu bestimmen.<br />
Plotte die numerischen Lösungen der drei Methoden zu den Daten l = 0.6 m, g = 9.81 ms −2 , T = 4,<br />
ϕ 0 = 1.4855<strong>13</strong> undN = 500 Zeitschritten im Phasenraum(ϕ, ˙ϕ).<br />
Plotte auch den zeitlichen Verlauf der kinetischen Energie, der potentiellen Energie und der Gesamtenergie.<br />
Hinweis: Verwende fsolve aus dem Modul scipy.optimize um nicht-lineare Gleichungen zu<br />
lösen.<br />
Abgabe: 28./29.05.20<strong>13</strong>, in den Übungsgruppen oder in den Fächern im (Vor)Raum HG G 53<br />
Koordinator: Dr. Roger Käppeli, HG G 52.1,roger.kaeppeli@sam.math.ethz.ch<br />
Webpage:<br />
http://www.math.ethz.ch/education/bachelor/lectures/fs20<strong>13</strong>/other/nm_pc