Das Auffinden von Lösungen von Differentialgleichungen (Dgl.en) gehört zu den wichtigsten Aufgaben der numerischen Mathematik, und zwar aus zwei Gründen:
Im folgenden wird ausschließlich von expliziten Dgl.en die Rede sein,
d.h. von solchen, die nach der jeweils höchsten vorkommenden Ableitung
aufgelöst werden können. Dgl.en von der Art
Alle numerischen Verfahren zur näherungsweisen Lösung von Dgl.en liefern
natürlich keine Funktionen mit allgemeinen Integrationskonstanten, sondern
berechnen punktweise jene Lösungen, die durch die entsprechenden
Nebenbedingungen spezifiziert werden. In diesem Kapitel werden nur
Anfangswert-Probleme behandelt, d.h. solche, bei denen die
Nebenbedingungen das Verhalten der Lösungsfunktionen in einem
Punkt
festlegen. Ein vollständig definiertes
Anfangswert-Problem hat daher die Form
Ausgangspunkt aller weiteren Überlegungen ist die Potenzreihenentwicklung
der i-ten Lösungsfunktion des Systems (8.2)
Anmerkung: Hier und im folgenden werden Näherungswerte von
stets mit
bezeichnet.
Die älteste Näherungsmethode zur numerischen Behandlung von Dgl.ssystemen
stammt von Leonhard Euler. In diesem Verfahren erster Ordnung (=1)
wird die Entwicklung
(8.5) bereits nach dem zweiten Term abgebrochen, und man
erhält
Runge-Kutta-Methoden sind die weitaus populärsten zur numerischen
Behandlung von Anfangswertproblemen, vor allem deshalb, weil sie sich
außerordentlich gut für die Rechenmaschine eignen und in vielen Fällen
Resultate hoher Genauigkeit mittels akzeptablen Rechenaufwandes liefern.
Der - wie noch zu erläutern sein wird - größte Nachteil der
Runge-Kutta-Methoden liegt in der ziemlich schwierigen Fehlerabschätzung
(s. Abschnitt 8.4.5).
Runge-Kutta-Methoden sind durch die folgenden drei Prinzipien charakterisiert:
Aus diesen drei Charakteristiken für Runge-Kutta-Methoden ergibt sich sofort:
Die Methode von Euler ist eine Runge-Kutta-Methode erster Ordnung.
Es soll nun gezeigt werden, wie Runge-Kutta-Formeln zweiter Ordnung gewonnen
werden können. Der Einfachheit halber wird hier ein 'Dgl.ssystem' behandelt,
das nur aus der einzigen Gleichung
Dazu zwei Beispiele:
Die grafische Interpretation dieser beiden Näherungsformeln geht aus der Abb.8.2 hervor.
![]() |
Im Diagramm 8.3 werden die bisher vorgestellten Runge-Kutta-Formeln
(8.6), (8.13) und (8.14) auf das einfache Beispiel
Aus den in Abb. 8.3 dargestellten Ergebnissen geht klar hervor,
daß die beiden Runge-Kutta-Methoden zweiter Ordnung eine Klasse besser sind
als das einfache Euler-Verfahren erster Ordnung.
Es wäre hingegen falsch, aus der Tatsache, daß beim gegebenen Beispiel
die 'modifizierte Euler-Formel' den exakten Lösungswert besser approximiert
als
die 'verbesserte Euler-Formel', zu schließen, daß erstere Methode besser ist
als letztere. Dies ist reiner Zufall und kann bei einem anderen Beispiel
umgekehrt sein!
Jede Runge-Kutta-Formel derselben Ordnung ist prinzipiell gleichwertig!
Für Dgl.ssysteme von Gleichungen lautet der allgemeine
Runge-Kutta-Ansatz
-ter Ordnung:
[(8.17) ist offenbar eine Rekursionsformel: Zur Berechnung der
ist die Kenntnis aller vorherigen
-Werte
,
und
erforderlich.]
Der Runge-Kutta-Ansatz (8.15) enthält genau
Koeffizienten, und zwar
Zur besseren Übersichtlichkeit können diese Koeffizienten auch als Schema der Art
geschrieben werden. Die Berechnung der Koeffizienten erfolgt im Prinzip gleich
wie für den Fall . Für größere Werte von
wird die Rechnung jedoch
ziemlich umfangreich (s. z.B. [19]). In jedem Fall ergeben sich
aber für die Koeffizienten unterbestimmte Gleichungssysteme, was auch für
zu einer unendlichen Mannigfaltigkeit von Runge-Kutta-Formeln führt.
Natürlich braucht der Benutzer diese Formeln nicht selbst abzuleiten, sondern er kann sie der Literatur entnehmen. Eine Sammlung von Runge-Kutta-Formeln der Ordnungen 1-8 ist z.B. in [2], S. 215-217, zu finden.
In der Praxis werden heute hauptsächlich Runge-Kutta-Methoden vierter Ordnung angewendet, darunter vor allem
die 3/8-Formel: die 'klassische' Runge-Kutta-Formel:
Das im Abschnitt 8.5 präsentierte Programm beruht auf der klassischen
Runge-Kutta-Formel. Aus diesem Grund seien die entsprechenden Formeln nun
explizite hingeschrieben:
Anmerkung: Das klassische Runge-Kutta-Verfahren würde, auf das
Beispiel von Seite 240 angewendet, einen Fehler von lediglich
ergeben.
Die Formeln (8.18) und (8.19) dienen also dazu, ausgehend von
bekannten Anfangswerten an der Stelle
Näherungswerte
für die Lösungsfunktionen an der Stelle
zu berechnen.
Nun ist man aber i.a. nicht nur an den Näherungslösungen für den einen
Abszissenwert interessiert, sondern auch an den
für die weiteren Abszissenwerte
! Das heißt aber, daß das Runge-Kutta-Verfahren nicht nur einmal
angewendet wird, sondern oftmals hintereinander, wobei man sich Schritt für
Schritt vom Anfangspunkt
wegbewegt:
Der wesentliche Unterschied zwischen dem ersten und allen weiteren
Runge-Kutta-Schritten
besteht darin, daß die -Werte auf der rechten Seite der ersten
Gleichung die exakt bekannten Anfangswerte des gegebenen Problems sind,
während die
-Werte der folgenden Gleichungen nur Näherungswerte
darstellen!
Es soll nun angenommen werden, daß ein Programm RUNGETEST vorliegt, mit
Hilfe dessen ein Anfangswertproblem (8.2) mittels der Formeln
(8.18), (8.19) gelöst werden kann, wobei die
(vom Benutzer festgelegte) Schrittweite
während des ganzen Runge-Kutta-Prozesses konstant ist.
Die Leistungsfähigkeit von RUNGETEST soll im folgenden
an Hand eines durchaus nicht-trivialen Problems getestet
werden: Es geht dabei um die Bahnkurve eines Erdsatelliten (s. Abb.
8.4).
Definition des Problems:
Ein Satellit wird von der Oberfläche der Erde tangential mit der
Geschwindigkeit in Bewegung gesetzt. Zu berechnen ist seine
Bahnkurve unter den folgenden Bedingungen bzw. Idealisierungen:
Unter diesen Voraussetzungen lautet die Bewegungsgleichung des
Satelliten
Wenn man nun alle Längen in Einheiten mißt, alle
Geschwindigkeiten in Einheiten
, und alle Zeiten in Einheiten
der (theoretisch berechenbaren) exakten Umlaufzeit, ergibt sich für
den in Glg. (8.21) vorkommenden Faktor
Ein entscheidendes Kriterium für die Zuverlässigkeit der numerischen
Methode ist natürlich die Bahnstabilität, d.h. die Bahnellipse sollte
sich Umlauf für Umlauf exakt wiederholen. Jede Abweichung von dieser
Stabilität deutet auf Verfahrens- und/oder Rundungsfehler8.1 im
Runge-Kutta-Programm hin!
Es leuchtet unmittelbar ein, daß die Verfahrensfehler des
Programmes umso kleiner sein werden, je kleiner man die
Schrittweite des Runge-Kutta-Prozesses wählt. Diese Tatsache ist in der
Abbildung 8.5 eindrucksvoll zu sehen, wo jeweils 5 volle
Umläufe dargestellt sind. Die verwendeten Schrittweiten waren
(a) , (b)
, (c)
und (d)
der Umlaufzeit des
Satelliten.
Diese Testergebnisse zeigen deutlich, welch großen Einfluß die
Schrittweite auf die performance des Runge-Kutta-Prozesses hat:
Bei einer Schrittweite von der Umlaufzeit (a) ist der Prozess vollkommen
instabil, während bei einer Schrittweite, die nur um einen Faktor
kleiner ist (d), eine fast perfekte Bahnstabilität vorliegt.
Man kann also sagen:
![]() ![]() ![]() ![]() |
Wie schon oft erwähnt, wird ein numerisches Ergebnis erst durch die Angabe seines (absoluten oder relativen) Fehlers brauchbar. Man hätte ja ansonsten keinerlei Anhaltspunkte für die Qualität des Näherungsergebnisses.
Da die Runge-Kutta-Methoden eng mit dem Taylorreihen-Ansatz (8.3)
verwandt sind, liegt es nahe, das entsprechende Restglied von Lagrange
(8.4) zur Abschätzung des Verfahrensfehlers heranzuziehen. Für
das klassische Runge-Kutta-Verfahren (Ordnung ) ergibt sich daraus
Ebenso kann man aber, um von nach
zu gelangen,
nacheinander zwei Runge-Kutta-Schritte mit der Schrittweite
machen. Dies ergibt
Aus der Kombination der Gleichungen (8.25) und (8.26) folgt
auch sofort eine Beziehung, die es erlaubt, die erhaltenen
Näherungswerte auf einfache Weise zu verbessern:
Nun kommt der entscheidende Punkt: Man kann sich die Frage stellen,
wie groß die ideale Schrittweite hätte sein müssen
(oder sein
dürfen), um zu gewährleisten, daß
eine vorgegebene Fehlerschranke
gerade nicht überschreitet.
Da aber der Verfahrensfehler mit der fünften Potenz von variiert, ist
diese Frage leicht zu beantworten. Es gilt einfach:
Mit dieser Strategie wird zweierlei erreicht: Zum ersten ist gewährleistet,
daß die Schrittweite stets klein genug ist, um den jeweiligen (lokalen)
Verfahrensfehler unter der geforderten Grenze zu halten,
zum zweiten wird aber stets mit einer möglichst großen Schrittweite
gearbeitet, was sich auf die Rechenzeit positiv auswirkt.
Abschließend soll noch einmal darauf hingewiesen werden, daß die hier
vorgestellte Methode der Schrittweitensteuerung auf einer Reihe von Annahmen
basiert (etwa der Annahme der Unabhängigkeit der Größe von
),
die durchaus nicht immer erfüllt sein müssen!
Zusätzlich wird hier immer nur der lokale Fehler berücksichtigt,
und dabei außer acht gelassen, daß sich in vielen Fällen die von
Schritt zu Schritt auftretenden lokalen Fehler zu einem viel drastischeren
globalen Fehler aufsummieren können.
Die Schrittweitensteuerung, die im nun folgenden Programm verwendet wird, versucht auf einige dieser Probleme Rücksicht zu nehmen.
Quelle: [9], S. 550-560, vereinfacht.
Die Programme ODEINT, RKQC und RK4 dienen zur numerischen Auswertung eines Anfangswertproblems (8.1).
ODEINT (Ordinary Differential Equations INTegrator) ist das 'driver program' des Programmsystems:
INPUT-Parameter:
OUTPUT-Parameter:
Anmerkungen zu ODEINT:
Dieses Programm kontrolliert die schrittweise Abarbeitung des
Runge-Kutta-Prozesses im Bereich X1X
X2. Die (von der Routine
RKQC gelieferten) qualitäts-kontrollierten Ergebnisse an den Stützpunkten
werden auf den Feldern XX und YY abgespeichert.
Auf die Zahl und die Verteilung dieser Werte im Intervall [X1,X2] hat man
keinen Einfluß.
Die Näherungswerte
für das Ende des Integrationsintervalls (X2) werden zusätzlich
über das Feld YSTART an das aufrufende Programm zurückgegeben. Dies ist
praktisch für den Fall, daß diese
-Werte als Anfangswerte für
ein weiteres, unmittelbar anschließendes Integrationsintervall dienen
sollen.
Eine weitere wichtige Aufgabe von ODEINT besteht in der Berechnung der
Skalierungswerte für die Fehlerdiagnostik. Da mit EPS eine
relative Fehlerschranke gemeint ist, wäre es sinnvoll, bzgl. der
Beträge der
jeweiligen -Werte zu skalieren, also
YSCAL(I):= |Y(I)|zu schreiben. Eine solche Skalierung würde aber im Falle einer Nullstelle von
YSCAL(I):= |Y(I)| + |H*F(I)| + 'TINY' ,wodurch jede derartige Komplikation ausgeschlossen ist.
RKQC (Runge-Kutta Quality Control): Dieses Programm führt die Qualitätskontrolle der einzelnen Runge-Kutta-Schritte und die damit zusammenhängende Schrittweiten-Steuerung durch.
INPUT-Parameter:
OUTPUT-Parameter:
Anmerkungen zu RKQC:
In diesem Programm werden jeweils die drei für die Fehlerdiagnostik
erforderlichen Runge-Kutta-Schritte durchgeführt, davon zwei Schritte mit
und ein Schritt mit
.
Danach erfolgt die approximative Berechnung des Verfahrensfehlers gemäß
(8.26) für jede Lösungsfunktion
. Der Maximalwert
der skalierten Verfahrensfehler wird berechnet und
unter ERRMAX abgespeichert. ERRMAX entspricht also dem Ausdruck
Dann erfolgt eine Programmverzweigung: Im Falle von
Dann erfolgt der Rücksprung ins Programm ODEINT.
Im Falle von
RK4 (Runge-Kutta 4) führt die Auswertung der einzelnen Runge-Kutta-Schritte nach Maßgabe der Gleichungen (8.18) und (8.19) durch:
INPUT-Parameter:
OUTPUT-Parameter:
Dieses Programm, das von allen drei Programmen dieses Systems aufgerufen
wird, wird vom Benutzer erstellt und enthält die Definition der
-Funktionen (z. B. in C):
void derivs(double x, double y[], double f[]) { f[1]= .....; // entspricht f_{1}(x,y1,y2,...) f[2]= .....; // entspricht f_{2}(x,y1,y2,...) . . f[n]= .....; // entspricht f_{n}(x,y1,y2,...) }
=16cm
Struktogramm 26ODEINT(YSTART,N,X1,X2,EPS,HANF,HMIN,NSTMAX,
NWERTE,XX,YY)TINY:=1.0E-30
X:=X1
XX(1):=X
H:=HANFI=1(1)NY(I):=YSTART(I)
YY(I,1):=Y(I)NSTP=1(1)NSTMAX-1 DERIVS(X,Y,F)I=1(1)N YSCAL(I):=Y(I)
+
F(I)*H
+ TINY X+H
X2H:=X2-X...... RKQC(Y,F,N,X,H,EPS,YSCAL,HNEXT) XX(NSTP+1):=XI=1(1)NYY(I,NSTP+1):=Y(I) X
X2I=1(1)NYSTART(I):=Y(I)NWERTE:=NSTP+1
(return)......HNEXT
HMINprint: 'Schrittweite kleiner HMIN'
(pause)H:=HNEXTprint:'ODEINT: mehr als NSTMAX Stuetzpunkte'
NWERTE:=NSTMAX
(return)
Struktogramm 27 RKQC(Y,F,N,X,HTRY,EPS,YSCAL,HNEXT) SAFETY:=0.9
ERRCON:=0.0006
XSAV:=XI=1(1)NYSAV(I):=Y(I)
FSAV(I):=F(I) H:=HTRY
STEPOK:=FALSE HH:=H/2.0 RK4(YSAV,FSAV,N,XSAV,HH,YTEMP) X:=XSAV+HHDERIVS(X,YTEMP,F)RK4(YTEMP,F,N,X,HH,Y) X:=XSAV+HX = XSAVprint: 'RKQC: Schrittweite zu klein.'
(pause)...... RK4(YSAV,FSAV,N,XSAV,YTEMP) ERRMAX:=0.0I=1(1)NERRV(I):=Y(I)-YTEMP(I)
TEMP:= ERRV(I)/YSCAL(I)
ERRMAX
TEMPERRMAX:=TEMP......ERRMAX
EPSH:=SAFETY*H* EXP(-0.25*LOG(ERRMAX/EPS))STEPOK:=TRUEERRMAX/EPS
ERRCONHNEXT:=4*HHNEXT:=SAFETY*H* EXP(-0.2*LOG(ERRMAX/EPS))I=1(1)N Y(I):=Y(I)+ERRV(I)/15.0 (s. Kommentar S. 247)STEPOK(return)
Struktogramm 28 RK4(Y,G1,N,X,H,YOUT)I=1(1)NYT(I):=Y(I)+H/2.0*G1(I)XTEMP:=X+H/2.0DERIVS(XTEMP,YT,G2)I=1(1)NYT(I):=Y(I)+H/2.0*G2(I)DERIVS(XTEMP,YT,G3)I=1(1)NYT(I):=Y(I)+H*G3(I)XTEMP:=X+HDERIVS(XTEMP,YT,G4)I=1(1)NYOUT(I):=Y(I)+H/6.0*(G1(I)+2*(G2(I)+G3(I))+G4(I))
Das eben erläuterte Programm-System soll nun auf das 'Satelliten-Testproblem' angewendet werden. Das dem Dgl.ssystem (8.22) entsprechende Unterprogramm DERIVS hat z.B. in C die Form
void derivs(float x, float y[], float f[]) { f[1]=y[3]; f[2]=y[4]; f[3]=y[1]*y[4]*y[4] -alpha/y[1]/y[1]; // alpha GLOBAL = gamma*M // = 1966.390 f[4]=-2.0*y[3]*y[4]/y[1]; }
Die Ergebnisse dieses Tests sind in der Abb.8.6 zusammengefaßt, umd zwar wird in dieser Abbildung die (analytisch berechnete) exakte Bahnellipse mit Runge-Kutta-Ergebnissen verglichen, die mittels eines Programmes ohne (RUKUTEST) bzw. mit Schrittweitensteuerung (ODEINT+RKQC+RK4) berechnet wurden.
![]() ![]() |
Die Ergebnisse:
Bei diesem Testlauf wurde als konstante Schrittweite 1/50 der Umlaufzeit
genommen. Diese Konstanz von im Zeitraum hat folgende Konsequenz:
Da bekanntlich ein Satellit sich umso langsamer bewegt, je entfernter er von
der Erde ist (2. Kepler'sches Gesetz), haben die Stützpunkte im
Ortsraum gerade dort die größte Dichte, wo der Satellit die kleinste
Bahngeschwindigkeit hat. Dort aber, wo diese Geschwindigkeit am
größten
ist (und sich am stärksten ändert), nämlich im Bereich, wo der Satellit
der Erde am
nächsten kommt, ist die Punktdichte am kleinsten. Gerade in diesem Bereich
sollte sie aber im Interesse eines kleinen Verfahrensfehlers möglichst
groß sein!
Die Folge dieser völlig unangepaßten Stützpunktverteilung ist im Diagramm links deutlich zu sehen: Man erkennt sehr große Differenzen zwischen der exakten und der numerisch ermittelten Bahnkurve.
In diesem Fall hat die Punktdichte genau dort ein Maximum, wo es numerisch am sinnvollsten ist (also im Bereich des kleinsten Satellit-Erde-Abstandes). Der Effekt ist evident: Bei einer ungefähr gleichen Gesamtzahl von Stützpunkten ist (zumindest grafisch) kein Unterschied zwischen der analytischen und der numerischen Bahnkurve zu erkennen!
Die im Abschnitt (8.4.5) beschriebene Fehleranschätzung und Schrittweiten-Steuerung im vorgestellten Runge-Kutta-Programm ist zwar sehr effektiv, verbraucht aber viel Rechenzeit, denn es laufen ja zwei unabhängige Runge-Kutta-Prozesse nebeneinander.
Ebenso effektiv, aber deutlich sparsamer bzgl. der Rechenzeit ist die folgende Variante der Schrittweiten-Steuerung, die auf Fehlberg zurückgeht. Die dazu nötigen Formeln werden im folgenden wieder für den einfachen Fall eines Differentialgleichungs'systems' der Ordnung 1 erläutert8.3:
Ein Rechenschritt von nach
mittels eines Runge-Kutta-Verfahrens
der Ordnung
ergibt
Damit ist die Vorgangsweise beim Runge-Kutta-Fehlberg-Verfahren klar:
man berechnet für den Schritt
die Näherungswerte
und
. Daraus bestimmt man
mittels (8.32) die 'ideale' Schrittweite. Nun gibt es zwei
Möglichkeiten:
Wo liegt nun gegenüber der Vorgangsweise in Abschnitt 8.4.5 der Vorteil?
Wie Sie aus der Runge-Kutta-Theorie wissen, gibt es zu jeder Ordnung
unendlich viele im Prinzip gleichwertige Runge-Kutta-Formeln.
Fehlberg hat es nun geschafft, das folgende Formelsystem zu
finden:
Dem letzten Abschnitt dieses Kapitels sei ein ganz im saloppen Stil amerikanischer Publikationen gehaltener Absatz aus den 'Numerical Recipes' [9] vorangestellt:
For many scientific users, forth-order Runge-Kutta is not just the first word on ODE integrators, but the last word as well. In fact, you can get pretty far on this old workhorse, especially if you combine it with an adaptive stepsize algorithm ... Keep in mind, however, that the old workhorse's last trip may well be to take you to the poorhouse: Bulirsch-Stoer or predictor-corrector methods can be very much more efficient for problems where very high accuracy is a requirement. Those methods are the high-strung racehorses. Runge-Kutta is for ploughing the fields.
In der Tat sind die hier im Detail vorgestellten Verfahren (Runge-Kutta und Runge-Kutta-Fehlberg) nicht der Weisheit allerletzter Schluß, wenn es um die numerische Behandlung von Anfangswertproblemen geht. Dennoch erschien es dem Autor dieses Skriptums besser, ein klassisches Verfahren (auch wenn es ein alter Ackergaul ist) in einem sehr robusten und brauchbaren Programm vorzustellen, als die manchmal (nicht immer!) überlegenen 'Rennpferde' (Bulirsch-Stoer-Methode und predictor-corrector-Methode). Für ein an sich wünschenswertes 'Sowohl-Als auch' ist jedoch der hier gesteckte Rahmen einfach zu knapp.
Ich muß daher (nicht zum ersten Mal in diesem Skriptum) an die Eigeninitiative der an numerischen Verfahren interessierten Hörer appellieren und gebe im folgenden nur eine kleine Literaturliste:
Noch einige Anmerkungen zu sog. stiff sets of differential equations,
die in der Praxis immer wieder vorkommen. Es handelt sich dabei um Systeme,
deren Lösungsfunktionen aus Termen bestehen, die extrem verschiedene
Abhängigkeits-Empfindlichkeiten von der unabhängigen Variablen haben.
Am einfachsten ist dies durch ein Beispiel zu erläutern (aus [10],
S. 734):
Angenommen, es soll das System
Die exakte Lösung dieses Problems lautet
Für solche Probleme gibt es spezielle Lösungsverfahren, wie zum Beispiel die Methode von Kaps und Rentrop8.4. Entsprechende C-Programme mit theoretischen Erläuterungen finden Sie in [10], S. 734ff.
Mehr zum Thema 'Numerische Behandlung von Anfangswertproblemen' können Sie
in meiner Lehrveranstaltung im SS Ausgewählte Kapitel aus
'Numerische Methoden in der Physik' erfahren.
Stichworte: Methode von Bulirsch und Stör;
predictor-corrector-Methode; steife Systeme usw.
odeint+rkqs+rkck Runge-Kutta-Fehlberg-Methode odeint+bsstep+mmid+pzextr Bulirsch-Stoer-Methode stiff+jacobn+ludcmp+lubksb stiff differential systemsEine Beschreibung dieser Programme bzw. Testprogramme finden Sie in [9], [10] sowie auf Ihrem PC im Computerraum in den Verzeichnissen
/usr/local/numeric/numrec/c (oder fortran-77 oder fortran-90)
rk_fehl.c Runge-Kutta-Fehlberg-Methode bulirsch.c Bulirsch-Stoer-Gregg-Methode ab_mou.c Praediktor-Korrektor-Verfahren von Adams-Bashforth-Moulton gear.c Verfahren von Gear fuer steife Dgl.en (inkl. verschiedene Header-Dateien) rktrb.f90 plus dependencies Runge-Kutta-Methoden frkfsy.f90 plus dependencies Runge-Kutta-Fehlberg-Methode hull.f90 plus dependencies Runge-Kutta-Hull-Methode irkdrv.f90 plus dependencies Implicite Runge-Kutta-Methoden gear4.f90 plus dependencies stiff differential equations Alle diese Programme finden Sie in den Verzeichnissen /usr/local/numeric/num_alg/c/ansic/ansic/17 ('17' bedeutet: Kap. 17) /usr/local/numeric/num_alg/f77/f90/kap17
more on type ode45 more off
Wer mehr über dieses Thema wissen möchte, beschaffe sich das folgende Buch:
D. Arnold and J. C. Polking, Ordinary Differential Equations Using Matlab,
Prentice Hall 1999.