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

g( z )
L( z )

0.5

0.5

0.5

0
z,z,x

0.5
j

0.5

0
z,z,x

0.5
j

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

5
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

LUCRAREA DE LABORATOR 1

APROXIMAREA VALORILOR FUNCIILOR


CU AJUTORUL DEZVOLTRII N SERII DE PUTERI
1.I. Scopul lucrrii
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:

j =0

j =0

j =0

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 .

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

Lucrarea de laborator 1

influena erorilor de rotunjire se va diminua semnificativ dac x < 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 x0 > atunci

m := sign x0 ; x := x0

m := sign x0 ; x := x0

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

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

dac x 2 atunci {x := x; m := m}

dac x 2 atunci x := x

dac x 4 atunci

dac x 4 atunci

dac x atunci { x := x ; m := m }

dac x atunci { x := x ; m := m }

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

{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

k := 1

execut
{

execut
{

s := s + a; k := k + 1

s := s + a; k := k + 1

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

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

}
ct timp a

}
ct timp a

s := ms

s := ms

}
altfel s := 1; k := 0

}
altfel s := x0 ; k := 0

scrie x0 , s, k

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
...
e . Pentru t (0;1), n 0 avem e x = e n et i et se calculeaz cu
dac t = 0 i n 1 , atunci e x = en = e
de n ori

exactitatea > 0 , conform formulei corespunztoare din relaia (1.2), utiliznd suplimentar urmtoarea
p

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

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

Lucrarea de laborator 1
ntreg k , m, n
real x, t , exp, s , a

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 t S ncos t 2( n +1) (2(n + 1))!, sin t S nsin t 2 n + 3 (2n + 3)!, t [0; 4]; et Snexp < t n +1 (n !n), t [0;1] ,
n

j =0

j =0

j =0

unde Sncos = (1) j t 2 j (2 j )!, S nsin = (1) j t 2 j +1 (2 j + 1)!, Snexp = t j j ! . Modul n care eroarea de trunchiere
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

11

3.III. Modul de desfurare a lucrrii


Cerine fa de ndeplinirea lucrrii
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

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 ;

14. f ( x ) = e x cos x + 2 chxshx sin x;

2. f ( x) = 1 sin x + e x cos x 4e x ;

15. f ( x ) = e 2 x cos x 2 chxshx sin x;

3. f ( x) = sh x + cos x (1 cos x);

16. f ( x ) = cos 2 x + 4tgx 12 e x ;

4. f ( x) = 12e x + sin 2 x (0.5 cos x);

17. f ( x ) = (cos 2 x + sin 2 x ) ( e x + 1);

5. f ( x) = tgx + ctgx + e x (e x + e x );

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

12

Lucrarea de laborator 1
6. f ( x) = ctgx + (4ex e x ) (2sin x);

19. f ( x) = e3x sin 2x + shx cos x;

7. f ( x) = 1 (tgx ctgx) + 2ex 1;

20. f ( x) = ex cos4x + chx cos2 x;

8. f ( x) = (2sin x 1) (cos x ex );

21. f ( x) = e x sin x + chx 2sin x (e x + e2 x );

9. f ( x) = (2tgx 1) (2 e x );

22. f ( x) = e2 x cos x 3sh2x 2sin x;

10. f ( x) = 4 sin x + (ex sin x) cos x ;

23. f ( x) = e2 x cos2 x + 4ch2x 2chx sin x;

11. f ( x) = extgx sin 2x (0.4 cos x);

24. f ( x) = e3x ch2x + 2cos2 x 4 + 2chx sin x;

12. f ( x) = sin 2 x + 2ctgx + 12e x ;

25. f ( x) = e2 x cos x + 4ch2 x 3shx sin 2 x;

13. f ( x) = 2 + ex + (3 + 5sin x) (3sin x 1);

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]:
n

Ln ( x) = yi li ( x) ,

(2.2)

i =0

n care li ( x) =

