Explorați Cărți electronice
Categorii
Explorați Cărți audio
Categorii
Explorați Reviste
Categorii
Explorați Documente
Categorii
6. Rezolvarea numerică
a problemei Cauchy pentru ecuaţii diferenţiale
§6.1. Generalităţi
∂f
Observaţie. Dacă există şi este mărginită pe D, atunci f este lipschitziană
∂y
pe D. Într-adevăr, din Teorema lui Lagrange rezultă
∂ f
f ( x, y ) − f ( x , z ) = ( x, c)( y − z ),
∂ y
pentru un anumit c între y şi z, deci putem alege
∂ f
L = max ( x, y ) . (4)
( x, y )∈D ∂ y
∂f
Exemplul 1. Fie ecuaţia y ′ = 1 + sin( xy ) , D = [0,1] × R . Deoarece = xcos xy ,
∂y
conform observaţiei de mai sus, putem lua L = 1. Atunci pentru orice (x0, y0) cu
0 < x0 < 1 există o soluţie a problemei Cauchy pentru ecuaţia dată pe un anumit
interval [x0–α, x0+α] ⊂ [0, 1].
max y ( x) − y ( x; δ , ε ) ≤ k ( ε + α δ ∞ ) , (8)
x − x0 ≤α
cu k = 1 /(1 − α L) .
y ( x0 ; ε ) = y 0 + ε
Dacă y(x) este soluţia problemei neperturbate (1)-(2) şi z(x) = y(x;ε) − y(x)
este eroarea, atunci
∂ f ( x, y ( x))
z ′( x; ε ) = f ( x, y ( x; ε )) − f ( x, y ( x)) ≈ ⋅ z ( x; ε ) , (9)
∂ y
z ( x0 ; ε ) = ε .
Aproximarea (9) este valabilă când y(x; ε) este suficient de aproape de
y(x) , ceea ce se întâmplă pentru valori mici ale lui ε şi intervale mici
[x0-α, x0+α].
Ecuaţia diferenţială aproximativă (9) se poate integra uşor. Se obţine
⎡ x ∂f (t , y (t )) ⎤
z ( x; ε ) ≈ ε exp ⎢ ∫ dt ⎥.
⎢⎣ x0 ∂t ⎥⎦
Dacă derivata parţială satisface
∂ f
(t , y (t )) ≤ 0, x 0 − t ≤ α ,
∂ y
Rezolvarea numerică a problemei Cauchy pentru ecuaţii diferenţiale 195
2
∂f ∂f ⎛ ∂f ⎞
( x0 , y 0 ) ⋅ ( x0 , y 0 ) + ⎜⎜ ( x0 , y 0 ) ⎟⎟ ⋅ f ( x0 , y 0 )
+ etc.
∂x ∂y ⎝ ∂y ⎠
Pentru p = 3 obţinem
h h2 h3
y ( x1 ) = y 0 + y ′( x 0 ) + y ′′( x 0 ) + y ′′′( x 0 ) + R4 .
1! 2! 3!
Rezolvarea numerică a problemei Cauchy pentru ecuaţii diferenţiale 197
y 3
Exemplul 4. Fie ecuaţia y ′ = 1 −, y (1) = . Alegem h = 0.1 . În acest caz
x 2
y ∂f y ∂f 1 ∂ f 2
2y ∂ 2 f 1 ∂2f
f ( x, y ) = 1 − , = , =− , =− , = , =0 .
x ∂x x 2 ∂y x ∂x 2 x 3 ∂x∂y x 2 ∂y 2
⎛ 3⎞ 1
Atunci y ′(1) = f ⎜1, ⎟ = − , y ′′(1) = 2 , y ′′′(1) = −6 .
⎝ 2⎠ 2
Deci x0 = 1 , x1 = 1.1 . Aproximăm y(1.1) cu y1 dat de
3 0.1 ⎛ 1 ⎞ (0.1) 2 (0.1) 3
y1 = + ⎜ − ⎟ + ⋅ 2 + ( −6) .
2 1! ⎝ 2 ⎠ 2! 3!
x 1
Obţinem y1 = 1.459 . Pe de altă parte, soluţia exactă a problemei este y = + ,
2 x
deci y(1.1) = 1.459090 .
Metoda lui Euler are o interpretare geometrică foarte simplă: dacă s-a
determinat valoarea yn-1, pentru a determina yn , se consideră soluţia ecuaţiei (1)
care trece prin (xn-1, yn-1) (deci care satisface y(xn-1)=yn-1 ) ; se duce apoi tangenta
la graficul acestei soluţii, în punctul (xn-1, yn-1) ; se intersectează această tangentă
cu dreapta x=xn , obţinându-se yn. Din acest motiv, metoda lui Euler se mai
numeşte şi metoda liniilor poligonale. După cum se observă din figura de mai jos,
erorile se acumulează.
y2
y1
y (x 2)
y (x 1 )
y0
O x0 xx01 x2 x
metoda Runge-Kutta de ordinul doi. Valorile aproximative yn ale lui y(xn) sunt
date de
y n = y n −1 + a1h f ( x n−1 , y n −1 ) + a 2 h f ( x n−1 + b1h, y n −1 +
(16)
+ b2 h f ( x n−1 , y n −1 )) , n ≥ 1 ,
iar y0 = y(x0) . Constantele a1, a2, b1, b2 urmează a fi determinate. Dacă notăm
∂f ∂f
f = f ( x n −1 , y n−1 ) , f x = ( x n −1 , y n−1 ) , f y = ( x n −1 , y n −1 ) , atunci, din
∂x ∂y
formula lui Taylor pentru funcţii de două variabile, obţinem
(
y n = y n −1 + a1 h f + a 2 h f + b1 h f x + b2 h f y f + O(h 2 ) = )
(17)
( )
= y n −1 + (a1 + a 2 ) f ⋅ h + a 2 b1 f x + a 2 b2 f f y ⋅ h 2 + O(h 3 ) .
Pe de altă parte, din metoda lui Taylor, avem
h2
h
y n = y n −1 + f +
1! 2!
( )
f x + f y ⋅ f + O(h 3 ) . (18)
Identificând coeficienţii lui h şi h2 din (17) şi (18), rezultă
⎧
⎪a1 + a 2 = 1
⎪
⎪ 1
⎨a 2 b1 = (19)
⎪ 2
⎪ 1
⎪⎩a 2 b2 = 2 .
⎧
⎪ y n = y n −1 + h(a1 g1 + a 2 g 2 ) , n ≥ 1
⎪
⎪
⎪g = f ( x , y )
⎪ 1 n −1 n −1
⎪
⎪
⎨ g 2 = f ( x n−1 + α h , y n −1 + α h g1 ) (20)
⎪
⎪
⎪a1 + a 2 = 1
⎪
⎪
⎪ 1
⎪a 2 α = .
⎩ 2
1
Pentru a1 = a 2 = , α = 1 , se obţine metoda Euler îmbunătăţită
2
h
y n = y n −1 + [ f (x n−1 , y n −1 ) + f (x n−1 + h, y n −1 + h f (x n−1 , y n −1 ))] , n ≥ 1 .
2
(21)
1
Pentru a1 = 0, a2 = 1 , α = , se obţine metoda Euler modificată
2
⎛ h h ⎞
y n = y n −1 + h f ⎜ x n −1 + , y n −1 + f ( x n −1 , y n −1 )⎟ , n ≥ 1 . (22)
⎝ 2 2 ⎠
⎛ h h ⎞
În acest caz y1 = y 0 + h ⋅ f ⎜ x 0 + , y 0 + f ( x 0 , y 0 ) ⎟ , deci y1 = 0.34031 , iar
⎝ 2 2 ⎠
h h
y 2 = y1 + h ⋅ f ( x1 + , y1 + f ( x1 , y1 )) = 0.25868 .
2 2
h
y 2 = y1 + ⋅ [g1 + 2 ⋅ (g 2 + g 3 ) + g 4 ] = 0.24999 .
6
cu condiţia iniţială
⎧⎪ y1 ( x 0 ) = y10
⎨ . (25)
⎪⎩ y 2 ( x 0 ) = y 20
Formulele (23) se scriu în acest caz astfel
⎛ y1n ⎞ ⎛ y1,n −1 ⎞ h ⎛ g11 ⎞ h ⎛ g 21 ⎞ h ⎛ g 31 ⎞ h ⎛ g 41 ⎞
⎜⎜ ⎟⎟ = ⎜⎜ ⎟ + ⎜⎜
⎟ ⎟⎟ + ⎜⎜ ⎟⎟ + ⎜⎜ ⎟⎟ + ⎜⎜ ⎟⎟ , n ≥ 1 ,
⎝ y 2n ⎠ ⎝ y 2,n −1 ⎠ 6 ⎝ g12 ⎠ 3 ⎝ g 22 ⎠ 3 ⎝ g 32 ⎠ 6 ⎝ g 42 ⎠
unde:
g11 = f1 ( x n−1 , y1,n −1 , y 2,n −1 )
(27)
g12 = f 2 ( x n −1 , y1,n −1 , y 2,n −1 )
⎛ h h h ⎞
g 21 = f1 ⎜ x n −1 + , y1,n−1 + g11 , y 2,n −1 + g12 ⎟
⎝ 2 2 2 ⎠
⎛ h h h ⎞
g 22 = f 2 ⎜ x n −1 + , y1,n −1 + g11 , y 2,n −1 + g12 ⎟
⎝ 2 2 2 ⎠
⎛ h h h ⎞
g 31 = f1 ⎜ x n −1 + , y1,n−1 + g 21 , y 2,n −1 + g 22 ⎟
⎝ 2 2 2 ⎠
⎛ h h h ⎞
g 32 = f 2 ⎜ x n−1 + , y1,n −1 + g 21 , y 2,n−1 + g 22 ⎟
⎝ 2 2 2 ⎠
(
g 41 = f1 x n −1 + h, y1,n −1 + hg 31 , y 2,n −1 + hg 32 )
(
g 42 = f 2 x n −1 + h, y1,n −1 + hg 31 , y 2,n−1 + hg 32 )
şi
y1,0 = y1 ( x 0 )
.
y 2, 0 = y 2 ( x 0 )
Rezolvarea numerică a problemei Cauchy pentru ecuaţii diferenţiale 203
Definiţie. Dacă y(x) este soluţia exactă a problemei Cauchy (1)-(2), se numeşte
eroare de trunchiere a metodei, funcţia
y ( x + h) − y ( x )
t ( x, h ) = − Φ ( x, y ( x), h), (30)
h
unde x ∈ [x 0 , b ) şi h > 0 astfel ca x+h ≤ b .
e (b − x0 ) L − 1
max z n − y n ≤ e (b − x0 ) ε + ⋅ δ ∞ .
n L
În consecinţă, există constantele k1, k2 , independente de h, astfel ca
max z n − y n ≤ k1 ε + k 2 δ ∞ . (37)
n
Această inegalitate este analoagă inegalităţii (8) din cazul problemei
Cauchy iniţiale. Aşadar metoda Euler este stabilă numeric. De altfel, toate metodele
numerice pentru problema Cauchy au această formă de stabilitate, imitând
stabilitatea problemei iniţiale. Analiza se poate simplifica, luând δ(x) = 0 şi
considerând numai efectul perturbării iniţiale y0 . Nu vom analiza aici problema
erorilor de rotunjire.
unde fi = f(xi,yi), i = n − m, n .
Vom aproxima valoarea exactă y(xn+1) prin
x n+1
y n +1 = y n + ∫ Pm ( x)dx. (40)
xn
n
După cum se ştie Pm ( x) = ∑ Li ( x) f ( xi , yi ), unde
i=n−m
208 Bazele Analizei Numerice
n x− xj n (t − j + n)h
Li ( x) = ∏ = ∏ =
j = n − m xi − xj j = n − m (i − j ) h
j ≠i j ≠i
m
(−1) n − i ∏ (t + k )
(t + m)...(t + n − i + 1)(t + n − i − 1)...t k =0
= = .
(i − n + m)...1(−1)...[− (n − i )] (i − n + m)!(n − i )!(t + n − i )
Făcând schimbarea de variabilă (39) în (40), obţinem:
m
1
(−1) n −i ∏ (t + k )
n
k =0
y n +1 = y n + ∫ ( ∑ ⋅ h f i )dt
0 i = n − m (i − n + m)!( n − i )!(t + n − i )
Dacă notăm cu
m
∏ (t + k )
( −1) n − i ⋅ h 1
Ai = ⋅ ∫ k =0 dt , (41)
(i − n + m)!(n − i )! 0 t + n − i
obţinem
n
y n +1 = y n + ∑ Ai f i , (42)
i=n−m
cunoscută sub numele de formula Adams-Bashforth.
În continuare vom explicita formula (42) pentru valori particulare ale lui
m. Astfel pentru m = 1, deci când se folosesc nodurile xn şi xn-1, formula (42)
devine
y n +1 = y n + An −1 f n −1 + An f n ,
unde conform (41)
1
(−1) −1 h 1 t (t + 1) t2 h
An −1 = ⋅∫ dt = − h =− ,
0!⋅1! 0 t + 1 2 2
0
1
(−1) 0 h 1 t (t + 1) ⎛ t2 ⎞ 3
An = ⋅∫ dt = h⎜ + t ⎟ = h .
1!⋅ 0! 0 t ⎜ 2 ⎟
⎝ ⎠ 0 2
În consecinţă pentru m = 1, formula lui Adams-Bashforth se scrie
h
y n +1 = y n + (3 f n − f n −1 ) . (43)
2
Similar, pentru m = 2 se obţine
h
y n +1 = y n + (23 f n − 16 f n −1 + 5 f n − 2 ) , (44)
12
iar pentru m = 3
h
y n +1 = y n + (55 f n − 59 f n −1 + 37 f n − 2 − 9 f n − 3 ) . (45)
24
Rezolvarea numerică a problemei Cauchy pentru ecuaţii diferenţiale 209
h
y5 = y 4 + (55 f 4 − 59 f 3 + 37 f 2 − 9 f1 ) ,
12
unde
f 2 = f ( x2 , y 2 ) = −0.22222, f 3 = f ( x3 , y3 ) = −0.16327 , f 4 = f ( x 4 , y 4 ) = −0.125,
obţinându-se y(2.25)≈y5=0.22307 ( soluţia exactă fiind y(2.25)=0.22222).
h
y5 = y 4 + (55 f 4 − 59 f 3 + 37 f 2 − 9 f1 ) ,
12
Rezolvarea numerică a problemei Cauchy pentru ecuaţii diferenţiale 213
r0 = hλ + 1 + h 2 λ2 , r1 = hλ − 1 + h 2 λ2 . (59)
Soluţia generală a lui (56) este
y n = β 0 r0n + β1r1n , n ≥ 0 . (60)
Coeficienţii β0 şi β1 din (60) se determină din condiţiile ca y0 şi y1 să
coincidă cu ce se obţine din (60) pentru n = 0 şi n = 1.
⎧β 0 + β1 = y 0
⎨
⎩ β 0 r0 + β1r1 = y1 .
Soluţia acestui sistem este
y −ry y r −y
β 0 = 1 1 0 , β1 = 0 0 1 .
r0 − r1 r0 − r1
λh
Dar y0 = 1, y1 = e (acestea sunt valorile soluţiei exacte). Atunci, folosind
formula lui Taylor, obţinem
e λh − r1
β0 = = 1 + O ( h 2 λ2 )
2 2
2 1+ h λ
r0 − e λh
β1 = = O(h 3λ3 ) .
2 2
2 1+ h λ
Pentru aceste valori, β 0 → 1 şi β1 → 0 , când h → 0 . În
consecinţă β1r1n → 0 când h→0, deci din (60) rezultă că termenul β 0 r0n ar
Atunci termenul r1n va creşte mai puţin rapid decât r0n şi termenul corect
în (60), β 0 r0n va domina. Totuşi pentru λ < 0 , vom avea 0 < r0 < 1 , r1 < -1 ,
h > 0. În consecinţă, β1r1n va domina β 0 r0n când n creşte pentru h fixat,
necontând cât de mic este h ales iniţial. Termenul β 0 r0n →0 când n → ∞, pe
când termenul β1r1n creşte în magnitudine, alternând ca semn când n creşte.
Termenul β1r1n se numeşte soluţie parazită a metodei numerice (56), deoarece
nu corespunde unei soluţii a ecuaţiei diferenţiale originale y ′ = λy . Ecuaţia
originală are o familie de soluţii cu un parametru, depinzând de valoarea iniţială
y0, dar aproximaţia (56) are familia de soluţii (60), cu doi parametri, care depinde
de y0 şi y1. Noua soluţie β1r1n este o creaţie a metodei numerice; pentru
problema (55) cu λ < 0 ea face ca soluţia numerică să se depărteze de soluţia
corectă când
xn → +∞. Din cauza acestei comportări, spunem că metoda (47) este slab stabilă.
xk yk xk yk
216 Bazele Analizei Numerice
0 0 2 1.2914
0.25 0 2.25 1.145864
0.5 0.125 2.5 1.759889
0.75 0.242188 2.75 0.847244
1 0.470673 3 2.775987
1.25 0.631421 3.25 -1.505808
1.5 0.896326 3.5 3.267258
1.75 0.979721 3.75 -5.093296
Exerciţii
Folosind metoda Taylor de ordinul 3 să se găsească soluţia aproximativă a
următoarelor probleme Cauchy în punctele menţionate.
⎧ y ′ = xy
1. ⎨ în 4 paşi.
⎩ y (0) = 1 în x = 1
R. h = 0.25
x x0=1 x1=1.25 x2=1.5 x3=1.75 x4=2
y' 0 0.25781 0.56772 1.00432
y' ' 1 1.16106 1.70316 2.84558
y' ' ' 0 1.3374 3.26439 6.7164
y 1 1.03125 1.13544 1.3391 1.69659
⎧ 4x
⎪ y′ =
2. ⎨ y în 4 paşi.
⎪⎩ y (1) = 2 în x = 2
R. h = 0.25
x x0=1 x1=1.25 x2=1.5 x3=1.75 x4=2
y' 2 2.05128 2.07279 1.00432
y' ' -2 -1.81149 -1.5867 2.84558
y' ' ' 0 0.335864 0.3667 6.7164
y 2 2.4375 2.89465 3.36421 3.84191
obţinem:
xi 0 0.2 0.4 0.6 0.8 1
yi 1 1.1867 1.3484 1.4938 1.6272 1.7542
⎧ 2
y′ = − y −
⎪⎪ x2
4. ⎨
⎪ y (1.5) = 2 în x = 2.5 cu pasul h = 0.2 .
⎪⎩ 3
R. Cu metoda Euler pentru
xi = x0+ih , yi+1 = yi+hf(xi,y) , i=0, 1, ... n , n=5 ,
obţinem:
xi 1.5 1.7 1.9 2.1 2.3 2.5
yi 0.66667 0.75556 0.77979 0.76898 0.74142 0.70709
R. h = 0.2