Sunteți pe pagina 1din 74

Material didactic pentru orele de laborator

Maria CAPCELEA, Titu CAPCELEA, Ion SECRIERU

METODE I ALGORITMI LA ANALIZA NUMERIC

1.5

0.5
1

f( z ) L( z ) y j 0

g( z ) L( z ) y j

0.5

0.5

0.5

0 z,z,x j

0.5

0.5

0 z,z,x j

0.5

UNIVERSITATEA DE STAT DIN MOLDOVA


FACULTATEA DE MATEMATIC I INFORMATIC CATEDRA MATEMATICA APLICAT

MARIA CAPCELEA, TITU CAPCELEA, ION SECRIERU

METODE I ALGORITMI LA ANALIZA NUMERIC

Aprobat i recomandat de Consiliul Facultii de Matematic i Informatic

Chiinu, 2009 CEP USM

CZU 519.6 (075.8) S

Recomandat de Catedra Matematica Aplicat

Recenzent Boris HNCU, dr., conf. univ.

Descrierea CIP a Camerei Naionale a Crii Capcelea, Maria Metode i algoritmi la Analiza Numeric / Maria Capcelea, Titu Capcelea, Ion Secrieru; Universitatea de Stat din Moldova. Facultatea de Matematic i Informatic. Catedra Matematica Aplicat. Chiinu: CEP USM, 2009. 73p. Bibliogr. p. 72 (28 titluri) ISBN 9975-70-900-2 50 ex. 519.6 (075.8)

Maria Capcelea, Titu Capcelea, Ion Secrieru, 2009 USM, 2009 ISBN 9975-70-900-2

Cuprins

CUPRINS
INTRODUCERE......................................... 5 LUCRAREA DE LABORATOR 1 Aproximarea valorilor funciilor cu ajutorul dezvoltrii n serii de puteri................................... 7 1.I. Scopul lucrrii..................................................................7 1.II. Prezentarea teoretic a lucrrii................................................................................... 7 Formularea problemei.............................................................................. 7 Descrierea algoritmului.............................................................................................................. 7 1.III. Modul de desfurare a lucrrii..................................................................................................... 11 Cerine fa de ndeplinirea lucrrii..........................................................11 Chestiuni de studiat.....................................................................................................................11 Probleme propuse spre rezolvare................................................................................................ 11 LUCRAREA DE LABORATOR 2 Aproximarea funciilor cu polinoame de interpolare...................................................................... 13 2.I. Scopul lucrrii..................................................................13 2.II. Prezentarea teoretic a lucrrii................................................................................... 13 Formularea problemei.............................................................................. 13 Interpolare polinomial pe reea neuniform.............................................................................. 13 Polinomul de interpolare sub forma lui Lagrange................................................................. 13 Algoritmul lui Neville-Aitken................................................................................................15 Polinomul de interpolare sub forma lui Newton cu diferene divizate.................................. 16 Interpolare polinomial pe reea uniform................................................................................. 18 Polinomul de interpolare sub forma lui Lagrange cu noduri echidistante............................. 18 Polinomul de interpolare sub forma lui Newton cu noduri echidistante................................19 A) Formula lui Newton de interpolare ascendent.......................................................... 19 B) Formula lui Newton de interpolare descendent........................................................ 21 2.III. Modul de desfurare a lucrrii..................................................................................................... 22 Cerine fa de ndeplinirea lucrrii..........................................................22 Chestiuni de studiat.....................................................................................................................23 Probleme propuse spre rezolvare................................................................................................ 23 LUCRAREA DE LABORATOR 3 Aplicarea formulelor de cuadratur la calculul aproximativ al integralei definite...................... 24 3.I. Scopul lucrrii..................................................................24 3.II. Prezentarea teoretic a lucrrii................................................................................... 24 Formularea problemei.............................................................................. 24 Formula dreptunghiurilor................................................................................25 Formula trapezelor.................................................................................. 25 Formula lui Simpson (parabolelor)................................................................................. 25 Algoritmi cu control automat al pasului de integrare................................................................. 26 Formule de cuadratur de tip Gauss................................................................................... 29 Formula de cuadratur a lui Gauss-Legendre........................................................................ 30 Formula de cuadratur a lui Gauss-Chebyshev......................................................................31 3.III. Modul de desfurare a lucrrii..................................................................................................... 31 Cerine fa de ndeplinirea lucrrii..........................................................31 Chestiuni de studiat.....................................................................................................................32 Probleme propuse spre rezolvare................................................................................................ 32 LUCRAREA DE LABORATOR 4 Rezolvarea numeric a ecuaiilor algebrice i transcendente......................................................... 33 4.I. Scopul lucrrii..................................................................33 4.II. Prezentarea teoretic a lucrrii................................................................................... 33 Formularea problemei.............................................................................. 33 Separarea rdcinilor prin metoda tabelrii funciei............................................................... 33

Cuprins

Separarea grafic a rdcinilor .................................................................................. 34 Metoda dihotomiei.................................................................................. 34 Metoda lui Newton................................................................. 35 Metoda lui Newton modificat................................................................................... 37 Metoda secantelor (Newton discret)..... 38 Metoda coardelor (interpolrii liniare, falsei poziii, secantelor cu un capt fixat)39 Metoda iteraiei simple... 41 Calculul rdcinilor ecuaiilor polinomiale 42 Calculul rdcinilor multiple.. 43 4.III. Modul de desfurare a lucrrii..................................................................................................... 43 Cerine fa de ndeplinirea lucrrii..........................................................43 Chestiuni de studiat.....................................................................................................................44 Probleme propuse spre rezolvare................................................................................................ 44 LUCRAREA DE LABORATOR 5 Rezolvarea numeric a sistemelor de ecuaii algebrice liniare....................................................... 46 5.I. Scopul lucrrii..................................................................46 5.II. Prezentarea teoretic a lucrrii................................................................................... 46 Formularea problemei.............................................................................. 46 Metode directe................................................................ 46 Metoda eliminrii a lui Gauss 46 Strategii de pivotare n rezolvarea SEAL.. 48 Aplicaii ale algoritmilor de eliminare... 49 A) Rezolvarea SEAL cu matrice rare 49 B) Calculul determinantului i a inversei matricei A 50 Metoda factorizrii LU...51 Metoda factorizrii Doolittle. 51 Metoda factorizrii Crout.. 51 Metoda factorizrii Cholesky 52 Metode iterative.................................................................................. 55 Metode staionare... 55 Metoda lui Jacobi.............. 55 Metoda lui Gauss-Seidel... 56 O metod de stocare compact a matricei simetrice. 58 Metode nestaionare... 59 Metoda pasului descendent (coborrii rapide)...... 59 Metoda gradienilor conjugai... 61 5.III. Modul de desfurare a lucrrii..................................................................................................... 63 Cerine fa de ndeplinirea lucrrii..........................................................63 Chestiuni de studiat.....................................................................................................................63 LUCRAREA DE LABORATOR 6 Metoda lui Runge-Kutta de rezolvare a problemei lui Cauchy...................................................... 64 6.I. Scopul lucrrii..................................................................64 6.II. Prezentarea teoretic a lucrrii................................................................................... 64 Formularea problemei.............................................................................. 64 Descrierea algoritmilor................................................................... 64 Monitorizarea erorilor locale de trunchiere pe parcursul procesului de integrare...................... 66 Algoritmi cu controlul automat al pasului.............. 67 6.III. Modul de desfurare a lucrrii..................................................................................................... 70 Cerine fa de ndeplinirea lucrrii..........................................................70 Chestiuni de studiat.....................................................................................................................71 Probleme propuse spre rezolvare................................................................................................ 71 REFERINE............................................................................................................................................ 72

Introducere INTRODUCERE

Aplicarea tehnicii computaionale n cele mai diverse domenii ale activitii umane astzi a devenit un lucru obinuit. ns utilizarea eficient a calculatorului la rezolvarea problemelor aplicative presupune identificarea unor metode de rezolvare a acestora, descrierea lor ntr-un limbaj algoritmic, apoi implementarea i testarea pe calculator. Metodele matematice ce stau la baza algoritmilor respectivi sunt studiate n cadrul cursului Analiza numeric, disciplin obligatorie n planurile de nvmnt la toate specialitile ce in de Matematica aplicat i Informatic. Lucrarea de fa se adreseaz, n primul rnd, studenilor din nvmntul universitar pentru a servi ca material didactic la ndeplinirea lucrrilor de laborator prevzute n procesul de studiu al cursului Analiza numeric. Menirea lor este de a contribui la nsuirea mai profund a metodelor de rezolvare aproximativ a problemelor matematice, ct i a formrii gndirii algoritmice, deprinderilor de programare i analiz a rezultatelor obinute. n lucrare sunt incluse lucrri de laborator ce se refer la urmtoarele compartimente: metode numerice de aproximare a funciilor, construirea i aplicarea formulelor de cuadratur, metode aproximative de rezolvare a ecuaiilor neliniare, metode exacte i aproximative de rezolvare a sistemelor de ecuaii liniare algebrice, metode de rezolvare aproximativ numeric a problemei lui Cauchy. Compartimentele menionate corespund Curriculumului disciplinei Analiza numeric pentru specialitile matematice, ct i cursului Calcul numeric pentru specialitile informatice. Materialul este structurat astfel, nct fiecare lucrare conine trei compartimente. Anume, n partea I sunt formulate scopul i obiectivele lucrrii. Partea a II-a conine formularea strict a problemei i metodele principale de rezolvare a acesteia cu formulele respective de calcul i de estimare a erorii. Pentru majoritatea metodelor, ntr-o seciune special, se face o analiz a proprietilor numerice pe care le posed. Ultimul compartiment include cerinele principale de ndeplinire a lucrrilor de laborator i un set de variante de probleme concrete matematice pentru fiecare lucrare. O atenie deosebit se acord aspectelor algoritmice i organizrii procesului de calcul. Astfel, metodele numerice, descrise n lucrare, sunt concretizate sub form de algoritmi, prezentai ntr-un meta-limbaj extrem de apropiat de implementarea direct ntr-un limbaj de programare de nivel nalt. Menionm faptul c n prezent exist sisteme mai performante de utilizare a metodelor aproximative de rezolvare a problemelor matematice studiate n aceast lucrare, ct i ale altor metode din Analiza numeric. ns aspectul programrii nemijlocite a metodelor pe probleme

Introducere

concrete considerm c este o etap absolut necesar la pregtirea specialitilor de o calificare nalt n domeniul matematicii aplicate. n lucrare prezentm i cteva informaii, utile pentru studeni, referitoare la modul de desfurare a laboratorului la Analiza numeric. Fiecare lecie de laborator are o anumit tematic. Activitatea pe care trebuie s o desfoare fiecare student n cadrul leciei presupune dou pri importante. Prima parte const n exploatarea unor programe demonstrative ce ilustreaz tematica lucrrii. A doua parte a leciei const n implementarea unora dintre algoritmii studiai n cadrul temei respective. Implementarea se va face ntr-un limbaj de programare de nivel nalt, n concordan cu pseudocodul prezentat n lucrare. n urma analizei comportamentului numeric al algoritmilor implementai, studentul trebuie s redacteze un referat, conform cerinelor fiecrei lucrri, pe care l va prezenta profesorului n momentul susinerii lucrrii de laborator. Fiecare tem de laborator este apreciat cu dou note: o not pentru referat i o not pentru implementarea algoritmilor studiai n lucrarea respectiv ntr-un limbaj de programare de nivel nalt. Referatul va conine urmtoarele compartimente: numele studentului i grupa din care face parte; numele cadrului didactic ndrumtor; titlul lucrrii, scopul lucrrii, principiul algoritmilor, pseudocodul algoritmilor, rezultate experimentale, grafice etc. (conform cerinelor din ndrumar), analiza rezultatelor i concluzii. n principiu, cerinele pot fi modificate de ctre profesor. n ncheiere, autorii mulumesc colegilor lor - dnei Galina Rbacova, dr., conf. univ., i dlui Vladimir Paiuc, dr., conf. univ., pentru interesul acordat i n special pentru comentariile i observaiile constructive fcute pe marginea lucrrii. Autorii

Lucrarea de laborator 1 APROXIMAREA VALORILOR FUNCIILOR CU AJUTORUL DEZVOLTRII N SERII DE PUTERI 1.I. Scopul lucrrii

LUCRAREA DE LABORATOR 1

Studiul unui algoritm pentru sumarea numeric a seriilor de puteri cu controlul erorii de trunchiere i implementarea acestuia ntr-un limbaj de programare de nivel nalt. 1.II. Prezentarea teoretic a lucrrii Formularea problemei Funcia y = f ( x) se exprim prin funciile elementare:
cos x, sin x, e x ( x ) .

(1.1)

Pentru o valoare x0 a argumentului x s se aproximeze cu exactitatea > 0 valorile funciilor indicate n relaia (1.1), utiliznd n acest scop formulele pentru dezvoltarea lor n serii de puteri, apoi, n baza valorilor obinute, s se calculeze valoarea aproximativ y0 = f ( x0 ) a funciei iniiale. Descrierea algoritmului Dezvoltrile n serii de puteri ale funciilor indicate n relaia (1.1) sunt:
cos x = (1) j x 2 j (2 j )!, sin x = (1) j x 2 j +1 (2 j + 1)!, e x = x j j !, x .
j =0 j =0 j =0

(1.2)

Reprezentrile din relaia (1.2) permit evaluarea valorilor funciilor menionate prin reducerea la operaii aritmetice elementare (aditive i multiplicative). Calculul aproximativ al sumei unei serii presupune trunchierea unui proces de sumare infinit. Dac irul numeric {xk }k 0 converge ctre limita x , atunci pentru orice > 0 exist un numr natural n , astfel nct x xk , pentru orice k > n . n consecin, pentru o exactitate impus , exist un rang finit n , astfel nct xn reprezint o aproximaie satisfctoare pentru limita x . Rezult c, dup evaluarea unui numr n suficient de mare de termeni, ultimul poate fi adoptat ca soluie numeric cu o eroare de trunchiere dependent de acest n . Deoarece seriile de puteri corespunztoare funciilor cosinus i sinus sunt alternante, iar irurile valorilor absolute ale termenilor sunt monoton descresctoare, conform criteriului lui Leibniz, eroarea de trunchiere este majorat de modulul primului termen neglijat. n realitate, ns, erorile de rotunjire i modul de sumare a seriei (de la stnga spre dreapta, fr a ine cont de mrimea fiecrui termen) pot genera o eroare de calcul mult mai mare dect cea indicat de criteriul lui Leibniz (a se vedea, de exemplu, [28, p.22]). De aceea, n procesele de calcul ale valorilor funciilor cu ajutorul dezvoltrii n serii de puteri, este necesar ntreprinderea unor msuri speciale pentru a evita pierderi semnificative n exactitate. ntruct pentru eroarea absolut a mrimii x j are loc relaia ( x j ) = x j ( x j ) = j x j ( x) (la ridicarea la putere a unui numr aproximativ eroarea lui relativ se nmulete la exponenta puterii), n cazul n care nu se ndeplinete inegalitatea x < 1 , eroarea absolut poate deveni inacceptabil de mare. Prin urmare,

8 influena erorilor de rotunjire se va diminua semnificativ dac x < 1 .

Lucrarea de laborator 1

Utiliznd paritatea (imparitatea) funciilor cosinus i sinus cos x = cos x , sin x = m sin x , m = sign x , dar i egalitatea e x e x = 1 , se reduce calculul valorilor funciilor din relaia (1.1) pentru un argument arbitrar la calculul valorilor acestora pentru un argument nenegativ. Deoarece la sumarea seriilor menionate eroarea de calcul va fi esenial mai mic dac x < 1 , e important a reduce calculul valorilor funciilor cos x i sin x de argument nenegativ la argument t [0; 4] , utiliznd n acest scop formule de reducere, iar calculul valorilor funciei e x - la argument t [0;1) . Dup aceast reducere sunt utilizate egalitile definite de relaia (1.2). n cele ce urmeaz, vom explica n detalii procesul de calcul al valorilor funciilor indicate n relaia (1.1). Pentru funciile cos x i sin x reducerea menionat se efectueaz consecutiv prin diminuarea argumentului pn la valorile x < 2 , x < , x < 2, x < 4 . n acest scop, este utilizat funcia [ x ] ce calculeaz partea ntreag a argumentului, precum i urmtoarele formule de reducere:
cos(2 n + x) = cos x; cos( x) = cos x; sin(2 n + x) = sin x; sin( x) = sin x (n ) .

Dac x ( 4; 2) , atunci se efectueaz reducerea argumentului pn la mrimea 2 x n timp ce calculul cosinusului (sinusului) se reduce la calculul sinusului (cosinusului):
cos( 2 x) = sin x; sin( 2 x) = cos x .

De exemplu, pentru funcia cos x i x = 7.6 (m = 1) efectum urmtoarele calcule:


n = [ 7.6 2 ] = [3.8] = 3; x 2 n = 1.6 > ; m = 1; x = 0.6 > 2;

x = 0.4 > 4; m = 1; t = 2 x = 0.1 .

Prin urmare, cos 7.6 = sin 0.1 i n continuare se calculeaz sinusul conform formulei pentru dezvoltarea n serie de puteri. Se presupune c argumentul este definit n radiani. Dac acesta este definit n grade, atunci el se transform n radiani prin nmulirea cu mrimea 180 . n calculul valorilor funciilor cost i sin t (t (0; 4] ; cazul t = 0 este trivial i n algoritm se descrie separat) cu exactitatea > 0 se utilizeaz egalitile corespunztoare din relaia (1.2), iar procesul de sumare se ncheie cnd pentru un j se ndeplinete inegalitatea [24, p.99; 25] a j < , unde

a j = (1) j t 2 j (2 j )! (pentru funcia cosinus) sau a j = (1) j t 2 j +1 (2 j + 1)! (pentru funcia sinus). Sumarea

seriei pentru funcia cosinus se face prin formulele recurente [25, p.29]: S0 = 1, a0 = 1, a j = a j 1 t 2 ((2 j 1)2 j) ,
S j = S j 1 + a j , j = 1, 2,... , iar a seriei pentru funcia sinus prin formulele: S0 = t , a0 = t, a j = a j 1 t 2 (2 j (2 j + 1)) , S j = S j 1 + a j , j = 1, 2,... .

Pseudocodul algoritmului Prezentm algoritmii de calcul ai valorilor funciilor cos x i sin x cu o eroare de trunchiere mai mic dect .
Date de intrare: x0 (de tip real) punctul n care se calculeaz valoarea funciei cos x sau sin x ;

Lucrarea de laborator 1
(de tip real) exactitatea de calcul. Date de ieire: x0 (de tip real) punctul n care se calculeaz valoarea funciei cos x sau sin x ;
s (de tip real) valoarea funciei cos x sau sin x n punctul x0 ; k (de tip ntreg) numrul de termeni sumai; real x, s ntreg k , m, n, p (calculul valorii cos x0 ) (calculul valorii sin x0 )
dac x0 > atunci { dac x 2 atunci {n := [ x 2 ] ; x := x 2 n} dac x atunci { x := x ; m := m } dac x 4 atunci dac x 2 atunci {x := x; m := m} dac x0 > atunci {

m := sign x0 ; x := x0

dac x 2 atunci {n := [ x 2 ] ; x := x 2 n} dac x atunci { x := x ; m := m } dac x 2 atunci x := x dac x 4 atunci

m := sign x0 ; x := x0

{x := 2 x; s := x; a := x 6; p := 2}
3

{x := 2 x; s := 1; a := x 2 2; p := 1}
altfel {s := x; a := x3 6; p := 2}

altfel {s := 1; a := x 2 2; p := 1}

k := 1
execut {

k := 1
execut {
2

s := s + a; k := k + 1 p := p + 2; a := ax ( p ( p + 1))

s := s + a; k := k + 1 p := p + 2; a := ax 2 ( p ( p + 1))

} ct timp a

} ct timp a

s := ms
} altfel s := 1; k := 0 scrie x0 , s, k

s := ms
} altfel s := x0 ; k := 0 scrie x0 , s, k

Calculul valorii funciei e x pentru x 0 se efectueaz n modul urmtor: Fie n - partea ntreag a lui x i t = x n . Evident, t [0;1) . Dac t = 0 i n = 0 , atunci e x = 1 , iar dac t = 0 i n 1 , atunci e x = en = e ... e . Pentru t (0;1), n 0 avem e x = e n et i et se calculeaz cu
de n ori

exactitatea > 0 , conform formulei corespunztoare din relaia (1.2), utiliznd suplimentar urmtoarea relaie pentru restul seriei (a se vedea [24, p.89]) et S p < a p t p , S p = a j , a j = t j j !, p = 1,2,... . Astfel,
j =0 p

sumarea se va efectua pn la acea valoare p a lui p , pentru care se va satisface relaia a p t p < .

Procesul sumrii este comod de organizat n modul urmtor [25, p.27]: S0 = 1, a0 = 1, a j = a j 1 t j ,


S j = S j 1 + a j , j = 1, 2,... .

Pseudocodul algoritmului
Date de intrare: x0 (de tip real) punctul n care se calculeaz valoarea funciei e x ; (de tip real) exactitatea de calcul. Date de ieire: x0 (de tip real) punctul n care se calculeaz valoarea funciei e x ;

exp (de tip real) valoarea funciei e x n punctul x0 ; k + 1 (de tip ntreg) numrul de termeni sumai;

10
ntreg k , m, n real x, t , exp, s , a

Lucrarea de laborator 1

