12.02.2014 Aufrufe

Mathematik für Physiker - Numerische Physik: Modellierung

Mathematik für Physiker - Numerische Physik: Modellierung

Mathematik für Physiker - Numerische Physik: Modellierung

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

7.10. GEWÖHNLICHE DIFFERENTIALGLEICHUNGEN IN MATLAB 293<br />

Abbildung 7.26: Lösung der DGL<br />

mittels Runge–Kutta Verfahren 4.<br />

Ordnung<br />

§ 1104 Die Rechenvorschrift für ein Runge–Kutta Verfahren 4. Ordnung ist gegeben als<br />

mit<br />

x(t i ) = x(t i−1 ) + ∆t<br />

6 (k 1 + 2k 2 + 2k 3 + k 4 )<br />

(<br />

k 1 = f(t i−1 , x i−1 ) , k 2 = f t i−1 + ∆t<br />

2 , x i−1 + ∆t k )<br />

1<br />

(<br />

2<br />

k 3 = f t i−1 + ∆t<br />

2 , x i−1 + ∆t k )<br />

2<br />

, k 4 = f (t i , x i−1 + ∆t k 3 ) .<br />

2<br />

§ 1105 Um diese Routine selbst in MatLab zu implementieren, verwenden wir wieder das<br />

Beispiel aus § 1085. Die Numerik steckt im folgenden Teil des Programms:<br />

x(1)=2;<br />

for i=2:length(t);<br />

k1=feval(fh,t(i-1),x(i-1));<br />

k2=feval(fh,t(i-1)+dt/2,x(i-1)+dt*k1/2);<br />

k3=feval(fh,t(i-1)+dt/2,x(i-1)+dt*k2/2);<br />

k4=feval(fh,t(i),x(i-1)+dt*k3);<br />

x(i)=x(i-1) + dt*(k1+2*k2+2*k3+k4)/6;<br />

end<br />

Hier werden zuerst die Koeffizienten k i , entsprechend den verschiedenen Ansätzen für die<br />

Steigung in verschiedenen Punkte des Intervalls bestimmt. Dann wird die Lösung um einen<br />

Schritt in ∆x fortgeführt.<br />

§ 1106 Das vollständige Skript befindet sich in der Datei rungekuttaskript, die Ergebnis- rungekuttaskript<br />

se für das obige Beispiel sind in Abb. 7.26 gezeigt. Die relative Abweichung zwischen der<br />

analytischen und der numerischen Lösung liegt in der Größenordnung von 2 · 10 −6 , d.h. sie<br />

ist bei gleicher Schrittweite für diese DGL um drei Größenordnungen besser als im Leapfrog<br />

Verfahren und um 5 Größenordnungen besser als im Euler Verfahren. Diese Zahlen gelten<br />

jedoch nur für dieses spezielle Beispiel, bei anderen Differentialgleichungen müssen die Unterschiede<br />

nicht so groß ausfallen. Auch sollten Sie sich nicht von einer zu großen Genauigkeit<br />

blenden lassen: das Runge–Kutta Verfahren ist hier zwar wesentlich genauer als das Leapfrog<br />

Verfahren, benötigt auf Grund der vielen, in jeder Schleife neu zu berechnenden Koeffizienten<br />

k i jedoch recht viel Rechenzeit. Im Sinne einer Laufzeitoptimierung kann daher das Leapfrog<br />

Verfahren das interessantere sein: es ist einerseits deutlich genauer als das Euler Verfahren<br />

und andererseits schneller als das Runge–Kutta Verfahren, dessen Genauigkeit gar nicht<br />

immer erforderlich ist.<br />

c○ M.-B. Kallenrode 13. März 2007

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!