Gesamtliste der
Modelle
|
|
Das
Runge-Kutta Verfahren
|
|
|
|
Die
Aufgabe:
Numerische Lösung
einer Differentialgleichung
(eines Anfangswertproblems) |
|
Von einer Zustandsgröße Z
seien bekannt:
-
der aktuelle Wert Z(to) zum Zeitpunkt
to, d.h. anschaulich: ein Punkt
A(to;Z(to)).
-
eine Differentialgleichung
Z'(t) = f ( t ; Z(t) )
für die momentane Änderungsrate Z'(t)
bzw. - anschaulich gesprochen - für die
Steigung m=m(t)=Z'(t) zu einem beliebigen Zeitpunkt t
.
|
Das Ziel:
Verbesserung des Euler-Cauchy-Verfahrens zur Bestimmung von
Prognosewerten |
|
Aus den obigen Angaben ( Punkt A und Steigung
m=m(to) im Punkt A ) lässt sich mit Hilfe des
Steigungsdreiecks eine lineare Funktion P (Tangente im Punkt A) ermitteln,
deren Wert P(to+dt) nach dem
Euler-Cauchy-Verfahren als Prognosewert
für Z(to+dt) dient.
Im allgemeinen wird jedoch der Graph von Z im betrachteten Zeitintervall
dt mehr oder weniger beträchtlich von seiner Tangente abweichen,
so dass der Wert P(to+dt) nur einen recht ungenauen Prognosewert
für den vorherzusagenden Wert Z(to+dt) darstellt.
Insbesondere bei langen Prognosezeiträumen (vielen Prognoseschritten)
wird sich der Verfahrensfehler schnell vergrößern. |
|
Der Ansatz
des Runge-Kutta-Verfahrens |
|
Aufbauend auf dem Euler-Cauchy-Verfahren kann man
- so Runge-Kutta - den gesuchten Prognosewert nur dadurch
grundsätzlich verbessern, dass man den für die lineare Fortschreibung
Z(to+dt) = Z(to) + m(to)*dt
benutzten Steigungswert m nicht nur aus der anfänglichen
Steigung Z'(to) bestimmt, sondern von dem (mittels der gegebenen
Differentialgleichung bekannten) weiteren Steigungsverhalten der Funktion Z
abhängig macht, indem man zunächst mit einer gewissen Teil-Schrittweite
"Hilfsprognosen" erstellt und schließlich die dabei gewonnenen
"Hilfssteigungen" passend mittelt. |
Runge-Kutta-Verfahren
4.Ordnung |
|
Das hier dargestellte Runge-Kutta-Verfahren 4.Ordnung
verwendet dabei "Halbschritte" im Zeitintervall dt und gewinnt dadurch
4 "Hilfssteigungen" m1, m2, m3,
m4, deren gewichtetes arithmetisches Mittel
m =
1/6*(m1+2m2+2m3+m4)
dann die zur linearen Fortsetzung der Funktion Z benutzte Steigung
darstellt. Durch die doppelte Gewichtung der beiden "mittleren
Hilfssteigungen" m2 und m3 wird
dabei i.a. ein durchaus spürbarer zusätzlicher Genauigkeitsgewinn
erzielt. |
Das Verfahren
im einzelnen |
|
Zur Illustration des Verfahrens dient als Beispiel
die Differentialgleichung
Z'(t) = Z(t) + t -1
mit dem Anfangswert Z(0) = 1
und der (untypisch großen!) Schrittweite dt=1.
Die eingezeichneten Geraden sind dabei jeweils mit ihrer
Steigung m bezeichnet.
Dieses Beispiel wird unten auch rechnerisch behandelt. |
|
|
Mit der anfänglichen Steigung
m1=Z'(to) als
1. Hilfssteigung wird - ausgehend vom gegebenen Startpunkt
A - zunächst ein "Euler- Halbschritt" gemacht. Dadurch erhält
man einen
1. Prognosehilfswert Z1 = Z(to) +
m1*0,5dt. |
|
|
Man unterstellt nun, der zugehörige
Punkt P1(to+0,5dt;Z1) sei ein Punkt
des Graphen der gesuchten Funktion Z, und errechnet durch Einsetzen dieses
Punktes P1 in die gegebene Differentialgleichung die zugehörige
Steigung als
2. Hilfssteigung m2 = f ( to + 0,5dt ;
Z1 ). |
|
|
Mit dieser Hilfssteigung m2
führt man nun den ersten "Euler-Halbschritt" erneut durch und
erhält daraus einen
2. Prognosehilfswert Z2 = Z(to) +
m2*0,5dt.
Wieder unterstellt man, der Punkt
P2(to+0,5dt;Z2) sei ein Punkt des
Graphen der gesuchten Funktion Z, |
|
|
und errechnet durch Einsetzen des Punktes
P2 in die gegebene Differentialgleichung die zugehörige Steigung
als
3. Hilfssteigung m3 = f ( to + 0,5dt ;
Z2 ).
Mit dieser Hilfssteigung m3 führt man nun einen
ganzen "Euler-Schritt" durch und erhält einen
3. Prognosehilfswert Z3 = Z(to) +
m3*dt
sowie - wieder durch Einsetzen des als Kurvenpunkt interpretierten
Punktes P3(to+dt;Z3) in die gegebene
Differentialgleichung - die zugehörige Steigung als
4. Hilfssteigung m4 = f ( to + dt ;
Z3 ). |
|
|
Aus den so berechneten 4 Hilfssteigungen
m1,m2,m3,m4 wird
nun das gewichtete arithmetische Mittel
m = 1/6*(
m1+2m2+2m3+m4 )
berechnet, das dann als Prognosesteigung bei der linearen Fortsetzung
der Funktion Z benutzt wird. Man erhält so beim
Runge-Kutta-Verfahren 4.Ordnung den
Prognosewert Z(to+dt) = Z(to) + m * dt
.
Der zugehörige Punkt B( to+dt ; Z(to+dt
) wird als der gesuchte "nächste" Kurvenpunkt prognostiziert
und dient als Startpunkt für den nächsten
Runge-Kutta-Iterationsschritt.
Wie sich die Funktion Z bzw. ihr Graph allerdings zwischen den Punkten A
und B genau verhält, bleibt unbekannt und könnte nur durch eine
Verfeinerung der Schrittweite näherungsweise ermittelt werden; dadurch
würde sich jedoch auch der Prognosepunkt B ändern. |
|
|
|
Und nun
die Rechnung ...
... für einen Prognose-Schritt
mit der Schrittweite dt=1 |
|
Gegeben sei - wie oben - die Differentialgleichung
Z'(t) = Z(t) + t - 1 mit Anfangswert Z(0) = 1.
Die Schrittweite dt=1 ist sicher untypisch groß gewählt - üblich
wäre etwa dt=0,1 mit erheblichem Genauigkeitsgewinn.
Sie ist aber gut geeignet, um anhand eines Vergleiches mit dem
exakten Wert und dem Prognosewert nach "Euler-Cauchy" die "Genauigkeit"
des Runge-Kutta-Verfahrens zu demonstrieren. |
Exakte (analytische) Berechnung |
Das gegebene Anfangswertproblem
hat die Lösungsfunktion Z(t) = et - t , also ist der
exakte Funktionswert
Z(1) = e - 1 = 1,71828... |
Prognose nach Euler-Cauchy |
m = Z'(0) = Z(0)+0-1 = 1-1 = 0 ,
also ist der "Euler-Cauchy-Prognosewert"
Z(1) = Z(0) + m*dt = 1 |
|
|
Prognose nach Runge-Kutta |
m1 = Z'(0) = Z(0)+0-1 = 0
Z1 = Z(0)+m1*0,5dt = 1+0*0,5 = 1
m2 = Z'(0+0,5dt) = Z1+(0+0,5dt)-1 =
0,5
Z2 = Z(0)+m2*0,5dt = 1+0,5*0,5 =
1,25
m3 = Z'(0+0,5dt)=Z2+(0+0,5dt)-1 =
0,75
Z3 = Z(0)+m3*dt = 1+0,75*1 = 1,75
m4 = Z'(0+dt) = Z3+(0+dt)-1 =
1,75
m =
1/6*(m1+2m2+2m3+m4)
= 0,70833...
also ist der "Runge-Kutta-Prognosewert"
Z(1) = Z(0+dt)=Z(0)+m*dt=1+m= 1,70833... |
|
Ergebnisvergleich
bzgl. des Verfahrensfehlers
Trotz der großen Schrittweite ist die Prognose nach Runge-Kutta
bei diesem (allerdings "gutmütigen")
Beispiel sehr gut.
Der verfahrensbedingte Fehler gegenüber der exakten Lösung
beträgt hier nur ca. 0,01 , während er beim Euler-Cauchy-Verfahren
mit ca. 0,72 doch noch sehr groß ist.
Entsprechende, jedoch weit weniger krasse Befunde ergeben sich,
wie weitere (eigene) Rechenbeispiele zeigen können, auch dann, wenn
beim Euler-Cauchy-Verfahren die Schrittweite
deutlich verringert wird. |
|
Graphische Darstellung des Runge-Kutta-Verfahrens
4.Ordnung
mit eingetragener Lösungsfunktion
|
|
|
|
Grundsätzliches
zum Verfahrensfehler |
|
Typisch bei der Anwendung numerischer Verfahren
zur Lösung von Differentialgleichungen ist der sogenannte
Verfahrensfehler, der natürlich umso größer ist, je
größer die Schrittweite dt gewählt wird.
Die Theorie lehrt, dass ( für dt < 1 ) dieser
Verfahrensfehler bei Verwendung des Euler-Cauchy-Verfahrens von der
Größenordnung (dt)2, beim Runge-Kutta-Verfahren dagegen
lediglich von der Größenordnung (dt)5 ist.
(vgl. die einschlägige Fachliteratur; einen ersten Einblick geben z.B.
bereits "Lexika" wie:
Reinhardt,F.;Soeder,H.: dtv-Atlas zur Mathematik, Bd.2, München 1977,
S.390ff.
oder auch
Netz, H. (Hrsg): Formeln der Mathematik, Westermann, Braunschweig 1965,
S.546 ff). |
|
|
|
Wer's genauer
wissen will ... |
|
Genauere Untersuchungen hinsichtlich der Auswirkungen
unterschiedlicher dt-Wahlen beim Runge-Kutta-Verfahren 4. Ordnung sind am
Beispiel des exponentiellen Wachstums zusammengestellt auf der Seite
Diskretisierung eines kontinuierlichen Systems
und numerische Lösung ... |
|
|
|
|
|
Der vergleichsweise große Verfahrensfehler des Euler-Cauchy-Verfahrens
nimmt i.a. mit wachsender Iterationszahl sehr stark zu, während
er beim (allerdings für diskrete Systeme im Grunde ungeeigneten)
Runge-Kutta-Verfahren meist auch über längere Zeiträume in
erträglichen Grenzen bleibt.
Jedenfalls leuchtet ein, dass aufgrund des deutlich größeren
Verfahrensfehlers das Euler-Cauchy-Verfahren allenfalls bei diskreten Systemen
(aufgrund der vorgegebenen Schrittweite) und/oder bei sehr kurzen
Prognosezeiträumen einigermaßen erfolgreich angewandt werden kann. |
Gefahr von
Rundungsfehlern |
|
Andererseits steigt durch den deutlich erhöhten
Rechenaufwand sowohl bei Verwendung des Runge-Kutta-Verfahrens als auch beim
Euler-Cauchy-Verfahren mit verringerter Schrittweite die Wahrscheinlichkeit
von Rundungsfehlern spürbar an. |
Fehlerüberlagerung
Wie man sich auch dreht und wendet, der .... bleibt
hinten! (Volksweisheit) |
|
Man kann also Fehler prinzipiell nicht vermeiden,
und es bleibt obendrein unklar, in welcher Weise Verfahrens- und Rechen-
bzw. Rundungsfehler den Gesamtfehler vergrößernd oder verkleinernd
beeinflussen. Es ist vielmehr durchaus möglich, dass sich die Fehler
bis zu ersichtlich unsinnigen Rechenergebnissen verstärken. Dies gilt
in besonderem Maße für periodische Abläufe, so dass hier leicht der Eindruck eines chaotischen Verhaltens entstehen kann, obwohl
dieses in der Realität gar nicht vorliegt. |
Vorsicht
!
Hier müssen Sie selber nachdenken! |
|
Auswahlprobleme mit
den Rechenverfahren
Unterrichtsprobleme mit den
Rechenverfahren
|