500 likes | 649 Vues
METODE NUMERICE DE SOLU|IONARE A ECUA|IILOR DIFEREN|IALE - PREZENTARE GENERAL{. INTRODUCERE.
E N D
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.
#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: ,
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)
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: (6)
unde: Fig. 2 Modalitatea de g[sire a punctului (x1,y1) ce aproximeaz[ punctul (x1,y(x1)) .
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: (7) a c[rui reprezentare grafic[ se prezint[ @n fig. 3.
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:
xn yn 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. 1 Valorile ob\inute pentru h=0.1
xn yn 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. 2 Valorile ob\inute pentru h=0.05
xn yn 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 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: (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
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[.
xn yn 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. 4 Valorile ob\inute pentru h=0.1
xn yn 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. 5 Valorile ob\inute pentru h=0.05
xn yn 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 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: (9)
Pentru a apropia forma (9) de problema curent[, dac[ se consider[ cazul @n care a=xn ]i x=xn+h, se ob\ine: (10) Dac[ se presupune c[ func\ia y(x) este solu\ia ecua\iei diferen\iale: (11)
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: (13) .
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.
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: (15)
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.
Se fac urm[toarele observa\ii: a) Dac[: atunci (15) reprezint[ dezvoltarea @n serie Taylor, oprind primii trei termeni, a func\iei considerate.
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.
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)
xn yn 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 #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
xn yn 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. 8 Valorile ob\inute pentru h=0.05
xn yn 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 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 (18) unde:
Pasul corector (20) unde: (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.