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:

d y d x f x,y ,
dat fiind faptul c[ ecua\iile diferen\iale de ordin
superior pot fi reduse la sisteme de ecua\ii
diferen\iale de ordinul 1.
#ntr-adev[r, consider`nd ecua\ia diferen\ial[:
d n y a a1 a
n

0
y y
n1
y n1
f t
d t a n a n a n (1)
]i introduc`nd variabilele:

y x 1 , y x 2 , y x 3 ,, y n 1
x xn
,
(2)
rezult[ c[:
n1
y x 1 x 2 , y x 2 x 3 ,, y x n1 x n

(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:

x1 x2


x2 x3


x3 x4


x n1 x n
a a a

xn
0
x1
1
x 2
n 1
x n f t .
a n a n a n

(4)
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[):

y f x,y ,y x 0 y 0

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

y1 y
y y1 y h y
0

x 0 h x 0
0 0 0

(6)

x
unde:
y 0 f 0 ,y 0

Fig. 2 Modalitatea de g[sire a punctului (x1,y1) ce


aproximeaz[ punctul (x1,y(x1))
Fig. 3 Aproximarea solu\iei ecua\iei diferen\iale
Dac[ se noteaz[ x0+h = x1, atunci punctul de
coordonate ( x1 , y1 ) situat pe tangenta
considerat[ reprezint[ a aproxima\ie a punctului
de coordonate ( x1 , y(x1) ) 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:

y n 1 y n h y n

y n h f x n ,y n ,x n x 0 nh
(7)
a c[rui reprezentare grafic[ se prezint[ @n fig. 3.
Exemplu
Consider`nd ecua\ia diferen\ial[:

y 2 x y
]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.
x ex 1
2
y

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

xe x 1
2
y
xn yn Exact Eroare Eroare %

1.00 1.0000 1.0000 0.0000 0.00


1.10 1.2000 1.2337 0.0337 2.73
1.20 1.4640 1.5527 0.0887 5.71
1.30 1.8154 1.9937 0.1784 8.95
1.40 2.2874 2.6117 0.3244 12.42
1.50 2.9278 3.4904 0.5625 16.12

Tab. 1 Valorile ob\inute pentru h=0.1


xn yn Exact Eroare Eroare %

1.00 1.0000 1.0000 0.0000 0.00


1.10 1.2155 1.2337 0.0182 1.47
1.20 1.5044 1.5527 0.0483 3.11
1.30 1.8955 1.9937 0.0982 4.93
1.40 2.4311 2.6117 0.1806 7.98
1.50 3.1733 3.4904 0.3171 9.08

Tab. 2 Valorile ob\inute pentru h=0.05


xn yn Exact Eroare Eroare %

1.00 1.0000 1.0000 0.0000 0.00


1.10 1.2298 1.2337 0.0039 0.31
1.20 1.5423 1.5527 0.0104 0.67
1.30 1.9723 1.9937 0.0214 1.07
1.40 2.5719 2.6117 0.0398 1.52
1.50 3.4197 3.4904 0.0707 2.03

Tab. 3 Valorile ob\inute pentru h=0.01


#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:

