Numerische Lösung von Anfangswertproblemen. Anwendung des Runge-Kutta-Verfahrens


Project Report, 2007

24 Pages, Grade: 1,3


Excerpt


1 Einleitung
In der vorliegenden Arbeit betrachten wir Anfangswertprobleme (AWP) der Form
y = f (t, y)
mit
y(t) = y
(1)
Hierbei heiÿt die stetige Abbildung
f : I × U R
n
(2)
ein zeitabhängiges Vektorfeld, bzw. ein dynamisches System. Es ist I = [a, b] R ein
Intervall, t I, sowie y U mit oenem U R
n
. Das Problem besteht also in dem
Aunden einer dierenzierbaren Kurve y : I U mit y(t) = y, so dass für alle t I gilt:
y (t) = f (t, y(t))
. Diese wird als Lösung des Anfangswertproblems bezeichnet.
Folgende Voraussetzungen werden weiterhin im Weiteren der Vereinfachung halber zu-
sätzlich gestellt:
·
es existiert eine stetige Ableitung nach der Ortskoordinate f
y
: I × U R
n×n
· I = [0, T ]
mit positivem T R
· t = 0
Wir setzen uns mit numerischen und damit approximativ bestimmten Lösungen eines AWP
auseinander. Darunter versteht man Werte y
i
U
mit i = 0, . . . , N N, welche Funkti-
onswerte der expliziten Lösung y(t
i
)
approximieren (hierbei ist t
i
I
für i = 0, . . . , N und
t
0
= 0
).
Bei Verfahren zur Bestimmung dieser Näherungen unterscheidet man zwischen Ein- und
Mehrschrittverfahren. Bei den ersteren wird von den alten Näherungswerten lediglich y
i
verwendet, beim zweiten Typus gehen auch ältere Werte y
i-1
, y
i-2
, etc. mit in die Be-
rechnung von y
i+1
ein. Ein weiteres Unterscheidungskriterium ist, ob zur Bestimmung der
jeweils nächsten Näherung y
i+1
ein nichtlineares Gleichungssystem (etwa mittels Newton-
verfahren) zu lösen ist (implizite Verfahren), oder ob dieser Wert unmittelbar bestimmt
wird (explizite Verfahren). Wir wollen uns nun auf eine spezielle Klasse von Einschrittver-
fahren, auf die sogenannten Runge-Kutta-Verfahren beschränken. Hierbei wird der jeweils
nächste Wert y
i+1
deniert durch:
y
i+1
= y
i
+ h
s
j=1
b
j
f (t
i
+ c
j
h, k
j
)
(3)
mit Zwischenwerten
k
j
= y
i
+ h
s
l=1
a
jl
f (t
i
+ c
l
h, k
l
)
j = 1, . . . , s
(4)
wobei h = t
i+1
- t
i
als Schrittweite bezeichnet wird. Ein Runge-Kutta-Verfahren wird nun
durch die sogenannte Stufenzahl s, sowie durch die Parameter c
j
, b
j
und a
jl
charakteri-
siert. Diese werden üblicherweise in Form eines Butcher-Schemas oder Butcher-Tableaus
aufgeschrieben:
c
1
a
11
a
12
. . . a
1s
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
c
s
a
s1
a
s2
. . . a
ss
b
1
b
2
. . . b
s
3

oder auch kurz
c
A
b
T
Für den Fall a
jl
= 0
für alle j l spricht man von einem expliziten Runge-Kutta-
Verfahren, da hierbei die Werte k
j
(mit k
1
= y
i
angefangen) sukzessive direkt ausgerechnet
werden können:
k
j
= y
i
+ h
j-1
l=1
a
jl
f (t
i
+ c
l
h, k
l
)
j = 1, . . . , s
(5)
Von Interesse wird für uns im Folgenden das spezielle 6-stuge Runge-Kutta-Verfahren
sein:
0
1
4
1
4
1
4
1
8
1
8
1
2
0
0
1
2
3
4
3
16
-
3
8
3
8
9
16
1
-
3
7
8
7
6
7
-
12
7
8
7
7
90
0
16
45
2
15
16
45
7
90
Um das approximative Verhalten einer numerischen Lösung (also der Werte y
0
, y
1
, . . .
)
gegenüber einer genauen Lösung y des AWP zu untersuchen, sind die Konsistenzordnung,
die Konvergenzordnung, sowie die Stabilität von einschneidender Bedeutung.
1.1 Konsistenzordnung
Zunächst die folgende grundlegende Denition:
Denition 1 Ein Einschrittverfahren hat Konsistenzordnung q N, falls für jede Lösung
y : I U
eines Anfangswertproblems y = f(t, y) mit y(0) = y
0
und f C
q
(I × U )
eine
Konstante C R und ein h
0
> 0
existiert mit:
t
i
, t
i
+ h I , h [0, h
0
] und y
i
= y(t
i
)
=
|y
i+1
- y(t
i
+ h)| Ch
q+1
Das kann man sich folgendermaÿen vorstellen: Stimmen die Verfahrensvorschrift für y
i+1
und die Taylorentwicklung von y(t
i
+ h) = y(t
i
) + hy (t
i
) + . . . +
h
q
q!
y
(q)
(t
i
) + O(h
q+1
)
bis
zur q-ten Ordnung überein, dann ist das Verfahren konsistent zur Ordnung q.
Man gewinnt systematisch Ausdrücke für Bedingungen durch Aufstellen von Butcher-
Bäumen, auf deren Darstellung aufgrund von Übersichtlichkeitsgründen verzichtet wird.
Vielmehr werden wir nur auf für uns wichtige Ergebnisse hinweisen:
Satz 1 Hat man ein s-stuges Runge-Kutta-Verfahren (A, b, c) gegeben, so hat dieses min-
destens die Ordnung 5, falls folgende Gleichungen erfüllt sind:
s
i=1
b
i
=
1
s
i=1
b
i
c
i
=
1
2
s
i=1
b
i
c
2
i
=
1
3
4

