39
Jürgen Dankert: Numerische Integration von Anfangswertproblemen Teil 1: Grundlagen Dieses Skript gehört zu den Internet-Ergänzungen des Lehrbuchs „Dankert/Dankert: Technische Mechanik“

Jürgen Dankert: Numerische Integration von ... · J. Dankert: Numerische Integration von Anfangswertproblemen, Teil 1 (Grundlagen) 3 1 Anfangswertprobleme Bei einer gewöhnlichen

Embed Size (px)

Citation preview

Page 1: Jürgen Dankert: Numerische Integration von ... · J. Dankert: Numerische Integration von Anfangswertproblemen, Teil 1 (Grundlagen) 3 1 Anfangswertprobleme Bei einer gewöhnlichen

Jürgen Dankert:

Numerische Integrationvon Anfangswertproblemen

Teil 1: Grundlagen

Dieses Skript gehört zu den Internet-Ergänzungen desLehrbuchs „Dankert/Dankert: Technische Mechanik“

Page 2: Jürgen Dankert: Numerische Integration von ... · J. Dankert: Numerische Integration von Anfangswertproblemen, Teil 1 (Grundlagen) 3 1 Anfangswertprobleme Bei einer gewöhnlichen

J. Dankert: Numerische Integration von Anfangswertproblemen, Teil 1 (Grundlagen) 2

Inhaltsverzeichnis

1 Anfangswertprobleme 3

2 Das Verfahren von Euler-Cauchy 3

3 Differenzialgleichungen höherer Ordnung, Differenzialgleichungssysteme 8

4 Verifizieren der Berechnungsergebnisse 10

5 Verbesserte Integrationsformeln 135.1 Prädiktor-Korrektor-Verfahren, das Verfahren von Heun . . . . . . . . . . . 135.2 Klassisches Runge-Kutta-Verfahren . . . . . . . . . . . . . . . . . . . . . 155.3 Verlagerung des Algorithmus in eine Matlab-Function . . . . . . . . . . . . 185.4 Schrittweitenproblem, Richardson-Extrapolation . . . . . . . . . . . . . . 23

6 Einschrittverfahren 256.1 Runge-Kutta-Familie, Butcher-Array . . . . . . . . . . . . . . . . . . . . . 266.2 Eingebettete Verfahren . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276.3 Dormand-Prince-Verfahren, Standardsolver in Matlab . . . . . . . . . . . . 30

7 Mehrschrittverfahren 357.1 Methoden von Adams-Bashforth (explizite Verfahren) . . . . . . . . . . . . 357.2 Adams-Moulton- und Adams-Bashforth-Moulton-Verfahren (implizite Ver-

fahren) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367.3 Verfahren von Gear . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

8 Verfahrenswahl 38

Page 3: Jürgen Dankert: Numerische Integration von ... · J. Dankert: Numerische Integration von Anfangswertproblemen, Teil 1 (Grundlagen) 3 1 Anfangswertprobleme Bei einer gewöhnlichen

J. Dankert: Numerische Integration von Anfangswertproblemen, Teil 1 (Grundlagen) 3

1 Anfangswertprobleme

Bei einer gewöhnlichen Differenzialgleichung n-ter Ordnung

y(n) = f (x , y , y′ , y′′ , . . . , y(n−1)) (1.1)

enthält die allgemeine Lösung n Integrationskonstanten. Es können n zusätzliche Bedingun-gen formuliert werden, mit denen diese Integrationskonstanten zu bestimmen sind, so dasssich die spezielle Lösung des durch Differenzialgleichung und Zusatzbedingungen beschrie-benen Problems ergibt.

Wenn alle Zusatzbedingungen für die gleichen Stelle x0 gegeben sind (der Funktionswert yund die Ableitungen bis zur (n−1)-ten Ordnung sind an dieser Stelle vorgeschrieben), dannspricht man von einem Anfangswertproblem (im Gegensatz zum Randwertproblem, bei demdiese Bedingungen für unterschiedliche x-Werte gegeben sind). Die mit dem Differenzenver-fahren zu lösenden Aufgaben der Biegetheorie sind z. B. typische lineare Randwertaufgaben(Differenzialgleichungen und Randbedingungen sind linear), für die eine geschlossene Lö-sung prinzipiell möglich ist, auch wenn komplizierte praxisnahe Probleme eine numerischeLösung nahe legen.

Für nichtlineare Differenzialgleichungen ist eine geschlossene Lösung nur in ganz selte-nen Ausnahmefällen möglich. Auch Näherungsmethoden wie das Differenzenverfahren sindnicht praktikabel, weil sich sehr große nichtlineare Gleichungssysteme ergeben würden.Wenn die Aufgabe jedoch als Anfangswertproblem formuliert ist, lassen sich auf numeri-schem Wege brauchbare Näherungslösungen gewinnen. Glücklicherweise sind gerade vielenichtlineare Probleme der Ingenieur-Mathematik Anfangswertprobleme, für die hier geeig-nete Näherungsverfahren behandelt werden.

2 Das Verfahren von Euler-Cauchy

Die Idee der numerischen Integration soll zunächst am einfachsten Anfangswertproblem mitdem einfachsten Verfahren vorgestellt werden. Für das Anfangswertproblem 1. Ordnung

y′ = f (x , y) , y(x0) = y0 (2.1)

(eine Differenzialgleichung 1. Ordnung und diedazugehörige Anfangsbedingung) ist die Funktiony(x) gesucht, die die Differenzialgleichung und dieAnfangsbedingung erfüllt (nebenstehende Skizze).

Ausgehend vom einzigen x-Wert, für den der ge-suchte y-Wert bekannt ist, dem „Anfangspunkt“ x0mit dem Wert y0 , sucht man einen Wert y1 für dieStelle x1 = x0 +h (h ist die „Schrittweite“), um an-schließend auf gleiche Weise zum nächsten Punktzu kommen usw.

x

( )y y

y

x

x0

0

Anfangswertproblem 1. Ordnung: EinPunkt der Lösungsfunktion ist gegeben

Page 4: Jürgen Dankert: Numerische Integration von ... · J. Dankert: Numerische Integration von Anfangswertproblemen, Teil 1 (Grundlagen) 3 1 Anfangswertprobleme Bei einer gewöhnlichen

J. Dankert: Numerische Integration von Anfangswertproblemen, Teil 1 (Grundlagen) 4

Dieser Prozess sei bis zur Stelle xi abgelaufen, yi ist also bekannt. Dann ist das Berechnenvon yi+1 für xi+1 = xi +h der typische Integrationsschritt des Verfahrens.

Beide Seiten der Differenzialgleichung des An-fangswertproblems werden über das Intervall h in-tegriert:

xi+1∫x=xi

y′(x) dx =

xi+1∫x=xi

f (x,y) dx ,

[y(x) ]xi+1xi = yi+1− yi =

xi+1∫x=xi

f (x,y) dx ,

yi+1 = yi +

xi+1∫x=xi

f (x,y) dx .

xi

i+1

i i+1

( )y y

yy

x

x xh

Integrationsschritt für y(x)

Das verbleibende Integral auf der rechten Seite, das den Zuwachs des Funktionswertes vomPunkt i zum Punkt i+1 repräsentiert, muss näherungsweise gelöst werden, weil die im Inte-granden enthaltene Funktion y(x) nicht bekannt ist. Die verschiedenen Verfahren der nume-rischen Integration von Anfangswertproblemen unterscheiden sich im Wesentlichen in derArt und Qualität, wie dieses Integral angenähert wird.

Die gröbste Näherung für das Integral ist die Annahme, der Integrand f (x,y) sei im gesamtenIntegrationsintervall xi ≤ x≤ xi+1 konstant und kann durch den Wert f (xi,yi) am linken Randdes Integrationsintervalls ersetzt werden (xi und yi sind bekannt). Mit

xi+1∫x=xi

f (x,y) dx≈xi+1∫

x=xi

f (xi,yi) dx = [x f (xi,yi) ]xi+1xi = f (xi,yi)(xi+1− xi) = y′i h (2.2)

erhält man die

Integrationsformel von Euler-Cauchy:

yi+1 = yi + y′i h , xi+1 = xi +h . (2.3)

Dies ist die einfachste Näherungsformel für die numerische Integration eines Anfangswert-problems, die Lösung y(x) wird durch einen Polygonzug approximiert. Die einfache Berech-nungsvorschrift verdeutlicht in besonderer Schärfe das Problem aller Integrationsformeln fürAnfangswertprobleme: Die Näherungslösung für das Integral erzeugt einen Fehler („Qua-draturfehler“), der in die Berechnung von y′ für den nächsten Integrationsschritt eingeht unddabei einen weiteren Fehler (Steigungsfehler) erzeugt.

Andererseits wird auch die Stärke dieser Verfahren deutlich: Eine einfache, immer wieder aufdie gerade berechneten Werte angewendete Formel kommt der Programmierung in hohemMaße entgegen. Weil jeder Schritt nur die Ergebnisse seines Vorgängers kennen muss, istder Speicherplatzbedarf außerordentlich gering, wenn nicht alle berechneten Werte für einenachfolgende Auswertung gespeichert werden müssen.

Page 5: Jürgen Dankert: Numerische Integration von ... · J. Dankert: Numerische Integration von Anfangswertproblemen, Teil 1 (Grundlagen) 3 1 Anfangswertprobleme Bei einer gewöhnlichen

J. Dankert: Numerische Integration von Anfangswertproblemen, Teil 1 (Grundlagen) 5

Beispiel:Das Problem, die Funktion y(x) zu bestimmen, die einen Spiegel definiert, der

paralleles Licht so ablenkt, dass sich alle Lichtstrahlen in einem Punkt (Fokus) treffen, kannohne Einschränkung der Allgemeinheit für Lichtstrahlen parallel zur x-Achse und mit demNullpunkt als Fokus formuliert werden.

Einige einfache geometrische Überlegungen (nachfolgende Skizze) führen auf die Differen-zialgleichung

y′ =y

x+√

x2 + y2,

für die (mit einiger Mühe) die allgemeineLösung berechnet werden kann, so dass sichdie nichtlineare Differenzialgleichung vor-züglich für eine Abschätzung der Genauig-keit einer numerischen Lösung eignet.

Auf der Internet-Seite "Differenzialglei-chungen 1. Ordnung, Beispiel: Parabolspie-gel" wird die allgemeine Lösung hergeleitet:

y2 = C2 +2C xbeschreibt eine Schar quadratischer Para-beln.

x

( )

y

y

y

x

x

Lichtstrahl

2x y2+ (gleichschenkliges Dreieck)

Einfallswinkel = Ausfallswinkel

a

a

a

Tangente

Zur x-Achse paralleler Lichtstrahl wird an derFunktion y(x) so gespiegelt, dass er durch den

Nullpunkt verläuft

Die Integrationskonstante C kann ziemlich willkürlich festgelegt werden. Wählt man zumBeispiel als Anfangsbedingung y(0) = 1, dann erhält man mit C = 1 als spezielle Lösung diequadratische Parabel

y =±√

1+2x .

Die nebenstehende Tabelle zeigt die nume-rische Lösung nach Euler-Cauchy für dasnichtlineare Anfangswertproblem

y′ =y

x+√

x2 + y2, y(0) = 1

mit der sehr groben Schrittweite h = 0,1 imVergleich mit der exakten Lösung.

i xi yi y′i yi,exakt

0 0,0 1,0000 1,0000 1,00001 0,1 1,1000 0,9132 1,09542 0,2 1,1913 0,8461 1,18323 0,3 1,2759 0,7921 1,2649

. . . . . . . . . . . . . . .10 1,0 1,7560 1,7321

Schon am Ende des sehr kurzen Integrationsintervalls x = 0 . . .1 zeigt sich eine sichtbare Ab-weichung, die bei größeren Integrationsintervallen stärker wird, sich durch kleinere Schritt-weiten jedoch verringern lässt. Die nachfolgende Tabelle zeigt die Ergebnisse, die sich beiverschiedenen Schrittweiten am Ende des Integrationsintervalls x = 0 . . .5 ergeben:

Schrittweite h = 1,0 0,1 0,01 0,001Exakte Lösung

Integrationsschritte n = 5 50 500 5000y(5) 3,9163 3,3723 3,3221 3,3172 3,3166

Page 6: Jürgen Dankert: Numerische Integration von ... · J. Dankert: Numerische Integration von Anfangswertproblemen, Teil 1 (Grundlagen) 3 1 Anfangswertprobleme Bei einer gewöhnlichen

J. Dankert: Numerische Integration von Anfangswertproblemen, Teil 1 (Grundlagen) 6

Natürlich kann man die Anzahl der Integrationsschritte nicht beliebig erhöhen, weil mit derAnzahl der Rechenoperationen auch der mit jeder Operation unvermeidlich verknüpfte Run-dungsfehler das Ergebnis verfälschen wird.

Das nachfolgend angegebene kleine Matlab-Script (als ECSpiegel.m zum Download verfüg-bar), mit dem diese Berechnung realisiert werden kann, zeigt, wie einfach das Verfahren zuprogrammieren ist:

1 % Euler−Cauchy−V e r f a h r e n f u e r D i f f e r e n z i a l g l e i c h u n g y ’= f ( x , y ) ,2 % h i e r " S p i e g e l−Problem " :3

4 f = i n l i n e ( ’ y / ( x + s q r t ( x ^2 + y ^ 2 ) ) ’ , ’ x ’ , ’ y ’ ) ;5

6 x0 = 0 ; y0 = 1 ; % A n f a n g s w e r t7 xEnd = 1 ; % Ende des I n t e g r a t i o n s i n t e r v a l l s8 n = 10 ; % Anzah l der I n t e g r a t i o n s s c h r i t t e9 h = ( xEnd − x0 ) / n ; % S c h r i t t w e i t e

10

11 x = x0 : h : xEnd ;12 y = z e r o s ( n +1 ,1 ) ;13

14 % Euler−Cauchy−A l g o r i t h m u s −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−15 y ( 1 ) = y0 ;16

17 f o r i =1 : n18 y ( i +1) = y ( i ) + h * f ( x ( i ) , y ( i ) ) ;19 end20 % Euler−Cauchy−A l g o r i t h m u s −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−21

22 % E xa k t e Lösung zum V e r g l e i c h :23 C = −x0 + s q r t ( x0 ^2+ y0 ^2) ;24 y e x a k t = s q r t (C^2+2*C*x ) ;25

26 y % Ausgabe der E r g e b n i s s e i n das Command Window und27 % gemeinsam m i t der e x a k t e n Loesung i n e i n Graphik−F e n s t e r :28 p l o t ( x , y , x , yexak t , ’ r ’ ) ; l egend ( ’ Eu le r−Cauchy ’ , ’ e x a k t ’ , 2 ) ;

• Der gesamte Euler-Cauchy-Algorithmus besteht aus wenigen Zeilen. In Zeile 15 wirdder Anfangswert gesetzt, die übrigen y-Werte werden in der Schleife von Zeile 17 bis19 berechnet.

• Die spezielle Differenzialgleichung, die gelöst wird, wurde am Anfang (Zeile 4) als„Inline-Function“ definiert, die gegebenenfalls für die Lösung eines anderen Problemsersetzt werden kann. Bei komplizierteren Differenzialgleichungen sollte jedoch die De-finition mit einer Matlab-Function realisiert werden.

• In den Zeilen 11 und 12 werden die beiden Vektoren x und y entsprechend der Anzahl derIntegrationsschritte n mit n+1 Elementen definiert. In Zeile 11 wird x mit äquidistantenWerten bestückt, der Vektor y wird in Zeile 12 mit Nullen vorbelegt.

• Die Ergebnisse (y-Werte) werden in das Command Window ausgegeben (Zeile 26). Au-ßerdem wird die Funktion y(x) gemeinsam mit den Werten der exakten Lösung in einGraphik-Fenster gezeichnet (Zeile 28):

Page 7: Jürgen Dankert: Numerische Integration von ... · J. Dankert: Numerische Integration von Anfangswertproblemen, Teil 1 (Grundlagen) 3 1 Anfangswertprobleme Bei einer gewöhnlichen

J. Dankert: Numerische Integration von Anfangswertproblemen, Teil 1 (Grundlagen) 7

