Sunteți pe pagina 1din 160

Rezolvarea numerică a ecuaţiilor diferenţiale

Radu T. Trı̂mbiţaş
ii
Cuprins

1 Primele idei şi metode cu un pas 1


1.1 Introducere . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Soluţii analitice şi numerice . . . . . . . . . . . . . . . . . . . . 1
1.3 Un prim exemplu . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.4 Metoda seriilor Taylor . . . . . . . . . . . . . . . . . . . . . . 6
1.5 Metode Runge-Kutta . . . . . . . . . . . . . . . . . . . . . . . 9
1.6 Ecuaţii de ordinul al doilea şi de ordin superior . . . . . . . . . 12
1.7 Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

2 Consideraţii asupra erorilor 17


2.1 Introducere . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.2 Definiţii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.3 Eroarea locală de trunchiere pentru metoda seriilor Taylor . . . . 19
2.4 Eroarea locală de trunchiere pentru metodele Runge-Kutta . . . 21
2.5 Eroarea locală şi eroarea globală . . . . . . . . . . . . . . . . . 27
2.6 Eroarea locală şi LTE . . . . . . . . . . . . . . . . . . . . . . . 29
2.7 Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

3 Metode Runge-Kutta 33
3.1 Introducere . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.2 Criterii de eroare . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.3 O formulă de ordinul al treilea . . . . . . . . . . . . . . . . . . 36
3.4 Formule de ordinul al patrulea . . . . . . . . . . . . . . . . . . 39
3.5 Formule de ordinul al cincilea şi mai mare . . . . . . . . . . . . 44
3.6 Motivaţia pentru formule de ordin ı̂nalt . . . . . . . . . . . . . . 45
3.7 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.8 Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

iii
iv CUPRINS

4 Controlul pasului 55
4.1 Introducere . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
4.2 Predicţia lungimii pasului . . . . . . . . . . . . . . . . . . . . . 56
4.3 Estimarea erorii . . . . . . . . . . . . . . . . . . . . . . . . . . 57
4.4 Extrapolare locală . . . . . . . . . . . . . . . . . . . . . . . . . 60
4.5 Estimarea erorii ı̂n metodele Runge-Kutta . . . . . . . . . . . . 64
4.6 Alte perechi Runge-Kutta . . . . . . . . . . . . . . . . . . . . . 66
4.7 Aplicaţii ale includerii RK . . . . . . . . . . . . . . . . . . . . 69
4.8 Exemple de implementare . . . . . . . . . . . . . . . . . . . . 75
4.9 Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

5 Ieşiri dense 83
5.1 Introducere . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
5.2 Construcţia extensiilor continue . . . . . . . . . . . . . . . . . 84
5.3 Alegerea parametrilor liberi . . . . . . . . . . . . . . . . . . . . 88
5.4 Formule de ordin ı̂nalt . . . . . . . . . . . . . . . . . . . . . . 92
5.5 Aspecte de implementare . . . . . . . . . . . . . . . . . . . . . 95
5.6 Interpolare inversă . . . . . . . . . . . . . . . . . . . . . . . . 97
5.7 Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98

6 Stabilitate şi stiffness 101


6.1 Introducere . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
6.2 Stabilitate absolută . . . . . . . . . . . . . . . . . . . . . . . . 103
6.3 Stabilitatea neliniară . . . . . . . . . . . . . . . . . . . . . . . 107
6.4 Stiffness . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
6.5 Îmbunătăţirea stabilităţii metodelor RK . . . . . . . . . . . . . 111
6.6 Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115

7 Metode multipas 119


7.1 Introducere . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
7.2 Procese multipas liniare . . . . . . . . . . . . . . . . . . . . . . 119
7.3 Alegerea parametrilor . . . . . . . . . . . . . . . . . . . . . . . 121
7.4 O metodă implicită de ordinul al treilea . . . . . . . . . . . . . 122
7.5 O metodă explicită de ordinul al treilea . . . . . . . . . . . . . . 124
7.6 Scheme predictor-corector . . . . . . . . . . . . . . . . . . . . 125
7.7 Estimarea erorii . . . . . . . . . . . . . . . . . . . . . . . . . . 127
7.8 Implementarea metodelor predictor-corector . . . . . . . . . . . 129
7.9 Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
CUPRINS v

8 Metode multipas obţinute prin cuadraturi 133


8.1 Introducere . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
8.2 Cuadraturi aplicate ecuaţiilor diferenţiale . . . . . . . . . . . . 134
8.3 Formulele Adams-Bashforth . . . . . . . . . . . . . . . . . . . 135
8.4 Formulele Adams-Moulton . . . . . . . . . . . . . . . . . . . . 138
8.5 Alte formule multipas . . . . . . . . . . . . . . . . . . . . . . . 140
8.6 Metode cu pas variabil . . . . . . . . . . . . . . . . . . . . . . 141
8.7 Rezultate numerice . . . . . . . . . . . . . . . . . . . . . . . . 144
8.8 Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144

9 Stabilitatea metodelor cu mai mulţi paşi 149


9.1 Introducere . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
9.2 Câteva experimente numerice . . . . . . . . . . . . . . . . . . . 150

Bibliografie 153

Indice 154
vi CUPRINS
Capitolul 1

Primele idei şi metode cu un pas

1.1 Introducere
Primele tipuri de ecuaţii diferenţiale ordinare pe care le vom considera sunt
clasificate ca procese cu un singur pas. Cele mai cunoscute metode cu un pas
sunt cele bazate pe serii Taylor şi formulele Runge-Kutta. În acest capitol vor fi
introduse ambele tipuri de metode, ı̂mpreună cu concepte de aplicabilitate mai
largă. Ideea de calcul pas cu pas şi cea de reducere a ordinului este fundamentală
pentru analiza numerică a ecuaţiilor diferenţiale. Importanţa dezvoltării ı̂n serii
Taylor merge dincolo de aplicarea ei directă la metode numerice şi va deveni din
ce ı̂n ce mai clară, pe măsură ce subiectul va fi dezvoltat.

1.2 Soluţii analitice şi numerice


O problemă cu valori iniţiale sau problemă Cauchy pentru o ecuaţie diferen-
ţială ordinară (ODE) se poate scrie sub forma

y 0 (x) = f (x, y(x)), y(a) = y0 , x ∈ [a, b], (1.1)

unde ’ indică derivarea ı̂n raport cu x, iar y este un vector k-dimensional (y ∈


Rk ). Soluţia adevărată, care uneori se poate obţine analitic, se exprimă sub forma

y = y(x), şi satisface (a, y0 ).

De exemplu, ecuaţia liniară unidimensională y’=x+y, y(0)=1, care se rezolvă


uşor prin metoda variaţiei constantei, are soluţia

y = 2ex − x − 1.

1
2 Primele idei şi metode cu un pas

De notat că valori iniţiale diferite conduc la soluţii y(x) diferite. Astfel, aceeaşi
ecuţie diferenţială ca mai sus, dar cu condiţia y(0) = 0, are soluţia y = ex −x−1.
O soluţie numerică a unui sistem de ecuţii de ecuţii diferenţiale ordinare
de tip (1.1) constă dintr-o mulţime de valori {yn }, corespunzând unei mulţimi
discrete de valori ale lui x,

xn , n = 0, 1, 2, . . . , N.

Aceste valori y se obţin de obicei ı̂ntr-o manieră pas cu pas, adică y1 este urmat
de y2 , apoi de y3 ş.a.m.d. Evident, se intenţionează ca aceste valori să fie cât mai
apropiate de soluţia adevărată, adică

yn ' y(xn ),

cu xn+1 = xn + hn , n = 0, 1, 2, . . . , N − 1; x0 = a, xN = b, iar hn se
numeşte lungimea pasului. În practică, lungimea pasului este variabilă, dar,
pentru simplitate, vom considera de multe ori că este constantă.

1.3 Un prim exemplu


Se consideră ecuaţia de ordinul I cu variabile separabile

y 0 = −2xy 2 . (1.2)

Soluţia ei generală este


1
y(x) = ,
x2 + C
unde C este o constantă arbitrară ce urmează a fi determinată din condiţiile
iniţiale. Punând y(0) = 1 se obţine C = 1. Această ecuaţie simplă va fi uti-
lizată pentru a ilustra metodele numerice bazate pe dezvoltarea Taylor. De notat
că aplicarea metodelor numerice la probleme care pot fi rezolvate prin metode
analitice este un mod util de a câştiga experienţă cu aceste metode şi de a căpăta
ı̂ncredere ı̂n ele. Pentru a evalua orice nouă schemă de calcul trebuie trebuie să ne
convingem de comportarea ei când se aplică unei probleme cu soluţia cunoscută.
Sţiind că funcţia y este de suficient de multe ori derivabilă, y(x + h) se poate
dezvolta sub forma unei serii Taylor

h2 00 hp
y(x + h) = y(x) + hy 0 (x) + y (x) + · · · + y p (x) + . . . , (1.3)
2! p!
unde y p (x) reprezintă derivata de ordinul p a lui y ı̂n raport cu x. Dacă se dă o
valoare iniţială y(x0 ) şi se poate obţine expresia derivatelor y 0 , y 00 , . . . ı̂n funcţie
1.3. Un prim exemplu 3

de x şi y, atunci acestea pot fi ı̂nlocuite ı̂n seria Taylor (1.3) pentru a calcula
y(x0 + h) pentru un h dat. De asemenea, dacă h este suficient de mic, seria
converge repede, fără a fi necesar să calculăm un număr mare de termeni, deci
nici derivate. Să luăm x0 = 0, y(0) = 1, h = 0.2 şi să presupunem că ter-
menul de ordinul 3, ce conţine pe h3 şi cei de ordin mai mare sunt neglijabili.
Prima derivată a lui y este specificată de ecuaţia diferenţială şi deci va mai trebui
determinat doar y 00 . Observând că y = y(x), diferenţierea ne conduce la

y 00 = −2y 2 − 4xyy 0 .

Înlocuirea lui y 0 cu valoarea dată de (1.2) ne dă

y 00 = 2y 2 (4x2 y − 1),

dar acest lucru nu este esenţial deoarece calculul recursiv, pornind de la y 0 , va fi


de regulă mai complicat pentru derivatele de ordin superior. Astfel, ı̂n punctul
iniţial (0,1), se obţin valorile y 0 = 0 şi y 00 = −2. Înlocuid x = 0 ı̂n (1.3) se
obţine acum

y(0.2) ' y(0) + 0.2y 0 (0) + 0.02y 00 (0)


= 1 + 0 − 0.04
= 0.96 =: y1.

Valoarea lui y(0.4) se poate acum estima repetând procedura de mai sus cu punc-
tul iniţial (0.2, 0.96). Aceasta necesită reevaluarea celor două derivate după cum
urmează:

y 0 (0.2) = −2 · 0.2 · 0.962


= −0.36864
00
y (0.2) = −1.56008.

Înlocuind acum x = 0.2 ı̂n (1.3) se obţine

0.22
y(0.2 + 0.2) ' 0.96 + 0.2 · (−0.36864) + · (−1.56008)
2
= 0.8551 =: y2.

Am lucrat cu 4 cifre zecimale semnificative. De remarcat că, ı̂n acest stadiu,


valorile lui y 0 şi y 00 utilizate la al doilea pas sunt aproximative, deoarece ele se
bazează pe aproximarea soluţiei y ı̂n x = 0.2.
4 Primele idei şi metode cu un pas

Sol. exactă Sol. numerică Eroarea


n xn y(xn ) = x21+1 yn ε = yn − y(xn )
n
0 0.0 1.0000 1.0000 0.0000
1 0.2 0.9615 0.9600 -0.0015
2 0.4 0.8621 0.8551 -0.0070
3 0.6 0.7353 0.7248 -0.0104

Tabela 1.1: Comparaţie ı̂ntre soluţia exactă şi cea numerică

Se poate continua cu estimarea lui y(0.6) la al treilia pas, ş.a.m.d. Această


procedură pas cu pas este o caracteristică a tuturor schemelor numerice pentru
rezolvarea ecuaţiilor diferenţiale ordinare.
Evident, nu este posibil să determinăm precizia acestor rezultate, dar, ı̂n acest
caz simplu, forma analitică a soluţiei se cunoaşte. Cu ajutorul ei s-a construit
tabela 1.1. Se poate vedea că eroarea ε2 după doi paşi este mult mai mare decât
după primul pas, ε1 . Aceasta se ı̂ntâmplă al doilea pas se aplică unei probleme
cu valori initiale diferite:

Y 0 = −2xY 2 , Y (0.2) = 0.96.

Soluţia acestei ecuaţii este diferită de cea a problemei originale (1.2). Aplicând
noua valoare soluţiei generale se obţine

Y (x) = 1/(X 2 + 1.0017),

care ne dă Y (0.4) = 0.8608. Prin urmare, eroarea la al doilea pas, obţinută prin
compararea soluţiei numerice cu această nouă soluţie exactă este un pic mai mică
-0.0057. Această eroare adevărată la un pas particular se numeşte eroare locală
a procesului numeric. La fiecare pas se poate defini o soluţie adevărată locală
şi deci o eroare locală. Comparaţia dintre soluţia numerică şi soluţia problemei
originale ne conduce la eroarea globală. Dacă, ı̂n cazul general, soluţia locală
adevărată un (x), numită şi soluţie de referinţă, satisface

u0n = f (x, yn ), un (xn ) = yn n = 1, 2, . . . , N,

atunci eroarea locală şi cea globală ı̂n x = xn sunt date de

en = yn − un−1 (xn )
εn = yn − y(xn ).

Aceste fenomene locale şi globale sunt ilustrate ı̂n figura 1.1, ı̂n care pe acelaşi
grafic apar şi soluţia exactă şi câteva soluţii locale reale ale problemei.
1.3. Un prim exemplu 5

Figura 1.1: Soluţie exactă şi de referinţă

Un alt mod de a estima y(0.4) utilizând (1.3) ar fi să substituim x = 0,


h = 0.4, adică, să mărim lungimea pasului de două ori. În acest mod se va
ı̂nlătura eroarea legată de soluţia locală reală la la doilea pas şi de asemenea
valoarea originală a derivatei ı̂n x = 0 poate fi reutilizată. Cu această strategie,
valoarea obţinută este 0.84, care are o eroare de -0.0221, de peste trei ori mai
mare decât ı̂n cazul calculului cu doi paşi. Este evident că pentru a păstra precizia
pentru valori mai mari ale lui h este nevoie de mai mulţi termeni din Seria Taylor.
Motivaţia pentru o abordare pas cu pas este clară.
Efectuând ı̂ncă două derivări pentru exemplul din problema (1.2) se obţine:

y 000 = −4{2yy 0 + x[(y 0 )2 + yy 00 )}


y (4) = −4{3[(y 0 )2 + yy 00 ] + x(3y 0 y 00 + yy 000 )}.

Pentru h = 0.2, adăugarea termenilor de ordinul al treilea şi al patrulea din (1.3)
ne dă

y(0.2) ' y1 = 0.9616


y(0.4) ' y2 = 0.8624

Aceste rezultate sunt mult mai bune decât cele precedente, dar costul de calcul
este mult mai mare. Un dezavantaj major al acestei metode este necesitatea de a
6 Primele idei şi metode cu un pas

găsi derivatele de ordin ı̂nalt, care pot deveni repede foarte complicate, chiar şi
pentru funcţii mai simple, cum ar fi cea din exemplul (1.2). Programul M ATLAB
de mai jos implementeză metoda dezvoltării Taylor pentru ecuaţia scalară (1.2).
Modificând funcţia yd ea poate fi adaptată uşor la alte ecuaţii scalare.
function [t,w]=TaylorODE(f,a,b,y0,N)
%metoda dezvoltarii Taylor pentru ecuatii scalare
%apel [t,w]=TaylorODE(f,a,b,y0,N)

h=(b-a)/N;
x=a; y=y0; t=x; w=y;
hv=[1,h/2,hˆ2/6,hˆ3/24];
for i=1:N
der=yd(x,y);
y=y+h*hv*der;
x=x+h;
t=[t;x];
w=[w;y];
end
%---------------------
function dy=yd(x,y)
%calculeaza derivata
dy=zeros(4,1);
dy(1)=-2*x*yˆ2;
dy(2)=-2*y*(y+2*x*dy(1));
dy(3)=-4*(2*dy(1)*y+x*(dy(1)ˆ2+y*dy(2)));
dy(4)=-4*(3*(dy(1)ˆ2+y*dy(2))+x*(3*dy(1)*dy(2)+y*dy(3)));

1.4 Metoda seriilor Taylor


O formă alternativă a a ecuaţiei (1.3) introduce funcţia increment. Dezvolta-
rea Taylor se poate scrie sub forma
y(xn+1 ) = y(xn ) + hn ∆(xn , y(xn ), hn ), (1.4)
unde
h 00 hp−1 (p)
∆(x, y, h) = y 0 + y + ··· + y + ...
2 p!
∆ se numeşte funcţie increment Taylor. Metoda numerică se bazează pe trun-
chierea lui (1.4) după termenul ı̂n hp . Rezultatul se numeşte metodă de ordinul
p, ı̂n care şirul {yn }, corespunzător unei secvenţe discrete de valori ale lui x, xn ,
n = 1, 2, . . . , N se calculează cu
hp (p)
yn + 1 = yn + hn yn0 + · · · + y ,
p! n
1.4. Metoda seriilor Taylor 7

sau
yn+1 = yn + hn Φ(xn , yn , hn ), (1.5)

unde
h 00 hp−1 (p)
Φ(x, y, h) = y 0 + y + ··· + y
2 p!

este forma trunchiată a funcţiei increment Taylor. În principiu această metodă
este foarte directă, dar dificultatea relativă de calcul al derivatelor a restrâns ı̂n
trecut aplicabilitatea şi popularitatea metodei serii lor Taylor. Totuşi, avântul
pachetelor de calcul simbolic a readus ı̂n centrul atenţiei metodele de acest tip.
Este instructiv să considerăm ı̂n acest stadiu şi alte aspecte ale diferenţierii
Taylor pentru sisteme de ecuaţii diferenţiale ordinare. Să considerăm cazul scalar
al unei singure ecuaţii y 0 = f (x, y(x)). Seria Taylor necesită derivate totale de
ordin superior ale lui y ı̂n raport cu x. Derivând şi ţinând cont că f = dy/dx,
obţinem

d
y 00 = f (x, y)
dx
∂f dx ∂f dy
= +
∂x dx ∂y dx
∂f ∂f
= +f ,
∂x ∂y

sau mai compact


y 00 = fx + f fy .

La fel, derivata următoare este

d
y 000 = (fx + f fy )
dx
= fxx + 2f fxy + f 2 fyy + fx fy + fy2 f.

Situaţia ı̂n cazul sistemelor de ecuaţii este mai complicată, dar se poate obţine o
oarecare simplificare considerând sisteme autonome

y 0 = f (y), y ∈ RM . (1.6)

A i-a componentă a acestui sistem poate fi scrisă sub forma

i 0
y = if 1
y, 2 y, . . . , M y .

8 Primele idei şi metode cu un pas

Un sistem autonom nu este mai restrictiv decât ecuaţia (1.1) deoarece a M -a


componentă (sau alta dacă e necesar) se poate alege să fie M y = x, adică varia-
bila independentă şi deci M f = 1. Astfel, o problemă scalară poate fi exprimată
ca un sistem autonom cu două componente de forma
1 0   1 2 
y f y, y
2y0 = .
1
Derivatele de ordin superior ale unui sistem pot fi generate ca ı̂n cazul scalar. A
i-a componentă are derivata de ordinul al doilea
i 00 d i
y = f (y)
dx
M
X ∂ i f dj y
=
∂ j y dx
j=1
M
X ∂ if j
= f.
∂ jy
j=1

Utilizând sufixul j pentru a indica diferenţierea ı̂n raport cu a j-a componetă se


obţine
XM
i 00 i
y = fj j f, i = 1, 2, . . . , M (1.7)
j=1
şi utilizând notaţia tensorială, ı̂nsumarea după j poate fi implicită. Astfel
i 00
y = i fj j f, i = 1, 2, . . . , M,
poate ı̂nlocui ecuaţia (1.7). O formă mai simplă de reprezentare a derivatei de
ordinul al doilea se obţine suprimând indicele superior de componentă:
y 00 = fj j . (1.8)
Mai explicit, a doua derivată trebuie exprimată cu ajutorul jacobianului J a lui
f:  1 1f 1f
 1 
f1 2 ··· M f
 2 f1 2f
2 · · · 2f   2f 
M
y 00 = Jf =  . ..   ..  . (1.9)
  
.. ..
 .. . . .  . 
Mf Mf Mf Mf
1 2 ··· M
Pentru a obţine derivatele de ordin superior, forma compactă este foarte utilă.
Pentru derivata de ordinul trei avem:
d
y 00 = fi i f

dx
1.5. Metode Runge-Kutta 9

= fij i f j f + fi i fj j f.

În general, derivatele totale de ordin superior pot fi exprimate sub forma
np
(p) (p)
X
yp = αi Fi . (1.10)
i=1

(p) (3)
Fi se numesc diferenţiale elementare şi ı̂n cazul p = 3, n3 = 2, αi = 1,
i = 1, 2. Diferenţialele elementare sunt
(3)
F1 = fij i f j f
(3)
F1 = fi i fj j f.

Valorile corespunzătoare pentru p = 4 sunt


(4)
n4 = 4, αi = 1, i = 1, 3, 4, α24 = 3.

În ciuda acestor simplificări forma diferenţialelor elementare ale derivatelor de


ordin superior devine foarte complicată. O discuţie detaliată a acestor subiecte
apare ı̂n [15], care de asemenea explică corespondenţa unu-la-unu ı̂ntre diferen-
ţialele elementare şi arborii cu rădăcină din teoria grafelor [2] care sunt esenţiali
ı̂n studiul proceselor de ordin superior.

1.5 Metode Runge-Kutta


Cel mai convenabil tip de metode cu un singur pas pentru rezolvarea ecu-
aţiilor diferenţiale ordinare (ODE) este procesul Runge-Kutta (RK). Astfel de
scheme au fost introduse cu mai mult de un secol ı̂n urmă de Runge şi cu câţiva
ani mai târziu de Kutta. Deoarece sunt robuste şi uşor de implementat, schemele
Runge-Kutta s-au bucurat de o largă popularitate printre practicieni, dar dezvol-
tarea lor majoră a avut loc numai după 1960, urmând lucrările de pionierat ale
lui Butcher. Un exemplu de proces RK cu trei stadii se scrie după cum urmează:
dându-se problema cu valori iniţiale de ordinul ı̂ntâi

y 0 = f (x, y), y(x0 ) = y0 , y ∈ RM ,


h
yn+1 = yn + (f1 + 4f2 + f3 ) , n = 0, 1, 2, . . . (1.11)
6
unde

f1 = f (xn , yn )
10 Primele idei şi metode cu un pas

Stadiu x y f (x, y)
x0 y0 f1
1 0 1 0
x0 + 21 h y0 + 12 hf1 f2
2 0.1 1 -0.2
x0 + h y0 + h(2f2 − f1 ) f3
3 0.2 -0.92 -0.33856

Tabela 1.2: O evaluare ı̂ntr-un proces Runge-Kutta cu trei stadii

 
1 1
f2 = f xn + h, yn + hf1
2 2
f3 = f (xn + h, yn + h(2f2 − f1 )) .

Acesta conduce la un şir de aproximaţii y1 , y2 , . . . ale lui y(x1 ), y(x2 ), . . . , unde


xi = x0 + ih, presupunând că lungimile de pas sunt egale. În practică, lungimea
pasului variază de la pas la pas.
Pentru a ilustra procedura de calcul aplicăm formula (1.11) ecuaţiei (1.2), ı̂n
care f = −2xy 2 , cu y(0) = 1 şi dimensiunea pasului h = 0.2. Calculele apar ı̂n
tabela 1.2. Rezultatul unui singur pas este

0.2
y1 = 1 + (0 + 4 · (−0.2) − 0.33856)
6
= 0.9620 ' y(0.2).

Eroarea de aproximare este ε1 = y1 − y(x1 ) = 0.0005.


Este natural să comparăm metoda RK cu trei stadii cu o serie Taylor trun-
chiată până la termenul h3 y 000 deoarece metoda RK (1.11) necesită trei evaluări
de funcţii ı̂n locul a trei derivate y 0 , y 00 , y 000 ale seriei Taylor, făcând costul cal-
culelor celor două metode foarte apropiat. Totuşi, un argument important ı̂n
favoarea metodelor RK este acela că nu este nevoie de nici o diferenţiere.
În exemplul de mai sus, metoda Runge-Kutta este de asemenea mai precisă
la primul pas (N.B. y 000 (0) = 0 pentru această problemă). Spre deosebire de
seria Taylor corespunzătoare această formulă RK cu trei stadii nu este unică; se
va vedea mai târziu că este posibil să construim mai multe formule ı̂n trei stadii
diferite având diverse proprietăţi.
În general, o formulă RK explicită se exprimă prin
s
X
yn+1 = yn + hn bi fi , (1.12)
i=1
1.5. Metode Runge-Kutta 11

unde

f1 = f (xn , yn )
 
i−1
X
fi = f xn + ci hn , yn + hn aij fj 
j=1
i = 2, 3, . . . , s.

Proprietăţile formulei sunt determinate de parametrii ci , aij , bi şi s, numărul de


stadii. Termenul explicit se aplică acestor formule deoarece toţi fi depind numai
de fj -urile precedent calculate, j = 1, 2, . . . , i − 1. Această proprietate nu este
esenţială, dar ea simplifică algoritmul de calcul.
Procesul Runge-Kutta explicit este foarte uşor de programat şi mai jos se dă
un exemplu. Modificarea pentru ecuaţii diferite este mai uşoară decât ı̂n cazul
Taylor, deoarece nu este nevoie de nici o diferenţiere.

function [t,w]=RK3ode(f,a,b,y0,N)
%metode Runge-Kutta de ordinul 3
%apel [t,w]=RK3ode(f,a,b,y0,N)
%f - functia din membrul drept
%a,b - intervalul
%y0 - valoarea de pornire
%N - numarul de puncte

h=(b-a)/N;
x=a;
y=y0(:);
t=x;
w=y;
for k=1:N
K1=h*feval(f,x,y);
K2=h*feval(f,x+1/2*h,y+1/2*K1);
K3=h*feval(f,x+h,y+2*K2-K1);
y=y+1/6*(K1+4*K2+K3);
x=x+h;
t=[t;x];
w=[w;y’];
end

Cheia preciziei procesului Runge-Kutta este numărul de stadii s, numit ade-


sea numărul de evaluări de funcţii sau derivate. Creşterea valorii lui s per-
mite creşterea ordinului formulelor RK, deoarece creşterea numărului de derivate
ı̂mbunătăţeşte precizia aproximării prin serii Taylor.
12 Primele idei şi metode cu un pas

Formula Runge-Kutta cu un stadiu


yn+1 = yn + hn f1 , f1 = f (xn , yn ), (1.13)
este identică cu seria Taylor de ordinul I. Această formulă simplă se numeşte
metoda lui Euler.

1.6 Ecuaţii de ordinul al doilea şi de ordin superior


Extinderea metodelor numerice de la ecuţii de ordinul ı̂ntâi la ecuaţii de ordin
superior este imediată. Considerăm sistemul de ecuaţii de ordinul al doilea cu
valori iniţiale specificate:
y 00 (x) = g(x, y(x), y 0 (x)) x ∈ [a, b], y, y 0 ∈ RM
y(a) = y0 (1.14)
0
y (a) = y00
Formula bazată pe seria Taylor (1.5) se poate aplica acestui sistem fără nici o mo-
dificare, deoarece y, y 0 pot fi ı̂nlocuite direct din condiţiile iniţiale, iar derivatele
de ordin superior pot fi generate ca mai ı̂nainte ı̂nainte de substituţia numerică.
Totuşi, pentru a permite pasul al doilea şi următorii, ı̂n plus faţă de condiţia pen-
tru y trebuie generată o nouă condiţie iniţială pentru y 0 . Astfel, ı̂n plus faţă de
utilizarea lui (1.5), trebuie construit polinomul Taylor pentru y 0
0
yn+1 = yn0 + hn .
Tehnica este similară cu rezolvarea unui număr dublu de ecuaţii liniare de ordinul
I. Această dublare apare de fapt la aplicarea metodelor RK la ecuaţii de ordinul
al doilea.
Considerăm o metodă RK cu trei stadii şi o aplicăm ecuaţiei de ordinul al
doilea
y 00 = −2y(y + 2xy 0 ), y(0) = 1, y 0 (0) = 0, h = 0.2.
Perechea echivalentă de ecuaţii de ordinul I este
1 0
y = 1f = 2y
2 0
y = 2 f = −2 1 y 1
y + 2x 2 y


cu 1 y(0) = 1, 2 y(0) = 0. Calculele pentru un pas se dau detaliat ı̂n tabela 1.3
iar rezultatul este
1         
y1 1 0.2 0 −0.20 −0.36800
2y = + +4 +
1 0 6 −2 −1.92 −1.42195
1.7. Probleme 13

Stadiu x 1y 1y 1f 2f

1 0 1 0 0 -2
2 0.1 1 -0.2 -0.20 -1.92
3 0.2 0.92 -0.368 -0.36800 -1.42195

Tabela 1.3: Un pas al unei metode RK cu 3 stadii

   
0.9611 y(0.2)
= ' 0 .
−0.3701 y (0.2)

Va fi clar că acestă problemă de ordinul al doilea a fost construită diferenţiid


ecuaţia (1.2) din §1.3, care a fost de asemenea subiectul exemplului din §1.5.
Precizia obţinută pentru y este comparabilă cu cea găsită anterior. Deşi abordarea
ilustrată aici este satisfăcătoare, există o tehnică mai simplă şi mai directă pentru
sisteme de ordinul al doilea. ?? Ea va fi descrisă ı̂n capitolul ??. Tehnica de
partiţionare poate fi generalizată la ecuaţii de ordin mai mare decât doi. Problema
cu valori iniţiale de ordinul n

y (n) = g(x, y, y 0 , y 00 , . . . , y (n−1) ),


(i)
y (i) (x0 ) = y0 , i = 0, 1, . . . n − 1.

se transformă ı̂ntr-un sistem de n ecuaţii de ordinul I. Punând


1
y = y, 2
y = y 0 , . . . , n y = y (n−1) ,

se obţine sistemul
1y0 2y
   
 2y = y0   3y 
   
 .. =
  .
. 
n−1 . .
   
0
  n

 y=y  y 
ny = y0 1 n

g x, y, . . . , y

cu valori iniţiale adecvate.

1.7 Probleme
Problema 1.7.1. Dându-se ecuţia diferenţială
1
y 0 = y 3 − y, y(0) = ,
2
14 Primele idei şi metode cu un pas

utilizaţi o serie Taylor cu termeni până la ordinul lui h3 pentru a estima y(0.1).
Calculând y (4) (0) estimaţi eroarea rezultatului şi comparaţi-o cu eroarea adevă-
rată, ştiind că soluţia exactă este

1
y(x) = √ .
1 + 3e2x

Problema 1.7.2. Utilizaţi metoda seriilor Taylor pentru a estima y şi y 0 ı̂n x =
0.1, 0.2 când y satisface ecuaţia de ordinul al doilea

1
y 00 = − , y(0) = 1, y 0 (0) = 0.
y2

Trunchiaţi seria după termenul ı̂n h3 .

Problema 1.7.3. Obţineţi derivatele până la ordinul 5 pentru ecuaţia pendulului

d2 θ
= −ω 2 sin θ.
dt2
.
Presupunând ca ω = 1, θ(0) = 0, θ(0) = 1, calculaţi un singur pas de dimen-
siune h = 0.2 pentru a estima soluţia şi derivata ı̂n t = 0.2. Modificaţi pro-
gramul din §1.3 pentru a calcula soluţia numerică a problemei pendulului pentru
t ∈ [0, 10], utilizând dimensiunea pasului h = 0.2. Estimaţi perioada pendulului.

Problema 1.7.4. Utilizaţi metoda Runge-Kutta de ordinul al doilea ı̂n două stadii

h
yn+1 = yn + (f1 + f2 ),
2
f1 = f (xn , yn ),
f2 = f (xn + h, yn + hf1 )

pentru a estima y(0.1) şi y(0.2) cu h = 0.1, pentru problema cu valori iniţiale

y 0 = x + y, y(0) = 1.

Estimaţi de asemenea y(0.2) cu h = 0.2.


Soluţia analitică a acestei probleme este y(x) = 2ex − x − 1; utilizaţi-o
pentru a calcula eroarea rezultatelor dumneavoastră.

Problema 1.7.5. Calculaţi doi paşi ai soluţiei (h = 0.1) ecuaţiei de ordinul al


doilea de la problema 2 utilizănd formula Runge-Kutta dată la problema 1.7.3.
1.7. Probleme 15

Problema 1.7.6. Utilizaţi programul din §1.5 pentru a rezolva ecuaţia diferenţi-
ală
y 0 = (1 − y/20)y/4, y(0) = 1
pentru x ∈ [0, 20] cu lungimea pasului h = 0.2

Problema 1.7.7. Dacă y 0 = f (x), y ∈ R3 , cu 3 y = x variabila indepen-


dentă, obţineţi formule pentru componentele derivatei de ordinul al doilea y 00 .
Aplicaţi formulele pentru a găsi componentele derivatelor de ordinul al doilea
pentru ecuaţia din problema 1.7.2.

Problema 1.7.8. Exprimaţi ecuaţia de ordinul al treilea

x3 y 000 − 3x2 y 00 + 6xy 0 − 6y = 0, y(1) = 2, y 0 (1) = 1, y 00 (1) = −4

ca un sistem de trei ecuaţii diferenţiale de ordinul I. Utilizaţi metoda Runge-Kutta


cu un pas de 0.1 pentru a estima soluţia şi cele două derivate ı̂n x = 1.1.
16 Primele idei şi metode cu un pas
Capitolul 2

Consideraţii asupra erorilor

2.1 Introducere
Pentru o ı̂nţelegere completă a oricărei tehnici numerice este essenţial să
se considere sursele de erori şi cum sunt ele propagate pe parcursul calculelor.
Acest lucru este important ı̂n particular pentru rezolvarea numerică a ecuaţiilor
diferenţiale, proces care necesită o abordare pas cu pas. Inevitabil, eroarea la
orice pas va depinde de erorile la paşii anterior. În unele cazuri, proprietăţile
ecuaţiilor şi algoritmilor numerici vor fi astfel ı̂ncât să nu apară nici o amplificare
a erorii; mai frecvent erorrea va creşte pe măsură ce creşte numărul de paşi, deşi
nu neapărat monoton.
La rezolvarea numerică a ecuaţiilor diferenţiale sunt două surse de erori:
A: datorită trunchierii seriilor, numite erori matematice;
B: datorită preciziei finite a calculatorului, numite erori de rotunjire.
Dezvoltarea metodelor numerice este mai frecvent legată de [A] decât de [B],
deoarece precizia aritmetică sau numărul de cifre semnificative furnizate de o
operaţie, este ı̂nafara controlului matematicianului. Deoarece eroarea de rotun-
jire ı̂n orice calcul mai lung va depinde direct de numărul de operaţii aritme-
tice efectuate, ea poate fi minimizată reducând acest număr. Această reducere
se poate realiza frecvent reducând eroarea matematică a unui proces numeric.
Această legătură ı̂ntre cele două tipuri de erori nu este recunoscută ı̂ntotdeauna.
Desigur, practicianul trebuie să evite pierderea de cifre semnificative care poate
apare ca rezultat al unei programări neglijente.
O metodă de succes pentru ecuaţii diferenţială va permite calculul soluţiilor
la precizia dorită, din punct de vedere matematic. În practică, precizia va fi legată
de limitările preciziei maşinii. Erorile de rotunjire vor avea rolul lor.

17
18 Consideraţii asupra erorilor

2.2 Definiţii
Să considerăm din nou problema cu valori iniţiale:

y 0 = f (x, y), y(x0 ) = y0 , y ∈ Rk , (2.1)

care va fi rezolvată utilizând formula incrementală

yn+1 = yn + hΦ(xn , yn , h), (2.2)

conducând la un şir de valori

{yn |n = 0, 1, 2, . . . , N },

corespunzând valorilor soluţiei exacte {y(xn )}. Pentru simplitatea notaţiilor şi
claritate, lungimea h a pasului se va presupune constantă, deşi extensia la un pas
variabil mai general se realizează uşor. Soluţia exactă a problemei se va nota cu
y = y(x). Vom introduce mai ı̂ntâi terminologia uzuală.
Eroarea globală a soluţiei numerice se defineşte prin

εn = yn − y(xn ), n = 0, 1, . . . , N, (2.3)

iar un proces numeric pentru rezolvarea ecuaţiei (2.1) se va numi convergent


dacă  
lim max kεn k = 0.
x→0 0≤n≤N

Astfel, ı̂ntr-un proces convergent, eroarea globală scade odată cu lungimea pasu-
lui. Din punct de vedere practic, aceasta implică faptul că eroarea globală se va
reduce pe măsură ce lungimea pasului se reduce.
Un alt concept important este acela de consistenţă. Metoda numerică (2.2)
este consistentă cu ecuaţia diferenţială (2.1) dacă

Φ(x, y, 0) = f (x, y). (2.4)

Aşa cum se va vedea mai târziu, aceasta este o condiţie necesară pentru ca proce-
sul numeric să fie convergent. Pentru metoda seriilor Taylor de ordinul p, funcţia
increment este
p
X hi−1 (i)
Φ= y ,
i!
i=1

şi astfel
Φ(x, y, 0) = y 0 = f (x, y),
2.3. Eroarea locală de trunchiere pentru metoda seriilor Taylor 19