m := sign x0 ; x := x0 ; n := [ x ] ; t := x n; exp := 1; s := 1
pentru i := 1, n execut s := s e dac t 0 atunci {

a := 1; k := 0

execut {

k := k + 1; a := a t k ; exp := exp + a

} ct timp at k

exp := exp s dac m = 1 atunci exp := 1 exp scrie x0 , exp, k + 1

ntruct funciile tgx = sin x cos x , ctgx = cos x sin x , sh x = (ex e x ) 2, ch x = (ex + e x ) 2, th x = sh x ch x sunt dependente de funciile indicate n relaia (1.1), se admite ca expresia analitic a lui f ( x) s conin unele dintre acestea. Pentru a evita pericolul pierderilor n exactitate din cauza efecturii diferenei a dou mrimi apropiate ca valoare, calculul valorilor funciilor sh x i th x pentru valori x 0 se va face n baza formulei sh x = x 2 j +1 (2 j + 1)! (n locul celei corespunztoare funciei e x ). Totodat, pentru valorile
j =0

x < 0 (dar apropiate de zero) se va ine cont i de egalitatea sh( x) = shx .

Analiza algoritmului Eroarea numeric comis n calculul aproximativ al valorilor funciilor elementare din relaia (1.1), utiliznd dezvoltarea n serie de puteri, const din dou componente: eroarea de rotunjire (datorat reprezentrii finite, aproximative a numerelor reale n sistemele de calcul) i eroarea de trunchiere (datorat aproximrii finite a unor procese infinite). n cazul cnd numrul de termeni ai seriei este fixat, eroarea de trunchiere va depinde direct proporional de valoarea argumentului t . Au loc urmtoarele estimaii pentru eroarea de trunchiere a seriilor utilizate n lucrare [24, p.89; p.95]:
cos sin exp cos t S n t 2( n +1) (2(n + 1))!, sin t S n t 2 n + 3 (2n + 3)!, t [0; 4]; et Sn < t n +1 (n !n), t [0;1] ,
n n n

sin unde Sncos = (1) j t 2 j (2 j )!, S n = (1) j t 2 j +1 (2 j + 1)!, Snexp = t j j ! . Modul n care eroarea de trunchiere j =0 j =0 j =0

depinde de n caracterizeaz viteza de convergen a algoritmilor descrii. n procesele de calcul definite de relaia (1.2), eroarea de trunchiere este cu att mai mic cu ct numrul de termeni calculai este mai mare. Pe de alt parte, efortul de calcul pentru evaluarea valorii funciei crete odat cu mrirea exactitii impuse, dar i cu creterea modulului variabilei t . Studiul comportamentului numeric al algoritmilor elaborai demonstreaz c atunci cnd t < 4 , eroarea de trunchiere este mic ca valoare i este comparabil cu eroarea de rotunjire chiar i la sumarea unui numr relativ mic de termeni ai seriei.

Lucrarea de laborator 1 3.III. Modul de desfurare a lucrrii Cerine fa de ndeplinirea lucrrii

11

n baza pseudocodurilor descrise n seciunea II a lucrrii, s se elaboreze un program destinat calculului valorilor funciilor elementare din relaia (1.1), utiliznd dezvoltrile n serii de puteri pentru acestea. n baza valorilor obinute, s se calculeze valoarea aproximativ a funciei f ( x) , expresia analitic a creia conine funciile elementare din relaia (1.1). n plus, pentru fiecare dintre seriile date de relaia (1.2) i fiecare valoare xi a variabilei independente x , programul va calcula i va afia suma parial a seriei i eroarea absolut de trunchiere pentru diferite ordine n . Se va reprezenta grafic variaia erorii n funcie de numrul de termeni sumai. Se va analiza viteza de convergen a algoritmului pentru diferite valori xi . Programul de calcul s se testeze pe exemplele propuse la sfritul lucrrii de laborator. Este necesar s se asigure (n caz de necesitate) afiarea valorilor funciei f ( x) ntr-un ir de puncte
xi , i = 1, N , definite de ctre utilizator.

S se extrag la tipar tabelul


i 1 N xi yi yei di kmax

n care: i - numrul de rnd; xi - valoarea argumentului; yi - valoarea funciei f ( x) n punctul xi , calculat de program (utiliznd algoritmul dezvoltrii n serie de puteri); yei - valoarea funciei n punctul
xi , calculat cu ajutorul funciilor standard ale mediului de programare; d i = yi yei ; kmax - numrul

maximal de termeni sumai din seriile folosite. Programul trebuie s dea rezultat pentru orice valoare a argumentului x . Dac pentru un careva xi valoarea funciei f ( x) nu exist sau are loc suprancrcarea, atunci se va extrage la tipar comunicarea respectiv. Chestiuni de studiat 1. Precizai modalitile prin care poate fi diminuat eroarea de calcul la sumarea numeric a unei serii. 2. S se fac o analiz experimental a timpului de calcul al valorilor funciilor elementare din relaia (1.1), utiliznd dezvoltarea n serie de puteri, n funcie de exactitatea de calcul impus i de mrimea argumentului x0 . 3. S se reprezinte grafic variaia erorii de calcul n funcie de numrul de termeni sumai ai seriei. Probleme propuse spre rezolvare
1. f ( x) = 4sin x tgx + e 2 x ; 2. f ( x) = 1 sin x + e x cos x 4e x ; 3. f ( x) = sh x + cos x (1 cos x); 4. f ( x) = 12e x + sin 2 x (0.5 cos x); 5. f ( x) = tgx + ctgx + e x (e x + e x );
14. f ( x ) = e x cos x + 2 chxshx sin x; 15. f ( x ) = e 2 x cos x 2 chxshx sin x; 16. f ( x ) = cos 2 x + 4tgx 12 e x ; 17. f ( x ) = (cos 2 x + sin 2 x ) ( e x + 1);
2

18. f ( x ) = e 2 x sin 2 x + chx cos 2 x;

12
6. f ( x) = ctgx + (4ex e x ) (2sin x); 7. f ( x) = 1 (tgx ctgx) + 2ex 1; 8. f ( x) = (2sin x 1) (cos x ex ); 9. f ( x) = (2tgx 1) (2 e x ); 10. f ( x) = 4 sin x + (ex sin x) cos x ; 11. f ( x) = extgx sin 2x (0.4 cos x); 12. f ( x) = sin 2 x + 2ctgx + 12e x ; 13. f ( x) = 2 + ex + (3 + 5sin x) (3sin x 1);

Lucrarea de laborator 1
19. f ( x) = e3x sin 2x + shx cos x; 20. f ( x) = ex cos4x + chx cos2 x; 21. f ( x) = e x sin x + chx 2sin x (e x + e2 x ); 22. f ( x) = e2 x cos x 3sh2x 2sin x; 23. f ( x) = e2 x cos2 x + 4ch2x 2chx sin x; 24. f ( x) = e3x ch2x + 2cos2 x 4 + 2chx sin x; 25. f ( x) = e2 x cos x + 4ch2 x 3shx sin 2 x; 26. f ( x) = e x cos 2x ch2 x 2shx sin x.

Lucrarea de laborator 2

13

LUCRAREA DE LABORATOR 2
APROXIMAREA FUNCIILOR CU POLINOAME DE INTERPOLARE 2.I. Scopul lucrrii Studiul unor algoritmi de aproximare a funciilor continue cu polinomul algebric de interpolare i implementarea acestora ntr-un limbaj de programare de nivel nalt. 2.II. Prezentarea teoretic a lucrrii Formularea problemei Fie pentru funcia continu f :[ x0 ; xn ] cunoscute valorile ei yi = f ( xi ) n nodurile reelei
:= {xi }in= 0 , a x0 < x1 < ... < xn b (a, b ) . Se cere de aproximat funcia f ( x) pe segmentul [ x0 ; xn ] cu un

polinom algebric de interpolare, adic de construit polinomul algebric pm ( x) de grad minimal m , care n nodurile xi , i = 0, n , ia valori egale cu yi :
pm ( xi ) = yi , i = 0, n .

(2.1)

Folosind reprezentarea analitic a polinomului obinut, s se calculeze valoarea aproximativ a funciei f ( x) n punctul z [ x0 ; xn ], z xi , i = 0, n . Problema de interpolare formulat are soluie unic [2-5; 8; 16; 20-21; 23-24]: pentru orice funcie continu f ( x) i orice sistem de noduri distincte xi , i = 0, n , exist un singur polinom algebric pm ( x) de grad m n ce satisface condiiile (2.1). n funcie de necesitate, n practic sunt utilizate mai multe forme de reprezentare (algoritmi de construcie) ale polinomului de interpolare, unele dintre care le vom indica n continuare. Interpolare polinomial pe reea neuniform Polinomul de interpolare sub forma lui Lagrange Aceast form a polinomului de interpolare este definit prin relaia [3-5; 8; 23; 24, p.529]:
Ln ( x) = yi li ( x) ,
i =0 n

(2.2)

n care li ( x) =

j = 0, j i

((x x )
n j

( xi x j ) ) sunt numite polinoamele fundamentale de interpolare Lagrange.

Pseudocodul algoritmului
Date de intrare: z (de tip real) punctul n care se calculeaz valoarea polinomului de interpolare; n (de tip ntreg) gradul maximal al polinomului de interpolare; x[n] - tabloul (cu elemente de tip real; indici de la 0 la n ) nodurilor de interpolare;

y[n] - tabloul (cu elemente de tip real; indici de la 0 la n ) valorilor funciei f ( x) n nodurile de interpolare.
Date de ieire: z (de tip real) punctul n care se calculeaz valoarea polinomului de interpolare; p (de tip real) valoarea polinomului de interpolare n punctul z ; ntreg i, j real t , p

p := 0
pentru i := 0, n execut {

t := 1

14
pentru j := 0, n execut { dac j i atunci t := t ( z x j ) ( xi x j ) }

Lucrarea de laborator 2

p := p + t yi
} scrie z, p

Analiza algoritmului n cazul n care f ( x) este continu pe [ x0 ; xn ] i mai posed i derivate continui pn la ordinul n + 1 inclusiv (vom utiliza notaia f ( x) C n +1[ x0 ; xn ] ), este adevrat urmtoarea estimaie pentru eroarea
EnL ( x) := f ( x) Ln ( x) a procesului de interpolare n punctul z [ x0 ; xn ] [2-3; 8; 10; 16; 23; 24, p.537]: EnL ( z ) n ( z ) M n +1 (n + 1)! ,

unde M n +1 = max f ( n +1) ( x) , n ( z ) = ( z x0 )( z x1 ) ... ( z xn ) . Analiza comportamentului funciei n ( x)


x[ x0 ; xn ]

permite s concluzionm c eroarea interpolrii EnL ( z ) va fi n medie mai mare dac punctul z se afl n vecintatea extremitilor segmentului [ x0 ; xn ] [21, p.63]. Efortul de calcul pentru evaluarea polinomului Lagrange n punctul z conform formulei (2.2), este de 4n 2 + 6n + 2 operaii aritmetice (aditive i multiplicative). Complexitatea de ordinul O(4n 2 ) uneori este inacceptabil n practic i poate s conduc la apariia unor erori de calcul mari. Din aceast cauz au fost elaborai ali algoritmi de calcul al valorilor polinomului de interpolare. Dac se calculeaz valorile polinomului Lagrange ntr-un numr mare de puncte (diferite de nodurile reelei de interpolare), atunci este avantajoas urmtoarea form:
Ln ( x) = ( x x j ) ( ri ( x xi ) ) ,
j =0 i =0 n n

(2.3)

n care coeficienii ri (i = 0, n) sunt dai de relaia ri = yi formula (2.3) admite urmtorul pseudocod:

j = 0, j i

( xi x j ) . Procesul de calcul descris de

Date de intrare: z (de tip real) punctul n care se calculeaz valoarea polinomului de interpolare; n (de tip ntreg) gradul maximal al polinomului de interpolare; x[n] - tabloul (cu elemente de tip real; indici de la 0 la n ) nodurilor de interpolare;

y[n] - tabloul (cu elemente de tip real; indici de la 0 la n ) valorilor funciei f ( x) n nodurile de interpolare.
Date de ieire: z (de tip real) punctul n care se calculeaz valoarea polinomului de interpolare; p (de tip real) valoarea polinomului de interpolare n punctul z ; ntreg i, j real t , p, r

t := 1; p := 0
pentru j := 0, n execut t := t ( z x j ) pentru i := 0, n execut {

r := yi

pentru j := 0, n execut { dac j i atunci r := r ( xi x j ) }

p := p + r ( z xi ) p := p t
}

Lucrarea de laborator 2
scrie z, p

15

Spre deosebire de cazul n care este utilizat formula (2.2), calculul valorii polinomului Ln ( x) , conform relaiei (2.3), necesit 2n 2 + 7 n + 6 operaii aritmetice. Dac se efectueaz m evaluri, efortul global de calcul este de 2n 2 + (5m + 2)n + 6m operaii. Din punctul de vedere al eficienei spaiale, variantele (2.2) i (2.3) necesit fiecare un spaiu de memorie de ordin O(2n) . Algoritmul lui Neville-Aitken Calculul valorii aproximative a funciei ntr-un punct dat poate fi efectuat i fr a apela la forma analitic a polinomului Lagrange. Aceasta se poate efectua, de exemplu, utiliznd algoritmul lui NevilleAitken [2, p.12; 25, p.116]. Procedura iterativ de calcul utilizeaz pentru nceput dou noduri de interpolare, ca apoi treptat s includ n calcule noi noduri pn se obine precizia dorit. Fie Pj , j +1,..., j +i ( x) polinomul de interpolare construit pe nodurile distincte x j , x j +1 ,..., x j +i . Evideniem cazul i = 0 cnd vom considera c Pj ( x) = y j , j = 0, n . Polinoamele Pj , j +1,..., j +i ( x) satisfac relaia de recuren [2, p.12]:
Pj , j +1,..., j + i ( x) = ( ( x j + i x) Pj , j +1,..., j + i 1 ( x) + ( x x j ) Pj +1, j + 2,..., j + i ( x) ) ( x j + i x j ) .

(2.4)

Algoritmul lui Neville-Aitken presupune calculul consecutiv conform formulei (2.4) a elementelor evideniate cu bold din tabelul de mai jos:
x0 x1 x2 x3 xn3 xn 2 x n 1 xn y 0 = P0 P01 y 1 = P1 P1 2 y 2 = P2 P2 3 y 3 = P3 y n 3 = Pn 3 Pn - 3 , n - 2 y n 2 = Pn 2 P n - 2 , n -1 y n 1 = Pn 1 P n -1 , n y n = Pn P n - 2 , n -1 , n P n - 3 ,n - 2 , n -1 P n - 3 , n - 2 , n -1 , n P1 , ..., n P1 2 3 P01 2 P0 1 2 3 P 0 , ..., n -1 P 0 ,1 , ...,n

Coloanele evideniate ale tabelului se completeaz de la stnga spre dreapta. Fiecare element al coloanei se calculeaz recursiv n baza celor doi vecini din coloana precedent. Algoritmul admite urmtoarea reprezentare n pseudocod:
Date de intrare: z (de tip real) punctul n care se calculeaz valoarea polinomului de interpolare; n (de tip ntreg) gradul maximal al polinomului de interpolare; x[n] - tabloul (cu elemente de tip real; indici de la 0 la n ) nodurilor de interpolare;

y[n] - tabloul (cu elemente de tip real; indici de la 0 la n ) valorilor funciei f ( x) n nodurile de interpolare.
Date de ieire: z (de tip real) punctul n care se calculeaz valoarea polinomului de interpolare; yn (de tip real) valoarea polinomului de interpolare n punctul z ; ntreg i, j

16
pentru i := 1, n execut

Lucrarea de laborator 2

{ pentru j := n, i execut y j := ( x j x) y j 1 + ( z x j i ) y j scrie z, yn

( x j x j i ) }

Schema descris permite s evideniem un algoritm de calcul al valorii funciei f ( x) ntr-un punct dat z xi (i = 0, n) cu exactitatea dorit > 0 sau cu cea mai bun exactitate posibil pentru informaia avut. Vom nota Lm ( x) := P0,1,...,m ( x), m = 0, n . Pentru a descrie algoritmul menionat vom utiliza relaia
L Em ( x) Lm +1 ( x) Lm ( x) [20, p.48]. Astfel, mrimea m := P0,1,...,m +1 ( x) P0,1,...,m ( x) Lm +1 ( x) Lm ( x) poate fi L considerat ca o aproximaie a erorii interpolrii Em ( x) .

Se calculeaz succesiv valorile:

L0 ( x) := P0 ( x), L1 ( x) := P0,1 ( x), 0 := L1 ( x) L0 ( x) , L2 ( x) := P0,1,2 ( x) ,

1 := L2 ( x) L1 ( x) , L3 ( x) := P0,1,2,3 ( x), 2 := L3 ( x) L2 ( x) ,... . Dac pentru o valoare a numrului m (0 m < n) va

avea loc inegalitatea m < , atunci calculele se stopeaz i se consider f ( x) Lm +1 ( x) . n caz contrar, ( m , m = 0, n 1 ) se determin cel mai mic m pentru care m = min j i se consider f ( x) Lm +1 ( x) .
0 j n 1

Pseudocodul algoritmului
Date de intrare: z (de tip real) punctul n care se calculeaz valoarea polinomului de interpolare; n (de tip ntreg) gradul maximal al polinomului de interpolare; x[n] - tabloul (cu elemente de tip real; indici de la 0 la n ) nodurilor de interpolare;

y[n] - tabloul (cu elemente de tip real; indici de la 0 la n ) valorilor funciei f ( x) n nodurile de interpolare;

(de tip real) exactitatea de calcul dorit. Date de ieire: z (de tip real) punctul n care se calculeaz valoarea polinomului de interpolare; p (de tip real) valoarea polinomului de interpolare n punctul z ; er (de tip real) cea mai bun exactitate posibil pentru informaia avut; ntreg i, j , k
real d , t , p, er

er := 1; t := y0
pentru i := 1, n execut { pentru k := i ,1 execut { j := k 1; y j := yk + ( yk y j ) ( z xi ) ( xi x j ) }

d := y0 t ; t := y0
dac d < atunci { er := ; p := y0 ; se iese din ciclu } altfel { dac ( er < 0 sau d < er ) atunci { er := d ; p := y0 } } } scrie z, p, er

Analiza algoritmului Efortul de calcul necesar pentru realizarea algoritmului este de cel mult 3.5n 2 + 4.5n operaii aritmetice, iar din punct de vedere al eficienei spaiale necesit un spaiu de memorie de ordin O(2n) . Polinomul de interpolare sub forma lui Newton cu diferene divizate Aceast form a polinomului de interpolare are urmtorul aspect:
N n ( x) = y0 + f [ x0 ;...; xi ] ( x x j ) .
i =1 j =0 n i 1

(2.5)

Lucrarea de laborator 2 Relaia (2.5) utilizeaz diferenele divizate de ordinul k ale funciei f ( x) : f [ xi ;...; xi + k ]:= ( f [ xi +1 ;...; xi + k ] f [ xi ;...; xi + k 1 ]) ( xi + k xi ) (i, k ) .

17

(2.6)

n particular, pentru i = 0, k = 1, n obinem diferenele divizate din formula (2.5). Vom considera c
f [ x j ] = y j , j = 0, n .

Evaluarea valorii polinomului (2.5) se va efectua n modul urmtor: 1. Utiliznd definiia (2.6) se genereaz diferenele divizate. Vom ine cont c n procesul de construcie a polinomului particip efectiv doar diferenele divizate f [ x0 ;...; xi ], i = 1, n , de aceea restul diferenelor le vom considera ca date intermediare. Pentru a economisi memoria, vom amplasa diferenele divizate n tabloul n care iniial se pstrau valorile funciei f ( x) n noduri. Tabloul dat se va nnoi parial la calcularea diferenelor de ordin superior. Completarea tabloului se va face ncepnd cu ultimul element al acestuia. Astfel, la calcularea diferenelor divizate de ordinul I, elementul yn se va nlocui cu
f [ xn 1 ; xn ] , yn 1 - cu f [ xn 2 ; xn 1 ] .a.m.d. Elementul y0 rmne nemodificat. La calcularea diferenelor

de ordinul II, primele dou elemente ale tabloului rmn nemodificate, iar restul elementelor sunt nlocuite cu diferenele respective. n momentul n care a fost calculat diferena divizat de ordinul n , n locul vectorului iniial ( y0 ; y1 ;...; yn )T avem vectorul ( y0 ; f [x0 ; x1 ]; f [x0 ; x1; x2 ];... ...; f [ x0 ; x1 ;...; xn ])T . 2. Din motive de eficien, evaluarea polinomului de interpolare Newton n punctul z se realizeaz conform algoritmului (schemei) lui Horner [24, p.74; 25, p.24]. Pentru aceasta polinomul N n ( x) se scrie sub forma:
Nn ( x) = y0 + ( x x0 ) f [ x0 ; x1 ] + ( x x1 ) ( f [ x0 ; x1; x2 ] + ... + ( x xn2 ) ( f [ x0 ; x1;...; xn1 ] + ( x xn1 ) f [ x0 ; x1;...; xn ])...) .
n1

Vom afla valoarea lui N n ( x) n punctul z , calculnd succesiv mrimile:


bn := f [ x0 ; x1;...; xn ], bk := f [ x0 ; x1;...; xk ] + ( z xk )bk +1 , k = n 1,1, b0 = Nn ( x) := y0 + ( z x0 )b1 .

Pseudocodul algoritmului
Date de intrare: z (de tip real) punctul n care se calculeaz valoarea polinomului de interpolare; n (de tip ntreg) gradul maximal al polinomului de interpolare; x[n] - tabloul (cu elemente de tip real; indici de la 0 la n ) nodurilor de interpolare;

y[n] - tabloul (cu elemente de tip real; indici de la 0 la n ) valorilor funciei f ( x) n nodurile de interpolare.
Date de ieire: z (de tip real) punctul n care se calculeaz valoarea polinomului de interpolare; p (de tip real) valoarea polinomului de interpolare n punctul z ; ntreg i, k real p pentru i := 1, n execut { pentru k := n, i execut yk := ( yk yk 1 ) ( xk xk i ) }

p := yn
pentru i := n 1,0 execut p := yi + ( z xi ) p scrie z, p

Analiza algoritmului n cazul n care sunt cunoscute diferenele divizate, calculul direct al valorii polinomului N n ( x) conform formulei (2.5) (n sensul c se gsesc valorile tuturor termenilor, apoi acetia se sumeaz),

18

Lucrarea de laborator 2

necesit n 2 + 2n operaii aritmetice. n schimb, schema lui Horner permite obinerea valorii lui N n ( x) , efectund doar 3n operaii. n plus, utilizarea schemei menionate nu numai c economisete timpul de calcul, dar i mbuntete exactitatea calculelor n baza diminurii erorilor de rotunjire (numrul mare de operaii poate duce la pierderea exactitii datorit acumulrii erorilor de rotunjire). Realizarea celor dou etape ale algoritmului necesit 1.5n 2 + 4.5n operaii aritmetice cu numere reale. n cazul n care este necesar s se calculeze valorile polinomului de interpolare N n ( x) n mai multe puncte, diferenele divizate f [ x0 ;...; xi ] (i = 1, n) se calculeaz doar o singur dat, iar pentru a calcula valorile cerute se apeleaz doar la algoritmul lui Horner. Dac se efectueaz m evaluri, efortul global de calcul este de 1.5( n 2 + n) + 3mn operaii cu numere reale. Spaiul de memorie necesar pentru realizarea algoritmului este de ordinul O(2n) . Timpul de calcul este dependent de eroarea impus, avnd valori mari doar n cazurile n care se dorete o precizie ridicat. Algoritmul permite i mrirea gradului polinomului de interpolare cu un efort minim de calcul, ntruct la adugarea unui nou nod n reeaua de interpolare se reutilizeaz coeficienii de la gradul anterior. n cazul n care
f ( x) este continu, se poate utiliza urmtoarea formul pentru eroarea

EnN (x):= f (x) Nn (x) a procesului de interpolare n punctul z [ x0 ; xn ] : EnN ( z ) = f [ x0 ; x1 ;...; xn ; z ]n ( z ), n ( z ) = ( z x0 ) ... ( z xn ) .

Remarc. n cazul interpolrii pe o reea neuniform, se recomand a alege n calitate de noduri urmtoarele puncte [24, p.541]:
xi = (b + a ) 2 + ti (b a ) 2, i = 0, n ,

unde ti = cos ((2i + 1) (2n + 2)) (i = 0, n) sunt zerourile polinomului Chebyshev de spea I de gradul n + 1 ;
[a; b]( [ x0 ; xn ]) - segment pe care este definit funcia f ( x) . Prin aceasta se obine, n primul rnd,

micorarea influenei erorii de calcul asupra rezultatului, iar n al doilea rnd, n cazul unei funcii suficient de netede, eroarea se micoreaz odat cu creterea lui n . Evaluarea erorii de interpolare pentru cazul n care f ( x) C n +1[ x0 ; xn ] este dat de formula:
En ( z ) M n +1 ( xn x0 )n +1 ; M n +1 = max f ( n +1) ( x) . 2 n +1 x[ x0 ; xn ] (n + 1)! 2

Interpolare polinomial pe reea uniform Polinomul de interpolare sub forma lui Lagrange cu noduri echidistante n cazul n care nodurile reelei sunt echidistante, adic are loc relaia
xi = x0 + ih, i = 0, n , h > 0 ,

formula polinomului de interpolare Lagrange (2.2) se simplific i capt urmtorul aspect:


Ln ( x) Ln ( x0 + th) =

n (1) n n i i yi , (t j ) (1) Cn n! j =0 t i i =0

unde t = ( x x0 ) h , iar Cni = n ! (i !(n i)!) - numrul combinrilor din n elemente luate cte i . Se vor

Lucrarea de laborator 2

19

utiliza dou procedee de optimizare a algoritmului de calcul: primul - bazat pe formula de recuren
Cki = Cki 1 + Cki 1 (k = 2, n, i = 1, k 1; Ck01 = 1) (triunghiul lui Pascal), iar al doilea pe formula combinrilor 1

complementare Cni = Cnn i ( i = 0, [ n 2], n , [ n 2] - partea ntreag a numrului n 2 ). Pseudocodul algoritmului


Date de intrare: z (de tip real) punctul n care se calculeaz valoarea polinomului de interpolare; n (de tip ntreg) gradul maximal al polinomului de interpolare; x0 , xn - (de tip real) primul i respectiv, ultimul nod al reelei de interpolare;

y[n] - tabloul (cu elemente de tip real; indici de la 0 la n ) valorilor funciei f ( x) n nodurile de interpolare.
Date de ieire: z (de tip real) punctul n care se calculeaz valoarea polinomului de interpolare; p (de tip real) valoarea polinomului de interpolare n punctul z ; ntreg i, j , k real h, t , p, s tablou real c[ k ] (tabloul (cu elemente de tip real; indici de la 0 la k ) ce conine numrul combinrilor din n elemente luate cte i, i = 0, k )

k := [ n 2] ; h := ( xn x0 ) n ; t := ( z x0 ) h ; p := (1) n t
pentru j := 1, n execut p := p(t j ) j

c0 := 1
pentru i := 1, k execut ci := 0 pentru j := 1, k execut { pentru i := j ,1 execut ci := ci 1 + ci } pentru j := k + 1, n execut { pentru i := k ,1 execut ci := ci 1 + ci }

s := 0; j := n mod 2

dac j = 1 atunci { pentru i := 0, k execut s := s + ( 1)i ci ( yi (t i ) yn i (t ( n i ))) } altfel { pentru i := 0, k 1 execut s := s + ( 1)i ci ( yi (t i ) + yn i (t ( n i )))

s := s + (1) k ck yk (t k ) p := p s scrie z , p
}

Analiza algoritmului Realizarea algoritmului necesit un efort de calcul de O(0.375n 2 + 3.75n) operaii aritmetice i un spaiu de memorie de O(1.5n) . Polinomul de interpolare sub forma lui Newton cu noduri echidistante A) Formula lui Newton de interpolare ascendent are aspectul urmtor:
N n ( x) N n ( x0 + th) = y0 + k y0 k 1 (t j ) , k =1 k ! j =0
n

(2.7)

unde t = ( x x0 ) h , h > 0 - pasul tabelei de valori. Relaia (2.7) utilizeaz diferenele finite de ordinul k ale funciei f ( x) :
k yi = k 1 yi +1 k 1 yi , k = 1, n, i = 0, n k .

(2.8)

n particular, pentru i = 0, k = 1, n , obinem diferenele finite din formula (2.7). Vom considera c

20
0 yi = yi = f ( xi ), xi = x0 + ih, i = 0, n .

Lucrarea de laborator 2

Evaluarea valorii polinomului (2.7) se va efectua n modul urmtor: 1. Utiliznd definiia (2.8), se genereaz diferenele finite. Vom ine cont c n procesul de construcie a polinomului particip efectiv doar diferenele finite k y0 , k = 1,..., n , de aceea restul diferenelor le vom considera ca date intermediare. Pentru a economisi memoria, vom amplasa diferenele n tabloul n care iniial se pstrau valorile funciei f ( x) n noduri. Tabloul dat se va nnoi parial la calcularea diferenelor de ordin superior. Completarea tabloului va ncepe cu ultimul element al acestuia. Astfel, la calcularea diferenelor finite de ordinul I, elementul yn se va nlocui cu yn 1 , yn 1 - cu yn 2 .a.m.d. Elementul y0 nu se modific. La calcularea diferenelor de ordinul II, primele dou elemente ale masivului nu sufer modificaii, iar restul elementelor sunt nlocuite cu diferenele respective. n momentul n care a fost calculat diferena finit de ordinul n , n locul vectorului iniial ( y0 ; y1 ;...; yn )T obinem vectorul ( y0 ; y0 ; 2 y0 ;...; n y0 )T . 2. Evaluarea polinomului (2.7) n punctul z se efectueaz conform algoritmului lui Horner. Pentru aceasta N n ( x0 + th) se scrie sub forma:
2 y0 n1 y0 n y0 Nn ( x0 + th) = y0 + t y0 + (t 1) + ... + (t n + 2) + (t n + 1) ... . 2! n! (n 1)! Vom afla valoarea acestui polinom n punctul z , calculnd succesiv mrimile: k y0 t = ( z x0 ) h , bn := n y0 n!, bk := + (t k )bk +1 , k = n 1,1, b0 = Nn ( x0 + th) := y0 + t b1 . k!

Pseudocodul algoritmului
Date de intrare: z (de tip real) punctul n care se calculeaz valoarea polinomului de interpolare; n (de tip ntreg) gradul maximal al polinomului de interpolare; x0 , xn - (de tip real) primul i respectiv, ultimul nod al reelei de interpolare;