Dargestellt sind die Ergebnisse für die Rechnung mit der sehr groben Schrittweite h = 0,1.Bei kleinerer Schrittweite sind die Abweichungen von der exakten Lösung wesentlich gerin-ger.

An diesem kleinen Beispiel kann man außerdem ein Problem verdeutlichen, auf das imKapitel „Kinetik des Massenpunktes“ hingewiesen wird: Bei Berechnung dieses Anfangs-wertproblems mit negativer Schrittweite (um die Spiegelform auch links vom Fokus zubestimmen), ist für die Stelle x =−0,5 ein Versagen der Rechnung zu erwarten, weil dorty′ unendlich wird. Durch die unvermeidlichen Rundungsfehler bei der Rechnung äußertsich dies unter Umständen „nur“ durch unsinnige Ergebnisse.

Dies ist ein generelles Problem bei der Lösung von Differenzialgleichungen in Bereichen,in denen y′ = f (x,y) sich „mit y sehr stark ändert“. Für die Eindeutigkeit der Lösungeiner Differenzialgleichung muss gefordert werden, dass in dem betrachteten Bereich diepartielle Ableitung von f (x,y) nach y entsprechend∣∣∣∣∂ f (x,y)

∂y

∣∣∣∣≤ K (2.4)

begrenzt ist (so genannte „Lipschitz-Bedingung“).

Im Scheitelpunkt der betrachteten Lösungsfunktion ist diese Bedingung nicht erfüllt. Dieexakte Lösung verzweigt sich dort auch in einen oberen und einen unteren Zweig.

Das Verfahren von Euler-Cauchy wurde nur aus didaktischen Gründen hier so ausführlichbehandelt. Für die weitaus meisten praktischen Probleme gibt es keinen Grund, nicht ei-nes der noch zu behandelnden genaueren Verfahren zu verwenden. Im folgenden Abschnittwird allerdings das speziell für die Technische Mechanik wichtige Problem der Behandlungvon Differenzialgleichungen höherer Ordnung und Differenzialgleichungssystemen auch mitdem Euler-Cauchy-Verfahren demonstriert.

Page 8: Jürgen Dankert: Numerische Integration von ... · J. Dankert: Numerische Integration von Anfangswertproblemen, Teil 1 (Grundlagen) 3 1 Anfangswertprobleme Bei einer gewöhnlichen

J. Dankert: Numerische Integration von Anfangswertproblemen, Teil 1 (Grundlagen) 8

3 Differenzialgleichungen höherer Ordnung,Differenzialgleichungssysteme

Die Euler-Cauchy-Formel ist problemlos auf Differenzialgleichungssysteme 1. Ordnung über-tragbar, indem sie für jede der zu berechnenden Funktionen aufgeschrieben wird. Für einAnfangswertproblem mit zwei Differenzialgleichungen 1. Ordnung

y′1 = f1(x,y1,y2) , y1(x0) = y1,0 ,

y′2 = f2(x,y1,y2) , y2(x0) = y2,0(3.1)

wird die Euler-Cauchy-Formel in jedem Integrationsschritt zweimal verwendet, so dass y1,i+1und y2,i+1 aus y1,i und y2,i berechnet werden können.

Damit ist auch eine Möglichkeit der numerischen Integration von Differenzialgleichungen(und Differenzialgleichungssystemen) höherer Ordnung gegeben: Durch Einführen von zu-sätzlichen Variablen für die ersten Ableitungen werden Differenzialgleichungen höhererOrdnung in ein Differenzialgleichungssystem 1. Ordnung überführt.

Dies soll am Beispiel einer einfachen Bewegungs-Differenzialgleichung demonstriert wer-den. Bewegungs-Differenzialgleichungen der Technischen Mechanik sind stets Differenzi-algleichungen 2. Ordnung (Beschleunigung ist 2. Ableitung der Wegkoordinate). Für dienumerische Integration bedeutet das, dass neben der Wegkoordinate (z. B.: s oder bei Dreh-bewegungen ϕ) auch noch die Geschwindigkeit (z. B.: v = s bzw. ω = ϕ) als Variable auf-tritt, so dass das Beschleunigungsglied durch die erste Ableitung der Geschwindigkeit ersetztwird. Die unabhängige Variable in Bewegungs-Differenzialgleichungen ist die Zeit t.

Beispiel:Ein dünner Stab der Länge l mit konstantem

Querschnitt ist an einem Ende reibungsfrei gelagert. Erwird aus der vertikalen Lage um den Winkel ϕ0 ausgelenktund ohne Anfangsgeschwindigkeit freigegeben. Die freieSchwingung wird durch das Anfangswertproblem (Herlei-tung findet man im Kapitel „Kinetik starrer Körper“)

Af

l

ϕ =−3g2 l

sinϕ , ϕ(t = 0) = ϕ0 , ϕ(t = 0) = 0

beschrieben (die unabhängige Variable t taucht in der Differenzialgleichung gar nicht auf,dies ist sehr häufig bei Bewegungs-Differenzialgleichungen). Durch Einführen einer zusätz-lichen abhängigen Variablen ω = ϕ wird aus der Differenzialgleichung 2. Ordnung ein Dif-ferenzialgleichungssystem 1. Ordnung:

ϕ = ω ; ϕ(t = 0) = ϕ0 ;

ω = −3g2 l

sinϕ ; ω(t = 0) = 0 .

Page 9: Jürgen Dankert: Numerische Integration von ... · J. Dankert: Numerische Integration von Anfangswertproblemen, Teil 1 (Grundlagen) 3 1 Anfangswertprobleme Bei einer gewöhnlichen

J. Dankert: Numerische Integration von Anfangswertproblemen, Teil 1 (Grundlagen) 9

Dieses Anfangswertproblem kann zum Beispiel mit dem folgenden Euler-Cauchy-Formelsatzberechnet werden (zum Problem passend ist die Zeit t die unabhängige Variable, an Stelleder Schrittweite h wird ∆t geschrieben, und für y1 und y2 werden ϕ bzw. ω verwendet):

ϕi+1 = ϕi +∆t ϕi ,

ωi+1 = ωi +∆t ωi ,

ti+1 = ti +∆t .

Die Programmierung ist im Vergleich zu einem Problem mit nur einer Differenzialgleichungnicht nennenswert aufwendiger, wie man an dem folgenden MATLAB-Script sieht (steht alsECPendel.m zum Download zur Verfügung):

1 % Euler−Cauchy−V e r f a h r e n f u e r Stab−Pende l m i t großen A u s s c h l a e g e n :2

3 ph ip = i n l i n e ( ’ omega ’ , ’ omega ’ ) ;4 omegap = i n l i n e ( ’− f a k t o r * s i n ( p h i ) ’ , ’ t ’ , ’ p h i ’ , ’ omega ’ , ’ f a k t o r ’ ) ;5

6 p l = 1 ; g = 9 . 8 1 ; % P e n de l l a e n g e , E r d b e s c h l e u n i g u n g7 f a k t o r = 1 . 5 * g / p l ;8

9 t 0 = 0 ; ph i0 = pi / 2 ; omega0 = 0 ; % A n f a n g s w e r t e10 tEnd = 1 ; % Ende des I n t e g r a t i o n s i n t e r v a l l s11 n = 100 ; % Anzah l der I n t e g r a t i o n s s c h r i t t e12 d t = ( tEnd − t 0 ) / n ;13

14 t = t 0 : d t : tEnd ;15 p h i = z e r o s ( n +1 ,1 ) ;16 omega = z e r o s ( n +1 ,1 ) ;17

18 % Euler−Cauchy−A l g o r i t h m u s −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−19 p h i ( 1 ) = ph i0 ; omega ( 1 ) = omega0 ;20

21 f o r i =1 : n22 p h i ( i +1) = p h i ( i ) + d t * ph ip ( omega ( i ) ) ;23 omega ( i +1) = omega ( i ) + d t * omegap ( t ( i ) , p h i ( i ) , omega ( i ) , f a k t o r ) ;24 end25 % Euler−Cauchy−A l g o r i t h m u s −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−26

27 di sp ( [ ’ phi_min = ’ , num2str ( min ( p h i ) ) ] ) ; % Ext remwer t e −−−>28 di sp ( [ ’ omega_max = ’ , num2str ( max ( abs ( omega ) ) ) ] ) ; % Command Window29 p l o t ( t , p h i ) , t i t l e ( ’ \ p h i ( t ) ’ ) ; % Graphik p h i ( t )

Nachfolgend sieht man die Ergebnisse der Rechnung mit diesem Script. Dabei wurden (wieim Listing zu sehen) eine Stablänge l = 1 m und eine Anfangsauslenkung ϕ0 = π/2 ange-nommen. Es wurde über ein Zeitintervall von nur 1 s gerechnet (es ergibt sich etwa eine halbePendelschwingung).

Man sieht in diesem Fall dem Ergebnis sofort an, dass es sehr ungenau ist (immerhin wur-de das kurze Zeitintervall in 100 Abschnitte unterteilt), denn natürlich kann das Pendel zuranderen Seite nicht über ϕ = −π/2 hinaus ausschwingen. In der Regel sind solche Unge-nauigkeiten dem Ergebnis allerdings nicht sofort anzusehen. Die hier mit dem primitivenVerfahren zu gewinnende Erkenntnis ist allgemeinerungsfähig (gilt auch für beliebig leis-tungsfähige Verfahren): Ergebnisse der numerischen Integration von Anfangswertproblemenmüssen immer verifiziert werden.

Page 10: Jürgen Dankert: Numerische Integration von ... · J. Dankert: Numerische Integration von Anfangswertproblemen, Teil 1 (Grundlagen) 3 1 Anfangswertprobleme Bei einer gewöhnlichen

J. Dankert: Numerische Integration von Anfangswertproblemen, Teil 1 (Grundlagen) 10

Selbst mit 100 Schritten kann dasEuler-Cauchy-Verfahren eine halbe

Pendelschwingung nicht ausreichend genauberechnen.

4 Verifizieren der Berechnungsergebnisse

Im Kapitel „Verifizieren von Computerrechnungen“ wird ein ganzer Katalog von Möglich-keiten zusammengestellt und an Beispielen demonstriert, wie man solche Berechnungen ve-rifizieren kann. Dies ist für kaum einen anderen Problemkreis so wichtig wie für die nume-rische Integration von Anfangswertproblemen. Einige der dort empfohlenen Möglichkeitenkönnen auf das gerade berechnete Pendelproblem angewendet werden:

ê Die Berechnung mit verschiedenen Verfahren kann besonders empfohlen werden. Inden nachfolgenden Abschnitten werden weitere (wesentlich leistungsfähigere) Integra-tionsverfahren vorgestellt, und die Berechnung des Pendelproblems wird noch mehrfachbei Vergleich mit den hier gewonnenen Ergebnissen durchgeführt.

ê Bei Diskretisierungsverfahren ist es beinahe zwingend, mehrere Rechnungen mit un-terschiedlichen Schrittweiten durchzuführen. Wenn sich die Ergebnisse am Ende desIntegrationsintervalls bei halbierter Schrittweite nicht wesentlich ändern, kann man derRechnung vertrauen. Bei dem gerade behandelten Beispiel kann man den zunächst sehrverdächtigen Wert ϕmin beobachten.

ê Die Frage, ob sich Teilergebnisse mit erträglichem Aufwand kontrollieren lassen,führt hier zu folgender Überlegung: Während sich für das einfache Schwingungspro-blem die Bewegungsgesetze ϕ(t) und ω(t) nur numerisch berechnen lassen, kann dasBewegungsgesetz ω(ϕ) auch für beliebig große Anfangsauslenkungen mit Hilfe desEnergiesatzes direkt formuliert werden. Speziell liefert diese Betrachtung für die (maxi-male) Winkelgeschwindigkeit bei Durchgang durch die tiefste Lage des Pendels (ϕ = 0)aus

mgl2

(1− cosϕ0) =12

(13

ml2)

ω2max

den zu erwartenden Wert

ωmax =

√3gl

(1− cosϕ0) .

Page 11: Jürgen Dankert: Numerische Integration von ... · J. Dankert: Numerische Integration von Anfangswertproblemen, Teil 1 (Grundlagen) 3 1 Anfangswertprobleme Bei einer gewöhnlichen

J. Dankert: Numerische Integration von Anfangswertproblemen, Teil 1 (Grundlagen) 11

Mit den verwendeten Zahlenwerten l = 1 m und g = 9,81 m/s2 müsste sich bei ei-ner Anfangsauslenkung ϕ0 = π/2 also eine maximale Winkelgeschwindigkeit ωmax =5,4249 s−1 ergeben.

ê Schließlich kann sogar noch eine zusätzlich Kontrollfunktion erzeugt werden. Weilkeine Energie während der Bewegung zu- oder abgeführt wird, muss die zum Startzeit-punkt vorhandene Energie konstant bleiben. Für eine beliebige Lage ϕ kann die Summeaus potenzieller und kinetischer Energie aufgeschrieben werden. Wen man das Null-Potenzial auf die Höhe des Aufhängepunktes A legt, gilt:

Tges =−mgl2

cosϕ +12

JA ω2 = ml

(− l

2cosϕ +

l6

ω2)

.

Darin ist JA = ml2/3 das Massenträgheitsmoment des dünnen Stabs bezüglich des Punk-tes A (siehe Kapitel „Kinetik starrer Körper“). Wenn man die Funktion Tges(t) mit denberechneten Werten ϕ(t) und ω(t) zeichnet, müsste sie bei korrekten Werten eine hori-zontale Gerade liefern.

ê Der Empfehlung, eine Vergleichsrechnung mit einem vereinfachten Berechnungs-modell durchzuführen, für das die Lösung bekannt ist, kann man hier folgen, indemman eine Rechnung mit kleiner Anfangsauslenkung ϕ0 durchführt. Für kleine Anfangs-auslenkung kann die Differenzialgleichung wegen sinϕ ≈ ϕ linearisiert werden:

ϕ =−3g2 l

sinϕ ⇒ ϕ +3g2 l

ϕ = 0 .

Dies ist eine lineare Differenzialgleichung und kann geschlossen gelöst werden. Manfindet ihre Lösung, aus der man die Dauer T einer vollen Schwingung ablesen kann,zum Beispiel im Bereich Mathematik für die Technische Mechanik:

ϕ = ϕ0 cos

(√3g2 l

t

)⇒ T =

2π√3g2 l

= 2π

√2 l3g

.

Für die verwendeten Zahlenwerte l = 1 m und g = 9,81 m/s2 ist also eine Schwingungs-dauer T = 1,638 s zu erwarten bzw. T/2 = 0,819 s als Zeit für eine halbe Schwingung.

Alle Kontrollempfehlungen sind realisiert in dem nur geringfügig erweiterten Matlab-ScriptECPendel2.m, das sich von dem auf Seite 9 gelisteten Script nur in dem Auswertungsbereichab Zeile 27 unterscheidet:

26

27 % E r w e i t e r t e Auswertung , V e r i f i z i e r e n der E r g e b n i s s e :28 Tges = − g / 2 * cos ( p h i ) + p l *omega . ^ 2 / 6 ; % K o n t r o l l f u n k t i o n " Gesamtenerg i e "29

30 [ phimin , imin ] = min ( p h i ) ;31 di sp ( [ ’ Anzahl d e r Z e i t s c h r i t t e n = ’ , num2str ( n ) ] ) ;32 di sp ( [ ’ ph i_0 = ’ , num2str ( ph i0 ) ] ) ;33 di sp ( [ ’ phi_min = ’ , num2str ( phimin ) , ’ b e i t = ’ , num2str ( t ( imin ) ) ] ) ;34 di sp ( [ ’ omega_max = ’ , num2str ( max ( abs ( omega ) ) ) ] ) ;35 s u b p l o t ( 2 , 1 , 1 ) ; p l o t ( t , p h i ) , t i t l e ( ’ \ p h i ( t ) ’ ) ;36 s u b p l o t ( 2 , 1 , 2 ) ; p l o t ( t , Tges ) , t i t l e ( ’T_{ ges } ( t ) ’ ) ;