satisfacându-se astfel proprietatea de consistenţă (2.4). La fel, este uşor de arătat


că orice proces Runge-Kutta cu s stadii de forma (1.12) este consistent dacă
n
X
bi = 1.
i=1

Deşi eroarea globală sau acumulată este de primă importanţă pentru măsura-
rea calităţii soluţiei, o cantitate mai uşor de apreciat este eroareacare apare la un
singur pas al procesului numeric. Eroarea locală (LE) la pasul n+1 se defineşte
ca
en+1 = yn+1 − u(xn+1 ), (2.5)
unde u(x) este soluţia locală exactă (de referinţă) ce satisface
u0 = f (x, u), u(xn ) = yn .
Aceasta este eroarea asociată cu un singur pas şi este o cantitate care joacă un rol
important ı̂n calculul practic al soluţiilor.
În scopuri analitice este convenabil să introducem un al treilea tip deeroare,
numită eroare locală de trunchiere (LTE). Presupunem că metoda numerică
(Taylor sau Runge-Kutta) are o formulă increment (2.2) care se poate rescrie sub
forma
0 = yn + hΦ(xn , yn , h) − yn+1 .
Această ecuaţie nu este satisfăcută ı̂nlocuind yn cu valoarea soluţiei exacte a
ecuaţiei diferenţiale y(xn ), iar diferenţa este chiar eroarea locală de trunchiere
tn+1 = y(xn ) + hΦ(xn , y(xn ), h) − y(xn+1 ). (2.6)
Astfel, eroarea locală de trunchiere este cantitatea cu care soluţia exactă eşuează
ı̂n a satiface formula numerică. Aşa cum va fi clar din figura 1.1, la primul pas
cele trei erori a căror definiţie s-a dat aici vor avea valori identice. Pentru valori
mari ale lui n eroarea globală va fi mult mai mare decât erorile locale, dar de
obicei eroarea locală şi eroarea locală de trunchiere vor avea ordine de mărime
apropiate. Relaţia dintre aceste cantităti va fi examinată mai tărziu.

2.3 Eroarea locală de trunchiere pentru metoda seriilor