y[n] - tabloul (cu elemente de tip real; indici de la 0 la n ) valorilor funciei f ( x) n nodurile de interpolare.
Date de ieire: z (de tip real) punctul n care se calculeaz valoarea polinomului de interpolare; p (de tip real) valoarea polinomului de interpolare n punctul z ; ntreg i, k , u real h, t , p pentru i := 1, n execut { pentru k := n, i execut yk := yk yk 1 }

u := 1

pentru i := 2, n execut { u := u i; yi := yi u }

h := ( xn x0 ) n ; t := ( z x0 ) h ; p := yn
pentru i := n 1,0 execut p := yi + (t i ) p scrie z , p

Analiza algoritmului n cazul n care sunt cunoscute diferenele finite, pentru realizarea algoritmului este necesar un efort de calcul de 0.5n 2 + 6.5n 3 operaii aritmetice cu numere reale i un spaiu de memorie de O(n) . n cazul n care f ( x) C n +1[ x0 ; xn ] este adevrat urmtoarea estimaie pentru eroarea procesului de

Lucrarea de laborator 2 interpolare n punctul z [ x0 ; xn ] [8; 16; 24, p.538]:


EnN ( z ) t (t 1) ... (t n) h n +1M n +1 (n + 1)! ,

21

unde M n +1 = max f ( n +1) ( x) , t = ( z x0 ) h .


x[ x0 ; xn ]

B) Formula lui Newton de interpolare descendent are aspectul urmtor:


N n ( x) N n ( xn + th) = yn + k yn k k! k =1
n

(t + j ) ,
j =0

k 1

(2.9)

unde k yn k sunt diferene finite de ordinul k , k = 1, n , t = ( x xn ) h (deoarece x ( x0 ; xn ) avem t < 0 ),


xi = x0 + ih, i = 0, n , h > 0 - pasul tabelului de valori.

Ca i n cazul precedent A), se vor calcula diferenele finite n baza relaiei (2.8) i se vor memora n tabloul valorilor funciei f ( x) n noduri. Vom meniona, totui, c n cazul dat tabloul se va completa ncepnd cu primul element: elementul y0 se va nlocui cu y0 , y1 - cu y1 .a.m.d. n momentul n care a fost calculat diferena finit de ordinul n , n locul vectorului iniial ( y0 ; y1 ;...; yn )T obinem
( n y0 ; n 1 y1 ;...; yn 1 ; yn )T . Evaluarea polinomului (2.9) n punctul z se efectueaz n baza algoritmului

lui Horner:
t = ( z xn ) h , bn := n y0 k ynk , bk := + (t + k )bk +1 , k = n 1,1, b0 = Nn ( xn + th) := yn + t b1 . n! k!

Pseudocodul algoritmului
Date de intrare: z (de tip real) punctul n care se calculeaz valoarea polinomului de interpolare; n (de tip ntreg) gradul maximal al polinomului de interpolare; x0 , xn - primul i, respectiv, ultimul nod (de tip real) al reelei de interpolare;

y[n] - tabloul (cu elemente de tip real; indici de la 0 la n ) valorilor funciei f ( x) n nodurile de interpolare.
Date de ieire: z (de tip real) punctul n care se calculeaz valoarea polinomului de interpolare; p (de tip real) valoarea polinomului de interpolare n punctul z ; ntreg i, k , u real h, t , p pentru i := 1, n execut { pentru k := 0, n i execut yk := yk +1 yk }

u := 1

pentru i := 2, n execut { u := u i; yn i := yn i u }

h := ( xn x0 ) n ; t := ( z xn ) h ; p := y0
pentru i := n 1,0 execut p := yn i + (t + i ) p scrie z , p

Analiza algoritmului n cazul n care sunt cunoscute diferenele finite, pentru realizarea algoritmului este necesar un efort de calcul de 0.5n 2 + 6.5n 3 operaii aritmetice cu numere reale i un spaiu de memorie de O(n) . n cazul n care f ( x) C n +1[ x0 ; xn ] este adevrat urmtoarea estimaie pentru eroarea procesului de interpolare n punctul z [ x0 ; xn ] [24, p.538]:
EnN ( z ) t (t + 1) ... (t + n) h n +1 M n +1 ( n + 1)! ,

22 unde M n +1 = max f ( n +1) ( x) , t = ( z xn ) h .


x[ x0 ; xn ]

Lucrarea de laborator 2

Remarc. Din punctul de vedere al exactitii calculelor este rezonabil s se utilizeze formula Newton de interpolare ascendent pentru calculul valorii funciei n punctele jumtii din stnga a segmentului [ x0 ; xn ] , iar formula Newton de interpolare descendent n punctele jumtii din dreapta a segmentului [ x0 ; xn ] . 3.III. Modul de desfurare a lucrrii Cerine fa de ndeplinirea lucrrii Fie dat analitic funcia y = f ( x), x [a; b] . n baza pseudocodurilor descrise n seciunea II a lucrrii, s se elaboreze un program, care are drept obiectiv realizarea urmtoarelor etape: 1) Calculul valorilor
yi = f ( xi ), i = 0, n (n )

(cu ajutorul funciilor standard ale mediului de

programare) n punctele distincte xi , a x0 < x1 < ... < xn b . 2) Calculul valorii aproximative a funciei f ( x) n punctul x = z , utiliznd polinomul de interpolare sub forma lui Lagrange sau Newton. 3) Calculul aproximativ cu exactitatea = 106 (sau cu cea mai bun exactitate posibil) al valorii funciei f ( x) n punctul x = z , utiliznd algoritmul lui Neville-Aitken. S se analizeze variaia erorii la aproximarea prin interpolare a funciei f ( x) n x = z (a se vedea punctul 2)) n funcie de: 2.1. Numrul nodurilor de interpolare; 2.2. Distribuia nodurilor de interpolare: a) noduri echidistante; b) nodurile sunt n concordan cu zerourile polinomului Chebyshev de gradul n + 1 definit pe
[a; b] [ x0 ; xn ] ;

c) alte modaliti de amplasare; 2.3. Poziia punctului z (n vecintatea extremitii din stnga sau din dreapta a segmentului de interpolare, sau n vecintatea mijlocului acestuia). S se testeze programul de calcul pe exemplele propuse la sfritul lucrrii de laborator. S se extrag la tipar tabelele (pentru fiecare polinom de interpolare): Tabelul dup care se interpoleaz (suportul problemei de interpolare)
xi yi
x0 y0 ... ... xn yn xi (i = 0, n) - nodurile reelei de interpolare; yi (i = 0, n) - valorile funciei f ( x) n noduri; z j ( j = 1, m) - punctele n care se interpoleaz valoarea funciei f ( x) ; Pj ( j = 1, m) - valorile polinomului de interpolare n punctele z j ; f j ( j = 1, m) - valorile funciei f ( x) n punctele z j , calculate cu

Tabelul interpolrii i testrii


j 1 m zj Pj fj

ajutorul funciilor standard ale mediului de programare;

Lucrarea de laborator 2
j ( j = 1, m) - erorile de interpolare j = f j Pj n punctele z j .

23

Programul trebuie s dea rezultat pentru orice sistem finit de puncte de interpolare. Chestiuni de studiat 1. Precizai modalitile prin care poate fi diminuat eroarea interpolrii. 2. S se fac o analiz experimental a timpului de calcul al valorilor polinomului de interpolare n funcie de gradul polinomului. 3. S se formuleze exemple de funcii continue pentru care polinoamele de interpolare corespunztoare nu vor converge uniform. 4. S se construiasc polinoamele de interpolare Lagrange i Newton ce aproximeaz funcia
f ( x) = 1 (1 + 25 x 2 ), x [1;1] . S se reprezinte grafic funcia f ( x) i polinomul de interpolare

corespunztor, precum i variaia erorii n funcie de numrul nodurilor de interpolare dac: nodurile reelei de pe [ 1;1] sunt echidistante; nodurile reelei sunt zerourile polinomului Chebyshev de gradul n + 1 .

5. Analizai comportarea aproximrii funciei prin interpolare polinomial n exteriorul segmentului


[ x0 ; xn ] (problema extrapolrii).

Probleme propuse spre rezolvare


1. f ( x) = e x+ 2 sin x ( x + 1), x [0;2]; 2. f ( x) = e x x2 + 1, x [0.5;4]; 3. f ( x) = e x sin x x , x [1;4]; 4. f ( x) = x ln x , x [2;5]; 5. f ( x) = e x cos x x , x [2;4]; 6. f ( x) = ln( x + 1) x , x [10;15]; 7. f ( x) = e ln x, x [2;4];
x

14. f ( x) = ( x 1)2 0.5ex , x [0;3]; 15. f ( x) = ( x 1)2 e x , x [0;2.5]; 16. f ( x) = x3 sin x, x [0.6;3]; 17. f ( x) = 4x cos x, x [0;5]; 18. f ( x) = x2 sin x, x [1;4]; 19. f ( x) = sin x + cos x, x [ 3; 3]; 20. f ( x) = x2 cos x, x [2;4]; 21. f ( x) = cos x sin x, x [ 2; 2]; 22. f ( x) = x 2cos0.5x, x [2;3]; 23. f ( x) = 2x cos x, x [2;3]; 24. f ( x) = x2 + ln( x + 5), x [4;3]; 25. f ( x) = sin3x 4cos3x, x [0; 2]; 26. f ( x) = x2 + lg x, x [2;6].

8. f ( x) = xesin x , x [4;7]; 9. f ( x) = e x x , x [0.2;2]; 10. f ( x) = e


x

x , x [1.1;4];
2

11. f ( x) = xe2sin x , x [1;4]; 12. f ( x) = xecos x , x [10;16]; 13. f ( x) = 3sin x + cos 2x, x [ 2;0];

24

Lucrarea de laborator 3

LUCRAREA DE LABORATOR 3
APLICAREA FORMULELOR DE CUADRATUR LA CALCULUL APROXIMATIV AL INTEGRALEI 3.I. Scopul lucrrii Studiul unor algoritmi de integrare numeric i implementarea acestora ntr-un limbaj de programare de nivel nalt. 3.II. Prezentarea teoretic a lucrrii Formularea problemei Fie f :[a; b] ( < a < b < ) o funcie continu. S se calculeze integrala definit
b

I = f ( x)dx ,
a

(3.1)

cu exactitatea > 0 , utiliznd n acest scop o formul de integrare numeric. Noiunea de integral definit de la funcia f ( x) , definit pe intervalul [a; b] , se va nelege n sensul lui Riemann. Din cursul Analiza matematic se tie c aceasta reprezint un numr ce poate fi calculat, cnd se cunoate primitiva F ( x) a integrandului, cu ajutorul formulei Leibniz-Newton
I = F (b) F (a ) .

(3.2)

O condiie suficient pentru ca s existe integrala definit (3.1) este ca funcia f (x) s fie continu pe
[a; b] . Dar primitiva ei, deseori, nu se exprim prin funcii elementare, ceea ce face imposibil aplicarea

formulei (3.2) n acest caz. n afar de aceasta, n multe probleme cu caracter aplicativ, funcia f ( x) nu se cunoate ea nsi dect sub form tabelar i atunci determinarea primitivei n genere nu poate fi fcut. Din aceste motive formula (3.2) nu are aplicare larg n practic i se recurge frecvent la calculul aproximativ al integralei cu ajutorul formulelor de cuadratur (prescurtat FC). Forma general a acestor formule este [2-5; 8; 10; 13; 15; 16; 20-21; 23-24]
I n = ci f ( xi ) ,
i =0 n

(3.3)

unde xi [a; b] (i = 0, n) i se numesc nodurile formulei de integrare numeric, iar ci (i = 0, n) sunt coeficienii ei. Restul Rn ( f ) al FC (3.3) este definit ca Rn ( f ) := I I n . Acesta ofer informaii privind clasa funciilor pentru care formula de integrare numeric este eficient, n sensul c pentru funcia dat i
> 0 , pentru numere n suficient de mari, are loc relaia Rn ( f ) = I I n < . n aplicaii, testarea

acurateei aproximrii impune verificarea unei inegaliti de forma I n I n < pentru n > n . Trebuie menionat, de asemenea, c i pentru calculul integralei

( x) f ( x)dx , n care
a

: ( a; b )

este o funcie continu pozitiv, numit pondere, pot fi construite FC de forma (3.3). O metod de obinere a unor FC const n aproximarea funciei f (x) prin polinomul de interpolare
Pn ( x) , construit pe sistemul de noduri x0 , x1 ,..., xn de pe [a; b] i integrarea (analitic) celui din urm n

aceleai limite. Diferite variante de formule se pot obine n dependen de ponderea concret ( x) , de

Lucrarea de laborator 3

25

numrul de noduri n , de alegerea concret a nodurilor xi , ct i de forma polinomului de interpolare ales pentru aproximare. Mai nti considerm cazul ( x) = 1 . mprim segmentul [a; b] n n pri egale, de lungime
h = (b a) n , prin intermediul punctelor echidistante xi = a + ih, i = 0, n .

(3.4)

Formula dreptunghiurilor
Dac funcia f (x) este aproximat pe [a; b] cu un polinom de gradul zero P0 ( x) = f ( x ) , unde x este mijlocul intervalului de integrare, rezult formula dreptunghiului:
I = (b a) f ( (a + b) 2 ) .

(3.5)

n practic aceast formul se aplic sub form generalizat. Integrala definit pe [a; b] se exprim ca suma integralelor pe fiecare din subintervalele [ xi ; xi +1 ], i = 0, n 1 (valorile xi , i = 0, n sunt definite de relaia (3.4)), apoi la fiecare termen al sumei se aplic formula dreptunghiului. Astfel obinem relaia:
I = h f ( xi + h 2) ,
i =0 n 1

(3.6)

care poart denumirea de formula generalizat a dreptunghiurilor medii. n cazul n care f ( x) C 2 [a; b] , estimarea restului Rnd ( f ) al formulei (3.6) poate fi fcut cu ajutorul inegalitii [1; 6]:
d Rn ( f ) (b a )3 M 2

) ( 24n ) , M
2

:= max f ( x) .
x[ a ;b ]

(3.7)

Formula trapezelor
Aceast formul se obine dac funcia f ( x) se aproximeaz pe [a; b] prin polinomul de interpolare de gradul nti P ( x) conform nodurilor x0 = a, x1 = b i are forma: 1
I = (b a ) ( f (a) + f (b) ) 2 .

(3.8)

Utiliznd proprietatea de aditivitate a integralei fa de intervalul de integrare i formula (3.8) pentru fiecare din subintervalele [ xi ; xi +1 ] (i = 0, n 1) , se obine formula generalizat a trapezelor:
n 1 I = h ( f ( x0 ) + f ( xn ) ) 2 + f ( xi ) . i =1

(3.9)

t n cazul n care f ( x) C 2 [a; b] , pentru restul Rn ( f ) al FC (3.9) avem estimaia [2-8; 10; 16; 20-21; 23-25] t Rn ( f ) (b a)3 M 2

) (12n ) , M
2

= max f ( x) .
x[ a ;b ]

(3.10)

Formula lui Simpson (parabolelor)


Considernd c funcia de integrat f ( x) se aproximeaz pe [a; b] prin polinomul de interpolare de gradul doi P2 ( x) , conform nodurilor x0 = a, x1 = (a + b) 2, x2 = b , obinem urmtoarea aproximaie a integralei cutate
I = ( f (a ) + 4 f ( (a + b) 2 ) + f (b) ) (b a) 6 ,

(3.11)

ce poart numele lui Simpson. Pentru a obine i n acest caz o formul, care s asigure o precizie mai

26

Lucrarea de laborator 3

mare, se consider c segmentul [a; b] este divizat n n = 2m pri egale cu ajutorul punctelor (3.4). Pentru fiecare subinterval de forma [ xi ; xi + 2 ] aplicm formula (3.11) i summ dup toate valorile lui i = 0, n 2 . Drept rezultat obinem formula generalizat a lui Simpson:
n2 n 2 1 h I = f ( x0 ) + f ( xn ) + 4 f ( x2i 1 ) + 2 f ( x2i ) . 3 i =1 i =1

(3.12)

t n cazul n care f ( x) C ( IV ) [a; b] , pentru restul Rn ( f ) al formulei (3.12) avem estimaia [2-6; 16; 24] S Rn ( f ) (b a )5 M 4

) (180n ) , M
4

= max f ( IV ) ( x) .
x[ a ;b ]

(3.13)

Pseudocodul algoritmilor
Date de intrare: a, b (de tip real) limitele intervalului de integrare; n (de tip ntreg) numrul de pri n care este divizat intervalul de integrare; f ( x) - numele subprogramului-funcie (de tip real), cu ajutorul cruia se calculeaz valoarea integrandului f ( x) . Date de ieire: s (de tip real) valoarea aproximativ a integralei; ntreg i real h, s, x formula dreptunghiurilor

h := (b a ) n ; s := 0; x := a + h 2 s := hs

h := (b a ) n ; s := 0

formula trapezelor

pentru i := 0, n 1 execut s := s + f ( x + ih) scrie s formula lui Simpson execut {

pentru i := 1, n 1 execut s := s + f ( a + ih)

s := h( s + 0.5( f (a ) + f (b)))
scrie s

h := (b a ) n ; s := 0.5( f (a ) f (b)); i := 1 x := a + ih; s := s + 2 f ( x) + f ( x + h); i := i + 2

s := 2hs 3 scrie s

} ct timp i < n

Remarc. Adunarea repetat a lungimii pasului sub forma xi = xi 1 + h , n cazul n care se genereaz un numr mare de noduri de integrare, poate condiiona acumularea de erori. Drept urmare, n descrierea algoritmilor s-a utilizat relaia xi = a + ih, i = 0, n .

Algoritmi cu control automat al pasului de integrare (implicit i al exactitii de calcul)


Evaluarea constantelor M 2 i M 4 , prezente n relaiile (3.7), (3.10) i (3.13), de cele mai dese ori ntmpin dificulti serioase. De aceea, n practic controlul preciziei de integrare se efectueaz n baza unui algoritm numeric, cunoscut ca procedeul lui Runge [25, p.149]. Acest proces implic la pasul
k (k = 0,1,...) calculul aproximativ al integralei (3.1) conform uneia dintre formulele (3.6), (3.9) sau

(3.12), pentru o valoare h a pasului, corespunznd unui numr p = 2k + 1 de puncte de integrare, i compararea valorii I ( k ) astfel obinute cu valoarea I ( k +1) rezultat pentru pasul h 2 , corespunznd unui numr de 2 p 1 puncte de integrare. ntruct pentru eroarea de aproximare a integralei (3.1) are loc

Lucrarea de laborator 3 urmtoarea relaie [16, p.394]


I I ( k +1) I ( k +1) I ( k )

27

(2

1 ,

( m este o constant care coincide cu ordinul formulei de cuadratur aplicate) njumtirea pasului trebuie continuat, n principiu, pn cnd eroarea I ( k +1) I ( k ) pentru dou aproximaii consecutive ale integralei scade sub o valoare admisibil (2m 1) . Apoi se consider I I ( k +1) . Trebuie menionat c pentru formulele (3.6) i (3.9) avem m = 2 , iar pentru (3.12) - m = 4 . Calculul integralei cu o precizie prestabilit prin metoda njumtirii pasului poate fi optimizat observnd c nu este necesar evaluarea funciei n toate punctele de integrare, ci doar n cele prin care au fost njumtite subintervalele reelei utilizate n etapa anterioar. Restul valorilor funciei, deja calculate la paii anteriori, sunt folosite implicit stabilind o relaie de recuren ntre dou aproximaii consecutive ale integralei.

Pseudocodul algoritmilor Cazul formulei dreptunghiurilor generalizate


Date de intrare: a, b (de tip real) limitele intervalului de integrare; f ( x) - numele subprogramului-funcie (de tip real), cu ajutorul cruia se calculeaz valoarea integrandului

f ( x) ;

(de tip real) - exactitatea de calcul. Date de ieire: s 2 (de tip real) valoarea aproximativ a integralei; k (de tip ntreg) numr ce indic de cte ori a fost njumtit pasul de integrare h ; ntreg n, i, k real h, s1, s 2, x, 1
k := 0; 1 := 3 ; n := 1; h := b a; s 2 := h f ((a + b) 2)
execut {

n := 2n; s1:= s 2; h := h 2; k := k + 1; s 2 := 0; x := a h 2
pentru i := 1, n execut s 2 := s 2 + f ( x + ih)

s 2 := s 2 h
} ct timp s 2 s1 1 scrie s 2, k

Cazul formulei trapezelor generalizate Se poate verifica fr dificultate c succesiunea de aproximaii obinute prin formula (3.9) poate fi descris cu ajutorul procesului iterativ [3, p.76]:
(0) I tr = ( f (a) + f (b))h0 2, h0 = b a, n0 = 1, nk 1 1 ( ( I trk ) = I trk 1) + hk 1 f (a + (i 1 2)hk 1 ) , hk = hk 1 2, nk = 2nk 1 , k = 1, 2,..., 2 i =1

(3.14)

unde hk = (b a) nk este lungimea subintervalelor dup etapa k , iar nk = 2k reprezint numrul corespunztor de subintervale sau, echivalent, numrul punctelor noi de integrare i de njumtire a subintervalelor pentru etapa urmtoare. Procesul recurent (3.14) trebuie continuat pn cnd modulul diferenei dintre dou aproximaii succesive ale integralei devine mai mic dect (2m 1) .

28

Lucrarea de laborator 3

Date de intrare: a, b (de tip real) limitele intervalului de integrare; f ( x) - numele subprogramului-funcie (de tip real), cu ajutorul cruia se calculeaz valoarea integrandului

f ( x) ;

(de tip real) - exactitatea de calcul.


Date de ieire: t 2 (de tip real) valoarea aproximativ a integralei; k (de tip ntreg) numr ce indic de cte ori a fost njumtit pasul de integrare h ; ntreg n, i, k real h, t1, t 2, x, 1

k := 0; 1 := 3 ; n := 1; h := b a; t 2 := 0.5h( f ( a) + f (b))
execut {

t1:= t 2; t 2 := 0; x := a 0.5h
pentru i := 1, n execut t 2 := t 2 + f ( x + ih)

t 2 := 0.5(t1 + h t 2); n := 2n; h := 0.5h; k := k + 1


} ct timp t 2 t1 1 scrie t 2, k

Cazul formulei lui Simpson generalizate Avnd n vedere aproximaiile date de formula generalizat a trapezelor pentru valori ale pasului de integrare njumtite succesiv, se poate verifica c aproximaiile formulei generalizate a lui Simpson pot fi exprimate n raport cu cele dinti:
( ( ( I Sk ) = (4 I trk ) I trk 1) ) 3 .

Atunci, algoritmul pentru calculul recursiv al aproximaiilor conform formulei (3.12) poate fi descris cu ajutorul relaiilor:
(0) I tr = ( f (a ) + f (b))h0 2, h0 = b a, n0 = 1, nk 1 1 ( ( I trk ) = I trk 1) + hk 1 f (a + (i 1 2)hk 1 ) , k = 1, 2,..., 2 i =1 (k ) ( k 1) = (4 I tr I tr ) 3; hk = hk 1 2, nk = 2nk 1 (hk = (b a ) nk , nk = 2k ).

( I Sk )

Date de intrare: a, b (de tip real) limitele intervalului de integrare; f ( x) - numele subprogramului-funcie (de tip real), cu ajutorul cruia se calculeaz valoarea integrandului

f ( x) ;

(de tip real) - exactitatea de calcul. Date de ieire: s 2 (de tip real) valoarea aproximativ a integralei; k (de tip ntreg) numr ce indic de cte ori a fost njumtit pasul de integrare h ; ntreg n, i, k real h, t1, t 2, s1, s 2, 1
k := 0; 1 := 15 ; n := 1; h := b a; t 2 := 0.5h ( f (a ) + f (b)); s 2 := t 2
execut {

t1:= t 2; t 2 := 0; s1:= a 0.5h


pentru i := 1, n execut t 2 := t 2 + f ( s1 + ih)

s1:= s 2; t 2 := 0.5(t1 + h t 2); s 2 := (4 t 2 t1) 3; n := 2n; h := 0.5h; k := k + 1

Lucrarea de laborator 3
} ct timp s 2 s1 1 scrie s 2, k

29

Remarc. Pentru ca numrul n al divizrilor intervalului [a; b] , ca putere a lui doi, s nu depeasc valoarea maxim de tip long reprezentabil, se recomand ca numrul de njumtiri ale subintervalelor s fie limitat. Dac, datorit convergenei slabe a procesului, se epuizeaz numrul maximal admisibil de iteraii posibile fr a se fi atins exactitatea dorit n calculul integralei (3.1), se iese din ciclul njumtirilor i se emite un mesaj de eroare.

Analiza algoritmilor
Se observ c restul formulei (3.12) depinde de h 4 (eroarea formulei este de ordinul patru
RnS ( f ) = O(h 4 ) ), n timp ce restul formulelor (3.6) i (3.9) depinde doar de h 2 . Astfel, formula lui Simpson

este cu un grad de precizie mai ridicat dect formulele dreptunghiului sau trapezului. n schimb, acestea din urm sunt mai flexibile, deoarece utilizeaz o reea cu un numr oarecare de noduri, spre deosebire de formula lui Simpson, care necesit un numr impar de noduri. Formulele (3.6) i (3.9) sunt exacte pentru orice funcie liniar, pe cnd formula (3.12) este exact pentru orice polinom de grad mai mic sau egal cu trei. FC (3.6), (3.9) i (3.12) sunt cazuri particulare ale formulelor Newton-Ctes [2, p.88].

Formule de cuadratur de tip Gauss


Spre deosebire de FC Newon-Ctes, care utilizeaz diviziuni echidistante ale intervalului de integrare, n formulele de tip Gauss nodurile se aleg ntr-un mod optim pentru ca eroarea de aproximare a integralei s fie minim. n cele ce urmeaz vom considera formule de integrare numeric de forma:

( x) f ( x)dx ci f ( xi ) ,
a i =1

(3.15)

unde ponderea ( x) este o funcie continu i pozitiv pe (a; b) . Dac nodurile xi (i = 1, n) se aleg ca fiind zerourile unui polinom q ( x ) de gradul n ce satisface relaia de ortogonalitate

( x) p( x)q( x)dx = 0 ,
a

(3.16)

pentru orice polinom p( x) de grad pn la n 1 , atunci formula (3.15) are gradul (maxim) de exactitate
2n 1 (formula va fi exact pentru orice polinom de grad mai mic sau egal cu 2n 1 ) [3, p.70]. FC de tip

Gauss sunt formule de forma (3.15) pentru care se atinge gradul maxim de exactitate. Zerourile unui polinom ce satisface relaia (3.16) sunt simple i aparin intervalului deschis (a; b) . Odat stabilit familia de polinoame ortogonale n raport cu ponderea ( x) , se afl rdcinile acestora, iar coeficienii ci (i = 0, n) rezult din formula ci = ( x)li ( x)dx , n care li ( x) sunt polinoamele
a b

fundamentale de interpolare Lagrange. Pentru orice funcie continu pe [a; b] , aproximaiile integralei conform formulei de tip Gauss vor

30 converge cnd n ctre valoarea exact a integralei [4, p.174].

Lucrarea de laborator 3

Cazul ( x) = 1 . Formula de cuadratur a lui Gauss-Legendre


1

Vom analiza mai nti cum se aproximeaz integrala calculul integralei pe orice interval [a; b] .

f (t )dt

i vom extinde apoi metoda pentru

Se pune problema de a determina nodurile ti (i = 1, n) din intervalul [1;1] i coeficienii ci (i = 1, n) astfel nct FC

f (t )dt c f (t ) s fie exact pentru orice polinom de grad mai mic sau egal cu 2n 1 .
i =1 i i

Pentru un n fixat n calitate de noduri ale FC se iau zerourile polinomului de gradul n din sistemul ortogonal a lui Legendre:
Ln (t ) =
1 dn 2 (t 1)n , n = 0,1,... (t [1;1]) . 2n n! dt n

Polinomul Ln (t ) are n rdcini reale, distincte, simetrice fa de origine, situate n intervalul (1;1) . Coeficienii ci se obin prin integrarea pe intervalul [1;1] a polinoamelor fundamentale de interpolare Lagrange, construite cu ajutorul rdcinilor polinomului Legendre Ln (t ) :
1 n ci = ( t t j ) ( ti t j ) dt , i = 1, n . 1 j =1, j i

n general, pentru calculul aproximativ al integralei

f ( x)dx
a

se face mai nti schimbarea de

variabil x = t (b a ) 2 + (b + a ) 2 , pentru a avea limitele de integrare 1 i 1 . Astfel, se obine formula


b

f ( x)dx =

ba 1 F (t )dt , F (t ) = f ( t (b a) 2 + (b + a) 2 ) . Aplicnd ultimei integrale FC a lui Gauss 2 1

Legendre, avem:
b

f ( x)dx

ba n ci f ( xi ) , 2 i =1

(3.17)

unde xi = ti (b a ) 2 + (b + a ) 2, i = 1, n , cu ti zerourile din intervalul (1;1) ale polinomului Legendre


Ln (t ) .

Exist tabele speciale unde pot fi gsii coeficienii i nodurile FC a lui Gauss-Legendre pentru diferite valori ale lui n . n tabelul de mai jos sunt indicate nodurile de integrare ti i coeficienii ci corespunztori, pentru un numr de intervale n = 2,3, 4,5 .
n
2 3
4

ti , i = 1, n t2 = t1 = 1
3

ci , i = 1, n c1 = c2 = 1
c1 = c3 = 5 9, c2 = 8 9 c1 = c4 = 0.3478548451, c2 = c3 = 0.6521451549

t3 = t1 = 3 5, t2 = 0 t4 = t1 = 0.8611363116, t3 = t2 = 0.3399810436

Lucrarea de laborator 3
5 t5 = t1 = 0.9061798459, t4 = t2 = 0.5384693101, t3 = 0 c1 = c5 = 0.2369268850, c2 = c4 = 0.4786286705, c3 = 0.5688888889

31

Cazul a = 1, b = 1, (t ) = 1 1 t 2 . Formula de cuadratur a lui Gauss-Chebyshev


Se poate observa c funcia pondere (t ) prezint singulariti n 1 . Utilitatea practic a unei astfel de ponderi este integrarea numeric a funciilor ce prezint acelai gen de singularitate integrabil n capetele domeniului de integrare, utiliznd procedeul izolrii comportrii singulare din capete n funcia pondere. FC a lui Gauss-Chebyshev se aplic pentru integrale de forma (1 t 2 )
1
1 1

1 2

F (t )dt i are aspectul:

1 1 t2

F (t )dt ci F (ti ) .
i =1

(3.18)

Aici valorile ti (i = 1, n) ale nodurilor de integrare sunt zerourile polinomului Tn (t ) = cos(n arccos(t )) de gradul n din sistemul de polinoame ortogonale ale lui Chebyshev de spea nti:
ti = cos ( ( (2i 1) ) ( 2n ) ) , i = 1, n ,

iar coeficienii ci satisfac relaia ci = n , i = 1, n . Deoarece toi coeficienii ci din formula (3.18) au aceeai valoare, aceast formul necesit un numr de operaii mai mic pentru atingerea unui anumit ordin de precizie, n comparaie cu formula (3.17). Orice integral de forma

(1 x )
a b

2 1 2

f ( x)dx sau

f ( x)dx
a

( < a < b < ), poate fi adus la forma

(3.18) printr-o transformare convenabil de variabil. Pentru a calcula integrala

( x) f ( x)dx
a

cu exactitatea dat > 0 , conform formulei (3.17) sau

(3.18), se poate aplica principiul lui Runge. Algoritmii de calcul descrii de aceste dou formule sunt simpli i se implementeaz analog celor definii de formulele (3.5), (3.8), (3.11).

3.III. Modul de desfurare a lucrrii Cerine fa de ndeplinirea lucrrii


S se elaboreze un program destinat calculului integralei (3.1) cu exactitatea dat > 0 . n acest scop, se vor implementa algoritmii metodelor numerice analizate la punctul 3.II ntr-un limbaj de programare de nivel nalt. Programul de calcul s se testeze pe exemplele propuse la sfritul lucrrii de laborator. S se extrag la tipar valoarea aproximativ a integralei, numrul de njumtiri ale pasului iniial de integrare necesar pentru a obine exactitatea cerut > 0 , precum i timpii necesari pentru efectuarea unei iteraii i pentru atingerea unei precizii dorite. n plus, pentru fiecare algoritm se va afia i reprezenta grafic variaia erorii aparente I ( k +1) I ( k ) (distana dintre dou iteraii succesive n cadrul procedeului lui Runge) pe parcursul iteraiilor. Se vor compara rezultatele obinute prin utilizarea

32

Lucrarea de laborator 3

diferiilor algoritmi (eficiena lor relativ n rezolvarea problemei date) i se va determina algoritmul optim.

Chestiuni de studiat
1. Comparai eficiena diferiilor algoritmi pentru calculul aproximativ al aceleiai integrale. 2. S se fac o analiz experimental a erorii la integrarea numeric n funcie de valoarea pasului de integrare, precum i de modul de alegere a nodurilor i a coeficienilor FC. 3. S se fac o analiz experimental a dependenei timpului de calcul a aproximaiei integralei de exactitatea de calcul impus.

Probleme propuse spre rezolvare


a) Pentru integralele definite ce urmeaz
1. 1 1 + x 2 dx ; 0 ex 1 + x 2 dx; 1
x 2 e dx;
2