((x x )
n

j = 0, j i

( 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

Lucrarea de laborator 2
pentru j := 0, n execut { dac j i atunci t := t ( z x j ) ( xi x j ) }

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

j =0

i =0

Ln ( x) = ( x x j ) ( ri ( x xi ) ) ,

n care coeficienii ri (i = 0, n) sunt dai de relaia ri = yi

j = 0, j i

(2.3)

( xi x j ) . Procesul de calcul descris de

formula (2.3) admite urmtorul 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;
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

15

scrie z, p

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

y 0 = P0

x1

y 1 = P1

x2

y 2 = P2

P01
P01 2
P1 2

P0 1 2 3

P1 2 3
P2 3

x3

y 3 = P3

xn3

y n 3 = Pn 3

P 0 , ..., n -1

P 0 ,1 , ...,n

Pn - 3 , n - 2
xn 2

y n 2 = Pn 2

P1 , ..., n

x n 1

y n 1 = Pn 1

xn

y n = Pn

P n - 3 ,n - 2 , n -1
P n - 2 , n -1

P n - 3 , n - 2 , n -1 , n
P n - 2 , n -1 , n

P n -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

Lucrarea de laborator 2
pentru i := 1, n execut

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

( x j x j i ) }

scrie z, yn

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

considerat ca o aproximaie a erorii interpolrii EmL ( 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

i 1

i =1

j =0

N n ( x) = y0 + f [ x0 ;...; xi ] ( x x j ) .

(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 11 + Cki 1 (k = 2, n, i = 1, k 1; Ck01 = 1) (triunghiul lui Pascal), iar al doilea pe formula combinrilor

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:
k y0 k 1
(t j ) ,

k =1 k !
j =0
n

N n ( x) N n ( x0 + th) = y0 +

(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

Lucrarea de laborator 2

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

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

1)!
!
n
n

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

21

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)! ,

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:


k yn k
k!
k =1
n

N n ( x) N n ( xn + th) = yn +

k 1

(t + j ) ,

(2.9)

j =0

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

Lucrarea de laborator 2

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


x[ x0 ; xn ]

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

x0

...

xn

xi (i = 0, n) - nodurile reelei de interpolare;

yi

y0

...

yn

yi (i = 0, n) - valorile funciei f ( x) n noduri;

Tabelul interpolrii i testrii


j
1

zj

Pj

fj

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

ajutorul funciilor standard ale mediului de programare;

Lucrarea de laborator 2

23

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

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];

14. f ( x) = ( x 1)2 0.5ex , x [0;3];

2. f ( x) = e x x2 + 1, x [0.5;4];

15. f ( x) = ( x 1)2 e x , x [0;2.5];

3. f ( x) = e x sin x x , x [1;4];

16. f ( x) = x3 sin x, x [0.6;3];

4. f ( x) = x ln x , x [2;5];

17. f ( x) = 4x cos x, x [0;5];

5. f ( x) = e x cos x x , x [2;4];

18. f ( x) = x2 sin x, x [1;4];

6. f ( x) = ln( x + 1) x , x [10;15];

19. f ( x) = sin x + cos x, x [ 3; 3];

7. f ( x) = e ln x, x [2;4];

20. f ( x) = x2 cos x, x [2;4];


21. f ( x) = cos x sin x, x [ 2; 2];

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

x , x [1.1;4];
2

22. f ( x) = x 2cos0.5x, x [2;3];


23. f ( x) = 2x cos x, x [2;3];

11. f ( x) = xe2sin x , x [1;4];

24. f ( x) = x2 + ln( x + 5), x [4;3];

12. f ( x) = xecos x , x [10;16];


13. f ( x) = 3sin x + cos 2x, x [ 2;0];

25. f ( x) = sin3x 4cos3x, x [0; 2];


26. f ( x) = x2 + lg x, x [2;6].

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 ,

(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]
n

I n = ci f ( xi ) ,

(3.3)

i =0

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 .
b

Trebuie menionat, de asemenea, c i pentru calculul integralei

( x) f ( x)dx , n care

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

I = h f ( xi + h 2) ,

(3.6)

i =0

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

Rnd ( 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 P1 ( x) conform nodurilor x0 = a, x1 = b i are forma:
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)

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

Rnt ( 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)

n cazul n care f ( x) C ( IV ) [a; b] , pentru restul Rnt ( f ) al formulei (3.12) avem estimaia [2-6; 16; 24]

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

formula trapezelor

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

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

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

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

s := hs

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

scrie s

scrie s
formula lui Simpson

h := (b a ) n ; s := 0.5( f (a ) f (b)); i := 1
execut
{

x := a + ih; s := s + 2 f ( x) + f ( x + h); i := i + 2

}
ct timp i < n

s := 2hs 3
scrie s

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

27

urmtoarea relaie [16, p.394]


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

(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]:
I tr(0) = ( f (a) + f (b))h0 2, h0 = b a, n0 = 1,
nk 1

1
I tr( k ) = I tr( k 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 S( k ) = (4 I tr( k ) I tr( k 1) ) 3 .

Atunci, algoritmul pentru calculul recursiv al aproximaiilor conform formulei (3.12) poate fi descris cu
ajutorul relaiilor:
I tr(0) = ( f (a ) + f (b))h0 2, h0 = b a, n0 = 1,

I S( k )

nk 1

1
I tr( k ) = I tr( k 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 ).

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

29

}
ct timp s 2 s1 1
scrie s 2, k

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

i =1

( x) f ( x)dx ci f ( xi ) ,

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

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

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

acestora, iar coeficienii ci (i = 0, n) rezult din formula ci = ( x)li ( x)dx , n care li ( x) sunt polinoamele
a

fundamentale de interpolare Lagrange.


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

30

Lucrarea de laborator 3

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

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


1

f (t )dt

Vom analiza mai nti cum se aproximeaz integrala

i vom extinde apoi metoda pentru

calculul integralei pe orice interval [a; b] .


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

i =1

f (t )dt c f (t ) s fie exact pentru orice polinom de grad mai mic sau egal cu 2n 1 .
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

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

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

ci , i = 1, n
3

c1 = c2 = 1

t3 = t1 = 3 5, t2 = 0

c1 = c3 = 5 9, c2 = 8 9

t4 = t1 = 0.8611363116, t3 = t2 = 0.3399810436

c1 = c4 = 0.3478548451, c2 = c3 = 0.6521451549

Lucrarea de laborator 3
5

31

t5 = t1 = 0.9061798459, t4 = t2 = 0.5384693101,

c1 = c5 = 0.2369268850, c2 = c4 = 0.4786286705,

t3 = 0

c3 = 0.5688888889

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.
1

FC a lui Gauss-Chebyshev se aplic pentru integrale de forma (1 t 2 )

1 2

F (t )dt i are aspectul:

1
1 t2

F (t )dt ci F (ti ) .

(3.18)

i =1

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).
b