1i,js
b
i
a
ij
c
j
=
1
6
s
i=1
b
i
c
3
i
=
1
4
1i,js
b
i
c
i
a
ij
c
j
=
1
8
1i,js
b
i
a
ij
c
2
j
=
1
12
1i,j,ks
b
i
a
ij
a
jk
c
k
=
1
24
s
i=1
b
i
c
4
i
=
1
5
1i,js
b
i
c
2
i
a
ij
c
j
=
1
10
1i,js
b
i
c
i
a
ij
c
2
j
=
1
15
1i,j,ks
b
i
c
i
a
ij
a
jk
c
k
=
1
30
1i,j,ks
b
i
a
ij
c
j
a
ik
c
k
=
1
20
1i,js
b
i
a
ij
c
3
j
=
1
20
1i,j,ks
b
i
a
ij
c
j
a
jk
c
k
=
1
40
1i,j,ks
b
i
a
ij
a
jk
c
2
k
=
1
60
1i,j,k,ls
b
i
a
ij
a
jk
a
kl
c
l
=
1
120
[Bu87, S.170f]
Auÿerdem hat man auch eine obere Schranke:
Satz 2 Es gibt kein s-stuges explizites Runge-Kutta-Verfahren der Ordnung s für s 5.
Beweis: [Bu87, S.189f]
Es gilt des Weiteren die folgende Verallgemeinerung:
Lemma 1 Alle Runge-Kutta-Verfahren der Form
0
u
u
1
4
1
4
-
1
32u
1
32u
1
2
(
1
2
-
1
8u
)(1 - 2v)
1
8u
(1 - 2v)
v
3
4
3
16
(
1-v
u
- 1)
-
3
8
(1 - 2v) -
3
16u
(1 - v)
3
4
(1 - v)
9
16
1
11-12v
7
-
7-6v
14u
7-6v
14u
12v
7
-
12
7
8
7
7
90
0
16
45
2
15
16
45
7
90
5