7.

2 sin x dx; 0

13.

x cos xdx; 1 sin x

2.

8.

0 1

x + 1sin xdx; tgx + 1 dx;


2

14.

1+ x +
0

dx;

3.

9.

1
1

15.

1 x + cos x

dx;

4.

( x 2 + 1) 2 sin xdx; 1

10.

ln x + 1 x +1

dx;

16.

sin x dx; x 4

5.

x cos x x + 1 dx; 0
1

11.

0 0.5

1 1 0.25sin 2 x 1 0.25 x 2 dx; 1 x2

dx;

17.

lg x dx; x 1
2

e x 6. dx; x+2 1

12.

e x sin 0.5 x 18. dx, 0.5 + x 2 0

aplicai una dintre formulele (3.6), (3.9), (3.12) pentru a calcula valoarea aproximativ a lor cu o eroare ce nu depete = 106 b) Pentru urmtoarele integrale
1

19.

1
1

x sin x 1 x2 cos x 2 1 x2

dx;

21.

0 1

2sin x dx; x(1 x) e 2 x 5 dx; x(1 x)

23.

1
1

sin x 1 + x2
2

dx;

25.

ln(1 + x 2 ) (1 x) dx 2
2

20.

dx;

22.

24.

ex 1 x dx; 1

26.

x2ex 1 + x dx, 0

aplicai una dintre formulele de cuadratur a lui Gauss (3.17) sau (3.18), pentru a calcula valoarea lor aproximativ, folosind dou valori succesive ale lui n . Eroarea se va determina prin compararea valorilor obinute. c) Pentru integralele 23-26 din punctul b), s se calculeze valorile lor aproximative, aplicnd formula Gauss (3.17) i principiul lui Runge pentru a atinge precizia dat = 10 5.

Lucrarea de laborator 4 REZOLVAREA NUMERIC A ECUAIILOR ALGEBRICE I TRANSCENDENTE 4.I. Scopul lucrrii

33

LUCRAREA DE LABORATOR 4

Studiul unor metode numerice aproximative de rezolvare a ecuaiilor algebrice i transcendente i implementarea acestora ntr-un limbaj de programare de nivel nalt. 4.II. Prezentarea teoretic a lucrrii Formularea problemei Fie f :[a; b] o funcie continu i derivabil. S se afle toate rdcinile reale de pe [a; b] ale ecuaiei
f ( x) = 0

(4.1)

cu exactitatea dat > 0 , utiliznd n acest scop o metod aproximativ numeric (iterativ). Problema formulat se rezolv n dou etape [2-5; 10; 13; 15-16; 20-21; 23-24; 26; 28]: 1) Se separ (localizeaz) rdcinile, adic se stabilesc pe [a; b] intervale care conin fiecare una i numai una dintre rdcinile ecuaiei (4.1). 2) Pentru fiecare rdcin separat se precizeaz aproximaiile ei pn se ajunge la gradul de precizie dorit. Vom analiza mai nti cele mai rspndite metode de separare ale rdcinilor ecuaiei de forma (4.1). Separarea rdcinilor prin metoda tabelrii funciei (metoda probelor) Se determin semnele valorilor funciei f ( x) n nodurile reelei echidistante i = 0 + ih, i = 0, n ,
0 = a, h = (b a ) n . Dac pentru nodurile vecine i i i +1 avem f ( i ) f ( i +1 ) < 0 , atunci pe segmentul
[ i ; i +1 ] se gsete cel puin o rdcin a ecuaiei (4.1), iar n cazul cnd f ( i ) f ( i +1 ) > 0 , pe [ i ; i +1 ] sau

nu exist rdcini, sau exist un numr par. Dac nodurile reelei sunt suficient de apropiate, atunci, cel mai probabil, cnd f ( i ) f ( i +1 ) < 0 , pe [ i ; i +1 ] avem o singur rdcin; iar cnd f ( i ) f ( i +1 ) > 0 , pe
[ i ; i +1 ] nu avem rdcini (desigur, n acest caz excludem din studiu rdcinile de multiplicitate par).

Deoarece sigurana metodei depinde de caracterul funciei f ( x) , se recomand, totui, s ne convingem suplimentar de aceasta, fie studiind semnul derivatei f ( x) pe [ i ; i +1 ] (n cazul cnd f ( i ) f ( i +1 ) < 0 , iar
f ( x) pstreaz semnul, avem o singur rdcin), fie studiind graficul funciei f ( x) pe acest interval.

Pseudocodul algoritmului
Date de intrare: f - numele subprogramului-funcie (de tip real), cu ajutorul cruia se calculeaz valoarea funciei f ( x) ;

a, b (de tip real) extremitile segmentului pe care se testeaz existena rdcinilor ecuaiei ( a < b ); n (de tip ntreg) numrul de puncte ale reelei.
Date de ieire: c[] (tablou unidimensional cu componente de tip real) - tablou ce conine valorile extremitilor de stnga ale intervalelor n care s-a depistat existena rdcinii; real h, x1 , x2 f1 , f 2 ntreg i tablou real c[]

34
i := 0; h := (b a) n ; x1 := a; x2 := x1 + h; f1 := f ( x1 ) ct timp x2 < b execut
{

Lucrarea de laborator 4

f 2 := f ( x2 ) dac f1 f 2 < 0 atunci { ci := x1 ; i := i + 1 } x1 := x2 ; x2 := x1 + h; f1 := f 2

Separarea grafic a rdcinilor Se construiete graficul funciei f ( x) pe [a; b] i vizual se caut punctele de intersecie ale graficului cu axa absciselor. Simplu se stabilesc intervalele de separare a rdcinilor. Construirea graficului deseori permite evidenierea rdcinilor de multiplicitate par. Deseori se aplic i urmtorul procedeu: ecuaia (4.1) se nlocuiete cu o ecuaie echivalent ei, de forma ( x) = ( x) , n care funciile
( x) i ( x) au reprezentri grafice mai simple. Abscisele punctelor de intersecie ale graficelor

funciilor ( x) i ( x) sunt rdcini ale ecuaiei (4.1). n cele ce urmeaz vom prezenta cteva metode iterative pentru aproximarea rdcinilor ecuaiei (4.1), metode care presupun c aceste rdcini au fost n prealabil separate. Metoda dihotomiei (biseciei, njumtirii intervalului) Fie
x [a0 ; b0 ] [a; b]

una dintre rdcinile separate. Se genereaz un ir de intervale

[a1 ; b1 ], [a2 ; b2 ] ,... cu proprietile urmtoare:

a) [ a0 ; b0 ] [ a1 ; b1 ] [ a2 ; b2 ] [ ai ; bi ] ; b) x [ ak ; bk ] , k = 1, 2, ; c) f (ak ) f (bk ) < 0 . Intervalul [ak ; bk ], k = 1, 2,... se obine n modul urmtor: Bazndu-ne pe observaia c f ( x) are semne opuse pe extremitile oricrui interval n interiorul cruia se conine rdcina (unic), se njumtete intervalul [ak 1 ; bk 1 ] i se selecteaz din cele dou subintervale obinute, cel care conine rdcina. irul de aproximaii ck +1 = (ak + bk ) 2, [ ak +1 ; bk +1 ] =
[ ak ; ck +1 ] , dac f (ak ) f (ck +1 ) < 0 , k = 0,1, , [ ck +1 ; bk ] , dac f (ak ) f (ck +1 ) > 0

converge n mod garantat ctre rdcina ecuaiei (4.1) (evident, procesul descris se ntrerupe dac
f (ck +1 ) = 0 i atunci se pune x = ck +1 ). Dac f (ck ) 0, k = 1, 2, , atunci continum calculul pn cnd se

va satisface inegalitatea bk ak < 2 [10; 16; 21; 23-24]. Mijlocul ck +1 = (ak + bk ) 2 al segmentului [ak ; bk ] va aproxima soluia x cu exactitatea dorit . Deoarece irul {ak }k 0 formeaz un ir de aproximaii prin lips ale rdcinii x , valorile
f (ak ), k = 0,1,... au acelai semn. innd cont de aceasta, la iteraia cu numrul k a algoritmului nu se va

calcula f (ak ) , ci se va utiliza valoarea f (a0 ) (aceasta nu influeneaz asupra semnului produsului
f (ak ) f (ck +1 ) ).

Pseudocodul algoritmului
Date de intrare: f - numele subprogramului-funcie (de tip real), cu ajutorul cruia se calculeaz valoarea funciei f ( x) ;

Lucrarea de laborator 4
(de tip real) precizia dorit;
a, b (de tip real) extremitile segmentului pe care este separat rdcina;

35

1 (de tip real) orice mrime mai mic dect 1 se consider egal cu zero.

Date de ieire: c (de tip real) aproximaia rdcinii ecuaiei; fc (de tip real) valoarea funciei f n punctul c ;

k (de tip ntreg) numrul de iteraii efectuate; ntreg s, k real c, fc k := 0; s := sign( f (a )); c := 0.5(a + b); fc := f (c)
ct timp ( fc 1 i b a 2 ) execut { dac sign( fc) = s atunci a := c

k := k + 1; c := 0.5(a + b); fc := f (c)


} scrie c, fc, k

altfel b := c

Analiza algoritmului Spre deosebire de alte metode iterative, metoda dihotomiei ntotdeauna converge atunci cnd funcia
f ( x) este continu i pentru aplicarea ei nu este necesar o alegere special a aproximaiei iniiale din [a0 ; b0 ] . Metoda converge liniar cu viteza unei progresii geometrice cu raia 1 2 [10; 16; 21; 23-24].

Numrul de iteraii n necesare pentru atingerea exactitii este n = log 2 ( ( b0 a0 ) ) . De regul, pentru metoda dihotomiei n este mai mare dect pentru alte metode iterative. Vom meniona c metoda nu poate fi aplicat pentru a calcula rdcinile de multiplicitate par. Metoda lui Newton (tangentelor) Conform metodei lui Newton aproximaia xk +1 a rdcinii este punctul de intersecie al tangentei la curba y = f ( x) , dus n punctul ( xk ; f ( xk )) , cu axa absciselor. Ipotezele necesare pentru aplicarea metodei sunt urmtoarele [2-5]: f C 2 [ a0 ; b0 ] (exist derivatele f ( x), f ( x ) continui pe [a0 ; b0 ] ), f (a0 ) f (b0 ) < 0 , iar f ( x ) i f ( x) pstreaz semnul constant pe [ a0 ; b0 ] . Aceste condiii asigur existena unei singure rdcini x pe [ a0 ; b0 ] . Putem concluziona c pentru a aplica cu succes garantat metoda lui Newton este necesar nu doar s se afle un careva interval de separare a rdcinii, ci s se stabileasc un astfel de interval (ntr-att de mic) nct funcia f ( x) s fie monoton (adic f ( x ) pstreaz semnul) i convex sau concav (adic f ( x) pstreaz semnul) pe acesta. Formula de calcul a metodei lui Newton este definit prin relaia recurent:
xk +1 = xk f ( xk ) , k = 0,1, 2,... , f ( xk )

(4.2)

n condiiile impuse mai sus asupra funciei f ( x) , dac aproximaia iniial x0 [a0 ; b0 ] se alege astfel nct s se satisfac condiia:
f ( x0 ) f ( x0 ) > 0 ,

(4.3)

atunci irul numeric {xk }k 0 generat conform formulei (4.2) va converge ctre rdcina x [2-5; 8].

36