Page 12: Jürgen Dankert: Numerische Integration von ... · J. Dankert: Numerische Integration von Anfangswertproblemen, Teil 1 (Grundlagen) 3 1 Anfangswertprobleme Bei einer gewöhnlichen

J. Dankert: Numerische Integration von Anfangswertproblemen, Teil 1 (Grundlagen) 12

Die nebenstehende Kopie des Com-mand Windows zeigt die Ergebnissevon drei Rechnungen mit n = 100,n = 1000 und n = 10000 Schrit-ten. Man sieht, dass sich der Ma-ximalausschlag nach links dem zuerwartenden Wert ϕmin = − π/2nähert. Der Wert für die maxima-le Winkelgeschwindigkeit verbessertsich auch erheblich.Nachfolgend sieht man die zugehöri-gen Graphik-Ausgaben. Bemerkens-wert ist die Kontrollfunktion Tges, diescheinbar für alle Rechnungen gleichschlechte Ergebnisse attestiert. DerBlick auf die Werte, die auf denvertikalen Skalen angezeigt werden,zeigt aber doch wesentliche Verbes-serungen.

n = 100 n = 1000 n = 10000Es wird noch die Kontrolle mit ei-nem vereinfachten Berechnungsmo-dell gezeigt: Für sehr kleine An-fangsauslenkungen ist, wie obentheoretisch gezeigt wurde, die für ei-ne halbe Schwingung (erstmaligesErreichen von ϕmin) benötigte Zeitgleich T/2 = 0,819 s.Das nebenstehende Command Win-dow zeigt die Ergebnisse von zweiRechnungen mit den Anfangsauslen-kungen ϕ0 = 5° bzw. ϕ0 = 1°.Der zu erwartende Wert wird rechtgut genähert.

Page 13: Jürgen Dankert: Numerische Integration von ... · J. Dankert: Numerische Integration von Anfangswertproblemen, Teil 1 (Grundlagen) 3 1 Anfangswertprobleme Bei einer gewöhnlichen

J. Dankert: Numerische Integration von Anfangswertproblemen, Teil 1 (Grundlagen) 13

Fazit: Das Verfahren von Euler-Cauchy ist selbst bei einer so einfachen Aufgabe sehr schnellüberfordert. Es eignet sich aber sehr gut, um die Probleme der numerischen Integration vonAnfangswertproblemen zu demonstrieren, die zwar von verbesserten Integrationsformeln ab-gemildert werden, aber nicht verschwinden.

5 Verbesserte Integrationsformeln

5.1 Prädiktor-Korrektor-Verfahren, das Verfahren von Heun

Eine Verbesserung der Näherung für das Integral in

yi+1 = yi +

xi+1∫x=xi

f (x,y) dx (5.1)

kann durch das Einbeziehen weiterer Punkte des Inte-grationsintervalls h erreicht werden. Wenn der Integrandnicht nur durch einen Funktionswert (am linken Randdes Intervalls wie beim Verfahren von Euler-Cauchy)ersetzt wird, sondern z. B. auch der Funktionswert amrechten Rand f (xi+1,yi+1) in die Näherung einbezogenwird, kann der Integrand als linear veränderliche Grö-ße angenähert werden („Rechteck“-Näherung wird zurdeutlich besseren „Trapez“-Näherung). Mit

xi

i+1

i i+1

( )y y

yy

x

x xh

Integrationsschritt für y(x)

xi+1∫x=xi

f (x,y) dx≈ f (xi,yi)+ f (xi+1,yi+1)2

(xi+1− xi) = (y′i + y′i+1)h2

(5.2)

gelangt man zur wesentlich besseren Integrationsformel

yi+1 = yi +(y′i + y′i+1)h2

. (5.3)

Diese Formel ist allerdings nicht ohne Vorleistung anwendbar ist, denn auf der rechten Sei-te geht über y′i+1 = f (xi+1,yi+1) der Wert yi+1 ein, der mit dieser Formel erst ermitteltwerden soll. Man berechnet deshalb einen vorläufigen Näherungswert (Prädiktor) nach derEuler-Cauchy-Formel 2.3, der dann eine (gegebenenfalls mehrfache) Verbesserung nach derverbesserten Formel 5.3 erfährt (Korrektor-Schritte). Dies ist das

Verfahren von Heun:

Prädiktor: pi+1 = yi + y′i h ; xi+1 = xi +h

pi+1 = yi+1 ⇒ y′i+1 = f (xi+1, pi+1)

⇑ ⇓

⇐⇐⇐⇐ yi+1 = yi +(y′i + y′i+1)h2

(Korrektor)

(5.4)

Page 14: Jürgen Dankert: Numerische Integration von ... · J. Dankert: Numerische Integration von Anfangswertproblemen, Teil 1 (Grundlagen) 3 1 Anfangswertprobleme Bei einer gewöhnlichen

J. Dankert: Numerische Integration von Anfangswertproblemen, Teil 1 (Grundlagen) 14

Das Verfahren kann mit einer festen Anzahl von Korrektorschritten arbeiten oder aber einenIntegrationsschritt erst dann beenden, wenn sich yi+1 nicht mehr ändert. Wie das Euler-Cauchy-Verfahren kann auch das Verfahren von Heun auf ein System von Differenzialglei-chungen angewendet werden, indem für jede Differenzialgleichung der angegebene Algo-rithmus ausgeführt wird.

Die Programmierung ist nicht wesentlich aufwendiger als beim Verfahren von Euler-Cauchy.Im Listing des Euler-Cauchy-Verfahrens (Seite 9) müssen nur die Zeilen 18 bis 25 (Euler-Cauchy-Algorithmus) durch den Heun-Algorithmus ersetzt werden:

18 % Heun−A l g o r i t h m u s −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−19 p h i ( 1 ) = ph i0 ; omega ( 1 ) = omega0 ;20

21 f o r i =1 : n22 p h i p i = ph ip ( omega ( i ) ) ;23 ompi = omegap ( t ( i ) , p h i ( i ) , omega ( i ) , f a k t o r ) ;24 % * P r ä d i k t o r s c h r i t t nach Euler−Cauchy : ********************************25 p r p h i = p h i ( i ) + d t * p h i p i ;26 prom = omega ( i ) + d t * ompi ;27 f o r j =1 :3 % * Drei K o r r e k t o r s c h r i t t e : ********************************28 p r p h i = p h i ( i ) + ( p h i p i + ph ip ( prom ) ) * d t / 2 ;29 prom = omega ( i ) + ( ompi + omegap ( t ( i + 1 ) , p r p h i , prom , f a k t o r ) ) * d t / 2 ;30 end31 p h i ( i +1) = p r p h i ; % . . . d i e e n d g u e l t i g e n Werte des S c h r i t t s32 omega ( i +1) = prom ;33 end34 % Heun−A l g o r i t h m u s −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

Das komplette Script, das das im vorigen Abschnitt behandelte Pendelproblem (2 Differen-zialgleichungen) löst und auch die für die Kontrolle der Ergebnisse ergänzten Zeilen enthält(siehe Listing auf Seite 11), ist als HeunPendel.m zum Download verfügbar. In jedem Inte-grationsschritt werden nach dem Prädiktorschritt genau 3 Korrektorschritte ausgeführt.

Wenn man mit dem auf diese Weise modifizierten Programm die gleichen Testrechnun-gen ausführt, die mit dem Programm nach Euler-Cauchy durchgeführt wurden, stellt manfest, dass schon bei wesentlich groberer Schrittweite die Genauigkeit erreicht wird, die nachEuler-Cauchy eine sehr feine Intervalleinteilung erfordert.

Bei einer Rechnung mit 100 Integrationsschrit-ten über ein Integrationsintervall von 1 s, dienach Euler-Cauchy äußerst ungenaue Ergebnis-se lieferte, zeigt das nebenstehend zu sehende„Command Window“ etwa die theoretisch zu er-wartenden Ergebnisse.

Allerdings mahnt die nachfolgend unter der Funktion ϕ(t) zu sehende KontrollfunktionTges(t) (Gesamtenergie während der Bewegung) nach wie vor zur Vorsicht.

Page 15: Jürgen Dankert: Numerische Integration von ... · J. Dankert: Numerische Integration von Anfangswertproblemen, Teil 1 (Grundlagen) 3 1 Anfangswertprobleme Bei einer gewöhnlichen

J. Dankert: Numerische Integration von Anfangswertproblemen, Teil 1 (Grundlagen) 15

Die Tges(t)-Werte auf der Abszisse sind immerhin sehrklein, und offensichtlich ist am Ende des Integrati-onsintervalls die Energie wieder auf dem Ausgangsni-veau. Das bedeutet, dass im Integrationsbereich ϕ-ω-Wertepaare entstehen, die nicht exakt das Energiekrite-rium erfüllen. Weil aber das Ende des Integrationsinter-valls immer auch der Startpunkt für die weitere Integra-tion ist, stimmt das Energie-Kriterium in diesem Falleher optimistisch für eine Integration über eine größe-ren Zeitbereich.Unten sieht man eine Rechnung mit 1000 Integrations-schritten über den wesentlich größeren Integrationsbe-reich von 10 s. Alle Kriterien sprechen dafür, dass dieseRechnung „gesund“ ist.

5.2 Klassisches Runge-Kutta-Verfahren

Mit den Verfahren von Euler-Cauchy und Heun wurden zwei einfache Vertreter einer kaumzu überblickenden Anzahl von Integrationsverfahren vorgestellt, an denen aber die typischenProbleme sichtbar werden, die der Anwender beachten muss. Die verschiedenen Verfah-ren unterscheiden sich im Wesentlichen in der Anzahl der Funktionswertberechnungen fürden Integranden in einem Integrationsschritt (beeinflusst die Qualität der Näherung des In-tegrals), in der Strategie der Berechnung von yi+1 (feste oder variable Anzahl von Operatio-nen) und in der Festlegung der Schrittweiten h für die Integrationsschritte (feste oder variableSchrittweite).

Nachfolgend werden die Formeln eines besonders häufig verwendeten Verfahrens einer gan-zen Verfahrensklasse angegeben. Es ist ein Vertreter der Runge-Kutta-Algorithmen, die ausFunktionswerten für den Integranden in

yi+1 = yi +

xi+1∫x=xi

f (x,y) dx (5.5)

an verschiedenen Punkten des Integrationsintervalls h den Wert für yi+1 am rechten Intevall-rand so ermitteln, dass die Genauigkeit der Berücksichtigung möglichst vieler Glieder der

Page 16: Jürgen Dankert: Numerische Integration von ... · J. Dankert: Numerische Integration von Anfangswertproblemen, Teil 1 (Grundlagen) 3 1 Anfangswertprobleme Bei einer gewöhnlichen

J. Dankert: Numerische Integration von Anfangswertproblemen, Teil 1 (Grundlagen) 16

Taylorreihen-Entwicklung der Lösung entspricht. Der folgende Formelsatz, der für einenIntegrationsschritt vier Funktionswerte des Integranden berechnet, ist ein

Runge-Kutta-Verfahren 4. Ordnung:

yi+1 = yi + h6 (k1 +2k2 +2k3 + k4) , xi+1 = xi +h

mit k1 = f (xi , yi) ,

k2 = f(xi + h

2 , yi + h2 k1)

,

k3 = f(xi + h

2 , yi + h2 k2)

,

k4 = f (xi +h , yi +hk3) .

(5.6)

Bei einem Verfahren 4. Ordnung (Übereinstimmung mit den ersten 5 Gliedern der Taylorrei-hen-Entwicklung) entsteht in jedem Integrationsschritt ein Fehler in der Größenordnung h5,der bei genügend kleiner Schrittweite sehr klein ist, andererseits reagiert das Verfahren beizu großer Schrittweite sehr empfindlich. Gerade für die Runge-Kutta-Algorithmen gibt eseine recht ausgefeilte Theorie zur geeigneten Schrittweitenwahl (und damit auch der Schritt-weitenänderung während der Rechnung), die allerdings den gravierenden Mangel hat, dasssie sichere Werte nur dann liefert, wenn die Lösung bekannt ist.

Weil hier nur Beispiele aus der Technischen Mechanik behandelt werden (das „Spiegel“-Beispiel im Abschnitt 2 war eine Ausnahme, weil die Technische Mechanik keine geeig-nete Differenzialgleichung 1. Ordnung liefern kann), soll der Runge-Kutta-Formelsatz 4.Ordnung für das typische Anfangswertproblem mit einer Bewegungs-Differenzialgleichungformuliert werden. Das typische Anfangswertproblem 2. Ordnung

x = f (x , x , t) , x(t = t0) = x0 , x(t = t0) = v0 (5.7)

(x ist die Bewegungskoordinate, x die Geschwindigkeit, x die Beschleunigung, t ist die Zeit)wird durch Einführen ein neuen Variablen v = x zu einem Differenzialgleichungssystem 1.Ordnung:

x = v , x(t = t0) = x0 ,

v = f (x , v , t) , v(t = t0) = v0 .(5.8)

Dafür gilt (siehe auch Kapitel „Kinetik des Massenpunktes“) das

Runge-Kutta-Verfahren 4. Ordnung für eine Bewegungs-Differenzialgleichung:

xi+1 = xi + ∆t6 (k1x +2k2x +2k3x + k4x) , ti+1 = ti +∆t ,

vi+1 = vi + ∆t6 (k1v +2k2v +2k3v + k4v) ,

k1x = f1(ti,xi,vi) , k1v = f2(ti,xi,vi) ,

k2x = f1(ti + ∆t2 ,xi + ∆t

2 k1x,vi + ∆t2 k1v) , k2v = f2(ti + ∆t

2 ,xi + ∆t2 k1x,vi + ∆t

2 k1v) ,

k3x = f1(ti + ∆t2 ,xi + ∆t

2 k2x,vi + ∆t2 k2v) , k3v = f2(ti + ∆t

2 ,xi + ∆t2 k2x,vi + ∆t

2 k2v) ,

k4x = f1(ti +∆t,xi +∆t k3x,vi +∆t k3v) , k4v = f2(ti +∆t,xi +∆t k3x,vi +∆t k3v) .(5.9)

Page 17: Jürgen Dankert: Numerische Integration von ... · J. Dankert: Numerische Integration von Anfangswertproblemen, Teil 1 (Grundlagen) 3 1 Anfangswertprobleme Bei einer gewöhnlichen

J. Dankert: Numerische Integration von Anfangswertproblemen, Teil 1 (Grundlagen) 17

Dass dieser Formelsatz etwas unhandlich aussieht, ist unbedeutend, denn eine Handrechnungverbietet sich in der Regel von selbst, und die Programmierung muss einmal ausgeführtwerden. Im Listing des Euler-Cauchy-Verfahrens (Seite 9) für die Berechnung des Stab-Pendels müssen nur die Zeilen 18 bis 25 (Euler-Cauchy-Algorithmus) durch den Runge-Kutta-Algorithmus 4. Ordnung ersetzt werden. Weil eine Drehbewegung berechnet wird, trittan die Stelle der Koordinate x die Winkelkoordinate ϕ , an die Stelle der Geschwindigkeit vdie Winkelgeschwindigkeit ω:

18 % Runge−Kut ta−A l g o r i t h m u s −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−19 p h i ( 1 ) = ph i0 ; omega ( 1 ) = omega0 ;20

21 f o r i =1 : n22 k1ph i = ph ip ( omega ( i ) ) ;23 k1om = omegap ( t ( i ) , p h i ( i ) , omega ( i ) , f a k t o r ) ;24 k2ph i = ph ip ( omega ( i )+k1om* d t / 2 ) ;25 k2om = omegap ( t ( i )+ d t / 2 , p h i ( i )+ k1ph i * d t / 2 , omega ( i )+k1om* d t / 2 , f a k t o r ) ;26 k3ph i = ph ip ( omega ( i )+k2om* d t / 2 ) ;27 k3om = omegap ( t ( i )+ d t / 2 , p h i ( i )+ k2ph i * d t / 2 , omega ( i )+k2om* d t / 2 , f a k t o r ) ;28 k4ph i = ph ip ( omega ( i )+k3om* d t ) ;29 k4om = omegap ( t ( i + 1 ) , p h i ( i )+ k3ph i * dt , omega ( i )+k3om* dt , f a k t o r ) ;30 p h i ( i +1) = p h i ( i ) + ( k1ph i + 2* k2ph i + 2* k3ph i + k4ph i ) * d t / 6 ;31 omega ( i +1) = omega ( i ) + ( k1om + 2*k2om + 2*k3om + k4om ) * d t / 6 ;32 end33 % Runge−Kut ta−A l g o r i t h m u s −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