Orice integral de forma

(1 x )

2 1 2

f ( x)dx sau

f ( x)dx

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

(3.18) printr-o transformare convenabil de variabil.


b

Pentru a calcula integrala

( x) f ( x)dx

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
0 1 + x 2 dx ;

7.

8.

9.

( x 2 + 1)
2 sin xdx;
1

tgx + 1 dx;

15.

ln x + 1
x +1

5.

10.

x cos x
0 x + 1 dx;

11.

e x
6.
dx;
x+2
1
1

0.5

12.

1+ x +

4.

14.

x cos xdx;

x + 1sin xdx;

x 2
e dx;

ex
1 + x 2 dx;
1
1

3.

13.

2.

2
sin x dx;

sin x

1
x + cos x

dx;

dx;

dx;

16.

sin x
dx;
x
4

1
1 0.25sin 2 x

17.

dx;

lg x
dx;
x
1

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

1 0.25 x 2
dx;
1 x2

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

20.

x sin x
1 x2
cos x 2
1 x2

dx;

21.

0
1

dx;

22.

2sin x
dx;
x(1 x)

23.

e 2 x 5
dx;
x(1 x)

24.

1
1

sin x
1 + x2

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

dx;

25.

ex
1 x dx;
1

26.

x2ex
0 1 + x dx,

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

33

LUCRAREA DE LABORATOR 4

REZOLVAREA NUMERIC A ECUAIILOR ALGEBRICE I TRANSCENDENTE


4.I. Scopul lucrrii
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

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

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.
[ ak ; ck +1 ] , dac f (ak ) f (ck +1 ) < 0

, k = 0,1, ,

[ ck +1 ; bk ] , dac f (ak ) f (ck +1 ) > 0

irul de aproximaii ck +1 = (ak + bk ) 2, [ ak +1 ; bk +1 ] =

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

35

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

(de tip real) precizia dorit;

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


altfel b := c

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


}
scrie c, fc, k

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 ,

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

(4.3)

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
f ( x) , m1 = min f ( x) .
( xk +1 xk )2 < , k = 0,1, ...; M 2 = xmax
x[ a0 ;b0 ]
[ a0 ;b0 ]
2m1

(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) );

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

(de tip real) precizia dorit;

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

f ( x) este mic n

vecintatea rdcinii;
ntreg k , ind
real x, d 0 , d

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) );
a, b (de tip real) extremitile segmentului pe care este separat rdcina;

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

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

d := d fx

( fx0 fx ) ;

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

Lucrarea de laborator 4

39

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

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

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
x
(
)
k
x
( xk b0 ) (k = 1, 2,...) dac f (a0 ) f (a0 ) < 0
k

f ( xk ) f (b0 )

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) );
a, b (de tip real) extremitile segmentului pe care este separat rdcina;

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

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

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;

(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

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) ;


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

(de tip real) precizia dorit;

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

43

ntreg k
real x, y, z , 1 , d

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