Lucrarea de laborator 4 Drept criteriu de stopare a calculelor n acest proces iterativ servete inegalitatea [2-5; 8; 17]:
xk +1 x M2 max ( xk +1 xk )2 < , k = 0,1, ...; M 2 = x[a ;b ] f ( x) , m1 = xmin ] f ( x) . [ a0 ;b0 2m1 0 0

(4.4)

n cazul n care calculul constantelor m1 i M 2 ntmpin dificulti, pentru a calcula rdcina ecuaiei (4.1) cu exactitatea poate fi utilizat urmtorul criteriu: procesul iterativ stopeaz atunci cnd ambele mrimi xk +1 xk i f ( xk +1 ) devin mai mici ca . Pseudocodul algoritmului
Date de intrare: f ( f , f ) numele subprogramului-funcie (de tip real), cu ajutorul cruia se calculeaz valoarea funciei f ( x) (derivatei f ( x) , derivatei a doua f ( x) );

(de tip real) precizia dorit;

a, b (de tip real) extremitile segmentului pe care este separat rdcina; m1 , M 2 (de tip real) constante ce figureaz n formula (4.4) pentru stoparea calculelor.

Date de ieire: x (de tip real) aproximaia rdcinii ecuaiei; f ( x) (de tip real) valoarea funciei f n punctul x ;

k (de tip ntreg) numrul de iteraii efectuate; ntreg k real x, 1 , d

1 := 2m1 M 2 ; k := 0
dac f ( a) f ( a ) > 0 atunci x := a altfel x := b execut {

d := f ( x) f ( x); x := x d ; k := k + 1

} ct timp d 1 scrie x, f ( x), k

Algoritmul lui Newton a fost descris pentru cazul n care rdcina ecuaiei este separat pe intervalul [a0 ; b0 ] , iar funciile f ( x ) i f ( x) au semn constant pe acest interval, aproximaia iniial x0 alegndu-se conform formulei (4.3). n cazul general, cnd este dificil s se separe rdcina astfel nct s se satisfac toate condiiile ce asigur convergena metodei, se procedeaz n modul urmtor: aproximaia iniial se alege aleator de pe [a0 ; b0 ] , iar dac dup un numr fixat de iteraii nu ajungem la precizia dorit, se reia procedeul cu o alt valoare a aproximaiei iniiale. n cazul menionat vom utiliza urmtorul algoritm de calcul:
Date de intrare: f ( f ) numele subprogramului-funcie (de tip real), cu ajutorul cruia se calculeaz valoarea funciei

f ( x) (derivatei f ( x) ); x0 (de tip real) aproximaia iniial; nmax (de tip ntreg) numrul de iteraii maximal admisibil;

(de tip real) precizia dorit. Date de ieire: x (de tip real) aproximaia rdcinii ecuaiei; f ( x) (de tip real) valoarea funciei f n punctul x ;

k (de tip ntreg) numrul de iteraii efectuate; ind (de tip ntreg) indicatorul cauzei stoprii procesului de calcul:

Lucrarea de laborator 4

37

dac ind = 0 , atunci rdcina ecuaiei este gsit cu exactitatea dorit; dac ind = 1 , atunci iteraiile nu converg la rdcina ecuaiei; dac ind = 2 , atunci numrul de iteraii efectuate a depit numrul maximal admisibil nmax , ceea ce nseamn sau c s-a luat o aproximaie iniial nepotrivit, sau c valoarea vecintatea rdcinii; ntreg k , ind real x, d 0 , d

f ( x) este mic n

k := 0; d 0 := [log 2 log 2 1 ] + 1; ind := 0;


execut {

d := f ( x0 ) f ( x0 ); x := x0 d
dac d d 0 atunci { dac k > nmax atunci { ind := 2 ; STOP }

k := k + 1; x0 := x; d 0 := d
} altfel { ind := 1 ; STOP } } ct timp d scrie x, f ( x), k , ind

Analiza algoritmului n cazul n care se satisfac condiiile suficiente de convergen, irul {xk }k 0 , generat conform metodei lui Newton, converge monoton i unilateral ctre rdcina x [2-5; 16; 23-24]. Numrul minim de iteraii n necesare pentru calculul rdcinii cu exactitatea relativ este n = [log 2 log 2 (1 )] + 1 [17]. La fiecare iteraie a metodei lui Newton volumul de calcule este mai mare dect la alte metode iterative, deoarece este necesar s se calculeze nu numai valoarea funciei f ( x) , ci i a derivatei ei. n schimb viteza de convergen este esenial mai mare dect la alte metode. Dac rdcina x este simpl, metoda lui Newton are vitez ptratic de convergen. Aceasta nseamn c eroarea aproximaiei n vecintatea rdcinii simple este aproximativ egal ptratului erorii aproximaiei precedente, adic dup fiecare iteraie numrul cifrelor exacte se dubleaz. Nu este indicat s aplicm metoda lui Newton atunci cnd prima derivat are valori mici n vecintatea rdcinii, adic graficul funciei n vecintatea rdcinii este aproape paralel axei absciselor. n acest caz, procesul de calcul ar putea s devin laborios, iar erorile de rotunjire a numerelor pot genera efectul invers irul de aproximaii va ncepe s divearg. Metoda lui Newton modificat (Newton-Kantorovich) Atunci cnd calculul valorilor f ( xk ) din formula (4.2) implic dificulti, se poate utiliza o variant simplificat, cunoscut sub numele de NewtonKantorovich [23, p.219]. Acest algoritm utilizeaz o singur evaluare a derivatei n punctul iniial x0 . Procesul iterativ se definete prin urmtoarea formul de recuren:
xk +1 = xk f ( xk ) f ( x0 ), k = 0,1,... ,

unde x0 [a0 ; b0 ] verific condiia (4.3). irul {xk }k 0 converge ctre rdcina x a ecuaiei (4.1) n

38

Lucrarea de laborator 4

aceleai condiii ca i pentru metoda lui Newton [23-24]. Pseudocodul algoritmului de calcul al metodei lui Newton se modific uor pentru rezolvarea ecuaiei (4.1), conform metodei lui Newton modificate. Analiza algoritmului Dei converge mai lent dect metoda lui Newton, metoda modificat are avantajul c nu necesit calculul derivatei f ( xk ) la fiecare iteraie. Metoda secantelor (Newton discret) Pentru a evita calculul valorilor derivatei, n metoda lui Newton se poate face apel la aproximarea numeric a acestora:
f ( xk ) f ( xk ) f ( xk 1 ) . xk xk 1

Metoda astfel obinut, bazat pe formula recurent:


xk +1 = xk f ( xk ) ( xk xk 1 ) , k = 1, 2,... , f ( xk ) f ( xk 1 )

(4.5)

este cunoscut sub numele de metoda secantelor. Aproximaia xk +1 a rdcinii este punctul de intersecie al secantei duse prin ( xk 1; f ( xk 1 )) i ( xk ; f ( xk )) cu axa absciselor. Metoda folosete o funcie de iteraie de dou variabile xk +1 = g ( xk 1 , xk ) , deci, necesit o iniializare dubl x0 , x1 . Dac asupra funciei f ( x) se impun aceleai restricii ca i n cazul metodei lui Newton, aproximaiile iniiale x0 i x1 se pot alege n modul urmtor:
a0 dac f (a0 ) f (a0 ) > 0 a0 + dac f (a0 ) f (a0 ) > 0 , x1 = . x0 = b0 dac f (a0 ) f (a0 ) < 0 b0 dac f (a0 ) f (a0 ) < 0

Aici este exactitatea cu care se calculeaz rdcina. ntruct irul numeric generat conform metodei secantelor converge unilateral ctre rdcin, calculele vor stopa atunci, cnd ambele mrimi xk +1 xk i f ( xk +1 ) devin mai mici ca [17; 21; 24]. Pseudocodul algoritmului
Date de intrare: f ( f ) numele subprogramului-funcie (de tip real), cu ajutorul cruia se calculeaz valoarea funciei

f ( x) (derivatei a doua f ( x) );

(de tip real) precizia dorit. Date de ieire: x (de tip real) aproximaia rdcinii ecuaiei; fx (de tip real) valoarea funciei f n punctul x ;
k (de tip ntreg) numrul de iteraii efectuate; ntreg k real x0 , x, d , fx0 , fx
dac f (a) f (a ) > 0 atunci {x0 := a; x := a + } altfel {x0 := b; x := b } execut {

a, b (de tip real) extremitile segmentului pe care este separat rdcina;

k := 0; d := x x0 ; fx0 := f ( x0 ); fx := f ( x) d := d fx

( fx0 fx ) ;

x := x + d ; fx0 := fx; fx := f ( x); k := k + 1

Lucrarea de laborator 4
} ct timp ( d sau fx ) scrie x, fx, k

39

Algoritmul de calcul a fost descris astfel, nct la fiecare iteraie s se calculeze o singur valoare nou pentru funcia f ( x) . Analiza algoritmului Metoda secantelor este un algoritm iterativ n doi pai (aproximaia xk +1 se calculeaz n funcie de dou aproximaii anterioare xk i xk 1 ) i, n condiii identice cu cele impuse asupra funciei f ( x) n metoda lui Newton, converge monoton i unilateral. Viteza de convergen a metodei n vecintatea rdcinii simple x este superliniar i se determin de relaia [17; 21; 23-24]:
xk +1 x C xk x
m

n care indicele este m = 0.5 1 + 5 1.618 . Numrul minim de iteraii n , necesare pentru calculul rdcinii cu exactitatea relativ este
n = [1.44 log 2 log 2 1 ] + 1 [17]. Dei metoda secantelor converge mai lent dect metoda Newton, efectund

acelai volum de operaii, prin metoda secantelor s-ar putea obine o precizie mai mare, innd cont c aici se cere numai calculul valorilor funciei, dar nu i al valorilor derivatei. n numitorul formulei de calcul (4.5) avem diferena valorilor funciei, ceea ce poate conduce la pierderea cifrelor semnificative n vecintatea rdcinii, deoarece valorile funciei devin mici i aproximativ egale. Apare o acumulare esenial a erorii n urma creia suntem mrginii n calculul rdcinii cu o precizie nalt. Problema dat poate fi depit astfel. Se alege un numr 1 nu prea mic i se fac iteraii pn atunci cnd se va ndeplini inegalitatea xk +1 xk < 1 . Apoi calculele continu, ct mai descrete mrimea xk +1 xk . Prima cretere a mrimii xk +1 xk nseamn nceputul manifestrii

fenomenului descris i, de aceea, iteraiile se ntrerup. Algoritmul descris este cunoscut ca procedeul lui Garvik [16-17; 24]. Pentru a depi problema menionat, deseori se aplic mai nti metoda secantelor, apoi se trece la aplicarea metodei lui Newton. Metoda coardelor (interpolrii liniare, falsei poziii, secantelor cu un capt fixat) n formula de calcul (4.5) se fixeaz aproximaia xk 1 = x0 pentru toi k = 2,3,... , apoi, n baza aceleiai formule, se calculeaz aproximaia xk +1 (k = 1, 2,...) astfel, nct rdcina ecuaiei s aparin intervalului [ xk +1 ; x0 ] (dac xk +1 < x0 ) sau [ x0 ; xk +1 ] (dac x0 < xk +1 ). Astfel, n condiii identice cu cele impuse asupra funciei f ( x) n metoda lui Newton, dac f (a0 ) f (a0 ) > 0 se consider n formula (4.5)
xk 1 = a0 (k = 1, 2,...) , iar n cazul n care f (a0 ) f (a0 ) < 0 , avem xk 1 = b0 (k = 1, 2,...) .

Aproximaia xk +1 a rdcinii se determin ca punctul de intersecie cu axa absciselor al coardei care trece prin punctele de coordonate ( xk ; f ( xk )) (k 1) i ( x0 ; f ( x0 )) . Dintre intervalele formate se selecteaz acela n extremitile cruia funcia are valori de semne contrare.

40

Lucrarea de laborator 4 Prin urmare, formula de calcul a metodei coardelor se definete prin urmtoarea relaie de recuren:
f ( xk ) xk f ( x ) f (a ) ( xk a0 ) (k = 1, 2,...) dac f (a0 ) f (a0 ) > 0 k 0 xk +1 = . f ( xk ) x ( x b ) (k = 1, 2,...) dac f (a0 ) f (a0 ) < 0 k f ( xk ) f (b0 ) k 0

Aproximaia iniial x1 [a0 ; b0 ] se alege n modul urmtor:


b0 dac f ( a0 ) f (a0 ) > 0 x1 = . a0 dac f ( a0 ) f (a0 ) < 0

Drept criteriu de stopare a calculelor n procesul iterativ servete inegalitatea [2-4; 16; 23-24]:
xk +1 x M 1 m1 xk +1 xk < (k = 1, 2,...); M 1 = max f ( x) , m1 = min f ( x) . x[ a0 ;b0 ] x[ a0 ;b0 ] m1

(4.6)

n cazul n care calculul constantelor M 1 i m1 ntmpin dificulti, pentru a calcula rdcina ecuaiei (4.1) cu exactitatea se poate utiliza condiia ca mrimile xk +1 xk i f ( xk +1 ) s devin mai mici ca simultan. Pseudocodul algoritmului
Date de intrare: f ( f ) numele subprogramului-funcie (de tip real), cu ajutorul cruia se calculeaz valoarea funciei

f ( x) (derivatei a doua f ( x) );

(de tip real) precizia dorit; Date de ieire: x (de tip real) aproximaia rdcinii ecuaiei; fx (de tip real) valoarea funciei f n punctul x ;
k (de tip ntreg) numrul de iteraii efectuate; ntreg k real x, x f , d , fx, fx f
dac f ( a) f ( a ) > 0 atunci {x := b; x f := a} altfel {x := a; x f := b}

a, b (de tip real) extremitile segmentului pe care este separat rdcina;

k := 0; fx := f ( x); fx f := f ( x f )
execut {

d := ( x x f ) fx

( fx fx ) ;
f

x := x d ; fx := f ( x); k := k + 1

} ct timp ( d sau fx ) scrie x, fx, k

Analiza algoritmului Metoda coardelor este un algoritm iterativ ntr-un singur pas i, n condiii identice cu cele impuse funciei f ( x) n metoda lui Newton, converge monoton i unilateral. Viteza de convergen a metodei n vecintatea rdcinii simple x este liniar (a se vedea relaia (4.6)). Analiza formulei de calcul a metodei coardelor (dar i a formulei metodei secantelor) ne sugereaz c aceasta poate fi aplicat n calculul rdcinilor ecuaiei (4.1), atunci cnd funcia f ( x) este continu pe
[a0 ; b0 ] . Astfel, metoda coardelor (ca i metoda secantelor), spre deosebire de metoda lui Newton, este

Lucrarea de laborator 4

41

aplicabil unei clase mai largi de funcii f ( x) . Totodat, vom ine cont c existena derivatelor f ( x) i
f ( x) , care nu se anuleaz pe intervalul de localizare [a0 ; b0 ] , asigur aplicarea cu succes a metodei.

Metoda iteraiei simple (metoda aproximaiilor succesive, metoda contraciilor) Aplicarea metodei necesit nlocuirea ecuaiei (4.1) cu o ecuaie echivalent de forma:
x = ( x) ,

(4.7)

unde ( x) C1[a0 ; b0 ] . Se alege aproximaia iniial x0 [a0 ; b0 ] i se genereaz succesiv irul aproximaiilor conform formulei
xk +1 = ( xk ), k = 0,1,... .

(4.8)

Dac irul { xk }k 0 este convergent, atunci limita acestuia este rdcina ecuaiei (4.1) de pe [a0 ; b0 ] . Exist mai multe posibiliti de a reprezenta n mod echivalent ecuaia (4.1) sub forma (4.7), reprezentri ce asigur convergena procesului iterativ (4.8) atunci, cnd aproximaia iniial x0 se ia dintr-o vecintate suficient de mic a rdcinii. n continuare, vom descrie un astfel de procedeu de construcie a funciei ( x) , care asigur convergena metodei iteraiei simple pentru orice aproximaie iniial x0 [a0 ; b0 ] . Ipotezele necesare sunt urmtoarele: x [a0 ; b0 ] [a; b] este rdcina separat pe intervalul indicat, f ( x) C1[a0 ; b0 ] , iar f ( x) pstreaz semnul constant pe [a0 ; b0 ] . n cazul n care
f ( x) > 0, x [a0 ; b0 ] , funcia ( x) se ia de forma ( x) = x f ( x) , iar atunci cnd f ( x) < 0 , x [a0 ; b0 ] ,

de forma ( x) = x + f ( x) . Valoarea parametrului , n ambele cazuri, se determin de una dintre formulele (1) = 2 ( M + m) sau (2) = 1 M , n care m = min f ( x) , M = max f ( x) [3; 8; 16; 21].
x[ a0 ;b0 ] x[ a0 ;b0 ]

Pentru a calcula rdcina x cu exactitatea cerut , se utilizeaz una dintre relaiile [2-4; 8; 16-17]:
xk +1 x

q xk +1 xk , k = 0,1,..., 1 q

q k +1 xk +1 x x1 x0 , k = 0,1,... . 1 q

(4.9)

Constanta q se calculeaz astfel: q q (1) = ( M m) ( M + m) sau q q (2) = 1 m M [16-17]. Pseudocodul algoritmului


Date de intrare: f ( f ) numele subprogramului-funcie (de tip real), cu ajutorul cruia se calculeaz valoarea funciei

(de tip real) precizia dorit. Date de ieire: x (de tip real) aproximaia rdcinii ecuaiei; f ( x) (de tip real) valoarea funciei f n punctul x ;
k (de tip ntreg) numrul de iteraii efectuate; ntreg k real x, q, 1 , , d

f ( x) (derivatei f ( x) ); a (de tip real) extremitatea de stnga a segmentului de localizare a rdcinii; m, M (de tip real) constante ce figureaz n formula (4.9) pentru stoparea calculelor;

q := ( M m) ( M + m); 1 := (1 q ) q ; := 2 ( M + m); k := 0; x := a dac f ( x) < 0 atunci :=


execut

42
{

Lucrarea de laborator 4
d := f ( x); x := x d ; k := k + 1

} ct timp d 1 scrie x, f ( x), k

Analiza algoritmului Dac pe [a0 ; b0 ] se ndeplinete inegalitatea 0 < ( x) < 1 , atunci irul de aproximaii generat conform metodei iteraiei simple converge monoton i unilateral ctre rdcin [2-5; 8; 10; 13; 15-17]. Dac, ns
1 < ( x) < 0 , atunci convergena este bilateral [2-5; 8; 15-17], caz n care se poate lua drept criteriu de

stopare a calculelor ndeplinirea condiiei xk +1 xk < . Dac ( x) < 1 pe o careva vecintate a rdcinii, iar n exteriorul acesteia avem ( x) > 1 , atunci iteraiile vor converge cnd aproximaia iniial x0 este aleas suficient de aproape de rdcin. n acest caz, pentru o aproximaie iniial arbitrar s-ar putea s nu avem convergen. Numrul minim de iteraii n necesare pentru a calcula rdcina cu exactitatea este
n = ln ( x1 x0 (1 q ) ) ln (1 q ) + 1 [17]. n general, viteza de convergen a procesului iterativ este

liniar (a se vedea relaia (4.9)). Calculul rdcinilor ecuaiilor polinomiale Metodele numerice, analizate mai sus, se aplic cu succes i n calculul rdcinilor ecuaiilor polinomiale f ( x) = 0 , unde f ( x) p( x) = n x n + n 1 x n 1 + ... + 1 x + 0 . Vom analiza, totui, unele aspecte ce in de implementarea metodei lui Newton. Conform formulei de calcul (4.2), realizarea iteraiei cu numrul k + 1 necesit calculul valorilor p( xk ) i p( xk ) . Deoarece p( x) i p( x) sunt polinoame, valorile acestora pot fi calculate eficient, cu un numr minim de operaii aritmetice, utiliznd algoritmul lui Horner [24-25]. Conform acestuia, dac n = n i j = j + j +1 xk , j = n 1, n 2,...,0 , atunci p( xk ) = 0 . Mai mult, dac q ( x) = n x n 1 + n 1 x n 2 + ... + 2 x + 1 , atunci p( x) = ( x xk )q ( x) + 0 . Derivnd ambii membri ai ultimei relaii, obinem p( x) = q( x) + ( x xk )q( x) , de unde p( xk ) = q ( xk ) . Valoarea q ( xk ) se calculeaz utiliznd formulele: n 1 = n , j 1 = j + j xk , j = n 1, n 2,...,1, q( xk ) = 0 . Prin urmare, atunci cnd se aplic metoda lui Newton n calculul rdcinilor ecuaiilor polinomiale, utilizarea algoritmului lui Horner permite calculul simultan al valorilor p( xk ) i p( xk ) . Pseudocodul algoritmului
Date de intrare: n (de tip ntreg) gradul polinomului p( x) ;

[n] tabloul (cu elemente de tip real; indici de la 0 la n ) coeficienilor polinomului p( x) ; (de tip real) precizia dorit;
a, b (de tip real) extremitile segmentului pe care este separat rdcina; m1 , M 2 (de tip real) constante ce figureaz n formula (4.4) pentru stoparea calculelor.
Date de ieire: x (de tip real) aproximaia rdcinii ecuaiei; f ( x) (de tip real) valoarea funciei f n punctul x ;

k (de tip ntreg) numrul de iteraii efectuate;

Lucrarea de laborator 4
ntreg k real x, y, z , 1 , d

43

1 := 2m1 M 2 ; k := 0
dac f ( a) f ( a ) > 0 atunci x := a altfel x := b execut {

y := n ; z := n y := xy + 0 ; d := y z ; x := x d ; k := k + 1

pentru j := n 1,1 execut { y := xy + j ; z := xz + y } } ct timp d 1 scrie x, f ( x), k

Calculul rdcinilor multiple Fie x [a0 ; b0 ] o rdcin a ecuaiei (4.1) de multiplicitate m > 1 (m ) , iar f C 2 [a0 ; b0 ] . n acest caz, orict de ngust nu ar fi intervalul [a0 ; b0 ] ce l conine pe x , funcia f ( x) nu va satisface pe acesta toate condiiile ce asigur convergena proceselor iterative analizate mai sus. i chiar dac, n anumite condiii, metoda lui Newton sau metoda secantelor converge, viteza de convergen a acestora este mai mic dect n cazul cnd se aplic n calculul unei rdcini simple a ecuaiei (4.1). De exemplu, n condiiile impuse mai sus funciei f ( x) , n vecintatea rdcinii, metoda lui Newton converge cu viteza liniar a unei progresii geometrice cu raia (m 1) m . De aceea, algoritmii metodelor iterative pentru calculul rdcinilor simple ale ecuaiei (4.1), se modific astfel, nct s convearg garantat i s pstreze rata convergenei atunci, cnd sunt utilizai n calculul rdcinilor multiple. Rdcina x [a0 ; b0 ] a ecuaiei (4.1), de multiplicitate m , este i rdcin a ecuaiei f ( x) = 0 , dar deja de multiplicitate m 1 . Atunci x este rdcin simpl a ecuaiei g ( x) = 0 , unde g ( x) = f ( x) f ( x) . Cnd funcia g ( x) este suficient de neted, rdcina x poate fi calculat, utiliznd algoritmii iterativi analizai mai sus. 4.III. Modul de desfurare a lucrrii Cerine fa de ndeplinirea lucrrii S se elaboreze un program, destinat localizrii tuturor rdcinilor reale ale ecuaiei f ( x) = 0 pe intervalul specificat [a; b] . S se implementeze algoritmii metodelor numerice (analizate mai sus) pentru calculul rdcinilor ecuaiei f ( x) = 0 ntr-un limbaj de programare de nivel nalt. Programul de calcul s se testeze pe exemplele propuse la sfritul lucrrii de laborator. S se extrag la tipar rdcinile ecuaiei, valorile funciei f ( x) pentru rdcini, numrul de iteraii, necesar pentru a obine exactitatea cerut > 0 , precum i timpii necesari pentru efectuarea unei iteraii i pentru atingerea unei precizii dorite. n plus, pentru fiecare metod se va afia i reprezenta grafic variaia erorii aparente Cauchy xk +1 xk (distana dintre dou iteraii succesive) i a reziduului f ( xk +1 ) pe parcursul iteraiilor. Se vor compara rezultatele obinute prin diferite metode (eficiena lor relativ n rezolvarea problemei date) i se va determina metoda optim.

44

Lucrarea de laborator 4

Chestiuni de studiat 1. Comparai eficiena diferitelor metode iterative pentru rezolvarea aceleiai ecuaii. 2. Analizai cum depinde eficiena rezolvrii de aproximaia iniial adoptat. 3. S se fac o analiz experimental a dependenei timpului de calcul al rdcinii ecuaiei printr-o metod iterativ de exactitatea de calcul impus. 4. Propunei diferite criterii sigure pentru stoparea iteraiilor. 5. Pentru fiecare metod iterativ analizat, s se formuleze un exemplu de ecuaie, astfel nct respectivul proces iterativ s nu convearg. Probleme propuse spre rezolvare
1a. ln( x 4) + 4sin 3x + 1 = 0; [ a; b] = [0.1;5]; 2a. ln(8.5 x) 9.6cos 2 x = 0; [a; b] = [0.5;9]; 3a. e + x 1 = 0; [a; b] = [5;2];
3 x

14a. ln x cos x x = 0; [a; b] = [1;11]; 15a. 6 x sin x 2 + x 3 1 = 0; [a; b] = [3;3]; 16a. e x x 4cos 6 x 1 = 0; [a; b] = [3; 2];
2

4a. 2 x + x 2 6sin 2 x = 0; [ a; b] = [ 3;2]; 5a. x 5sin 2 x 0.3 = 0; [a; b] = [3;2];


2

17 a. cos x + x 3 e x = 0; [a; b] = [2;6]; 18a. x 3 5arctgx = 0; [a; b] = [2;3]; 19a. ln x 3cos 2 x = 0; [a; b] = [0.5;8]; 20a. e x 3cos 2 x = 0; [a; b] = [9; 2]; 21a. e 2 x cos3 x = 0; [a; b] = [9;1]; 22a. shx 5cos 3x = 0; [a; b] = [2;3]; 23a. e 2 x sin x = 0; [a; b] = [0;10]; 24a. e 3 x cos x = 0; [a; b] = [1;9]; 25a. arctgx + 2sin x 2 = 0; [a; b] = [2;3]; 26a. sin x 2 + 2cos x = 0; [a; b] = [6;6];

6a. ln x ( x 2) 5sin 3x = 0; [a; b] = [0.1; 4];


3

7 a. 2sin 3 x ln( x3 1) + 4 = 0; [a; b] = [2;9]; 8a. sin( x 6) cos( x 1) = 0; [a; b] = [ 7;8]; 9a. e x 4 x 3 = 0; [a; b] = [4;4];
x 2

10a. 10 x + sin x = 0; [a; b] = [10;1]; 11a. e x x 3 + 8cos 4 x = 0; [a; b] = [4; 4]; 12a. chx 3sin 3x = 0; [ a; b] = [ 2;3]; 13a. x cos x sin x = 0; [a; b] = [9;9];

Lucrarea de laborator 4
1b. x 6 5.5 x5 + 6.18 x 4 + 18.54 x 3 56.9592 x 2 + 55.9872 x 19.3156 = 0; [a; b] = [3; 4]; 2b. x 6 0.7 x 5 8.7 x 4 + 5.58 x 3 + 22.356 x 2 8.39808 x 19.3156 = 0; [a; b] = [3;4]; 3b. x 6 2.4 x 5 18.27 x 4 + 23.216 x 3 + 115.7 x 2 19.5804 x 164.818 = 0; [a; b] = [3;4]; 4b. x 6 1.8 x5 18.87 x 4 + 17.06 x 3 + 117.533x 2 14.2296 x 182.613 = 0; [a; b] = [3;4]; 5b. x 6 1.6 x5 20.46 x 4 + 14.432 x 3 + 134.548 x 2 + 4.18968 x 204.99 = 0; [a; b] = [ 3;4]; 6b. x 6 1.4 x 5 22.07 x 4 + 11.292 x 3 + 152.842 x 2 + 28.1318 x 227.101 = 0; [a; b] = [3;4]; 7b. x 6 1.2 x5 25.35 x 4 + 8.45 x3 + 197.73 x 2 + 61.6918 x 320.797 = 0; [a; b] = [3;4]; 8b. x 6 0.8 x5 24.23 x 4 + 2.786 x 3 + 178.428 x 2 + 63.5305 x 288.739 = 0; [a; b] = [3;4]; 9b. x 6 0.6 x5 23.64 x 4 + 0.152 x3 + 169.104 x 2 + 64.247 x 273.342 = 0; [a; b] = [3;4]; 10b. x 6 0.4 x 5 23.03 x 4 2.35 x 3 + 159.999 x 2 + 64.8284 x 258.367 = 0; [a; b] = [3; 4]; 11b. x 6 0.2 x 5 22.4 x 4 4.72 x3 + 151.112 x 2 + 65.2746 x 243.814 = 0; [a; b] = [3;4]; 12b. x 6 + 0.2 x5 21.08 x 4 9.064 x3 + 133.994 x 2 + 65.7613 x 215.974 = 0; [a; b] = [3; 4]; 13b. x 6 + 0.4 x5 20.39 x 4 11.038 x 3 + 125.762 x 2 + 65.8018 x 202.686 = 0; [a; b] = [3; 4]; 14b. x 6 + 0.7 x 5 21.02 x 4 15.582 x 3 + 133.82 x 2 + 83.3903x 226.984 = 0; [a; b] = [3;4]; 15b. x 6 + 0.5 x 5 21.77 x 4 13.665 x 3 + 142.787 x 2 + 83.9808 x 241.865 = 0; [ a; b] = [ 3;4]; 16b. x 6 + 0.3 x5 22.5 x 4 11.61x3 + 151.997 x 2 + 84.4401x 257.217 = 0; [a; b] = [3; 4]; 17b. x 6 + 0.1x 5 23.21x 4 9.417 x 3 + 161.449 x 2 + 84.7681x 273.043 = 0; [ a; b] = [ 3;4]; 18b. x 6 0.1x5 23.9 x 4 7.086 x 3 + 171.145 x 2 + 84.9649 x 289.34 = 0; [a; b] = [3;4]; 19b. x 6 0.3x 5 24.57 x 4 4.617 x 3 + 181.084 x 2 + 85.0306 x 306.11 = 0; [a; b] = [3; 4];

45

20b. x 6 0.5 x 5 25.22 x 4 2.01x 3 + 191.265 x 2 + 84.9649 x 323.352 = 0; [ a; b] = [ 3;4]; 21b. x 6 0.7 x5 25.85 x 4 + 0.735 x 3 + 201.69 x 2 + 84.7681x 341.067 = 0; [a; b] = [3;4]; 22b. x 6 0.9 x 5 26.46 x 4 + 3.618 x3 + 212.358 x 2 + 84.4401x 359.254 = 0; [a; b] = [3; 4]; 23b. x 6 0.6 x5 27.51x 4 1.592 x 3 + 227.002 x 2 + 110.074 x 400.668 = 0; [a; b] = [3; 4]; 24b. x 6 0.4 x 5 26.84 x 4 4.448 x 3 + 215.398 x 2 + 109.635 x 380.384 = 0; [ a; b] = [ 3;4]; 25b. x 6 + 0.8 x5 22.4 x 4 18.56 x3 + 151.424 x 2 + 104.366 x 269.746 = 0; [a; b] = [3;4]; 26b. x 6 + 1.3 x 5 22.1x 4 25.51x 3 + 149.365 x 2 + 124.88 x 281.254 = 0; [ a; b] = [ 3;4].

46

Lucrarea de laborator 5

LUCRAREA DE LABORATOR 5
REZOLVAREA NUMERIC A SISTEMELOR DE ECUAII ALGEBRICE LINIARE I. Scopul lucrrii Studiul unor metode numerice de rezolvare a sistemelor de ecuaii algebrice liniare i implementarea acestora ntr-un limbaj de programare de nivel nalt. II. Prezentarea teoretic a lucrrii Formularea problemei S considerm sistemul de ecuaii algebrice liniare (prescurtat SEAL):
Ax = b ,

(5.1)

n care A este o matrice ptrat de ordinul n cu elementele numere reale, iar x i b sunt vectori cu componente din spaiul euclidian n - dimensional n . Cunoscnd matricea A = {aij }in, j =1 a coeficienilor sistemului i vectorul b = {bi }in=1 al termenilor liberi, se pune problema determinrii soluiei x = {x j }nj =1 . n continuare, vom presupune c det A 0 (matricea A este nesingular), condiie ce asigur existena i unicitatea soluiei SEAL (5.1). Metodele de rezolvare a SEAL le putem mpri n dou categorii: a) Metode directe (sau metode exacte) ce se caracterizeaz prin faptul c soluia sistemului se obine printr-o secven de operaii care se execut o singur dat, numrul total de operaii aritmetice elementare fiind finit i cunoscut de la nceput. Soluia calculat printr-o metod direct difer de soluia exact datorit erorilor de rotunjire. b) Metode iterative conform crora soluia sistemului se obine printr-un proces de aproximaii succesive. O secven de operaii este parcurs de mai multe ori, obinnd aproximaii tot mai bune ale soluiei, pn la atingerea unei precizii fixate n prealabil. n cele ce urmeaz vom prezenta cele mai cunoscute metode de rezolvare a SEAL (5.1) (reprezentante ale ambelor categorii menionate) i vom face o analiz comparativ a eficienei acestora. Metode directe Metoda eliminrii a lui Gauss const din dou etape [1-5; 10-11; 15-16; 21-26]: 1) transformarea sistemului (5.1) ntr-un sistem echivalent cu matrice superior triunghiular:
n