Das komplette Matlab-Script steht als RKPendel.m zum Download zur Verfügung. Mit ihmliefert eine Rechnung mit n = 1000 Integrationsschritten die nachfolgend zu sehenden Er-gebnisse.

Die Zahlenwerte im Command Window stimmen in allen ausgegebenen Stellen mit denerwarteten theoretischen Werten überein, sind also besser als die auf Seite 15 mit gleicherSchrittanzahl mit dem Verfahren von Heun erzeugten Ergebnisse.

Die unter der Funktion ϕ(t) zu sehende Kontrollfunktion Tges(t) (Gesamtenergie währendder Bewegung) sieht auf den ersten Blick allerdings schlechter aus als die Kontrollfunktionder entsprechenden Heun-Rechnung. Daran muss man sich gewöhnen, wenn man Matlabdie freie Wahl eines geeigneten Maßstabs lässt. Tatsächlich sind die Abweichungen vomSollwert bei der Runge-Kutta-Rechnung deutlich kleiner, wie ein Blick auf die Skala auf derAbszissenachse bestätigt. Den hier ermittelten Ergebnissen darf man vertrauen.

Page 18: Jürgen Dankert: Numerische Integration von ... · J. Dankert: Numerische Integration von Anfangswertproblemen, Teil 1 (Grundlagen) 3 1 Anfangswertprobleme Bei einer gewöhnlichen

J. Dankert: Numerische Integration von Anfangswertproblemen, Teil 1 (Grundlagen) 18

5.3 Verlagerung des Algorithmus in eine Matlab-Function

Für die Lösung unterschiedlicher Aufgabenstellungen bleibt der eigentliche Algorithmus dernumerischen Integration (Euler-Cauchy, Heun, Runge-Kutta, ...) unverändert. Es ist deshalbratsam, diesen in eine (unverändert immer wieder verwendbare) Function auszulagern. Weildarüber hinaus für kompliziertere Probleme die bisher praktizierte Definition der Differenzi-algleichungen als Inline-Functions nicht mehr praktikabel ist, soll zunächst eine Einführungin die Arbeit mit Matlab-Functions gegeben werden.

Matlab kennt zwei Arten von M-Files:

• Script-Files akzeptieren keine Eingabe-Argumente und liefern keine Ausgabe-Argu-mente an andere Matlab-Files ab (alle bisher behandelten Beispiele wurden mit Script-Files realisiert).

• Function-Files akzeptieren Eingabe-Argumente und können Ausgabewerte an andereMatlab-Files abliefern. Function-Files müssen mit dem Schlüsselwort function begin-nen, Functions haben einen Namen. Functions können aus anderen M-files (Scripts oderFunctions) aufgerufen werden, deshalb sollte der Name der Function mit dem Datein-amen (ohne die Extension .m) übereinstimmen.

In einem Function-File können mehrere Functions untergebracht sein, was gern ausgenutztwird, um übersichtlich zu programmieren. Dann kann natürlich nur der Name einer Func-tion mit dem Dateinamen übereinstimmen. Alle weiteren Besonderheiten werden nachfol-gend an Beispielen erläutert. Zunächst werden die Inline-Functions durch „normale“ Matlab-Functions ersetzt.

In dem auf Seite 17 gelisteten Runge-Kutta-Algorithmus wurden die ersten Ableitungen,die die Differenzialgleichungen definieren, aus unterschiedlichen Werten für die Zeit, denWinkel, die Winkelgeschwindigkeit und den in der Variablen faktor steckenden Problempa-rametern je viermal berechnet. Dafür waren die beiden Inline-Functions phip und omegapzuständig:

ph ip = i n l i n e ( ’ omega ’ , ’ omega ’ ) ;omegap = i n l i n e ( ’− f a k t o r * s i n ( p h i ) ’ , ’ t ’ , ’ p h i ’ , ’ omega ’ , ’ f a k t o r ’ ) ;. . .

% Runge−Kut ta−A l g o r i t h m u s −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−p h i ( 1 ) = ph i0 ; omega ( 1 ) = omega0 ;

k1ph i = ph ip ( omega ( i ) ) ;k1om = omegap ( t ( i ) , p h i ( i ) , omega ( i ) , f a k t o r ) ;k2ph i = ph ip ( omega ( i )+k1om* d t / 2 ) ;k2om = omegap ( t ( i )+ d t / 2 , p h i ( i )+ k1ph i * d t / 2 , omega ( i )+ k1om* d t / 2 , f a k t o r ) ;k3ph i = ph ip ( omega ( i )+k2om* d t / 2 ) ;k3om = omegap ( t ( i )+ d t / 2 , p h i ( i )+ k2ph i * d t / 2 , omega ( i )+ k2om* d t / 2 , f a k t o r ) ;k4ph i = ph ip ( omega ( i )+k3om* d t ) ;k4om = omegap ( t ( i + 1 ) , p h i ( i )+ k3ph i * dt , omega ( i )+k3om* dt , f a k t o r ) ;% Runge−Kut ta−A l g o r i t h m u s −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

Dies wird wie folgt geändert, wobei konsequent auf die Anpassung an die Strategie hingear-beitet wird, die für die Nutzung der in Matlab für die numerische Integration von Anfangs-wertproblemen angebotenen Functions verwendet werden muss:

Page 19: Jürgen Dankert: Numerische Integration von ... · J. Dankert: Numerische Integration von Anfangswertproblemen, Teil 1 (Grundlagen) 3 1 Anfangswertprobleme Bei einer gewöhnlichen

J. Dankert: Numerische Integration von Anfangswertproblemen, Teil 1 (Grundlagen) 19

• Die Inline-Functions werden durch „normale“ Matlab-Functions ersetzt.

• Es werden keine Problemparameter an die Functions übergeben (wie der Parameter fak-tor in der Inline-Function zur Berechnung von omegap). Die Parameter werden trotzdemnur an einer Stelle definiert und als global deklariert, um sie mit den gleichen Werten inden Functions verfügbar zu haben.

• Es wird nur eine Function für alle Differenzialgleichungen definiert (und nicht wie obenfür jede Differenzialgleichung eine). Diese liefert dann die Output-Werte (oben phip undomegap) in einem Vektor ab.

• Konsequenterweise werden deshalb auch die entsprechenden Inputwerte (im Beispieloben phi und omega) in einem Vektor zusammengefasst.

Die Matlab-Function, die die beiden oben gelisteten Inline-Functions ersetzt, sieht dann z. B.so aus:

1 f u n c t i o n xvp = BewDglPendel ( t , xv )2 g l o b a l p l g % . . . muessen an a n d e r e r S t e l l e d e f i n i e r t s e i n .3 p h i = xv ( 1 ) ; % I n p u t−Werte kommen i n . . .4 omega = xv ( 2 ) ; % . . . e inem V e k t o r an .5 ph ip = omega ; % Die b e i d e n D i f f e r e n z i a l g l e i c h u n g e n6 omegap = −1.5*g / p l * s i n ( p h i ) ; % werden a u s g e w e r t e t , . . .7 xvp = [ ph ip ; omegap ] ; % . . . d i e E r g e b n i s s e werden im V e k t o r xvp a b g e l i e f e r t .

Diese Function ließe sich auch kompakter schreiben, aber es wird vor allem im Hinblickauf kompliziertere Probleme dringend empfohlen, stets zunächst die Elemente des hier alsxv bezeichneten Inputvektors auf einfache „sprechende“ Variablen zu übertragen und auchdie Auswertung der Differenzialgleichungen zunächst einzeln vorzunehmen und dann dieberechneten Werte zum Outputvektor (hier: xvp)zusammenzustellen.

Der eigentliche Runge-Kutta-Algorithmus ist auf diesem Wege deutlich kompakter gewor-den, und er wird auch bei Aufgaben mit mehr als zwei Differenzialgleichungen exakt dieseForm haben (natürlich dann mit mehr Anfangswerten):

% Runge−Kut ta−A l g o r i t h m u s −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−x ( 1 , 1 ) = ph i0 ;x ( 1 , 2 ) = omega0 ;

f o r i =1 : nk1 = BewDglPendel ( t ( i ) , x ( i , : ) ) ;k2 = BewDglPendel ( t ( i )+ d t / 2 , x ( i , : ) + k1 ’* d t / 2 ) ;k3 = BewDglPendel ( t ( i )+ d t / 2 , x ( i , : ) + k2 ’* d t / 2 ) ;k4 = BewDglPendel ( t ( i + 1 ) , x ( i , : ) + k3 ’* d t ) ;x ( i + 1 , : ) = x ( i , : ) + ( k1 ’ + 2*k2 ’ + 2*k3 ’ + k4 ’ ) * d t / 6 ;

end% Runge−Kut ta−A l g o r i t h m u s −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

Deshalb ist es naheliegend, auch diesen Algorithmus in eine Function zu verlagern. Diesemüsste als Input vier Information entgegennehmen: Anfangsbedingungen, das Zeitintervall,

Page 20: Jürgen Dankert: Numerische Integration von ... · J. Dankert: Numerische Integration von Anfangswertproblemen, Teil 1 (Grundlagen) 3 1 Anfangswertprobleme Bei einer gewöhnlichen

J. Dankert: Numerische Integration von Anfangswertproblemen, Teil 1 (Grundlagen) 20

für das die Lösung erwartet wird, die Anzahl der Abschnitte, in die dieses Intervall zu unter-teilen ist und in welcher Function die Differenzialgleichungen definiert sind (hier die obengelistete Function BewDglPendel). Diese Function könnte zum Beispiel so aussehen:

1 f u n c t i o n [ t , xv ] = rk4 ( funh , t s p a n , xv0 , n )2

3 t a n f = t s p a n ( 1 ) ;4 t e n d = t s p a n ( 2 ) ;5 d t = ( t e n d − t a n f ) / n ;6 ndeq = l e n g t h ( xv0 ) ;7

8 t = t a n f : d t : t e n d ;9 xv = z e r o s ( n +1 , ndeq ) ;

10

11 % Runge−Kut ta−A l g o r i t h m u s −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−12 f o r i =1 : ndeq13 xv ( 1 , i ) = xv0 ( i ) ; % Anfangsbed ingungen14 end15

16 f o r i =1 : n17 k1 = f e v a l ( funh , t ( i ) , xv ( i , : ) ) ;18 k2 = f e v a l ( funh , t ( i )+ d t / 2 , xv ( i , : ) + k1 ’* d t / 2 ) ;19 k3 = f e v a l ( funh , t ( i )+ d t / 2 , xv ( i , : ) + k2 ’* d t / 2 ) ;20 k4 = f e v a l ( funh , t ( i + 1 ) , xv ( i , : ) + k3 ’* d t ) ;21 xv ( i + 1 , : ) = xv ( i , : ) + ( k1 ’ + 2*k2 ’ + 2*k3 ’ + k4 ’ ) * d t / 6 ;22 end23 % Runge−Kut ta−A l g o r i t h m u s −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

Erläuterungen zu dieser Function rk4, die als rk4.m zum Download verfügbar ist:

• Der Zeitbereich, über den integriert werden soll, wird als Vektor tspan mit den beidenWerten tan f und tend angeliefert (siehe Zeilen 3 und 4).

• Im Vektor xv0 übernimmt die Function rk4 die Anfangsbedingungen. Die Länge desVektors ist außerdem die Information über die Anzahl der Differenzialgleichungen ndeq(Zeile 6). Die Function rk4 kann ein Differenzialgleichungssystem mit beliebig vielenDifferenzialgleichungen 1. Ordnung bearbeiten (deshalb ist das Übernehmen der An-fangsbedingungen in die Ergebnismatrix in eine Schleife eingebettet, Zeilen 12 bis 14).

• Die Anzahl der Zeitschritte n, in die das Integrationsintervall unterteilt werden soll, wirdin Zeile 5 für die Berechnung der Schrittweite dt genutzt.

• Der erste Input-Parameter ist der Name der Function, die die Differenzialgleichungenrepräsentiert und die in der Runge-Kutta-Schleife mehrmals zur Berechnung mit unter-schiedlichen Parametern genutzt wird. Das wird mit der von Matlab dafür vorgesehenenFunction feval realisiert. Diese übernimmt als ersten Parameter den Funktionsnamenund anschließend genau die Parameter in der Reihenfolge, die die Funktion benötigt,deren Name ihr auf der ersten Position des feval-Aufrufs übergeben wird.

Der letzte Punkt bedarf noch einer Erläuterung: Der direkte Aufruf einer Function wie zumBeispiel

k1 = BewDglPendel ( t ( i ) , x ( i , : ) ) ;ist mit dem indirekten Aufruf

k1 = f e v a l ( funh , t ( i ) , x ( i , : ) ) ;

Page 21: Jürgen Dankert: Numerische Integration von ... · J. Dankert: Numerische Integration von Anfangswertproblemen, Teil 1 (Grundlagen) 3 1 Anfangswertprobleme Bei einer gewöhnlichen

J. Dankert: Numerische Integration von Anfangswertproblemen, Teil 1 (Grundlagen) 21

gleichwertig, wenn an feval auf der ersten Position der Parameterliste die Information über-geben wird, dass die Funktion BewDglPendel mit den nachfolgend angegebenen Parameternaufgerufen werden soll. Diese Information kann der Name des Function-Files sein, in demBewDglPendel zu finden ist, oder ein „Function Handle“ (wird weiter unten erläutert).

Der Grund, warum in rk4 die Function BewDglPendel nicht direkt aufgerufen wird, ist plau-sibel: rk4 soll nicht nur für beliebige Integrationsintervalle und Anfangsbedingungen bei be-liebig feiner Diskretisierung (Anzahl der Integrationsschritte) verwendbar sein, sondern auchfür beliebige Differenzialgleichungssysteme 1. Ordnung, die in Functions definiert sind, dienicht BewDglPendel heißen müssen.

Die Function rk4 liefert zwei Ergebnisse ab: In einem Vektor t befinden sich alle Zeitpunkte,für die Ergebnisse berechnet wurden (einschließlich Startzeitpunkt), bei n Integrationsschrit-ten also n+1 Werte. Dies sind bei rk4 (konstante Schrittweite) äquidistante Werte. Die Matrixxv enthält in ndeq Spalten (ndeq ist die Anzahl der Differenzialgleichungen) die berechnetenErgebnisse, für eine Rechnung mit der Function BewDglPendel also eine Spalte mit den n+1ϕ-Werten und eine zweite Spalte mit den ω-Werten.

Nebenstehend sieht mandie Ergebnisse, die bei ei-ner Rechnung über dieZeitspanne t = 0 . . .10und n = 1000 Integrati-onsschritten mit den An-fangswerten ϕ0 = π/2und ω0 = 0 abgeliefertwerden.

i Vektor t Matrix xv0 tan f = 0 ϕ0 = 1,5708 ω0 = 01 t1 = 0,01 ϕ1 = 1,5701 ω1 = -0,14712 t2 = 0,02 ϕ2 = 1,5679 ω2 = -0,29433 t3 = 0,03 ϕ3 = 1,5642 ω3 = -0,4414

. . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . .1001 tend = 10 ϕend = 0,7710 ωend = -4,5944

Der Aufruf der Funktion rk4 muss u. a. auf der ersten Position die Information über die zuverwendende Function für die Definition der Differenzialgleichungen enthalten, also z. B.den Verweis auf die Function BewDglPendel. Wenn diese Function in einer separaten Dateimit dem Namen BewDglPendel.m zu finden ist, muss der Dateiname angegeben werden:

[ t , xv ] = rk4 ( ’ BewDglPendel ’ , [ t 0 ; tEnd ] , [ ph i0 ; omega0 ] , n ) ;

Im Allgemeinen ist es übersichtlicher, die Function BewDglPendel in der gleichen Datei(z. B.: RKPendel4.m) unterzubringen, die den gesamten Berechnungsablauf steuert. Dafürsind zwei Bedingungen zu erfüllen: Weil Functions in Matlab nur in Function-Files stehendürfen, muss auch das Steuerprogramm als Function deklariert werden, indem man einfach