y := n ; z := n

pentru j := n 1,1 execut { y := xy + j ; z := xz + y }

y := xy + 0 ; d := y z ; x := x d ; k := k + 1
}
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];
x

3a. e + x 1 = 0; [a; b] = [5;2];


3

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

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

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];

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

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];

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];

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].

45

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).


Vom utiliza notaiile bi(1) := bi , aij(1) := aij , i, j = 1, n . Soluia sistemului (5.1) se obine prin aplicarea
formulelor:
mik = aik( k ) akk( k ) , bi( k +1) = bi( k ) mik bk( k ) , aij( k +1) = aij( k ) mik akj( k ) , i, j = k + 1, n ,

(5.3)

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

(n)
xn = bn( n ) ann
, xk = bk( k )

j = k +1

(k )
kj

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

(5.4)

Lucrarea de laborator 5

47

n ipoteza c akk( k ) 0, k = 1, n .
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 = 1, n, i = 1,..., k 1, k + 1,..., n, j = k + 1, n . Componentele soluiei se determin prin formula xk = bk( k ) akk( k ) ,


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 k := 1, n execut
{
pentru i := 1, n execut
{
dac aik 0 atunci
{
dac i k atunci
{

pentru i := k + 1, n execut
{
dac aik 0 atunci
{

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

pentru j := k + 1, n execut aij := aij m akj

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 }

xn := bn ann

pentru k := n 1,1 execut


{

s := 0

**

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

}
}
}
}

dac ann = 0 atunci {se afieaz mesajul matricea

** sistemului este singular (MSS); STOP }


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

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 aik( k ) , i = k + 1, n , locaiile de memorie rezervate pentru

48

Lucrarea de laborator 5

acestea pot fi utilizate pentru a memora multiplicatorii mik .


Strategii de pivotare n rezolvarea SEAL
Utilizarea a.e.G sau a.e.GJ la rezolvarea sistemului (5.1) poate conduce la situaia n care un element
diagonal akk( k ) 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 aij( k ) , 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 aik( k ) , 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 akk( k ) 0 , iar aik( k ) = 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
{

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


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 }

Lucrarea de laborator 5

49
dac max k atunci
{

{
pentru j := k , n execut
{

pentru j := k , n execut
{ m := akj ; akj := amax, j ; amax, j := m }

dac aij > max atunci

m := bk ; bk := bmax ; bmax := m

{ max := aij ; imax := i; jmax := j }


}
}
dac max = 0 atunci
{se afieaz mesajul MSS; STOP }
dac imax k atunci
{

}
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

pentru j := k , n execut
{ m := akj ; akj := aimax , j ; aimax , j := m }

m := bk ; bk := bimax ; bimax := m

pagina 47)
pentru k := 1, n scrie xk

}
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

a unuia dintre

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


pentru k := 1, n scrie bk

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
n

acest caz, det A se va calcula prin formula det A = (1) p akk( k ) , 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
{

Rezolvarea SEAL cu factorizarea Crout


pentru k := 1, n execut
{

pentru i := 1, k execut
{

pentru i := 1, k 1 execut
{

pentru m := 1, i 1 execut aik := aik aim amk

pentru m := 1, i 1 execut aik := aik aim amk

aik := aik aii

}
pentru i := k + 1, n execut
{

}
pentru i := k , n execut
{

pentru m := 1, k 1 execut aik := aik aim amk

aik := aik akk

pentru m := 1, k 1 execut aik := aik aim amk

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

53

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

bk := bk akk

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

pentru k := 1, n scrie bk

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

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

a.e.GJ

fr
pivotare

pivotare
parial

pivotare
total

fr
pivotare

N1

N1 + N 2

N1 + N 3

N4

Volumul de
memorie

Nr. opera.
aritmetice

a.e.G

O(n 2 )

descompunerea LU

pivotare pivotare
parial
total

N4 + N2

N 4 + N3

O(n 2 )

Crout
sau

Cholesky

Doolittle

(matrice tridiagonal)

Lucrarea de laborator 5

Alg. metodei
parcurgerii

54

N1

n3 3 + O (n 2 )

O(8n)

O(n 2 )

O(0.5n 2 )

O(3n)

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

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 =

r
k =1

2
k

, care ns

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 )

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

Lucrarea de laborator 5

xi( k +1) = bi

aij x (jk ) aii , i = 1, n , k = 0,1,... (aii 0) ,


j =1, j i

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

a x

j = i +1

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
precedente x1( k +1) ,..., xi(k1+1) , deja calculate la pasul curent i de urmtoarele componente xi(+k1) ,..., xn( k ) , 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
liberi ai sistemului;

(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

Metoda lui Gauss-Seidel

ntreg i, j , k

ntreg i, j , k

real 1 , s, er

real 1 , s, er

tablou real z[ n]

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

er := 0

pentru i := 1, n execut

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

er := 0

pentru i := 1, n execut
{

Lucrarea de laborator 5
{

57
s := bi

s := bi

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

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

s := ( s + aii xi ) aii ; er := er + ( s xi ) 2 ; xi := s

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

k := k + 1
er := er

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

k := k + 1

}
ct timp er 1

}
ct timp er 1

pentru i := 1, n scrie xi
scrie k

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 >

j =1, j i

aij , i = 1, n ;

b) Matricea A a sistemului (5.1) este strict diagonal dominant pe coloane, adic a jj >

i =1,i j

aij ,

j = 1, n ;
n

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
M = {mij }in, j =1 , M U = {mijU }in, j =1 , mij =
, iar mijU =
.

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

A 1 := max aij
1 j n

x 1 := xi ,

i =1

i =1

A := max aij
1 i n

Constanta q se va alege astfel nct q < 1 .

j =1

:= max xi .
1 i n

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

59

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

}
Metode nestaionare.
n cele ce urmeaz, pentru orice doi vectori coloan u = (u1 ,..., un )T i v = (v1 ,..., vn )T vom nota
n

produsul lor scalar cu u , v := v T u = ui vi .


i =1

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
coeficienilor sistemului (a se vedea seciunea O metod de stocare compact a matricei simetrice);

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;

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

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

k := k + 1; nr := 1
}
pentru i := 1, n scrie xi
pentru i := 1, n scrie ri
scrie k

Lucrarea de laborator 5

61

Analiza algoritmului
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 .

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

Vectorii reziduali generai

Drept

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

rezultat,

) ( (r

( k 1) T

r (k )

sunt ortogonali doi cte doi

obinem

urmtoarea

pentru

) r ( k 1) ,

iar

expresie

lungimea

pentru

pasului

direcia

avem

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
coeficienilor sistemului (a se vedea seciunea O metod de stocare compact a matricei simetrice);

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;

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

Lucrarea de laborator 5
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
{

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

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

k := k + 1; nr := 1
}
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

63

III. Modul de desfurare a lucrrii


Cerine fa de ndeplinirea lucrrii
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 ] ,

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) .