a
j =i

(i ) ij

x j = bi( i ) , i = 1, n ;

(5.2)

2) rezolvarea sistemului (5.2) utiliznd metoda substituiei inverse (eliminrii inverse).


(1) Vom utiliza notaiile bi(1) := bi , aij := aij , i, j = 1, n . Soluia sistemului (5.1) se obine prin aplicarea

formulelor:
( (k ( ( ( mik = aikk ) akk ) , bi( k +1) = bi( k ) mik bk( k ) , aijk +1) = aijk ) mik akjk ) , i, j = k + 1, n ,

(5.3)

pentru k = 1, n 1 , apoi a formulelor:


( (n xn = bnn ) ann ) , xk = bk( k )
n j = k +1

(k ) kj

(k x j akk ) , k = n 1,1 ,

(5.4)

Lucrarea de laborator 5
( n ipoteza c akkk ) 0, k = 1, n .

47

Se poate utiliza i o form modificat a metodei de eliminare a lui Gauss, cunoscut sub numele de algoritmul de eliminare a lui Gauss-Jordan [3; 10-11; 15-16; 21-26], conform cruia sistemul (5.1) se transform ntr-un sistem echivalent cu matrice diagonal. n acest caz se simplific etapa a doua, n care se calculeaz soluia sistemului. Algoritmul de calcul, care conduce la sistemul cu matrice diagonal, este definit de formulele (5.3) i (5.4) n care indicii i, j i k variaz n limitele urmtoare:

(k k = 1, n, i = 1,..., k 1, k + 1,..., n, j = k + 1, n . Componentele soluiei se determin prin formula xk = bk( k ) akk ) ,

k = 1, n .

Pseudocodul algoritmului
Date de intrare: n (de tip ntreg) ordinul sistemului liniar; a[n, n] - tablou bidimensional (cu elemente de tip real; indici de la 1 la n ) ce conine componentele matricei coeficienilor sistemului; b[n] - tablou (cu elemente de tip real; indici de la 1 la n ) ce conine componentele vectorului termenilor liberi ai sistemului. Date de ieire: x[n] - tablou (cu elemente de tip real; indici de la 1 la n ) ce conine componentele soluiei sistemului. Algoritmul de eliminare a lui Gauss (vom nota Algoritmul de eliminare a lui Gauss-Jordan (vom a.e.G) nota a.e.GJ) ntreg i, j , k ntreg i, j , k real s, m real m tablou real x[n] tablou real x[n] pentru k := 1, n 1 execut { pentru i := k + 1, n execut { dac aik 0 atunci { pentru k := 1, n execut { pentru i := 1, n execut { dac aik 0 atunci { dac i k atunci {

*
}

m := aik akk ; aik := 0; bi := bi mbk

pentru j := k + 1, n execut aij := aij m akj } } dac ann = 0 atunci { se afieaz mesajul matricea sistemului este singular (MSS); STOP }

m := aik akk ; aik := 0; bi := bi mbk


pentru j := k + 1, n execut aij := aij m akj } } } } dac ann = 0 atunci {se afieaz mesajul matricea pentru k := 1, n execut xk := bk akk

xn := bn ann

pentru k := n 1,1 execut {

** sistemului este singular (MSS); STOP }


pentru k := 1, n scrie xk

**

s := 0
pentru j := k + 1, n execut s := s + akj x j

xk := ( bk s ) akk
} pentru k := 1, n scrie xk

Remarc. Pentru soluia x nu este necesar rezervarea unei zone de memorie special, n acest sens, memoria alocat vectorului termenilor liberi poate fi destinat i soluiei. n plus, ntruct la etapa k a
( algoritmilor menionai se anuleaz elementele aikk ) , i = k + 1, n , locaiile de memorie rezervate pentru

48 acestea pot fi utilizate pentru a memora multiplicatorii mik . Strategii de pivotare n rezolvarea SEAL

Lucrarea de laborator 5

Utilizarea a.e.G sau a.e.GJ la rezolvarea sistemului (5.1) poate conduce la situaia n care un element
(k diagonal akk ) este nul, chiar dac matricea sistemului este nesingular. Pentru a evita o mprire la zero,

este necesar efectuarea operaiei de pivotare, conform creia se permut liniile i/sau coloanele matricei coeficienilor astfel, nct s se aduc pe poziia diagonal (k , k ) un element nenul. Utilizarea operaiei de pivotare permite nu doar extinderea domeniului de aplicabilitate al algoritmilor analizai, ci i mbuntirea stabilitii numerice a acestora. Pentru a asigura o bun stabilitate numeric (erori de rotunjire minime) a procesului de calcul se prefer alegerea n calitate de pivot a unui element de modul maxim. Se pot utiliza dou strategii de pivotare: total i parial [1-5; 8; 10-11; 15-16; 21-26].
( Pivotarea total const n cutarea pivotului de modul maxim printre toi coeficienii aijk ) , i, j = k , n ,

(aflai sub linia k i la dreapta coloanei k ) i aducerea acestui element pe poziia (k , k ) prin permutri de linii i de coloane n matricea A i permutri corespunztoare n vectorul termenilor liberi (se modific att ordinea ecuaiilor, ct i ordinea componentelor soluiei n sistem). Astfel, aceast strategie impune memorarea permutrilor de coloane fcute pe parcursul algoritmului, pentru a se putea reconstitui la sfrit ordinea iniial a necunoscutelor. Pentru a evita unele permutri de coloane, se poate folosi o pivotare parial, care const n cutarea
( pivotului de modul maxim printre toi coeficienii aikk ) , i = k , n (aflai sub linia k i pe coloana k ) i

aducerea acestui element pe poziia (k , k ) prin permutri de linii n matricea A i permutri corespunztoare n vectorul termenilor liberi (ceea ce este echivalent cu schimbarea ordinii ecuaiilor).
( ( Totui, n cazul n care akkk ) 0 , iar aikk ) = 0, i = k + 1, n , pentru a nu introduce o eroare semnificativ n

calcule, se va face uz i de permutarea coloanelor. Pseudocodul algoritmului


Date de intrare: n (de tip ntreg) ordinul sistemului liniar; a[n, n] tablou bidimensional (cu elemente de tip real; indici de la 1 la n ) ce conine componentele matricei coeficienilor sistemului; b[n] - tablou (cu elemente de tip real; indici de la 1 la n ) ce conine componentele vectorului termenilor liberi ai sistemului. Date de ieire: b[n] - tablou (cu elemente de tip real; indici de la 1 la n ) ce conine componentele soluiei sistemului. Algoritmul de eliminare cu pivotare total Algoritmul de eliminare cu pivotare parial ntreg i, j, k ,max ntreg i, imax , j , jmax , k real s, m real s, m, max tablou real x[n] tablou ntreg p[n] pentru j := 1, n execut p j := j pentru k := 1, n 1 execut { pentru i := k , n execut pentru k := 1, n 1 execut {

max := k

pentru j := k + 1, n execut { dac a jk > amax, k atunci max := j } dac amax, k = 0 atunci {se afieaz mesajul MSS; STOP }

max := 0.0; imax := k ; jmax := k

Lucrarea de laborator 5
{ pentru j := k , n execut { dac aij > max atunci { max := aij ; imax := i; jmax := j } } } dac max = 0 atunci {se afieaz mesajul MSS; STOP } dac imax k atunci { pentru j := k , n execut { m := akj ; akj := aimax , j ; aimax , j := m } dac max k atunci { pentru j := k , n execut { m := akj ; akj := amax, j ; amax, j := m }

49

m := bk ; bk := bmax ; bmax := m
} aici urmeaz secvena () a unuia dintre algoritmii de la pagina 47 (pentru a.e.GJ avem k = 1, n ) } aici urmeaz secvena () a unuia dintre algoritmii de la pagina 47 (se va ine cont de remarca de la pagina 47) pentru k := 1, n scrie xk

m := bk ; bk := bimax ; bimax := m
} dac jmax k atunci { pentru i := k , n execut { m := aik ; aik := ai , jmax ; ai , jmax := m }

j := pk ; pk := p jmax ; p jmax := j
} aici urmeaz secvena () a unuia dintre algoritmii de la pagina 47 (pentru a.e.GJ avem

k = 1, n ) } aici urmeaz secvena () algoritmii de la pagina 47


pentru k := 1, n execut bpk := xk pentru k := 1, n scrie bk

a unuia dintre

Aplicaii ale algoritmilor de eliminare A) Rezolvarea SEAL cu matrice rare O aplicaie important a metodei de eliminare a lui Gauss ine de rezolvarea SEAL cu matrice de form special. Vom considera cazul n care matricea coeficienilor A a sistemului (5.1) este tridiagonal, adic are loc egalitatea aij = 0 pentru toi i, j (i, j = 1, n) ce satisfac relaia i j > 1 . Pentru rezolvarea a astfel de sisteme se aplic cu succes metoda parcurgerii [10-11; 16; 22-23; 27], care reprezint o adaptare a algoritmului de eliminare a lui Gauss. Fie c = {ci }in=2 - codiagonala inferioar a matricei A , d = {d i }in=1 - diagonala principal, iar e = {ei }in=11 codiagonala superioar. Metoda parcurgerii de dreapta definete urmtorul proces de calcul al soluiei sistemului (5.1) cu matrice tridiagonal:
1 = e1 d1 , 1 = b1 d1 , hi = di + ci i 1 , i = ei hi , i = ( bi ci i 1 ) hi , i = 2, n 1,
xn = ( bn cn n 1 ) ( cn n 1 + d n ) , xi = i xi +1 + i , i = n 1,1.

(5.5)

Realizarea algoritmului este posibil dac d1 0, cn n 1 + d n 0, hi 0, i = 2, n 1 , iar ultimele relaii se vor satisface dac matricea A este pozitiv definit sau este slab diagonal dominant, adic dac se satisface

50

Lucrarea de laborator 5

relaia di ci + ei , i = 1, n i exist mcar o linie a matricei pentru care ultima inegalitate se satisface cu semnul > . Pentru implementare sunt suficiente patru tablouri c , d , e , b . Elementele i pot fi stocate n tabloul
e peste mrimile ei , iar elementele i i componentele soluiei xi , n tabloul b .

Pseudocodul algoritmului
Date de intrare: n (de tip ntreg) ordinul sistemului liniar; d [n] (c[n]; e[n]) - tablou (cu elemente de tip real; indici de la 1 la n (de la 2 la n ; de la 1 la n 1 )) ce conine diagonala principal (inferioar; superioar) a matricei coeficienilor sistemului; b[n] - tablou (cu elemente de tip real; indici de la 1 la n ) ce conine componentele vectorului termenilor liberi ai sistemului. Date de ieire: b[n] - tablou (cu elemente de tip real; indici de la 1 la n ) ce conine componentele soluiei sistemului. ntreg k real h dac d1 = 0 atunci {se afieaz mesajul Nu este posibil aplicarea algoritmului; STOP }

e1 := e1 d1 ; b1 := b1 d1
pentru k := 2, n 1 execut {

h := d k + ck ek 1 dac h = 0 atunci {se afieaz mesajul Nu este posibil aplicarea algoritmului; STOP } ek := ek h ; bk := ( bk ck bk 1 ) h

h := d n + cn en 1 dac h = 0 atunci {se afieaz mesajul Nu este posibil aplicarea algoritmului; STOP } bn := ( bn cn bn 1 ) h
pentru k := n 1,1 execut bk := ek bk +1 + bk pentru k := 1, n scrie bk

Remarc. Poate fi utilizat i un algoritm analog cu cel expus mai sus, cunoscut sub numele metoda parcurgerii de stnga:
n = cn d n , n = bn d n (d n 0), hi = d i + ei i +1 , i = ci hi , i = ( bi ei i +1 ) hi , i = n 1,2,
h1 = d1 + e1 2 , x1 = ( b1 e1 2 ) h1 (hi 0, i = 1, n 1), xi = i xi 1 + i , i = 2, n.

B) Calculul determinantului i a inversei matricei A Eliminarea gaussian poate fi utilizat i pentru calculul numeric al valorii determinantului det A i a inversei A1 a matricei coeficienilor A [1-5; 10-11; 15-16; 21-26]. Dac la cutarea pivoilor nu se recurge la permutri de linii i coloane, determinantul matricei iniiale A este egal cu determinantul matricei A( n ) , obinut dup cele n 1 etape al procesului de triunghiularizare, i ntruct A( n ) este triunghiular, det A este produsul elementelor diagonale ale acesteia. Pentru o mai bun exactitate a calculelor se recomand utilizarea tehnicilor de pivotare, iar n
(k acest caz, det A se va calcula prin formula det A = (1) p akk ) , unde p reprezint numrul total de

k =1

permutri de linii i coloane [3; 16]. Problema determinrii matricei inverse A1 este echivalent cu rezolvarea a n sisteme de n ecuaii

Lucrarea de laborator 5

51

liniare cu n necunoscute, avnd ca termeni liberi coloanele matricei unitate I , iar ca vectori necunoscui coloanele matricei inverse: Ax ( i ) = ei , i = 1, n [3; 16]. Aceste sisteme au aceeai matrice A i pot fi rezolvate simultan cu metoda eliminrii lui Gauss. Totui, pentru soluionarea problemei propuse este mai raional s se aplice transformrile de la eliminarea lui Gauss-Jordan. Vom considera matricea de dimensiune n 2n , format din alturarea matricei unitate I la matricea A , urmnd a aplica transformrile matricei A astfel, nct s o aducem la matricea unitate I :

[ A | I ] [ I | B] .
Dac procedura de eliminare Gauss-Jordan nu necesit permutri de coloane, atunci B = A1 . n cazul general (necesar din punctul de vedere al stabilitii numerice) matricea invers se obine din matricea B printr-o permutare de linii, corespunztoare permutrilor de coloane efectuate la cutarea pivoilor n operaiile de eliminare. Permutrile de linii n matricea B se efectueaz n ordine invers fa de permutrile de coloane efectuate n matricea A . Implementarea algoritmului se face simplu, innd cont de cele menionate mai sus. n metoda factorizrii LU matricea A a sistemului (5.1) se reprezint sub forma unui produs de dou matrici [2-4; 8; 10-11; 13; 15; 20-28]:
A = LU ,

(5.6)

unde L = {lij }in, j =1 (i j ) este o matrice inferior triunghiular, iar U = {uij }in, j =1 (i j ) o matrice superior triunghiular. n acest mod, rezolvarea sistemului (5.1) se reduce la rezolvarea, mai nti, a sistemului inferior triunghiular Ly = b , de unde se obine y , urmat de rezolvarea sistemului superior triunghiular Ux = y , de unde se obine x , soluia sistemului dat. Relaia (5.6) reprezint un sistem de n 2 ecuaii cu n 2 + n necunoscute, deci, trebuie precizate n dintre necunoscute. Dac se impune condiia ca elementele de pe diagonala principal a matricei L s fie egale cu 1 ( lii = 1, i = 1, n ), metoda de descompunere (5.6) se numete factorizarea Doolittle. Alte alegeri frecvent utilizate sunt date de factorizarea Crout [2, p.147] cnd se aleg uii = 1, i = 1, n i factorizarea Cholesky cnd U = LT , deci lii = uii , i = 1, n . Determinarea matricelor L i U se face simultan. Metoda factorizrii Doolittle ( lii = 1, i = 1, n ) Relaiile pentru calculul elementelor nenule ale matricelor L i U :
i 1 k 1 uik = aik lim umk , i = 1, k , lik = aik lim umk ukk , i = k + 1, n, k = 1, n . m =1 m =1

Relaiile pentru calculul soluiilor sistemelor cu matrice triunghiulare:


k 1 n y1 = b1 , yk = bk lkm ym , k = 2, n, xn = yn unn , xk = yk ukm xm ukk , k = n 1,1 . m =1 m = k +1

Metoda factorizrii Crout ( uii = 1, i = 1, n ) Relaiile pentru calculul elementelor nenule ale matricelor L i U :

52

Lucrarea de laborator 5
i 1 k 1 uik = aik limumk lii , i = 1, k 1, lik = aik limumk , i = k , n, k = 1, n . m =1 m =1

Relaiile pentru calculul soluiilor sistemelor cu matrice triunghiulare:


k 1 n y1 = b1 l11 , yk = bk lkm ym lkk , k = 2, n, xn = yn , xk = yk ukm xm , k = n 1,1 . m =1 m = k +1

Metoda factorizrii Cholesky ( lii = uii , i = 1, n ) [2-5; 10-13; 16; 20-24; 26] Relaiile pentru calculul elementelor nenule ale matricelor L i U :
k 1 k 1 2 lkk = akk lkm , lik = aik lim lkm lkk , i = k + 1, n, k = 1, n. m =1 m =1

Relaiile pentru calculul soluiilor sistemelor cu matrice triunghiulare:


k 1 n y1 = b1 l11 , yk = bk lkm ym lkk , k = 2, n, xn = yn lnn , xk = yk lmk xm lkk , k = n 1,1 . m =1 m = k +1

Elementele nenule ale matricelor L i U (cu excepia celor egale cu 1 ) vor fi stocate n zonele rezervate elementelor corespunztoare ale matricei A : aij := lij , i j , aij := uij , i < j , i, j = 1, n . Soluiile y i
x ale sistemelor cu matrice triunghiulare se vor memora n vectorul b .

Pseudocodul algoritmilor
Date de intrare: n (de tip ntreg) ordinul matricei A ; a[n, n] tablou bidimensional (cu elemente de tip real; indici de la 1 la n ) ce conine componentele matricei A ; b[n] tablou (cu elemente de tip real; indici de la 1 la n ) ce conine componentele vectorului termenilor liberi ai sistemului. Date de ieire: b[n] tablou (cu elemente de tip real; indici de la 1 la n ) ce conine componentele soluiei sistemului; ntreg i, k , m Rezolvarea SEAL cu factorizarea Doolittle pentru k := 1, n execut { pentru i := 1, k execut { pentru m := 1, i 1 execut aik := aik aim amk } pentru i := k + 1, n execut { pentru m := 1, k 1 execut aik := aik aim amk } pentru i := k , n execut { pentru m := 1, k 1 execut aik := aik aim amk } } Rezolvarea SEAL cu factorizarea Crout pentru k := 1, n execut { pentru i := 1, k 1 execut { pentru m := 1, i 1 execut aik := aik aim amk

aik := aik aii

aik := aik akk


} } pentru k := 2, n execut { pentru m := 1, k 1 execut bk := bk akm bm }

b1 := b1 a11

pentru k := 2, n execut { pentru m := 1, k 1 execut bk := bk akm bm

bn := bn ann
pentru k := n 1,1 execut { }

bk := bk akk
pentru k := n 1,1 execut

Lucrarea de laborator 5
pentru m := k + 1, n execut bk := bk akm bm { pentru m := k + 1, n execut bk := bk akm bm } pentru k := 1, n scrie bk Rezolvarea SEAL cu factorizarea Cholesky pentru k := 1, n execut {
2 pentru m := 1, k 1 execut akk := akk akm

53

bk := bk akk
} pentru k := 1, n scrie bk

akk := akk
pentru i := k + 1, n execut { pentru m := 1, k 1 execut aik := aik aim akm

aik = aik akk


}

b1 := b1 a11
pentru k := 2, n execut { pentru m := 1, k 1 execut bk := bk akm bm

bk := bk akk bn := bn ann
pentru k := n 1,1 execut { pentru m := k + 1, n execut bk := bk amk bm }

bk := bk akk
} pentru k := 1, n scrie bk

Matricele L i U , fiind triunghiulare, este indicat ca ele s fie localizate ntr-un tablou unidimensional, economisindu-se astfel memoria ce s-ar rezerva pentru elementele nule ale respectivelor matrice. Pentru a evita necesitatea ca toi minorii principali s fie nenuli, factorizarea LU poate fi implementat eficient folosind tehnica pivotului parial, caz n care PA = LU , iar soluia se obine rezolvnd sistemul echivalent LU x = Pb (de fapt, se rezolv sistemele L y = Pb i U x = y ), unde P este matricea care conine toate permutrile de linii efectuate asupra matricei A pe parcursul procesului de factorizare. Analiza algoritmilor A.e.G. (n varianta fr pivotare) poate genera instabiliti numerice chiar dac nu se ntlnete nici un element pivot nul, din cauza erorilor de rotunjire. Dei stabilitatea numeric a a.e.G cu pivotare parial este mai bun, totui, erorile de rotunjire pot afecta grav soluia n cazul sistemelor slab condiionate. n tabelul de mai jos se face o analiz comparativ a complexitii de calcul a algoritmilor direci descrii mai sus (vom utiliza mrimile N1 = 2n3 3 + O(2n2 ), N2 = 0.5n2 0.5n; N3 = n3 3 n2 2 + n 6; N4 = n3 + O(n2 ) ):

54 a.e.G a.e.GJ

Lucrarea de laborator 5 descompunerea LU Crout sau


Doolittle
(matrice tridiagonal)

fr pivotare

pivotare parial

pivotare total

fr pivotare

pivotare pivotare parial total

Cholesky

Nr. opera. aritmetice

N1

N1 + N 2

N1 + N 3

N4

N4 + N2

N 4 + N3

N1

n3 3 + O (n 2 )

Volumul de memorie

O(n 2 )

O(n 2 )

O(n 2 )

O(0.5n 2 )

Pentru a obine inversa matricei, conform algoritmului prezentat mai sus, este necesar un efort de calcul de O(2n3 ) operaii aritmetice i un volum de memorie de O(2n 2 ) . Vom meniona c inversarea matricei se reduce la rezolvarea a n SEAL, iar rezolvarea acestora necesit doar de trei ori mai multe operaii dect rezolvarea unui singur sistem. Dac o matrice nesingular A admite o descompunere (factorizare) LU , atunci elementele de pe diagonalele principale ale matricelor L i U sunt nenule. n cazul n care toi minorii principali ai matricei A sunt nenuli, iar elementele de pe diagonala principal a matricei L sau U sunt fixate (i nenule), exist o unic factorizare LU a matricei A [2, p.145]. Un avantaj al metodei factorizrii LU este posibilitatea rezolvrii sistemului cu mai multe coloane de termeni liberi cu o mare economie de efort de calcul. Dac avem de rezolvat mai multe sisteme
Ax = b (i ) , i = 1, m , rezolvarea tuturora necesit 2mn3 3 + O (2mn 2 )

operaii; dac ns mai nti se

factorizeaz - rezolvarea unui sistem dureaz 2n 2 + O (n) , factorizarea dureaz 2n3 3 + O( n 2 ) , iar per total avem 2n3 3 + O (2mn 2 ) operaii. Vom meniona c determinantul matricei iniiale A a sistemului (5.1) este egal cu produsul elementelor de pe diagonala principal a matricei A , obinut n urma procesului de construcie a factorizrii LU . Dac matricea coeficienilor A este simetric ( aij = a ji , i, j = 1, n ) i pozitiv definit (pentru orice vector x n , x 0 avem x T Ax > 0 sau echivalent, toi minorii principali sunt pozitivi), atunci ea admite o unic factorizare A = LLT (factorizarea Cholesky a matricei A ), n care L este o matrice inferior triunghiular cu toate elementele diagonale pozitive. Factorizarea Cholesky este o variant a eliminrii lui Gauss ce opereaz att la stnga, ct i la dreapta matricei, pstrnd i exploatnd simetria. n condiiile impuse matricei A , algoritmul este stabil. Datorit factorizrii Cholesky, matricele simetrice pozitiv definite pot fi descompuse n factori triunghiulari de dou ori mai repede dect matricele generale. Mai mult, algoritmul de factorizare Cholesky definete un procedeu econom de a stabili dac o matrice

Alg. metodei parcurgerii

O(8n)

O(3n)

Lucrarea de laborator 5

55

simetric este pozitiv definit: acesta i va ntrerupe lucrul la un pas oarecare dac va aprea situaia n care este necesar s se extrag rdcina ptrat dintr-un numr negativ sau ca urmare a mpririi la zero. Algoritmul de rezolvare a SEAL, bazat pe factorizarea lui Cholesky (cunoscut i ca metoda rdcinii ptrate), se poate utiliza pentru orice sistem liniar cu matrice nesingular, prin transformarea sa ntr-un sistem echivalent cu matrice simetric (se nmulete relaia (5.1) cu matricea transpus AT ). Vom remarca c calculul erorii reale ar necesita cunoaterea soluiei exacte a sistemului. De aceea, n practic se face doar o evaluare a erorii, folosind norma reziduului r = Ax b = poate avea o valoare mai mare sau mai mic dect eroarea real. Metode iterative Aceste metode permit determinarea unei aproximaii a soluiei sistemului (5.1) cu precizia dorit prin generarea unui ir de vectori care, n anumite condiii, converge ctre soluia exact. Elementele acestui ir se calculeaz recursiv, iar procesul iterativ se oprete dup un numr finit de pai, la ndeplinirea criteriului de stopare a calculelor [1-5; 8; 10-11; 13-16; 19-21; 23-28]. Erorile de rotunjire n metodele iterative au o influen cu mult mai redus dect n cele directe. Drept urmare, chiar dac soluia obinut prin metode iterative este afectat de erori de trunchiere, erori care nu apar n cazul metodelor directe, este totui posibil ca soluia obinut prin metodele iterative s fie mai precis dect cea obinut prin metodele directe. n plus, dac procesul iterativ este suficient de rapid convergent se poate obine o economie important de timp de calcul. Pentru rezolvarea SEAL (5.1) considerm clasa de metode iterative monopas [14; 23; 26]:
Bk +1 x ( k +1) x ( k )
n

r
k =1

2 k

, care ns

k +1

+ Ax ( k ) = b , k = 0,1,... ,

unde irul Bk +1 , k = 0,1,... const din matrice ptrate de ordinul n nesingulare, iar k +1 > 0 sunt parametri reali care definesc metoda. Dac matricele Bk +1 i parametrii k +1 nu variaz pe parcursul iteraiilor (adic nu depind de k ), atunci procesul iterativ se numete staionar. n caz contrar, considerm c acesta este nestaionar. Metode staionare Metodele iterative staionare pot fi exprimate n forma simplificat x ( k +1) = M x ( k ) + c , unde k reprezint pasul de iterare, iar M i c nu depind de k , adic acestea rmn constante pe durata procesului iterativ [1-5; 8; 10-11; 13-16; 19-21; 23-28]. n continuare vom prezenta cele mai simple metode iterative staionare pentru rezolvarea sistemului (5.1) i vom evidenia condiiile n care acestea converg. S presupunem c elementele matricei coeficienilor A a sistemului (5.1) satisfac condiiei: aii 0 (i = 1, n) . Metoda lui Jacobi (iteraiei simple, aproximaiilor succesive, deplasrilor simultane) utilizeaz urmtoarea relaie de recuren x ( k +1) = M x ( k ) + c , unde M = {mij }in, j =1 , c = {ci }in=1 , mij = 0 pentru i = j ,
mij = aij aii pentru i j , iar ci = bi aii . Procesul iterativ indicat se va scrie pe coordonate astfel:

56
xi( k +1) = bi aij x (jk ) aii , i = 1, n , k = 0,1,... (aii 0) , j =1, j i
n

Lucrarea de laborator 5

n care xi( k +1) reprezint componenta i a noii aproximaii, iar x (jk ) ( j = 1, n, j i ) sunt valorile obinute la pasul precedent al procesului iterativ. Se observ c e necesar a pstra n memoria calculatorului toate componentele vectorului x ( k ) atta timp, ct se calculeaz aproximaia x ( k +1) . Criteriul de stopare a procesului iterativ const n evaluarea dup fiecare iteraie a erorii Cauchy
x ( k +1) x ( k ) i ntreruperea calculelor atunci cnd aceast valoare devine mai mic dect eroarea impus

[1-5; 8; 10-11; 13-16; 19-21; 23-28].

Metoda lui Gauss-Seidel (deplasrilor succesive) reprezint o modificare a metodei lui Jacobi. Pentru calculul necunoscutelor la pasul curent, se utilizeaz, acolo unde este posibil, i valorile necunoscutelor calculate chiar la acest pas, i nu n exclusivitate toate valorile de la pasul anterior. Procesul iterativ se va scrie pe coordonate astfel:
i 1 xi( k +1) = bi aij x (jk +1) j =1 n j = i +1

a x
ij

(k ) j

aii , i = 1, n , k = 0,1,... (aii 0) .

Se observ c o component xi( k +1) a soluiei la pasul k + 1 este calculat n funcie de componentele
k k ( precedente x1( k +1) ,..., xi(1+1) , deja calculate la pasul curent i de urmtoarele componente xi(+1) ,..., xnk ) , calculate

la pasul precedent. Algoritmul nu necesit pstrarea vechii componente xi( k ) , dup ce cea nou a fost calculat, de aceea xi( k +1) se poate plasa n memorie n aceeai locaie ca i vechea valoare xi( k ) . Astfel, algoritmul lui Gauss-Seidel nu necesit spaiu pentru memorarea dect a unui vector soluie, spre deosebire de algoritmul lui Jacobi, unde trebuiau memorai att xi( k +1) , ct i xi( k ) . Pseudocodul algoritmilor
Date de intrare: n (de tip ntreg) ordinul sistemului liniar; a[n, n] - tablou bidimensional (cu elemente de tip real; indici de la 1 la n ) ce conine componentele matricei

A; b[n] - tablou (cu elemente de tip real; indici de la 1 la n ) ce conine componentele vectorului termenilor

(de tip real) eroarea admis;


q (de tip real) constanta lui Lipschitz. Date de ieire: x[n] - tablou (cu elemente de tip real; indici de la 1 la n ) ce conine componentele soluiei sistemului; k (de tip real) numrul de iteraii efectuate pentru a atinge exactitatea dorit.
Metoda lui Jacobi ntreg i, j , k real 1 , s, er tablou real z[ n] ntreg i, j , k real 1 , s, er Metoda lui Gauss-Seidel

liberi ai sistemului;

k := 0; 1 := (1 q ) q
pentru i := 1, n execut xi := bi aii execut {

k := 0; 1 := (1 q ) q
pentru i := 1, n execut xi := bi aii execut {

er := 0

er := 0

pentru i := 1, n execut

pentru i := 1, n execut {

Lucrarea de laborator 5
{

57
s := bi
pentru j := 1, n execut s := s aij x j

s := bi
pentru j := 1, n execut s := s aij x j

s := s + aii xi ; zi := s aii ; s := zi xi dac er < s atunci er := s


} pentru i := 1, n execut xi := zi

s := ( s + aii xi ) aii ; er := er + ( s xi ) 2 ; xi := s k := k + 1 er := er
} ct timp er 1 pentru i := 1, n scrie xi scrie k }

k := k + 1

} ct timp er 1 pentru i := 1, n scrie xi scrie k

Analiza algoritmilor Este suficient s aib loc oricare dintre condiiile urmtoare pentru ca s se asigure convergena metodei lui Jacobi sau Gauss-Seidel (indiferent de alegerea aproximaiei iniiale x (0) ) [2, p.185; 14; 23]: a) Matricea A a sistemului (5.1) este strict diagonal dominant pe linii, adic aii >
n j =1, j i