mit u R\{0}, v R besitzen Konsistenzordnung 5.
Beweis: [Bu87, S.198f]
Für den Fall u =
1
4
und v =
1
2
ergibt sich das von uns betrachtete Verfahren, so dass
also Konsistenzordnung q = 5 vorliegt.
1.2 Stabilität
In der Numerik sind vor allem solche Verfahren von Interesse, die numerische Lösungen
liefern, welche möglichst viele Eigenschaften der exakten Lösung besitzen. Als eine wesent-
liche Eigenschaft sollte es möglichst gut das Verhalten der eindimensionalen Testgleichung:
y = y,
y(0) = 1,
C
(6)
mit der expliziten Lösung y(t) = e
t
widerspiegeln. Für diese gilt:
·
Re > 0:
|y(t)|
für t
·
Re < 0:
|y(t)| 0
für t
·
Re = 0:
|y(t)| = 1
für alle t R
>0
Denition 2 Es sei 1 = (1, . . . , 1)
T
R
s
und C = C {}. Die zu einem Runge-
Kutta-Verfahren (A, b, c) gehörige Funktion R : C C, R() = 1 + b
t
(I - A)
-1
1
heiÿt
Stabilitätsfunktion.
Mit S = { C||R()| 1} wird das dazugehörige Stabilitätsgebiet bezeichnet.
Ein Verfahren heiÿt A-stabil, falls die numerischen Näherungslösungen {y
i
}
der Testglei-
chung y = y für ein beliebiges C
-
= { C|Re 0} mit beliebiger, aber fester
Schrittweite h > 0 kontraktiv sind, d.h. |y
i+1
| |y
i
|
für alle i.
Es gilt nun die folgende Charakterisierung:
Satz 3 Ein Verfahren ist genau dann A-stabil, wenn |R()| 1 für alle C
-
.
Beweis: [HB02, S.583]
Ein Verfahren ist also A-stabil gdw. C
-
S erfüllt ist. Dies ist leider für unseren Fall
nicht erfüllt, denn es gilt:
Satz 4 Das Stabilitätsgebiet eines expliziten Runge-Kutta-Verfahrens ist immer beschränkt.
Beweis: [HB02, S.584]
Es ist aber immer noch die folgende Aussage richtig:
Satz 5 Gegeben sei ein Runge-Kutta-Verfahren, dessen Stabilitätsbereich S den Halbkreis
B
-
:= { C
-
| || }
enthält. Dann sind bei jedem C
-
die Runge-Kutta-
Näherungen für die Testgleichung y = y kontraktiv, sofern eine Schrittweite h
||
gewählt wird.
Beweis: [HB02, S.585]
Man kann also die Stabilität eines expliziten Runge-Kutta-Verfahrens auf Kosten einer
sehr kleinen Schrittweite h > 0 retten. Untersucht man aber steife DGL's mit || - sehr
groÿ, so können keine brauchbaren Lösungen erwartet werden, denn für |h| 0 spielen
Rundungsfehler eine immer gröÿere Rolle.
6

1.3 Konvergenzordnung
Denition 3 Für ein Runge-Kutta-Verfahren (A, b, c) mit Schrittweite h ist der globale
Diskretisierungsfehler als
e
h
(t
i
) = y(t
i
) - y
i
für alle ih = t
i
[0, T ]
deniert. Das Verfahren heiÿt hierbei konvergent, falls
lim
h0
max
t
i
||e
h
(t
i
)|| = 0
gilt und es heiÿt konvergent von der Ordnung p, falls
max
t
i
||e
h
(t
i
)|| = O(h
p
)
mit maximal gewähltem p N, gilt.
Während also die Konsistenz nur eine lokale Eigenschaft ist, bietet die Konvergenz eine
globale Aussage zur Güte des Verfahrens. Für die Konvergenzordnung ist nun der folgende
Satz von Bedeutung:
Satz 6 Sei I = [0, T ], und f C
q+1
(I ×R
n
)
mit in I×R
n
beschränkter partieller Ableitung
f
y
gegeben und es habe das Runge-Kutta-Verfahren die Konsistenzordnung q. Dann existiert
ein h
0
> 0
, so dass bei einer (konstanten) Schrittweite h (0, h
0
)
für alle t
i
= ih I
gilt:
||y(t
i
) - y
i
|| Ch
q
Die Konstante C ist hierbei von i und h unabhängig, solange t
i
[0, T ]
.
Beweis: [HB02, S.575-577]
Liegt also Konsistenzordnung q für ein Runge-Kutta-Verfahren vor und stellt man eine
(recht starke) Zusatzeigenschaft an f, so hat man bei konstanter Schrittweite h bereits
Konvergenz der Ordnung q. Für unsere Betrachtungen ist die obige Aussage auch vollkom-
men ausreichend: Das Verfahren wird nur für konstante Schrittweiten implementiert und
bei den numerischen Tests zur Bestimmung der Konvergenzordnung werden wir uns auf
lineare autonome Probleme y = Ay mit y(0) = y
0
beschränken, da man in jedem Fall als
Ableitung eine (konstante, beschränkte) Matrix hat und die explizite Lösung y(t) = e
At
y
0
kennt.
Achtung: Bei der unten aufgeführten (nichtlinearen) Modellgleichung liegt keine Beschränkt-
heit der Ableitungen vor, so dass man i.A. keine Konvergenz gegen die richtige Lösung a
priori erwarten darf.
2 Implementierung
2.1 Das Package RK
Das Package RK wird beschrieben durch die drei Java-Dateien DGL.java, RungeKutta.java
und DGLBibo.java. Bei DGL handelt es sich um ein Interface:
public interface DGL
{
public double [ ] f ( double t , double [ ] y ) ;
public int getDim ( ) ;
public double [ ] getparameters ( ) ;
public double [ ] exakteLsg ( double [ ] y0 , double t ) ;
}
7