Taylor
Utilizând ecuaţiile (1.4), (2.2) şi (2.6), eroarea locală de trunchiere pentru
metoda seriilor Taylor poate fi scrisă
tn+1 = y(xn ) + hΦ(xn , y(xn ), h) − (y(xn ) + h∆(xn , y(xn ), h),
20 Consideraţii asupra erorilor

conducând la

tn+1 = h{Φ(xn , y(xn ), h) − ∆(xn , y(xn ), h)}. (2.7)

Utilizând derivatele şi formulele (1.10) pentru diferenţiale elementare, metoda


de ordinul p are eroarea locală de trunchiere
n
X hi (i)
tn+1 =− y (xn )
i!
i=p+1
n ni (2.8)
X hi X (i) (i)
=− αj Fj .
i!
i=p+1 j=1

Acum incrementul Taylor se poate exprma sub formă finită ca

h 00 hp−1 (p)
∆(xn , y(xn ), h) = y 0 (xn ) + y (xn ) + · · · + y (xn )
2 p!
hp
+ y (p+1) (xn + ηh), η ∈ (0, 1),
(p + 1)!

şi deci LTE se reduce la ultimul termen al acestui polinom. Valoarea η nu este
ı̂n general cunoscută. În consecinţă, există un număr real pozitiv A, independent
de dimensiunea pasului h,
ktn+1 k ≤ Ahp+1 (2.9)
şi pentru o metodă de ordinul p se obişnuieşte să se scrie

tn+1 = O(hp+1 ).

Pentru orice metodă de tipul (1.3) eroarea locală de trunchiere se poate exprima
sub forma
X∞
tn+1 = hi ϕi−1 (xn , y(xn )), (2.10)
i=p+1

unde ϕi se numesc funcţii de eroare. Utilizând (2.8), obţinem că metoda seriilor
Taylor are funcţiile de eroare
yi+1
ϕi = − .
(i + 1)!

Funcţia de eroare principală este ϕp şi aceasta va avea influenţa dominantă asu-
pra erorii locale de trunchiere dacă h este suficient de mic.
2.4. Eroarea locală de trunchiere pentru metodele Runge-Kutta 21

2.4 Eroarea locală de trunchiere pentru metodele Run-


ge-Kutta
Analiza erorii locale de trunchiere pentru metodele Runge-Kutta este mai
complicată decât la metoda seriilor Taylor deoarece formula Runge-Kutta nu
conţine nici o derivată totală explicită. În locul lor, procesul RK este prezentat
ı̂n termeni de funcţii de două variabile şi, ı̂n consecinţă, toate derivatele totale se
vor exprima cu ajutorul diferenţialelor elementare introduse ı̂n capitolul 1.
Din motive de simplitate, vom considera ı̂ntâi eroarea locală de trunchiere
pentru o metodă RK cu două stadii (s = 2). O formulă explicită cu două stadii
are forma
yn+1 = yn + h(b1 f1 + b2 f2 ) (2.11)
unde
f1 = f (xn , yn )
f2 = f (xn + c2 h, yn + a21 hf1 ).
Expresia erorii locale de trunchiere se obţine ı̂nlocuid funcţia increment Φ din
formula (2.11) ı̂n ecuaţia (2.7). Pentru a simplifica dezvoltarea expresiei erorii
este convenabil să ı̂nlăturăm dependenţa funcţională explicită a lui f şi derivate-
lor sale care urmează a fi evaluate ı̂n (x, y). Astfel, ı̂n formă compactă, funcţia
increment pentru procesul RK se poate scrie ca
Φ(x, y, h) = b1 f + b2 f (x + c2 h, y + a21 hf ).
Ca mai ı̂nainte, incrementul Taylor se poate exprima prin

(1) h (2) h2 (3) (3)


∆(x, y, h) = F1 +F1 + (F1 + F2 ) + . . . ,
2 6
unde am utilizat notaţia cu diferenţiale elementare (vezi (1.10)). Considerând y
scalar şi utilizând §1.4, diferenţialele elementare sunt
(1)
F1 = f
(2)
F1 = fx + f fy
(3)
F1 = fxx + 2f fxy + f 2 fyy
(3)
F2 = fx fy + fy2 f.
Dezvoltând funcţia increment Φ a procesului RK cu formula lui Taylor ı̂n două
variabile obţinem
Φ = b1 f + b2 {f + (c2 hfx + a21 hf fy )
22 Consideraţii asupra erorilor

1 2 2
+ (c h fxx + 2a21 hc2 hf fxy + a221 h2 f 2 fyy ) + O(h3 )}
2 2
= (b1 + b2 )f + b2 {h(c2 fx + a21 f fy )
h2 2
+ (c fxx + 2a21 c2 f fxy + a221 f 2 fyy ) + O(h3 )}.
2 2
Pentru a simplifica formula (2.7) este esenţial să identificăm diferenţialele ele-
mentare ı̂n expresiile anterioare. În acest proces de un real ajutor este să alegem
a21 = c2 , ceea ce ne dă
(1) (2) 1 (3)
Φ = (b1 + b2 )F1 + b2 c2 F1 + b2 c22 h2 F1 + O(h3 ).
2
Înlocuind ı̂n (2.7) se obţine o expresie a erorii locale de trunchiere ı̂n termeni de
diferenţiale elementare şi parametrii RK b1 , b2 şi c2 :

tn+1 = h(Φ − ∆)
 
(1) 1 2 (2)
= h[(b1 + b2 ) − + h b2 c2 −
1]F1 F1
2 (2.12)
  
1 1 (3) 1 (3)
+ h3 b2 c2 − F1 − F2 + O(h4 ).
2 2 6 6
Acum diferenţialele elementare sunt dependente de problema de rezolvat şi astfel
singurii parametrii care influenţează comportarea generală a procesului RK ı̂n
(2.12) sunt b1 , b2 şi c2 . Urmând experienţa de la serii Taylor, parametrii RK vor
fi aleşi astfel ca să maximizeze ordinul erorii locale de trunchiere (2.12). Pentru
a anula primele două puteri ale lui h trebuie satisfăcut sistemul neliniar

b 1 + b2 = 1
1 (2.13)
b2 c2 = .
2
Atunci eroarea locală de trunchiere se reduce la
  
3 1 2 1 (3) 1 (3)
tn+1 = h b2 c − F1 − F2 + O(h4 ). (2.14)
2 2 6 6
Un polinom Taylor de gradul 2 are eroarea locală de trunchiere

h3  (3) (3)

tn+1 = − F1 + F2 + O(h4 )
6
şi formula RK ı̂n două stadii ai cărei parametrii satisface ecuaţiile (2.13) are
aceeaşi comportare asimptotică şi ordinul doi.
2.4. Eroarea locală de trunchiere pentru metodele Runge-Kutta 23

Semnificaţia acestei dezvoltări este aceea că furnizează o bază pentru ale-
gerea parametrilor Runge-Kutta. În cazul ordinului 2 există trei parametrii care
trebuie să satisfacă condiţiile (2.13). Nu există soluţie unică şi de aceea unul
dintre parametrii trebuie ales ı̂n mod independent. O alegere evidentă, fără altă
justificare decât simplitatea este de a lua c2 = 1, obţinându-se
h
yn+1 = yn + (f1 + f2 ),
2
f1 = f (xn , yn ), (2.15)
f2 = f (xn + h, yn + hf1 ).

O alegere alternativă, c2 = 21 , ne conduce la o altă formulă RK de ordinul 2:

yn+1 = yn + hf2 ,
f1 = f (xn , yn ),
  (2.16)
1 1
f2 = f xn + h, yn + hf1 .
2 2

În capitolul următor se va discuta alegerea optimală a parametrului liber.


În general, funcţia increment Runge-Kutta poate fi exprimată ı̂n forma
 
∞ Xni 
(i) (i)
X
Φ= hi−1 βj Fj , (2.17)
 
i=1 j=1

(i)
unde βj sunt funcţii de parametrii aij , bi , ci şi se mai presupune că este sa-
tisfăcută condiţia
i−1
X
ci = aij , i = 2, 3, . . . , s (2.18)
j=1

numită condiţia sumei liniilor. Utilizând ecuaţiile (2.7) şi (1.10) cu (2.17), eroa-
rea locală de trunchiere pentru orice metodă RK poate fi scrisă sub forma
 
∞ ni (i) !
X X
(i) α j (i)

tn+1 = hi βj − Fj
 i! 
i=1 j=1
  (2.19)
∞ X ni 
(i) (i)
X
= hi τj Fj
 
i=1 j=1

unde
(i) (i) (i)
τj = βj − αj /i!, i = 1, 2, . . . ; j = 1, 2, . . . , ni
24 Consideraţii asupra erorilor

(1) P
1. τ1 = i bi − 1
(2)
= i bi ci − 12
P
2. τ1
(3)
= 12 i bi c2i − 16
P
3. τ1
(3) P 1
4. τ1 = ij bi aij cj − 6

Tabela 2.1: Coeficienţii erorii RK până la ordinul al treilea

se numesc coeficienţii erorii. Comparând (2.19) cu (2.12), primii 4 coeficienţi ai


erorii pentru un proces RK cu două stadii este

(1)
τ1 = b1 + b2 − 1
(2) 1
τ1 = b2 c2 −
2
(3) 1 2 1 (2.20)
τ1 = b2 c2 −
2 6
(3) 1
τ2 = − ,
6

şi alegând parametrii RK pentru a elimina primii doi coeficienţi din aceste erori
se obţine o metodă de ordinul doi. Pentru o formulă cu două stadii, τ23 este o
constantă şi, ı̂n general, nu este posibil să găsim parametrii pentru o formulă cu
două stadii pentru a obţine o precizie de ordinul 3. Totuşi, creşterea numărului
de stadii la trei furnizează suficienţi parametrii RK pentru a construi o formulă
de ordinul trei.
Din (2.19) rezultă că o formulă RK are ordinul cel puţin p (tn+1 = O(hp+1 ))
dacă este satisfăcută ecuaţia de condiţionare:

(i) i = 1, 2, . . . p,
τj = 0, (2.21)
j = 1, 2, . . . ni .

Valoarea lui ni creşte exponenţial odată cu ordinul, astfel că numărul de ecuaţii
care trebuie satisfăcute creşte rapid când ordinul creşte. Aceasta implică un
număr mare de stadii s pentru a asigura gradele de libertate necesare pentru a
atinge un ordin ı̂nalt. Formulele generale pentru coeficienţii erorii până la or-
(3)
dinul trei sunt date ı̂n tabela 2.1. De notat că τ2 nu este constant ı̂n cazul
general. Coeficienţii erorii din această tabelă sunt valabil când formulele RK
sunt aplicate sistemelor generale de ecuaţii şi nu numai ı̂n cazul scalar care a fost
subiectul analizei precedente. De asemenea, nu este necesar ca un proces RK să
2.4. Eroarea locală de trunchiere pentru metodele Runge-Kutta 25

fie explicit; cea mai generală expresie pentru al i-lea stadiu


 
X s
fi = f xn + ci h, yn + h aij fj 
j=1

se poate aplica. Coeficienţii corespunzători următoarelor două ordine sunt daţi


ı̂n tabela 2.2; pentru aceste ordine avem 4 şi respectiv 9 coeficienţi.
Aceste tabele de coeficienţi necesită anumite explicaţii. Întâi, sumarea se
face după numărul total de stadii s ı̂n formula RK. De asemenea, cei mai mulţi
coeficienţi necesită sumări multiple. De exemplu, coeficientul 16 din tabela 2.2
este o prescurtare a formulei
s s s
(5) 1 XXX 1
τ8 = bi aij ajk c2k − .
2 120
i=1 j=1 k=1

Condiţia generală a sumei liniilor


n
X
ci = aij , i = 1, 2, . . . , s
j=1

poate ı̂nlocui ecuaţia (2.18). În fine, deoarece multe formule RK sunt de tip
explicit (1.12), ı̂n acest caz vom impune aij = 0, j ≥ i, aşa că
 
i−1
X
fi = f xn + ci h, yn + h aij fj 
j=1

iar coeficientul erorii 16 din tabela 2.2 se reduce la


s i−1 j−1
(5) 1 XXX 1
τ8 = bi aij ajk c2k − .
2 120
i=1 j=1 k=1

Pe lângă avantajele de calcul ale metodelor explicite este evident că numărul de
termeni care constribuie la mulţi dintre coeficienţii erorii se reduce considerabil
faţă de cazul general. Pentru o metodă cu patru stadii formula coeficientul 8
din tabela 2.2, fiind o sumă triplă, conţine 43 termeni. Totşi, impunând condiţia
explicită i > j > k > 1 suma se reduce la un singur termen

1
b4 a43 a32 c2 − .
24
26 Consideraţii asupra erorilor

(4) 1X 3 1
5. τ1 = bi ci −
6 24
(4)
Xi 1
6. τ2 = bi cj aij cj −
8
ij
(4) 1 X 1
7. τ3 = bi aij c2i −
2 24
ij
(4)
X 1
8. τ4 = bi aij ajk ck −
24
ijk
(5) 1 X 1
9. τ1 = bi c4i −
24 120
i
(5) 1X 2 1
10. τ2 = bi ci aij cj −
2 20
ij
(5) 1 X 1
11. τ3 = bi aij cj aik ck −
2 40
ijk
(5) 1X 1
12. τ4 = bi ci aij c2j −
2 30
ij
(5) 1 X 1
13. τ5 = bi aij c3j −
6 120
ij
(5)
X 1
14. τ6 = bi ci aij ajk ck −
30
ijk
(5)
X 1
15. τ7 = bi aij cj ajk ck −
40
ijk
(5) 1 X 1
16. τ8 = bi aij ajk c2k −
2 120
ijk
(5)
X 1
17. τ9 = bi aij ajk akm cm −
120
ijkm

Tabela 2.2: Coeficienţii erorii Runge-Kutta pentru ordinele 4 şi 5


2.5. Eroarea locală şi eroarea globală 27

ci aij bi
0 b1
c2 a21 b2
c3 a31 a32 b3
.. .. .. .. ..
. . . . .
cs as1 as2 ... ass−1 bs

Tabela 2.3: Tabelă Butcher modificată pentru o metodă Runge-Kutta explicită

ci aij bi
1
0 6
1 1 2
2 2 3
1
1 −1 2 6

Tabela 2.4: O metodă Runge-Kutta cu trei stadii

Totuşi, tabelele 2.1 şi 2.2 sunt valabile pentru formule implicite care vor fi con-
siderate ı̂ntr-un capitol ulterior.
În acest moment este convenabil să introducem tabela Butcher modificată,
ilustrată de tabela 2.3, pentru afişarea coeficienţilor unui process Runge-Kutta
general. Convenţia este să omitem elementele de pe diagonală şi cele de deasupra
diagonalei matricei cu elementele aij atunci când acestea sunt zero, deoarece ı̂n
acest caz formula RK este explicită. Aceasta ne dă un mod compact şi concis de
a da formule RK cu mai multe stadii, iar formula cu trei stadii (1.11) introdusă ı̂n
capitolul 1 este dată ı̂n această formă ı̂n tabela 2.4. Această notaţie va fi utilizată
extensiv ı̂n capitolele următoare.

2.5 Eroarea locală şi eroarea globală


Experimentele numerice au evidenţiat deja o relaţie complicată ı̂ntre eroarea
locală, care poate fi considerată ca eroarea pe pas şi eroarea globală. Totuşi,
există o relaţie asimptotică simplă şi importantăce leagă erorea locală a unui
proces numeric cu eroarea globală. Analiza acestor erori conduce la ı̂nţelegerea
cerinţelor de consistenţă a unui proces şi relaţia sa cu convergenţa.
Pentru o mai bună claritate se consideră ecuaţia diferenţială
y 0 = f (x, y), y(x0 ) = y0 , y ∈ R, (2.22)
dar axtensia la cazul vectorial este directă. Să aplicăm o metodă de ordinul p de
forma (2.2) cu pas constant ecuaţiei (2.22). Eroarea globală la pasul n + 1 este
28 Consideraţii asupra erorilor

dată de
εn+1 = yn+1 − y(xn+1 )
şi ţinând cont de ecuaţiile (2.2) şi (2.6) se obţine

εn+1 = εn + h[Φ(xn , yn , h) − Φ(xn , y(xn ), h)] + tn+1 .

Presupunând că |tn+1 | ≤ M şi h > 0, rezultă inegalitatea

|εn+1 | = |εn | + h|Φ(xn , yn , h) − Φ(xn , y(xn ), h)| + M. (2.23)

Dacă Φ satisface o condiţie Lipschitz cu constanta L,

|Φ(xn , yn , h) − Φ(xn , y(xn ), h)| ≤ |yn − y(xn )|,

peste domeniul ce conţine punctele soluţiei exacte şi ale celei numerice, inegali-
tatea (2.23) devine
|εn+1 | ≤ |ε|(1 + hL) + M. (2.24)
Aplicând această inegalitate cu n = 0, 1, 2, . . . , este simplu să obţinem o mar-
gine a erorii globale pentru n general. Inegalitatea (2.24) ne dă

|ε1 | ≤ |ε0 |(1 + hL) + M


|ε2 | ≤ |ε1 |(1 + hL) + M
≤ |ε0 |(1 + hL)2 + M [1 + (1 + hL)]
... ... ...
|εn | = |ε0 |(1 + hL)n
+ M [1 + (1 + hL) + (1 + hL)2 + · · · + (1 + hL)n−1 ].

Însumând progresia geometrică din ultima linie se obţine

(1 + hL)n − 1
|εn | ≤ |ε0 |(1 + hL)n + M
  hl
M M
= (1 + hL)n |ε0 | + − .
hL hL

Utilizând relaţia 0 ≤ (1 + w)m ≤ emw şi, punând ε0 marginea pentru eroarea


globală este
M  nhL 
|εn | ≤ e −1 . (2.25)
hL
Pentru a stabili proprietăţile de convergenţă ale procesului numeric este necesar
să identificăm acele părţi ale lui (2.25) care depind de lungimea h a pasului şi cele
2.6. Eroarea locală şi LTE 29

care sunt independente de h. Dacă intervalul h al soluţiei ecuaţiei diferenţiale


este [a, b], atunci x0 = a şi xn = b şi deoarece xn = x0 + h, eroarea globală
(2.25) se poate exprima prin
M  L(b−a) 
|εn | ≤ e −1 ,
hL
ı̂n care termenii din paranteze nu depind de h. Deoarece o metodă de ordinul p
verifică M = Ahp+1 (din (2.9)) este evident că există un număr pozitiv B astfel
ı̂ncât
|εn | ≤ Bhp .
Acest rezultat poate fi rezumat ı̂n forma

tn+1 ∼ O(hp+1 ) ⇒ εn ∼ O(hp ).

Ordinul erorii globale erorii globale este cu 1 mai mic decât ordinul erorii locale
de trunchiere şi astfel o metodă cu un pas de forma (2.2) care este consistentă şi
de ordinul p va fi convergentă dacă p ≥ 1.

2.6 Eroarea locală şi LTE


Eroarea locală de trunchiere, sau eroarea matematică a unei metode numerice
a fost utilizată ı̂n analiza erorii globale a procesului. Totuşi, o cantitate mai
practică din punct de vedere al calculelor, este eroarea pe pas, sau eroarea locală
(2.5) a metodei. Din fericire cele două erori sunt foarte apropiate ı̂n mărime.
Este uşor de văzut ı̂n cazul scalar (2.22) că eroarea locală la pasul n + 1 satisface

en+1 = h [Φ(xn , yn , h) − ∆(xn , yn , h)] ,

şi utilizând (2.7), diferenţa dintre cele două tipuri de eroare locală este

en+1 − tn+1 = h [Φ(xn , yn , h) − ∆(xn , yn , h)]


− h [Φ(x, y(xn ), h) − ∆(xn , y(xn ), h)] .

Dezvoltând cu formula lui Taylor pentru două variabile ı̂n jurul lui (xn , y(xn ) se
obţine
ε2n
 
en+1 − tn+1 = h εn (Φy − ∆y ) + (Φyy − ∆yy ) + . . . .
2
Deoarece εn ∼ O(hp ) şi |Φ − ∆| < Ahp , rezultă că

|en+1 − tn+1 | ≤ Dh2p+1 , D ≥ 0,


30 Consideraţii asupra erorilor

indicând faptul că diferenţa dintre două eroari de ordinul p este cu p ordine mai
mare decât eroarea locală ı̂nsăşi. Pe măsură ce h se micşorează, diferenţa dintre
cele două erori va scădea mai repede decât ambele erori locale. În consecinţă
putem privi estimarea erorii locale a unui proces de ordinul p ca fiind o estimare
a erorii locale de trunchiere. Deoarece eroarea locală de trunchiere nu implică
soluţia exactă globală, este mult mai uşor să o estimăm ı̂n practică decât LTE.
O astfel de estimare a erorii este esenţială pentru rezolvarea numerică eficientă a
ecuaţiilor diferenţiale.

2.7 Probleme
Problema 2.7.1. Arătaţi că pentru ca o metodă cu s-stadii să fie consistentă cu
o ecuaţie diferenţială este
Xs
bi = 1.
i=1

Problema 2.7.2. Calculaţi cinci paşi ai metodei lui Euler aplicată ecuaţiei

y 0 = y − 2y 2 , y(0) = 1, h = 0.1.

Utilizaţi soluţia exactă şi soluţia de referinţă pentru a calcula eroarea locală şi
globală la fiecare pas, ştiind că soluţia generală a ecuţiei diferenţiale este y =
1/(2 + ce−x ).

Problema 2.7.3. Determinaţi ordinul fiecăreia dintre formulele Runge-Kutta cu


trei stadii date ı̂n tabelele de mai jos
ci aij bi ci aij bi ci aij bi
1 5
0 0 0 4 0 12
(a) 1 1 (b) 1 1 (c) 1 1 1
8 8 0 3 3 0 2 2 2
1 1 2 2 3 1 1 1
2 0 2 1 3 0 3 4 1 2 2 12

Problema 2.7.4. Scrieţi ı̂n formă dezvoltată cele 8 ecuaţii de condiţie pentru o
formulă Runge-Kutta explicită de ordinul 4 cu 4 stadii. Verificaţi că ecuaţiile
sunt satisfăcute de formula dată mai jos

ci aij bi
1
0 6
1 1 1
2 2 3
1 1 1
2 0 2 3
1
1 0 0 1 6
2.7. Probleme 31

(Nu rezolvaţi ecuaţiile.)


Dându-se problema cu valori iniţiale

y 0 = xy 2 , y(0) = 2,

utilizaţi formula RK4 de mai sus pentru a estima y(0.2) cu h = 0.2. Determinaţi
soluţia exactă şi utilizaţi-o pentru a calcula eroarea estimaţiei dumneavoastră.
Problema 2.7.5. Utilizaţi formula RK4 din problema precedentă, cu lungime
pasului h = 0.2 pentru a estima y(0.2) şi y 0 (0.2) care satisfac ecuaţia de ordinul
al doilea
y 00 = −1/y 2 , y(0) = 1, y 0 (0) = 0.
(Se va trata ca un sistem de ecuaţii de ordinul I).
Problema 2.7.6. Dacă y 0 = f (x, y) = f1 , cu

f2 = f (x + c2 h, y + ha21 f1 ),
f3 = f (x + c3 h, y + h(a31 f1 + a32 f2 )),

exprimaţi fi , i = 2, 3 cu ajutorul diferenţialelor elementare:


(2)
F1 = fx + f fy ,
(3)
F1 = fxx + 2f fxy + f 2 fyy ,
(3)
F2 = fx fy + f fy2 .

Deci determinaţi ecuaţiile de condiţie pentru o formulă RK cu trei stadii de ordi-


nul trei (se presupune a2 1 = c2 şi a31 + a32 = c3 .)
Problema 2.7.7. Arătaţi că, pentru w ≥ 0 şi m > 0

0 ≤ (1 + w)m ≤ emw .

Problema 2.7.8. Modificaţi programul RK3ode din capitolul 1, care se bazează


pe o metodă de ordinul trei, pentru a rezolva problema

y 0 = y(2 − y), y(0) = 1,

cu lungimea pasului h = 0.25 şi x ∈ [0, 5]. Utilizând soluţia generală a ecuaţiei
diferenţiale, calculaţi eroarea locală e, bazându-vă pe soluţia exactă, calculaţi
eroarea locală de trunchiere t şi comparaţi-o cu eroarea locală la fiecare pas.
Aplicând la fiecare pas formula incrementală

wn+1 = y(xn ) + hΦ(xn , y(xn ), h),


32 Consideraţii asupra erorilor

calculţi eroarea locală de trunchiere t şi comparaţi-o cu eroarea locală e. Adică,


investigaţi numeric ordinele (puterile lui h) ale diferitelor cantităţi numerice
obţinute. Confirmă rezultatele numerice rezultatele analitice prezentate ı̂n acest
capitol?
Capitolul 3

Metode Runge-Kutta

3.1 Introducere
Metodele Runge-Kutta au devinit de mulţi ani populare printre practicieni.
Dezvoltate iniţial de Runge la sfârşitul secolului al XIX-lea şi generalizate de
Kutta la ı̂nceputul secolului al XX-lea, aceste metode sunt foarte convenabil de
implementat, comparate cu schema polinomială Taylor, care necesită construirea
şi evaluarea derivatelor de ordin superior. Acest neajuns al metodei Taylor este
foarte serios la tratarea sistemelor de ecuaţii diferenţiale, dar odată cu creşterea
popularităţii software-ului simbolic se pare că abordarea bazată pe serii se va
bucura de atenţie ı̂n viitor.
Dezvoltarea modernă a metodelor Runge-Kutta s-a produs ı̂ncepând cu 1960,
ı̂n principal ca rezultat al progreselor datorate lui J. C. Butcher ı̂n dezvoltarea şi
simplificarea coeficienţilor erorii RK. Importanţa lucrărilor lui Butcher ı̂n acest
domeniu nu poate fi accentuată suficient. Contribuţiile sale au pregătit drumul
pentru dezvoltarea proceselor eficiente de ordin ı̂nalt de care software-ul modern
de rezolvare a ecuaţiilor diferenţiale depinde. Totuşi, disponibilitatea calculatoa-
relor puternice este ea ı̂nsăşi o motivaţie pentru dezvoltarea de metode care să
conducă la o precizie chiar mai bună.
Unele procese Runge-Kutta mai simple au fost deja introduse ı̂n capitolele
precedente, iar ı̂n capitolul 2 s-a prezentat baza pentru construirea unor astfel de
formule. O observaţie importantă a acestui capitol este aceea că, pentru un număr
dat de stadii, formula RK nu este unică. Aceasta ı̂nseamnă că există parametrii
liberi care trebuie aleşi. Este esenţial să adoptăm o abordare sistematică a acestei
alegeri şi să introducem şi să justificăm criterii pentru construirea de noi formule.
Una dintre problemele cu care se confruntă orice om de ştiinţă sau inginer la
rezolvarea unei probleme cu valori iniţiale este alegerea celei mai bune formule

33
34 Metode Runge-Kutta

pentru acest scop.Având ı̂n vedere alternativele disponibile şi varietatea de pro-
bleme de rezolvat, această alegere nu este ı̂ntotdeauna directă. Deşi acest capitol
nu va da cele mai ,,bune” formule RK, va da detalii asupra celor mai proaste
procese numerice de rezolvare a ecuaţiilor diferenţiale!
Construirea de metode numerice trebuie ı̂nsoţită de teste practice. Testele
se vor aplica adesea problemelor cu soluţii cunoscute. Aceasta permite calculul
unor estimaţii adecvate ale erorii, necesare la compararea diferitelor procese nu-
merice. ??? Se va ı̂ncerca să se dea un program ı̂n M ATLAB aplicabil oricărui
sistem de ecuaţii diferenţiale, conceput astfel ca să implementeze orice proces
Runge-Kutta explicit, facilitate care deşi este ı̂ntâlnită rareori ı̂n programele pu-
blicate, se poate realiza uşor, fără pierderi semnificative ale eficienţei de calcul.

3.2 Criterii de eroare


Pentru formula Runge-Kutta explicită cu două stadii
ci aij bi
0 b1
c2 a21 b2
s-a dat ı̂n §2.4 o expresie pentru eroarea locală de trunchiere (2.12). Pornind de
aici s-au obţinut ecuaţiile (2.13)
b 1 + b2 = 1
1
b2 c2 =
2
care trebuie satisfăcute de parametrii RK (b1 , b2 , c2 ) pentru a se obţine o formulă
de ordinul al doilea. Deoarece sunt disponibili trei parametrii, unul din ei poate
fi ales arbitrar. Se spune că ecuaţia de condiţie are ı̂n această situaţie un grad
de libertate. Nu este posibil să eliminăm termenul de ordinul 3 (h3 ) din eroarea
locală de trunchiere, pentru care funcţia de eroare este
 
1 2 1 (3) 1 (3)
ϕ2 = b2 c2 − F1 − F2 ,
2 6 6
(3)
deoarece coeficientul de eroare τ2 este constant. În consecinţă ϕ2 devine func-
ţia de eroare principală şi formula are ordinul maxim 2. Totuşi pare rezonabil
să utilizăm gradul de libertate pentru a ı̂nlătura coeficientul variabil deoarece
acesta va reduce mărimea globală a termenului de eroare principală, aşa cum
este evaluat pentru o gamă largă de probleme. Punând
1 2 1
b2 c = ,
2 2 6
3.2. Criterii de eroare 35

2 3
a doua condiţie din (2.13) ne conduce la c2 = 3 şi astfel b2 = 4 şi b1 = 41 . De
(3)
notat că, pentru o ecuaţie diferenţială ı̂n care F2
= 0, formula cu două stadii
va avea ordinul 3. De fapt, această situaţie apare când f (x, y) = f (y); deoarece
y nu afectează derivatele o astfel de problemă este una de cuadratură.
Această formulă particulară RK cu două stadii, având c2 = 21 , este conside-
rată de obicei ca fiind optimală ı̂n raport cu eroarea de trunchiere. Desigur, este
posibil să construim probleme pentru care anumite formule RK de ordinul 2 cu
două stadii dau precizie mai bună. Totuşi, calculele practice pentru o clasă largă
de probleme susţin alegerea de mai sus a parametrului liber.
Dacă sunt prezente mai mult de două stadii ordinul poate fi crescut. Deoarece
numărul de coeficienţi de eroare creşte de asemenea va creşte şi complexitatea
funcţiei principale de eroare. Pentru o metodă de ordinul p aceasta se scrie ca
np +1
(p+1) (p+1)
X
ϕp = τj Fj , (3.1)
j=1

şi o trimitere la tabela 2.2 ne arată că n4 = 4 şi n5 = 9. Pentru ordine mai mari
numărul de coeficienţi ai erorii creşte rapid odată cu ordinul, ı̂n timp ce numărul
de grade de libertate depinde de numărul de stadii. În consecinţă nu este adecvat
să ı̂ncercăm să optimizăm o formulă RK prin alegerea parametrilor liberi pentru
a elimina coeficienţi particulari de eroare.
Într-o lucrare de referinţa din 1980 Dormand şi Prince [7] au propus ca, pen-
tru a atinge un ordin particular de precizie, cea mai bună strategie pentru scopuri
practice este să alegem parametrii liberi RK astfel ı̂ncât să minimizăm norma
erorii v
unp +1 
(p+1) 2
uX 
(p+1) (p+1)
A = τ =t τj . (3.2)
2
j=1

Va fi clar că acest lucru este consistent cu o formulă optimală cu două stadii.
Minimizarea nu trebuie luată ca o condiţie strictă perfectă, deoarece se aplică
unui singur termen al unei serii infinite. Acest termen va domina seria pentru
h suficient de mic, dar pentru lungimi practice ale pasului s-ar putea să nu se
ı̂ntâmple aşa când coeficienţii de eroare sunt strict minimizaţi.
În anumite cazuri de importanţă practică, o minimizare strictă conform e-
cuaţiei (3.2) poate avea drept consecinţă ca un termen secundar al seriei pentru
eroarea locală de trunchiere să devină dominant pentru o lungime de pas tipică.
Evident aceasta va invalida argumentele de mai sus. Drmand şi Prince au propus
un număr de criterii pentru a fi utilizate la construcţia formulelor RK. Obţinerea
unei funcţii principale de eroare mici este probabil facilitatea cheie, dar şi altele
sunt legate de aspecte parctice de calcul care vor fi ı̂ntâlnite ı̂n text.
36 Metode Runge-Kutta

3.3 O formulă de ordinul al treilea


Să ilustrăm acum obţinerea unei formule RK de ordinul al treilea care va
avea tn+1 ∼ O(h4 ). Ecuaţiile de condiţie care trebuie satisfăcute vor fi

(i)
τj = 0, i = 1, 2, 3; j = 1, 2, . . . ni ,

şi se presupune că avem un proces cu trei stadii

ci aij bi
0 b1
c2 a21 b2
c3 a31 a32 b3

Utilizând tabela 2.1 şi observând că aij = 0, j ≥ i, cele patru ecuaţii de condiţie
se pot exprima sub forma

b1 + b2 + b3 = 1 (3.3)
1
b2 c2 + b3 c3 = (3.4)
2
1
b2 c22 + b3 c23 = (3.5)
3
1
b3 a32 c2 = . (3.6)
6
Acest sistem are şase necunoscute şi sunt 4 grade de libertate. Este convenabil să
alegem ca parametrii liberi pe c2 şi c3 şi să rezolvăm ecuaţia ı̂n funcţie de aceştia.
Luând (3.4)×c2 −(3.5) se obţine

1 1
b3 c3 (c2 − c3 ) = c2 − ,
2 3
care dă
3c3 − 2
b3 = .
6c3 (c2 − c3 )
La fel
3c3 − 1
b2 = ,
6c2 (c3 − c2 )
şi ı̂mpreună cu (3.6) ne conduce la

c3 (c2 − c3
a32 = .
c2 (3c2 − 2)
3.3. O formulă de ordinul al treilea 37

Din ecuaţia (3.3), b1 = 1−b2 −b3 , şi din condiţia sumei liniilor (2.18) ne conduce
la a21 = c2 şi a31 = c3 − a32 . Această soluţie presupune că
2
c2 , c3 6= 0, c2 6= , c2 6= c3 .
3
Sunt posibile şi alte forme ale soluţiilor, incluzând cazul singular cu c2 = c3 .
Pentru a alege parametrii liberi c2 , c3 , trebuie considerat termenul princi-
pal al erorii locale de trunchiere. Utilizând ecuaţia (3.1) şi tabela 2.2, termenul
principal este
4
(4) (4)
X
ϕ3 = τ j Fj ,
j=1

unde
(4) 1 1
τ1 = (b2 c32 + b3 c33 ) −
6 24
(4) 1
τ2 = b3 c3 a32 c2 −
8
(4) 1 2 1
τ3 = b3 a32 c2 −
2 24
(4) 1
τ4 = − .
24
Înlocuid acum b2 , b3 şi a3 2 ı̂n expresiile de mai sus obţinem coeficienţii de eroare
ı̂n funcţie de parametrii liberi c2 şi c3 . În final

(4) 6c2 c3 − 4(c2 + c3 + 3


τ1 = −
72
(4) 4c3 − 3
τ2 =
24
(4) 2c2 − 1
τ3 =
24
(4) 1
τ4 = −
24
Cel mult doi dintre aceştia pot fi eliminaţi alegând parametrii liberi, dar ultimul
coeficient rămâne constant, la fel ca ı̂n cazul cu două stadii. O astfel de elimi-
nare nu este strictă conform lui (3.2) dar, ı̂n acest caz ea este simplu de realizat.
(4)
Înlocuind c2 = 21 ı̂n τ3 şi c3 = 34 ı̂n τ2 (4) se elimină aceşti doi coeficienţi. Di
(4)
nou cu c2 = 21 este uşor de arătat că τ1 = 0 dacă c3 = 1.
Aceste două alegeri ale parametrilor liberi ne conduc la următoarele formule
Runge-Kutta de ordinul 3 cu trei stadii, date ı̂n formă tabelară
38 Metode Runge-Kutta

Figura 3.1: Grafic de tip contur al normei erorii principale A(4) pentru o metodă
cu trei stadii RK3

ci aij bi ci aij bi
2 1
0 9 0 6
1 1 1
(3.7) 1 1 2
(3.8)
2 2 3 2 2 3
3 3 4 1
4 0 4 9 1 -1 2 6

Formulele (3.7) şi (3.8) au normele erorii principale A(4) = 0.042 şi respectiv
0.059 şi se pare că (3.7) este cea mai bună dintre cele două. De fapt, aceasta
este foarte aproape de optimul absolut pentru acest model minimul lui ϕ3 apare
pentru c2 = 0.49650, c3 = 0.75175, fiind cu aproximativ 1% mai mică decât
valoarea din (3.7), care va fi numită RK3M. În figura 3.1 se dă un grafic de
tip contur al variaţiei lui A(4) ı̂n funcţie de cei doi parametrii liberi. De notat
că formulele (3.7) şi (3.8) care sunt fracţii cu o singură zecimală. Astfel, pare
imposibil să găsim formule cu un aspect mai simplu. Pentru a obţine minimul
absolut fracţiile 21 , 43 trebuie ı̂nlocuite cu 2000
993 3007
, 4000 , care corespund schimbărilor
ı̂n valorile lui b, dând o formulă mai urâtă decât (3.7). Astfel de consideraţii
estetice nu vor afecta un program pe calculator, dar orice ı̂mbunătăţire a eficienţei
câştigată prin utilizarea optimului va fi neglijabilă deoarece comportarea erorii
nu este dependent sensibilă la valorile lui c2 şi c3 .
3.4. Formule de ordinul al patrulea 39

3.4 Formule de ordinul al patrulea


Obţinerea unui proces Runge-Kutta de ordinul al patrulea este un proces mai
lung şi mai complicat decât ı̂n cazurile ordinelor mai mici, prezentate anterior.
Considerarea tabelei 2.2 ne arată că construirea unui proces RK de ordinul al
patrulea necesită eliminarea a 8 coeficienţi de eroare şi astfel vor fi necesare
mai mult de trei stadii. Din tabela 2.3 se poate vedea că numărul de parametrii
independenţi ı̂ntr-o formulă RK explicită este dat de
s(s + 1)
ηs = , (3.9)
2
unde s este numărul de stadii. Pentru s = 4, se obţine ηs = 10, implicând faptul
că vom avea 8 ecuaţii de condiţie şi doi parametrii liberi, aşa cum a fost ı̂n cazul
modelului RK de ordinul al treilea din secţiunea precedentă.
Egalând coeficienţii (1). . . (8) cu zero, din tabelele 2.1 şi 2.2 se obţin 8 ecuaţii
de condiţie

b 1 + b 2 + b3 + b 4 = 1 (E1)
1
b2 c2 + b3 c3 + b4 c4 = 2 (E2)
1
b2 c22 + b3 c23 + b4 c24 = 3 (E3)
1
b3 a32 c2 + b4 (a42 c2 + a43 c3 ) = 6 (E4)
1
b2 c32 + b3 c33 + b4 c34 = 4 (E5)
1
b3 c3 a32 c2 + b4 c4 (a42 c2 + a43 c3 ) = 8 (E6)
1
b3 a32 c22 + b4 (a42 c22 + a43 c23 ) = 12 (E7)
1
b4 a43 a32 c2 = 24 (E8)

Rezolvarea directă a acestor ecuaţii este imediată dar o abordare mai puternică
se bazează pe relaţiile de simplificare introduse de Butcher ı̂n 1963,
s
X
bi aij = bj (1 − cj ), j = 2, 3, 4 (3.10)
i=1

(3) (4) (4)


care afectează expresiile pentru τ2 , τ3 , τ4 . Înlocuind (3.10) ı̂n expresia lui
(3)
τ2 se obţine

(3)
X 1
τ2 = bj (1 − cj )cj −
6
j
 
(2) 1 (3) 1 1
= τ1 + − 2 τ1 + −
2 6 6
40 Metode Runge-Kutta

(2) (3)
= τ1 − 2τ1 .
(4) (4)
La fel, τ3 şi τ4 se pot exprima ı̂n funcţie de coeficienţii anteriori ai erorii. Este
uşor de verificat că
(4) (3) (4)
τ3 = τ1 − 3τ1
(4) (2) (3) (4)
τ4 = τ1 − 2τ1 − τ2 .

Astfel, condiţia de simplificare (3.10) ne va asigura că coeficienţii de eroare (4),


(7) şi (8) se vor anula când ceilalţi 5 sunt eliminaţi. Cu alte cuvinte, cele trei
ecuaţii de condţie E4, E7 şi E8 se reduc la trei condiţii mai simple. În această
problemă particulară numărul de ecuaţii de rezolvat rămâne acelaşi, indiferent
dacă sunt implicate sau nu condiţii de tip Butcher, dar pentru ordine mai mari şi
mai multe stadii, substituţia lui (3.10) va reduce numărul de ecuaţii independente
care trebuie satisfăcute. Astfel de simplificare este esenţială pentru construirea
proceselor Runge-Kutta de ordin ı̂nalt.
Rezolvarea continuă după cum urmează: luând j = 4 ı̂n (3.10) şi punând
aij = 0, j ≥ i se obţine

b4 (1 − c4 ) = 0 ⇒ c4 = 1,

deoarece o formulă cu 4 stadii necesită b4 6= 0. Ca ı̂n cazul ordinului 3, c2 şi c3


sunt aleşi ca parametrii liberi. Atunci cele trei ecuaţii E2, E3 şi E5, care sunt
liniare ı̂n bi , ne conduc la
1 − 2c3
b2 = ,
12c2 (1 − c2 )(c2 − c3 )
1 − 2c2
b3 = ,
12c3 (1 − c3 )(c3 − c2 )
6c2 c3 − 4(c3 + c2 ) + 3
b4 = ,
12(1 − c2 )(1 − c3 )

şi atunci, utilizând j = 3 ı̂n (3.10), se obţine

(1 − c2 )(2c2 − 1)(1 − c3 )
a43 = .
c3 (c2 − c3 )(6c2 c3 − 4(c3 + c2 ) + 3)

În final, ecuaţiile E8 şi (3.10) cu j = 2 ne dau

c3 (c2 − c3 )
a32 = ,
2c2 (2c2 − 1)
3.4. Formule de ordinul al patrulea 41

(1 − c2 )[2(1 − c3 )(1 − 2c3 ) − (c2 − c3 )]


a42 = .
2c2 (c2 − c3 )[6c2 c3 − 4(c2 + c3 ) + 3)]

Alţi parametrii rezultă din E1 şi din condiţia sumei liniilor (2.18), obţinându-se
o familie de formule cu trei parametrii subiect al condiţiilor asupra lui c2 şi c3
listată mai sus. Această soluţie presupune că
1
c2 6= 0, 1, c3 6= 0, 1 c2 6= c3 , c2 6= .
2
Există şi alte posibiltăţi şi o formulă bine-cunoscută se bazează pe cazul singular
c2 = c3 şi va fi subiectul unei probleme ı̂n ultima secţiune a acestui capitol.
Utilizând tabela Butcher modificată, un membru (c2 = 13 , c3 = 23 ) al acestei
familii are forma
ci aij bi
1
0 8
1 1 1 (3.11)
3 3 8
2
3 − 13 1 3
8
1
1 1 -1 1 8

Ca la procesele Runge-Kutta de ordinul al treilea este natural să căutăm valo-


rile celor trei parametrii care definesc formula de ordinul 4 optimală. În acest
caz, funcţia de eroare principală ϕ4 are nouă coeficienţi de eroare, dar deoarece
parametrii RK satisfac condiţia Butcher (3.10), acestea pot fi utilizate pentru a
(5)
simplifica coeficienţii. De exemplu, ı̂nlocuid (3.10) ı̂n expresia lui τ4 se obţine

(5) 1X 1
τ5 = bj (1 − cj )c3j −
6 120
j
(4) (5)
= τ1 − 4τ1
(5)
= −4τ1 ,
(4)
deoarece τ1 = 0 pentru orice proces de ordinul al patrulea. În plus, este uşor
de arătat că
(5) (5) (5) (5) (5) (5)
τ6 = −τ9 = 1/120, τ7 − 2τ2 , τ8 = −τ4 .

Deoarece sunt numai 5 coeficienţi independenţi, procesul de minimizare se apli-


că
r 
(5) (5) 2
 
(5) 2
 
(5) 2
 
(5) 2
 1
A = 17 τ1 + 5 τ2 + τ3 + 2 τ4 + .
7200
42 Metode Runge-Kutta

Figura 3.2: Grafic contur al normei erorii principale A(5) pentru o RK4 cu 4
stadii

În funcţie de parametrii liberi c2 şi c3 , coeficienţii relevanţi ai erorii se pot scrie
sub forma
(5) (10c2 − 5)c3 − 5c2 + 3
τ1 =
1440
(5) 3 − 5c3
τ2 =
240
(5) 10c23 (3c2 − 2) + 2c22 (3 − 7c3 ) + 3c3 (9 − 14c2 ) + 3(5c2 − 3)
τ3 =
480(2c2 − 1)[6c2 c3 − 4(c2 + c3 ) + 3)]
(5) 2 − 5c2
τ4 = .
240
Graficul de tip contur din figura 3.2 ne arată comportarea funcţiei A(5) ı̂n ve-
5 13
cinătatea minimului,care este foarte apropiat de c2 = 14 , c3 = 22 . Totuşi funcţia
are gradienţi foarte mici ı̂n vecinătatea minimului şi o formulă foarete apropiată
de cea optimală (RK44M) este dată ı̂n tabela 3.1. Deoarece doi coeficienţi ai ero-
rii sunt constanţi nu este posibil să obţinem ı̂mbunătăţiri substanţiale comparativ
cu formula (3.11). Norma erorii pentru cele două formule este
A(5) (RK44M) = 0.0123, A(5) (3.11) = 0.0127,
şi deci performanţele celor două formule nu vor diferi substanţial.
Adăugând un al cincilea stadiu (η5 = 15) se adaugă 5 parametrii RK su-
plimentari şi deci o mai mare posibilitate de a reduce mărimea lui A(5) . Deza-
vantajul este creşterea complexităţii şi un cost mai mare al calculelor pe pas. Să
3.4. Formule de ordinul al patrulea 43

ci aij bi
11
0 72
2 2 25
5 5 72
3 3 3 25
5 − 20 4 72
19
1 44 − 15
44
10
11
11
72

Tabela 3.1: O formula RK de ordinul 4 cu 4 stadii aproape optimală (RK44M)

considerăm o astfel o astfel de formulă. Ca ı̂ntr-un proces cu 4 stadii, ecuaţiile de


simplificare ale lui Butcher (3.10) se vor aplica, dar cu un membru suplimentar
pentru j = 5. Aceasta elimină aceiaşi coeficienţi de eroare ca in cazul procesului
cu 4 stadii, dar cu preţul unei restricţii suplimentare. O simplificare şi mai mare
se obţine impunând o a doua condiţie Butcher
i−1
X 1
aij cj = c2i , i = 3, 4, 5. (3.12)
2
j=1

(4)
Înlocuind (3.12) ı̂n coeficientul τ2 se obţine
5  
(4)
X 1 2 1
τ2 = bi ci c −
2 i 8
i=3
(4)
= 3τ1 ⇔ b2 = 0.

Ecuaţiile rămase pentru formula de ordinul 4 cu 5 stadii sunt


(i)
τ1 = 0, i = 1, 2, 3, 4,

ı̂mpreună cu 8 condiţii Butcher. De fapt, numărul de ecuaţii a crescut cu 2, dar ele


au o formă mai simplă decât condiţiile directe obţinute din coeficienţii de eroare
RK. Rămân trei grade de libertate şi acestea se pot alege astfel ca să minimizeze
funcţia de eroare principală A(5) , care se poate scrie sub forma
r
(5) 2 (5) 2 (5) 2
     
A(5) = 206 τ1 + 2 τ4 + 2 τ6 .

Deşi s-ar părea că cei trei coeficienţi independenţi ai erorii pot fi eliminaţi prin
combinaţii potrivite ai celor trei parametrii liberi, nu este posibil ı̂n acest caz
să se obţină o formulă de ordinul al cincilea. Se poate arăta (Hairer, Nørsett şi
Wanner, 1993, [12]) că nu există nici o formulă RK cu 5 stadii de ordinul 5. În
44 Metode Runge-Kutta

ci aij bi
13
0 96
1 1
5 5 0
2 2 25
5 0 5 48
4 6
5 5 − 12
5 2 25
96
−17
1 8 5 − 25 5
8
1
12

Tabela 3.2: O formulă RK de ordinul 4 cu 5 stadii (RK45M)

Ordinul p 2 3 4 5 6 7 8 9 10
Xp
ni 2 4 8 17 37 85 200 486 1205
i=1

Tabela 3.3: Numărul de coeficienţi de eroare RK până la ordinul 10

tabela 3.2 se dă un exemplu de formulă RK de ordinul 4 cu 5 stadii, devoltată de


Prince ı̂n teza sa de doctorat ı̂n 1979 şi desemnată prin RK45M. Cu o normă a
erorii principale, A(5) = 0.00199, mult mai mică decât a procesului cu 4 stadii
RK44M, această formulă cu cinci stadii va da o precizie mai bună pentru o lun-
gime dată a pasului. Această ı̂mbunătăţire este mai mult decât adecvată pentru
a compensa costul de calcul suplimentar pe pas şi rezultatele prezentate mai jos
vor arăta că o formulă cu 5 stadii este mult mai eficientă decât una cu patru stadii.

3.5 Formule de ordinul al cincilea şi mai mare


Trecând la ordinul 5, se vede din tabela 2.2 că trebuie satisfăcute 17 ecuaţii
de condiţie. Dacă s este numărul de stadii din procesul RK, atunci ηs > 17 şi s
trebuie să satisfacă
1
s(s + 1) > 17.
2
Cea mai mică valoare a lui s ce satisface această inegalitate este 6. Utilizarea
condiţiilor de simplificare, cum ar fi (3.10), este esenţială ı̂n construcţia metode-
lor de ordinul al 5-lea sau mai mare. Nu se prezintă aici nici o formulă de ordinul
5 nu se prezintă aici deşi mai târziu se va da un exemplu. Pentru ordine ı̂nalte
(> 5) numărul de eroare creşte rapid, aşa cum se arată ı̂n tabela 3.3. Din fericire,
mulţi dintre coeficienţii de ordin ı̂nalt pot fi făcuţi dependenţi impunând condiţii
3.6. Motivaţia pentru formule de ordin ı̂nalt 45

Butcher [1]
s
X
bi aij = bj (1 − cj ), j = 2, 3, . . . , s (3.13)
i=1

şi ı̂n plus, b2 = 0 cu


i−1
X 1
aij cj = c2i , i = 3, 4, . . . , s. (3.14)
2
j=1

Aceste realţii reduc numărul total de condiţii ce apar ı̂n cazul ordinelor ı̂nalte.
Considerăm obţinerea unui proces de ordinul 6 ı̂n care apar 36 de ecuţii . Pentru
ηs > 37, ecuaţia (3.9) ne dă s ≥ 9. Cu reducerea de condiţii datorate relaţiilor
Butcher, numărul minim de ecuaţii necesare pentru o formulă de ordinul al 6-lea
este 7. Reducerea pentru ordinul 8 este şi mai drastică. O formulă RK de ordinul
8 poate fi obţinută cu numai 11 stadii. Trebuie admis că, pentru procese de ordin
foarte mare, condiţiile (3.13) şi (3.14) sunt suplimentate cu relaţii suplimentare
de simplificare. Aceasta nu sugerează ı̂n nici un caz că o construcţie a unei astfel
de formule ar fi simplă!

3.6 Motivaţia pentru formule de ordin ı̂nalt


De ce căutăm formule de ordin ı̂nalt? O formulă de ordinul 5 necesită de
două ori mai multe stadii decât una de ordinul 3 şi astfel costul de calcul se
dubleză prin creşterea ordinului algebric cu 2. Aceasta se poate justfica numai
printr-un câştig de eficienţă comptaţională. Urmând §2.5, presupunem că eroarea
globală a unei estimaţii de soluţie numerică de ordinul p y(b), b = xN , este
ε(xN ) = Chp , unde h este lungimea pasului. Aplicarea logaritmului ne dă

log ε = log C + p log h.

Presupunând că integrarea se face cu pas constant pe [a,b], lungimea pasului este
h = (b − a)/N şi astfel

log ε = B − p log N,
B = log C + p log(b − a).

Această relaţie este ilustrată pentru două formule cu ordin diferit p şi q, ı̂n Figura
3.3.
Dacă relaţia liniară este validă, atunci există o valoare a lui N de mai sus
pentru care formulele de ordin ı̂nalt conduc la o eroare mai mică şi sub care
46 Metode Runge-Kutta

Figura 3.3: Eroarea globală pentru diferite ordine

procesul de ordin mic este mai precis. În diagramă (figura (3.3) valoarea critică
a lui n apare ı̂n log ε = −4. Aceasta implică faptul că o formulă de ordinul q
este de preferat când se caută o precizie mai mare.
Cu metode Runge-Kutta volumul de efort pe pas este proporţional cu nu-
mărul de stadii s (evaluări de funcţii) pe pas. Deoarece numărul total de stadii
pentru integrare este F = N s se ajunge la o relaţie a erorii costului (error-cost
relation)
log ε = D − p log F,
D = B + p log s,
care este similară cu ultima ecuaţie. Din aceasta, se trage concluzia că, ı̂n compa-
ratı̂e cu formulele RK de diferite ordine, metoda de ordin mai mare este cea mai
eficientă când lungimea pasului este suficient de mică. Desigur, problemele cu
cerinţe de eroare moderate pot fi rezolvate mai bine cu formule de ordin moderat.
Aceste argumente au neglijat efectul erorilor de de rotunjire, care va depinde de
preczia aritmeticii calculatorului. Propagarea erorilor de rotunjire nu este chiar
aşa de uşor de cuantificat ca şi precizia matematică. Totuşi se poate presupune ca
va fi proporţional cu numărul de paşi şi pentru N suficient de mare, va domina
soluţia. Precizia aritmetică va defini o limită inferioară a erorii realizabile.

3.7 Exemple
Secţiunile precedente din acest capitol au fost consacrate obţinerii unor for-
mule Runge-Kutta de ordin ı̂nalt. Vom verifica acum prin calcul direct pro-
3.7. Exemple 47

prietăţile metodelor construite. În particular, vor fi investigate aserţiunile referi-


toare la procesele RK optimale şi de asemenea importanţa comportării asimpto-
tice. Funcţia M ATLAB Runge Kutta, implementează o metodă Runge-Kutta
cu pas constant, pornind de la tabela Butcher. Iată sursa acestui program:
function [x,y,nfev]=Runge Kutta(f,tspan,alpha,N,BT)
%metoda Runge-Kutta cu pas constant
%apel [t,y,nfev]=Runge Kutta(f,tspan,alpha,N,BT)
%f -functia din membrul drept
%tspan - intervalul [a,b]
%alpha - valoarea de pornire
%N - numarul de pasi
%BT - procedura care furnizeaza tabela Butcher
%t - abscisele
%y - ordonatele componentelor
%nfev - numarul de evaluari de functii

[a,b,s]=feval(BT);
c=sum(a’);
h=(tspan(end)-tspan(1))/N; %lungime pas
xc=tspan(1); yc=alpha(:);
x=xc; y=yc’;
K=zeros(length(alpha),s);
for k=1:N %iteratia RK
K(:,1)=feval(f,xc,yc);
for i=2:s
K(:,i)=feval(f,xc+c(i)*h,yc+h*(K(:,1:i-1)*...
a(i,1:i-1)’));
end
yc=yc+h*(K*b);
xc=xc+h; %pregatesc iteratia urmatoare
x=[x;xc]; y=[y;yc’];
end
if nargout==3
nfev=s*N;
end

Parametrul funcţie BT returnează numărul de stadii, matricea a şi vectorul


b care definesc metoda. Vectorul c se obţine din condiţia sumei liniilor. De
exemplu, pentru metoda RK45M, procedura de iniţializare a tabelei Butcher este
function [a,b,s]=RK45M
s=5; a=zeros(s,s-1);
a(2:s,1:s-1)=[1/5,0,0,0; 0, 2/5, 0, 0; 6/5, -12/5, 2,...
0; -17/8, 5, -5/2, 5/8];
b=[13/96; 0; 25/48; 25/96; 1/12];
48 Metode Runge-Kutta

Programul a fost rulat pentru problema gravitaţională a două corpuri, scrisă


aici sub forma unui sistem de patru ecuaţii de ordinul I
1 0 3
y = y
2 0 4
y = y
3 0
y = − 1 y/r3
3 0
y = − 1 y/r3
p
r = 1y2 + 2y2,

cu condiţiile iniţiale

y(0) = [cos x, sin x, − sin x cos x]T .

Aplicând o metodă numerică unei probleme cu soluţia exactă cunoscută, se poate


determina eroarea la orice pas. Aceasta permite compararea diferitelor procese
Runge-Kutta.
De fapt această problemă de orbită nu este un test sever pentru nici un rezol-
vitor numeric de ecuaţii diferenţiale, dar ea poate fi făcută mai dificilăschimbând
valorile iniţiale.
Pentru a putea compara costurile funcţia Runge-Kutta returnează şi nu-
mărul de evaluări de funcţii. Rezultatul comparării metodelor RK3M, RK44M
şi RK45M este reprezentat grafic ı̂n figura 3.4. Ecuaţiile orbitei au fost integrate
pe intervalul [1,10], iar eroarea la capatul drept a fost reprezentatăı̂n funcţie de
numărul de operaţii. Scările sunt logaritmice şi fiecare punct reprezintă o inte-
grare completă pe [0,10]. Curbele sunt liniare pe porţiuni. Aşa cum s-a prevăzut
ı̂n ultima secţiune cele duă formule de ordinul 4 produc grafice cu panta -4, ı̂n
timp ce formula de ordinul 3 dă un gradient mai puţin ı̂nclinat (vezi figura 3.3)
O caracteristică vizibilă ı̂n figura 3.4, dar neanticipată ı̂n figura 3.3 este compor-
tarea neliniară pentru valori mari ale pasului. Aceasta nu este o surpriză prea
mare deoarece comportarea asimptotică depinde de o cantitate mică, lungimea
pasului, care trebuie să fie suficient de mică. Partea din stânga sus a diagramei
ilustrează comportarea pentru paşi relativ mari.
Minimizarea erorii de trunchiere este bine justificată de performanţele for-
mulei cu 5 stadii RK45M comparativ cu RK44M. În ciuda costului suplimentar
de calcul pe pas (25%), metoda cu 5 stadii este mai economică dintre cele două
pentru orice eroare globală specificată. Cu alte cuvinte, norma mai mică a erorii
permite un pas mai mare pentru o eroare dată. Aceste rezultate sunt obţinute
pentru o singură problemă dar testele pentru o gamă largă de sisteme de ecuaţii
3.7. Exemple 49

Figura 3.4: Eroarea de integrare pentru problema orbitei cu trei metode. Pe


abscisă apare numărul de evaluări, iar pe ordonată eroarea la capătul drept.

susţin aceeaşi concluzie. Deşi curbele de eroare pentru ordinele 3 şi 4 se in-
tersectează, aşa cum a sugerat figura 3.3, trebuie notat că precizia pentru care
formula de ordin mic este mai economică este chiar mică. Din nou acesta este un
rezultat tipic. Utilizarea formulelor de ordin mic nu este probabil să fie eficientă
dacă se cere precizie şi singura justificare de utilizare a formulelor de ordinul 3
este obţinerea unei soluţii grosiere pe un interval mic al variabilei independente.
În practică, formulele RK4 ar putea fi considerate de ordin mic.
Comentariile de mai sus ar putea surprinde acei cititori care sunt adepţi ai re-
zolvitorilor ,,simpli”. În aceste zile când se când se dispune de microcalculatoare
puternice, de ce nu evităm complicaţiile implementării unor algoritmi sofisticaţi
ı̂n favoarea efectuării unui număr mare de paşi simpli, să zicem ai metodei lui
Euler? Înainte de toate se ştie că orice proces RK consistent este convergent şi
calculul unui milion de paşi nu durează foarte mult. Pentru a răspunde la această
problemă să rezolvăm o problemă simplă de test

y 0 = y cos x, y(0) = 1, x ∈ [0, 10] (3.15)

cu metoda lui Euler. Rezultatele apar ı̂n tabela 3.4. Înjumătăţirea pasului are
efectul predictibil de ı̂njumătăţire a erorii globale. Totuşi dacă numărul de paşi
50 Metode Runge-Kutta

Nr. de paşi Eroarea ı̂n x = 10


100 9.176201e-002
200 4.745479e-002
400 2.414811e-002
800 1.218293e-002
1600 6.119169e-003
3200 3.066571e-003
6400 1.535040e-003
12800 7.679597e-004
25600 3.840899e-004
51200 1.920725e-004
102400 9.604313e-005

Tabela 3.4: Metoda lui Euler aplicată ecuaţiei (3.15)

Paşi Costul Eroarea ı̂n x = 10


(e. f.)
10 50 2.992587e-003
20 100 1.092587e-004
40 200 3.275621e-006
80 400 9.652916e-008
160 800 2.722900e-009
320 1600 6.779932e-011
640 3200 1.053491e-012
1280 6400 3.508305e-014

Tabela 3.5: RK45M aplicată ecuaţiei (3.15)

creşte foarte mult, eroarea de rotunjire poate depăşi eroarea metodei, chiar şi ı̂n
dublă precizie.

Deoarece formulele de ordin ı̂nalt necesită mai puţine operaţii ele sunt mai
puţin afectate de erorile de rotunjire. Rezultatul aplicării metodei RK45M e-
cuaţiei (3.15) sunt arătate ı̂n tabelul 3.5. Întâi, trebuie accentuat că formula de
ordinul 4 dă rezultate mai precise ı̂n numai 20 de paşi decât ı̂n metoda lui Euler cu
25000 de paşi. Implicaţiile rezultatelor de mai sus sunt clare: este puţin probabil
ca metodele cu ordin foarte mic (p < 4) să dea rezultate foarte precise, indiferent
de efortul de calcul şi ele trebuie pe cât posibil evitate.
3.8. Probleme 51

3.8 Probleme
Problema 3.8.1. Găsiţi soluţia numerică ı̂n x = 0.4 pentru h = 0.2 şi h = 0.4 a
ecuaţiei
y0 = 1 − y2, y(0) = 0,
cu integratori (a) RK2, (b) RK3 (c) RK4. Calculaţi ı̂n fiecare caz eroarea globală
ε utilizând soluţia exactă
e2x − 1
y(x) = 2x
e +1
şi confirmaţi faptul că este consistentă cu predicţia că ε = O(hp ), pentru o for-
mulă de ordin p. Consideraţi de asemenea eroarea locală la primul pas ı̂n fiecare
caz.
Problema 3.8.2. Arătaţi că numărul de parametrii RK independenţi ı̂ntr-o for-
mulă cu s stadii este ηs = s(s + 1)/2.
Problema 3.8.3. Construiţi o metodă RK3 cu trei stadii cu c2 = c3 .
Obţineţi parametrii RK pentru formula generală dedusă ı̂n §3.4 pentru cazul
c2 = 5/14, c3 = 13/22.
Problema 3.8.4. Aplicaţi relaţiile Butcher (3.13) coeficienţilor de eroare de or-
(5)
dinul 5 pentru a arătă că, ı̂n aceste condiţii, τi , i = 5, 7, 8, 9 depind de alţi
coeficienţi. Aplicaţi al doilea set de condiţii de simplificare (3.14) altor coefi-
cienţi convenabili de ordinul al 5-lea. În particular arătaţi că
s
(5) (5) 1 X
τ6 = τ4 − c22 bi ci ai,2 .
2
i=1

Problema 3.8.5. Considerăm ecuaţiile de condiţie pentru o metodă RK de ordi-


nul 4 cu 4 stadii ı̂n cazul singular c2 = c3 ; arătaţi că c = 12 şi apoi obţineţi ceilalţi
parametrii ı̂n funcţie de b3 . Veţi găsi că formula

ci aij bi
1
0 6
1 1 1 (3.16)
2 2 3
1 1 1
2 0 2 3
1
1 0 0 1 6

aparţine acestei clase. Găsiţi coeficienţii erorii principale a acestei formule şi
comparaţi norma erorii sale cu norma altor metode de ordinul 4 din text.
52 Metode Runge-Kutta

Problema 3.8.6. Cele trei tabele de mai jos ilustrează numărul de evaluăr de
funcţii F = N s şi eroarea globală corespunzătoare ε la sfârşitul aplicării a trei
metode RK pentru aceeaşi ecuaţie diferenţială. Estimaţi ordinul metodei RK din
fiecare tabelă.
F log10 ε F log10 ε F log10 ε
2221 -2.31 3801 -4.93 4533 -7.22
2833 -3.44 4689 -6.04 5632 -7.72
4039 -4.43 6801 -7.17 6018 -8.45
6385 -5.44 9953 -8.27 7648 -9.96
10105 -6.48 14593 -9.36 10108 -10.65

Problema 3.8.7. Obţineţi formule pentru o familie de procese RK4 ı̂n 5 stadii
conform
P5 schemei descrise ı̂n §3.4. Pentru a simplifica soluţia impuneţi condiţia
i=3 bi ci ai,2 = 0 şi arătaţi că aceasta face coeficienţii erorii independenţi de
c2 . Deduceţi de aici sau altfel, că formula cu 5 stadii nu poate fi de ordinul al
cincilea. Găsiţi o formulă cu norma erorii mai mică decât RK45M.

Problema 3.8.8. Utilizaţi funcţia Runge-Kutta completată cu funcţii de ini-


ţializare şi de calcul al membrului drept pentru a rezolva ecuaţiile

(a) y 0 = 41 y 1 − 20 1

y , x ∈ [0, 20], y(0) = 1, cu soluţia exactă y(x) =
20/ 1 + 19e−x/4 .


(b) y 00 = 0.032 − 0.4(y 0 )2 , x ∈ [0, 20], y(0) = 30, y 0 (0) = 0; cu


soluţia exactă
(
5

y(x) = √ 2 log(cosh(2 2x/25)) + 30,
0 2

y (x) = 5 tanh(2 2x/25)

Aplicaţi formule de ordinul al treilea şi al patrulea fiecărei probleme ı̂n intervalul
specificat, pentru lungimi ale pasului din ce ı̂n ce mai mici ı̂ncepând cu h = 1.
Includeţi procesul din problema 3.8.5 ı̂n testele dumneavoastră. Tabelaţi eroarea
globală maximă, peste toţi paşii şi variabilele şi costul de calcul ı̂n timpi CPU şi
evaluări de funcţii.

Problema 3.8.9. Determinaţi cea mai mică eroare globală posibilă ı̂n x = 10
când metoda lui Euler se aplică ecuaţiei

y 0 = y cos x, y(0) = 1

utilizând aritmetica ı̂n simplă şi dublă precizie.


3.8. Probleme 53

Problema 3.8.10. Aplicaţi RK45M sistemului de ecuaţii ce modelează problema


gravitaţională a celor două corpuri (prima din §3.7 cu condiţia iniţială
h p iT
y(0) = 0.5, 0.0, 0.0, (3)

pentru h = 0.1 şi x ∈ [0, 2π]. Desenaţi graficele lui 2 y ı̂n funcţie de 1 y şi
respectiv 3 y şi 4 y ı̂n funcţie de x (orbita va fi o elipsă cu excentricitatea 0.5).
54 Metode Runge-Kutta
Capitolul 4

Controlul pasului

4.1 Introducere
În capitolul precedent am examinat unele proprietăti ale metodelor Runge-
Kutta aplicate pentru paşi constanţi. De asemenea, valoarea lungimii pasului
a fost aplicată ı̂ntr-o manieră arbitrară, deşi variaţia sa ilustrează proprietăţile
legate de ordin ale diverselor scheme.
Utilizarea aritmeticii de precizie cu lungimi mici ale pasului conduce la
soluţii precise pentru problemele simple abordate. Pentru multe probleme prac-
tice, pasul constant nu este recomandat, deoarece derivatele pot varia foarte mult
ı̂n mărime. Dacă lungimea pasului este constantă, este foarte probabil ca proce-
sele RK sau de alt tip să furnizeze erori locale care să varieze de la pas la pas
conform variabilităţii funcţiei de eroare. Intuiţia ne spune ca o astfel de caracte-
ristică nu este de dorit. O propunere mai atractivă ar fi o soluţie ale cărei erori
locale să varieze puţin sau eventual proporţional cu lungimea pasului. Din expre-
sia matematică a erorii locale de trunchiere, se poate vedea că aceste proprietăţi
implică variaţii ale dimensiunii pasului.
Pentru orice metodă, relaţia ı̂ntre eroarea locală şi dimensiunea pasului este
bine cunoscută şi cele mai cunoscute scheme de predicţie a lungimii pasului fac
uz de ea. În loc să fixăm lungimea pasului, se face o ı̂ncercare de a delimita eroa-
rea locală (de trunchiere) şi această delimitare este utilizată pentru a determina
dimensiunea pasului. Ideal, ar fi de preferat o margine a erorii globale, dar, ı̂n
practică, eroarea locală este mult mai uşor de estimat. Rezultatele practice con-
firmă faptul că controlul erorii locale conduce la controlul erorii globale. Acest
capitol este consacrat schemelor de estimare a erorii şi controlului lungimii pa-
sului.
O altă restricţie care afectează dimensiunea pasului este o anumită frecvenţă

55
56 Controlul pasului

a ieşirilor. În anumite aplicaţii ar putea fi necesară rezolvarea unui sistem de


ecuaţii diferenţiale pe intervale a căror dimensiune nu are nici o legătură cu nici
un criteriu de eroare. Această cerinţă este uşor de satisfăcut cu preţul calcului
unor paşi suplimentari, dar o abordare mai sofisticată a acestei probleme va fi
considerată ı̂n capitolul următor.

4.2 Predicţia lungimii pasului


La controlul dimensiunii pasului pentru integrarea unui sistem de ecuaţii di-
ferenţiale y 0 = f (x, y), este necesar să prevedem o valoare a lungimii pasului
care urmează după un care a fost deja calculată. Să presupunem că a fost cal-
culată o lungime de pas hn şi de asemenea să presupunem că este posibil să
estimăm eroarea locală en+1 a soluţiei calculate yn+1 . În general, eroarea locală
(vezi capitolul 2) pentru o metodă de ordinul p poate fi exprimată ca
en+1 = hp+1 p+2
n ϕp (xn , yn ) + hn ϕp+1 (xn , yn ) + . . . (4.1)
De exemplu ı̂n metoda dezvoltării Taylor termenul principal este
y (p+1) (xn )
ϕp = ,
(p + 1)!
ceea ce face procesul de estimare a erorii foarte direct. Bazat pe calculul unui
termen suplimentar al seriei, costul nu este excesiv relativ la cel al ı̂ntregului
proces.
Eroarea locală la pasul următor, de lungime hn+1 va fi specificată ı̂n acelaşi
mod. Presupunând că lungimea pasului este pozitivă, se poate scrie
ken+1 k = hp+1
n kϕp (xn , yn ) + hn ϕp+1 (xn , yn ) + . . . k
ken+2 k = hp+1
n+1 kϕp (xn+1 , yn+1 ) + hn ϕp+1 (xn+1 , yn+1 ) + . . . k.

Aceste relaţii ne dau


hp+1
n kϕp (xn , yn ) + hn ϕp+1 (xn , yn ) + . . . k ken+2 k
hp+1
n+1 = ×
kϕp (xn+1 , yn+1 ) + hn ϕp+1 (xn+1 , yn+1 ) + . . . k ken+1 k
ken+2 k
= hp+1
n θ ,
ken+1 k
unde θ = 1+O(hn ). Să presupunem acum că marginea acceptată pentru eroarea
la pasul n + 1, numită toleranţă, este ken+2 k = T . Atunci dimensiunea adecvată
a pasului se prevede a fi
  1
θT p+1
hn+1 = hn . (4.2)
ken+1 k
4.3. Estimarea erorii 57

Pentru hn mic, factorul θ este apropiat de unitate, dar pentru a fi conservatori


se alege o valoare mai mică. Astfel, o formulă larg acceptată pentru predicţia
lungimii pasului hn+1 , după un pas cu succes hn , este
  1
T p+1
hn+1 = 0.9hn , kδn+1 k ≤ T, (4.3)
kδn+1 k

unde δn+1 este o estimare a erorii locale en+1 . Se poate utiliza orice normă,
dar de obicei se preferă norma maximului. În acest caz raportul a două funcţii
principale de eroare se alege astfel ca
1
θ p+1 = 0.9.

Valoarea 0.9 este un factor de siguranţă tipic şi este efectivă ı̂n multe aplicaţii.
Nu toţi autorii fac aceeaşi alegere, dar valoarea precisă a lui θ serveşte doar
pentru modificarea toleranţei efective. Termenii parametru al strategiei şi factor
de reducere optimal se aplică ı̂n acelaşi context. Desigur, nevoia unui astfel de
parametru derivă din natura non-asimptotică a procesului numeric pentru valori
mari ale lui hn decurgând din toleranţe largi. Aceasta este adevărat ı̂n particular
când se aleg procese de ordin ı̂nalt (p mare).
Procesul de integrare continuă cu pasul n + 1 de lungime dată de eqrefec5.3
numai dacă kδn+1 k ≤ T . Dacă kδn+1 k > T , eroarea locală este prea mare
pentru a fi acceptată şi pasul trebuie respins. Din fericire, aceeaşi formulă (4.3)
este utilă pentru a estima lungimea redusă a pasului pentru aplicare repetată, care
lungime trebuie să fie mai mică decât hn . Pentru valori mari ale lui kδn+1 k/T se
poate presupune că pasul este prea mare pentru a justifica comportarea asimpto-
tică şi atunci se reduce lungimea ı̂ntr-o manieră arbitrară, probabil cu un factor
egal cu 2 sau chiar cu un ordin de mărime.
Au fost concepute şi scheme mai sofisticate, bazate pe estimări ale erorii
pentru doi sau mai mulţi paşi succesivi. Acestea au fost incluse ı̂n unele pachete
de rezolvare a ecuaţiilor diferenţiale, dar metodele mai simple descrise mai sus
sunt foarte robuste şi cu eficienţă rezonabilă, ı̂n particular dacă se pun restricţii
asupra factorului de amplificare al pasului. Vom da mai târziu un exemplu de
acest tip.

4.3 Estimarea erorii


Cu metoda seriilor Taylor estimarea erorii locale este foarte simplă, deoarece
termenul pricipal din eroarea locală poate fi determinat ı̂n acelaşi mod ca ceilalţi
termeni c contribuie la polinomul Taylor.
58 Controlul pasului

Pentru a ilustra procedura de estimare a erorii – control al pasului, se consi-


deră doi paşi ai rezolvării numerice pentru ecuaţia
1
y 0 = y 3 − y, y(0) = ,
2
utilizând o serie Taylor de ordinul 2 cu o lungime de incercare a pasului h0 = 0.2
cu o toleranţă a erorii locale T = 10−3 . Soluţia exactă a acestei probleme este
y(x) = 1/sqrt1 + 3e2x . formula dedusă din polinomul Taylor de ordinul al
doilea este
h2
yn+1 = yn + hn yn0 + n yn00
2
iar eroarea locală are termenul principal

h3n 000
δn+1 = y ,
6 n
care va servi ca estimator al erorii. Derivatele de ordin superior sunt

y 00 = (3y 2 − 1)y 0 , y 000 = 6y(y 0 )2 + (3y 2 − 1)y 00 .

vValorile derivatelor ı̂n (0, 1/2) sunt

3 3 51
y00 = − , y000 = , y(0)000 = ,
8 32 128
aşa că soluţia de ordinul al doilea este
3 3 1
y1 = 0.5 − · (0.2) + · (0.2)3 = 0.426875,
8 32 2
cu eroarea locală principală
51 1
δ1 = · (0.2)3 = 0.531 × 10−3 .
128 6
Deoarece |δ1 | < T , pasul este acceptabil şi vom folosi (4.3) pentru a calcula
lungimea h1 a pasului următor. Aceasta ne dă

h1 = 0.9h0 (10−3 /0.531 × 10−3 )1/3 = 0.222284.

Al doilea pas necesită o nouă evaluare a derivatelor, cu noua condiţie iniţială


(0.2,0.426875). Astfel

y10 = −0.349089, y100 = 0.158254, y1000 = 0.240380,


4.3. Estimarea erorii 59

din care se obţine al doilea pas al soluţiei


y2 = 0.353188 ' y(0.422284) = 0.353975.
Estimarea erorii locale şi predicţia pentru al treilea pas sunt
δ2 = 0.440 × 10−3 , h2 = 0.263027.
Toate cantităţile din calculele de mai sus au fost rotunjite la 6 zecimale. Proce-
dura de control al pasului a operat cu succes pentru primii doi paşi. Următorii
paşi se calculează la fel, dar este clar că punctele soluţiilor x4 , x5 , . . . nu sunt
predictibile ı̂n acest stadiu.
În exemplul de mai sus procedura de control al pasului a funcţionat cu suc-
ces, dar ı̂n anumite cazuri când eroarea estimată depăşeşte toleranţa, indicând o
soluţie cu o precizie inacceptabilă. Când se ı̂ntâmplă aceasta, pasul trebuie res-
pins, iar formula (4.3) este utilizată pentru a calcula un pas cu lungimea redusă,
cu care procesul de integrare este repornit. Această procedură poate fi ilustrată
considrând aceeaşi problemă ca mai sus, dar cu o toleranţă nai mică, T = 10− 4.
Cu un pas de ı̂ncercare h = 0.2, estimarea erorii locale δ1 = 0.531 × 10−3 > T
este acum prea mare, indicând faptul că pasul trebuie respins. Un pas cu lungime
redusă
h∗0 = 0.9h0 (10−4 /0.531 × 10−3 )1/3 = 0.103175
ne va sigura o precizie suficientă. Pasul revizuit este
3 3
y1 = 0.5 − × (0.103175) + × 12(0.103175)2
8 32
= 0.461808 h y(0.103175) = 0.461878,
iar noua estimare a erorii locale δ1 = 0.729 × 10−4 < T , ceea ce confirmă faptul
că este acceptabilă.
Tipul de control al pasului practicat aici conduce la soluţii numerice obţinute
pentru valori ale variabilei independente care nu sunt predictibile decât pentru
un singur pas ı̂n avans. Acest lucru este considerat uneori un dezavantaj. Totuşi,
controlul erorii locale va genera lungimi ale pasului mai mici acolo unde este
necesar, furnizând deci mai multă informaţie acolo unde este nevoie pentru a
caracteriza soluţia. În acele regiuni ı̂n care coeficienţii de eroare sunt foarte
mici, sunt necesare mai puţine puncte ale soluţiei. Dacă este nevoie de valori ale
soluţiei ı̂ntr-un punct specific este nevoie de un pas suplimentar. Presupunem că
y(X) este o valoare specificată a soluţiei. Atunci se poate integra problema cu
paşi variabili obţinându-se şirul de puncte de ieşire x1 , x2 . . . . Se ajunge la o
valoare n astfel ı̂ncât
xn < X < xn+1 , hn = xn+1 − xn
60 Controlul pasului

sugerând ca valoarea hn să fie ı̂nlocuită cu h∗n = X − xn . Paşii următori se


calculează conform schemei cu pas variabil până se ajunge la un nou punct spe-
cificat.

4.4 Extrapolare locală


Deoarece estimarea erorii ı̂n cazurile de mai sus implică soluţii de ordinul al
doilea şi al treilea, este natural să considerăm care dintre cele două estimări ale
lui y(xn+1 ) trebuie reţinută ca valoare iniţială pentru pasul următor. În exemplul
din secţiunea precedentă, valoarea de ordul al doilea (0.2, 0.46875) a fost selec-
tată ca valoare iniţială pentru al doilea pas, dar cu această alegere, o valoare de
ordinul al treilea, care poate fi obţinută adăugând δ1 , a fost neglijată deliberat. Pe
baza investigaţiilor numerice din capitolul 3, cu formule de diferite ordine, for-
mula de ordin ı̂nalt va fi mai precisă şi va servi drept alegere mai bună a condiţiei
iniţiale. Dacă nu este aşa, estimarea erorii va fi imprecisă şi va fi o bază precară
pentru predicţia pasului. Polinomul Taylor de ordinul al treilea poate fi exprimat
ca
yb1 = y1 + δ1 = 0.427406
şi utilizarea aceastei valori pentru a iniţializa pasul următor va da rezultate mai
bune decât cele obţinute anterior. Procedura bazată pe formula de ordin mai mare
a unei perechi se numeşte extrapolare locală.
Revenind la exemplul numeric din secţiunea precedentă, evaluarea derivate-
lor ı̂n (0.2, 0.427406) ne dă

y10 = −0.349329, y100 = 0.157887, şi y1000 = 0.241580

şi ı̂nlocuind ı̂n seria Taylor extrapolată de ordinul al treilea obţinem rezultatul
yb2 = 0.354099. Eroarea estimată pentru rezultatul de ordinul al doilea este
δ2 = 0.0004422, care este mai mică decât toleranţa şi deci acceptabilă. Înlocuid
eroarea estimată ı̂n formula (4.3) se obţine următoarea lungime de pas, (h2 =
0.262590) ş.a.m.d. Este important să se compare erorile celor două estimaţii ale
lui y(0.422284). Acestea sunt

εb2 = yb2 − y(x2 ) = 0.000123


ε2 = y2 − y(x2 ) = −0.000788,

indicând o ı̂mbunătăţire vizibilă pentru versiunea extrapolată. Compararea di-


rectă a celor două versiuni nu este posibilă deoarece secvenţa de paşi nu este
identică pentru cele două scheme. Totuşi, procesul de extrapolare locală este ı̂n
general superior prin aceea că preferă soluţia de ordin mai mic.
4.4. Extrapolare locală 61

Figura 4.1: Comparaţie ı̂ntre soluţia exactă şi cele două moduri de rezolvare
numerică bazate pe serii Taylor

Reprezentând grafic cele două tipuri de soluţie, superioritatea extrapolării


locale devine mai evidentă. Să considerăm rezolvarea ecuaţiei diferenţiale
p
y 0 = y 3 − y, y(0) = 1 + 3e−10 , x ∈ [0, 10. (4.4)

Ea diferă de problema anterioară numai prin condiţia iniţială. Soluţia exactă este
p
y(x) = 1/ 1 + 3e2(x−5) .

Ca mai ı̂nainte, seriile Taylor de ordinul 2/3 se aplică ı̂n fiecare din cele două
moduri. Figura 4.1 ilustrează cele două soluţii exacte şi soluţia numerică, pentru
T = 10−3 şi h0 = 1. Superioritatea extrapolării locale este vizibilă clar.
Caracteristic pentru problema de test este că ea necesită creşterea şi des-
creşterea lungimii pasului pe intervalul dat. De asemenea, apar şi respingeri de
pas. În cazul extrapolării avem 25 de paşi cu succes şi 8 respingeri, iar ı̂n cazul
rezolvării fără extrapolare 25 şi 7. Cele două secvenţe de lungimi de pas sunt
foarte asemănătoare şi ele apar ı̂n figura 4.2. Costurile de calcul sunt aproape
identice. Programul M ATLAB utilizat la generarea celor două figuri se dă la
sfârşitul secţiunii.
Trebuie accentuat că ı̂n strategia de extrapolare locală nu se estimează eroa-
rea locală a formulei utilizate pentru actualizarea soluţiei. Totuşi, este posibil
ca eroarea locală adevărată să fie mai mică decât toleranţa cu care se lucrează.
62 Controlul pasului

Figura 4.2: Variaţia lungimii pasului pentru problema (4.4)

Dacă acest lucru nu este adevărat, s-ar putea să apara necazuri pentru operaţiile
neextrapolate aplicate aceleiaşi ecuaţii.
Fiecare din cele două moduri de operare poate fi exprimat cu ajutorul a două
formule de ordine diferite. Pentru extrapolarea locală perecea de formule poate
fi scrisă sub forma cu increment

ybn+1 = ybn + hn Φ
b (xn , ybn , hn ) ,
(4.5)
yn+1 = yn + hn Φ (xn , yn , hn ) ,

unde b indică cantităţi extrapolate. Fără extrapolare formulele corespunzătoare


sunt
ybn+1 = yn + hn Φ b (xn , yn , hn ) ,
(4.6)
yn+1 = yn + hn Φ (xn , yn , hn ) .

În ambele cazuri, estimarea erorii este


h i
δn+1 = yn+1 − ybn+1 = hn Φ − Φ
b = en+1 − ebn+1 ,

şi pentru concordanţă asimptotică cerinţa este en+1  ebn+1 . Cu alte cuvinte,
termenul de eroare principală trebuie să fie dominant pentru a justifica formula
(4.3) de predicţie a pasului. Această condiţie va avea loc dacă lungimea pasului
este suficient de mică, dar, când se dă o toleranţă mare, predicţiile imprecise pot
cauza multe respingeri de pas.
4.4. Extrapolare locală 63

function [x,y,h]=TaylorVarStep(f,a,b,y0,tol,h0,n,locext)
% Rezolvarea EDO - metoda seriilor Taylor cu pas variabil
% apel [x,y,h]=TaylorVarStep(f,a,b,y0,tol,h0,n)
% f - membrul drept
% a,b - intervalul
% y0 - valoarea de pornire
% tol - toleranta
% h0 - pas initial
% n - ordinul de derivare
% locext - boolean, extrapolare locala
% x,y - solutia
% h - secventa de pasi
x=a; y=y0; yc=y; xc=x; h=h0; hc=h;
reject=0;
while xc<b
yd=Derivs(f,xc,yc,n);
w=yc+hc*(yd(1)+1/2*hc*yd(2));
delta=hcˆ3*yd(3)/6;
h1=0.9*hc*(tol/abs(delta))ˆ(1/n)
if (abs(delta)<tol) %actualizare
xc=xc+hc;
if (locext) %extrapolare locala
yc=w+delta;
else
yc=w; %fara extrapolare
end %if
x=[x;xc]; y=[y;yc]; h=[h;hc];
else %respingere
reject=reject+1;
end %if
hc=h1; %pas nou
end %while
fprintf(’%d pasi respinsi\n’,reject)
%------------
function yd=Derivs(f,x,y,n)
yd(1)=feval(f,x,y);
ff=3*y.ˆ2-1;
yd(2)=ff.*yd(1);
yd(3)=6*y.*yd(1).ˆ2+ff.*yd(2);
%------------
function z=mdtaylor(x,y)
z=y.ˆ3-y;
64 Controlul pasului

ci aij bbi bi
1 1
0 6 2
1 1 2
2 2 3 0
1 1
1 -1 2 6 2

Tabela 4.1: O pereche RK3(2) de formule incluse

4.5 Estimarea erorii ı̂n metodele Runge-Kutta


Aceeaşi strategie poate fi utilizată şi pentru metodele RK, dacă pentru a re-
prezenta yn+1 şi ybn+1 se utilizează două formule RK de ordin diferit. Un deza-
vantaj evident este costul implicit suplimentar al acestei proceduri comparat cu
cazul Taylor, ı̂n care se poate obţine un rezultat de ordin ı̂nalt doar cu preţul
evaluării unui termen suplimentar. Deşi remediile sunt simple, ele au fost des-
coperite relativ recent. Pentru a face economii la aplicare o a doua formulă RK
este inclusă ı̂n prima, forţând-o să utilizeze aceleaşi evaluări de funcţie (f -uri).
Această tehnică a fost introdusă de Merson ı̂n 1957[16], dar cel care a jucat un
rol important ı̂n popularizarea incluziunii RK a fost Fehlberg [10, 11]. Să con-
siderăm un exemplu ı̂n care o formulă RK de ordinul al doilea este inclusă ı̂n
procesul RK de ordinul al treilea cu trei stadii (3.8) obţinut anterior. Pentru a
satisface criteriul de includere, RK2 trebuie să se bazeze pe aceleaşi trei valori
de funcţie ca şi formula de ordinul al treilea. Astfel, ecuaţia de condiţie trebuie
să satisfacă
1
a21 = , a31 = −1, a32 = 2.
2
Utilizând tabela 2.1, ecuaţiile de condiţie relevante pentru o formulă de ordinul
al doilea cu s = 3 sunt

b1 + b2 + b3 = 1,
1
b2 c2 + b3 c3 = ,
2

care au un parametru liber când valorile lui c2 şi c3 sunt determinate. Pentru o
formulă simplă, se ia b2 = 0 şi se obţine b1 = b3 = 21 . Perechea RK3(2) rezul-
tată este dată sub forma unei tabele Butcher modificate ı̂n tabela 4.1. Pentru a
figura perechea inclusă, se adaugă o coloană suplimentară ce conţine coeficienţii
b ai formulei de ordin mai mic. În această abordare, procesul de control al pa-
sului se poate realiza la un cost foarte mic. Să aplicăm RK3(2) aceleiaşi ecuaţii
diferenţiale utilizate pentru a ilustra estimarea erorii şi controlul pasului ı̂n me-
4.5. Estimarea erorii ı̂n metodele Runge-Kutta 65

toda seriei Taylor (§4.3). Ecuaţia este


1
y 0 = y 3 − y, y(0) = ,
2
iar lungimea de ı̂ncercare a pasului este h0 = 0.2. Pentru cele trei valori de
funcţii găsim

(f1 , f2 , f3 ) = (−0.375, −0.363568, −0.350302),

iar pentru soluţia de ordinul al treilea şi respectiv al doilea


0.2
yb1 = 0.5 + (f1 + 4f2 + f3 ) = 0.427347,
6
0.2
y1 = 0.5 + (f1 + f3 ) = 0.427470.
2
Estimarea erorii este δ1 = y1 − yb1 = 0.000123. Cu aceeaşi toleranţă ca mai
ı̂nainte (T = 10−3 ), formula (4.3) ne dă h1 = 0.361941.
Cititorul s-ar putea gândi că alegerea de mai sus nu are altă justificare decât
comoditatea. Este clar că alte alegeri ale lui c2 vor produce estimări diferite ale
erorii şi deci predicţii diferite ale pasului. Din acest punct de vedere procesul
de estimare diferă de schema corespunzătoare din metoda seriilor Taylor, unde
pentru un ordin dat polinomul este unic. Deci, cum va afecta un parametru liber
alegerea formulei de ordin mai mic a perechii? Criteriul va depinde de modul
ı̂n care se intenţioenează să se opereze cu perechea. Dacă nu este implicată
extrapolarea locală, ar fi convenabil să reducem mărimea coeficienţilor erorii
membrului de ordin mai mic. Aceştia nu trebuie făcuţi prea mici, sau estimarea
corespunzătoare a erorii va fi prea mică, cauzând predicţia unui pas foarte mare.
În aceste ı̂mprejurări, precizia soluţiei va fi mică ı̂n relaţie cu toleranţa. Văzând
lucrurile astfel, se va ajunge la acceptarea unui rezultat imprecis.
Când se intenţionează să se aplice extrapolarea locală, nu merită să se ı̂m-
bunătăţească foarte mult soluţia de ordin mai mic deoarece veste un fenomen
pur local şi nu se va utiliza la iniţializarea pasului următor. Desigur, o formulă
optimală de ordin ı̂nalt va da ı̂ntotdeauna cea mai bună estimare a erorii pentru
procesul inclus de ordin mai mic, furnizând ı̂n acelaşi timp cea mai bună soluţie.
Până la o anumită limită, mărimea coeficienţilor de eroare poate fi echilibrată de
toleranţa specificată, deşi nu se doreşteo toleranţă de, să zicem 10−12 pentru o
eroare locala de 10−2 . În dezvoltarea formulelor incluse ar putea fi necsar să se
adopte o abordare experimentală pentru a determina o pereche fiabilă. O cerinţă
importantă este aceea ca lista coeficienţilor de eroare pentru procesul de ordin
mai mic să fie completă. Dacă unul dintre aceşti coeficienţi este zero, este posibil
66 Controlul pasului

ca, pentru anumite probleme, diferenţa ı̂ntre ordinele perechilor să nu poată fi
menţinută. Aceasta ar putea invalida formula (4.3) pentru controlul pasului. În
general, perechea inclusă de formule RK când se utilizează extrapolarea locala
ar putea fi exprimată sub forma
s
X
ybn+1 = ybn + hn bbi fi ,
i=1
s
X
yn+1 = ybn + hn bi fi , (4.7)
i=1
 
i−1
X
fi = f xn + ci hn , ybn + hn aij fj  , i = 1, 2, . . . , s.
j=1

,,Căciula” b deasupra lui yn indică valoarea calculată cu formula de ordin mai


ı̂nalt (q), iar lipsa ei indică utilizarea formulei de ordinul p, unde, de obicei,
q = p + 1. Ambele formule utilizează eceleaşi evaluări ale f -urilor, iar perechea
este desemnată prin RKq(p).

4.6 Alte perechi Runge-Kutta


Uşurinţa cu care se poate obţine o includere de ordinul al doilea ı̂ncurajează
tentativa de a forma o pereche 4(3) bazată pe un proces de ordinul al patrulea
existent, cum sunt de exemplu cele găsite ı̂n capitolul 3. Să considerăm ı̂ntâi
un proces RK4 cum este cel definit de tabela Butcher (3.11). Deoarece orice
formulă inclusă trebuie să utilizeze aceiaşi aij ca procesul cu patru stadii, vor
fi numai patru parametrii (b1 , b2 , b3 , b4 ) care trebuie să satisfacă noile ecuaţii de
condiţie. Pentru o formulă RK de ordinul al treilea din tabela 2.1 se obţin patru
ecuaţii. Acestea sunt liniare ı̂n bi şi presupunând liniar independenţa lor, soluţia
unică este cea care a fost deja obţinută şi are ordinul al patrulea! În consecinţă,
o formulă distinctă de ordinul al treilea inclusă nu există.
Pentru a obţine soluţia de ordinul al treilea nu neapărat unică a ecuaţiei de
condiţie de ordinul al treilea, un al cincilea stadiu este esenţial. Acesta adaugă
cinci parametrii celor patru deja disponibili din formula existentă pentru patru
stadii. Desigur, un stadiu suplimentar implică o creştere cu 25% a costului con-
trolului pasului. Un instrument simplu care ne asigură o reducere din acest punct
de vedere se numeşte procedura FSAL (first same as last). În acest caz, FSAL
specifică al cincilea stadiu ca fiind acelaşi cu primul stadiu al pasului următor
(f1 )n+1 , obţinându-se
f5 = (f1 )n+1 = f (xn+1 , ybn+1 )
4.6. Alte perechi Runge-Kutta 67

ci aij bbi bi
1 1 5
0 8 8 + 4 b5
1 1 3 3 3
3 3 8 8 − 4 b5
2
3 − 31 1 3
8
3
8 − 3
4 b5
1 1 3
1 1 -1 1 8 8 − 4 b5
1 3 3 1
1 8 8 8 8 0 b5

Tabela 4.2: O pereche RK4(3)4F inclusă

4
!
X
= f xn + hn , ybn + hn bbi fi
i=1
 
4
X
= f xn + c5 hn , ybn + hn a5j fj  ,
j=1

undebindică valorile din formula de ordinul 4.


Procedura FSAL a fost propusă pentru o formulă RK4 ı̂n patru stadii de către
Dormand şi Prince [6] şi vom considera acum aplicarea sa la formula (3.11).
Presupunem că formula inclusă de ordinul al treilea are coeficienţii (ponderile)
bi şi că s-a specificat FSAL. Atunci cele patru ecuaţii de condiţie devin
 
  b1  
1 1 1 1 1   1
0 1 2 1 1  b2   1 
3 3    2
0 1 4 1 1  b3  =  1 

9 9 b4  3
0 0 13 31 12 1
6
b5

iar perechea inclusă RK4(3), având pe b5 ca parametru liber, este definită ı̂n ta-
bela 4.2 Valorile lui b5 trebuie alese astfel ca să furnizeze un ordin de mărime
acceptabil. Utilizând un astfel de proces primul pas va necesita 5 stadii, dar
următorii paşi vor necesita numai patru, care este minimul pentru o metodă de
ordinul 4. Ca urmare a respingerii unui pas, se irosesc patru stadii de calcul, com-
parativ cu numai trei stadii pentru o formulă non-FSAL cu patru stadii. Exemplul
dat aici nu este recomandat pentru uz general, deoarece formula de ordinul al trei-
lea are un set incomplet de coeficienţi ai erorii principale. Este uşor de verificat
(4)
că pentru această formulă τ1 = 0, ı̂nsemnând că pentru anumite probleme are
ordinul 4. Deoarece pentru controlul pasului este important ca perechea inclusă
să aiba ordine diferite, perechea din tabela 4.2 nu este de ı̂ncredere. Pentru o
metodă RK4 cu cinci stadii ca cea din tabela 3.2 construirea unui proces de ordin
68 Controlul pasului

ci aij bi
b bi
13 23
0 96 192
1 1
5 5 0 0
2 2 25 55
5 0 5 48 96
4 6
5 5 − 12
5 2 25
96
35
192
1 − 17
8 5 − 52 5
8
1
12
1
8

Tabela 4.3: O pereche RK4(3)5M de formule incluse

mai mic inclusă este imediată. Un exemplu de astfel de formulă, dezvoltată de


Prince ı̂n 1979 [17] este dată ı̂n tabela 4.3. În procesul de ordinul 3, nici unul
dintre coeficienţii de eroare nu este nul, aşa că diferenţa de ordin va fi menţinută
pentru orice sistem de ecuaţii diferenţiale.
Au fost construite mai multe perechi de ordin mai ı̂nalt. În particular, Fehl-
berg (1968, 1969, [10, 11]) a dat perechi cu ordinele 4(5), 5(6), 6(7), 7(8), 8(9),
care au fost concepute pentru a fi implementate ı̂n modul cu ordin mai mic. Ver-
ner [20] a dezvoltat de asemenea perechi de formule incluse de ordine ı̂nalte de
oarecare popularitate. Perechile mai vechi RK concepute ı̂n ideea de a opera ı̂n
modul extrapolare locală au fost prezentate de Dormand şi Prince ı̂n 1980 şi 1981
[7]. Dintre acestea, cele mai utilizate perechi si recunoscute ca cele mai eficiente
din clasa respectivă sunt RK5(4)7FM cu 7 stadii (tabela 4.4) şi RK8(7)13M cu
13 stadii, referite uneori cu numele DORPRI5 şi respectiv DORPRI8. O carac-
teristică a lui DORPRI5 este utilizarea tehnicii FSAL, care ı̂n acest caz necesită

bb7 = 0, a7j = bbj , j = 1, 2, . . . , 6.

Coeficienţii proceselor de ordin ı̂nalt nu se obţin de obicei ca fracţii simple,


deşi deducerea lor se face de obicei simbolic sau cu aritmetică raţională pentru
a evita erorile de rotunjire. De aceea, ı̂n acest capitol nu se dă nici un proces de
ordin > 5. Este cel mai bine ca aceşti coeficienţi pentru procese de ordin ı̂nalt
să nu fie transcrişi manual, deoarece astfel erorile sunt probabile. Aceste metode
RK sunt foarte sensibile la erori ale coeficienţilo ı̂n aparenţă nesemnificative.
Dacă un calcul urmează a fi efectuat ı̂n dublă precizie coeficienţii trebuie daţi cu
acest grad de precizie. Altfel, nu există nici o posibilitate de a atinge o precizie
bună. Transmiterea electronică este cel mai sigur mecanism de recepţionare a
coeficienţilor RK. Pentru probleme care necesită un număr mare de paşi cu o
formulă de ordinul 5, se obţine o economie de calcule şi o precizie ı̂mbunătăţită
utilizând un proces de ordinul 8.
4.7. Aplicaţii ale includerii RK 69

cj aij bi
b bi
35 5179
0 384 57600
1 1
5 5 0 0
3 3 9 500 7571
10 40 40 1113 16695
4 44 56 32 125 393
5 45 − 15 9 192 640
8 19372
9 6561 − 25360
2187
64448
6561 − 212
729
2187
− 6784 92097
− 339200
9017
1 3168 − 355
33
46732
5247
49
176
5103
− 18656 11
84
187
2100
35 500 125
1 384 0 1113 192 − 2187
6784
11
84 0 1
40

Tabela 4.4: Perechea inclusă RK5(4)7FM (DORPRI5)

4.7 Aplicaţii ale includerii RK


Multe produse software moderne pentru ecuaţii diferenţiale ı̂şi propun să
controleze eroarea globală prin mărginirea erorii locale, iar estimarea acestora
prin perechi RK incluse este imediată. Algoritmul 1 dă un fragment de pseudo-
cod care se poate implementa pentru a controla pasul conform estimaţiilor erorii
locale. Formula (4.3) de control al pasului poate fi aplicată ı̂n forma ei standard la
fiecare pas, dar experienţa arată că este preferabilă ı̂ncorporarea unor controale
suplimentare, care ocolesc problemele care apar când se lucrează cu toleranţe
mari. Acestea apar atunci când o ipoteză, cum ar fi dominanţa erorii principale,
nu este ı̂ndeplinită. De asemenea, sistemul de rezolvat poate avea derivate de
ordin superior foarete mari, care necesită variaţii mari ale pasului ı̂ntr-un inter-
val scurt. În ambele cazuri, aplicarea formulei de control al pasului ar putea
eşua, cauzând o respingere de pas concomitent cu o pierdere de eficienţă. Pen-
tru a evita aceasta algoritmul 1 setează limite arbitrare ale raportului dintre paşi
succesivi:
1 hn+1
≤ ≤ 10.
10 hn
Se pot imagina algoritmi mai sofisticaţi, ı̂n particular pentru predicţia pasului
iniţial şi care să trateze respingeri consecutive de pas. Vom mai reveni asupra
unor aspecte de calcul referitoare la controlul pasului.
O schimbare importantă ı̂n noul cod este ciclul nelimitat după paşi. Numărul
de paşi până la atingerea capătului xend nu este predictibil atunci când pasul este
controlat de estimări ale erorii. Algoritmul avansează până la ı̂ntâlnirea capătului
din dreapta. În exemplu, toleranţa tol este aplicată erorii absolute şi, utilizând
formula (4.2) cantităţii ttol = θ × tol. Cele două formule sunt caracterizate
de vectorii b şi b1, care reprezintă bb şi respectiv b. Vom da la sfârşitul secţiunii
70 Controlul pasului

Algoritmul 1 Fragment de pseudocod ce ilustrează implementarea unei metode


RK cu pas variabil
done :=false;
loop
f (1, :) := F cn(x, y);
for i = 2 : s do
w := y + h ∗ (f (:, 1 : i − 1) ∗ a(i, 1 : i − 1)T ;
f (:, i) := F cn(x + c(i) ∗ h, w);
end for
δ := h ∗ max (|(b1 − b) ∗ f |); {estimarea erorii}
α := (δ/ttol)oop ; {raport lung. pas}
if δ < tol then
{acceptare pas}
y := y + h ∗ (f ∗ b); {actualizare y}
x := x + h;
if done then
EXIT {terminare şi ieşire}
end if
h := h/ max(α, 0.1); {predicţie pas următor}
if x + h > xend then
x := xend − x; {reducere pas la capăt}
done :=true;
end if
else
{respingere pas}
h := h/ min(α, 10); {reducere pas}
if done then
done :=false;
end if
end if
end loop
4.7. Aplicaţii ale includerii RK 71

Figura 4.3: Variaţia lungimii pasului pentru problema orbitei cu e = 0.5

programul complet care implementează formule FSAL.


Pentru a ilustra aplicarea includerii RK, să considerăm din nou problema
orbitei:
1 0 3
y = y
2 0 4
y = y
3 0
y = −1 y/r3
4 0
y = −2 y/r3
p
r = 1y2 + 2y2,

de această dată cu condiţia iniţială


" r #T
1+e
y(0) = 1 − e, 0, 0, .
1−e
Soluţia reprezintă mişcarea pe o orbită eliptică de excentricitate e < 1, de po-
rioadă 2π. Soluţia referitoare la o orbită circulară (e = 0), pentru care soluţia
exactă a este uşor de obţinut, a fost prezentată ı̂n capitolul 3. În cazul execentric,
soluţia Runge-Kutta poate fi comparată cu soluţia obţinută pe baza ecuaţiei lui
Kepler,
E − e sin E = x.
72 Controlul pasului

Figura 4.4: Erorile globale pentru problema orbitei e = 0.5, x ∈ [0, 20]

Soluţia poate fi exprimată cu ajutorul anomaliei excentrice prin


1
y = cos E − e
p
2
y = 1 − e2 sin E
3
y = sin E/(e cos E − 1)
p
4
y = 1 − e2 cos E/(1 − e cos E).

Pentru această problemă nu este posibil să se exprime soluţia y ca funcţie de


variabila independentă x sub formă explicită. Totuşi, soluţia poate fi determinată
cu precizia dorită ı̂nlocuind valorile adecvate ale lui x ı̂n ecuaţia lui Kepler, care
poate fi rezolvată numeric ı̂n raport cu E folosind metoda lui Newton.
Se observă că excentricităti e mari vor conduce la variaţii mari ale lui 3 y şi
4 y. Aceasta va cauza variaţii mai mari ale lungimii pasului pentru valori mari

ale lui e decât pentru excentricităţi mici.


Figura 4.3 ne arată variaţia lungimii pasului pentru x ∈ [0, 20], care este
cam de trei ori perioada orbitală, când se aplică perechea din tabela 4.3 co o
toleranţă T = 10−5 . Cei mai mici paşi sunt ı̂n vecinătatea punctelor perifocale,
care sunt punctele cu r minim, pe un interval de lungime 2π ı̂n x. Deşi lungimile
4.7. Aplicaţii ale includerii RK 73

extreme de pas variază cu factor de aproximativ 5, procedura de control al pasului


lucrează bine ı̂n acest caz. Doar puţini paşi sunt respinşi şi recalculaţi. Aceştia
sunt detectabili ı̂n figura 4.3 prin segmente verticale, care indică utilizarea a două
lungimi diferite de pas ı̂n acelaşi punct. Pe fiecare orbită apar una sau două
respingeri chiar ı̂naintea punctelor perifocale (x ≈ 6, 6+2π, . . . ). Eroarea pentru
cele patru componente apare ı̂n figura 4.4. Aşa cum era de aşteptat, eroarea
creşte odată cu creşterea numărului de orbite, dar creşterea nu este monotonă.
Distribuţia punctelor de pe orbită corespunzătoare paşilor apare ı̂n figura 4.5.
Startegia cu pas variabil a asigurat o distribuţie aproape uniformă a punctelor pe
traiectorie. Cu un raport al vitezelor de 3 ı̂n cele două extreme ale orbitei, un pas
constant va conduce la un grafic foarte diferit. Pentru a obţine aceeaşi precizie,
la o integrare cu pas constant va fi nevoie de mai mulţi paşi. La problema orbitei,
controlul pasului devine din ce ı̂n ce mai complicat pe măsură ce excentricitatea
creşte. Valoarea e = 0.5 este una modestă şi un mecanism simplu de control
al pasului ı̂i face fată uşor. Excentrictăţi mai mari, cum sunt cele ı̂ntâlnite la
orbitele de comete, implică variaţii mai mari şi mai rapide ale lungimii pasului.
S-ar părea că variaţia erorii globale la rezolvarea numerică este mai complicată

Figura 4.5: Punctele de pe orbită, e = 0.5

ı̂n cazul pasului variabil decât ı̂n cazul paşilor constanţi, dar nu este asă; se poate
arăta că inegalitatea (2.24)
|εn+1 | ≤ |εn |(1 + hL) + M, |tn+1 | ≤ M = Ahp+1 ,
este ı̂ncă valabilă dacă h = maxn (hn ) este cea mai mare lungime de pas. Astfel,
74 Controlul pasului

Figura 4.6: Variaţia erorii globale ı̂n funcţie de cost ı̂n problema orbitei, e = 0.5

pentru o metodă de ordinul p avem

|εn | ≤ Bhp ,

unde B este independentă de h. Acest rezultat poate fi verificat pentru problema


orbitei, definită anterior, pentru o anumită plajă de toleranţe. Fiecare toleranţă va
conduce la o lungime maximă de pas h diferită şi deci erorea globală va putea
fi reprezentată frafic ı̂n raport cu numărul total de evaluări de funcţii, care va
fi proporţional cu costul de calcul. Acest lucru este ilustrat ı̂n figura 4.6 pentru
includerile de ordinul al patrulea şi al cincilea considerate mai sus, iar curbele pot
fi comparate cu cele din figura 3.4, care au fost obţinute pentru un pas constant.
Noile curbe, numite adesea curbe de eficienţă, sunt mai puţin regulate decât cele
din cazul pasului constant şi nu includ efectul respingerii paşilor. Tabela 4.5
ne arată datele utilizate pentru curba de eficienţă: Nf şi Nr este numărul de
evaluări de funcţii şi respectiv numărul de respingeri de paşi. Pentru toleranţe
mici se respinge o proporţie mare dintre paşi, dar procesul de predicţie este din
ce ı̂n ce mai fiabil când se dau toleranţe mai mici. De exemplu, pentru T = 10−4
ı̂n RK5(4)7TFM, se resping 18 paşi şi se aceptă 52. Proporţia de respingeri scade
pe măsură ce scade toleranţa devenind neglijabilă pentru toleranţe stringente. O
procedură mai sofisticată de control al pasului decât cea utilizată aici poate fi
efectivă la reducerea numărului de respingeri de pas.
4.8. Exemple de implementare 75

RK4(3)5M RK5(4)7FM
log T Nf Nr kεk log T Nf Nr kεk
-3 371 15 0.035852 -4 409 17 0.021658
-4 615 21 0.0020356 -5 589 24 0.0011022
-5 922 4 8.6117e-005 -6 823 26 7.4143e-005
-6 1620 1 1.1675e-005 -7 1183 26 1.1848e-005
-7 2875 1 1.5143e-006 -8 1609 1 1.1344e-006
-8 5110 1 1.6899e-007 -9 2545 1 1.3861e-007
-9 9085 1 1.7844e-008 -10 4033 1 1.3645e-008
-10 16154 2 1.8449e-009 -11 6391 1 1.2934e-009

Tabela 4.5: Rezultate pentru problema orbitei cu două perechi incluse

O proprietate importantă a rezultatelor arătate aici este cunosctă sun numele


de proprţionalitatea toleranţei (tolerance proportionality). Pentru T suficient de
mic, reducerea acestuia cu un ordin de mărime produce o reducere cu acelaşi
factor a erorii globale. Acest tip de comportare este tipic şi este de aşteptat din
ipotezele implicite conţinute ı̂n formula (4.3) a lungimii pasului. Deşi eroarea
ı̂n x = 20 a fost selectată ı̂n scopuri de comparaţie, se poate trage o concluzie
similară considerând eroarea globală maximă pentru toţi paşii şi variabilele.

4.8 Exemple de implementare


Vom da două exemple de implemnetare pentru perechi de formule incluse.
Ambele folosesc tabele Butcher modificate, generate de o funcţie de iniţializare,
BT, dată ca parametru de apel. Se generează şi statistici privind execuţia. Iată
primul exemplu:
function [xs,ys,stat]=RKembed(Fcn,tspan,y0,tol,hs,BT)
%RKEMBED - ode solver with variable step
%uses an embedded pair whose coefficients are given in
%a Butcher’s table.
%FSAL is enabled with a suitable pair.
%call [x,y,stat]=RKembed(Fcn,tspan,y0,tol,hs,BT)
%parameter
%Fcn - rhs (derivative)
%tspan - interval
%y0 - starting value
%tol - tolerance
%hs - starting step
%BT - Butcher table init function
%x - abscissas
76 Controlul pasului

%y - ordinates
%stat - statistics

statflag=(nargout==3);
[a,b,bcap,c,s,oop,fsal]=feval(BT); %tabela Butcher
if statflag %statistici
stat=struct(’ns’,0,’nrej’,0,’nfunc’,0,’sh’,[]);
end
%initializari
sf=0.6;
x=tspan(1); xend=tspan(end);
y=y0(:);
ttol=tol*sf;
h=hs;
xs=x; ys=y’;
if statflag, stat.sh=h; end
f(:,1)=feval(Fcn,x,y);
if statflag, stat.nfunc=1; end
done=0;
while ˜done %loop over steps
for i=2:s
f(:,i)=feval(Fcn,x+c(i)*h,y+h*f(:,1:i-1)*...
(a(i,1:i-1)’));
end
if statflag, stat.nfunc=stat.nfunc+s-1; end
delta=h*max(abs(f*(bcap-b))); %local error
alpha=(delta/ttol)ˆoop; %step ratio
if delta<tol %accpts step
y=y+h*f*b;
x=x+h;
if statflag, stat.ns=stat.ns+1; end
if done, return; end
if fsal
f(:,1)=f(:,s);
else
f(:,1)=feval(Fcn,x,y);
if statflag, stat.nfunc=stat.nfunc+1; end
end
h=h/max(alpha,0.1); %update step
if x+h > xend
h=xend-x;
done=1;
end
else
if statflag, stat.nrej=stat.nrej+1; end
4.8. Exemple de implementare 77

h=h/min(alpha,10); %reduced step


if done, done=0; end
end
xs=[xs;x]; ys=[ys;y’];
if statflag, stat.sh=[stat.sh;h]; end
end %while
Urmează al doilea exemplu.
function [xs,ys,stat]=RKpair(Fcn,tspan,y0,tol,hs,BT)
%Rezolva o EDO utilizand o pereche de metode
%Runge-Kutta incluse
%apel [xs,ys,hs]=RKpair(f,tspan,y0,tol,BT)
%parametrii
%Fcn - membrul drept
%tspan - intervalul
%y0 - valoarea de pornire
%tol - eroarea
%hs - pasul de pornire
%BT - functia de initializare a tabelei Butcher
%xs - abscisele
%ys - ordonatele
%stat - statistici

statflag=(nargout==3);
[a,b,bcap,c,s,oop,fsal]=feval(BT); %tabela Butcher
if statflag %statistici
stat=struct(’ns’,0,’nrej’,0,’nfunc’,0,’sh’,[]);
end
%initializari
done=0; sf=0.6; ttol=tol*sf;
h=hs; y=y0(:);
x=tspan(1); xend=tspan(end);
xs=x; ys=y’;
f=zeros(length(y0),s);
f(:,1)=feval(Fcn,x,y); %prima evaluare
if statflag
stat.nfunc=stat.nfunc+1;
end
while ˜done %forever
for i=2:s
f(:,i)=feval(Fcn,x+c(i)*h,y+h*...
(f(:,1:i-1)*a(i,1:i-1)’));
end
if statflag
stat.nfunc=stat.nfunc+s-1;
78 Controlul pasului

end
delta=h*max(abs(f*(b-bcap))); %eroarea locala
alpha=(delta/ttol)ˆoop; %raportul pasilor
if delta < tol %pas acceptat
y=y+h*(f*bcap); %actualizare solutie
%y=y+h*(f*b); %actualizare solutie
x=x+h;
if statflag
stat.ns=stat.ns+1;
stat.sh=[stat.sh;h];
end
xs=[xs;x]; ys=[ys;y’]; %iesire
if done
return
end
if fsal
f(:,1)=f(:,s); %reutilizare
else
f(:,1)=feval(Fcn,x,y);
if statflag
stat.nfunc=stat.nfunc+1;
end
end
h=h/max(alpha,0.1); %predictie pas
if x+h>xend %capatul
h=xend-x;
done=1;
end
else
if statflag
stat.nrej=stat.nrej+1;
end
h=h/min(alpha,10);
if done
done=0;
end
end
end

Figurile şi tabelele din secţiunea 4.7 au fost generate utilizând aceste funcţii
M ATLAB. În fine, dăm fişierele .M pentru obţinerea soluţiei exact, care rezolvă
ecuaţia lui Kepler cu ajutorul metodei lui Newton.
function [y,E]=exactsol(x,e,er)
%solutia exacta a ecuatiei orbitei
4.9. Probleme 79

%x - punctele
%e -execentricitatea
for k=1:length(x)
E(k)=kepler(x(k),e,x(k),er,100);
end
E=E(:);
rr=sqrt(1-eˆ2);
y(:,1)=cos(E)-e;
y(:,2)=rr*sin(E);
y(:,3)=sin(E)./(e*cos(E)-1);
y(:,4)=rr*cos(E)./(1-e*cos(E))
function z=Kepler(x,e,x0,er,nmax)
E=zeros(nmax+1,1);
E(1)=x0;
for k=1:nmax
E(k+1)=E(k)-(E(k)-e*sin(E(k))-x)/(1-e*cos(E(k)));
if abs(E(k)-E(k+1))<er
z=E(k+1);
return
end
end
error(’prea multe iteratii’)

4.9 Probleme
Problema 4.9.1. Utilizaţi includerea RK3(2) dată ı̂n tabela 4.1 pentru a calcula
doi paşi ai soluţiei pentru
y 0 = y 3 − y, y(0) = 0.5,
utilizând un pas de pornire h = 0.1 şi o toleranţă absolută T = 10−4 .
Problema 4.9.2. Scrieţi coeficientul erorii principale pentru o formulă arbitrară
de ordinul al doilea cu trei stadii. Presupunând că formula este inclusă ı̂n formula
de ordinul 3 (3.8) rezolvaţi ecuaţiile relevante de condiţie pentru procesul dum-
neavoastră de ordinul al doilea ı̂n funcţie de b2 şi simplificaţi astfel coeficienţii de
eroare. Consideraţi efectul alegerii lui b2 asupra procedurii de control al pasului.
Utilizaţi ecuaţia diferenţială din problema precedentă pentru a ilustra situaţia.
Problema 4.9.3. Să se considere construcţia unei formule de ordinul al treilea
pentru includere ı̂ntr-un proces RK de ordinul al patrulea cu patru stadii. Arătaţi
că expresiile parametrului a32 ı̂n formula de ordinul al treilea cu trei stadii şi for-
mula de ordinul al patrulea cu patru stadii sunt incompatibile. Să se reconsidere
problema când când se adaugă un stadiu FSAL la formula RK44M (3.1).
80 Controlul pasului

Problema 4.9.4. Arătaţi că toţi coeficienţii erorii de ordin mic ı̂n formulele
RK4(3)5M şi DORPRI5 sunt nenului.
Problema 4.9.5. Arătaţi că inegalitatea pentru eroarea globală

|εn+1 | ≤ |εn |(1 + hL) + M,

unde M este o margine a erorii locale de trunchiere, L este o constantă Lipschitz,


iar h este lungimea maximă a pasului, este satisfăcută de o soluţie a unei ecuaţii
diferenţiale scalare obţinută printr-o metodă cu pas variabil. Deci, justificaţi mar-
ginea pentru eroarea globală
|εn ≤ Bhp ,
a unei metode de ordinul p.
Problema 4.9.6. Ecuaţia atractorului Lorenz
dx
= −ax + ay,
dt
dy
= bx − y − xz,
dt
dz
= −cz + xy
dt
are soluţii haotice care sunt sensibil dependente de condiţiile iniţiale. Rezolvaţi
numeric pentru a = 5, b = 15, c = 1 cu condiţiile iniţiale

x(0) = 2, y(0) = 6, z(0) = 4, t ∈ [0, 20],

cu toleranţa T = 10−4 . Repetaţi pentru


(a) T = 10−5 ;

(b) x(0) = 2.1.


În fiecare caz comparaţi rezultatele cu cele obţinute anterior.
Problema 4.9.7. Evoluţia unei epidemii de gripă ı̂ntr-o populaţie de n indivizi
este modelată de sistemul de ecuaţii diferenţiale
dx
= −βxy + γ,
dt
dy
= βxy − αy
dt
dz
= αy − γ,
dt
4.9. Probleme 81

unde x este numărul de indivizi susceptibili de a face infecţia, y este numărul


de infectaţi, iar z este numărul de imuni, care include şi numărul de bolnavi
refăcuţi după boală, la momentul t. Parametrii α, β, γ sunt ratele de recuperare,
transmisie şi respectiv recontaminare (replenishment?) (pe zi). Se presupune că
populaţia este fixă, astfel că noile naşteri sunt compensate de morţi.
Utilizaţi funcţia RKembed pentru a rezolva ecuaţiile cu condiţiile iniţiale
x(0) = 980, y(0) = 20, z(0)=0, dându-se parametrii α = 0.05, β = 0.0002,
γ = 0. Simularea se va termina când y(t) > 0.9N . Determinaţi aproximativ
numărul de persoane infectate şi momentul când apare.
Investigaţi efectul (a) variaţiei numărului iniţial de indivizi infectaţi asupra
evoluţiei epidemiei şi (b) introducerea unei rate de recontaminare nenule.

Problema 4.9.8. Căpitanul Kirk1 şi echipajul său de pe nava spaţială Enterprise
au eşuat fără energie pe orbita din jurul unei planetei de tip Pământ Capella
III, la o altitudine de 127 de km. Frânarea atmosferică cauzează scăderea or-
bitei, şi dacă nava atinge straturile dense ale atmosferei, frânarea excesivă şi
ı̂ncălzirea datorată frecării va cauza daune ireparabile sistemului de ı̂ntreţinere a
vieţii. Ofiţerul ştiinţific, Mr Spock, estimează că reparaţiile temporare la motoa-
rele de impuls vor necesita 29 de minute cu condţia ca ele să fie terminate ı̂nainte
ca frânarea să crească la 5g (1g = 9.81ms−1 ). Deoarece Mr Spoc este un geniu
matematic, el a decis să simuleze degradarea orbitei prin rezolvarea numerică
a ecuaţiilor de mişcare cu perechea de metode incluse DORPRI5. Ecuaţiile de
mişcare ale navei, ı̂n condiţiile frânării atmosferice, sunt date de

dv GM sin γ
= 2
− cρv 2
dt  r 
dγ GM cos γ
= −v
dt rv r
dz
= −v sin γ
dt
dθ v cos γ
= ,
dt r
unde

v este viteza tangenţială (m/s);

γ este unghiul de reintrare (ı̂ntre vitezăşi orizontală);

z este altitudinea (m);


1
Personaje din Star Trek
82 Controlul pasului

M este masa planetară (6 × 102 4 kg);

G este constanta gravitaţiei (6, 67 × 10−11 SI);

c este constanta de frânare (c = 0.004);

r este distanţa până la centrul planetei (z + 6.37 × 106 m);

ρ este densitatea atmosferei (1.3 exp(−z/7600));

θ este longitudinea;

t este timpul (s).


p
La momentul t = 0, valorile iniţiale sunt γ = 0, θ = 0 şi v = GM/r. Mr
Spock a rezolvat ecuaţiile numeric pentru a găsi istoricul decelerării şi momentul
şi locul impactului ı̂n care căderea orbitei nu mai paote fi prevenită. Repetaţi
simularea utilizând o metodă Runge-Kutta cu pas variabil şi estimaţi decelerarea
maximă ı̂ncercată ı̂n timpul coborârii şi ı̂nălţimea la care apare. Va da căpitanul
Kirk ordinul de abandonare a navei?

Problema 4.9.9. Cometa Halley şi-a atins ultima dată periheliul (apropierea ma-
ximă de soare la 9 februarie 1986. Poziţia şi componentele vitezei ı̂n acel mo-
ment erau

(x, y, z) = (0.325514, −0.459469, 0.166229)


 
dx dy dz
, , = (−9.096111, −6.916686, −1.305721),
dt dt dt

poziţia este măsurată ı̂n unităţi astronomice (distanţa medie de la pământ la


soare), iar timpul ı̂n ani. Ecuaţiile mişcării sunt

d2 x µx
= − ,
dt2 r3
d2 y µy
= − 3,
dt2 r
d2 z µz
= − 3,
dt2 r
p
unde r = x2 + y 2 + z 2 , µ = 4π 2 , iar perturbaţiile planetare au fost negli-
jate. Rezolvaţi aceste ecuaţii numeric pentru a determina aproximativ momentul
următorului periheliu.
Capitolul 5

Ieşiri dense

5.1 Introducere

Utilizarea estimării erorii la controlul pasului are un dezavantaj: abscisele


{xn } ale soluţiei nu pot fi anticipate sau specificate la ı̂nceputul calculelor. Pre-
supunem că dorim soluţia ecuaţiei diferenţiale ı̂n x = x∗ , x∗ ∈ [xn , xn+1 ],
unde xn+1 = xn + h este pasul final anticipat. Un mod evident de a realiza
aceasta este de a alege un pas mai mic h∗n = x∗ − xn ı̂n locul celei calculate cu
formula (4.3). Din punct de vedere al toleranţei acest lucru este apropae sigur
acceptabil, dar ar putea apare o pierdere a eficienţei datorită pasului suplimen-
tar necesar. Dacă se cer ieşiri dense, care presupun un număr mare de puncte
intermediare ı̂n [xn , xn+1 ], costul de calcul suplimentar ar putea fi considerabil.
Din fericire această perspectivă neplăcută poate fi evitată prin construirea unui
interpolant sau formule cu ieşiri dense, numite uneori exetensii continue ale for-
mulelor Runge-Kutta. Desigur, s-ar putea construi un interpolant convenţional,
pe baza valorilor ı̂n două sau mai multe puncte, dar este posibil şi de asemenea
preferabil, să se evite această abordare multipas prin deducerea directă a unei
soluţii Runge-Kutta continue.
Înafară de furnizarea soluţiilor ı̂n valori specifice alae variabilei independente
x, un proces RK continuu ar putea fi foarte convenabil la rezolvarea problemei
inverse, ı̂n care căutăm valoarea x corespunzătoare unei valori y specificate a
soluţiei. Acesta este un avantaj important la determinarea punctelor de discon-
tinuitate. Acestea pot fi ,,atinse” de soluţia numerică când este necesar să se
continue rezolvarea dincolo de astfel de valori. Mai general, extensia continuă
poate fi utilizată pentru a rezolva ecuaţii algebrice ce leagă variabilele soluţiei.

83
84 Ieşiri dense

5.2 Construcţia extensiilor continue


Considerăm formula Runge-Kutta cu s stadii
s
X
yn+1 = yn + h bi fi , (5.1)
i=1

unde notaţiile sunt cele uzuale. În acest capitol se presupune că forma este cea
imbricată şi, deşi formula (5.1) se ia a fi una dintre perechi, nu s-a pus deasupra
căciula pentru simplificare. Totuşi se presupune că toate formulele vor fi utili-
zate ı̂n modul extrapolare locală. Considerăm o nouă formulă bazată pe aceeaşi
valoare iniţială
s∗
X
∗ ∗
yn+1 = yn + h b∗i fi∗ ,
i=1
cu o lungime a pasului h∗= σh, σ ∈ [0, 1]. Aceasta furnizează o soluţie nume-

rică ı̂n x = xn + σh. Ca de obicei, se definesc evaluările de funcţie prin
 
i−1
X
fi∗ = f xn + c∗i h, yn + h∗ a∗ij fj∗  , i = 1, 2, . . . , s.
j=1

Se obţine o mare simplificare punând

c∗i = ci /σ, a∗ij = aij /σ, i = 2, . . . , s∗ ; j = 1, 2, . . . , i − 1,

care ne asigură că fi∗ ≡ fi . În consecinţă, noile soluţii presupun aceleaşi evaluări
de funcţii ca ı̂n formula (5.1) şi poate fi scrisă sub forma
s ∗
X

yn+1 = yn+σ + σh b∗i fi . (5.2)
i=1

Presupunând că valoarea lui yn+1 a fost calculată cu formula (5.1), valorile lui
fi vor fi disponibile pentru utilizare ı̂n (5.2). Dacă s∗ ≤ s, nu va fi necesară
nici o nouă evaluare de funcţie; totuşi, exceptând cazurile metodelor de ordin
foarte mic, vor fi necesare stadii noi. Soluţiile ecuaţiilor adecvate de condiţie
vor conduce la ponderi b∗i = b∗i (σ), care depind de parametrul de interpolare
σ şi deci trebuie recalculate pentru fiecare nou punct de ieşire x∗ . Pentru cele
mai multe probleme, acest cost este mic comparativ cu evaluările de funcţii. De
asemenea b∗i sunt valabile pentru toate componentele sistemului de rezolvat.
Să ilustrăm construcţia unei formule cu ieşiri dense considerând o extensie a
bine cunoscutului proces optimal RK2 dat ı̂n tabela 5.1. Este natural să impunem
5.2. Construcţia extensiilor continue 85

ci aij bi
1
0 4
2 2 3
3 3 4

Tabela 5.1: Procesul RK2


ci aij bi b∗i (σ)
1
0 4 1 − 34 σ
2 2 3 3
3 3 4 4σ

Tabela 5.2: RK2 cu ieşire densă

coincidenţa ordinului interpolantului din formula (5.2) cu cea a procesului RK2


de mai sus şi aceasta se poate realiza pentru s∗ = 2. Noii parametrii trebuie să
satisfacă ecuaţiile de condiţie

b∗1 + b∗2 = 1
1
b∗2 c∗2 = ,
2
şi punând c∗2 = c2 /σ, pentru a ne asigura evaluări de funcţii comune cu cele din
tabela 5.4, a două ecuaţie devine
1
b∗2 c2 = σ.
2
2
Înlocuind valoarea obţinută c2 = 3 din tabela 5.4 se obţin soluţiile
3 3
b∗2 = σ, b∗1 = 1 − σ.
4 4
Formula RK, completată cu extensia continuă este dată ı̂n tabela 5.2. Pentru a
calcula o soluţie intermediară, valoarea adcevată a lui σ se ı̂nlocuieşte ı̂n coloana
din dreapta. Asfel, pentru un punct situat la ,,mijloc” x∗ = xn + 21 h, valoarea
corespunzătoare este σ = 12 , se obţine formula de ordinul al doilea
 
1 5 3
yn+ 1 = yn + h f1 + f2 ,
2 2 8 8

unde f1 şi f2 au fost deja calculate ı̂n cadrul pasului normal. În tabela 5.3 se dă
un exemplu numeric ı̂n care se calculează soluţia ı̂n patru puncte. Toate utilizează
aceleaşi perechi de valori f .
Pentru procese de ordin ı̂nalt câştigul extensiilor continue va fi mai mare.
Totuşi, deducerea acestor formule este mai dificilă deoarece ecuaţiile de condiţie
86 Ieşiri dense

y 0 = y(1 − 2y), y(0) = 1, h = 0.15


Stadiu x y f (x, y)
x0 y0 f1
1 0 1 -1
x0 + 23 h y0 + 23 f1 f2
2 0.1 0.9 -0.72

1 + 34 σ f1 + 34 σf2
 
yn+σ = yn + σh
x σ yn+σ y(x)
0.15 1 0.8815 0.8777
1
0.075 2 0.9329 0.9326
1
0.05 3 0.9535 0.9535
2
0.10 3 0.9140 0.9131

Tabela 5.3: Un exemplu numeric cu ieşiri dense

cresc mult mai rapid decât numărul de stadii implicate. Deoarece aij sunt deja
determinaţi, numai b∗i sunt disponibili pentru a satisface ecuaţiile de condiţie.
Acesata sugerează că vor fi necesare cel puţin patru stadii pentru a obţine o ex-
tensie continuă de ordinul al treilea. De fapt, construcţia unei formule cu ieşiri
dense necesită stadii suplimentare pentru a furniza parametrii necesari. Pentru
a demonstra această caracteristică vom folosi o formulă de ordinul al treilea,
RK3M, dată ı̂n tabela (3.7) şi repetată aici:
ci aij bi
2
0 9
1 1 1
2 2 3
3 3 4
4 0 4 9

Cele patru ecuaţii care trebuie satisfăcute de b∗i sunt


s ∗
X
b∗i cki = σ k /(k + 1), k = 0, 1, 2
i=2
Xs∗ X
i−1
b∗i aij cj = σ 2 /6
i=3 j=2
5.2. Construcţia extensiilor continue 87

ci aij bi b∗i (σ)


2
0 9 1 − 43 σ + 59 σ 2
1 1 1
σ 1 − 32 σ

2 2 3
3 3 4 4 2

4 0 4 9 3 σ 1 − 3 σ
2 1 4
1 9 3 9 0 σ(σ − 1)

Tabela 5.4: RK3 cu o formulă de ieşire densă de ordinul al treilea

şi astfel numărul minim de stadii trebuie să fie s∗ = 4. Cele mai convenabile
alegeri pentru parametrii celui de-al patrulea stadiu sunt

c4 = 1, a4j = bj , j = 1, 2, 3,

creându-se astfel un stadiu FSAL, utilizat de asemenea ı̂n procesul DORPRI5


dat ı̂n tabela 4.4. Un avantaj important al acestei alegeri este acela că implică un
cost suplimentar mic, mai puţin de 33% faţă de volumul necesar pentru un nou
stadiu. Înlocuind parametrii din RK3M ı̂n ecuaţiile de condiţie se obţine sistemul
liniar

b∗1 + b∗2 + b∗3 + b∗4 = 1


1 ∗ 3 ∗ 1
b + b + b∗4 = σ
2 2 4 3 2
1 ∗ 9 1 2
b + b∗ + b∗4 = σ
4 2 16 3 3
3 ∗ 1 ∗ 1 2
b + b = σ
8 3 2 4 6
care are o soluţie unică. Procesul complet FSAL cu ieşiri dense este dat ı̂n tabela
5.4.
Includerea unui stadiu FSAL are un avantaj important faţă de alternativă
deoarece conduce ı̂n acest caz la o ieşire densă netedă. Continuitatea formulei
dense de ordinul al treilea este clară deoarece

b∗i = bi , i = 1, . . . , 4.

Aceeaşi proprietate se observă şi pentru formula de ordinul al doilea dată ı̂n
tabela 5.1. Diferenţiind formula de ordinul al treilea ı̂n raport cu x se obţine
 
0 8 5 2 8
yn+σ = 1 − σ + σ f1 + 2σ(1 − σ)f2 + σ(1 − σ)f3 + σ(3σ − 2)f4 ,
3 3 3
88 Ieşiri dense

şi astfel
0
yn+0 = f1 = f (xn , yn )
0
yn+1 = f4 = f (xn+1 , yn+1 ).

Astfel derivata soluţiei cu ieşiri dense este continuă. Această proprietate este
una necesară pentru modelul FSAL ales mai sus, dar ı̂n alte cazuri, când soluţia
ecuaţiei de condiţie nu este unică, nu este nevoie să fie verificată. Pentru un
model non-FSAL proprietatea C 1 nu poate fi obţinută ı̂n general. Costul su-
plimentar al unei formule FSAL comparativ cu al uneia non-FSAL este foarte
mic: este necesară doar o singură evaluare suplimentară de funcţie care apare la
primul pas. Totuşi, respingerle de pas vor implica costuri suplimentare când se
utilizează un stadiu suplimentar ı̂n estimarea erorii ca ı̂n DORPRI5.
Condiţiile generale care trebuie satisfăcute de b∗i (σ) astfel ca interpolantul
dens (5.2) să fie de clasă C 1 sunt

b̂i , i ≤ s;
b∗i = (5.3)
0, s < i ≤ s∗

şi 
0, i 6= sF ;
d∗i = (5.4)
1, i = sF
unde
d
d∗i (σ) = (σb∗i (σ)) ,

iar i = sF indică stadiul FSAL al perechii RK ce presupune extrapolare locală.

5.3 Alegerea parametrilor liberi


Pentru formule RK de ordin superior problema construirii extensiilor conti-
nue este agravată de lipsa relativă a parametrilor liberi. Deoarece aij pentru sta-
diile existente sunt deja setate, doar parametrii b∗i sunt liberi să satisfacă ecuaţiile
RK de condiţionare. Numărul acestora este egal cu numărul de stadii s, com-
parativ cu numărul total de parametrii din tabel, care este proporţional cu s2 .
Situaţia este ocolită ı̂ntr-o anumită măsură de natura locală a calculului ieşirilor
dense; soluţia densă nu are nici un impact global. Pentru o formulă de ordinul p
eroarea globală este O(hp ), dar aceasta are acelaşi ordin ca eroarea unei formule
locale de ordinul p − 1. În consecinţă, o extensie continuă validă a unei metode
RKp va avea ordinul p∗ ≥ p − 1.
5.3. Alegerea parametrilor liberi 89

Pentru a da o idee despre acest tip de interpolant să considerăm construcţia


unui interpolant RK2 care va fi utilizat cu RK3M de mai sus. Deoarece trebuie
satisfăcute numai două ecuaţii, nu se va utiliza stadiul FSAL. Cu s∗ = 3, ponde-
rile ieşirii dense b∗i trebuie să satisfacă

b∗1 + b∗2 + b∗3 = 1


1
b∗2 c2 + b∗3 c3 = σ.
2
Soluţia ı̂n funcţie de b∗3 este

1 3
b∗1 = 1 − σ + b∗3 , b∗2 = σ − b∗3 . (5.5)
2 2
Această soluţie nu poate realiza continuitatea C 1 , dar alegerea b∗3 = 94 σ a pa-
rametrului liber ne va asigura că interpolantul este de clasă C 0 . Dacă se adugă
stadiul FSAL ar fi posibil să se asigure continuitatea primei derivate, dar atunci
n-ar fi nici un motiv să evităm satisfacerea unei condiţii suplimentare de ordin şi
să creştem astfel ordinul la 3.
Alegerea b∗3 = 94 σ ne conduce la o soluţie continuă globală, dar s-ar putea
să nu dea o funcţie de eroare principală mică pentru σ ∈ [0, 1]. Reamintind
construcţia formulei Runge-Kutta discrete din capitolul 3 s-a găsit că este van-
tajos să se aleagă parametrii liberi astfel ca să se minimizeze coeficienţii erorii
principale. Pentru o extensie continuă eroarea locală de trunchiere se poate ex-
prima ca

X
tn+σ = (σh)i ϕ∗i−1 (xn , y(xn ), σ). (5.6)
i=p∗ +1

Urmând ecuaţia (3.1) şi presupunând că p∗ = p − 1, funcţia de eroare principală


a formulei dense va satisface
np
(p)∗ (p)
X
σ p ϕ∗p−1 = τj Fj , (5.7)
j=1

unde τjp este un coeficient al erorii bazat pe ponderile b∗i . O formulă optimală va
minimiza norma erorii

A(p) (σ) = σ p kτ (p) k2 . (5.8)
Pentru formula densă de ordinul al doilea (5.5) norma erorii este
r
(3)∗ 2 (3)∗ 2
  
A(3) (σ) = σ 3 τ1 + τ2 .
90 Ieşiri dense

Aici este implicat doar un singur parametru b∗3 şi astfel, urmându-l pe Shampine[18],
coeficienţii erorii pot fi scrişi sub forma
(3)∗
τj = ξj (σ) + ρj (σ)b∗3 , j = 1, 2,
şi norma erorii va fi minimizată dacă
3
X 2
X
b∗3 = − ζj ρj / ρ2j .
j=1 j=1

Figura 5.1: Componentele erorii globale pentru x ∈ [1.5, 2.5] ı̂n problema
gravitaţională a celor două corpuri cu e = 0.2, utilizând trei procese cu ieşiri
dense.

Coeficienţii erorii satisfac


 
(3)∗ 1 1 1 2 3 ∗
σ 3 τ1 = σ σ − σ + b3
2 4 3 16
 
(3)∗ 1 1 2 3 ∗
σ 3 τ2 = σ − σ + b3
2 3 4
şi aplicând formula de minimizare se obţine
4σ(20σ − 3)
b∗3 = . (5.9)
153
Celelalte ponderi se obţin utilizând (5.5)
σ(171 − 120σ) 153 − σ(40σ − 159
b∗2 = , b∗1 = .
153 153
5.3. Alegerea parametrilor liberi 91

De notat că această formulă optimală este continuă. Procesul de minimizare


trebuie să conducă la această proprietate, deoarece formula discretă de ordinul
al treilea este consistentă √ cu minimul absolut A(3) (1) = 0. Norma erorii este
(3) 2
A (σ) = σ (1 − σ)/2 17, care
∗ 4 (3)
√ este
2
mai mică decât cea a soluţiei simple
b3 = 9 σ, pentru care A (σ) = 2σ (1 − σ)/6.
Pentru a testa calitatea celor doi interpolanţi de ordinul al doilea şi a extensiei
continue construite pentru formula RK3M, ele au fost aplicate problemei orbitei,
descrise ı̂n ultimul capitol. În figura 5.1, eroarea celei de-a doua componente a
soluţiei 2 y este reprezentată ı̂n raport cu cea a primei componente, pentru fiecare
din cele trei soluţii ieşiri dense. Punctele soluţiei normale (discrete) sunt mar-
cate, iar curbele bazate pe soluţiile pe soluţiile cu ieşiri dense, determinate pe
un număr de valori intermediare, sunt afişate. Deoarece toate soluţiile coincid ı̂n
ı̂n punctele date de formula discretă, continuitatea este verificată. Totuşi lipsa de
netezime a erorii de ordinul al doilea este evidentă. Deşi erorile locale ı̂n formula
densă RK2 nu domină eroarea globală, ele par să fie mult mai mari decât eroarea
locală ı̂n cazul cubic. Interpolantul optimizat este este categoric suprior celuilat
interpolant de ordinul al doilea. Deoarece costul suplimentar al determinării unei
soluţii mai precise este neglijabil ı̂n acest caz, metoda de ordinul al treilea este
evident preferabilă.
Deşi formula densă de ordinul al treilea din table 5.4 este unic determinată
de specificaţiile FSAL vor fi multe cazuri ı̂n care p∗ = p şi ı̂n care parametrii
liberi se vor selecta dintr-o formulă optimală. Simpla minimizare a normei erorii
principale ca ı̂n cazul p∗ = p − 1 poate fi inadecvată. Dacă p∗ = p condiţia de
continuitate va asigura
∗ +1)
A(p (σ) = A(p+1) 6= 0,

norma erorii principale pentru metoda RK discretă. Ştiind că extensia continuă
este construită pentru a evita necesitatea unor paşi suplimentari ı̂n formula dis-
cretă, ne vom aştepta ı̂n cel mai bun caz ca
∗ +1)
A(p (σ) = σ p+1 A(p+1) , 0 < σ < 1, (5.10)

implicând faptul că interpolantul conduce la o soluţie la fel de bună ca formula


principală cu un pas redus σh. În practică, minimizarea lui
Z 1
∗ +1)
H= A(p (σ)d σ (5.11)
0

se realizează de parametrii chiar similari celor care conduc la cea mai apropiată
relaţie de ecuaţia (5.10) de mai sus.
92 Ieşiri dense

Figura 5.2: Variaţia normei erorii A(4) pentru formula densă din tabela 5.4

Pentru cazul de ordinul trei deja determinat, se poate arăta că


σ2 p
A(4) (σ) = 1728σ 4 − 7536σ 3 + 13123σ 2 − 11148σ + 3969; (5.12)
288

145 4
a se compara cu norma ,,ideală” 288 σ . Aceste două funcţii sunt reprezentate
grafic ı̂n figura 5.2, arătând că formula nu este apropiată de cea ideală, dar norma
erorii sale de trunchiere este monotonă pentru σ ∈ [0, 1]. Această comportare
bună este consistentă cu rezultatele ilustrate ı̂n figura 5.1.

5.4 Formule de ordin ı̂nalt


Revenind la formule de ordinul al patrulea, o formulă pentru ieşiri dense tre-
buie să satisfacă opt ecuaţii de condiţie. Pentru a vedea cum se realizează aceasta,
considerăm perechea de formule imbricate RK4(3)5M din tabela 4.3. Din feri-
cire ecuaţiile de de condiţie originale pentru aceste formule au fost simplificate
considerând ecuaţiile lui Butcher (3.13),(3.14). Prima dintre acestea nu se poate
aplica parametrilor b∗i , care sunt dependenţi de variabila de interpolare σ, dar
cel de-al doilea set, ce afectează aij este ı̂ncă efectiv. Aceasta reduce numărul
de ecuaţii independente la 6, care este ı̂ncă prea mare pentru un proces de ieşiri
dense cu 5 stadii. Adăugarea unui al şaselea stadiu FSAL nu furnizează suficienţi
parametrii pentru acest caz deoarece ecuaţia (3.14) necesită b∗2 = 0 şi deci se mai
adaugă un al şaptelea stadiu, care mai furnizează ı̂ncă şapte parametrii.
5.4. Formule de ordin ı̂nalt 93

ci aij b̂i bi b∗i


13 23 3 −520σ 2 +378σ−96
0 96 192 − 225σ 96
1 1
5 5 0 0 0
2
2
5 0 2
5
25
48
55
96 − 25σ(5σ48−8σ+2)
2
4
5
6
5 − 12
5 2 25
96
35
192 − 25σ(5σ96−8σ+2)
2 −8σ+2)
1 − 178 5 − 25 5
8
1
12
1
8 − σ(5σ 12
13 25 25 1 σ(σ−1)(35σ−11)
1 96 0 48 96 12 0 0 24
1 67 1 7 1 125σ(σ−1)2
5 480 0 16 480 0 − 60 0 0 24

Tabela 5.5: Pereche de formule imbricate RK4(3)5M cu o extensie cu ieşire


densă de ordinul al patrulea

Spre doesebire de cazul când aveam ordinul trei, există mai mulţi parametrii
decât condiţii şi de aceea este necesar să se utilizeze un criteriu adecvat, cum ar fi
minimizarea integralei (5.11), pentru a-i alege. Formula densă dată ı̂n tabela 5.5
este o aproximare bună a celei optimale pentru RK4(3)5M. La fel ca ı̂n cazurile
discrete uzuale, s-au selectat valori raţionale simple care le aproximează pe cele
optimale. Proprietăţile de continuitate ale soluţiei obţinute prin interpolare sunt
identice cu cele ale formulei dense de ordinul al treilea pentru RK3M. De fapt,
formula din tabela 5.5 are cu un stadiu mai mult decât minimul necesar pentru o
metodă RK4 continuă. la construcţia perechii de ordinul al patrulea RK4(3)5M,
s-au utilizat ipotezele simplificatoare (3.13), (3.14), dar ı̂n plus se poate aplica
condiţia suplimentară
i−1
X 1
aij c2j = c3i , i = 3, . . . , s. (5.13)
3
j=1

(4)
Aceasta are efectul eliminării ce depinde de coeficientul de eroare τ3 (tabela
2.2) şi deoarece este independentă de bi o vom aplica la deducerea formulei
de interpolare. Cu numai şase stadii şi b∗2 , cele 5 ecuaţii rămase pentru b∗2 vor
determina o soluţie unică pentru interpolantul dens. Un exemplu bazat pe acest
model este prezentat de Dormand şi alţii [5].
S-au dedus mai multe extensii continue pentru formula DORPRI5 dată ı̂n
tabela 4.4. Extensia de ordinul al cincilea dată de Calvo şi alţii ı̂n 1990 [3]
este de departe superioară formulelor cum sunt cele prezentate de Dormand şi
Prince [8]. Totuşi sunt necesare două evaluări suplimentare de funcţii şi astfel
acei paşi pentru care sunt necesare ieşiri dense sunt mai costisitori. Construcţia
extensiilor de ordinul al cincilea este mult mai complicată decât cea a celor de
94 Ieşiri dense

ordinul al patrulea, dar ea se realizează similar.


O metodă alternativă de construire a formulelor cu ieşiri dense se bazează
pe interpolarea clasică. Presupunem că avem o formulă RK discretă de ordinul
q şi căutăm o extensie continuă cu acelaşi ordin local. S-a demonstrat ı̂n [8] că
acest lucru este echivalent cu un interpolant Hermite P (x) de grad ≥ q, care se
bazează pe punctele terminale ale unui pa discret RK şi un număr adecvat de
puncte interne sau derivate care au un ordin adecvat de precizie. Dacă luăm de
exemplu q = 5, interpolantul trebuie să satisfacă condiţiile

P (xn ) = yn P 0 (xn ) = f (xn , yn );


P (xn+1 ) = yn+1 P 0 (xn+1 ) = f (xn+1 , yn+1 ) (5.14)
0
P (xn+σi ) = f (xn+σi , un+σi ), i = 1, 2,

unde un+σi , o estimare a lui y(xn+σi ), se obţine dintr-un interpolant dens de or-
dinul al patrulea care se presupune că este disponibil. Cele şase condiţii specifică
un polinom de grad 5 care se determină uşor. Dacă polinomul se alege să fie de
forma
X5
P (x) = αj σ j , σ = (x − xn )/h,
j=0

coeficienţii αj pot fi determinaţi rezolvând un sistem de acuaţii liniare. Altfel,


polinomul se poate construi cu ajutorul diferenţelor divizate. Deoarece două din-
tere condiţii presupun derivate ale lui y şi nu există nici una care să se refere la
valorile y corespunzătoare, soluţia ar putea să nu existe pentru toate valorile pa-
rametrilor. Totuşi, se poate arăta că o astfel de soluţie potrivită există. Tehnica
amintită aici poate fi utilizată la construcţia unor extensii continue de ordin ı̂nalt
[9] printr-un proces numit bootstrapping. Astfel, se poate determina un inter-
polant de ordinul al patrulea calculând valori intermediare ale funcţiei dintr-un
ı̂ntr-un punct intermediar prin intermediul unui polinom de interpolare Hermite
de gradul al treilea. O a doua extrapolare ne va conduce la formula de ordinul al
cincilea dorită. În cazul formulei DORPRI5 deducerea unei extensii continue de
ordinul al patrulea este directă şi va fi nevoie doar de extrapolare pentru a obţine
o formulă de ordinul al cincilea pentru ieşiri dense.
Deoarece coeficienţii DORPRI5 satisfac condiţiile simplificatoare (3.14), (5.13),
precizia de ordinul al patrulea impune numai cinci condiţii asupra parametrilor
b∗i şi deoarece sunt şapte stadii cu b∗2 = 0, unul dintre aceşti parametrii se poate
alege liber. De fapt este avantajos să forţăm interpolantul să fie neted şi apoi să
minimizăm Z 1
H5 = A(5) (σ)d σ. (5.15)
0
5.5. Aspecte de implementare 95

Pentru continuitatea C 1 este necesar să fie satisfăcute condiţiile (5.3), (5.4) şi
deci este convenabil să luăm
b∗7 = σ(σ − 1)(ασ + β), α + β = 1. (5.16)
Rezolvând ecuaţiile relevante de condiţie se obţin b∗i ı̂n funcţie de α se poate
arăta că α = 5/2 conduce la o formulă cu ordinul local patru pentru care H5
din (5.15) este ı̂n apropierea unui minim. Această extensie continuă este dată
ı̂n coloana din stânga tabelului 5.6. Cele două valori ale interpolantului, un+σi ,
i = 1, 2 din ecuaţia (5.14) se poate obţine din
7
X
un+σi = yn + σi h b∗j (σi )fj ,
j=1

şi, ı̂n notaţiile Runge-Kutta, cele două evaluări suplimentare de funcţii ce conduc
la o extensie continuă care local are ordinul 5 sunt
 
X 7
f7+i = f xn + c7+i h, yn + h a7+i,j fj  , i = 1, 2
j=1

unde
c7+i = σi , a7+i,j = σi b∗j (σi ).
Se pot alege orice pentru σ1 , σ2 dar valorile optimale pentru c8 , c9 vor minimiza
Z 1
H6 = A(6) (σ)d σ.
0
1 1
Perechea c8 = 5,c9 = este aproape optimală şi are avatajul de a da un pa-
2
rametru relativ simplu. Cei nouă b̂∗ din formula densă de ordinul al cincilea se
dau ı̂n coloana din dreapta a tabelei 5.6. Aceeaşi metodă poate fi aplicată sı̂ unor
formule de ordin mai mare, deşi numărul de puncte interioare ce conduc la stadii
suplimentare ar putea fi mai mare. În timp ce această tehnică are succes pen-
tru DORPRI5, conducând la o extensie continuă simplă aproape optimală cu cel
mai mic număr de stadii suplimentare, aplicarea ei la ordine mai mari conduce
la extensii continue ce necesită mai multe stadii decât minimul absolut.

5.5 Aspecte de implementare


Extinderea metodelor RK cu pas variabil, descrise ı̂n capitolul 4, pentru a
include ieşiri dense este directă. Paşii adiţionali se dau ı̂n algoritmul 2.
În figura 5.3, se reprezintă eroarea globală a soluţiei cu ieşiri dense de ordinul
4 pentru problema gravitaţională a celor două corpuri, x ∈ [2, 3].
96 Ieşiri dense

b∗i a8i a9i b̂∗i


435σ 3 −1184σ 2 +1089σ−384 5207 613 696σ 4 −2439σ 3 +3104σ 2 −1710σ+384
− 384 4800 6144 384
0 0 0 0
500σ(6σ 2 −14σ+9) 3 2 +32σ−6)
1113
92
765
125
318 − 500σ(24σ −51σ
1113
2 −16σ+6) 3 2 +32σ−6
− 125σ(9σ192 − 16079
− 125
318 − 125σ(25σ −51σ192
729σ(35σ 2 −64σ+26) 53217 8019 2187σ(24σ 3 −51σ 2 +32σ−6
6784 848000 108544 6784
11σ(3σ−2)(5σ−6) 11 11 11σ(24σ 3 −51σ 2 +32σ−6)
− 84 − 300 − 192 − 84
2
σ(σ−1)(5σ−3)
2
4
125
1
32 − σ(σ−1)(32σ8 −31σ+7)
125σ(σ−1)2
0 0 0 24
16σ(σ−1)2 (3σ−1)
0 0 0 3

Tabela 5.6: Ieşiri dense de ordinul 4 şi 5 pentru DORPRI5

Algoritmul 2 Fragment de pseudocod pentru ieşiri dense


Calculează un pas normal
if succes then
for all p punct din interiorul pasului do
Evaluează noile valori de funcţii
Aceleaşi noi evaluări sunt valide pentru orice punct din interiorul acelui
pas
Calculează parametrii de interpolare
Evaluează soluţiile intermediare
end for
Calculează lungimea pasului pentru pasul următor
Actualizează soluţia
end if
5.6. Interpolare inversă 97

Figura 5.3: Eroarea globală a primei componente a soluţiei pentru problema


orbitei cu e = 0.2, utilizând RK4(3)5M cu ieşiri dense de ordinul 4

5.6 Interpolare inversă

O altă aplicaţie importantă a extensiilor continue este rezolvarea problemei


interpolării inverse. În loc să estimăm valoarea y a soluţiei ı̂n punctul x, consi-
derăm calculul unei valori x astfel ı̂ncât y(x) = Y . De regulă Y va fi un scalar,
nu un vector, deşi ı̂n ultimul caz se poate defini un proces de aproximare ı̂n sen-
sul celor mai mici pătrate care să conducă la o soluţie şi ı̂n acest caz. Multe
probleme practice presupun derivate discontinue care necesită ca o metodă nu-
merică să furnizeze o valoare particulară a soluţiei. Integrarea pe discontinuităţi
va da rezultate invalide. Aceste probleme pot fi rezolvate fără extensii continue,
dar pentru a obţine soluţia dorită, avem nevoie de o tehnică iterativă ı̂n care ı̂n
care se va calcula un pas nou pentru fiecare iteraţie. O astfel de tehnică poate fi
foarte costisitoare ı̂n comparaţie cu una bazată pe extensii continue care au formă
polinomială. Rezolvarea unei ecuaţii polinomială este o problemă mai simplă.

Ştiind că soluţia dorită este conţinută ı̂ntr-un pas Runge-Kutta chiar finalizat,
valoare x se poate determina cu metoda Newton-Raphson. În această aplicaţie
este mai convenabil să exprimăm interpolantul ı̂n formă polinomială ı̂n loc de
98 Ieşiri dense

formă Runge-Kutta. Deci luăm


s ∗
X
yn+σ = yn + σh b∗i fi
i=1
r
X
= Aj σ j = P (σ).
j=0

Presupunând că
b∗i = di0 + σdi1 + · · · + σ r dir ,
avem
s
X
A0 = y n , Aj = h di,j−1 fi , j = 1, . . . , r + 1. (5.17)
i=1

Vom utiliza acum metoda Newton-Raphson pentru a rezolva P (σ) = Y ı̂n cazul
scalar. Pentru a găsi o aproximare iniţială, este uşor să calculăm la fiecare pas

∆n = yn+1 − Y,

şi presupunem că soluţia este conţinută când ∆n ∆n−1 < 0. Această tehnică
nu ne garantează determinarea tuturor soluţiilor, dar condiţia verică existenţa
soluţiei ı̂n cadrul dat. O primă aproximare a valorii lui σ este
Y − yn
σ0 = ,
yn+1 − yn
iar iteraţia Newton se exprimă sub forma
P (σk ) − Y
σk+1 = σk − , k = 0, 1, . . .
P 0 (σk )
Aceasta necesită evaluări de derivate, dar deoarece funcţia este polinomială P şi
P 0 pot fi obţinute prin diviziune sintetică. Pentru o problemă nescalară, procesul
de mai sus poate fi aplicat pentru soluţia bazată pe orice valoare a componentei.
Având determinat parametrul de interpolare σ, toate componentele soluţiei pot fi
găsite ı̂n mod normal.

5.7 Probleme
Problema 5.7.1. Obţineţi o formulă cu ieşiri dense cu ordinul local 2 pentru
formula de ordinul al treilea (3.8). Alegeţi parametrul liber pentru a minimiza
coeficienţii adecvaţi ai erorii locale. Verificaţi continuitatea formulei obţinute.
5.7. Probleme 99

Problema 5.7.2. Adăugaţi un stadiu FSAL formulei din problema de mai sus
şi obţineţi astfel o formulă cu ieşiri dense de ordinul al treilea. Utilizaţi această
formulă pentru a calcula y(0.04), y(0.08) pentru problema cu valori iniţiale

y 0 = y 3 − y, y(0) = 0.5

şi o lungime a pasului de h = 0.1, fără a calcula mai mult de un pas.

Problema 5.7.3. Construiţi o formulă cu ieşiri dense de ordinul al patrulea pen-


tru formula lui Merosn dată ı̂n tabela de mai jos.

ci aij b̂i
1
0 6
1 1
3 3 0
1 1 1
3 6 6 0
1 1 3 2
2 8 0 8 3
1
1 2 0 − 23 2 1
6

Alegeţi parametrul liber pentru a obtine un interpolant continuu. Determinaţi un


interpolant neted (C 1 ) adăugând un stadiu FSAL la formula lui Merson.

Problema 5.7.4. Utilizaţi program RkDen pentru a calcula soluţia ecuaţiei

y 00 + 0.1(y 0 )2 + 0.6y = 0, y(0) = 1, y 0 (0) = 0,

pe intervalul x ∈ [0, 10], producând intervale egale de lungime 0.5 după x.

Problema 5.7.5. Utilizaţi polinomul pentru ieşiri dense bazate pe RK4(3)5M din
tabela 4.3 pentru a calcula mai precis momentul impactului la prăbuşirea navei
Enterprise, ale cărei ecuaţii se dau ı̂n problema refprob5.8. Metoda Newton-
Raphson se va utiliza pentru a determina valoarea corespunzătoare altitudinii
zero.

Problema 5.7.6. Impuneţi condiţiile simplificatoare ale lui Butcher (3.13), (3.14),
(5.13) asupra coeficienţilor din eroarea RK de ordinul 4. Deci aceasta arată că
ecuaţiile de condiţie pentru o formulă de ordinul al patrulea cu s stadii se reduce
la
s
X 1
bi cki = , k = 0, 1, 2, 3
k+1
i=1

cu b2 = 0. Punând i = 3 ı̂n condiţia simplificatoare (3.14) şi (5.13), arătaţi că


c2 = 23 c3 . Schiţaţi metoda de rezolvare a ecuaţiei când s = 5, şi găsiţi procesul
RK4 cu c2 = 21 , c4 = 43 .
100 Ieşiri dense

Se consideră construcţia unei extensii continue a metodei RK4 găsite de


dumneavoastră, utilizând un stadiu FSAL. Arătaţi că ecuaţiile care trebuie sa-
tisfăcută de procesul de ieşire sunt
6
X σk
b∗i cki = , k = 0, 1, 2, 3
k+1
i=1
6
X
b∗i ai2 = 0.
i=1

Determinaţi extensia continuă. Testaţi formula pentru aplicaţia din problema


precedentă.
Problema 5.7.7. Obţineţi ecuaţiile pe care trebuie să le satisfacă extensia con-
tinuă de ordinul 4 pentru DORPRI5. Presupunem că b∗i dată de formula (5.16).
Problema 5.7.8. Un dop de lungime L este pe punctul de a fi expulzat dintr-o
sticlă ce conţine un lichid ı̂n fermentaţie. Ecuaţiile de mişcare a dopului sunt
 h −γ RT i
qx
 g(1 + q) 1 + xd + 100 − 1 + L(1+q) , x < L;
dv 
= 0, x ≥ L.
dt 
 dx
dt
unde
g acceleraţia gravitaţională;
q raportul frecare-greutate al dopului;
x deplasarea dopului ı̂n gâtul sticlei;
t timpul;
d lungimea gâtului sticlei
R rata procentuală cu care presiunea creşte;
γ constanta adiabatică pentru gazul din sticlă (1.4).
Condiţiile iniţiale sunt x(0) = ẋ(0) = 0. Atât timp cât x < L dopul este
ı̂ncă ı̂n sticlă, dar el părăseşte sticla când x = L. Integraţi ecuaţiile de mişcare
cu DORPRI5 (tabela 4.4) şi toleranţa 0.000001 pentru a găsi momentul la care
dopul este aruncat. Determinaţi de asemenea viteza de expulzare când
q = 20, L = 3.75cm, d = 5cm, R = 4.
Se va utiliza o formulă cu ieşiri dense pentru a determina momentul expulzării.
Capitolul 6

Stabilitate şi stiffness

6.1 Introducere
În capitolele precedente, am considrat construcţia formulelor Runge-Kutta
cu referinţă numai la proprietăţile asimptotice ale erorii lor. Pentru multe pro-
bleme practice aceste proprietăţi nu asigură o metodă convenabilă şi eficientă de
rezolvare. Astfel de probleme conţin sisteme de ecuţii cu soluţii ce conţin com-
ponente a căror rate de modificare diferă substanţial. În multe cazuri proprietatea
de stabilitate guvernează procesele numerice.
Pentru a ilustra acest tip de problemă, considerăm o ecuaţie liniară de ordinul
al doilea ce modelează o mişcare simplă armonică, aşa cum ar putea fi descrisă
de un resort ı̂n vibraţie a cărui mişcare este frânată de o forţă proporţională cu vi-
teza. Presupunem că y este deplasamentul unei unităţi de masă ataşată la capătul
resortului, c este constanta de amortizare şi k este constanta de rigiditate (stiff-
ness) a resortului. Atunci ecuaţia de mişcare a masei este
y 00 + cy 0 + ky = 0, (6.1)
unde accentele indică derivarea ı̂n raport cu timpul x. Soluţia generală a acestei
ecuaţii este
y(x) = Aeα1 x + Beα2 x ,
unde
1 p 
α1 , α2 = −c ± c2 − 4k .
2
Dacă c2 > 4k, resortul se numeşte puternic amortizat şi ambii exponenţi (α1 , α2 )
sunt negativi. De exemplu, când c = 26/5, k = 1 şi valorile iniţiale sunt y(0) =
y 0 (0) = 1, ecuaţia (6.1) are soluţia
1  −x/5 
y(x) = 5e − e−5x .
4

101
102 Stabilitate şi stiffness

Această expresie constă din două componente, numite de obicei termen tranzi-
toriu rapid şi lent. Termenul tranzitoriu rapid este cel care descreşte mai repede
şi, ı̂n acest caz, termenul mai rapid (e−5x ) este neglijabil exceptând valorile mici
ale lui x. Figura 6.1 ne arată soluţia pentru x ∈ [0, 2] ı̂mpreună cu componenta
lentă. Componenta lentă ı̂n sine furnizează o aproximantă bună pentru soluţia
completă când x > 1.

Figura 6.1: Soluţia resortului rigid ı̂n [0,2]

Totuşi, pentru o metodă numerică care utilizează valorile derivatei, compo-


nenta rapidă continuă să influenţeze soluţia, chiar şi pentru valori ale lui x mai
mari decât 1. În consecinţa mecanismul de control al pasului depinde de o canti-
tate despre care se ştie că este neglijabilă ı̂n soluţia reală. Aceasta nu ı̂nseamnă că
lungimea pasului este nenecesar de mică. Metoda numerică nu are realmente ne-
voie de o lungime mică a pasului pentru a satisface ceea ce se numeşte o condiţie
de stabilitate.
Pentru aplicarea unei formule RK standard, ecuaţia de ordinul al doilea (6.1)
se va scrie sub forma unui sitem liniar
1 0    1 
y 0 1 y
2 y 0 = −1 − 26 2y (6.2)
5

cu valorile iniţiale 1 y = 1, 2 y = 1.
În acest capitol va fi investigat conceptul de stabilitate ı̂n raport cu metodele
RK. Se va introduce proprietatea de rigiditate (stiffness) ı̂n legătură cu sistemele
de ecuaţii diferenţiale. Se vor considera metode RK speciale pentru aplicaţii la
astfel de sisteme.
6.2. Stabilitate absolută 103

6.2 Stabilitate absolută


Deşi nu sunt necesare metode numerice speciale pentru a prelucra ecuaţii
liniare, este instructiv şi convenabil să le utilizăm ı̂ntr-o discuţie a fenomenului
de stabilitate. Pentru a introduce conceptul de stabilitate absolută considerăm
aplicarea unei formule Runge-Kutta cu două stadii problemei test scalare

y 0 = λy, y(xn ) = yn , (6.3)

care are soluţia exactă


y(x) = yn eλ(x−xn ) .

Aplicând formula RK generală ı̂n două stadii 2.11 se obţin

f1 = λyn
f2 = λ(yn + c2 hf1 )
= λ(yn + c2 hλyn ),

obţinându-se, pentru un singur pas,

yn+1 = yn [1 + (b1 + b2 )r + b2 c2 r2 ],

unde bi şi ci sunt parametrii ı̂ncă nespecificaţi. Se poate simplifica expresia de


mai sus alegând parametrii astfel ca formula RK să aibă ordinul 2. Utilizând
ecuaţia (2.13) se ajunge la

1
yn+1 = P (r)yn , P (r) = 1 + r + r2 , (6.4)
2

unde P (r) se numeşte polinom de stabilitate al procesului RK. Când λ < 0,


soluţia reală a ecuaţie (6.3) este monoton descrescătoare şi o soluţie numerică
acceptabilă trebuie să aibă proprietăţi similare. Deoarece toate metodele Runge-
Kutta consistente sunt convergente, o lungime a pasului suficient de mică va
garanta această caracteristică, dar este important să se determine o dimensiune
adecvată a pasului Se impune condiţia

|yn+1 | < |yn |.

Conform lui (6.4) această inegalitate necesită

|P (r)| < 1. (6.5)


104 Stabilitate şi stiffness

O metodă care satisface inegalitate (6.5) se numeşte absolut stabilă. Din (6.4),
condiţia de stabilitate absolută pentru o metodă arbitrară cu două stadii RK2 se
poate scrie
1 + r + 1 r 2 < 1

2
sau
1
−1 < 1 + r + r2 < 1. (6.6)
2
Inegalitatea din stânga este echivalentă cu
1
0 < 2 + r + r2 ,
2
care, completând pătratele, ne conduce la
1 3
0 < (r + 1)2 + ,
2 2
care este adevărată pentru orice r real. Partea dreaptă al inegalităţii (6.6) este
echivalentă cu
1
r(r + 2) < 0,
2
care este adevărată când −2 < r < 0. Deci condiţia de stabilitate absolută pentru
o metodă arbitrară cu două stadii se paote scrie

−2 < hλ < 0. (6.7)

Astfel, orice metodă cu două stadii RK2 aplicată ecuaţiei (6.3) va produce un şir
cu valorile absolute descrescătoare când r este mărginită aşa cum s-a arătat aici
şi dacă λ este specificat, condiţia ne conduce la o margine a mărimii h a pasului.
De exemplu, pentru λ = 1 stabilitatea absolută impune condiţia h < 2.
Tratamentul precedent al stabilităţii absolute se bazează pe o problemă test
scalară care este mult mai simplă decât una care de obicei necesită un tratament
numeric. Extensia analizei stabilităţii la sisteme neliniare de ecuaţii diferenţiale
continuă cu considerarea unui sistem liniar de dimensiune m,

y 0 = Ay, y(xn ) = yn ,

unde y ∈ Rm iar A este o matrice constantă m × m.Aplicarea unei formule RK2


acestui sistem ne dă un rezultat, similar expresiei (6.4)
1
yn+1 = P (hA)yn , P (hA) = I + hA + h2 A2 ,
2
6.2. Stabilitate absolută 105

Figura 6.2: Regiunea de stabilitate pentru o metodă RK2 cu două stadii

unde P este m × m. Condiţia de stabilitate absolută ı̂n cazul vectorial este



1 2 2
kyn+1 k < kyn k ⇒ I + hA + h A

< 1,
2
pentru orice normă. O normă potrivită este raza spectrală a lui P (hA), care este
valoarea proprie cea mai mare ı̂n modul. Dacă A are valorile proprii λ1 , dots,
λm , atunci polinomul P (hA) are valorile proprii
1
1 + hλj + h2 λ2j , j = 1, 2, . . . , m
2
şi cerinţa de stabilitate absolută devine

1 + hλj + 1 h2 λ2j < 1,

j = 1, 2, . . . , m. (6.8)
2

Astfel, orice valoare proprie a matricei A trebuie să satisfacă condiţia de stabili-
tate (6.7) obţinută din ecuaţia test scalară.
Deoarece valorile proprii ale matricei A sunt ı̂n general complexe, inega-
litatea (6.8) defineşte o regiune din planul complex aşa cum se arată ı̂n figura
6.2. De fapt, regiunea ı̂n care se asigură stabilitatea absolută este simetrică faţă
de axareală, se obişnuieşte să se reprezinte numai semiplanul cu axa imaginară
pozitivă.
106 Stabilitate şi stiffness

Trebuie accentuat că se cere ca o metodă să fie absolut stabilă numai pentru
probleme cu soluţii care au componente ce descresc. Pentru λ > 0 soluţia va
creşte şı̂ figura indică faptul că RK2 ne va da ı̂n acest caz valori crescătoare.
Un alt lucru care trebuie evidenţiat este acela că stabilitatea unei metode
numerice nu ı̂nseamnă neapărat precizia ridicată. Stabilitatea absolută ne asigură
că soluţia numerică va fi mărginită, dar ea poate diferi foarte mult de soluţia
adevărată. Aceasta se poate arăta aplicând formula RK2 ecuaţie y 0 = −y, y(0) =
1 cu pasul h = 1. Stabilitatea absolută necesită h < 2 şi astfel soluţia numerică
va descreşte. În ultimă instanţă, atât soluţia RK cât şi cea adevărată vor converge
către zero, dar valorile tranzienţilor vor diferi vizibil.

Figura 6.3: Regiunea de stabilitate pentru RK4

De obicei, formulele de ordin ı̂nalt posedă regiuni de stabilitate mai mari


decât RK2, deşi acest lucru nu este neapărat necesar. Pentru o metodă cu patru
stadii RK4, corespunzătoare ecuaţiei (6.4), polinomul de stabilitate este
1 1 1
P (r) = 1 + r + r2 + r3 + r4 ,
2 6 24
şi acesta dă o margine de stabilitate reală negativă de -2.8, aşa cum se indică ı̂n
figura 6.3.
Pentru o formulă RK de ordinul p cu s stadii, se poate arăta că polinomul
de stabilitate P (r) are gradul s şi poate fi scris cu ajutorul parametrilor RK sub
forma
6.3. Stabilitatea neliniară 107

Figura 6.4: Regiunile de stabilitate pentru perechea DORPRI5

X X X X
P (r) = 1 + r bi + r 2 bi ci + r3 bi aij cj + r4 ba aij ajk ck
i i ij ijk
X
s
+ ··· + r bi aij ajk ..avw cw
ijk...vw
s
X
=1+ Wi ri , (6.9)
i=1

unde Wi = 1/i!, i = 1, 2, . . . , p. Pentru membrul de ordinul al cincilea al


perechii DORPRI5 limita reală negativă de stabilitate este aproximativ -3.3, ı̂n
timp ce cea pentru membrul de ordinul 4 este -4.4. O caracteristică curioasă a
graficului de stabilitate al perechii DORPRI5 este existenţa unor regiuni mici ı̂n
dreapta sus, distincte de cele principale (figura 6.4). Aceşti ,,sateliţi” nu au nici
o semnificaţie practică.

6.3 Stabilitatea neliniară

Studiul stabilităţii neliniare este mult mai dificil decât cel al stabilităţii pentru
sisteme liniare. Pentru sisteme neliniare ı̂n forma autonomă y 0 = f (y), y ∈ RM ,
108 Stabilitate şi stiffness

rolul matricei A de mai sus este jucat de matricea jacobian J a lui f , unde
1
f1 1 f2 . . . 1 fM

 2 f1 2 f2 . . . 2 fM 
J = . ..  .
 
.. ..
 .. . . . 
Mf Mf ... Mf
1 2 M

Deoarece J este variabilă, cerinţele de stabilitate vor varia peste domeniul soluţiilor
ecuaţiei diferenţiale. Această variaţie este demonstrată prin referirea la o pro-
blemă scalară neliniară
1 1
y0 = − 2 (1 + x3 ), y(1) = 1, (6.10)
y x

care are soluţia exactă y(x) = 1/x. Scriind această ecuaţie ı̂n forma autonomă
cu M = 2, este uşor să se obţină jacobianul, care are cea mai mare valoare
proprie
λ(x) = −1/y 2 = −x2 .
Astfel, soluţia exactă descreşte monoton pe măsură ce raza spectrală a lui J
creşte.Pentru o formulă RK cu o ccondiţie de stabilitate absolută

−L < hλ(x) < 0,

este clar că mărimea maximă a pasului ce asigură descreşterea soluţie scade când
x creşte. Pentru a ilustra aceasta, figura 6.5 arată variaţia lungimii pasului când
metoda ode23, x ∈ [1, 10], toleranţa T = 10−2 este aplicată ecuaţiei (6.10).
Figura indică o reducere a pasului prea mare pentru această problemă.

6.4 Stiffness
Dacă valorile proprii ale lui J diferă mult, sistemul de ecuaţii diferenţiale se
numeşte stiff (rigid?). Un astfel de sistem pune probleme dificile unui integrator
clasic şi s-a depus un mare efort pentru a dezvolta metode speciale care să lucreze
eficient cu stiffness. Urmează o definiţie a noţiunii de stiffness.
Dacă valorile proprii ale lui J sunt λ1 , λ2 , . . . , λM sistemul se numeşte stiff
dacă

1. <(λk ) < 0, k = 1, 2, . . . , M ;

2. max |<(λ(k)|  min |<(λ(k)|.


6.4. Stiffness 109

Figura 6.5: Variaţia lungimii pasului ı̂n [1,10] pentru ecuaţia (6.10)

Raportul
max |<(λ(k)|
S=
min |<(λ(k)|
se numeşte raport de stiffness (stiffness ratio) a sistemului de ecuaţii. Pentru
ecuaţia (6.2) el este 25. Pentru valori mari ale lui S cerinţele de stabilitate ale
membrilor mulţimii valorilor proprii diferă substanţial. Dacă aceeaşi marime de
pas s-ar aplica tuturor acestora ar trebui să fie guvernată de valoarea proprie cu
cea mai mare parte reală negativă şi deci trebuie să fie mult mai mică decât ar fi
cazul pentru membrii mici ai mulţimii. Aceasta implică costuri computaţionale
mari şi astfel căutarea unor metode cu regiuni mari de stabilitate este motivată.
De notat că prezenţa valorilor proprii negative mari nu indică neapărat derivate
mari pentru care se aşteaptă dimensiuni asimptotic mari ale pasului.
Să considerăm un sistem liniar simplu care ilustrează problemele generate de
stiffness. Ecuaţia
1 0    1 
y 1 994 −1998 y
2y0 = 2y (6.11)
5 2997 −5999

cu valorile iniţiale 1 y(0) = 1, 2 y(0) = −2, are soluţia exactă


1
y(x) = 2e−x − e−1000x
2
y(x) = e−x − 3e−1000x .
110 Stabilitate şi stiffness

Valorile proprii ale matricei A din acest exemplu sunt -1 şi -1000 şi deci S =
1000. Termenul tranzient rapid (e−1000x ) este neglijabil, exceptând valori foarte
mici ale lui x şi, dacă se calculează soluţia cu o precizie modestă, să zicem
7 zecimale, din expresia analitică rezultă că nu va fi nevoie să evaluăm acest
termen pentru x > 0.02. Soluţia este ilustrată ı̂n figura 6.6. Fiecare componentă
tinde către zero. Conform analizei de stabilitate, marimea pasului h trebuie să

Figura 6.6: Soluţia unei probleme stiff

asigure stabilitatea printr-o metodă cu două stadii RK2 trebuie să satisfacă 0 <
1000h < 2. Astfel pe intervalul x ∈ [0, 2] sunt necesari 1000 de paşi, iar pentru
o metodă RK4 mult mai stabilă numărul de paşi se va reduce doar cu 30%. O
astfel de integrare va fi mai costisitoare deoarece fiecare pas de ordinul 4 necesită
de două ori mai multe evaluări de funcţie ca RK2. Dacă componenta tranzient
rapid lipseşte, acelaşi interval ar putea fi acoperit cu o toleranţa rezonabilă ı̂n
câteva zeci de paşi.
Din nefericire, un proces numeric nu poate ignora efectul tranzienţilor rapizi
nici chiar când aceştia sunt neglijabili. Faptul că există derivate mari numai când
x < 0.01 nu ı̂nseamnă neapărat că mărima pasului va creşte când x > 0.01.
Rezolvând ecuaţia pe intervalul [1, 1.6] cu pasul constant h = 0.1 cu o metodă
RK2 explicită (2.15) se obţin rezultatele din tabela 6.1.
Deoarece h este mult mai mare decât limita de stabilitate pentru problemă
soluţia numerică va produce valori care cresc repede ı̂n modul. Ecuaţia

y 0 = −y, y(1) = 0.7357589,

are o soluţie cu o comportare asemănătoare cu cea a primei componente a ecuaţiei


(6.11) pentru x ≥ 1. Aceeaşi metodă RK2 cu aceeaşi dimensiune de pas (0.1)
6.5. Îmbunătăţirea stabilităţii metodelor RK 111

Solutii numerice Componentele erorilor


xn 1y 2y 1ε 2ε

1.0 0.7357589 0.3678794 0.000e+000 0.000e+000


1.1 0.6658618 0.3329309 1.196e-004 5.981e-005
1.2 0.6026049 0.3013025 2.165e-004 1.082e-004
1.3 0.5453581 0.2726808 2.945e-004 1.490e-004
1.4 0.4968963 0.2568178 3.702e-003 1.022e-002
1.5 16.85446 49.44673 1.641e+001 4.922e+001
1.6 80415.04 241244.1 8.041e+004 2.412e+005

Tabela 6.1: Rezolvarea ecuaţiei (6.11) cu o metodă explicită RK2 (Heun)

produce rezultate precise (ε(1.3) = 2.939 × 10−4 ). Nemărginirea soluţiei nume-


rice a lui (6.11) se datorează componentei rapide, chiar dacă ea are o influenţă
negljabilă asupra soluţiei exacte.
De notat că aplicarea unei perechi imbricate, de exemplu DORPRI5, dă de
obicei rezultate precise, dar numărul de paşi necesari pentru a integra (6.11) pe
[0,1] va fi foarte mare (circa 330). Din fericire mecanismul de control al pasului
reduce mărimea pasului la o valoare adecvată, la fel ca ı̂n cazul neliniar din
secţiunea precedentă Totuşi, proporţia de paşi respinşi va fi foarte mare, la fel ca
ı̂n exemplul (6.10) amintit anterior.

6.5 Îmbunătăţirea stabilităţii metodelor RK


Având ı̂n vedere fenomenele evidenţiate anterior, există o motivaţie puternică
pentru a căuta metode care asigură regiuni mai mari de stabilitate. Este clar că
metodele RK explicite, cu polinoamele lor de stabilitate, trebuie să fie limitate
din acest punct de vedereTotuşi, este posibil să se determine parmetrii RK astfel
ca să se optimizeze caracteristicile de stabilitate ı̂n locul optimizării erorii lo-
cale de trunchiere. O abordare mai radicală este să construim formule implicite;
se va vedea mai târziu că astfel de procese pot fi necondiţionat stabile. Totuşi,
intervalul de stabilitate reală pentru metode RK explicte poate fi mărit, cum se
artă ı̂n continuare. În capitolele precedente am văzut că adăugarea de stadii la
un proces Runge-Kutta penrmite creşterea ordinului său algebric. Dezvoltarea
metodelor de ordin mare nu conţine nici o consideraţie asupra proprietăţilor de
stabilitate absolută. Ca abordare alternativă, stadiile suplimentare se pot utiliza
pentru a extinde stabilitatea absolută, fără a creşte ordinul asimptotic al procesu-
lui. O metodă convenabilă de a face aceasta a fost descrisă de van der Houven
[19], care a dezvoltat o tehnică strâns ı̂nrudită cu construcţia polinoamelor mi-
112 Stabilitate şi stiffness

nimax. În loc să considere coeficienţii erorii ı̂n procesele RK, van der Houven

Figura 6.7: Polinoame de stabilitate maximă pentru metoda RK1 cu 2 şi 3 stadii
şi RK2 cu trei stadii

a impus restricţii asupra polinoamului de stabilitate dat ı̂n ecuaţia (6.9), al cărui
grad coincide cu numărul de stadii.
Pentru o metodă RK cu două stadii, polinomul de stabilitate obţinut aplicând
formula unei ecuaţii de test y 0 = λy are forma

P (r) = 1 + (b1 + b2 )r + b2 c2 r2 ,

unde r = hλ, h fiind lungimea pasului. Punând b1 + b2 = 1 formula devine de


ordinul I şi consistentă şi punând b2 c2 = 21 se obţine o metodă RK2. Este esenţial
să se specifice o formulă consistentă, dar a doua cerinţă de ordin poate fi ı̂nlocuită
cu un criteriu de stabilitate maximală. Astfel se poate specifica b2 c2 = β2 6= 12
unde β2 va fi ales pentru a furniza cel mai mare interval de stabilitate absolută
posibil [L, 0].
Cerinţa de stabilitate absolută impune |P (r)| < 1 şi o clasă bine cunoscută de
funcţii ortogonale, polinoamele Cebı̂şev, au o proprietate ı̂nrudită. Polinoamele
Cebı̂şev se pot defini prin

Tn (x) = cos nθ, cos θ = x, x ∈ [−1, 1],

şi pot fi generate cu ajutorul relaţiei de recurenţă

Tj + 1(x) = 2xTj (x) − Tj−1 (x), j = 1, 2, 3, . . . .


6.5. Îmbunătăţirea stabilităţii metodelor RK 113

Polinomul Cebı̂şev de grad n are n+1 valori extreme alternative ±1, x ∈ [−1, 1]
. Pentru a ı̂ndeplini cerinţele de stabilitate polinomul Cebı̂şev este translatat
luând
r
x=1+ ,
α
atunci
x ∈ [−1, 1] ⇒ r ∈ [−2α, 0].
Relaţia de recurenţa pentru polinoamele de stabilitate Cebı̂şev are forma
 r
Pj+1 (r) = 2 1 + Pj (r) − Pj−1 (r), j = 1, 2, 3, . . .
α
şi primele trei polinoame sunt
r
P1 (x) = 1 +
α
r  r 2
P2 (x) = 1 + 4 +2
α α
r
 r 2  r 3
P3 (x) = 1 + 9 + 12 +4 .
α α α
Pentru a fi polinoame de stabilitate pentru formule RK consistente, polinoamele
de grad m trebuie să aibă α = m2 ,obţinându-se astfel o limită de stabiltate
negativă L = 2m2 . Pentru un proces cu două stadii , se selectează P2 cu α = 4
care ne conduce la
1
P (r) = 1 + r + r2 , (6.12)
8
cu |P (r)| ≤ 1, r ∈ [−8, 0], aşa cum se arată ı̂n figura 6.7. Obţinerea acestui
rezultat, când sunt implicate numai două stadii, este simplă chiar şi fără transfor-
mare Cebı̂şev.
În acest moment trebuie precizat că cerinţa de stabiltate absolută poate fi
slăbită şi inegalitatea strictă din (6.5) să devină nestrictă. În acest caz avem de-a
face cu stabilitatea slabă şi procesul se numeşte slab stabil.
Pentru a obţine coeficienţii formulei RK cu două stadii şi stabilitate optimală
luăm b2 c2 = 18 . Selectând b2 = 1 se obţine c2 = 81 , b1 = 0. Această formulă
RK1 cu două stadii este de două ori mai costisitoare pe pas decât metoda lui Eu-
ler, dar va permite un poas de paru or mai mare când este guvernată de stabilitate.
Extinderea tehnicii Cebı̂şev la un număr arbitrar de stadii este evidentă.
De asemenea tehnica poate fi extinsă la formule de ordin superior [19]. De
exemplu o formulă RK2 cu trei stadii are polinomul de stabilitate
1 1
P (r) = 1 + r + r2 + β3 r3 , β3 6= . (6.13)
2 6
114 Stabilitate şi stiffness

ci aij bi
0 0
1 1
27 27 0 0
4 4
27 0 27 1

Tabela 6.2: RK1 cu trei stadii şi stabilitate maximală

ci aij bi
0 0
1 1
8 8 0 0
1 1
2 0 2 1

Tabela 6.3: RK2 cu trei stadii şi stabilitate maximală

Din nefericire (6.13) nu este un polinom Cebı̂şev, dar un β3 optimal şi coeficienţi
adecvaţi de grad mai mare, când sunt permise mai multe stadii se pot calcula cu
algoritmul lui Remez, aplicabil problemelor minimax cu restricţii. De fapt, va-
1
loarea optimală este β3 = 16 , iar polinomul (6.13) cu acest coeficient este repre-
zentat ı̂n figura 6.7. În această figură se dă şi polinomul de stabilitate maximală
bazat pe P3 (x),
4 4 3
P (r) = 1 + r + r2 + r , (6.14)
27 729
pentru o formulă RK1 cu trei stadii.
Pentru a obţine parametrii pentru o formulă cu trei stadii, din ecuaţia (6.9) se
observă că
b1 + b2 + b3 = 1
4
b2 c2 + b3 c3 = (6.15)
27
4
b3 a32 c2 = .
729
Oricare trei dintre aceşti parametri poate fi specificat si, pentru simplitate, alegem
a31 = b1 = b2 = 0, obţinându-se soluţia din tabela 6.2. Cu o limită de stabilitate
de -18 această formulă permite o lungime a pasului de trei ori mai mare decât
metoda lui Euler clasică (RK1) la un cost doar de trei ori mai mare. Formula de
ordinul al doilea de stabilitate maxi,ală şi cu acelaşi cost computaţional este dată
ı̂n tabela 6.3.
Pentru aplicaţii practice ale formulelor maximal stabile este posibil să com-
binăm perechi imbricate, aşa cum recomandă ı̂n capitolul 4. În acest caz, totuşi
6.6. Probleme 115

ci aij b̂i bi
19
0 0 243
1 1 608
8 8 0 729
1 1 64
2 0 2 1 729

Tabela 6.4: Pereche imbricată RK2(1)3S

ambele formule ale perechii trebuie alese ţinând cont şi de proprietăţile de sta-
bilitate şi de ordinul algebric. Acest lucru este necesar deoarece dacă diferenţa
dintre cele două soluţii trebuie să fie mărginită, marimea pasului trebuie să fie
guvernată de cea mai mică dintre cele două limite de stabilitate. Să considerăm
o formulă de ordinul I ce utilizează aceleaşi evaluări de funcţie ca formula RK2
din tabela 6.3. Parametrii trebuie să satisfacă ecuaţiile (6.15) pentru a da o li-
mită negativă de stabilitate de -18. În acest caz valorile lui c2 , c3 şi a32 sunt
cele date ı̂n tabela 6.3 şi astfel prin rezolvarea celor trei ecuaţii se pot obţine
cele trei valori bi . Perechea rezultată apare ı̂n tabela 6.4. Această formulă poate
fi obţinută ı̂n acelaşi mod ca orice altă pereche de formule conţinute. Formula
de reducere optimală (4.3) va fi furnizată efectiv cu condiţia ca limita de stabi-
litate pentru RK2 să nu fie depăşită. Dacă apare o respingere de pas datorită
instabilităţii arbitrare, este probabil ca eroarea estimată să fie extrem de mare. În
consecinţă este important să concepem o formulă de predicţie a mărimii pasu-
lui care limitează factorul de reducere; altfel procesul poate fi foarte ineficient
datorită alegerii unor paşi nenecesar de mici ce alternează cu respingerile de pas.
Aplicarea formulelor de ordin mic cum ar fi cele prezentate mai sus nu este
recomandată pentru probleme generale din motivele discutate ı̂n capitolul 3.
Totuşiexistă anumite tipuri de probleme, evident cele ı̂n care stabilitatea absolută
este importantă, ı̂n care ele pot fi utile. Un astfel de exemplu este tehnica dis-
cretizării aplicată ecuaţiilor diferenţiale parabolice. O proprietate caracteristică a
acestor sisteme este prezenţa valorilor mici ale derivatei care conduce la dimen-
siuni ale pasului guvernate de stabilitate. Răcirea lentă ı̂n modelarea conducţiei
termice furnizează astfel de sisteme.

6.6 Probleme
Problema 6.6.1. Găsiţi regiunea de stabilitate pentru metoda lui Euler

yn+1 = yn + hf (xn , yn ).

Desenaţi o figură simplă care să ilustreze această regiune din planul complex.
116 Stabilitate şi stiffness

Problema 6.6.2. Obţineţi polinomul de stabilitate pentru o formulă cu trei stadii


RK3 ı̂nlocuid ecuaţia de test y 0 = λy ı̂n formulă. Tabelaţi valorile acestui poli-
nom pentru r = 0, −1, −2, −3. Calculaţi limita de stabilitate negativă cu două
zecimale corecte.
Problema 6.6.3. Găsiţi polinomul de stabilitate pentru o metodă RK cu patru
ci aij bi
0 0
stadii dată ı̂n forma tabelară c2 a21 0
c3 0 a32 0
c4 0 0 a43 1
Problema 6.6.4. Investigaţi stabilitatea absolută a metodei seriilor Taylor. Găsiţi
limita reală de stabilitate negativă pentru polinoamele Taylor de grad 5 şi 6.
Problema 6.6.5. Arătaţi ca polinomul de stabilitate pentru membrul de ordinul
5 al perechi DORPRI5 din tabela 4.4 este
1 1 1 1 5 1 6
P (r) = 1 + r + r2 + r3 + r4 + r + r .
2 6 24 120 600
Problema 6.6.6. Determinaţi polinoamele de stabilitate pentru perechea RK4(3)5M
dată ı̂n tabela 4.3. Scrieţi un program pentru a determina rezgiunea de stabilitate
a acestei perechi.
O astfel de tehnică se bazează pe ,,baleierea” planului complex. Se pune
r = xk + iym , unde xk = −k∆x, şi se calculează P (r) pentru orice k, m şi ∆x
şi ∆y.
Problema 6.6.7. Investigaţi cerinţele de statbilitate pentru o metodă Runge-
Kutta aplicată ecuaţiei neliniare

y 0 = −y 2 , y(1) = 1.

Utilizaţi o pereche imbricată pentru agăsi soluţia din [1,10] cu o toleranţă locală
T = 0.001. Comparaţi rezultatul cu soluţia analitică.
Problema 6.6.8. Obţineţi matricea jacobiană pentru ecuaţı̂a (6.10). Deci gasiţi
valorile proprii. Aplicaţi perechea de metode imbricate RK2(1)3S acestei ecuaţii
şi comparaţi secvenţa de mărimi de paşi cu cea din figura 6.5 produsă de perechea
RK3(2). Concepeţi o modificare a procedurii de control al pasului din figura ??
care să ı̂mbunătăţească eficienţa metodei.
Problema 6.6.9. Utilizaţi polinomul Cebı̂şev de grad 4 pentru a construi o formlă
de ordinul ı̂ntâi cu patru stadii cu o limită reală de stabilitate [−32, 0] . Determinaţi
regiunea de stabilitate din planul complex pentru formula dumneavoastră.
6.6. Probleme 117

Problema 6.6.10. Investigaţi stabilitatea absolută a formulei implicite:


0
yn+1 = yn + hyn+1 .

(De notat că polinomul de stabilitate ce apare ı̂n cazurile explicite se ı̂nlocuieşte
ı̂n acest caz cu o funcţie raţională.)
118 Stabilitate şi stiffness
Capitolul 7

Metode multipas

7.1 Introducere
Metodele Taylor şi Runge-Kutta descrise ı̂n capitolele precedente sunt exe4mple
de scheme cu un singur pas, deoarece fiecare nou pas este definit cu ajutorul
punctului precedent. Nici o lta valoare de la alţi paşi nu se utilizează, deşi ar
putea fi deja calculaţi mii de paşi. Intuiţia ne sugerează că am putea considera
posibilitatea de a utiliza rezultatele precedente, care pot evidenţia proprietăţi im-
portante ale sistemului diferenţial, ı̂n loc să le ignorăm. Tehnicile cu mai mulţi
paşi, care se bazează pe cunoaşterea secvenţei de valori precedente, au fost dez-
voltate pentru a realiza această posibilitate.
Acest capitol va servi ca introducere la procesele cu mai mulţi paşi. Anu-
mite formule simple se vor construi din dezvoltarea Taylor a erorii, ı̂n principiu
aceeşi metodă ca ı̂n cazul metodelor Runge-Kutta. Spre deosebire de procesele
RK, care până acum au fost explicite, este normal să aplicăm scheme multipas
implicite la probleme generale. Aceasta conduce la ideea metodelor predictor-
corector, care constituie cea mai importantă realizare din această clasă de me-
tode. Vor fi descrise mai multe variaţiuni pe tema predictor-corector (P-C) şi se
vor introduce unele aspecte computaţionale ale metodelor.

7.2 Procese multipas liniare


Fiind dată sistemul de ecuaţii diferenţiale cu valori liniare

y 0 = f (x, y), y(xn ) = yn , y ∈ RM , (7.1)

119
120 Metode multipas

o formulă cu mai mulţi paşi liniară pentru aproximarea lui y(xn + h) are forma
p
X p
X
0
yn+1 = ai yn−i + h bi yn−i (7.2)
i=0 i=−1

unde
yn−i ' y(xn − ih),
0
yn−i = f (xn − ih, yn−i ),
i = −1, 0, 1, . . . , p.
Parametrii ai , bi şi p se aleg pentru a satisface criterii adecvate legate de ordin
şi/sau stabilitate, ı̂ntr-o manieră similară cu cea de la metodele RK.
Dacă p ≥ 1, atunci formula (7.2) poate fi aplicată numai dacă secvenţa
{yn−i }, i = 1, 2, . . . , p a fost deja calculată. Astfel un proces multipas nu
este cu autopornire; el necesită la iniţializare p valori de pornire fără a socoti
valoarea iniţială. O tehnică evidentă pentru generarea valorilor de pornire este
utilizarea unei metode Runge-Kutta sau Taylor. Totuşi, odată ce procesul (7.2)
a fost pornit, paşii următoripot fi calculaţi cu aceeaşi formulă multipas. Pentru
implementarea unei formule cu mai mulţi paşi, parametrul b−1 este important.
Dacă b−1 = 0 formula cu mai mulţi paşi se numeşte explicită şi implemen-
tarea ei este simplă, iar ı̂n caz contrar membrul drept al formulei (7.2) conţine
0
yn+1 = f (xn+1 , yn+1 ) şi formula se numeşte implicită.
În cazul implicit este nevoie de o metodă iterativă pentru a rezolva sistemul
neliniar care dă pe yn+1 . Acest lucru pare să fie un dezavantaj sever, dar ı̂n
practică nu este aşa, cum se va vedea mai târziu.
O procedură de calcul potrivită pentru utilizarea lui (7.2), presupunând că
valoarea iniţială este (x0 , y0 ) şi p = 2, este
1. Se calculează y1 , y2 utilizând (de exemplu) o metodă Runge-Kutta.
2. Se utilizează y0 , y1 , y2 ı̂n (7.2) pentru a calcula y3 .
3. Utilizează y1 , y2 , y3 ı̂n (7.2) pentru a calcula y4 .
4. Calculează un nou pas ş.a.m.d.
Este necesar să se reţină doar trei puncte ale soluţiei pe parcursul calculelor.
Valorile de pornire trebuie să fie echidistante, deoarece (7.2) se bazează pe o
lungime constantă a pasului. Este posibil să se schimbe lungimea pasului sau
să se construiască formule care permit pas de lungime variabilă, dar ı̂n acest
capitol ne vom limita la construirea unor formule simple şi la implementarea lor
ı̂n modul predictor-corector cu pas constant.
7.3. Alegerea parametrilor 121

7.3 Alegerea parametrilor


Parametrii ai , bi din formulele cu mai mulţi paşi (7.2), spre deosebire de
parametrii proceselor RK, se determină astfel ca formula să aibă proprietăţi spe-
cifice. Pentru mai mulţi paşi determinarea este mult mai simplădeoarece trebuie
considerate numai derivatele totale, ı̂n locul unui număr mare de diferenţiale ele-
mentare care apar ı̂n dezvoltările Runge-Kutta. Ca mai ı̂nainte, pentru eroarea
locală de trunchiere a formulei, se generează o serie de puteri ı̂n lungimea h a pa-
sului, care, conform definiţiei (2.6) este cantitatea cu care aproximaţia numerică
se abate de la soluţia exactă. Pentru formla (7.2), aceasta este
p
X p
X
tn+1 = ai y(xn − ih) + h bi y 0 (xn − ih) − y(xn + h) (7.3)
i=0 i=−1

care poate fi dezvoltată uşor ı̂ntr-o serie Taylor. Scriind

Y (j) = y (j) (xn ), j = 0, 1, . . . ,

se obţine
p  
X 1 2 000 1 3 00
tn+1 = ai Y − ihY + (ih) Y − (ih) Y + · · ·
2 6
i=1
p  
X
0 00 1 2 000 1 3 (4)
+h bi Y − ihY + (ih) Y − (ih) Y + · · ·
2 6
i=−1
 
1 1
− Y + hY 0 + h2 Y 00 + h3 Y 000 + · · · .
2 6

Grupând termenii după puterile lui h, eroarea locală de trunchiere este


p
!
X
tn+1 = Y ai − 1
i=0
p p
!
X X
+ hY 0 bi − iai − 1
i=−1 i=1
p p
!
2 00
X 1X 2 1
+h Y − ibi + i ai −
2 2
i=−1 i=0
p p
!
1 X 1 X 1
+ h3 Y 000 i2 bi − i3 ai −
2 6 6
i=−1 i=0
122 Metode multipas

p p
!
4 (4) 1 X 3 1 X 4 1
+h Y − i bi + i ai −
6 24 24
i=−1 i=0
+ ···

şi presupunând că a−1 = 0, termenul ı̂n hp se poate exprima ca


p
" ! #
hq Y (q) X
(−1)q−1 iq−1 (qbi − iai ) − 1 . (7.4)
q!
i=−1

Astfel, eroarea locală de trunchiere se poate scrie sub forma (vezi şi (2.10)),

X
tn+1 = hi ϕi−1 (xn )
i=0

şi, pentru o formulă de ordinul q, condiţiile

ϕk = 0, k = −1, 0, 1, . . . , q − 1 (7.5)

trebuie să fie satisfăcute pentru a se ajunge la o eroare locală de trunchiere de


ordinul q + 1. Aceste condiţii pot fi comparate cu cele din (2.21) care sunt nece-
sare pentru a specifica ordinul unei formule Runge-Kutta. În cazul metodelor cu
mai mulţi paşi, creşterea ordinului cu unu se realizează impunând doar o condiţie
suplimentară, mult mai simplu decât la o metodă Runge-Kutta.

7.4 O metodă implicită de ordinul al treilea


Să considerăm o formulă cu mai mulţi paşi cu p = 1 şi b−1 6= 0. În acest caz
formula (7.2),
0
yn+1 = a0 yn + a1 yn−1 + h(b−1 yn+1 + b0 yn0 + b1 yn−1
0
),

are 5 parametrii şi este implicită. Utilizând (7.4) se obţin patru ecuaţii de tip
(7.5) pentru q = 3 care, atunci când sunt satisfăcute ne conduc la o formulă de
ordinul al treilea. Aceste ecuaţii sunt

a0 + a1 = 1
b−1 + b0 + b1 − a1 = 1
2b−1 − 2b1 + a1 = 1
3b−1 + 3b1 − a1 = 1.
7.4. O metodă implicită de ordinul al treilea 123

Deoarece avem 5 parametrii şi numai 4 ecuaţii nu avem soluţie unică. Un para-
metru se alege liber. Luând a1 = 0, soluţia este
5 1 2
a0 = 1, b−1 = , b1 = − , b0 = ,
12 12 3
iar formula implicită este deci
1 0
yn+1 = yn + h(5yn+1 + 8yn0 − yn−1
0
). (7.6)
12
Pentru moment nu se va da nici o justificare a alegerii. Înlocuind parametrii ı̂n
coeficientul de eroare (7.4) cu q = 4 se ajunge la termenul pricipal al erorii locale
de trunchiere pentru formula (7.6)
1 4 (4)
h 4 ϕ3 = h y (xn ).
24
Deoarece (7.6) este implicită, dacă f (x, y) nu este liniară ı̂n y, valoarea lui yn+1
trebuie obţinută printr-o metodă iterativă. Presupunând că valorile de pornire
sunt deja cunoscute, formula (7.6) se poate scrie sub forma
5
yn+1 = hf (xn+1 , yn+1 ) + cn , (7.7)
12
unde
1
cn = yn + h(8yn0 − y 0 n − 1
12
depinde numai de aceste valori de pornire. În cazul scalar rezolvarea ecuaţiei
(7.7) prin aproximaţii succesive este cea mai simplă opţiune. Un proces iterativ

zk+1 = g(zk ), k = 0, 1, 2, . . .

va converge către o rădăcină a ecuaţiei z = g(x) dacă |g 0 (z)| < 1 ı̂n vecinătatea
rădăcinii. Pentru ecuaţia (7.7), această condiţie devine

5 ∂f
h < 1,
12 ∂y
sau  −1
∂f
h < 2.4 . (7.8)
∂y
Aici caracteristica importantă este că inegalitatea (7.8) garantează că iteraţia va
converge cu condiţia ca lungimea pasului să fie suficient de mică. Pentru a re-
duce numărul de iteraţii se poate utiliza metoda Newton-Raphson. În acest caz
convergenţa va depinde numai de aproximaţia de pornire pentru yn+1 .
124 Metode multipas

Dacă f nu este scalară ecuaţia (7.7) reprezintă un sistem neliniar care poate
fi abordată ı̂n aceeaşi manieră, deşi o ieraţie Newton va necesita evaluarea jaco-
bianului lui f .
Pentru a ilustra o posibilitate de implementare a formulei cu mai mulţi paşi
(7.7) vom realiza un pas din rezolvarea ecuaţiei
1
y 0 = y 3 − y, y(0) = ,
2
pentru h = 0.1. În acest caz soluţia analitică y(0.1) = 0.463032 se utilizează
pentru a furniza o valoare de pornire şi apoi formula multipas pentru a estima
y(0.2). Mai realist, se va utiliza o metodă numerică pentru a estima valoarea de
pornire. Utilizând formula (7.7) se obţine
3
0.5(yn+1 − yn+1 )
yn+1 = 0.441906 + ,
12
care se rezolvă prin iteraţie simplă. În tabela 7.1 iteratele sunt notate prin z0 , z1 ,
. . . , iar prima aproximaţie se ia arbitrar 0.43. Deoarece lungimea pasului este
mult mai mică decât valoarea prezisă de (7.8), convergenţa este rapidă. De notat
că convergenţa este mai degrabă către soluţia ecuaţiei neliniare deduse decât
către soluţia exactă a ecuaţiei diferenţiale, care este y(0.2) = 0.427355, corectă
până la 6 cifre semnificative. În acest exemplu aproximaţia iniţială a fost ghicită;
o metodă sistematică de a o găsi ar fi un avantaj. Din acest motiv vom condidera
ı̂n continuare o procedură multipas explicită.

k xk yk yk0
n−1 0 0.5 -0.375
n 0.1 0.463032 -0.363759
0.2 z0 = 0.43
z1 = 0.427302
z2 = 0.427353
n+1 0.2 0.427352 -0.349305

Tabela 7.1: Rezolvare utilizând o metodă implicită

7.5 O metodă explicită de ordinul al treilea


Punând b−1 = 0 ı̂n formula cu mai mulţi paşi (7.2) cu p = 1 se obţine un
proces explicit cu 4 parametri:
yn+1 = a0 yn + a1 yn−1 + h(b0 yn0 + b1 yn−1
0
).
7.6. Scheme predictor-corector 125

k xk yk yk0
n−1 0 0.5 -0.375
n 0.1 0.463032 -0.363759
n+1 0.2 0.427368 -0.349312

Tabela 7.2: Rezolvare utilizând o metodă explictă

De această dată parametrii se pot alege unic, obţinându-se o formulă de ordinul


al treilea. Utilizând condiţiile (7.4) cu q ≥ 3 se obţine

a0 + a1 = 1
b0 + b1 − a1 = 1
−2b1 + a1 = 1
3b1 − a1 = 1.

Acest sistem are soluţia a0 = −1, a1 = 5, b0 = 4, b1 = 2. Formula explicită de


ordinul al treilea care se obţine este

yn+1 = −4yn + 5yn−1 + h(4yn0 + 2yn−1


0
), (7.9)

pentru care termenul principal al erorii (vezi (7.4) cu q = 4) este


1
h4 ϕ3 = − h4 y (4) (xn ).
6
Acesta este de patru ori mai mare decât termenul corespunzător al formulei im-
plicite (7.6). Aplicând noua formulă aceleiaşi ecuaţii diferenţiale ca mai ı̂nainte
şi utilizând soluţia analitică pentru a furniza o valoare de pornire precisă ı̂n li-
mita a 6 zecimale, se obţin rezultatele din tabela 7.2. Calculele sunt directe şi
nu presupun nici o iteraţie. Totuşi erorile sunt mai mari decât ı̂n calculul iterativ
precedent. Cele două erori, care sunt locale, deoarece s-a calculat doar un singur
pas, sunt −0.000003 şi 0.000013 pentru formula implicită şi respectiv cea expli-
cită. Termenii principali ai erorii locale de trunchiere diferă printr-un factor de -4
şi astfel calculele de aici sunt ı̂n conformitate cu analiza, ı̂n ipoteza dominanţei
termenului principal.

7.6 Scheme predictor-corector


În aplicaţia de mai sus a metodei implicite (7.6), prima aproximaţie a soluţiei
a fost ,,ghicită”. Deoarece există acum o formulă explicită de acelaşi ordin de
precizie este convenabil să o utilizăm pentru predicţia unei prime aproximaţii.
126 Metode multipas

k xk yk yk0
n−1 0 0.5 -0.375
n 0.1 0.463032 -0.363759
0.2 z0 = 0.427368 -0.349312
z1 = 0.427351
n+1 0.2 0.427352 -0.349305

Tabela 7.3: Rezolvare utilizând o metodă predictor corector

P: Pn+1 = −4yn + 5yn−1 + h(yn0 + 2yn−1 0 )


E: 0
yn+1 = f (xn+1 , Pn+1 )
C: Cn+1 = yn + 12 1 0
h(5yn+1 + 8yn0 − yn−1
0 )
E: 0
yn+1 = f (xn+1 , Cn+1 )
Dacă converge yn+1 = Cn+1 , ı̂ncepe pasul următor. Altfel, repetă C:

Tabela 7.4: Algoritm predictor-corector

Procesul explicit poate fi apoi ı̂ntrebuinţat la rafinarea sau corectarea soluţiei.


Numărul de iteraţii necesare pentru convergenţă va fi redus, deoarece punctul
de pornireva fi mult mai precis decât ı̂nainte. În exemplul dat ı̂n tabela 7.3,
prima corecţie“sau iteraţie cu valoare de pornire 0.427368 ne dă z1 = 0.427351,

aproape la fel cu ceea ce s-a obţinut cu 4 iteraţii mai devreme. Deoarece procesul
iterativ converge cătrecătre o rădăcină a ecuaţiei (7.6) şi nu către o soluţie a
ecuaţie diferenţiale, nu este nici o garanţie că iteraţiile următoare vor ı̂mbunătăţi
aproximarea. În acest caz o nouă iteraţie va ı̂mbunătăţi aproximarea cu o valoare
mai mică decât eroarea locală efectivă. Mulţi practicieni preferă să calculeze
doar o singură iteraţie a unei formule corector.

Schema predictor-corector clasică de ordinul al treilea dedusă mai sus poate


fi definită aşa cum se arată ı̂n tabela 7.4. Dacă este necesar să se itereze corectorul
de k ori, procedura va fi desemnată prin PE(CE)k . Sunt posibile multe variaţiuni
pe tema acestui algoritm. o proprietate importantă a formei predictor-corector
(PECE) este că necesită doar două evaluări ale derivatei pe pas, indiferent de
ordinul de precizie. Din acest motiv se consideră că este o schemă de calcul
mai ieftină decât orice proces Runge-Kutta de ordin mai mare decât 2. Această
comparaţie nu este valabilă, desigur, dacă lungimile paşilor celor două metode
diferă semnificativ.
7.7. Estimarea erorii 127

7.7 Estimarea erorii


La fel ca pentru alte metode de rezolvare a ecuaţiilor diferenţiale, estima-
rea erorii ı̂ntr-o schemă predictor-corector este crucială pentru determinarea unei
lungimi adecvate a pasului. Din fericire, ı̂n acest caz, unde există două estimaţii
ale soluţiei la fiecare pas, acest lucru este simplu. Diferitele abordări pentru esti-
marea erorii depind de alegerea perechii de formule predictor-corector. Cu ajuto-
rul parametrului suplimentar disponibil (b− 1) corectorul poate fi făcut să aibă un
ordin mai mare decât predictorul, diferenţa dintre ele constituind un estimator al
erorii similar cu cel de la perechile Runge-Kutta scufundate (imbricate). O astfel
de pereche poate fi ı̂ntr-adevăr implementată ı̂n modul extrapolare locală cu re-
zultatul de ordin ı̂nalt furnizând valoarea iniţială pentru pasul următor. Strategia
alternativă este de a alege formulele predictor şi corector de acelaşi ordin, ca ı̂n
exemplul din ultima secţiune. În acest caz termenii principali de eroare ai fiecărei
formule pot fi estimaţi considerând diferenţa dintre valoare predictor şi cea co-
rector. Deoarece eroarea corectorului este atunci disponibilă, se obişnuieşte să
se realizeze extrapolare locală.
Să considerăm procesul de estimare a erorii când ambele formule au acelaşi
ordin. Presupunem că soluţia locală exactă ce satisface (xn , yn ) este u(x); atunci
erorile locale ale predictorului şi corectorului sunt

Pn+1 − u(xn+1 ) = ePn+1


cn+1 − u(xn+1 ) = eC
n+1

şi Pn+1 − Cn+1 = ePn+1 − eC n+1 . Acum, pentru o metodă de ordinul q, erorile
locale se pot scrie sub forma

ePn+1 = AP hq+1 yn(q+1) + O(hq+2 )


eC
n+1 = AC h
q+1 (q+1)
yn + O(hq+2 ),

unde AC , AP sunt independente de h. Aceasta ne dă

Pn+1 − Cn+1 = (AP − AC )hq+1 yn(q+1) + O(hq+2 )


Pn+1 − Cn+1
hq+1 yn(q+1) = + O(hq+2 ).
AP − AC
Neglijând termenii de grad cel puţin q + 2, este uşor de făcut estimaţii ale erorii
pentru predictor şi corector. Aceste sunt

AP
ePn+1 ' (Pn+1 − Cn+1 ) (7.10)
AP − AC
128 Metode multipas

P: Pn+1 = −4yn + 5yn−1 + h(4yn0 + 2yn−1


0 )
(m)
M: Pn+1 = Pn+1 − 54 (Pn − Cn ).
(m)
E: yn+10 = f (xn+1 , Pn+1 ).
C: Cn+1 = yn + 121 0
h(5yn+1 + 8yn0 − yn−1
0 ).
(m)
M: Cn+1 = Cn+1 + 51 (Pn+1 − Cn+1 ).
0 (m) (m)
E: yn+1 = f (xn+1 , Cn+1 ), yn+1 = Cn+1
ı̂ncepe pasul următor cu P

Tabela 7.5: Un algoritm predictor-corector modificat

AC
eC
n+1 ' (Pn+1 − Cn+1 ). (7.11)
AP − AC
Pentru exemplul de ordinul al treilea din ultima secţiune AP = − 61 , AC = 1
24 şi
deci
1 4
eC
n+1 ' − (Pn+1 − Cn+1 ), ePn+1 ' (Pn+1 − Cn+1 ).
5 5
Utilizând valorile din tabela 7.3, diferenţa dintre predictor şi corector este
Pn+1 − Cn+1 = 0.000016;
astfel cele doua estimări ale erorii sunt eC P
n+1 ≈ −0.000003, en+1 ≈ 0.000013,
care coincid cu eroarea reală până la 6 zecimale.
Procesul de adăugare a unei estimări a erorii sau modificator se mai numeşte
şi instrumet Milne, dar pentru a fi consistenţi cu terminologia anterioară, este
mai bine să-l denumim extrapolare locală. În unele cazuri este util să extrapolăm
de asemenea predicţia, pentru care se poate obţine ı̂n acelaşi mod o estimare a
erorii. Totuşi modificatorul pentru predictor depinde de valoarea corectată, care
nu este disponibilă ı̂n stadiul intermediar de evaluare. Un mod mai simplu de
compensare este de a lua
Pn+1 − Cn+1 ≈ Pn − C − n, n ≥ 1.
O schemă PECE modificată se dă ı̂n tabela 7.5 Aceasta are efectul de a extinde
numărul de valori de pornire deoarece punctul (xn−1 , yn−1 ) contribuie la Pn şi
Cn . Există implicaţii de stabilitate legate de această caracteristică şi ele vor fi
considerate mai târziu. Extrapolarea predictorului nu are nici o valaore la dacă
corectorul este iterat, dar extrapolarea corectorului este frecvent practicată.
Pentru a ilustra efectul diferitelor variante predictor-corector s-au aplicat trei
scheme ecuaţiei logistice
y 0 = y(2 − y), y(0) = 1, h = 0.2. (7.12)
7.8. Implementarea metodelor predictor-corector 129

Tabela 7.6: Rezultate ale metodei predictor-corector pentru ecuaţia logistică

Soluţia exactă a acestei probleme este y(x) = 2/(1 + e−2x ) şi a fost utilizată
pentru a calcula erorile globale. Pasul de pornire utilizează metoda de ordinul 4
RK45M dată ı̂n tabela 3.2, iar tabela 7.6 arată valorile obţinute la primii 5 paşi
ı̂n cele trei cazuri. Rezultatele au fost obţinute utilizând programul MATLAB
descris ı̂n secţiunea următoare. Este calr că, ı̂n acest caz, ambele extrapolări
conduc la o ı̂bunătăţire a soluţiei numerice.

7.8 Implementarea metodelor predictor-corector


Codificarea unei astfel de metode ı̂n MATLAB nu este dificilă, datorită faci-
lităţilor matriciale şi vectoriale existente. O problemă este obţinerea valorilor de
pornire. O soluţie comună este utizarea unei metode RK.

function [t,W]=PredCor(F,tspan,alfa,N,met,RKm)
%PREDCOR - metoda predictor corector cu pas constant
%apel [t,w]=PredCor(f,tspan,alfa,N,met,RKm)
%F - functia
%tspan - intervalul
%alfa - valoare initiala
%N - numar puncte
%met - metoda predictor corector
%RKm - metoda Runge-Kutta pentru obtinerea valorilor de pornire

if nargin<6
RKm=@RK4tab;
end;
if nargin<5, met=@ABM4; end;
h=(tspan(end)-tspan(1))/N; t0=tspan(1);

%initializare parametrii
neqs=length(alfa);
[p,a,b,ac,bc,pmod,cmod]=feval(met);
f=zeros(length(alfa),p+2);
y=zeros(neqs,p+1); %y(:,1)=alfa(:);
pmc=0;
%metoda Runge Kutta
[t,W]=Runge_Kutta(F,[t0,t0+p*h],alfa,p,RKm);
130 Metode multipas

y=W’;
x=tspan(1);
f(:,1)=feval(F,x,y(:,1));
for i=1:p
f(:,i+1)=feval(F,x+h,y(:,i+1));
x=x+h;
end

for k=p+1:N %rezolvare


w=y*a+h*(f(:,1:p+1)*b); %predictor
f(:,p+2)=feval(F,x+h,w+pmod*pmc); %evaluare
v=y*ac+h*(f*bc); %corector
pmc=w-v; %modificator
w=v+cmod*pmc;
x=x+h;
t=[t;x]; W=[W;w’];
f(:,1:p)=f(:,2:p+1); %actualizare f
y(:,1:p)=y(:,2:p+1); %noile valori de pornir
y(:,p+1)=w; %noul pas y
f(:,p+1)=feval(F,x,w); %noul y’
end

7.9 Probleme
Problema 7.9.1. Găsiţi eroarea locală pentru metodele multipas de mai jos fo-
losind dezvoltarea Taylor.
0
(a) yn+1 = yn + 21 h(yn+1 + yn0 );

(b) yn+1 = yn + 21 h(23yn0 − 16yn−1


0 0
+ 5yn−2 );

(c) yn+1 = yn + 34 h(2yn0 − yn−1


0 0
+ 2yn−2 ).
Problema 7.9.2. Găsiţi parametrii ai , bi , i = −1, 0, 1, astfel ca formula implicită
1
X 1
X
0
yn+1 = ai yn−i + h bi yn−i
i=0 i=−1

să aibă ordinul 4. Dându-se y 0 = − 12 y 3 , y(0) = 1, y(0.2) = 0.912871, utilizaţi


formula pentru a estima y(0.4). Dezvoltaţi un predictor de ordinul al treilea
pentru a calcula o aproximaţie iniţială.
7.9. Probleme 131

Problema 7.9.3. Găsiţi o formulă multipas explicită de ordinul 4 ce depinde de


două valori de pornire ı̂nlocuind p = 2 ı̂n ecuaţia (7.2).

Problema 7.9.4. Obţineţi modificatorul adecvat pentru a fi utilizat la extrapolare


locală, când formula din problema 7.9.1(b) se utilizează ca Predictor ı̂mpreună
corectorul (7.6). Dându-se ecuaţia diferenţială şi valoarea iniţială
1
y 0 = y 3 − y, y(0) = ,
2
utilizaţi o formulă RK adecvată pentru adetermina o valoare de pornire adecvată
cu h = 0.15. Implementaţi perechea P-C pentru a calcula ı̂ncă doi paşi cu h =
0.15:

(a) ı̂n mod PECE cu extrapolare locală;

(b) ı̂n mod PE(CE)k cu extrapolare locală.

Alegeţi toleranţa 10−7 pentru modul iterativ.

Problema 7.9.5. Scrieţi o rutină MATLAB de iniţializare a coeficienţilor P-C


pentru perechea din problema precedentă. Utilizaţi-o ı̂mpreună cu rutina pppppp
din acest capitol pentru a rezolva

(a) y 0 = 3x
y − 2xy, y(0) = 2, x ∈ [0, 3];

(b) y 00 = −1/y 2 , y(0) = 1, y 0 (0) = 0, x ∈ [0, 1].

În fiecare caz alegeţi o lungime de pas adecvată considerând estimarea erorii
pentru corector.

Problema 7.9.6. Modificaţi rutina PredCor pentru a permite corectorului să


fie iterat de k ori. Calcuklaţi soluţia ecuaţiei logistice (7.12) cu k = 2 şi k = 3
dar nu modificaţi valaorea predictorului. Comparaţi erorile din fiecare caz cu
cele din tabela 7.6. Comparaţi de asemenea rezultatele cu cele produse de un
proces RK de ordinul 3.
132 Metode multipas
Capitolul 8

Metode multipas obţinute prin


cuadraturi

8.1 Introducere
Construcţia formulelor cu mai mulţi paşi din formule Taylor este mai simplă
decât a formulelor RK. Inevitabil, această metodă este mai legată de ordinul
algebric decât de alte aspecte, cum ar fi stabilitatea absolută. Numărul de valori
de pornire determină ordinul maxim al procesului. Acesta este 2p + 1 pentru o
formulă explicită şi 2p+2 pentru una implicită. Astfel de formule sunt unice şi, şi
pe baza criteriilor dezvoltate ı̂n capitolul 3 pentru metode RK par să fie optimale.
Din nefericire, importanţa comportării asimptotice este mai mică decât ı̂n cazul
metodelor cu un pas. Aceasta impune o reducere a ordinului maxim astfel ca să
poată fi evidenţiate alte proprietăţi. Probabil că situaţia nu este radical diferită
de utilizarea mai multor stadii decât minimul necesar pentru atingerea unui ordin
dat la formule RK.
O metodă particulară convenabilă de generare a formulelor ı̂nrudite de di-
verse ordine se bazează pe cuadraturi. Familiile dezvoltate astfel au ı̂n comun
mai multe caracteristici utile care fac implementarea lor pe calculator chiar atrac-
tivă. În particular, coeficianţii lor apar ı̂ntr-un mod iterativ, astfel că schimbarea
ordinului implică doar adăugarea sau eliminarea unui termen. Altă caracteristică
depinde de relaţia procesului cu mai mulţi paşi cu interpolantul polinomial. Mo-
dificarea pasului este la fel de importantă pentru formule cu mai mulţi paşi ca şi
pentru cele cu un pas. Urmând o modificare de pas trebuie considerat un interpo-
lant pentru a furniza noi valori de pornire. Formulele bazate pe interpolanţi sunt
mai potrivite acestui scop decât alte formule multipas.
În acest capitol vom considera deducerea sistematică şi de asemenea im-

133
134 Metode multipas obţinute prin cuadraturi

plemnentarea proceselor Adams. Acestea sunt chiar mai vechi decât procesele
Runge-Kutta, datând de la mijlocul secolului al XIX-lea. J. C. Adams este cel
care a prezis existenţa planetei Neptun ı̂n 1845. Formulele lui Adams au rămas
populare până ı̂n zilele noastre.

8.2 Cuadraturi aplicate ecuaţiilor diferenţiale


Considerăm sistemul de ecuaţii diferenţiale

y 0 = f (x, y(x)), y(x0 ) = y0 , y ∈ Rm (8.1)

şi şirul {xk }, astfel ı̂ncât

xk = xk−1 + h, k = 1, 2, . . . .

Integrând ecuaţia diferenţială (8.1) ı̂n raport cu x cu limite de integrare adecvate,


Z xn+1 Z xn+1
y 0 (x)d x = f (x, y(x))d x,
xn xn

se obţine formula
Z xn+1
y(xn+1 ) = y(xn ) + f (x, y(x))d x. (8.2)
xn

Deoarece integrandul din (8.2) este exprimat ı̂n general ı̂n funcţie de x şi y, inte-
grala nu poate fi evaluată direct. Vom aproxima f (x, y(x)) printr-un polinom de
interpolare, pe baza valorilor cunoscute (xk , y(xk )). Integrarea interpolantului
ne conduce la o formulă de cuadratură.
Se poate construi un polinom Vp de grad p care să satisfacă

Vp (xk ) = f (xk , y(xk )), k = n − p, n − p + 1, . . . , n − 1, n,

astfel ı̂ncât

f (x, y(x)) = Vp (x) + Ep (x), Ep (xk ) = 0, k = n − p, . . . , n − 1, n,

unde Ep este termenul rest al erorii de interpolare. Astfel, din formula (8.2), se
obţine
Z xn+1 Z xn+1
y(xn+1 ) = y(xn ) + Vp (x)d x + Ep (x)d x, (8.3)
xn xn
8.3. Formulele Adams-Bashforth 135

care este baza formulei cu mai mulţi paşi


Z xn+1
yn+1 = yn + vp (x)d x, (8.4)
xn

unde vp (xk ) = fk = f (xk , yk ), n − p ≥ k ≥ n, interpolează funcţia de aproxi-


mat pe baza soluţiei numerice. Utilizând ecuaţia (8.3), şi definiţia ei din capitolul
2, eroarea locală de trunchiere a acestei formule cu mai mulţi paşi va fi
Z xn+1
tn+1 = y(xn ) + Vp (x)d x − y(xn+1 )
xn
Z xn+1
=− Ep (x)d x.
xn

Este simplu să se scrie interpolantul Lagrange vp şi, variind p, din ecuaţia (8.4)
se poate deduce o clasă de formule cu mai mulţi paşi. Deşi formulele Adams
se bazează efectiv pe această relaţie, se pot construi şi alte familii prin schimba-
rea limitei de integrare. Prin extinderea punctelor de interpolare se pot contrui şi
formule implicite. Formulele de cuadratură ca cele de mai sus, care nu conţin ca-
petele intervalului de integrare printre noduri se numesc formule deschise. Cele
folosite la procesele implicite se numesc ı̂nchise.

8.3 Formulele Adams-Bashforth


Polinomul de interpolare Lagrange are mai multe forme. Varianta cu diferenţe
divizate este probabil cea mai utilă dar, ı̂n contextul prezent, forma Newton-
Gregory cu diferenţe regresive este de preferat. Definind diferenţele regresive
prin
∇fk = fk − f k − 1,
∇i+1 fk = ∇i fk − ∇i fk−1 ,
i = 1, 2, . . . , p; k = n, n − 1, . . . , n − p + i,
formularea clasică se bazează pe tabela de diferenţe finite din tabela 8.1. Scriind
x = xn + sh, polinomul de de interpolare bazat pe puncte echidistante se poate
exprima prin
   
s+1 2 s+p−1
vp (x) = fn + s∇fn + ∇ fn + · · · + ∇p fn , (8.5)
2 p
unde  
m m(m − 1) . . . (m − k + 1)
=
k k!
136 Metode multipas obţinute prin cuadraturi

xn−p fn−p
∇fn−p
xn−p+1 fn−p+1 ∇2 fn−p+2
∇fn−p+2 ∇3 fn−p+3
... ... ...
... ...
... ... ...
∇fn−2 ∇3 fn−1
xn−2 fn−2 ∇2 fn−2
∇fn−1 ∇3 fn−1
xn−1 fn−1 ∇2 fn
∇fn
xn fn

Tabela 8.1: Tabelă de diferenţe regresive

este coeficientul binomial generalizat. Se poate arăta (vezi de exemplu Hilde-


brand, 1974[13]) că eroarea se poate exprima sub forma
 
s + p p+1 (p+1)
Ep (x) h f (xn , y(xn )) + O(hp+2 ). (8.6)
p+1
Deoarece s = (x − xn )/h, ecuaţia (8.4) devine
Z 1
yn+1 = yn + h vp (s)d s.
0

Astfel am obţinut o formulă cu mai mulţi paşi, numită proces Adams-Bashforth,


care poate fi scrisă ı̂n forma
 Z 1 Z 1  
s+p−1
yn+1 = yn + h fn + ∇fn sd s + · · · + ∇p fn ds
0 0 p
= yn + h(γ0 fn + γ1 ∇fn + γ2 ∇2 fn + · · · + γp ∇p fn ),
(8.7)
unde
1 
s+k−1
Z
γ0 = 1, γk = d s, k = 1, . . . , p.
0 k
Calculul acestor integrale ı̂n mod individual este simplu, dar nenecesar. Se poate
genera o recurenţă convenabilă după cum urmează.
Considerăm seria
X∞
G(x) = γk xk .
k=0
8.3. Formulele Adams-Bashforth 137

k 1 2 3 4 5 6
1 5 3 251 95 19087
γk 2 12 8 720 288 60480

Tabela 8.2: Coeficienţi Adams-Bashforth

Înlocuirea cu expresia lui γk şi folosind seria binomială se obţine



1X  
s+k−1
Z
k
G(x) = x ds
0 k=0 k
Z 1
= (1 − x)−s d s.
0

Integrarea ne dă
x
G(x) = − ,
(1 − x) ln(1 − x)

sau

ln(1 − x) 1
− G(x) =
x 1−x
care, prin dezvoltare ne dă
 
1 1 2
γ0 + γ1 x + γ2 x2 + · · · = 1 + x + x2 + · · · .
 
1 + x + x + ···
2 3
Comparând coeficienţii din ambii membri se obţine

γ0 = 1
1
γ1 + γ0 = 1
2
1 1
γ2 + γ1 + γ0 = 1 (8.8)
2 3
... = 1
1 1
γp + γp−1 + · · · + γ0 = 1
2 p+1
In tabela 8.2 se dau primii şase coeficienţi. Utilizând ecuaţia (8.6), se poate
vedea că eroarea locală de trunchiere a formulei Adams-Bashforth are termenul
de eroare principală

tn+1 = −hp+2 γp+1 y (p+2) (xn ).


138 Metode multipas obţinute prin cuadraturi

Astfel o formulă de ordimul al treilea va necesita p = 2 şi va putea fi exprimată


sub forma  
1 5 2
yn+1 = yn + h fn + ∇fn + ∇ fn .
2 12
Dacă se preferă, formulele Adams-Bashforth să fie scrise cu ajutorul valorilor
funcţiei (y 0 = f )
p
X
yn+1 = yn + h βk fn−k ,
k=0

unde βk pot fi calculate cu ajutorul unor relaţii de recurenţă. Luând valorile


iniţiale
βj = αj = 0, j = 1, . . . , p, α0 = 1,
se calculează secvenţa

αj = αj − αj−1
, j = i, i − 1, . . . , 1; i = 1, 2, . . . , p, (8.9)
βj = βj + αj γi

and β0 = pi=0 γi .
P

Cazul p = 2 dă
1
yn+1 = yn + h (23fn − 16fn−1 + 5fn−2 ) , (8.10)
12
care are termenul principal al erorii locale de trunchiere
3
− h4 y (4) (xn ).
8
Evident, aceasta poate fi utilizată ca predictor ı̂mpreună cu corectorul dat de
formula (7.6), dar este nevoie de de două valori de pornire ı̂n locul uneia singure
necesare pentru (7.9), care are acelaşi ordin de precizie.
O caracteristică atractivă a formulelor Adams-Bashforth este uşurinţa cu care
ele pot fi generate. Schema de integrare utilizată aici este chiar mai directă decât
dezvoltarea Taylor considerată mai devreme, coeficienţii sunt obţinuţi direct din
integrale definite de polinoame, sau, mai convenabil, din formulele de recurenţă
(8.8).

8.4 Formulele Adams-Moulton


Familiile de formule implicite pentru corector se pot deduce la fel ca cele din
secţiunea precedentă, adăugând punctul (xn+1 , fn+1 ) tabelei de diferenţe finite.
8.4. Formulele Adams-Moulton 139

k 1 2 3 4 5 6
γk∗ − 21 1
− 12 1
− 24 19
− 720 3
− 160 863
− 60480

Tabela 8.3: Coeficienţi Adams-Moulton

Punând x = xn+1 + sh, polinomul de interpolare corespunzător de grad p este


   
s+1 s+p−1
vp∗ = fn+1 + s∇fn+1 + ∇2 fn+1 + · · · + ∇p fn+1 , (8.11)
2 p
şi deoarece, cu noua definiţie a lui s,
Z xn+1 Z 0
dx = h d s,
xn −1

formula implicită este

yn+1 = yn + h(γ0∗ fn+1 + γ1∗ ∇fn+1 + γ2∗ ∇2 fn+1 + · · · + γp∗ ∇p fn+1 ), (8.12)

unde
0  
s+k−1
Z
γ0∗ = 1, γk∗ = d s, k = 1, . . . , p,
−1 k
şi eroarea locală de trunchiere are termenul principal

tn+1 = −hp+2 γp+1 y (p+2) (xn ).

Este posibil să se obţină o relaţie de recurenţă similară lui (8.8) pentru γk∗ , dar
aceasta se poate evita utilizând rezultatul

γk∗ = γk − γk−1 , k = 1, 2, . . . (8.13)

Această relaţie se poate justifica pe baza proprietăţilor coeficienţilor binomiali.


Ca mai ı̂nainte, o formulă de ordinul al treilea va necesita p = 2, dar aceasta
nu presupune valoare de start precedentă dacă s-a utilizat formula Adams-Bashforth
explicită drept predictor. Tabela 8.3 dă coeficienţii Adams-Moulton până la or-
dinul 6.
Ca exemplu, luăm p = 2 şi obţinem
 
1 1 2
yn+1 = yn + h fn+1 − ∇fn+1 − ∇ fn+1 ,
2 12
şi ı̂nlocuind valorile lui f ı̂n diferenţele regresive se obţine
1
yn+1 = yn + h(5fn+1 + 8fn − fn−1 ),
12
140 Metode multipas obţinute prin cuadraturi

care este identică cu formula (7.6) dedusă ı̂n capitolul precedent. O caracteristică
notabilă a familiei de formule imlicite Adams-Moulton este aceea că, pentru un
ordin particular, termenul principal al erorii locale de trunchiere este mai mic
decât cel al formulei explicite corespunzătoare.Aşa cum se va vedea mai târziu,
familia implicită are proprietăţi de stabilitate mai bune.
Proprietăţile bune de stabilitate fac perechile Adams predictor-corector cele
mai utilizate formule din clasa lor. Unele implentări specifică corector care să
aibă ordinul cu unu mai mare decât predictorul, făcându-se astfel uz de aceleaşi
valori de ornire. Această schemă are avantaje computaţionale faţă de altele
descrise anterior. Considerăm predictorul Adams-Bashforth (8.7) şi corectorul
Adams-Moulton (8.12) cu p = 2. Diferenţa dintre valorile predictor şi corector
se poate scrie sub forma
Cn+1 − Pn+1 = h[fn+1 + γ1∗ ∇fn+1 + γ2∗ ∇2 fn+1 − (fn + γ1 ∇fn + γ2 ∇2 fn )].
Utilizând relaţia (8.13), formula de mai sus devine mai simplă:
Cn+1 − Pn+1 = h(∇fn+1 + (γ1 − γ0 )∇fn+1 − γ1 ∇fn
(γ2 − γ1 )∇2 fn+1 − γ2 ∇2 fn )
= hγ2 ∇3 fn+1 .
Astfel, in termeni de diferenţe regresive, corectorul necesită un termen suplimen-
tar când diferenţa ,,predictată” trebuie evaluată.
Alternativ cele două formule pot avea acelaşi ordin cu modificatorul utilizat
pentru a estima eroarea şi de asemenea a ı̂mbunătăţi soluţia. Utilizând formulele
(7.10) şi (7.11), valorile extrapolate pentru perechile predictor-corector Adams-
Bashforth-Moulton cu acelaşi ordin sunt

γp+1
γp+1
P− (P − C) şi C − (P − C).
γp γp

8.5 Alte formule multipas


Utilizarea formulelor de cuadratură pentru procese multipas se poate extinde
şi la alte familii decât cea a formulelor Adams, acestea fiind un caz particular al
formulelor bazate pe relaţia integrală
Z xn+1
y(xn+1 ) = y(xn−r ) + f (x, y(x))d x. (8.14)
xn−r

Înlocuind r = 0 ı̂n (8.14) se obţine formula Adams (8.2)Multe alte cazuri sunt
de interes pur academic, dar familia explicită Nyström cu r = 1 este demnă de
8.6. Metode cu pas variabil 141

laut ı̂n considerare. Relaţiile lor implicite sunt corectorii Milne-Simpson. Forma
lor generală este
p−1
X
P : yn+1 = yn−1 + h ηk ∇k fn , (8.15)
k=0
p−1
X
C : yn+1 = yn−1 + h ηk∗ ∇k fn+1 , (8.16)
k=0

unde
1  
s+k−1
Z
η0 = 2, ηk = d s, k = 1, . . . , p,
−1 k
pentru formula explicită de ordinul k, cu o expresie similară pentru coeficienţii
ı̂mpliciţi. Înlocuind p = 3 (sau p = 4) ı̂n ecuaţia (8.16) se obţine formula de
cuadratură a lui Simpson
1
yn+1 = yn−1 + h(fn+1 + 4fn + fn−1 ). (8.17)
4
Se poate obţine uşor o realţie ı̂ntre coeficienţii ηk şi cei din formulele Adams
(γk ).

8.6 Metode cu pas variabil


La metodele RK sau la alte metode cu un pas este uşor de modificat pasul,
deoarece formula incrementului se bazează doar pe un singur punct. Pentru cele
mai multe probleme practice, rezolvarea numerică eficientă necesită un pas va-
riabil, deoarece funcţia de eroare principală poate avea variaţii mari ı̂n intervalul
de rezolvare. Deci un pas constant se va restrânge la o valoare legată de un ma-
xim al funcţiei de eroare, implicând un număr mare de paşi pentru probleme cum
ar fi problema excentricăa celor două corpuri, care a fost evidenţiată ı̂n capitolul
4. Mulţi dintre aceşti paşi vor fi mai mici decât cei necesari pentru eroarea locală
de trunchiere.
Formulele cu mai mulţi paşi, de tipul considerat mai ı̂nainte, sunt mai puţin
convenabile decât procesele RK, deoarece orice schimbare a mărimii pasului ne-
cesită calculul unor noi informaţii de pornire. Pentru o schimbare a lungimii pa-
sului de la h la θh, aceste noi valori vor fi ı̂n x∗n−k = xn − kθh, k = 1, . . . , p − 1.
Metodele de tip Adams sunt mai puţin pretenţioase din acest punct de vedere
decât alte metode multipas deoarece ele utilizează o singură valoare y, cea mai
recentă, ı̂n plus faţa de cele p − 1 derivate sau vaolri de funcţie. Dacă dorim să
142 Metode multipas obţinute prin cuadraturi

păstrăm precizia dupăo revizuire a lungimii pasului, mecanismul adoptat pentru


noile informaţii de pornire trebuie să aibă un ordin algebric suficient de mare.
Din fericire, aplicarea unui proces de interpolare este relativ uşoară dacă utiliza-
torul pune la dispoziţie valori precedente echidistante. Din acest punct de vedere
metodele cu mai mulţi paşi par să aibăun avantaj faţă de procesele RK, deoa-
rece astfel de interpolări pot fi realizate şi pentru furnizarea ieşirilor dense dacă
este necesar. Pentru a se obţine un ordin mai ı̂nalt de precizie, se poate alege un
interpolant Hermite, bazat pe valorile lui y şi y 0 . Dându-se datele
0
(xn−k , yn−k , fn−k = yn−k ), k = 0, 1, . . . , p − 1,

se poate obţine un polinom de grad 2p − 1. Ignorând efectul erorilor de rotun-


jire, utilizarea interpolantului Hermitepentru a genera valori precedente noi va
introduce erori mai mici decât cele asociate cu integratorul multipas.
Anterior s-a presupus că lungimea pasului trebuie redusă. Pentru creşterea
lungimii pasului prin interpolare se pare că contribuţia valorilor precedente supli-
mentare este esenţială. Aceasta implică cerinţe mai mari de memorie dar evident
că va trebui săavem o limită superioară modestă a raportului dimensiunilor de
pas.
Krogh [14] a investigat mai multe scheme pentru modificarea lungimii pasu-
lui; el a recomandat utilizarea unui interpolant bazat numai pe valori precedente
ale derivatei. Pentru un integrator de ordinul p, şi deci un interpolant Newton-
Gregory de grad p − 1 se va utiliza pentru a aproxima direct noile valori ale lui
f . DE notat că nu este nevoie de nici o evaluare nouă de funcţie, aşa cum se cere
dacă se calculează doar valori noi din trecut ale lui y. Deoarece funcţia incre-
ment din din formula lui Adams se ı̂nmulţeşte cu h, erorile de ordin p ı̂n valorile
lui f implică o eroare locală de ordinul O(hp+1 )când formula este evaluată.
Controlul pasului ı̂n cazul metodelor multipas este asemănător cu cel din
cazul RK. La fel ca la imbricarea (conţinerea) RK, schema predictor-corector
conduce la o estimare a erorii locale, iar formula (4.3) se poate utiliza pentru
predicţia lungimii pasului următor ce urmează după un pas cu succes sau unul
fără succes. Totuşi, schimbarea lungimii pasului după fiecare pas nu este reco-
mandabilă ı̂n aplicaţiile multipas. Aceasta este relativ costisitoare şi va contribui
la erori de rotunjire nenecesare. Krogh [14] restrânge schimbările la dublarea şi
ı̂njumătăţirea pasului. Astfel, dacă estimarea erorii δn+1 la pasul n satisface

kδn+1 k ∈ [T /2p+1 , T ],

unde T este toleranţa, lungimea pasului va rămâne neschimbată. Marginea infe-


rioară a acestui interval reprezintă valoarea erorii locale care va permite dublarea
dimensiunii pasului. Valori mai mari ale lui kδn+1 k vor duce la respingerea şi
8.6. Metode cu pas variabil 143

şi ı̂njumătăţirea lungimii pasului, ı̂n timp ce valori mai mici vor cauza dublarea
lungimii pasului urmator. Metoda lui Krogh este foarte directă şi ı̂şi propune să
ı̂nlocuiască diferenţele regresive bazate pe dimensiunea h a pasului

(∇fn , ∇2 fn , . . . , ∇p−1 fn ),

cu un nou set
(∇H fn , ∇2H fn , . . . , ∇p−1
H fn ),

pentru ı̂njumătăţirea pasului, sau cu setul

(∇D fn , ∇2D fn , . . . , ∇p−1


D fn ),

pentru dublarea lungimii pasului. Evident această tehnică va fi cea mai directă
când formulele Adams au fost prezentate mai degrabă ı̂n termeni de diferenţe
regresive ı̂n loc de valori ale funcţiei. Totuşi conversia ı̂n şi din forma cu diferenţe
se realizeazăuşor când formula multipas se exprimă ca ı̂n (8.10).
Presupunem că polinomul v(x) interpolează valorile disponibile ale lui f
pentru o metodă Adams de ordinul p; atunci

v(xn−k = fn−k , xn−k = xn − kh, k = 0, 1, . . . , p − 1.

Atunci diferenţele regresive satisfac

∇k fn , k < p;

k
∇ v(xn ) =
0, k ≥ p.

Considerăm ı̂ntâi procesul de dublare a pasului, care va presupune că v(x) este
de grad p − 1. Diferenţa regresivă ,,dublată” se defineşte prin

∇D v(xn ) = v(xn ) − v(xn−2 ),

şi un calcul simplu ne dă

∇D v(xn ) = 2∇v(xn ) − ∇2 v(xn ),

sau ı̂n formă operatorială,


∇D ≡ 2∇ − ∇2 .
O a doua aplicare a acestui operator ne dă

∇2D ≡ 4∇2 − 4∇3 + ∇4 .


144 Metode multipas obţinute prin cuadraturi

Acest proces poate fi extins până la ordinul dorit, ţinând cont că toate diferenţele
peste ordinul p − 1 vor fi zero. Astfel, pentru o metodă de ordinul 4 relaţiile vor
fi
∇2D ≡ 4∇2 − 4∇3 , ∇3D ≡ 8∇3 .

Procesul de ı̂njumătăţire este operaţia inversă şi se obţin relaţiile

∇ ≡ 2∇H − ∇2h
∇2 ≡ 4∇2H − 4∇3H
∇3 ≡ 8∇3H .

Ecuaţiile care rezultă de aici sunt uşor de rezolvat pentru a obţine diferenţele
ı̂njumătăţite.
Această metodă este utilizată la schimbarea lungimii pasului din funcţia Adams,
dată ı̂n secţiunea următoare.
Multe programe moderne bazate pe metode multipas tind să lucreze cu for-
mule cu coeficienţi variabili ı̂n loc de interpolări explicite aşa cum s-au dat ı̂n
detaliu aici. Aceste formule cu mai mulţi paşi se bazează pe diferenţe divizate ı̂n
loc de diferenţe finite. Astfel de scheme vor fi tratate ı̂ntr-un capitol următor.

8.7 Rezultate numerice


Programul Adams a fost aplicat problemei orbitei considerate ı̂n capitolul 4.
Selectând aceeaşi excentricitate (0.5) ca mai ı̂nainte, sistemul de patru ecuaţii de
ordinul I a fost rezolvat pentru x ∈ [0, 20], pentru mai multe erori locale.

8.8 Probleme
Problema 8.8.1. Dându-se ecuaţia diferenţială şi valorile de pornire

y 0 = x + y, y(0) = 1, y(0.1) = 1.110342, y(0.2) = 1.242805,

utilizaţi perechea de metodeAdams P-C de ordinul al treilea pentru a calcula doi


paşi de lungime 0.1.

Problema 8.8.2. Prin integrare directă, obţineţi o relaţie de recurenţă pentru


coeficienţii Adams-Moulton, similară cu cea pentru coeficienţii Adams-Bashforth,
dată ı̂n ecuaţia (8.8).
8.8. Probleme 145

Problema 8.8.3. Utilizaţi relaţia integrală


Z xn+1
y(xn+1 = y(xn−r + f (x, y(x))d x
xn−r

pentru a deduce o formulă explicită de ordinul 4 ând r = 3. Determinaţi modifi-


catorul de utilizat ı̂n extrapolarea locală jnd formula d-voastră este combinată cu
corectorul Milne-Simpson (8.17).
Utilizaţi seriile Taylor pentru a determina eroarea locală de trunchiere a formu-
lei implicite Milne-Simpson.

Problema 8.8.4. Utilizaţi proprietăţile coeficienţilor binomiali pentru a arăta că


are loc relaţia ce leagă coeficienţii Adams expliciţi şi impliciţi:

γk − γk−1 = γk∗ , k > 0.

Arătaţi de asemenea că acest rezultat conduce la


k
X
γk = γi∗ .
i=0

Problema 8.8.5. Arătaţi că relaţia din problema precedentă conduce la proprie-
tatea
p−1
X
(γk∗ ∇k fn+1 − γk ∇k fn ) = γp−1 ∇p fn+1 .
k=0

Indicaţie: ı̂ncercaţi ı̂ntâi substituţia ı̂n formula pentru p = 3.

Problema 8.8.6. Perechea Adams P-C de ordinul p oate fi scrisă ı̂n forma cu
diferenţe divizate ca:
p−1
X
Pn+1 = yn + γk ∇k fn ,
k=0
p−1
X
Cn+1 = yn + h γk∗ ∇k fn+1 ,
k=0

unde fn+1 = f (xn+1 , Pn+1 ). Utilizaţi proprietatea din problema precedentă


pentru a arăta că
Cn+1 = Pn+1 + hγp−1 ∇p fn+1 .
Obţineţi de asemenea formula de extrapolare locală pentru corector ı̂n acest caz.
146 Metode multipas obţinute prin cuadraturi

Problema 8.8.7. Găsiţi forma integrală a coeficienţilor ηk , ηk∗ ai formulelor


Nyström şi Milne-Simpson. Arătaţi că

ηk = γk + γk∗ , k ≥ 0,

şi tabelaţi coeficienţii Până la ordinul 6. Arătaţi de asemenea că

ηk − ηk−1 = ηk∗

şi tabelaţi coeficienţii Milne-Simpson de acelaşi ordin. Determinaţi formulele de


extrapolare locală corespunzătoare acestor perechi P-C.
Problema 8.8.8. Dându-se ecuaţia şi valorile de pornire

y 0 = y 3 − y, y(0) = 0.5,

y(0.1) = 0.463032, y(0.2) = 0.427355, y(0.3) = 0.393251,


utilizaţi perechea Adams P-C ı̂n forma cu diferenţe pentru a estima y(0.4). Uti-
lizând metoda Krogh de ı̂njumătăţire şi dublare, calculaţi aproximaţiile pentru
y(0.35) şi y(0.5).
Problema 8.8.9. Aplicaţi programul Adams problemei celor două corpuri cu
excentricitatea e = 0.7. Investigaţi comportarea erorii jnd toleranţa variază şi
apoi când ordinul variază. Modificaţi programul pentru a ı̂nregistra lungimea de
pas maximă şi minimă.
Modificaţi programul pentru a utiliza direct versiunea cu diferenţe regresive
a formulelor Adams. Verificaţi corectitudinea modificărilor prin comparare cu
calculele precedente.
Problema 8.8.10. Utilizaţi Adams pentru arezolva ecuaţia logistică

y 0 = y(2 − y), y(0) = 0.1, x ∈ [0, 5].

Problema 8.8.11. Ecuaţiile mişcării unei sonde spaţiale ce se mişcă ı̂n sistemul
Pământ-Lună sunt
E(x + M ) M (x − E)
ẍ = 2ẏ + x − −
r13 r23
Ey M y
ÿ = −2ẋ + y − 3 − 3 ,
r1 r2

unde
p p
r1 = (x + M )2 + y 2 , r2 = (x − E)2 + y 2
8.8. Probleme 147

1
M= , E = 1 − M,
82.45
cu condiţiile iniţiale

x(0) = 1.2, ẋ(0) = 0, y(0) = 0,


ẏ(0) = −1.049357509830320.

Aceste ecuaţii se bazează pe un sistem de coordonate rotit de perioadă 2π, ı̂n


care pământul este fixat ı̂n (−M, 0) iar luna ı̂n (E, 0). Sonda spaţială are o
masă neglijabilă. Scrieţi funcţii corespunzătoare pentru ecuaţii şi rezolvaţi-le cu
Adams pentru
t ∈ [0, 6.192169331319640],
utilizând o toleranţa locală de T = 10−5 . Desenaţi graficul orbitei ı̂n sistemul de
coordonate rotit.
Această problemă are o soluţie periodică şi sonda trebuie să revină la coordona-
tele de de pornire la sfârşitul intervalului dat. Deoarece sistemul este nestabil,
erorile mici vor distruge periodicitatea şi deci va fi necesar să se utilizeze o
precizie mai mare ı̂n soluţia numerică.

Problema 8.8.12. Rezolvaţi sistemul de ecuaţii din problema precedentă cu va-


lorile iniţiale modificate

x(0) = 1.15, ẏ(0) = 0.0086882909,

cu M = 0.012277471, pentru t ∈ [0, 294602]. Orbita ı̂n sistemul de coordonate


rotit pentru această problemă apare ı̂n figura 8.1. Desenaţi orbita ı̂n sistemul de
coordonate nerotit ı̂mpreună cu orbitele (circulare) a le Pământului şi Lunii.
148 Metode multipas obţinute prin cuadraturi

Figura 8.1: Soluţia problemei 8.8.12


Capitolul 9

Stabilitatea metodelor cu mai


mulţi paşi

9.1 Introducere
Subiectul stabilităţii metodelor multipas este mult mai complicat decât cel
corespunzător metodelor Runge-Kutta. Pentru metodele RK consistenţa lor ga-
rantează convergenţa, dar acest lucru nu se ı̂ntâmplă ı̂n cazul metodelor multipas,
ı̂n care erorile de rotunjire la un pas oarecare al calculelor trebuie amortizate de
erorile din paşii următori. În consecinţă ar putea să nu fie posibil să ı̂mbunătăţim
precizia unei soluţii numerice selectând un pas mai mic.
Deoarece formula incrementului RK se reduce la o ecuaţie cu diferenţe de
ordinul I când se rezolvă ecuaţia test scalară y 0 = λy, proprietăţile de stabilitate
absolută sunt uşor de determinat. Se poate determina o lungime de pas care sa
ne asigure că soluţia numerică, yn , satisface

lim yn = 0,
n→∞

când λ > 0 (proprietatea de stabilitate absolută). În aceleaşi condiţii, formu-


lele cu mai mulţi paşi conduc la ecuaţii cu diferenţe de ordin superior şi, ca o
consecinţă, sunt posibile mai multe soluţii.
În timp ce metodelor cu un singur pas li se cere să fie absolut stabile, ele nu
manifestă nici o instabilitate când se aplică ecuaţiilor diferenţiale cu tranzienţi
pozitivi. Totuşi, procesele cu mai mulţi paşi pot conţine valori caracteristice care
distrug toate soluţiile numerice. Această proprietate nefericită este asociată cu
amplificarea erorilor de rotunjire prezentă ı̂n valorile de pornire. În acest capitol
introducem conceptul de zero stabilitate care este esenţial pentru ca orice proces

149
150 Stabilitatea metodelor cu mai mulţi paşi

să fie convergent, indiferent de aplicaţie. Alte criterii importante de stabilitate


pentru procese cu mai mulţi pasi, inclusiv stabilitatea absolută sunt prezentate şi
discutate. În particular este evidenţiată influenţa modului de operare P-C asupra
stabilităţii.

9.2 Câteva experimente numerice


Pentru a ilustra fenomenul de zero-instabilitate, predictorul Hermite de ordi-
nul al treilea (7.9),

yn+1 = −4yn + 5yn−1 + h(4yn0 + 2yn−1


0
),

numit astfel deoarece este echivalent cu o formulă de extrapolare Hermite, cu


două puncte se aplică problemei liniare

y 0 = y, y(0) = 1, x ∈ [0, 0.2], (9.1)

cu două lungimi de pas h = 0.02 şi 0.01. Rezultatele sunt prezentate ı̂n tabela
9.1. Singura valoare de pornire ı̂n acest caz s-a obţinut dintr-un calcul ı̂n dublă
precizie a lui ex , cu o precizie de 15 cifre semnificative corecte. Deoarece y 0 > 0,
această problemă nu necesită o formulă absolut stabilă. Cu cel mai mare dintre
paşi soluţia ı̂ncepe rapid să se comporte prost, iar semnele erorii alternează. O
examinare mai atentă va arată că erorile in paşi succivi vor diferi cu un factor
de -5. La ı̂njumătăţirea pasului ne vom aştepta să reducem eroarea, cu ub factor
de aproximativ 8, deoarece se stie că formula are ordinul algebric 3. Rezultatele
nu confirmă aceasta. de fapt, pe acelaşi interval de integrare, creşterea erori
cu h = 0.01 este catastrofală. Înjumătăţirea pasului are efect opus celui dorit.Se
observă acelaşi factor ı̂ntre erorile succesive. Reamintim de asemenea s-a ilustrat
rezolvarea cu formula predictor-corector (7.9) ı̂n tabela 7.6. Rezultatele nu dau
nici o indicaţie asupra comportării evidenţiate ı̂n tabela 9.1.
Pentru a ı̂nţelege eroarea oscilantă rapid crescătoare, este necesar să consi-
derăm ecuaţia cu diferenţe ce rezultă din aplicarea predictorului Hermite ecuatiei
y 0 = y. Această ecuaţie este de ordinul al doilea, fiind

yn+1 + 4(1 − h)yn − (5 + 2h)yn−1 = 0, (9.2)

şi, presupunând că soluţiile au forma yn = θn , substituţia directă ne dă ecuaţia


caracteristică pătratică

θ2 + 4(1 − h)θ − (5 + 2h) = 0.


9.2. Câteva experimente numerice 151

Rădăcinile ei sunt
p
θ0 , θ1 = 2h − 2 ± 9 − 6h + 4h2 (9.3)

şi deci soluţia ecuaţiei cu diferenţe , ce dă soluţia numerică la fiecare pas se poate
scrie sub forma
yn = C0 θ0n + C1 θ1n ,
ubde C0 şi C1 se determină din valorile de pornire y0 şi y1 . Aplicând acum
teorema binomului rădăcinilor caracteristice (9.3) obţinem

θ0 = eh + O(h4 ), θ1 = −5 + O(h).

Prima dintre acestea furnizează o o aproximare a soluţiei exacte (adevărate), aşa


cum se ı̂ntâmplă cu rezultatul corespunzător dat de ecuaţia (6.4) ı̂ntr-o aplicaţie
Runge-Kutta. In acest caz, cealaltă soluţie, numită parazită, furnizează o com-
ponentă care creşte mai rapid şi care ı̂n realitate va domina valoarea lui yn , chiar
dacă h este zero. Acest lucru trebuie să apară, deoarece nu este posibil să eli-
minăm erorile de rotunjire. Fenomenul se numeşte zeo-instabilitate, sau uneori
instabilitate tare.
152 Stabilitatea metodelor cu mai mulţi paşi

h = 0.02 h = 0.01
xn yn − y(xn ) yn − y(xn )
0.00 0 0
0.01 0
0.02 0 −1.6801e − 009
0.03 4.9561e − 009
0.04 −2.7097e − 008 −2.9774e − 008
0.05 1.4105e − 007
0.06 7.8577e − 008 −7.0979e − 007
0.07 3.5171e − 006
0.08 −4.7279e − 007 −1.7493e − 005
0.09 8.6924e − 005
0.10 2.2206e − 006 −4.3203e − 004
0.11 2.1472e − 003
0.12 −1.1117e − 005 −1.0672e − 002
0.13 5.3039e − 002
0.14 5.4741e − 005 −2.6361e − 001
0.15 1.3101e + 000
0.16 −2.7064e − 004 −6.5115e + 000
0.17 3.2362e + 001
0.18 1.3368e − 003 −1.6084e + 002
0.19 7.9940e + 002
0.20 −6.6043e − 003 −3.9730e + 003

Tabela 9.1: Erorile pentru o formulă zero-instabilă (predictor Hermite)


Bibliografie

[1] J. C. Butcher, Coefficients for the study of runge-kutta integration proces-


ses, J. Austral. Math. Soc. 3 (1963), 185–201.

[2] J. C. Butcher, The Numerical Analysis of Ordinary Differential Equations,


John Wiley & Sons Ltd., New York, 1987.

[3] M. Calvo, J. L. Montijano, L. Randez, A 5th order interpolant for the Dor-
mand & Prince RK method, J. Comput. Appl. Math. 29 (1990), 91–100.

[4] J. Dormand, Numerical Methods for Differential Equations. A Computatio-


nal Approach, CRC Press, Boca Raton, New York, 1996.

[5] J. R. Dormand, M. A. Lockyer, N. E. McGorrigan, P. J. Prince, Global error


estimation with RK triples, Computer Math. Applic. 18 (1989), 835–846.

[6] J. R. Dormand, P. J. Prince, New Runge-Kutta-Nyström algorithms for si-


mulation in dynamical astronomy, Celestial Mechanics 18 (1978), 223–
232.

[7] J. R. Dormand, P. J. Prince, A family of embedded Runge-Kutta formulae,


J. Comput. Appl. Math 6 (1980), 19–26.

[8] J. R Dormand, P. J Prince, Runge-Kutta triples, Computers Math. Aplic. 12


(1986), 1007–1017.

[9] W. H Enright, K. R. Jackson, S. P. Nørset, P. G. Thompson, Interpolants


for Runge-Kutta formulas, ACM Trans. Math. Softw. 12 (1986), 193–218.

[10] E. Fehlberg, Classical fifth, sixth, seventh and eight order Runge-Kutta for-
mulas with step-size control, Tech. Report 287, NASA, 1968.

[11] E. Fehlberg, Low-order classical Runge-Kutta formulas with step-size con-


trol and their application to some heat transfer problems, Technical Report
315, NASA, 1969.

153
154 BIBLIOGRAFIE

[12] E. Hairer, S. P. Nørset, G. Wanner, Solving Ordinary Differential Equa-


tions, 2nd ed., vol. I, Springer Verlag, Berlin, 1994.

[13] F. B. Hildebrand, Introduction to Numerical Analysis, McGraw-Hill, New


York, 1974.

[14] F. T. Krogh, Algorithms for changing the step size, SIAM J. Numer. Anal.
10 (1973), 949–965.

[15] J. D. Lambert, Numerical Methods for Ordinary Differential Systems, John


Wiley & Sons Ltd., Chichester, 1991.

[16] R. H. Merson, An operational method for the study of integration proces-


ses, Proc. Symp. Data Processing (Salisbury, Australia), Weapons Research
Establishment, 1957, pp. 110–1–110–25.

[17] P. J. Prince, Runge-Kutta processes and global error estimation, Ph.D. the-
sis, C.N.A.A., 1979.

[18] L. F. Shampine, Interpolation for Runge-Kutta methods, SIAM J. Numer.


Anal 22 (1985), 1014–1027.

[19] P. J. van der Houven, Explicit Runge-Kutta formulas with increased stabi-
lity boundary, Numer. Math 20 (1972), 149–164.

[20] J. H. Verner, Explicit Runge-Kutta methods with estimates of the local trun-
cation error, SIAM J. Numer. Anal. 27 (1978), 772–790.

S-ar putea să vă placă și