aij , i = 1, n ;
n i =1,i j

b) Matricea A a sistemului (5.1) este strict diagonal dominant pe coloane, adic a jj >
j = 1, n ;
n n

aij ,

c) Matricea A a sistemului (5.1) satisface relaia

i =1 j =1, j i

(aij aii ) 2 < 1 ;

d) Matricea A a sistemului (5.1) este simetric i pozitiv definit (Gauss-Seidel). Pentru estimarea erorii care se comite la nlocuirea soluiei exacte x a sistemului (5.1) cu o aproximaie x ( k +1) se utilizeaz inegalitatea [23, p.94]
x ( k +1) x q x ( k +1) x ( k ) , k = 0,1,... (q := M ) , 1 q

n cazul n care aproximaia se obine conform metodei lui Jacobi, i, respectiv, inegalitatea [23, p.107]
x ( k +1) x

1 q

x ( k +1) x ( k ) , k = 0,1,... ( := M U , q := M ) ,

atunci cnd se aplic metoda lui Gauss-Seidel. Matricele M i M U sunt definite n modul urmtor:
0 pentru i = j 0 pentru i j U U M = {mij }in, j =1 , M U = {mij }in, j =1 , mij = , iar mij = . aij aii pentru i j aij aii pentru i < j

n estimaiile de mai sus se utilizeaz urmtoarele norme operatoriale de matrice compatibile cu norme vectoriale de pe n :
A 1 := max aij
1 j n i =1 n n

x 1 := xi ,
i =1

A := max aij
1 i n j =1

:= max xi .
1 i n

Constanta q se va alege astfel nct q < 1 .

58

Lucrarea de laborator 5 Metodele iterative prezentate necesit O(n 2 + 2n) operaii aritmetice la fiecare iteraie. Pentru

memorarea matricei sistemului, a vectorului termenilor liberi i a soluiei sunt necesare n 2 + 2n locaii de memorie. n plus, la algoritmul lui Jacobi mai sunt necesare n locaii pentru memorarea soluiei obinute la pasul curent. Prin urmare, metodele iterative devin avantajoase dac numrul k de iteraii nu este prea mare. Spre exemplu, o comparaie cu algoritmul de eliminare a lui Gauss conduce la concluzia c pentru a avea un numr apropiat de operaii, este necesar ca numrul de iteraii k s satisfac inegalitatea
k 2n 3 . Numrul de iteraii este influenat de calitatea aproximaiei iniiale x (0) , de modul n care este

condiionat matricea A a coeficienilor sistemului i de norma matricei de iteraie M . Avantajul esenial al metodei lui Gauss-Seidel l constituie creterea vitezei de convergen, datorit reducerii numrului total de iteraii necesare. n cazul matricelor simetrice i pozitiv definite, metoda lui Gauss-Seidel este de aproximativ dou ori mai rapid dect metoda lui Jacobi. Acest avantaj, corelat i cu necesitatea memorrii unui singur vector soluie, face ca metoda lui Gauss-Seidel s fie preferabil metodei lui Jacobi. O metod de stocare compact a matricei simetrice Matricea simetric i pozitiv definit poate fi memorat folosind urmtoarele tablouri unidimensionale [19, p.7]:
u[n] - conine elementele diagonalei principale ale matricei A . ntruct matricea este pozitiv

definit, elementele ui , i = 1, n sunt strict pozitive;


c[] - conine elementele nenule ale matricei A care sunt amplasate sub diagonala principal.

Elementele ci , i = 1, 2,... sunt ordonate n sensul n care urmeaz pe liniile lui A ;


t[] - are acelai numr de elemente ca i c[] , iar elementul ti al acestuia conine indicele coloanei

matricei A n care se afl elementul ci al tabloului c[] ;


s[n + 1] - elementul si , i = 1, n indic din care poziie a tabloului c[] ncepe linia cu numrul i al

matricei A . Valoarea ultimului element sn +1 reprezint numrul de elemente ale tabloului c[] incrementat cu o unitate. Diferena si +1 si (i = 1, n) este egal cu numrul de elemente nenule ale liniei i a matricei A , amplasate pn la elementul de pe diagonala principal. Remarc. Tabloul s[n + 1] nu va conine informaii referitoare la prima linie a matricei A , precum i la acele linii i pentru care toate elementele aij (i > j ) sunt nule. n acest caz, respectivul element si va obine valoarea lui sk (k > i ) , unde k este prima linie a matricei A ce urmeaz dup linia cu numrul i i care conine elemente nenule. Vom descrie n continuare un algoritm eficient (mai ales n cazul n care matricea A este rar) care realizeaz calculul produsului matricei simetrice A cu un vector x [19, p.8]:

Lucrarea de laborator 5 Date de intrare: n, x , u , c , s , t Date de ieire: z = Ax pentru i := 1, n execut { zi := ui xi } pentru i := 1, n execut { pentru j := si , si +1 1 execut { zi := zi + c j xt ; zt := zt + c j xi }
j j j

59

} Metode nestaionare. n cele ce urmeaz, pentru orice doi vectori coloan u = (u1 ,..., un )T i v = (v1 ,..., vn )T vom nota produsul lor scalar cu u , v := v T u = ui vi .
i =1 n

Vom considera c matricea coeficienilor A este simetric i pozitiv definit. Problema de aflare a soluiei sistemului de ecuaii (5.1) este echivalent cu problema (variaional) determinrii punctului de minim al funcionalei [4, p.48; 14; 21; 23]
F (x ) = 1 T x A x xTb 2

(5.7)

( A, b - componentele sistemului (5.1)). Astfel, soluia sistemului (5.1) coincide cu punctul de minim al funcionalei strict convexe (5.7). Vom formula principiul de baz al metodelor nestaionare care vor fi prezentate n continuare. Fie
x ( k ) o aproximaie a soluiei problemei de minimizare i presupunem c vectorul rezidual r (k) := b Ax(k) 0 .

Alegem o direcie de cutare d ( k ) 0 i determinm noua aproximaie x ( k +1) = x ( k ) + d ( k ) ( ) a punctului de minim x al funcionalei F ( x ) , astfel nct F ( x ( k +1) ) = min F ( x ( k ) + d ( k ) ) . Soluia ultimei

probleme de extrem se obine pentru := k = ( (d ( k ) )T r ( k ) ) ( (d ( k ) )T Ad ( k ) ) . Valoarea funcionalei F descrete de-a lungul dreptei x ( k ) + d ( k ) dac i numai dac vectorul rezidual r ( k ) nu este ortogonal pe direcia de deplasare d ( k ) . Dac r ( k +1) := b Ax ( k +1) 0 , atunci se repet procesul de cutare liniar utiliznd o nou direcie de cutare d ( k +1) . Diverii algoritmi de minimizare a funcionalei (5.7) se obin prin precizarea metodei de selecie a direciei d ( k ) la pasul k . Metoda pasului descendent (coborrii rapide) Fiind dat aproximaia x ( k ) , se tie c cea mai rapid descretere a valorii funcionalei (5.7) este n direcia cu semn schimbat a gradientului F al acesteia n x ( k ) . Deci, alegerea optim local a direciei de deplasare este d ( k ) = F ( x ( k ) ) . Deoarece F ( x ) = Ax b , avem d ( k ) = r ( k ) . Aadar, avem urmtorul algoritm de pas descendent [4; 11; 19-20]. La pasul de iniializare se alege aproximaia iniial x (0) i se determin vectorul rezidual iniial
r (0) = b Ax (0) . Formula de calcul a aproximaiilor este: x ( k +1) = x ( k ) + k r ( k ) , k = 0,1,... ,

60

Lucrarea de laborator 5

unde pasul k se calculeaz n baza relaiilor k = ( (r ( k ) )T r ( k ) ) ( (r ( k ) )T q ( k ) ) , q ( k ) = Ar ( k ) . Actualizarea vectorului rezidual r ( k +1) este raional s se fac n baza formulei recursive r ( k +1) = r ( k ) k q ( k ) . La fiecare iteraie aceasta salveaz o nmulire matrice-vector Ax ( k +1) , deoarece produsul Ar ( k ) este deja calculat. n calitate de criteriu de stopare a calculelor poate fi utilizat una dintre condiiile: a) r ( k +1) < sau b) x ( k +1) x ( k ) < ,

unde > 0 este o toleran suficient de mic. La ndeplinirea unei condiii dintre cele dou menionate, vectorul x ( k +1) se va considera soluie aproximativ a sistemului (5.1), calculat cu exactitatea . Pseudocodul algoritmului
Date de intrare: n (de tip ntreg) ordinul sistemului liniar; (de tip real) exactitatea de calcul; c[], u[n] - tablouri (cu elemente de tip real) ce conin elementele aij (i j ) ale matricei simetrice A a

t[], s[n + 1] - tablouri (cu elemente de tip ntreg) cu ajutorul crora se face adresarea elementelor matricei simetrice A (a se vedea seciunea O metod de stocare compact a matricei simetrice); b[n] - tablou (cu elemente de tip real; indici de la 1 la n ) ce conine componentele vectorului termenilor
liberi ai sistemului;

coeficienilor sistemului (a se vedea seciunea O metod de stocare compact a matricei simetrice);

x[n] - tablou (cu elemente de tip real; indici de la 1 la n ) ce conine componentele aproximaiei iniiale ale
sistemului. Date de ieire: x[n] - tablou (cu elemente de tip real; indici de la 1 la n ) ce conine componentele soluiei sistemului ;

r[n] - tablou (cu elemente de tip real; indici de la 1 la n ) ce conine componentele vectorului reziduu; k - numrul de iteraii efectuate; ntreg i, j , k real 1, nr , tablou real r[n], q[n]
pentru i := 1, n execut { ri := bi ui xi } pentru i := 1, n execut { pentru j := si , si +1 1 execut { ri := ri c j xt j ; rt j := rt j c j xi } }

1:= 0
pentru i := 1, n execut 1:= 1 + ri 2

k := 0; nr := 1 ct timp nr execut
{ aici urmeaz secvena () de la pagina 59 (vectorul z se substituie cu vectorul q , iar x cu r )

:= 0
pentru i := 1, n execut := + ri qi

:= 1 ; 1:= 0; nr := 0
k := k + 1; nr := 1

pentru i := 1, n execut { xi := xi + ri ; ri := ri qi ; 1:= 1 + ri 2 } } pentru i := 1, n scrie xi pentru i := 1, n scrie ri scrie k

Lucrarea de laborator 5 Analiza algoritmului

61

n cazul n care matricea coeficienilor A este simetric i pozitiv definit, metoda converge pentru orice aproximaie iniial x (0) . La fiecare iteraie a algoritmului se calculeaz un produs matrice vector i dou produse scalare. Viteza de convergen este a unei progresii geometrice [21, p.446]. Pentru probleme slab condiionate viteza de convergen a algoritmului scade esenial. Metoda gradienilor conjugai Pentru a evita comportarea n zigzag ce apare la aplicarea algoritmului pasului descendent trebuie s considerm o alt metod de determinare a direciei de deplasare. Conform metodei gradienilor conjugai [4, p.61; 20, p.294; 23, p.119] selecia direciilor d ( k ) se face astfel, nct (d ( k ) )T Ad ( j ) = 0 pentru toi
j = 0, k 1

(d ( k ) )T r k 0 .

Vectorii reziduali generai rezultat, obinem

r (k )

sunt ortogonali doi cte doi expresie pentru


k

(r ( k ) )T r ( j ) = 0, j = 0, k 1 .

Drept

urmtoarea pentru

direcia avem

d ( k ) = r ( k ) + k d ( k 1) , k = (r ( k ) )T r ( k )

) ( (r

( k 1) T

) r ( k 1) ,

iar

lungimea

pasului

k = ( (r ( k ) )T r ( k ) ) ( (d ( k ) )T Ad ( k ) ) . Schema de calcul a metodei gradienilor conjugai este urmtoarea [14]:

La pasul de iniializare se alege aproximaia iniial x (0) , se determin vectorul rezidual iniial
r (0) = b Ax (0) i se pune d (0) = r (0) . Aproximaiile se calculeaz prin formula: x ( k +1) = x ( k ) + k d ( k ) , k = 0,1,... ,

unde lungimea pasului de deplasare este k = k ( (d ( k ) )T q ( k ) ) , k = (r ( k ) )T r ( k ) , q ( k ) = Ad ( k ) . Actualizarea vectorului rezidual r ( k +1) i a direciei de deplasare d ( k +1) se face n baza formulelor recursive
r ( k +1) = r ( k ) k q ( k ) , d ( k +1) = r ( k +1) + k d ( k ) , k = k +1 k . n calitate de criteriu de stopare a calculelor poate

fi utilizat una dintre condiiile: a) r ( k +1) < sau b) x ( k +1) x ( k ) < ,

unde > 0 este o toleran suficient de mic. La ndeplinirea uneia dintre condiiile menionate, vectorul
x ( k +1) se va considera soluie aproximativ a sistemului (5.1), calculat cu exactitatea .

Pseudocodul algoritmului
Date de intrare: n (de tip ntreg) ordinul sistemului liniar; (de tip real) exactitatea de calcul; c[], u[n] tablouri (cu elemente de tip real) ce conin elementele aij (i j ) ale matricei simetrice A a

t[], s[n + 1] tablouri (cu elemente de tip ntreg) cu ajutorul crora se face adresarea elementelor matricei simetrice A (a se vedea seciunea O metod de stocare compact a matricei simetrice); b[n] tablou (cu elemente de tip real; indici de la 1 la n ) ce conine componentele vectorului termenilor
liberi ai sistemului;

coeficienilor sistemului (a se vedea seciunea O metod de stocare compact a matricei simetrice);

x[n] tablou (cu elemente de tip real; indici de la 1 la n ) ce conine componentele aproximaiei iniiale a
sistemului. Date de ieire: x[n] tablou (cu elemente de tip real; indici de la 1 la n ) ce conine componentele soluiei sistemului ;

r[n] tablou (cu elemente de tip real; indici de la 1 la n ) ce conine componentele vectorului reziduu; k numrul de iteraii efectuate;

62
ntreg i, j , k real 0, 1, nr , , tablou real r[n], q[n], d [n] aici urmeaz secvena () de la pagina 60 ct timp nr execut { dac k = 0 atunci { pentru i := 1, n execut d i := ri } altfel {

Lucrarea de laborator 5

:= 1 0

pentru i := 1, n execut d i := d i ri } aici urmeaz secvena () de la pagina 59 (vectorul z se substituie cu vectorul q , iar x cu d )

:= 0
pentru i := 1, n execut := + di qi

:= 1 ; 0 := 1; 1:= 0; nr := 0
k := k + 1; nr := 1

pentru i := 1, n execut { xi := xi + d i ; ri := ri qi ; 1:= 1 + ri 2 } } pentru i := 1, n scrie xi pentru i := 1, n scrie ri scrie k

Analiza algoritmului ntruct vectorii reziduali r ( k ) , generai conform metodei gradienilor conjugai, sunt ortogonali doi cte doi, deci, sunt liniar independeni, nu pot exista n + 1 vectori reziduali nenuli. Rezult c dac calculele se fac exact, soluia exact a sistemului (5.1) se gsete n cel mult n pai. Teoretic ar trebui ca vectorul rezidual r ( n ) s fie nul, iar x ( n ) s fie soluia exact a sistemului (iar metoda una direct). n practic acest lucru nu se ntmpl, deoarece n determinarea vectorilor r ( k ) intervin erori de calcul, care fac ca acetia s nu formeze un sistem ortogonal. Deoarece n general r ( n ) 0 , continum s calculm
r ( k ) , k > n pn obinem r ( k ) < . Aceasta se justific prin faptul c metoda gradienilor conjugai este o

metod de relaxare prin care valoarea funcionalei F ( x ) se micoreaz la fiecare pas. n cazul n care matricea coeficienilor A este simetric i pozitiv definit, metoda converge pentru orice aproximaie iniial x (0) . Pentru implementare la fiecare iteraie sunt necesare un produs matricevector, trei rennoiri de vectori i dou produse scalare. Metoda poate fi generalizat pentru rezolvarea sistemelor cu matrice nesingulare arbitrare. n acest caz, innd cont c sistemul (5.1) este echivalent cu AT Ax = AT b , a crui matrice este simetric i pozitiv definit, se poate aplica metoda gradienilor conjugai pentru rezolvarea ultimului sistem. Totui, se va evita aceast abordare atunci cnd matricea A a sistemului este slab condiionat.

Lucrarea de laborator 5 III. Modul de desfurare a lucrrii Cerine fa de ndeplinirea lucrrii

63

n baza pseudocodurilor descrise n seciunea II a lucrrii, s se elaboreze un program care are drept destinaie realizarea urmtoarelor etape: 1. Generarea de ctre utilizator a SEAL iniial de forma (5.1), n regim de dialog sau cu ajutorul unui generator de numere aleatoare, astfel nct s se cunoasc soluia acestuia, iar matricea coeficienilor A s satisfac una dintre condiiile: a) A este simetric; b) A este tridiagonal; c) A este nesingular.

2. Rezolvarea SEAL obinut printr-o metod direct, ct i printr-o metod iterativ. 3. Vizualizarea pe ecran sau stocarea ntr-un fiier a datelor intermediare n procesul de execuie a programului. Parametrul de intrare al programului este dimensiunea n a sistemului. Dup preluarea acestui parametru, programul genereaz (interactiv sau aleator) un sistem de n ecuaii i n necunoscute, l rezolv i afieaz: eroarea absolut, eroarea relativ i reziduul rezultatului, calculate fiecare prin formula normei euclidiene. Se afieaz i timpul de calcul. Chestiuni de studiat 1. Cum se pot verifica soluiile obinute n urma rezolvrii unui sistem de ecuaii? Cum s-ar putea evalua eroarea cu care s-au determinat necunoscutele? Ct de bine este evaluat eroarea real prin norma reziduului? 2. Dai exemplu de un sistem, cu matricea A nesingular, care nu poate fi rezolvat prin a.e.G fr pivotare. 3. S se fac o analiz experimental a efectului diferitelor strategii de pivotare asupra erorii cu care se obine soluia, dar i asupra timpului de calcul. 4. S se compare valorile teoretice ale ordinului de complexitate a algoritmilor direci elaborai cu valorile obinute n urma experimentrilor. 5. S se fac o analiz experimental a dependenei timpului de calcul, precum i a normelor reziduului, n funcie de dimensiunea n a sistemului. 6. S se fac o comparaie ntre metodele directe i cele iterative. 7. Exist oare sisteme de ecuaii, nedominant diagonale, care se pot rezolva totui prin metoda GaussSeidel, dei metoda Jacobi nu este convergent? 8. Care este explicaia c inversnd ordinea a dou ecuaii ntr-un sistem, metodele iterative ar putea s nu convearg?

64

Lucrarea de laborator 6

LUCRAREA DE LABORATOR 6
METODA LUI RUNGE-KUTTA DE REZOLVARE A PROBLEMEI LUI CAUCHY 6.I. Scopul lucrrii Studiul unei familii de algoritmi numerici de rezolvare aproximativ a problemei lui Cauchy pentru ecuaia diferenial ordinar de ordinul I i implementarea acestora ntr-un limbaj de programare de nivel nalt. 6.II. Prezentarea teoretic a lucrrii Formularea problemei Considerm problema lui Cauchy (problema cu valori iniiale) ataat ecuaiei difereniale ordinare de ordinul I
y( x) = f ( x, y ( x)), x [ x0 ; x f ] , 1 y ( x0 ) = y0 ( y ( x) C [ x0 ; x f ]),

(6.1)

n care f ( x, y ( x)) este o funcie cu proprieti ce asigur existena i unicitatea soluiei n intervalul precizat. S se determine soluia aproximativ numeric a problemei (6.1) cu exactitatea dat > 0 , utiliznd n acest scop metoda lui Runge-Kutta. Problema (6.1) admite soluie unic y ( x) ntr-o vecintate a punctului x0 dac ntr-un domeniu mrginit D [ x0 ; x f ] funcia f ( x, y ) satisface urmtoarele condiii [2, p.116; 4, p.192; 5; 9; 12; 18]: I) f ( x, y ) este continu n raport cu prima variabil (pentru x [ x0 ; x f ] ); II) f ( x, y ) satisface condiia lui Lipschitz n raport cu a doua variabil y pentru orice x [ x0 ; x f ] :
f ( x, y2 ) f ( x, y1 ) L y2 y1 , ( x, y1 ),( x, y2 ) D ( L > 0) .

(6.2)

Dac

f ( x, y ) este continu n raport cu variabila y i este mrginit pe D , atunci f ( x, y ) satisface y

condiia (6.2). ntruct soluia exact a problemei (6.1) se poate obine, prin tehnici clasice, numai pentru cazuri particulare, se justific necesitatea recurgerii la metode aproximative. Se face distincie ntre metode de aproximare analitice i metode numerice [9; 12; 18]. n cadrul primei categorii se ncearc s se gseasc aproximaie yapr ( x) a soluiei exacte y ( x) , valabil pentru orice x [ x0 ; x f ] . n cazul metodelor numerice, se ncearc s se gseasc aproximaii ale lui y ( xi ) pe o reea de puncte xi [ x0 ; x f ], i = 1, 2,... . Descrierea algoritmilor Metoda monopas pentru rezolvarea numeric aproximativ a problemei (6.1) const n generarea unei reele de puncte xi , i = 0, n , de pe intervalul [ x0 ; x f ] , posibil la distane diferite hi = xi xi 1 , apoi, pornind de la condiia iniial y ( x0 ) = y0 , se calculeaz aproximaia yi +1 a soluiei exacte n punctul xi +1 , folosind numai aproximaia n punctul precedent xi (i = 0,1,...) . Astfel, avem o relaie de recuren de forma yi +1 = F ( f , hi , xi , yi ), i = 0, 1, ..., n 1 , care permite calculul succesiv al soluiei numerice y1 ,..., yn n