yn 1 y h
f x n ,y n f x n 1 ,y *
n 1 ,
n
2
y *
n 1 y n h f x n ,y n .
(8)
Fig. 4 Ilustrarea metodei Euler-Heun pentru primul
interval al diviziunii considerate
Analiz`nd fig. 4 se poate constata c[ valoarea
lui y1 este mai apropiat[ de solu\ie dec`t
valoarea ob\inut[ pentru y1*, 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 *
1 y 0 h f x 0 ,y 0
Pasul corector

y1 y h
f x 0 ,y 0 f x 1 , y 1*
0
2

#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[.
xn yn Exact Eroare Eroare %

1.00 1.0000 1.0000 0.0000 0.00


1.10 1.2320 1.2337 0.0017 0.14
1.20 1.5479 1.5527 0.0048 0.31
1.30 1.9832 1.9937 0.0106 0.53
1.40 2.5908 2.6117 0.0209 0.80
1.50 3.4509 3.4904 0.0394 1.13

Tab. 4 Valorile ob\inute pentru h=0.1


xn yn Exact Eroare Eroare %

1.00 1.0000 1.0000 0.0000 0.00


1.10 1.2332 1.2337 0.0004 0.04
1.20 1.5514 1.5527 0.0013 0.08
1.30 1.9909 1.9937 0.0029 0.14
1.40 2.6060 2.6117 0.0057 0.22
1.50 3.4795 3.4904 0.0108 0.31

Tab. 5 Valorile ob\inute pentru h=0.05


xn yn Exact Eroare Eroare %

1.00 1.0000 1.0000 0.0000 0.00


1.10 1.2337 1.2337 0.0000 0.00
1.20 1.5527 1.5527 0.0000 0.00
1.30 1.9936 1.9937 0.0001 0.005
1.40 2.6115 2.6117 0.0002 0.010
1.50 3.4899 3.4904 0.0005 0.025

Tab. 6 Valorile ob\inute pentru h=0.01


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:

xa xa 2

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

y x n h y x y x h y x
n n n
h2
2

(10)

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


diferen\iale:
y f x ,y
(11)
Oprind numai doi termeni din (10) se poate
scrie:

y x n h y x y x h
n n

y x n h y x f x
n n ,y x h.
n

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

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

y n 1 y n y n h y n h 2

(14)
Metoda poate fi considerat[ drept cheia de
bolt[ a majorit[\ii metodelor de solu\ionare
numeric[ a ecua\iilor diferen\iale.
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, a, b astfel @nc`t
expresia:

y n1 y n ak 1 bk 2
(15)
cu:
k 1 h f x n ,y n ,
k 2 h f x n a h,y n b k 1 .
(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.
Se fac urm[toarele observa\ii:
a) Dac[:
1 1
a b 1,ba ,b b
2 2
atunci (15) reprezint[ dezvoltarea @n serie
Taylor, oprind primii trei termeni, a func\iei
considerate.
b) Dac[:
1 1
a ,b ,a 1,b 1
2 2
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.
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):

y n 1 y n
1
6

k1 2k 2 2k 3 k 4 ,
k 1 h f xn yn ,
1 1
k h f x h,y k ,
2
n
2
n
2
1

1 1
k h f x h,y k ,
3
n
2
n
2
2

k 4 h f x n h,y n k 3
(17)
#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.

xn yn Exact Eroare Eroare %

1.00 1.0000 1.0000 0.0000 0.00


1.10 1.2337 1.2337 0.0000 0.00
1.20 1.5527 1.5527 0.0000 0.00
1.30 1.9937 1.9937 0.0000 0.00
1.40 2.6116 2.6117 0.0001 0.0038
1.50 3.4902 3.4904 0.0002 0.0076

Tab. 7 Valorile ob\inute pentru h=0.1


xn yn Exact Eroare Eroare %

1.00 1.0000 1.0000 0.0000 0.00


1.10 1.2337 1.2337 0.0000 0.00
1.20 1.5527 1.5527 0.0000 0.00
1.30 1.9937 1.9937 0.0000 0.00
1.40 2.6117 2.6117 0.0000 0.00
1.50 3.4903 3.4904 0.0001 0.0028

Tab. 8 Valorile ob\inute pentru h=0.05


xn yn Exact Eroare Eroare %

1.00 1.0000 1.0000 0.0000 0.00


1.10 1.2337 1.2337 0.0000 0.00
1.20 1.5527 1.5527 0.0000 0.00
1.30 1.9937 1.9937 0.0000 0.00
1.40 2.6117 2.6117 0.0000 0.00
1.50 3.4903429 3.4904 0.0000571 0.0016

Tab. 9 Valorile ob\inute pentru h=0.01


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
4h

y *
y 2yn y 2 y n2 ,n3
n1 n 3
3 n1

(18)
unde:
y n

f x ,y ,
n n

f x ,

y n 1 ,y
n 1 n1

f x .

y n 2 ,y
n 2 n 2

(19)
Pasul corector
h
y y y 4 y y n 1 ,
3
n 1 n 1 n 1 n

(20)
unde:
y n 1

f x n 1 ,y *
n 1
(21)
Se remarc[ faptul c[ valorile pentru y0, y1, y2 ]i
y3 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.

S-ar putea să vă placă și