Sunteți pe pagina 1din 50

METODE NUMERICE DE

SOLU|IONARE A
ECUA|IILOR DIFEREN|IALE
- PREZENTARE GENERAL{

INTRODUCERE
O ecua\ie diferen\ial[ poate s[ nu posede solu\ie
sau, chiar dac[ are solu\ie, nu totdeauna aceasta se
poate explicita. #n multe situa\ii, mai ales @n cazul
ecua\iilor diferen\iale neliniare, trebuie s[ ne
consider[m mul\umi\i dac[ ob\inem o aproxima\ie a
solu\iei ecua\iei diferen\iale. #n cele ce urmeaz[,
utiliz`nd metode numerice, se vor ob\ine seturi de
puncte care, atunci c`nd se utilizeaz[ discretiz[ri
suficient de fine pot aproxima solu\ia ecua\iei
diferen\iale considerate, a]a cum se prezint[ @n fig.
1.
























Fig. 1 Discretizare @n vederea aproxim[rii solu\iei ecua\iei diferen\iale
Se face men\iunea c[ @n cadrul acestui
capitol interesul va fi direc\ionat numai
@nspre ecua\ii diferen\iale de ordinul 1:



dat fiind faptul c[ ecua\iile diferen\iale de ordin
superior pot fi reduse la sisteme de ecua\ii
diferen\iale de ordinul 1.

( ) , ,y x f x d y d =
#ntr-adev[r, consider`nd ecua\ia diferen\ial[:


(1)
]i introduc`nd variabilele:


(2)
rezult[ c[:


(3)
#n acest fel ecua\ia diferen\ial[ de ordinul n scris[
sub forma (1) se poate echivala cu urm[torul sistem
de n ecua\ii diferen\iale de ordinul 1:


( )
( )
d y
d t
a
a
y
a
a
y
a
a
y f t
n
n
n n
n
n
n
= ' +


0 1 1
1

,

( )
( )
y x y x y x y x x
n
n
= ' = '' = =

1 2 3
1
, , , ,
( )
' =
'
= '' =
'
= =
'
=

y x x y x x y x x
n
n n 1 2 2 3
1
1
, , ,







(4)
( )
x x
x x
x x
x x
x
a
a
x
a
a
x
a
a
x f t
n n
n
n n
n
n
n
1 2
2 3
3 4
1
0
1
1
2
1
'
=
'
=
'
=
'
=
'
= +

.
METODA EULER
Aceasta este una dintre cele mai
simple tehnici de solu\ionare numeric[ a
ecua\iilor diferen\iale, fiind cunoscut[ ]i
sub denumirea de metoda tangentelor.
Se consider[ ecua\ia diferen\ial[
(inclusiv condi\ia ini\ial[ aferent[):



(5)

( )
( )
' = = y f x y y x y , ,
0 0
Dac[ se consider[ pe axa Ox o diviziune
echidistant[ de pas h se poate g[si un
punct ( x
1
, y
1
) = ( x
0
+h , y
1
) pe tangenta la
curba ce reprezint[ solu\ia ecua\iei
diferen\iale @n punctul ( x
0
, y
0
), a]a cum
se prezint[ @n fig. 2. Se poate scrie:



(6)

( )
y y
x h x
y y y h y
1 0
0 0
0 1 0 0

+
=
'
= +
'
unde:













Fig. 2 Modalitatea de g[sire a punctului (x
1
,y
1
) ce
aproximeaz[ punctul (x
1
,y(x
1
))
.
( )
y f x y
0 0 0
'
= ,











Fig. 3 Aproximarea solu\iei ecua\iei diferen\iale

Dac[ se noteaz[ x
0
+h = x
1
, atunci punctul de
coordonate ( x
1
, y
1
) situat pe tangenta
considerat[ reprezint[ a aproxima\ie a punctului
de coordonate ( x
1
, y(x
1
) ) situat pe curba ce
reprezint[ solu\ia ecua\iei diferen\iale. Este
evident faptul c[ eroarea metodei este cu at`t
mai redus[ cu c`t valoarea pasului diviziunii
considerate- h este mai mic.
Se poate construi astfel un proces iterativ:


(7)
a c[rui reprezentare grafic[ se prezint[ @n fig. 3.

( )
y y h y y h f x y x x n h
n n n n n n n +
= +
'
= + = +
1 0
, ,
Exemplu
Consider`nd ecua\ia diferen\ial[:


]i condi\ia ini\ial[ y(1)=1, s[ se ob\in[ o aproxima\ie pentru a
g[si valoarea lui y @n punctul de abscis[ x=1.5, utiliz`nd un
pa]i h cu valorile 0.1, 0.05 ]i 0.01, apoi s[ se calculeze ]i
erorile relative raportate la valoarea exact[, cu 4 zecimale.

Solu\ie
Solu\ia analitic[ a ecua\iei diferen\iale considerate este:

' = y x y 2
( ) y x e
x
=

2
1
( ) y x e
x
=

2
1
( ) y x e
x
=

2
1
( )
y x e
x
=

2
1







Tab. 1 Valorile ob\inute pentru h=0.1




x
n


y
n


Exact

Eroare

Eroare %

1.00
1.10
1.20
1.30
1.40
1.50

1.0000
1.2000
1.4640
1.8154
2.2874
2.9278

1.0000
1.2337
1.5527
1.9937
2.6117
3.4904

0.0000
0.0337
0.0887
0.1784
0.3244
0.5625

0.00
2.73
5.71
8.95
12.42
16.12









Tab. 2 Valorile ob\inute pentru h=0.05

x
n


y
n


Exact

Eroare

Eroare %

1.00
1.10
1.20
1.30
1.40
1.50

1.0000
1.2155
1.5044
1.8955
2.4311
3.1733

1.0000
1.2337
1.5527
1.9937
2.6117
3.4904

0.0000
0.0182
0.0483
0.0982
0.1806
0.3171

0.00
1.47
3.11
4.93
7.98
9.08








Tab. 3 Valorile ob\inute pentru h=0.01



x
n


y
n


Exact

Eroare

Eroare %

1.00
1.10
1.20
1.30
1.40
1.50

1.0000
1.2298
1.5423
1.9723
2.5719
3.4197

1.0000
1.2337
1.5527
1.9937
2.6117
3.4904

0.0000
0.0039
0.0104
0.0214
0.0398
0.0707

0.00
0.31
0.67
1.07
1.52
2.03



#n continuare se prezint[ programul cu ajutorul
c[ruia au fost ob\inute rezultatele numerice
prezentate mai sus, realizat @n Turbo Pascal
v.7.0.
Program ED;
var
x0,t0,tfin,pas: real; i,nmax: integer;
x,t: array[0..300] of real;
fis: text;
{Definirea ecuatiei diferentiale}
Function eul1(xe,te:real): real;
begin
eul1:=2*xe*te;
end;


begin
Assign(fis,'eul3.dat'); {Nume fisier}
Rewrite(fis);
x0:=1.0; {Conditia initiala}
t0:=1.0;tfin:=1.5; {Intervalul de integrat}
pas:=0.01; {Pasul de integrare}
nmax:=50; {Numarul de pasi}
x[0]:=x0; t[0]:=t0;

for i:= 0 to nmax-1 do {Incepere proces iterativ}
begin {metoda EULER}
t[i+1]:=t[i]+pas;
x[i+1]:=x[i]+pas*eul1(x[i],t[i]);
end;
for i:= 0 to nmax do
begin {Scriere fisier}
writeln(fis,t[i]:6:2,' ',x[i]:6:4);
end;
Close(fis);
end.

METODA EULER-HEUN
Aceast[ metod[ este cunoscut[ ]i sub denumirea de
metoda Euler @mbun[t[\it[, situa\ia fiind prezentat[
@n fig. 4 pentru primul pas de integrare. Procesul
iterativ pentru solu\ionarea numeric[ este descris
de rela\ia urm[toare:






(8)

( ) ( )
( )
y y h
f x y f x y
y y h f x y
n n
n n n n
n n n n
+
+ +
+
= +
+
= +
1
1 1
1
2
, ,
,
, .
*
*










Fig. 4 Ilustrarea metodei Euler-Heun pentru primul
interval al diviziunii considerate

Analiz`nd fig. 4 se poate constata c[ valoarea
lui y
1
este mai apropiat[ de solu\ie dec`t
valoarea ob\inut[ pentru y
1
*
, ceea ce poate
@ncadra aceast[ metod[ @n clasa metodelor
predictor-corector. #ntr-adev[r, aceast[ situa\ie
se poate interpreta @n felul urm[tor:

Pasul predictor

( )
y y h f x y
1 0 0 0
*
, = +






Pasul corector






#n continuare, cu referire la ecua\ia diferen\ial[
considerat[ anterior, se prezint[ rezultatele ob\inute prin
aplicarea acestei metode pentru diferi\i pa]i de integrare
]i programul folosit pentru solu\ionarea numeric[.


( ) ( )
y y h
f x y f x y
1 0
0 0 1 1
2
= +
+ , ,
*







Tab. 4 Valorile ob\inute pentru h=0.1



x
n


y
n


Exact

Eroare

Eroare %

1.00
1.10
1.20
1.30
1.40
1.50

1.0000
1.2320
1.5479
1.9832
2.5908
3.4509

1.0000
1.2337
1.5527
1.9937
2.6117
3.4904

0.0000
0.0017
0.0048
0.0106
0.0209
0.0394

0.00
0.14
0.31
0.53
0.80
1.13










Tab. 5 Valorile ob\inute pentru h=0.05



x
n


y
n


Exact

Eroare

Eroare %

1.00
1.10
1.20
1.30
1.40
1.50

1.0000
1.2332
1.5514
1.9909
2.6060
3.4795

1.0000
1.2337
1.5527
1.9937
2.6117
3.4904

0.0000
0.0004
0.0013
0.0029
0.0057
0.0108

0.00
0.04
0.08
0.14
0.22
0.31










Tab. 6 Valorile ob\inute pentru h=0.01



x
n


y
n


Exact

Eroare

Eroare %

1.00
1.10
1.20
1.30
1.40
1.50

1.0000
1.2337
1.5527
1.9936
2.6115
3.4899

1.0000
1.2337
1.5527
1.9937
2.6117
3.4904

0.0000
0.0000
0.0000
0.0001
0.0002
0.0005

0.00
0.00
0.00
0.005
0.010
0.025



Program ED;

var
x0,t0,tfin,pas: real;
i,nmax: integer;
x,t: array[0..300] of real;
fis: text;

{Definirea ecuatiei diferentiale}
Function eul1(xe,te:real): real;
begin
eul1:=2*xe*te;
end;

begin
Assign(fis,'heu3.dat'); {Nume fisier}
Rewrite(fis);
x0:=1.0; {Conditia initiala}
t0:=1.0;tfin:=1.5; {Intervalul de integrat}
pas:=0.01; {Pasul de integrare}
nmax:=50; {Numarul de pasi}
x[0]:=x0; t[0]:=t0;

for i:= 0 to nmax-1 do {Incepere proces iterativ}
begin {metoda EULER-HEUN}
t[i+1]:=t[i]+pas;
x[i+1]:=x[i]+pas*eul1(x[i],t[i])/2+pas*eul1(x[i]+
pas*eul1(x[i],t[i]),t[i]+pas)/2;
end;
for i:= 0 to nmax do
begin {Scriere fisier}
writeln(fis,t[i]:6:2,' ',x[i]:6:4);
end;
Close(fis);
end.

METODA DEZVOLT{RII #N
SERIE TAYLOR

Aceast[ metod[ nu prezint[ o larg[ aplicabilitate deoarece,
@n principal, rezultatele sunt comparabile cu cele
ob\inute prin aplicarea metodei Euler-Heun @n condi\iile
unor calcule mai laborioase.
A]a cum se ]tie, dezvoltarea unei func\ii y(x) @n jurul
unui punct x=a are expresia:



(9)

( ) ( ) ( )
( )
( )
( )
y x y a y a
x a
y a
x a
= + '

+ ''

+
1 2
2
! !

Pentru a apropia forma (9) de problema curent[, dac[ se
consider[ cazul @n care a=x
n
]i x=x
n
+h, se ob\ine:



(10)

Dac[ se presupune c[ func\ia y(x) este solu\ia ecua\iei
diferen\iale:


(11)


( ) ( ) ( ) ( )
y x h y x y x h y x
h
n n n n
+ = + ' + '' +
2
2

( )
' = y f x y ,
Oprind numai doi termeni din (10) se poate
scrie:





(12)
( ) ( ) ( )
( ) ( ) ( )
( )
y x h y x y x h
y x h y x f x y x h
n n n
n n n n
+ ~ + '
+ ~ +

, .
Se observ[ faptul c[ dac[ @n (12) se
@nlocuie]te y(x
n
+h) cu y
n+1
]i y(x
n
) cu y
n
se
ob\ine formula ce caracterizeaz[ metoda
Euler:



(13)

.

( )
y y h f x y
n n n n +
= +
1
,
Oprind trei termeni @n (10) ]i f[c`nd
@nlocuirile antemen\ionate se ob\ine
urm[toarea formul[:


(14)
Metoda poate fi considerat[ drept cheia de
bolt[ a majorit[\ii metodelor de solu\ionare
numeric[ a ecua\iilor diferen\iale.


y y y h y h
n n n n +
= +
'
+

1
2
METODE TIP RUNGE-KUTTA
Aceast[ clas[ de metode reprezint[ una dintre cele
mai folosite @n abordarea numeric[ a ecua\iilor
diferen\iale, @mbin`nd num[rul relativ redus de
opera\ii elementare cu acurate\ea rezultatelor.
Metoda Runge-Kutta de ordinul II const[ @n
g[sirea constantelor a, b, o, | astfel @nc`t
expresia:



(15)

y y a k b k
n n +
= + +
1 1 2



cu:



(16)

s[ se apropie de dezvoltarea @n serie Taylor
pentru c`t mai mul\i termeni posibili. Meritul
principal al acestei clase de metode rezid[
deci @n aceea c[ se apropie de acurate\ea
unei dezvolt[ri @n serie Taylor f[r[ @ns[ a fi
nevoie s[ se calculeze ]i derivatele de ordin
superior.


( )
( )
k h f x y
k h f x h y k
n n
n n
1
2 1
=
= + +
, ,
, . o |
Se fac urm[toarele observa\ii:
a) Dac[:



atunci (15) reprezint[ dezvoltarea @n serie
Taylor, oprind primii trei termeni, a func\iei
considerate.


a b b b + = = = 1
1
2
1
2
, , o |
b) Dac[:


atunci (15) se reduce la expresia metodei
Euler-Heun.

c) Se poate constata c[ metoda Euler este de
fapt o procedur[ Runge-Kutta de ordinul I.


a b b = = = =
1
2
1
2
1 1 , , , o
Folosind acelea]i considera\ii se determin[ astfel
algoritmul de calcul ]i @n cazul metodei Runge-Kutta
de ordinul IV (se opresc primii patru termeni din
dezvoltarea @n serie Taylor):










(17)

( )
( )
y y k k k k
k h f x y
k h f x h y k
k h f x h y k
n n
n n
n n
n n
+
= + + + +
=
= + +
|
\

|
.
|
= + +
|
\

|
.
|
1 1 2 3 4
1
2 1
3 2
1
6
2 2
1
2
1
2
1
2
1
2
,
,
, ,
, ,
( )
k h f x h y k
n n 4 3
= + + ,
#n continuare se prezint[ rezultatele numerice
ob\inute @n cazul aplic[rii acestei metode pentru
rezolvarea ecua\iei diferen\iale considerate anterior ]i
programul folosit @n acest scop.









Tab. 7 Valorile ob\inute pentru h=0.1



x
n


y
n


Exact

Eroare

Eroare %

1.00
1.10
1.20
1.30
1.40
1.50

1.0000
1.2337
1.5527
1.9937
2.6116
3.4902

1.0000
1.2337
1.5527
1.9937
2.6117
3.4904

0.0000
0.0000
0.0000
0.0000
0.0001
0.0002

0.00
0.00
0.00
0.00
0.0038
0.0076








Tab. 8 Valorile ob\inute pentru h=0.05

x
n


y
n


Exact

Eroare

Eroare %

1.00
1.10
1.20
1.30
1.40
1.50

1.0000
1.2337
1.5527
1.9937
2.6117
3.4903

1.0000
1.2337
1.5527
1.9937
2.6117
3.4904

0.0000
0.0000
0.0000
0.0000
0.0000
0.0001

0.00
0.00
0.00
0.00
0.00
0.0028








Tab. 9 Valorile ob\inute pentru h=0.01

x
n


y
n


Exact

Eroare

Eroare %

1.00
1.10
1.20
1.30
1.40
1.50

1.0000
1.2337
1.5527
1.9937
2.6117
3.4903429

1.0000
1.2337
1.5527
1.9937
2.6117
3.4904

0.0000
0.0000
0.0000
0.0000
0.0000
0.0000571

0.00
0.00
0.00
0.00
0.00
0.0016

Program ED;

var
x0,t0,tfin,pas: real;
i,nmax: integer;
x,t,k1,k2,k3,k4: array[0..300] of real;
fis: text;

{Definirea ecuatiei diferentiale}
Function eul1(xe,te:real): real;
begin
eul1:=2*xe*te;
end;

begin
Assign(fis,'rk43.dat'); {Nume fisier}
Rewrite(fis);
x0:=1.0; {Conditia initiala}
t0:=1.0;tfin:=1.5; {Intervalul de integrat}
pas:=0.01; {Pasul de integrare}
nmax:=50; {Numarul de pasi}
x[0]:=x0; t[0]:=t0;

for i:= 0 to nmax-1 do {Incepere proces iterativ}
begin {metoda RUNGE-KUTTA
IV}
t[i+1]:=t[i]+pas;
k1[i]:=eul1(x[i],t[i]);
k2[i]:=eul1(x[i]+pas/2*k1[i],t[i]+pas/2);
k3[i]:=eul1(x[i]+pas/2*k2[i],t[i]+pas/2);
k4[i]:=eul1(x[i]+pas*k3[i],t[i]+pas);
x[i+1]:=x[i]+pas/6*(k1[i]+2*k2[i]+2*k3[i]+k4[i]);
end;

for i:= 0 to nmax do
begin {Scriere fisier}
writeln(fis,t[i]:6:2,' ',x[i]:6:4);
end;
Close(fis);
end.

METODA MILNE
Aceasta este o metod[ care lucreaz[ @n doi
pa]i.

Pasul predictor



(18)
unde:


y y
h
y y y n
n n n n n +
= +
'

'
+
'
|
\

|
.
|
>
1 3 1 2
4
3
2 2 3
*
,







(19)
( )
( )
( )
y f x y
y f x y
y f x y
n n n
n n n
n n n
'
=
'
=
'
=


, ,
, ,
, .
1 1 1
2 2 2
Pasul corector


(20)
unde:


(21)


y y
h
y y y
n n n n n + +
= +
'
+
'
+
'
|
\

|
.
|
1 1 1 1
3
4 ,
( )
y f x y
n n n + + +
'
=
1 1 1
,
*
Se remarc[ faptul c[ valorile pentru y
0
, y
1
, y
2
]i
y
3
trebuie cunoscute pentru demararea
procesului iterativ. Acestea se pot calcula cu
oricare dintre metodele anterioare,
recomand`ndu-se @ns[ ca acest calcul ini\ial
s[ se fac[ cu un nivel @nalt de acurate\e.

CONCLUZII

Aplicarea uneia sau alteia dintre aceste
metode @n vederea solu\ion[rii unei
probleme concrete implic[ o analiz[ atent[
a erorilor induse, @n vederea realiz[rii
unui compromis acceptabil @ntre
precizie ]i efortul de calcul cerut.