Lucrarea de laborator 6

65

toate nodurile reelei de discretizare. Vom considera c soluia numeric { yi }in=1 este calculat cu exactitatea dac se ndeplinete inegalitatea y ( xi ) yi < , i = 1, n . Pentru a descrie o metod monopas este suficient s artm cum se trece de la punctul ( xi , yi ) la punctul urmtor ( xi + hi , yi +1 ) . Ne vom referi la aceasta ca fiind descrierea local a unei metode monopas. Forma general a schemelor de calcul explicite de tip Runge-Kutta n p stadii se descrie prin formulele urmtoare [3-5; 9; 12; 18]:
yi +1 = yi + yi , yi = m km , i = 0, n 1 ,
m =1 p

(6.3) (6.4)

k1 = h f ( xi , yi ),

kq = h f ( xi + q h, yi + cqj k j ), q = 2, p .
j =1

q 1

E de menionat c n cazul dat punctele xi se afl la distane egale cu h . Coeficienii m , q i cqj (m =1, p ,
q = 2, p, j = 1, q 1) se determin dezvoltnd n serie Taylor membrul drept al relaiei (6.3) i soluia exact y ( x) n vecintatea punctului xi , i identificnd coeficienii expresiilor obinute. Din motive de

simplitate a formulelor se impun condiiile q = cqj , q = 2, p,


j =1

q 1

m =1

=1 .

Schema Runge-Kutta (6.3)-(6.4) este de ordinul s , dac eroarea de trunchiere pentru un pas al reelei i +1 := y ( xi + h) yi +1 satisface condiia [9; 12; 18]
i +1 = ch s +1 (c = const ) ,

(6.5)

adic dac seria Taylor pentru soluia exact y ( xi + h) coincide cu cea pentru yi +1 pn la termenul ce conine pe h s inclusiv. Dac s este ordinul schemei explicite n p stadii (6.3)-(6.4), atunci s = p, p = 1, 4 [9; 12; 18]. n continuare vom considera scheme explicite de tip Runge-Kutta n p 4 stadii. Pentru a determina aproximaia yi +1 (i = 0, n 1) conform formulelor (6.3)-(6.4) se calculeaz valorile funciei f ( x, y ) n puncte intermediare ale intervalului [ xi ; xi +1 ] , numrul de puncte fiind legat direct de ordinul p al metodei. Indicm cteva scheme de calcul frecvent utilizate, care se obin pentru valori concrete ale coeficienilor formulelor (6.3)-(6.4) [5; 9; 12; 18]:
A) yi = (k1 + k2 ) 2, k1 = h f ( xi , yi ), k2 = h f ( xi + h, yi + k1 ); B ) yi = k2 , k1 = h f ( xi , yi ), k2 = h f ( xi + h 2, yi + k1 2); C ) yi = ( k1 + 3k2 ) 4, k1 = h f ( xi , yi ), k2 = h f ( xi + 2h 3, yi + 2k1 3);
D) yi = (k1 + 4k2 + k3 ) 6, k1 = h f ( xi , yi ), k2 = h f ( xi + h 2, yi + k1 2), k3 = h f ( xi + h, yi k1 + 2k2 ); E ) yi = ( k1 + 3k3 ) 4, k1 = h f ( xi , yi ), k2 = h f ( xi + h 3, yi + k1 3), k3 = h f ( xi + 2h 3, yi + 2k2 3); F ) yi = (2k1 + 3k2 + 4k3 ) 9, k1 = h f ( xi , yi ), k2 = h f ( xi + h 2, yi + k1 2), k3 = h f ( xi + 3h 4, yi + 3k2 4);

66

Lucrarea de laborator 6
G ) yi = ( k1 + 2k2 + 2k3 + k4 ) 6, k1 = h f ( xi , yi ), k2 = h f ( xi + h 2, yi + k1 2), k3 = h f ( xi + h 2, yi + k2 2), k4 = h f ( xi + h, yi + k3 ); H ) yi = (k1 + 4k3 + k4 ) 6, k1 = h f ( xi , yi ), k2 = h f ( xi + h 4, yi + k1 4), k3 = h f ( xi + h 2, yi + k2 2), k4 = h f ( xi + h, yi + k1 2k2 + 2k3 ); I ) yi = ( k1 + 3k2 + 3k3 + k4 ) 8, k1 = h f ( xi , yi ), k2 = h f ( xi + h 3, yi + k1 3), k3 = h f ( xi + 2h 3, yi k1 3 + k2 ), k4 = h f ( xi + h, yi + k1 k2 + k3 ).

Monitorizarea erorilor locale de trunchiere pe parcursul procesului de integrare ntruct n practic evaluarea constantei c din relaia (6.5) este dificil, monitorizarea erorilor locale de trunchiere pe parcursul procesului de integrare a ecuaiei difereniale se face n baza unor relaii aproximative asimptotice. Acestea din urm utilizeaz dou aproximaii ale soluiei n acelai punct. Estimarea erorii locale n baza principiului lui Runge [5; 9; 12; 18] Estimarea erorii de trunchiere pentru un pas la formulele lui Runge-Kutta (6.3)-(6.4) se poate face repetnd calculul cu pas modificat. Spre exemplu, pentru a verifica dac pasul h este suficient de mic pentru asigurarea unei precizii corespunztoare, calculm valoarea aproximativ a soluiei n punctul xi +1 , avansnd doi pai consecutivi, ncepnd cu punctul xi , conform aceleiai formule cu pasul h 2 , apoi se reface calculul aproximaiei n punctul xi +1 cu pasul dublu h . Notm prin yih+/2 i, respectiv, yih+1 1 aproximaiile soluiei y ( x) n xi + h , obinute cu paii de integrare h 2 , respectiv h . Atunci o estimare a erorii locale de trunchiere poate fi obinut prin relaia [9; 12; 15-16; 18; 25]
2 2 y ( xi +1 ) yih+1 yih+1 yih+1

) (2

1 ,

(6.6)

care are ordinul de exactitate O(h p +1 ) n raport cu pasul diviziunii ( p - ordinul formulei lui Runge-Kutta utilizate). Estimarea erorii locale utiliznd principiul metodelor scufundate (principiul lui Fehlberg) [9; 12; 18] O cale mai eficient (n sensul economiei resurselor de calcul utilizate) de a obine informaii privitoare la precizia calculelor const n utilizarea unei perechi de formule Runge-Kutta scufundate (imbricate), adic a dou formule Runge-Kutta de ordine p i p , cu p > p . Conform acestor formule calculele se fac cu acelai pas h . S considerm schema de calcul explicit de tip Runge-Kutta n p stadii, ai crei coeficieni sunt
m , q , cqj (m = 1, p, q = 2, p, j = 1, q 1) . Alegem un proces similar n p stadii, cu p > p , astfel nct
coeficienii acestuia satisfac relaiile q = q , cqj = cqj , q = 2, p (de exemplu, aceast proprietate vor satisface schemele B i D , B i F , B i G definite mai sus). Atunci kq = kq , q = 1, p . Fie yip 1 i yip 1 + +

valorile obinute n urma aplicrii schemelor n p i, respectiv, p stadii. Atunci eroarea local
ip 1 := y ( xi + h) yip 1 a formulei n p stadii poate fi estimat prin relaia [12; 18, p.23] + +
m m , m = 1, p y y = k , m = . m=1 m , m = p + 1, p p i +1 p i +1 p p i +1 m m

(6.7)

Lucrarea de laborator 6

67

Valoarea aproximativ se obine cu o eroare de ordinul O(h p +1 ) . n calitate de aproximaie a soluiei n punctul xi +1 := xi + h se poate considera valoarea yip 1 . + Algoritmi cu controlul automat al pasului innd cont de estimaiile (6.6) sau (6.7) pentru eroarea local de trunchiere a metodei, se poate dirija procedura de selecie a mrimii pasului de integrare hi n procesul de calcul astfel, nct s se ndeplineasc inegalitatea y ( xi + hi ) yi +1 < n toate punctele reelei de discretizare. Algoritmul 1 Acest algoritm utilizeaz procedeul njumtirii pasului de integrare [9; 12; 15-16; 25-26]. Dup aceleai formule calculm valorile aproximative ale soluiei n punctele xi de pe [ x0 ; x f ] cu pasul h , apoi n punctele x2i cu pasul h 2 . Notm aceste valori respectiv prin yih i yih /2 . Considerm c exactitatea s-a atins, dac n punctele comune se ndeplinesc condiiile:
Dyi = yih yih / 2 < 1 , 1 = (2 p 1) .

n caz contrar, se continu divizarea pasului, adic se fac calculele cu paii h 2 i h 4 etc. Se recomand, totui, s se limiteze divizarea pasului n cazul n care nu se atinge exactitatea ntr-un numr rezonabil de iteraii. Algoritmul 2 Algoritmul 1 poate fi optimizat (astfel nct s diminueze efortul de calcul, pstrnd totodat exactitatea dorit a soluiei aproximative) dac se asigur alegerea mrimii pasului n procesul de calcul n dependen de caracterul variaiei soluiei ecuaiei difereniale. Vom utiliza procedeul njumtirii sau dublrii pasului de integrare [18, p.27]. Fie i +1 estimaia erorii de trunchiere a metodei (calculat n baza relaiilor (6.6) sau (6.7)) ce apare n calculul aproximaiei yih+1 n punctul xi + h . Dac i +1 , atunci valoarea yih+1 nu satisface exactitatea dorit. Punctul obinut xi + h i valoarea yih+1 se exclud din studiu. Se pune h (1) = h 2 i din nou, cu aceeai formul Runge-Kutta (dar cu pasul h (1) ) se calculeaz o nou aproximaie yih+1 n punctul xi + h (1) .
(1)

Fie i(1) - estimaia erorii de trunchiere ce apare n calculul lui yih+1 . Dac din nou i(1)1 , atunci punctul +1 +
(1)

xi + h (1) i valoarea yih+1 se exclud din studiu, iar pasul se njumtete h (2) = h (1) 2 i calculele se repet.
(1)

Procesul continu pn atunci cnd pentru o valoare a pasului (o vom nota prin hi ) estimaia erorii satisface i +1 < . n acest caz se consider c soluia ecuaiei difereniale a fost prelungit pn n punctul xi +1 = xi + hi . n continuare ecuaia diferenial se integreaz, ncepnd cu punctul xi +1 i pasul hi +1 , care se alege n modul urmtor: Dac estimaia erorii la pasul hi = xi +1 xi satisface inegalitatea i +1 K (constanta K se consider egal cu 2 p+1 , unde p este ordinul metodei), atunci pasul de integrare se dubleaz hi +1 = 2hi . Dac ns K < i +1 < , atunci pasul de integrare rmne acelai hi +1 = hi .

68

Lucrarea de laborator 6 Astfel pe poriunile de variaie ale argumentului x , pe care se atinge o exactitate nalt a soluiei

aproximative, pasul de integrare poate s ia valori mai mari, iar acolo unde exactitatea nu se atinge descrete pn la o mrime ce asigur atingerea exactitii. Algoritmul 3 Acest algoritm utilizeaz procedeul pasului maxim admisibil n limita exactitii impuse [18, p.29]. Fie i +1 o estimaie a erorii de trunchiere a metodei ce apare n calculul aproximaiei yih+1 n punctul
xi + h .

Dac i +1 , atunci aproximaia yih+1 nu atinge exactitatea dorit pentru aa mrime a pasului h , drept urmare, yih+1 i punctul xi + h se exclud din studiu. Se alege o nou mrime a pasului, dar nu prin metoda njumtirii, ca n algoritmul 2, ci cu ajutorul relaiei

h = h, = p+1 i +1 ( p - ordinul metodei).

(6.8)

ntruct i +1 avem < 1 i h < h . Prin formula Runge-Kutta cu pasul h se calculeaz aproximaia
yih+1 n punctul xi + h . Pentru eroarea de trunchiere la acest pas avem i(+1) [18, p.30].

Dac ns estimaia erorii n punctul xi + h satisface condiia i +1 < , atunci se consider c aproximaia obinut yih+1 satisface exactitatea dorit, iar valoarea xi + h se accept n calitate de nou nod al reelei. Se calculeaz valoarea h conform formulei (6.8). La aceast etap soluia ecuaiei difereniale a fost prelungit pn n punctul xi +1 ( xi +1 = xi + h dac
i +1 i xi +1 = xi + h dac i +1 < ). n continuare ecuaia diferenial se integreaz, ncepnd cu

punctul xi +1 . n calitate de pas ce va fi utilizat pentru testarea preciziei aproximaiei n xi +1 + h se consider h = h . Se recomand s se micoreze puin valoarea lui , de exemplu = 0.9 i, respectiv, valoarea pasului h = h . Aceasta se face cu scopul de a evita acei pai pentru care nu se atinge exactitatea cerut. Remarc. Spre deosebire de primul algoritm, ceilali doi permit calculul soluiei numerice n nodurile unei reele neuniforme (n general vorbind), care nu este definit apriori, ci se construiete automat n procesul de integrare numeric. n calitate de noduri ale reelei se iau punctele segmentului de integrare, n care se ndeplinete criteriul i +1 < . n aceti doi algoritmi nu este prevzut modul n care se aproximeaz soluia n extremitatea din dreapta a intervalului de integrare. Aceast problem necesit o abordare individual. Pseudocodul algoritmului Vom da o variant de pseudocod ce realizeaz calculul soluiei numerice a problemei (6.1) cu exactitatea , utiliznd schema de calcul G i algoritmul 1.
Date de intrare: x0 ( xf ) - (de tip real) limita inferioar (superioar) a intervalului de integrare a ecuaiei difereniale;

y 0 - (de tip real) valoarea soluiei n punctul iniial x0 ;

Lucrarea de laborator 6
f - numele subprogramului-funcie (de tip real) cu ajutorul cruia se calculeaz valoarea funciei f ( x, y ) ; n (de tip ntreg) numrul iniial de divizri ale intervalului [ x0; xf ] ;

69

(de tip real) exactitatea de calcul a soluiei numerice.


Date de ieire: xi - (de tip real) punctul n care se calculeaz soluia aproximativ numeric; yih 2 - (de tip real) - valoarea soluiei problemei calculat n punctul xi cu exactitatea ;

Dyi - (de tip real) estimaie a erorii aproximrii lui y ( x) n punctul xi ; h - (de tip real) valoarea pasului de integrare la care s-a atins exactitatea dorit; real h, xi, yih, yih 2, Dyi funcie dlyi ( h, xi, yi )
{ real h, xi, yi, k1, k 2, k 3, k 4

k1:= h f ( xi, yi ); k 2 := h f ( xi + h 2, yi + k1 2) k 3 := h f ( xi + h 2, yi + k 2 2); k 4 := h f ( xi + h, yi + k 3)


returneaz

( k1 + 2 k 2 + 2 k 3 + k 4 )

h := ( xf x0) n
execut {

xi := x0; yih := y 0; yih 2 := y 0; h := 0.5h


execut {

yih 2 := yih 2 + dlyi (h, xi, yih 2); yih 2 := yih 2 + dlyi (h, xi + h, yih 2) yih := yih + dlyi (2h, xi, yih); xi := xi + 2h

Dyi := yih 2 yih scrie n fiier xi, yih 2, Dyi , h


} ct timp ( Dyi < i xi xf ) } ct timp Dyi

Analiza algoritmilor Algoritmii metodei Runge-Kutta analizai n lucrare sunt algoritmi explicii monopas, adic la determinarea lui yi +1 utilizeaz informaiile referitoare numai la un singur punct anterior, corespunztor lui xi . n raport cu algoritmul lui Euler [9; 12; 16; 18] acetia asigur mbuntirea preciziei i a erorii de trunchiere pe un pas de integrare. Pentru reducerea erorii, la determinarea lui yi +1 , i = 0, n 1 , se calculeaz valorile funciei f ( x, y ) din membrul drept al ecuaiei difereniale ntr-un numr de puncte intermediare ale intervalului [ xi ; xi +1 ] . Dac se dorete, n baza soluiei numerice { yi }in=1 se poate obine prin interpolare aproximaie yn ( x) , definit pe ntreg intervalul [ x0 ; x f ] . Calculul aproximaiei yi +1 , cunoscnd yi , necesit p evaluri ale lui f ( x, y ) . Efectuarea calculelor conform relaiei (6.6) implic 3 p 1 evaluri ale lui f ( x, y ) (schema Runge-Kutta (6.3)-(6.4) se aplic de trei ori), iar conform relaiei (6.7) - p evaluri. Dac p este apropiat de p , atunci, n cazul n care se utilizeaz relaia (6.7) (comparativ cu relaia (6.6)), scade esenial numrul de evaluri ale funciei

70

Lucrarea de laborator 6

f ( x, y ) . De exemplu, pentru schemele B i D , definite mai sus, aplicarea relaiei (6.7) necesit trei

evaluri ale funciei f ( x, y ) , pe cnd aplicarea relaiei (6.6) cinci evaluri. Vom meniona nc o dat, c estimaiile (6.6) i (6.7) sunt asimptotice, deci sunt adevrate pentru valori relativ mici ale pasului h . E de remarcat faptul c pentru anumite valori ale pasului de integrare h poate s apar fenomenul de instabilitate numeric a algoritmilor (erorile se propag n mod imprevizibil sau chiar nemrginit) [5; 9; 12; 18]. Pentru asigurarea stabilitii numerice se poate proceda la reducerea cu grij a valorii pasului de integrare h pn la o valoare suficient de mic. Totodat, se va ine cont c reducerea valorii lui h determin creterea considerabil a volumului de calcule legate de evalurile funciei f ( x, y ) . Pentru algoritmii numerici analizai mai sus, erorile de trunchiere sunt: de ordinul de mrime al lui h3 pentru versiunile A, B i C ale algoritmilor; de ordinul de mrime al lui h 4 pentru versiunile D, E i F ale algoritmilor; de ordinul de mrime al lui h5 pentru versiunile G, H i I ale algoritmilor. Erorile de rotunjire depind de posibilitile echipamentului de calcul pe care sunt implementai algoritmii. Aceste erori pot fi diminuate dac se utilizeaz modul de lucru n dubl precizie. Cu toate acestea, erorile de rotunjire cresc pe msura creterii numrului de pai de integrare datorit propagrii erorilor de la un pas la altul. Prin urmare, pasul de integrare poate fi sczut (n vederea micorrii erorii de trunchiere) numai atta timp, ct eroarea de rotunjire rmne suficient de mic. Pentru memorarea vectorului y = { y ( xi )} sunt necesare n locaii de memorie. ns, n scopul eliminrii acestui consum de memorie, soluia poate fi afiat (sau salvat pe disc), imediat dup ce a fost calculat. Timpul de calcul al soluiei numerice va depinde n mod esenial de structura funciei f ( x, y ) , precum i de numrul de evaluri ale acesteia. 3.III. Modul de desfurare a lucrrii Cerine fa de ndeplinirea lucrrii n baza algoritmilor descrii n seciunea II a lucrrii, s se elaboreze un program care are drept obiectiv determinarea soluiei numerice a probleme (6.1) cu exactitatea dat > 0 sau cu cea mai bun exactitate posibil (n cazul n care ncepe s se manifeste fenomenul de instabilitate numeric), utiliznd: alegerea automat a pasului de integrare (algoritmii 1-3); diferite modaliti de estimare a erorii de trunchiere (relaiile (6.6) i (6.7)).

S se testeze programul de calcul pe exemplele propuse la sfritul lucrrii de laborator. Pentru fiecare dintre aceste exemple s se afle soluia exact y ( x) , soluia aproximativ sub form numeric (utiliznd unul dintre algoritmii Runge-Kutta A I descrii mai sus), eroarea soluiei aproximative, numrul de pai efectuai, pasul mediu i numrul total de evaluri ale prii drepte f ( x, y ) a ecuaiei difereniale. S se reprezinte grafic variaia erorii de calcul n funcie de valoarea pasului h . Calculele ncep cu pasul h = 0.1 , nodul final este x f = x0 + 1 , iar exactitatea de calcul este = 104 .

Lucrarea de laborator 6 S se extrag la tipar tabelul:


xi
y ( xi ) yi Dyi xi (i = 0, n) - nodurile reelei obinute; y ( xi ) (i = 0, n) - valorile soluiei exacte y ( x) n punctele xi ;

71

yi (i = 0, n) - valorile aproximative ale soluiei y ( x) n punctele xi ; Dyi (i = 0, n) - eroarea local de trunchiere n punctele xi .

Chestiuni de studiat 1. S se fac o analiz experimental a evoluiei erorii de calcul n procesul de realizare a algoritmilor, precum i a timpului de calcul al soluiei numerice, n funcie de pasul de integrare i de exactitatea impus. 2. S se fac o analiz comparativ a algoritmilor Runge-Kutta din punctul de vedere al efortului de calcul necesar obinerii unei exactiti impuse a soluiei. 3. Analizai deosebirea dintre stabilitatea unei ecuaii difereniale i stabilitatea ei numeric. 4. Scriei un algoritm pentru calculul integralei definite ale unei funcii aplicnd metoda lui Runge-Kutta. Probleme propuse spre rezolvare
1. y ' = (3 4 y) 2x , y(1) = 4; 2. y ' = x y , y(2) = 1; 3. 4. 5. 6. 7. 8. 9. y ' = 2 e4 x 2 y, y(0) = 1; y ' = y x + 1, y(1) = 1; y ' = 4x + y, y(0) = 3; y ' = y x 2ln x x , y(1) = 1; y(1) = e; y ' = y x + ( x + 1)ex x ,
14. y ' = y ( x + 1) + e x ( x + 1), y(0) = 1; 15. y ' = y ( x + 2) + x2 + 2x, y(1) = 1.5; 16. y ' = ytgx + cos2 x, y( 4) = 0.5; 17. y ' = y cos x + 0.5sin 2x, y(0) = 0; 18. y ' = yctgx + 2x sin x, y( 2) = 0; 19. y ' = 2 xy ( x2 + 1) + x2 + 1, y(1) = 3; 20. y ' = 3 y x + 2 x3 , y(1) = 1; 21. y ' = y x 12 x3 , y(1) = 4; 22. y ' = 2 y x + x3 , y(1) = 5 6; 23. y ' = y cos x + sin 2 x, y(0) = 1; 24. y ' = 3x2 y + x2 ( x3 + 1) 3, y(0) = 0; 25. y ' = xy x3 , y(0) = 3; 26. y ' = 4 xy 4 x3 , y(0) = 0.5.

y ' = y cos x sin 2x, y(0) = 3; y ' = 2 y ( x + 1) + ( x + 1)3 , y(0) = 0.5;


2

10. y ' = 2xy + xe x sin x, y(0) = 1; 11. y ' = 2 y ( x + 1) + ex ( x + 1)2 , y(0) = 1; 12. y ' = y x + x sin x, y( 2) = 1; 13. y ' = 2xy 2x3 , y(1) = 1 e ;

72 REFERINE

Referine

1. Buzurniuc ., Moraru V. Informatica: elemente de calcul numeric. Chiinu: Evrica, 2000. 116 p. 2. Dne N. Analiza numeric cu aplicaii rezolvate n Mathcad. Bucureti: Matrix Rom, 2002. 247 p. 3. Mitran S., Berbente C., Zancu S. Metode numerice. Bucureti: Editura Tehnic, 1997. 306 p. 4. Pltineanu G., Matei P., Trandafir R. Bazele analizei numerice. Bucureti: Printech, 2001. 284 p. 5. Secrieru G.V., Secrieru I.V. Analiza numeric. Chiinu: tiina, 1985. 207 p. (cu alfabet chirilic) 6. Secrieru I., Rbacova G. Analiza numeric n probleme i exemple. Chiinu: CEP USM, 2003. 78 p. 7. Botoanu M., Secrieru I., Zavadschi V. Elemente de modelare i analiz numeric. Informatica (material didactic pentru licee i colegii). Chiinu: Univers Pedagogic, 2006. 131 p. 8. Burden R.L., Faires J.D. Numerical analysis (7 ed.). Brooks Cole, 2001. 841 p. 9. Butcher J.C. Numerical methods for ordinary differential equations. Wiley, 2003. 425 p. 10. Conte S.D., de Boor C. Elementary numerical analysis. An algorithmic approach (3rd ed.). McGraw Hill Book Company, 1980. 432 p. 11. Golub G.H., Van Loan C.F. Matrix computations (3rd ed.). Baltimore and London: The Johns Hopkins University Press, 1996. 694 p. 12. Hairer E., Nrsett S.P., Wanner G. Solving ordinary differential equations I. Nonstiff problems (3rd ed.). Springer-Verlag, 2008. 528 p. 13. Kincaid D., Cheney W. Numerical analysis: mathematics of scientific computing. Brooks Cole, 1991. 690 p. 14. Saad Y. Iterative methods for sparse linear systems (2nd ed.). SIAM, 2000. 463 p. 15. Stoer J., Bulirsch R. Introduction to numerical analysis (2nd ed.). Springer Verlag, 1993. 660 p. 16. .., .., .. . : , 1994. 544 . 17. .. . . : , 2003. 37 . 18. .., .. . . : , 2002. 51 . 19. .., .. . : - , 2000. 70 . 20. .., .., .. . : , 1976. 630 . 21. .., .. , I. : , 1966. 632 .

Referine

73

22. .. . . : - , 1998. 137 . 23. .. : . : , 2002. 840 . 24. .., .. (3-e .). : , 1966. 664 . 25. .., .. : (2-e .). : , 2008. 368 . 26. .., .. : . : , 2004. 184 . 27. .., .. : . : , 1989. 432 . 28. .., .. , . . : , 2003. 304 .