f u n c t i o n RKPendel4

als erste Programmzeile schreibt. Der Aufruf der Function rk4 erfolgt dann mit einem sogenannten „Handle“ auf die Function BewDglPendel:

[ t , xv ] = rk4 ( @BewDglPendel , [ t 0 ; tEnd ] , [ ph i0 ; omega0 ] , n ) ;

Page 22: Jürgen Dankert: Numerische Integration von ... · J. Dankert: Numerische Integration von Anfangswertproblemen, Teil 1 (Grundlagen) 3 1 Anfangswertprobleme Bei einer gewöhnlichen

J. Dankert: Numerische Integration von Anfangswertproblemen, Teil 1 (Grundlagen) 22

Nachfolgend ist die komplette Datei gelistet (als RKPendel4.m zum Download verfügbar):

1 % Runge−Kut ta−V e r f a h r e n 4 . Ordnung f u e r Stab−Pende l m i t großen A u s s c h l a e g e n :2

3 f u n c t i o n RKPendel4 ( n s t e p s )4

5 i f ( nargin < 1) n = 1000 ; % Anzah l der I n t e g r a t i o n s s c h r i t t e6 e l s e n = n s t e p s ;7 end8

9 g l o b a l p l g10 p l = 1 ; g = 9 . 8 1 ; % P e n de l l a e n g e , E r d b e s c h l e u n i g u n g11

12 t 0 = 0 ; ph i0 = pi / 2 ; omega0 = 0 ; % A n f a n g s w e r t e13 tEnd = 10 ; % Ende des I n t e g r a t i o n s i n t e r v a l l s14

15 % Runge−Kut ta−A l g o r i t h m u s −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−16 [ t , xv ] = rk4 ( @BewDglPendel , [ t 0 ; tEnd ] , [ ph i0 ; omega0 ] , n ) ;17 % Runge−Kut ta−A l g o r i t h m u s −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−18

19 p h i = xv ( : , 1 ) ; % S o r t i e r e n der E r g e b n i s s e :20 omega = xv ( : , 2 ) ; % S p a l t e 1 : phi , S p a l t e 2 : omega21

22 % E r w e i t e r t e Auswertung , V e r i f i z i e r e n der E r g e b n i s s e :23 Tges = − g / 2 * cos ( p h i ) + p l *omega . ^ 2 / 6 ; % K o n t r o l l f u n k t i o n " Ge sam t e ne rg i e "24

25 [ phimin , imin ] = min ( p h i ) ;26 di sp ( [ ’ Anzahl d e r Z e i t s c h r i t t e n = ’ , num2str ( n ) ] ) ;27 di sp ( [ ’ ph i_0 = ’ , num2str ( ph i0 ) ] ) ;28 di sp ( [ ’ ph i_end = ’ , num2str ( p h i ( end ) ) ] ) ;29 di sp ( [ ’ omega_max = ’ , num2str ( max ( abs ( omega ) ) ) ] ) ;30 s u b p l o t ( 2 , 1 , 1 ) ; p l o t ( t , p h i ) , t i t l e ( ’ \ p h i ( t ) ’ ) ;31 s u b p l o t ( 2 , 1 , 2 ) ; p l o t ( t , Tges ) , t i t l e ( ’T_{ ges } ( t ) ’ ) ;32

33 %%%%%%%%%% Func t ion , d i e d i e D i f f e r e n z i a l g l e i c h u n g e n d e f i n i e r t : %%%%%%%%%%%%%%%%%%%%%34 f u n c t i o n xvp = BewDglPendel ( t , xv )35 g l o b a l p l g % . . . s i n d i n der F u n c t i o n RKPendel4 ( oben ) d e f i n i e r t .36 p h i = xv ( 1 ) ; % I n p u t−Werte kommen i n . . .37 omega = xv ( 2 ) ; % . . . e inem V e k t o r an .38 ph ip = omega ; % Die b e i d e n D i f f e r e n z i a l g l e i c h u n g e n39 omegap = −1.5*g / p l * s i n ( p h i ) ; % werden a u s g e w e r t e t , . . .40 xvp = [ ph ip ; omegap ] ; % . . . d i e E r g e b n i s s e werden im V e k t o r xvp a b g e l i e f e r t .

• Es arbeiten also drei Functions zusammen, die in zwei Dateien untergebracht sind: In derDatei RKPendel4.m befinden sich die Functions RKPendel4 und BewDglPendel. Dieseenthalten alle Informationen über das aktuelle Problem einschließlich der Problempa-rameter. Bei einer Modifizierung der Parameter oder bei Lösung eines ganz anderenProblems müssen die Änderungen ausschließlich in dieser Datei vorgenommen werden.

Der Algorithmus zur Realisierung der numerischen Integration (hier: rk4) befindet sichin der separaten Datei rk4.m, die nicht wieder angefasst werden muss. Sie muss nurverfügbar sein, indem sie z. B. im gleichen Verzeichnis wie RKPendel4.m steht.

• Weil das Steuerprogramm ohnehin als Function deklariert werden muss, wenn man auchdie Function BewDglPendel in der gleichen Datei unterbringen will, kann man nocheinen Schritt weiter gehen: Functions können auch direkt aus dem Command Windowaufgerufen und von dort mit Parametern versorgt werden. Das wird in der oben geliste-ten Function RKPendel4 mit dem Parameter nsteps demonstriert (Zeile 3), mit dem dieAnzahl der Integrationsschritte gesteuert werden kann.

Page 23: Jürgen Dankert: Numerische Integration von ... · J. Dankert: Numerische Integration von Anfangswertproblemen, Teil 1 (Grundlagen) 3 1 Anfangswertprobleme Bei einer gewöhnlichen

J. Dankert: Numerische Integration von Anfangswertproblemen, Teil 1 (Grundlagen) 23

Damit trotzdem die Rechnung auch ohne Parameter gestartet werden kann, wurde dieAbfrage in Zeile 5 eingefügt. Wenn die Matlab-Variable nargin (n Argumente im Input)den Wert Null hat (Aufruf ohne Parameter) wird mit dem Standardwert n = 1000 für dieAnzahl der Integrationsschritte gearbeitet, ansonsten wird die als Paramter übergebeneAnzahl übernommen.

Die Function kann also aus dem Command Windowzum Beispiel mit

RKPendel4 ( 5 0 0 )

gestartet werden. Nebenstehend sieht man die Er-gebnisse von drei Rechnungen mit unterschiedlicherSchrittanzahl, die nacheinander aus dem CommandWindow gestartet wurden.Trotz aller nachfolgend beschriebenen Möglichkeitender Verfahrens-Verbesserung, Schrittweitensteuerungund nachträglicher Ergebnis-Verbesserung bleibt demPraktiker letztendlich doch kaum eine andere Möglich-keit als die Mehrfachrechnung. Die Steuerung (hier:Schrittanzahl n) über einen Parameter erspart dann denEingriff in den Function-Code.

5.4 Schrittweitenproblem, Richardson-Extrapolation

Bei der numerischen Integration eines Anfangswertproblems ist die Wahl einer geeignetenSchrittweite h (bzw. ∆t) ebenso wichtig wie schwierig. Dem Praktiker kann deshalb als ef-fektives Verfahren zur Beurteilung der Qualität einer Rechnung nur empfohlen werden, einezusätzliche Kontrollrechnung mit halber Schrittweite (und doppelter Anzahl von Integrati-onsschritten) auszuführen. Die Übereinstimmung beider Lösungen (bei einer vertretbarenToleranz) ist das sicherste Kriterium für die Bestätigung der Schrittweitenwahl.

Diese Aussage gilt, obwohl nachfolgend verschiedene Möglichkeiten der Beurteilung derSchrittweite und der Steuerung der Schrittweite während des Integrationsprozesses beschrie-ben werden, die allerdings unbedingt verwendet werden sollten, auch wenn die absolute Si-cherheit, eine „gesunde“ Rechnung zu erreichen, nicht gewährleistet ist. Hier wird zunächsteine einfache Idee vorgestellt, die in ähnlicher (zum Teil deutlich verbesserter) Form denStrategien zur Schrittweitensteuerung und Ergebnisverbesserung zugrunde liegt.

Das Runge-Kutta-Verfahren 4. Ordnung, dessen Formelsatz 5.6 auf der Seite 16 vorgestelltwurde, erzeugt in jedem Schritt einen Fehler, der bei der Schrittweite h in der Größenordnungh5 ist, entsprechend dem ersten nicht mehr berücksichtigten Glied der Taylor-Reihe also:

δy(h) ≈ y(5)(x)5!

h5 = C1 h5 . (5.10)

Page 24: Jürgen Dankert: Numerische Integration von ... · J. Dankert: Numerische Integration von Anfangswertproblemen, Teil 1 (Grundlagen) 3 1 Anfangswertprobleme Bei einer gewöhnlichen

J. Dankert: Numerische Integration von Anfangswertproblemen, Teil 1 (Grundlagen) 24

Bei einer Rechnung mit der doppelten Schrittweite 2h liegt der Fehler in der Größenordnungδy(2h) ≈ C2 (2h)5 = 32C2 h5. Unter der Annahme, dass sich die 5. Ableitung von y imbetrachteten Bereich nicht nennenswert ändert, darf man C1 ≈ C2 setzen und kommt zu derAussage, dass der Fehler der „Grobrechnung“ δy(2h) (ein Schritt mit der Schrittweite 2h)das 16-fache des Fehlers einer „Feinrechnung“ (2 Schritte, jeweils mit der Schrittweite h)beträgt.

Das Ergebnis ygrob der „Grobrechnung“ ist also mit dem Fehler δy(2h) behaftet, das Ergebnisy f ein der „Feinrechnung“ mit dem Fehler δy(h ,h). Der (nicht bekannte) exakte Wert am Endedes Integrationsintervalls yexakt kann mit den beiden numerisch ermittelten Werten und ihrenjeweiligen Fehlern also so aufgeschrieben werden:

yexakt = y f ein +δy(h ,h) = ygrob +δy(2h) ≈ ygrob +16δy(h ,h) . (5.11)

Diese Beziehung liefert eine Abschätzung des Fehlers der Feinrechnung:

δy(h ,h) ≈ 115

(y f ein− ygrob) . (5.12)

Dieser Wert kann doppelt genutzt werden:

• Man kann eine Grenze für den Fehler vorgeben, bei deren Überschreitung die Schritt-weite verkleinert wird (Schrittweitensteuerung).

• Wenn für den Fehler der Feinrechnung eine Abschätzung bekannt ist, wird man natürlichden berechneten Wert verbessern (Ergebniskorrektur):

yverbessert = y f ein +δy(h ,h) . (5.13)

Mit dem Matlab-Script RKPendel4.m (siehe Sei-te 22) kann diese so genannte Richardson-Extrapolation sehr schön demonstriert werden (dasScript wurde im Bereich der Ausgabe leicht modi-fiziert, um die gewünschten Ergebnisse zu sehen).

Es werden zwei Rechnungen ausgeführt, jeweilsüber den Integrationsbereich t = 0 . . .0,2 s, einmalmit nur einem Integrationsschritt (Grobrechnung)und einmal mit zwei Integrationsschritten. Das ne-benstehend zu sehende Command Window zeigtdie beiden Werte für den Winkel ϕ am Ende desIntegrationsintervalls. Aus den beiden Ergebnissenberechnet man:

δϕ(h ,h) ≈ 1

15(ϕ f ein−ϕgrob) =

115

(1,2773565−1,2775565) =−0,0000133 .

Damit kann das Ergebnis der Feinrechnung korrigiert werden:

ϕverbessert = ϕ f ein +δϕ(h ,h) = 1,2773565−0,0000133 = 1,2773432 .

Dass damit eine drastische Verbesserung erzielt wurde, zeigt das Ergebnis der Kontrollrech-nung mit 1000 Zeitschriften (im oben zu sehenden Command Window ist dies die letzte

Page 25: Jürgen Dankert: Numerische Integration von ... · J. Dankert: Numerische Integration von Anfangswertproblemen, Teil 1 (Grundlagen) 3 1 Anfangswertprobleme Bei einer gewöhnlichen

J. Dankert: Numerische Integration von Anfangswertproblemen, Teil 1 (Grundlagen) 25

Rechnung). Der ausgewiesene Wert darf als exakt angesehen werden: ϕend = 1,2773423(die ausgewiesenen Stellen sind tatsächlich alle korrekt):

• Der Fehler der Grobrechnung beträgt 0,0168%, der Fehler der Feinrechnung 0,00112%.Es bestätigt sich die oben gewonnene Erkenntnis, dass der Fehler der Grobrechnungetwa das 16-fache des Fehlers der Feinrechnung ist.

• Die Abweichung des verbesserten Wertes vom exakten Wert mit nur 0,0000705% istalso etwa noch einmal um den gleichen Faktor 16 verkleinert worden.

Die Abweichungen vom exakten Wert erscheinen so minimal, dass der Aufwand einer Ergeb-niskorrektur übertrieben erscheint, aber man beachte, dass es der Fehler eines einzigen In-tegrationsschrittes bzw. Doppelschrittes ist, der sich heftig fortpflanzen würde, denn das Er-gebnis am Ende eines Integrationsschrittes ist immer der Startwert für den folgenden Schritt.Im behandelten Beispiel müsste man sogar so schlussfolgern: Der für den Wert der Feinrech-nung geschätzte Fehler δϕ(h ,h) ≈ 0,0000133 ist zu groß, um mit der gewählten Schrittweiteweiter zu rechnen.

Mit der besonders einfachen Strategie der Richardson-Extrpolation konnte sehr schön ge-zeigt werden, wie man einerseits ein Kriterium gewinnt, um die Schrittweite zu steuern, an-dererseits damit das Ergebnis der Rechnung noch erheblich verbessern kann. Grundsätzlichbraucht man dafür zwei Ergebnisse mit unterschiedlicher Ordnung der Genauigkeit, ermitteltentweder mit einem Verfahren bei unterschiedlicher Schrittweite (wie oben gezeigt) oder mitzwei verschiedenen Verfahren unterschiedlicher Ordnung.

Allerdings ist der Preis dafür ein nicht unerheblicher Mehraufwand. Weil der Aufwand beider numerischen Integration von Anfangswertproblemen im Wesentlichen von der Anzahlder Funktionswertberechnungen bestimmt wird, wurden Verfahren entwickelt, die einerseitsunterschiedlicher Ordnung sind, andererseits aber möglichst viele Funktionswertberechnun-gen gemeinsam nutzen können. Gegen diese so genannten „Eingebetteten Verfahren“ (sieheSeite 27) ist die hier aus didaktischen Gründen behandelte Richardson-Extrapolation nichtkonkurrenzfähig.

6 EinschrittverfahrenEinige Begriffs-Definitionen müssen vorangestellt werden:

• Ein Integrationsschritt (gelegentlich auch nur als Schritt bezeichnet) ist der Übergangvom Punkt i zum Punkt i + 1. In einem Einschrittverfahren wird dabei nur auf diebekannten Werte am Punkt i zurückgegriffen (und nicht zusätzlich auf die Werte anweiter zurückliegenden Punkten).

Alle bisher behandelten Verfahren sind Einschrittverfahren.

• Ein Verfahren wird s-stufig genannt, wenn für die Berechnung des Näherungswertes amPunkt i+1 genau s Funktionswertberechnungen f (x j,y j) erforderlich sind. Das Verfah-ren von Euler-Cauchy (Seite 4) ist ein 1-stufiges Verfahren (nur eine Funktionswert-berechnung am linken Rand des Integrationsintervalls), das klassische Runge-Kutta-

Page 26: Jürgen Dankert: Numerische Integration von ... · J. Dankert: Numerische Integration von Anfangswertproblemen, Teil 1 (Grundlagen) 3 1 Anfangswertprobleme Bei einer gewöhnlichen

J. Dankert: Numerische Integration von Anfangswertproblemen, Teil 1 (Grundlagen) 26

Verfahren 5.6 (Seite 16) ist ein 4-stufiges Verfahren (vier Funktionswertberechnungenfür k1 bis k4).