Dieses dient dem Zweck eine Dierentialgleichung als algorithmisches Objekt behandeln zu
können. Hierbei beschreibt f(..) die eigentliche Dierentialgleichung und getDim() gibt
die Anzahl der Gleichungen in der DGL (also die Dimension derselbigen) an. Die Methode
getparameters() wird benutzt um eventuell vorhandene Parameter (wie etwa , , aus
der DGL in der Aufgabe) auszugeben und gegebenenfalls zu verändern. Durch Ausgabe
eines Arrays der Lange 0 durch getparameters() wird das Nichtvorhandensein variabler
Parameter angezeigt. Die Methode exakteLsg(..) wird benutzt um bei Eingabe des An-
fangswertes bei 0, sowie des gewünschten Zeitpunktes den Wert der exakten Lösung des
AWP auszugeben. Durch Ausgabe von null durch exakteLsg(..) wird angezeigt, dass
die exakte Lösung nicht deniert wurde.
Die Klasse RungeKutta dient dem Zweck das vorgegebene sechsstuge Runge-Kutta-
Verfahren zu implementieren. Es wird als Bibliotheksprogramm von dem späteren Haupt-
programm DGLTool verwendet.
public class RungeKutta
{
private static int s =6;
// Anzahl der Stufen des Runge-Kutta-Verfahrens
private static double [ ] b = . . ;
private static double [ ] c = . . ;
private static double [ ] [ ] a = . . ;
public double h ;
// d i e S c h r i t t w e i t e
public double l ;
// l i n k e I n t e r v a l l g r e n z e
public double r ;
// r e c h t e I n t e r v a l l g r e n z e
public DGL dgl ;
// d i e zu l oes en de DGL
public double [ ] y0 ;
// gewuenschter Funktionswert b e i l
private int n ;
// Anzahl der Gleichungen des DGLS
private int N;
// Anzahl der Zwischenpunkte
public double [ ] [ ] l o e s e ( ) { . . }
private double [ ] s c h r i t t ( double [ ] Z , double t ) { . . }
// Addition zweier Vektoren
private static double [ ] add ( double [ ] x , double [ ] y ) { . . }
// s k a l a r e M u l t i p l i k a t i o n
private static double [ ] mult ( double t , double [ ] x ) { . . }
}
Hierbei beschreiben b, c und a das Butcher-Tableau des 6-stugen Runge-Kutta-Verfahrens
aus der Einleitung (b ist die unterste Zeile, c die Spalte links und a die Matrix rechts/o-
ben).
Die Klasse erlaubt es die zu lösende DGL (dgl), die Schrittweite (h), die Intervallgrenzen
(l und r), sowie den gewünschten Wert bei l, also den Anfangswert (y0) wie gewünscht
einzustellen und den Algorithmus durch loese() auszuführen. Es wird anschlieÿend das Er-
gebnis in Form eines zweidimensionalen Arrays ausgegeben, wobei die Komponente [i][j]
desselbigen für j= 0 den i+1-ten Zeitpunkt (der erste ist immer l) und ansonsten die j-te
Vektorkomponente des Ergebnisvektors (der approximativen Lösung) zum i+1-ten Zeit-
punkt angibt. Die Anzahl der Zeitpunkte wird in Abhängigkeit von der Schrittweite intern
ausgerechnet (und in N abgelegt). Der letzte Zeitpunkt ist immer r, gegebenenfalls ist also
der Abstand zwischen dem letzten und dem vorletzten Zeitpunkt kleiner als h.
8
Excerpt out of 24 pages

Details

Title
Numerische Lösung von Anfangswertproblemen. Anwendung des Runge-Kutta-Verfahrens
College
Humboldt-University of Berlin
Course
Numerische Mathematik
Grade
1,3
Authors
Year
2007
Pages
24
Catalog Number
V340331
ISBN (eBook)
9783668301436
ISBN (Book)
9783668301443
File size
1254 KB
Language
German
Keywords
Numerik, Numerische Lösung, Numerische Mathematik, Anfangswertproblem, Runge-Kutta-Verfahren, Einschrittverfahren, AWP, Konsistenzordnung, Konvergenzordnung, Stabilität, Steifheit, stationäre Punkte, Langzeitverhalten
Quote paper
Martin Büttner (Author)Alexander Fromm (Author), 2007, Numerische Lösung von Anfangswertproblemen. Anwendung des Runge-Kutta-Verfahrens, Munich, GRIN Verlag, https://www.grin.com/document/340331

Comments

  • No comments yet.
Look inside the ebook
Title: Numerische Lösung von Anfangswertproblemen. Anwendung des Runge-Kutta-Verfahrens



Upload papers

Your term paper / thesis:

- Publication as eBook and book
- High royalties for the sales
- Completely free - with ISBN
- It only takes five minutes
- Every paper finds readers

Publish now - it's free