Dac

(6.2)

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]:
p

yi +1 = yi + yi , yi = m km , i = 0, n 1 ,

(6.3)

m =1

k1 = h f ( xi , yi ),

q 1

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

(6.4)

j =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
q 1

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


j =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+/21 i, respectiv, yih+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]

y ( xi +1 ) yih+12 yih+12 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
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)+1 - estimaia erorii de trunchiere ce apare n calculul lui yih+1 . Dac din nou i(1)+1 , atunci punctul
(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

69

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 ] ;

(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

71

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 ;

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;

14. y ' = y ( x + 1) + e x ( x + 1), y(0) = 1;

3.

y ' = 2 e4 x 2 y, y(0) = 1;

4.
5.

y ' = y x + 1, y(1) = 1;
y ' = 4x + y,
y(0) = 3;

16. y ' = ytgx + cos2 x, y( 4) = 0.5;


17. y ' = y cos x + 0.5sin 2x, y(0) = 0;

6.

y ' = y x 2ln x x ,

7.

y ' = y x + ( x + 1)ex x ,

8.

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

21. y ' = y x 12 x3 , y(1) = 4;

9.

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

22. y ' = 2 y x + x3 , y(1) = 5 6;


23. y ' = y cos x + sin 2 x, y(0) = 1;

15. y ' = y ( x + 2) + x2 + 2x, y(1) = 1.5;

18. y ' = yctgx + 2x sin x, y( 2) = 0;

y(1) = 1;
y(1) = e;

10. y ' = 2xy + xe x sin x, y(0) = 1;


2

19. y ' = 2 xy ( x2 + 1) + x2 + 1, y(1) = 3;


20. y ' = 3 y x + 2 x3 , y(1) = 1;

11. y ' = 2 y ( x + 1) + ex ( x + 1)2 , y(0) = 1;


12. y ' = y x + x sin x, y( 2) = 1;

24. y ' = 3x2 y + x2 ( x3 + 1) 3, y(0) = 0;

13. y ' = 2xy 2x3 , y(1) = 1 e ;

26. y ' = 4 xy 4 x3 , y(0) = 0.5.

25. y ' = xy x3 , y(0) = 3;

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 .

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