• Ein Verfahren wird konsistent von der Ordnung p genannt, wenn für einen Schritt überdie Schrittweite h der lokale Fehler ≤ O(hp) ist. Das bedeutet eine Übereinstimmungmit den ersten p+1 Gliedern der Taylorreihen-Entwicklung. Das Verfahren von Euler-Cauchy ist von der Ordnung p = 1, das klassische Runge-Kutta-Verfahren ist ein Ver-fahren 4. Ordnung.

• Ein explizites Verfahren berechnet die Funktionswerte f (x j,y j) nur mit y j-Werten, diedurch vorher berechnete Werte bekannt sind. Das klassische Runge-Kutta-Verfahren istdafür ein Beispiel, denn jede k j-Wert-Berechnung verwendet nur einen vorab bereitsberechneten anderen k j-Wert.

• Ein implizites Verfahren berechnet die Funktionswerte auch unter Verwendung vonWerten, die gerade erst berechnet werden sollen, so dass iterativ vorgegangen werdenmuss. Das Verfahren von Heun 5.4 (Seite 13) ist ein Beispiel dafür.

Die Ordnung p ist also für die Genauigkeit verantwortlich, die durch den Aufwand erkauftwird, der für ein s-stufiges Verfahren erforderlich ist. Allgemein gilt, dass p nicht größer alss sein kann.

6.1 Runge-Kutta-Familie, Butcher-ArrayDas im Abschnitt 5.2 behandelte klassische Runge-Kutta-Verfahren ist ein Sonderfall einergroßen Verfahrensfamilie mit einheitlicher Berechnungsvorschrift, alle bezeichnet als

Runge-Kutta-Verfahren:yi+1 = yi +h

s

∑j=1

b j k j , xi+1 = xi +h (6.1)

mit k j = f (x j,y j) , x j = xi +hc j , y j = yi +hs

∑l=1

a j l kl .

Es soll zunächst gezeigt werden, wie das klassische Runge-Kutta-Verfahren in dieses allge-meine Schema hineinpasst. Es ist ein 4-stufiges Verfahren, das yi+1 wie folgt berechnet:

yi+1 = yi +h4

∑j=1

b j k j = yi +h(

16

k1 +13

k2 +13

k3 +16

k4

).

Es gilt also: s = 4 und b1 = 16 , b2 = 1

3 , b3 = 13 , b4 = 1

6 .

Die c j-Werte und die a j l-Werte findet man durch Vergleich der Berechnungsvorschrift 5.6für k1 bis k4 von Seite 16 mit den oben angegebenen Formeln 6.1:

k1 = f (xi , yi) ⇒ c1 = 0 ; a11 , . . . , a14 = 0 , 0 , 0 , 0 ;

k2 = f(xi + h

2 , yi + h2 k1)

⇒ c2 = 12 ; a21 , . . . , a24 = 1

2 , 0 , 0 , 0 ;

k3 = f(xi + h

2 , yi + h2 k2)

⇒ c3 = 12 ; a31 , . . . , a34 = 0 , 1

2 , 0 , 0 ;

k4 = f (xi +h , yi +hk3) ⇒ c4 = 1 ; a41 , . . . , a44 = 0 , 0 , 1 , 0 .

Page 27: Jürgen Dankert: Numerische Integration von ... · J. Dankert: Numerische Integration von Anfangswertproblemen, Teil 1 (Grundlagen) 3 1 Anfangswertprobleme Bei einer gewöhnlichen

J. Dankert: Numerische Integration von Anfangswertproblemen, Teil 1 (Grundlagen) 27

Die c j, b j und a j l können in zwei Vektoren und einer Matrix zusammengefasst werden:

c =

01212

1

, b =

16131316

, A =

0 0 0 012 0 0 0

0 12 0 0

0 0 1 0

. (6.2)

Die Elemente der Matrix A sind die Faktoren, mit denen die kl-Werte zu multiplizieren sind.Bei einem expliziten Verfahren (es wird nur auf vorab berechnete kl-Werte zugegriffen) sinddeshalb nur unterhalb der Hauptdiagonalen von Null verschiedene Elemente.

Die Elemente der beiden Vektoren c und b und der Matrix A werden üblicherweise kom-pakt im so genannten „Butcher-Array“ zusammengestellt, mit dem das Verfahren eindeutigcharakterisiert wird:

Butcher-Array für das klassischeRunge-Kutta-Verfahren4. Ordnung:

c AbT

012

12

12 0 1

21 0 0 1

16

13

13

16

(6.3)

Die Null-Elemente auf und oberhalb der Hauptdiagonalender Matrix A werden im Butcher-Array weggelassen. Es istleicht zu bestätigen, dass für das Euler-Cauchy-Verfahren2.3 (Seite 4) das nebenstehend zu sehende besonders einfa-che Butcher-Array gilt.

01

(6.4)

Euler-Cauchy-Verfahren

6.2 Eingebettete Verfahren

Bei der Herleitung von Runge-Kutta-Verfahren kann man zum Beispiel die gewünschte Ord-nung p und die Zahl der Stufen s ≥ p vorgeben. Für die dann zu erfüllenden Bedingungenstehen mit den Parametern, die mit dem Butcher-Array das Verfahren definieren, im Allge-meinen wesenlich mehr Freiwerte als benötigt zur Verfügung, so dass bei Vorgabe von p unds mehrere Verfahren kreiert werden können.

Während früher (für die Handrechnung) möglichst Formeln mit einfachen Zahlen angestrebtwurden (das klassische Runge-Kutta-Verfahren ist ein typisches Beispiel), spielen für dieComputerrechnung andere Kriterien eine Rolle: Neben dem Ziel, für gewünschte Genauig-keit und erforderlichen Aufwand ein möglichst optimales Verhältnis zu finden, ist besondersdie Möglichkeit der Fehlerabschätzung und damit der Schrittweitensteuerung das Ziel derVerfahrenssuche gewesen.

Wie im Abschnitt 5.4 demonstriert, benötigt man für dieses Ziel zwei Ergebnisse mit unter-schiedlicher Genauigkeit. Diese wurden im Abschnitt 5.4 aus Rechnungen mit verschiedenen

Page 28: Jürgen Dankert: Numerische Integration von ... · J. Dankert: Numerische Integration von Anfangswertproblemen, Teil 1 (Grundlagen) 3 1 Anfangswertprobleme Bei einer gewöhnlichen

J. Dankert: Numerische Integration von Anfangswertproblemen, Teil 1 (Grundlagen) 28

Schrittweiten mit dem klassischen Runge-Kutta-Verfahren gewonnen. Alternativ dazu kannman zwei Rechnungen mit zwei Verfahren unterschiedlicher Ordnung p ausführen. Das Zielder Suche nach neuen Verfahren bestand im Wesentlichen darin, zwei solche Verfahren zufinden, bei denen möglichst viele der berechneten Funktionswerte f (x j,y j) für beide Rech-nungen verwendet werden können. Ideal sind Verfahren, die sich nur in den Koeffizientendes Vektors b unterscheiden, weil dann alle Funktionswertberechnungen f (x j,y j) für beideVerfahren verwendet werden können. Verfahren, die diese Bedingung erfüllen, nennt man„Eingebettete Verfahren“.

Der deutsche Mathematiker E. Fehlberg hat ein 6-stufiges Verfahren vorgeschlagen, das die-se Bedingung erfüllt und mit zwei unterschiedlichen Sätzen von b j-Werten eine Lösung 5.Ordnung und eine Lösung 4. Ordnung erzeugt. Dies ist das

Butcher-Array fürdas Verfahren vonFehlberg:

014

14

38

332

932

1213

19322197 −7200

219772962197

1 439216 −8 3680

513 − 8454104

12 − 8

27 2 −35442565

18594104 −11

40

p = 4 25216 0 1408

256521974104 − 1

5 0

p = 5 16135 0 6656

128252856156430 − 9

502

55

(6.5)

Mit den b j-Werten der vorletzten Zeile wird ein Ergebnis der Ordnung p = 4 erzeugt, mitden b j-Werten der letzten Zeile ein Ergebnis der Ordnung p = 5.

Die beiden amerikanischen Mathematiker J. R. Dormand und P. J. Prince haben ein 7-stufigesVerfahrens-Paar entwickelt, das wie das Verfahren von Fehlberg eine Lösung der Ordnungp = 5 und eine eingebettete Lösung der Ordnung p = 4 erzeugt. Obwohl 7-stufig, sindauch beim Dormand-Price-Verfahren nur 6 Funktionswertberechnungen für einen Integati-onsschritt erforderlich, weil die letzte Funktionswertberechnung eines Schrittes gleichzeitigals erste für den nächsten Schritt genutzt wird. Die Methode wird definiert durch das

Butcher-Arrayfür dasVerfahren vonDormand-Prince:

015

15

310

340

940

45

4445 −56

15329

89

193726561 −25360

2187644486561 −212

729

1 90173168 −355

33467325247

49176 − 5103

18656

1 35384 0 500

1113125192 −2187

67841184

p = 4 517957600 0 7571

16695393640 − 92097

339200187

21001

40

p = 5 35384 0 500

1113125192 −2187

67841184 0

(6.6)

Page 29: Jürgen Dankert: Numerische Integration von ... · J. Dankert: Numerische Integration von Anfangswertproblemen, Teil 1 (Grundlagen) 3 1 Anfangswertprobleme Bei einer gewöhnlichen

J. Dankert: Numerische Integration von Anfangswertproblemen, Teil 1 (Grundlagen) 29

Das Butcher-Array für das Fehlberg-Verfahren 6.5und das Butcher-Array für das Dormand-Prince-Verfahren 6.6 beschreiben jeweils zwei Integra-tionsvorschriften. Diese wurden gemeinsam mitdem Verfahren von Euler-Cauchy 6.4 und demklassischen Runge-Kutta-Verfahren 4. Ordnung6.3 in einer Matlab-Function realisiert, die alsbutch.m zum Download verfügbar ist. Ihr Aufrufentspricht dem der Function rk4.m (siehe Listingauf Seite 22), ergänzt um einen String, der das ge-wünschte Verfahren kennzeichnet, nach dem inte-griert werden soll.

Aus dem Matlab-Script ButchPendel (Downloadals ButchPendel.m) wird diese Function aufge-rufen, um die bereits mehrfach gelöste Aufgabe„Stab-Pendel mit großen Ausschlägen“ (siehe Sei-te 8) zu berechnen. Nebenstehend sieht man die Er-gebnisse einiger Rechnungen im Command Win-dow.

Es wurde wieder der schon mehrfach behandelteFall mit einer Anfangsauslenkung ϕ = π/2 übereinen Zeitbereich t = 0 . . .10 s berechnet. Die ers-te Rechnung (nach dem Runge-Kutta-Verfahren 4.Ordnung) mit der außerordentlich großen Schritt-anzahl n = 5000 kann als Referenzrechnung fürdie anderen Rechnungen gelten: Die für das En-de des Integrationsintervalls ausgewiesenen Werteϕend und ωend dürfen auch mit der ausgegebenenStellenanzahl als exakt angesehen werden.

Alle weiteren Rechnungen mit der deutlich gerin-geren Schrittanzahl n = 100 weichen von den Re-ferenzwerten ab, sind aber durchaus noch im ak-zeptablen Bereich.

Man sieht, dass die verschiedenen Verfahren zwar unterschiedliche Abweichungen liefern,dass aber kein Verfahren die anderen deutlich überragt, weil nur die einzelnen Verfahrengetestet wurden. Die Vorteile, die ein „eingebettetes Verfahrenspaar“ liefert, wurden nochnicht genutzt. Erst die Verbesserung der Ergebnisse in jedem Integrationsschritt, die mit zweiVerfahren unterschiedlicher Ordnung möglich sind, liefert auch bessere Endergebnisse.

Der Standardsolver in Matlab arbeitet mit dem Dormand-Prince-Algorithmus bei Ausnut-zung der Verbesserungsmöglichkeiten in jedem Schritt und Steuerung der Schrittweite beiAbweichungen der Ergebnisse der beiden Verfahren, die eine gewisse Grenze überschreiten.

Page 30: Jürgen Dankert: Numerische Integration von ... · J. Dankert: Numerische Integration von Anfangswertproblemen, Teil 1 (Grundlagen) 3 1 Anfangswertprobleme Bei einer gewöhnlichen

J. Dankert: Numerische Integration von Anfangswertproblemen, Teil 1 (Grundlagen) 30

6.3 Dormand-Prince-Verfahren, Standardsolver in Matlab

Matlab bietet eine ganze Reihe von numerischen Integrationsverfahren für Anfangswertpro-bleme an. Allen gemeinsam ist, dass eine automatische Schrittweitensteuerung eingebautist (Matlab-Help, Question and Answers, Frage: „Can I integrate with fixed step sizes?“Antwort: „No.“ ) Als Standardverfahren wird der so genannte ode45-Solver („ordinary dif-ferential equations 4. and 5. order“ ) empfohlen (Matlab-Help: „In general, ode45 ist thebest function to apply as a first try for most problems.“ ) Es ist das im vorigen Abschnittvorgestellte Verfahren von Dormand-Prince 6.6.

Alle Verfahren arbeiten mit dem gleichen Aufruf (bis auf den Namen der Function natür-lich). Darauf wurde in den Beispielen der vorangegangenen Abschnitte bereits hingearbei-tet: Der Aufruf des klassischen Runge-Kutta-Verfahrens rk4 im Beispiel auf Seite 22 kanneinfach durch den Aufruf von ode45 ersetzt werden. Der letzte Parameter im rk4-Aufruf(Anzahl der auszuführende Integrationsschritte) muss dabei entweder weggelassen (ode45bestimmt die Schrittweite und damit auch die Anzahl der Schritte selbst) oder durch den„options-Parameter“ ersetzt werden, mit dem man verschiedene Wünsche anmelden kann.Das Matlab-Script von Seite 22 lässt sich also wie folgt vereinfachen (DP45Pendel.m):

1 % Stab−Pende l m i t großen Aussch laegen , Loesung m i t Matlab−Standard−S o l v e r ode45 :2

3 f u n c t i o n DP45Pendel4

5 g l o b a l p l g6 p l = 1 ; g = 9 . 8 1 ; % P e n de l l a e n g e , E r d b e s c h l e u n i g u n g7

8 t 0 = 0 ; ph i0 = pi / 2 ; omega0 = 0 ; % A n f a n g s w e r t e9 tEnd = 10 ; % Ende des I n t e g r a t i o n s i n t e r v a l l s

10

11 % Runge−Kut ta−A l g o r i t h m u s −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−12 [ t , xv ] = ode45 ( @BewDglPendel , [ t 0 ; tEnd ] , [ p h i 0 ; omega0 ] ) ;13 % Runge−Kut ta−A l g o r i t h m u s −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−14

15 p h i = xv ( : , 1 ) ; % S o r t i e r e n der E r g e b n i s s e :16 omega = xv ( : , 2 ) ; % S p a l t e 1 : phi , S p a l t e 2 : omega17

18 % E r w e i t e r t e Auswertung , V e r i f i z i e r e n der E r g e b n i s s e :19 Tges = − g / 2 * cos ( p h i ) + p l *omega . ^ 2 / 6 ; % K o n t r o l l f u n k t i o n " Ge sam t e ne rg i e "20

21 [ phimin , imin ] = min ( p h i ) ;22 di sp ( [ ’ Anzahl d e r Z e i t s c h r i t t e n = ’ , num2str ( l e n g t h ( t ) ) ] ) ;23 di sp ( [ ’ ph i_0 = ’ , num2str ( ph i0 ) ] ) ;24 di sp ( [ ’ ph i_end = ’ , num2str ( p h i ( end ) , 8 ) ] ) ;25 di sp ( [ ’ omega_end = ’ , num2str ( omega ( end ) , 8 ) ] ) ;26 s u b p l o t ( 2 , 1 , 1 ) ; p l o t ( t , p h i ) , t i t l e ( ’ \ p h i ( t ) ’ ) ;27 s u b p l o t ( 2 , 1 , 2 ) ; p l o t ( t , Tges ) , t i t l e ( ’T_{ ges } ( t ) ’ ) ;28

29 %%%%%%%%%% Func t ion , d i e d i e D i f f e r e n z i a l g l e i c h u n g e n d e f i n i e r t : %%%%%%%%%%%%%%%%%%%%%%30 f u n c t i o n xvp = BewDglPendel ( t , xv )31 g l o b a l p l g % . . . s i n d i n der F u n c t i o n DP45Pendel ( oben ) d e f i n i e r t .32 p h i = xv ( 1 ) ; % I n p u t−Werte kommen i n . . .33 omega = xv ( 2 ) ; % . . . e inem V e k t o r an .34 ph ip = omega ; % Die b e i d e n D i f f e r e n z i a l g l e i c h u n g e n35 omegap = −1.5*g / p l * s i n ( p h i ) ; % werden a u s g e w e r t e t , . . .36 xvp = [ ph ip ; omegap ] ; % . . . d i e E r g e b n i s s e werden im V e k t o r xvp a b g e l i e f e r t .

Page 31: Jürgen Dankert: Numerische Integration von ... · J. Dankert: Numerische Integration von Anfangswertproblemen, Teil 1 (Grundlagen) 3 1 Anfangswertprobleme Bei einer gewöhnlichen

J. Dankert: Numerische Integration von Anfangswertproblemen, Teil 1 (Grundlagen) 31

Damit scheint der Anwender vom schwierigsten Problem, der Wahl einer geeigneten Schritt-weite, befreit zu sein. Die Ergebnisse sprechen eine andere Sprache. Es wurde wieder derschon mehrfach behandelte Fall mit einer Anfangsauslenkung ϕ = π/2 über einen Zeitbe-reich t = 0 . . .10 s berechnet:

Standard-Einstellungen liefern inakzeptableErgebnisse. Erwartet werden am Ende des

Integrationsintervalls die Werte ϕend = 0,77096 undωend =−4,5944.

Die Kontrollfunktion Tges(t) (Gesamtenergie während der Bewegung, vgl. Abschnitt 4) zeigtdeutliche Abweichungen vom Sollwert in nicht zu akzeptierender Größenordnung (linkesBild). Die als Kontrollen ins Command Window geschriebenen Endwerte der berechnetenVariablen (rechtes Bild) sind weit von den zu erwartenden Werten entfernt.

Die Ursachen dafür sind weder das verwendete Verfahren (Dormand-Prince) noch die Be-rechnungsstrategie (automatische Schrittweitensteuerung auf der Basis der Ergebnisse deseingebetteten Verfahrens). Verantwortlich für die schlechten Ergebnisse sind die Werte, diefür die Steuerung der Schrittweite eingestellt sind, denn natürlich müssen irgendwo Zahlen-werte für die Beantwortung der Frage vorgesehen sein, ob und wie die Schrittweite geändertwerden soll. Es ist müßig, darüber zu streiten, ob die Standard-Einstellungen in Matlab sinn-voll sind oder nicht. Es ist schlicht unmöglich, Standard-Einstellungen zu wählen, die füralle Probleme passend sind. Generell gilt:

Die Aussage der Anbieter kommerzieller Software, dass „leistungsfähige Verfahren“ zurnumerischen Integration von Anfangswertproblemen eingesetzt werden, die mit „automa-tischer Wahl der Schrittweite“ arbeiten, ist in der Regel richtig (trifft z. B. für Matlab invollem Umfang zu).

Diese Aussage darf allerdings auf keinen Fall dazu verleiten, auf die Ergebnisse ohnegenaue Prüfung zu vertrauen. Mindestens muss eine Überprüfung durchgeführt werden,ob mit einer geeigneten Schrittweite gerechnet wurde.

• Aus historischen Gründen sind die Standard-Einstellungen bei kommerzieller Softwa-re häufig zu optimistisch: Weil kleine Schrittweiten natürlich größere Rechenzeitenerzeugen, konnten diese noch am Ende des 20. Jahrhunderts zu lästigem Warten aufdas Ergebnis führen (kann natürlich bei aufwendigen Problemen auch heute noch pas-sieren). Die Computer sind inzwischen drastisch schneller geworden, die Standard-Einstellungen sind häufig geblieben.

Page 32: Jürgen Dankert: Numerische Integration von ... · J. Dankert: Numerische Integration von Anfangswertproblemen, Teil 1 (Grundlagen) 3 1 Anfangswertprobleme Bei einer gewöhnlichen

J. Dankert: Numerische Integration von Anfangswertproblemen, Teil 1 (Grundlagen) 32

• Der Anwender sollte in jedem Fall die Information abfragen, wie viele Zeitschritte tat-sächlich berechnet wurden. Im oben gelisteten Script DP45Pendel wird dies mit derLänge des Vektors t der als Ausgabe von ode45 erzeugten Zeitschritte realisiert. Derim Command Window zu findende Wert n = 189 weicht allerdings von der Anzahl derIntegrationsschritte ab, weil Matlab für jeden Integrationsschritt (nur bei ode45) stan-dardmäßig 3 zusätzliche Zwischenwerte durch Interpolation erzeugt. Tatsächlich wur-den also nur (189 - 1)/4 = 47 Dormand-Prince-Integrationsschritte ausgeführt, und dasist für das behandelte Problem eindeutig zu wenig.

• Leider können auch die besten Verfahren mit den feinsinnigsten Strategien nicht fürrichtige Ergebnisse garantieren. Das Problem der Verifizierung der Ergebnisse bleibtbeim Anwender, der natürlich wissen muss, an „welchen Schräubchen er drehen kann“,um die Schrittweite auch bei automatischer Schrittweitensteuerung zu beeinflussen.

Es gibt mehrere sinnvolle Möglichkeiten, mit denen die Schrittweite auch bei automatischerSchrittweitensteuerung zu beeinflussen ist. Weil Matlab sie alle anbietet, werden die Matlab-Optionen nachfolgend gelistet:

• Nach jedem Integrationsschritt eines eingebetteten Verfahrenspaares kann der Schritt-fehler δyi für jede Komponente yi des Lösungsvektors geschätzt werden. Aus dem Vek-tor der Fehler der einzelnen Komponenten kann eine Vektornorm berechnet und miteinem Toleranzwert verglichen werden, es kann aber auch schärfer kontrolliert werden,indem jede einzelne Komponente mit einem Toleranzwert verglichen wird. Matlab bietetbeide Möglichkeiten, wobei die Kontrolle der einzelnen Komponenten die Standardstra-tegie ist. Die beiden Werte εrel und εabs dienen als Fehlertoleranzen. Es muss am Endeeines jeden Schritts gelten:

|δyi| ≤max(εrel · |yi| , εabs) . (6.7)

Wenn diese Bedingung nicht erfüllt ist, wird die Schrittweite verkleinert. Voreingestelltsind in Matlab die Werte εrel = 10−3 bzw. εabs = 10−6.

• „Der 1. Schritt“ kann noch nicht auf einer Fehlerabschätzung basieren. Man kann demVerfahren gegebenenfalls helfen, hier einen sinnvollen (und nicht zu großen) Wert zuverwenden. Auf die Gesamtrechnung (speziell die insgesamt ausgeführten Integrations-schritte) wirkt sich dies im Allgmeinen nur geringfügig aus.

• Man kann die Größe der Integrationsschritte generell begrenzen (kein Integrationsschrittdarf größer sein als ein vorzugebender Wert). Dies führt in der Regel zu einer allgemei-nen Verbesserung der Ergebnisse, wenn man eine geeignete Grenze gefunden hat. InMatlab ist dafür der so genannte MaxStep-Parameter vorgesehen, dessen Standardwert(ein Zehntel des gesamten Integrationsintervalls) in der Regel deutlich zu groß ist, umeine Begrenzung der Schrittweite zu veranlassen.

Man beachte, dass mit den eingestellten Fehlertorleranzen nur der Fehler eines einzigen In-tegrationsschrittes begrenzt wird. Sie geben (leider) keinerlei Garantie dafür, dass der Fehlerder Gesamtrechnung innerhalb dieser Grenzen oder überhaupt innerhalb vernünftiger Gren-zen liegt. Dem Praktiker bleibt keine Wahl: Es muss mehrfach gerechnet werden, wobeijeweils „an geeigneten Schräubchen gedreht“ werden muss, um die zu erreichende Genauig-keit zu verbessern, was auf geeignete Weise kontrolliert werden muss.

Page 33: Jürgen Dankert: Numerische Integration von ... · J. Dankert: Numerische Integration von Anfangswertproblemen, Teil 1 (Grundlagen) 3 1 Anfangswertprobleme Bei einer gewöhnlichen

J. Dankert: Numerische Integration von Anfangswertproblemen, Teil 1 (Grundlagen) 33

Empfehlenswert ist das Variieren der Schranke εrel , weil diese sich an der Größenordnungder errechneten Funktionswerte orientiert. Mit εabs ist viel schwieriger zu steuern, weil mandafür die Größenordnung der zu berechnenden Funktionswerte in die Überlegungen einbe-ziehen muss, die ja für die einzelnen Komponenten stark unterschiedlich sein können.

Weniger feinsinnig ist die Steuerung über den MaxStep-Parameter, mit dem man im Wesent-lichen eine Mindestanzahl von Integrationsschritten erzwingen kann. Es ist allerdings nichtzu bestreiten, dass dies für den Praktiker, der weiß, dass er ohnehin mehrfach rechnen muss,in der Regel die einfachste (und deshalb wohl auch beliebteste) Steurungsmöglichkeit ist.

Die nachfolgend gelistete Matlab-Function DP45oPendel ist eine Modifikation des oben ge-listeten Scripts, mit dem zwei Optionen für die ode45-Rechnung vorgegeben werden:

1 % Stab−Pende l m i t großen Aussch laegen , Loesung m i t Matlab−Standard−S o l v e r ode45 :2

3 f u n c t i o n DP45oPendel ( e p s t o l , mstep )4

5 i f ( nargin < 1) r e l t o l = 1e−3 ; maxstep = 1 ;6 e l s e r e l t o l = e p s t o l ;7 i f ( nargin < 2) maxstep = 1 ;8 e l s e maxstep = mstep ;9 end

10 end11

12 g l o b a l p l g13 p l = 1 ; g = 9 . 8 1 ; % P e n de l l a e n g e , E r d b e s c h l e u n i g u n g14

15 t 0 = 0 ; ph i0 = pi / 2 ; omega0 = 0 ; % A n f a n g s w e r t e16 tEnd = 10 ; % Ende des I n t e g r a t i o n s i n t e r v a l l s17

18 % Dormand−Pr ince−A l g o r i t h m u s −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−19 o p t i o n s = o d e s e t ( ’ Re lTo l ’ , r e l t o l , ’ MaxStep ’ , maxs tep ) ;20 [ t , xv ] = ode45 ( @BewDglPendel , [ t 0 ; tEnd ] , [ p h i 0 ; omega0 ] , o p t i o n s ) ;21 % Dormand−Pr ince−A l g o r i t h m u s −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−22

23 p h i = xv ( : , 1 ) ; % S o r t i e r e n der E r g e b n i s s e :24 omega = xv ( : , 2 ) ; % S p a l t e 1 : phi , S p a l t e 2 : omega25

26 % E r w e i t e r t e Auswertung , V e r i f i z i e r e n der E r g e b n i s s e :27 Tges = − g / 2 * cos ( p h i ) + p l *omega . ^ 2 / 6 ; % K o n t r o l l f u n k t i o n " Ge sam t e ne rg i e "28

29 [ phimin , imin ] = min ( p h i ) ;30 di sp ( [ ’ Anzahl d e r Z e i t s c h r i t t e n = ’ , num2str ( l e n g t h ( t ) ) ] ) ;31 di sp ( [ ’ e p s _ r e l = ’ , num2str ( r e l t o l ) ] ) ;32 di sp ( [ ’ MaxStep = ’ , num2str ( maxstep ) ] ) ;33 di sp ( [ ’ ph i_0 = ’ , num2str ( ph i0 ) ] ) ;34 di sp ( [ ’ ph i_end = ’ , num2str ( p h i ( end ) , 8 ) ] ) ;35 di sp ( [ ’ omega_end = ’ , num2str ( omega ( end ) , 8 ) ] ) ;36 s u b p l o t ( 2 , 1 , 1 ) ; p l o t ( t , p h i ) , t i t l e ( ’ \ p h i ( t ) ’ ) ;37 s u b p l o t ( 2 , 1 , 2 ) ; p l o t ( t , Tges ) , t i t l e ( ’T_{ ges } ( t ) ’ ) ;38

39 %%%%%%%%%% Func t ion , d i e d i e D i f f e r e n z i a l g l e i c h u n g e n d e f i n i e r t : %%%%%%%%%%%%%%%%%%%%%40 f u n c t i o n xvp = BewDglPendel ( t , xv )41 g l o b a l p l g % . . . s i n d i n der F u n c t i o n RKPendel4 ( oben ) d e f i n i e r t .42 p h i = xv ( 1 ) ; % I n p u t−Werte kommen i n . . .43 omega = xv ( 2 ) ; % . . . e inem V e k t o r an .44 ph ip = omega ; % Die b e i d e n D i f f e r e n z i a l g l e i c h u n g e n45 omegap = −1.5*g / p l * s i n ( p h i ) ; % werden a u s g e w e r t e t , . . .46 xvp = [ ph ip ; omegap ] ; % . . . d i e E r g e b n i s s e werden im V e k t o r xvp a b g e l i e f e r t .

Page 34: Jürgen Dankert: Numerische Integration von ... · J. Dankert: Numerische Integration von Anfangswertproblemen, Teil 1 (Grundlagen) 3 1 Anfangswertprobleme Bei einer gewöhnlichen

J. Dankert: Numerische Integration von Anfangswertproblemen, Teil 1 (Grundlagen) 34

• Die Optionen für die ode-Functions werden ineiner Struktur zusammengestellt, die mit derFunction odeset bestückt wird (Zeile 19). Die-ser muss jeweils über ein Schlüsselwort (hier’RelTol’ bzw. ’MaxStep’) angekündigt wer-den, wie der nachfolgende Zahlenwert zu in-terpretieren ist. Die auf diese Weise gefüllteStruktur (hier options genannt) muss der ode-Function als 4. Parameter übergeben werden.

• Als Kontrollwerte für die erreichte Genauig-keit dienen (neben der Kontrollfunktion Tges)hier wieder die Endwerte ϕend und ωend derberechneten Funktionen (Zeilen 34 und 35). Indiesem Fall sind deren korrekte Werte durchdie in den vorigen Abschnitten durchgeführ-ten Rechnungen mit sehr feiner Diskretisie-rung bekannt (ϕend = 0,77095762 und ωend =−4,5943968). Normalerweise muss man na-türlich mehrfach rechnen, bis sich diese Wer-te im Rahmen der gewünschten Genauigkeitnicht mehr ändern.

• DP45oPendel ist als Function geschrieben, diemit zwei Parametern aus dem Command Win-dow aufgerufen werden kann (εrel und Wertfür MaxStep-Option, Zeile 3). Werden kei-ne Parameter angegeben (oder bei Aufruf ausdem Matlab-Editor), werden die Standardwer-te eingestellt (Zeilen 5 bis 10).

Nebenstehend sieht man die Ergebnisse von 6Rechnungen. Bei den ersten drei Rechnungen wirdεrel variiert. Man sieht, dass sich bei kleineren To-leranzwerten die Schrittanzahl und die Qualität derErgebnisse erhöhen. Bei einem noch kleineren To-leranzwert als εrel = 10−6 (dritte Rechnung) ver-bessern sich die Ergebnisse kaum noch, weil dannentsprechend 6.7 (Seite 32) der Toleranzwert εabsgreift. Für eine weitere Verbesserung müsste auchdieser noch abgesenkt werden.

Bei den letzten drei Rechnungen wird der Wert für die MaxStep-Option variiert. Man sieht,dass man damit sehr schnell zu sehr genauen Ergebnissen kommt, aber der Preis dafür isthoch: Die letzte Rechnung gibt Ergebnisse für 4017 Zeitpunkte aus (das entspricht 1004Dormand-Prince-Integrationsschritten).

Page 35: Jürgen Dankert: Numerische Integration von ... · J. Dankert: Numerische Integration von Anfangswertproblemen, Teil 1 (Grundlagen) 3 1 Anfangswertprobleme Bei einer gewöhnlichen

J. Dankert: Numerische Integration von Anfangswertproblemen, Teil 1 (Grundlagen) 35

7 MehrschrittverfahrenWährend die Einschrittverfahren (Abschnitt 6) den Näherungswert yi+1 an der Stelle xi+1 =xi +h ausschließlich auf der Basis des für den Punkt i ermittelten Wert berechnen, beziehendie so genannten Mehrschrittverfahren auch weiter zurück liegende Punkte mit ein.

Ausgangspunkt der Überlegung ist (wie bereits beim Euler-Cauchy-Verfahren, siehe Ab-schnitt 2) die Frage, wie das Integral in

yi+1 = yi +

xi+1∫x=xi

f (x,y) dx (7.1)

(siehe Formel 2) genähert wird. Für alle bereits be-rechneten Punkte kann fi(xi,yi) berechnet werden.Die Funktion f (x,y) kann damit als Polynom an-genähert werden. Die nebenstehende Skizze zeigtdies für das Einbeziehen von vier Punkten xi−3 bisxi, mit denen ein Polynom 3. Grades P3(x) definiertwird.

f

x

P (x)

ii-1

i-2ff

f

x xi i+1i-1x xi-2xi-3

f i-3

3

h h h h

Dieses Polynom wird nun als Näherung für f (x,y) auch über den Punkt xi hinaus ange-nommen und für die Lösung des Integrals in 7.1 verwendet. Wenn für die Bestimmung desPolynoms nur die Punkte mit bereits bekannten Funktionswerten genutzt werden, sprichtman von einem expliziten Verfahren, wird auch der unbekannte Funktionswert an der Stellexi+1 einbezogen, ist es ein implizites Verfahren.

7.1 Methoden von Adams-Bashforth (explizite Verfahren)

Wenn für die Bestimmung des Polynoms, mit dem die Funktion f (x,y) in 7.1 genähert wird,m bereits bekannte Funktionswerte herangezogen werden, spricht man von einem explizi-ten m-Schrittverfahren. Für das Aufschreiben der Polynome verwendet man zweckmäßigdie Strategie der Lagrangeschen Interpolationspolynome. Die Polynome können geschlos-sen integriert werden.

Dieser Weg, auf dem man zu den Näherungsformeln für einen Integrationsschritt kommt, istnicht schwierig, aber etwas mühsam. Die sich ergebenden Integrationsformeln sind die

Methoden von Adams und Bashforth,4-Schrittverfahren:

yi+1 = yi +h

24(55 fi−59 fi−1 +37 fi−2−9 fi−3) , (7.2)

5-Schrittverfahren:

yi+1 = yi +h

720(1901 fi−2774 fi−1 +2616 fi−2−1274 fi−3 +251 fi−4) . (7.3)

Page 36: Jürgen Dankert: Numerische Integration von ... · J. Dankert: Numerische Integration von Anfangswertproblemen, Teil 1 (Grundlagen) 3 1 Anfangswertprobleme Bei einer gewöhnlichen

J. Dankert: Numerische Integration von Anfangswertproblemen, Teil 1 (Grundlagen) 36

Es können Formeln für beliebige m-Schrittverfahren hergeleitet werden, die alle erhebli-che Vorteile gegenüber den Einschrittverfahren haben, allerdings auch nicht zu übersehendeNachteile:

• Auch wenn ein Integrationsschritt einer Adams-Bashforth-Methode m Funktionswertefi(xi,yi) einbezieht, muss in jedem Schritt nur ein Funktionswert neu berechnet werden(alle übrigen sind aus den vorangegangenen Schritten bekannt). Deshalb wird hier auchder Begriff des m-Schrittverfahrens verwendet und nicht von einem s-stufigen Verfahrenwie bei den Einschrittverfahren (siehe Definition auf Seite 25) geredet. Der Aufwand fürdie Funktionswertberechnungen fi(xi,yi) (im Allgemeinen der wesentliche Aufwand) istbei den Mehrschrittverfahren in der Regel deutlich geringer als bei Einschrittverfahrenvergleichbarer Fehlerordnung.

• Ein m-Schrittverfahren nach Adams-Bashforth ist von der Fehlerordnung p (siehe De-finition auf der Seite 26). Man kann deshalb mit ähnlich minimalen Aufwand wie mitden eingebetteten Einschrittverfahren (Abschnitt 6) zwei Ergebnisse unterschiedlicherOrdnung erzeugen und daraus eine Näherung des Schrittfehlers bestimmen.

• Schrittweitensteuerung (Änderung der Schrittweite durch Auswertung der genähertenSchrittfehler) ist allerdings deutlich schwieriger zu realisieren als bei den Einschritt-verfahren, weil dann die Funktionswerte fi(xi,yi) nicht mehr an äquidistanten Punktenvorliegen. Dies ist eine wesentliche Schwäche der Mehrschrittverfahren. Die fehlendenFunktionswerte zurückliegender Punkte müssen gegebenenfalls durch Interpolation be-rechnet werden.

• Der Start eines Mehrschrittverfahrens erfordert eine Vorleistung: Weil keine zurück-liegenden Punkte zur Verfügung stehen, müssen hier in der Regel Einschrittverfahreneinspringen. Man kann zum Beispiel mit einem Runge-Kutta-Verfahren einen Satz vonStartwerten erzeugen, möglichst mit kleinerer Schrittweite, mindestens sollten die Feh-ler der Startwerte der Ordnung des verwendeten Mehrschrittverfahrens entsprechen.

7.2 Adams-Moulton- und Adams-Bashforth-Moulton-Verfahren (implizite Verfahren)

Wenn in die Bestimmung des Polynoms, das den Integranden in 7.1 annähern soll, neben denbereits berechneten Funtionswerten fi(xi,yi) auch noch der Wert fi+1(xi+1,yi+1) am Punktxi+1 einbezogen wird, in den der noch unbekannte Wert yi+1 eingeht, spricht man von einemimpliziten Verfahren. Die Herleitung der Formeln ist nicht schwieriger als die Herleitung derAdams-Bashforth-Formeln, aber durchaus auch etwas mühsam. Man erhält zum Beispiel beiEinbeziehung der 4 Punkte xi−2 bis xi+1 die Formel für das so genannte

Adams-Moulton-Verfahren 4. Ordnung:

yi+1 = yi +h

24(9 fi+1 +19 fi−5 fi−1 + fi−2) . (7.4)

Hierfür ist (neben der Startrechnung) sogar noch in jedem einzelnen Schritt eine Vorleis-tung zu erbringen, denn fi+1(xi+1,yi+1) ist natürlich nicht ohne zumindest einen auf ande-rem Wege erzeugten Näherungswert für yi+1 zu berechnen. Es ist das gleiche Problem wie

Page 37: Jürgen Dankert: Numerische Integration von ... · J. Dankert: Numerische Integration von Anfangswertproblemen, Teil 1 (Grundlagen) 3 1 Anfangswertprobleme Bei einer gewöhnlichen

J. Dankert: Numerische Integration von Anfangswertproblemen, Teil 1 (Grundlagen) 37

beim Verfahren von Heun (Abschnitt 5.1). Dort wurde die Strategie des Prädiktor-Korrektor-Verfahrens ausführlich behandelt.

Es bietet sich natürlich an, als Prädiktor ein (in der Ordnung passendes) Adams-Moulton-Verfahren zu verwenden. Man kommt so zum Beispiel zum

Prädiktor-Korrektor-Verfahren 4. Ordnung nach Adams-Bashforth-Moulton:

y(P)i+1 = yi +

h24

(55 fi−59 fi−1 +37 fi−2−9 fi−3) (Prädiktor) ,

yi+1 = yi +h

24(9 fi+1 +19 fi−5 fi−1 + fi−2) .

(7.5)

Wie beim Verfahren von Heun, kann man auch beim Adams-Bashforth-Moulton-Verfahrenmit mehreren Korrektorschritten arbeiten, wobei jeweils der verbesserte Wert für yi+1 ver-wendet wird.

Auch Adams-Bashforth-Moulton-Formelsätze können für beliebige Ordnung erzeugt wer-den.

7.3 Verfahren von Gear

Im Gegensatz zu der Strategie, mit der die Formelsätze für das Adams-Bashforth- und dasAdams-Moulton-Verfahren hergeleitet werden, dem Ersetzen der Funktion f (x,y) durch einPolynom auf der Basis der fi(xi,yi)-Werte, werden die Formeln für das Verfahren von Gearauf der Basis eines Polynoms entwickelt, das die Werte yi(xi) als Stützstellen hat. Die sichergebenden Formelsätze haben deshalb einen etwas anderen Charakter: Es geht neben den(bereits bekannten) yi-Werten nur ein Funktionswert fi+1(xi+1,yi+1) ein, dieser allerdings andem Punkt, für den der Wert yi+1 gerade berechnet werden soll.

Verfahren von Gear,3. Ordnung:

yi+1 =111

(6h fi+1 +18yi−9yi−1 +2yi−2) , (7.6)

4. Ordnung:yi+1 =

125

(12h fi+1 +48yi−36yi−1 +16yi−2−3yi−3) . (7.7)

Die Gear-Verfahren sind also implizite Mehrschrittverfahren, die eine iterative Lösung injedem Schritt erfordern, weil im fi+1 das gerade zu berechnende yi+1 steckt. Dieser Nachteilwird dann in Kauf genommen, wenn die Eigenschaft, dass das Gear-Verfahren auch für dieBehandlung so genannter „steifer Differenzialgleichungen“ (vgl. Abschnitt 8) stabil arbeitet,genutzt werden soll.

Page 38: Jürgen Dankert: Numerische Integration von ... · J. Dankert: Numerische Integration von Anfangswertproblemen, Teil 1 (Grundlagen) 3 1 Anfangswertprobleme Bei einer gewöhnlichen

J. Dankert: Numerische Integration von Anfangswertproblemen, Teil 1 (Grundlagen) 38

8 Verfahrenswahl

Es gibt unendlich viele Verfahren zur numerischen Integration von Anfangswertproblemen(einfach deshalb, weil sowohl Einschritt- als auch Mehrschrittverfahren beliebiger Ordnungkreiert werden können). Dem Praktiker ist sicher schon die in diesem Skript vorgestellteMenge zu groß.

Aber es ist leider so: Es gibt weder das ideale Verfahren noch eindeutige Empfehlungen,welches Verfahren man für welche Probleme nutzen sollte. Bezeichnend für dieses Dilem-ma ist das recht große Verfahrensangebot, das Matlab für die numerische Integration vonAnfanswertproblemen bereitstellt, andererseits mit Empfehlungen sehr vage bleibt (Beispielaus Matlab-Help: „When to use ode45? Most of the time.“).

Der Grund für diesen unbefriedigenden Zustand ist nicht etwa die Vernachlässigung derForschung auf diesem wichtigen und schwierigen Gebiet, im Gegenteil. Die Anzahl der zudiesem Thema veröffentlichen Bücher und Fachartikel ist nicht mehr zu überblicken, dieSuche im Internet liefert Riesenmengen an einschlägigen Seiten. Die Untersuchungen derMathematiker konzentrieren sich auf die beiden wichtigen Fragen: „Welches Verfahren istkonstistent (mit welcher Ordnung p), arbeitet stabil (in welchem Bereich) und führt damit zuKonvergenz (mit welcher Ordnung)?“ und „Für welche Differenzialgleichungen ist welchesVerfahren besonders geeignet (bzw. ungeeignet)?“.

Die Ergebnisse der aufwendigen und schwierigen Untersuchungen zur ersten Frage darf derIngenieur als „ausgewertet und in die Verfahrensauswahl der gängigen Softwareprodukteeingeflossen“ ansehen. Auch die Auswahl der in diesem Skript vorgestellten Verfahren wur-de von diesen Erkenntnissen bestimmt.

Die Beantwortung der ebenso schwierigen zweiten Frage führt zwangsläufig auf den Be-griff der „steifen Differenzialgleichung“. Und damit ergibt sich das nächste große Dilemma:Einerseits lässt sich ziemlich klar nachweisen, dass einige Lösungsverfahren für steife Dif-ferenzialgleichungen ungeeignet sind (und es lassen sich Empfehlungen für besser geeigneteVerfahren formulieren), andererseits ist die Beantwortung der Frage, ob eine Differenzial-gleichung diese Eigenschaft besitzt oder nicht, ausgesprochen schwierig. Zwei Aussagen,die beliebig durch weitere mit ähnlichem Tenor ergänzt werden können, verdeutlichen dasProblem:

H. R. Schwarz schreibt in seinem Klassiker „Numerische Mathematik“ (Verlag B. G. Teub-ner 1998): „Das Problem der Steifheit existiert ausgeprägt bei nichtlinearen Differenzialglei-chungssystemen und wird vermittels einer Linearisierung zu erfassen versucht, indem mandas lokale Verhalten der exakten Lösung y(x) in einer kleinen Umgebung von xi studiert un-ter der Anfangsbedingung y(xi) = yi, wo yi die berechnete Näherungslösung an der Stelle xibedeutet.

M. Eiermann schreibt in seinem Skript „Numerik gewöhnlicher Differenzialgleichungen“(zu finden unter http://www.mathe.tu-freiberg.de/ eiermann/Vorlesungen/ODE, sehr zu emp-fehlen): „Es gibt keine zufriedenstellende Definition der Bauart ’eine Differenzialgleichungheißt steif, wenn ...’“.

Page 39: Jürgen Dankert: Numerische Integration von ... · J. Dankert: Numerische Integration von Anfangswertproblemen, Teil 1 (Grundlagen) 3 1 Anfangswertprobleme Bei einer gewöhnlichen

J. Dankert: Numerische Integration von Anfangswertproblemen, Teil 1 (Grundlagen) 39

Auch wenn das, was Schwarz als „vermittels einer Linearisierung zu erfassen versucht“ be-schreibt, durchaus gelingt, letztendlich kommt man zu einem quantitativ anzugebenden Wertfür den Begriff „steif“, für den Anwender ist es kaum von Nutzen, zumal in der Bemerkungvon Schwarz auch die Aussage steckt, dass der Begriff nicht für eine Differenzialgleichungallgemein gelten muss, sondern sich auf bestimmte Bereiche der Lösung beschränken kann.

Die typischen Anfangswertprobleme der Technischen Mechanik sind nichtlineare Anfangs-wertprobleme. Es bleibt schließlich als Empfehlung für den Praktiker nur das übrig, wasenttäuschend klingen mag:

• Man beginne mit einem eingebetteten Einschrittverfahren mit automatischer Schrittwei-tensteuerung (entspricht auch der Empfehlung der Matlab-Hilfe: ode45).

• Es sollte stets (mindestens) eine weitere Rechnung folgen, in der man eine höhere Ge-nauigkeit fordert.

• Erst bei unbefriedigender Konvergenz der Rechnungen mit dem Einschrittverfahrensollte man auf ein Mehrschrittverfahren ausweichen, wobei man wegen der dann zuvermutenden „Steifheit“ ein für diese Eigenschaft geeignetes Verfahren wählen sollte(zum Beispiel das Gear-Verfahren, Abschnitt 7.3).

• Eine Kontrollrechnung mit einem anderen Verfahren ist in jedem Fall sinnvoll. Um mög-lichst auch eine andere Strategie zu realisieren, kann dies durchaus ein Verfahren mitkonstanter Schrittweite sein: Das klassische Runge-Kutta-Verfahren 4. Ordnung ist da-für immer eine gute Empfehlung.

Dringend zu empfehlen ist, mit einer einschlägigen Software zunächst einige Rechnungenmit Problemen zu starten, deren Ergebnisse bekannt sind. Die Praxis im Umgang mit denVerfahren ist durch keine theoretische Untersuchung zu ersetzen. Hilfe in dieser Hinsicht fin-det man im zweiten Teil dieses Skripts "Numerische Integration von Anfangswertproblemen- Teil 2: Praxis" und in zahlreichen Beispielen, die man über die Internetseite "NumerischeIntegration von Anfangswertproblemen" erreicht.