Sunteți pe pagina 1din 125

CALCUL NUMERIC

NOTE DE CURS

-1-
CUPRINS
Introducere 4
Capitolul 1
Erorile de calcul numeric 6
1.1. Surse de erori 6
1.2. Propagarea erorilor de calcul 7
1.3. Algoritmi şi complexitate de calcul 9
1.4. Metode de programare 11
Capitolul 2
Rezolvarea numerică a ecuaţiilor şi sistemelor de ecuaţii algebrice neliniare 13
2.1. Introducere 13
2.2. Rezolvarea numerică a ecuaţiilor neliniare 13
2.2.1. Metoda aproximaţiilor succesive 14
2.2.2. Metoda Lagrange 15
2.2.3. Metoda Newton 16
2.2.4. O teoremă de punct fix 17
2.2.5. Ordinul metodei 22
2.2.6. Accelerarea convergenţei 24
2.2.6.1. Metoda Aitken 24
2.2.6.2. Metoda Steffensen 26
2.2.7. Metoda poziţiei false 28
2.2.8. Principiul dihotomiei 30
2.3. Rezolvarea numerică a sistemelor neliniare 31
2.3.1. Metoda aproximaţiilor succesive 31
2.3.2. Metoda Newton 33
2.4. Exerciţii 35
Capitolul 3
Rezolvarea sistemelor algebrice liniare 36
3.1. Introducere 36
3.2. Metode directe 36
3.2.1. Metoda de eliminare a lui Gauss 37
3.2.2. Factorizarea LU 40
3.2.3. Factorizarea Cholesky 42
3.3. Metode iterative 43
3.3.1. Metoda iterativă Jacobi 44
3.3.2. Metoda iterativă Gauss-Seidel 46
3.3.3. Metoda relaxării 48
3.4. Exerciţii 48
Capitolul 4
Rezolvarea numerică a problemelor algebrice de valori şi vectori proprii 50
4.1. Abordarea elementară a subiectului 50
4.2. Aspecte teoretice generale 51
4.2.1. Clase speciale de matrici 51
4.2.2. Punerea corectă a problemei 54

-2-
4.3. Metoda lui Jacobi 55
4.4. Probleme de valori proprii generalizate 61
4.5. Exerciţii 62
Capitolul 5
Aproximarea funcţiilor prin polinoame 63
5.1. Introducere 63
5.2. Aproximarea prin interpolare 63
5.2.1. Interpolarea polinomială Lagrange 64
5.2.2. Algoritmul Aitken 66
5.2.3. Evaluarea restului la interpolarea Lagrange 68
5.2.4. Diferenţe divizate 70
5.2.5. Formula lui Newton de interpolare 71
5.2.6. Diferenţe finite 73
5.2.7. Formule de interpolare pe noduri echidistante 73
5.2.8. Interpolarea polinomială Hermite 75
5.2.9. Interpolarea prin funcţii spline 77
5.3. Aproximarea în sensul celor mai mici pătrate 79
5.3.1. Problema fundamentală a aproximării liniare 79
5.3.2. Teoreme fundamentale 80
5.3.3. Aproximarea discretă în sensul celor mai mici pătrate 81
5.4. Exerciţii 83
Capitolul 6
Rezolvarea ecuaţiilor diferenţiale ordinare de ordinul I 84
6.1. Introducere 84
6.2. Metode 85
6.2.1. Metoda Euler 85
6.2.2. Metoda Euler backward 85
6.3. Generalizări 86
6.3.1. Metode Runge – Kutta 86
6.3.1.1. Metoda clasică Runge – Kutta de ordin 4 86
6.3.1.2. Metode Runge – Kutta explicite 87
6.3.1.3. Metode Runge – Kutta ajustative 87
6.3.1.4. Metode Runge – Kutta implicite 88
6.3.2. Caracteristici 88
6.4. Metode alternative 89
Capitolul 7 Integrarea numerică 91
7.1. Introducere 91
7.2. Integrarea în puncte echidistante 97
7.2.1. Formulele Newton – Cotes 97
7.2.2. Metoda dreptunghiurilor 99
7.2.3. Regula trapezului 100
7.2.4. Metoda Romberg 101
7.2.5. Regula Simpson 102
7.2.6. Metoda ajustativă Simpson 104
7.3. Integrarea în puncte neechidistante 105
7.3.1. Cvadratura gaussiană 105
7.3.2. Cvadratura tanh – sinh 109
7.3.3. Cvadratura Clenshaw – Curtis 110
7.3.4. Cvadratura Fejer 113
7.3.5. Cvadratura ajustativă 113
7.4. Integrarea cu funcţii pondere 115
7.5. Metoda Nystrom 116
7.6. Formula Euler – MacLaurin 116
7.7. T - integrarea 121
-3-
Bibliografie 123
Fişa disciplinei 124

-4-
INTRODUCERE
Ultimele decenii au fost marcate de progresul mijloacelor de calcul.
Asistăm la o competiţie între dezvoltarea tehnologică şi dezvoltarea aplicaţiilor,
în particular, a celor numerice. Tehnica de calcul a devenit accesibilă pentru
categorii tot mai largi de utilizatori. Globalizarea accesului la magistralele
informaţiilor organizate în reţeaua Internet a dat o nouă dimensiune utilizării
calculatoarelor, revoluţionând domenii întregi de activitate.
Obiectul calculului numeric îl reprezintă găsirea unor metode de
aproximare eficientă a soluţiilor problemelor care pot fi exprimate prin modele
matematice, eficienţă ce depinde de precizia cerută pentru rezultate şi de
uşurinţa implementării. Calculul numeric este una dintre disciplinele
matematice ce depinde în cea mai mare măsură de calculatorul numeric.
Drumul parcurs pentru rezolvarea unei probleme dintr-un domeniu
oarecare cu ajutorul calculatorului constă în: stabilirea unui model matematic al
problemei concrete (model ce se poate încadra într-o categorie cum ar fi: o
ecuaţie neliniară, un sistem de ecuaţii liniare sau neliniare), care fiind de multe
ori de natură continuă trebuie discretizat; soluţia problemei discretizate trebuie
să fie consistentă şi stabilă (robustă); modelul discretizat trebuie transpus într-
un algoritm realizabil şi eficient, descris de obicei într-un limbaj de programare
evoluat.
Calculul numeric operând cu mărimi variate presupune folosirea tipului
real a cărui reprezentare în calculator este aproximativă, apărând erori de
rotunjire care se propagă. Deci, o metodă numerică trebuie aleasă ţinând seama
de convergenţă, stabilitate, propagarea erorilor şi de analiza complexităţii
algoritmului asociat.
Pentru parcurgerea şi utilizarea unui asemenea material, cititorul are
nevoie de cunoştinţe de matematică la îndemâna studenţilor care au promovat
primul an de studiu al oricărei facultăţi cu profil tehnic, matematico-informatic
sau economic.
Metodele numerice sunt prezentate în detaliu, prin discutarea aspectelor
de ordin strict matematic şi descrierea algoritmilor cu ajutorul unui limbaj de tip
pseudocod.
Lucrarea „Calcul numeric” are şapte capitole.
Primul capitolul are un caracter eterogen – la început se prezintă sursele
de erori şi propagarea lor, apoi algoritmi şi complexitate de calcul, iar în final,
metode de programare.
Capitolul al doilea are ca obiect rezolvarea numerică a ecuaţiilor şi
sistemelor de ecuaţii algebrice neliniare. Sunt prezentate metode de localizare a
soluţiei, de aproximaţii succesive şi de accelerare a convergenţei pentru ecuaţii
neliniare, precum şi metode numerice de rezolvare a sistemelor algebrice
neliniare.

-5-
Capitolul al treilea este dedicat rezolvării numerice a sistemelor
algebrice liniare. Sunt examinate metode directe bazate pe factorizarea
gaussiană, precum şi metode de aproximare.
În capitolul al patrulea se prezintă metode de tip Jacobi de rezolvare
numerică a problemelor algebrice de valori şi vectori proprii, precum şi
generalizarea lor.
În capitolul al cincilea se prezintă aproximarea funcţiilor prin interpolare
de tip Lagrange, Hermite şi prin funcţii spline, precum şi aproximarea în sensul
celor mai mici pătrate.
În cel de al şaselea capitol sunt prezentate câteva metode numerice de
rezolvare a ecuaţiilor cu derivate parţiale, iar în utimul capitol sunt prezentate
diferite metode pentru integrarea numerică.

-6-
CAPITOLUL 1
Erorile de calcul numeric

Obiectivul capitolului
Însuşirea unor noţiuni referitoare la erorile de calcul numeric, algoritmi şi
complexitate de calcul, metode de programare.

Cuvinte cheie: algoritmi, complexitate de calcul, metode de programare.

1.1. Surse de erori


Suntem în posesia unui număr suficient de mare de metode numerice
pentru a considera mai în detaliu problema erorilor de calcul numeric. Se
observă că o formulă de calcul numeric se aplică de obicei în mod repetat. În
consecinţă, prezintă importanţă nu numai eroarea introdusă într-o etapă, ci şi
tendinţa de a amplifica sau, dimpotrivă, de a atenua erorile introduse anterior,
adică stabilitatea metodei numerice.
Erorile inerente sunt erorile legate de cunoaşterea aproximativă a unor
valori provenite din măsurători sau din faptul că avem de-a face cu numere
iraţionale. Rezultatul oricăror calcule depinde şi de precizia datelor introduse
iniţial. Ca erori inerente pot fi considerate şi erorile de conversie făcute la
trecerea în baza 2 a unor numere care se introduc în memoria calculatoarelor
numerice. De exemplu, numărul 0.1 reprezentat printr-un număr finit de
zecimale în baza 10, devine o fracţie zecimală periodică în baza 2 (0.1 10 =
0.0(0011)2).
Erorile de metodă sau erorile de trunchiere sunt provenite din
aproximaţiile făcute la deducerea formulelor de calcul. De exemplu, restul la
interpolarea polinomială, distanţa | x n − l | la rădăcină, din metodele iterative de
calcul, etc. Spre deosebire de erorile inerente, erorile de metodă pot fi reduse, în
principiu, oricât de mult.
Erorile de rotunjire sunt legate de posibilităţile limitate de reprezentare a
numerelor în calculatoarele numerice. În calculator se pot reprezenta numere cu
un număr de cifre semnificative în funcţie de lungimea cuvântului (măsurată în
biţi) utilizat la stocarea unui număr.
În memoria internă a unui calculator numeric se foloseşte reprezentarea
în virgulă mobilă, în formă normalizată. Orice număr real x se scrie
x = m  be , | m |  1

-7-
unde m este un număr real numit mantisă, b  0 ( b  1 ) este baza sistemului de
numeraţie, iar e (întreg) este exponentul.
În forma normalizată, mantisa este cuprinsă în intervalul [b −1 ,1)
( b −1  | m |  1 ).
Excepţia de la această regulă de reprezentare este numărul zero.
Deci, un număr real cu mai multe cifre semnificative este „rotunjit” la
numărul de cifre maxim, lucru care se realizează prin rotunjirea mantisei. Alte
rotunjiri se fac în decursul operaţiilor.
Notând cu x valoarea exactă a numărului şi cu x valoarea calculată
(aproximativă), eroarea absolută e x se defineşte ca
ex = x − x ,
iar raportul e x / x se numeşte eroare relativă, notată cu  x ,
 x = ex / x .
Fie k numărul de cifre semnificative. Presupunem că b = 10. Atunci, un
număr x se va scrie
x = m  10 e + n  10 e − k , | m |, | n | [0.1,1) ,
unde n conţine cifrele care nu pot incluse în mantisa m.
Rotunjirea se face simetric (de obicei), adică se înlocuieşte
| n |= 1 dacă | n |  0.5 , | n |= 0 dacă | n |  0.5 .
În acest fel marginea erorii relative este
| n | 10 e − k / | m | 10 e  5  10 − k .
Erorile cu marginea dată mai sus se fac la introducerea numerelor reale în
memoria calculatorului numeric.

1.2. Propagarea erorilor de calcul


Fie două numere, x şi y, introduse cu erorile e x , respectiv e y . x = x + e x ,
y = y + ey .
Propagarea erorilor la adunare
Presupunem că se efectuează suma numerelor
x + y = x + y + ex + e y ,
astfel încât eroarea relativă la sumare este
e x + y /( x + y ) = (e x + e y ) /( x + y ) = x /( x + y ) x + y /( x + y ) y ,
adică o sumă ponderată a erorilor introduse la reprezentarea în calculator a
cantităţii sumate. Notăm cu  s eroarea introdusă suplimentar la reprezentarea
sumei x + y . Eroarea relativă totală la sumare,  ts , va fi
 ts = x /( x + y ) x + y /( x + y ) y +  s .

-8-
Propagarea erorilor la scădere
Presupunem că se efectuează scăderea numerelor
x − y = x − y + ex − e y ,
astfel încât eroarea relativă la scădere este
e x − y /( x − y ) = (e x − e y ) /( x − y ) = x /( x − y ) x − y /( x − y ) y ,
adică o diferenţă ponderată a erorilor introduse la reprezentarea în calculator a
diferenţei. Notăm cu  d eroarea introdusă suplimentar la reprezentarea
diferenţei x − y . Eroarea relativă totală la scădere, td , va fi
 td = x /( x − y ) x − y /( x − y ) y +  d .
Fie x = 2 , y = 0,6665 şi k = 4 . Să se calculeze e x − y .
3
Avem x = 0,6666 , y = y , deci
2
− 0,6666
x−x 3 y−y
x = = = 0,0001 ,  y = = 0.
x 0,6666 y
0.6666
 x− y =  0,0001 +  d = 0,6666 +  d .
2
− 0,6666
3
Această eroare relativă a lui x − y se propagă în toate calculele ulterioare.
Propagarea erorilor la înmulţire
Presupunem că se efectuează produsul numerelor
xy = ( x + e x )( y + e y ) = x y + ye x + x e y ,
unde s-a neglijat produsul e x e y considerat ca având un ordin de mărime
suficient de mic. Eroarea la înmulţire este
e xy / x y = e x / x + e y / y =  x +  y .
Deci la înmulţire erorile relative introduse iniţial se adună. Pot apărea noi
erori, deoarece produsul xy poate avea un număr de cifre semnificative mai
mare decât cel admis, necesitând o nouă rotunjire. Notând cu  p această nouă
eroare, vom obţine eroarea relativă totală  tp la înmulţirea a două numere
 tp =  x +  y +  p ,

iar ca margine a erorii |  tp |  |  x | + |  y | + |  p |  15  10 − k , acoperitoare


deoarece erorile se compun după legi probabilistice.
Eroarea totală la calculul expresiei E = ( x + y) z a cărei valoare
aproximativă este ( x + y ) z este
 tE = x /( x + y ) x + y /( x + y ) y +  z +  s +  p ,
cu mărginirea
-9-
|  tE |  15  10 − k [(| x | + | y |) / | x + y | +3] .
Propagarea erorilor la împărţire
Presupunem că se efectuează împărţirea numerelor
 2 
x + ex x + ex  e y  e y  .
x / y = ( x + e x ) /( y + e y ) = = 1− 
+  − ...
 ey  y  y  y  
y 1 + 

 
 y 
Deoarece seria este convergentă, exprimând-o liniar, obţinem
x e x
x/ y  + x − ey .
y x y2
Eroare la împărţire este
ex / y
e ey
= x − .
x/y x y
Notând cu  i noua eroare datorată împărţirii şi cu  ti eroarea totală la
împărţirea a două numere obţinem  ti =  x −  y +  i .

1.3. Algoritmi şi complexitate de calcul


Procesele de prelucrare automată a informaţiei se caracterizează prin
natura lor algoritmică şi faptul că sunt efectuate cu ajutorul unor maşini
automate de calcul. Calculatoarele electronice sunt capabile să rezolve
problemele de calcul descompuse în operaţii elementare, precizându-se
succesiunea operaţiilor. Din această perspectivă, prin algoritm se înţelege o
mulţime finită de reguli de calcul (care constituie paşii algoritmului), care
indică operaţiile elementare necesare rezolvării unei probleme şi ordinea
efectuării lor. Orice algoritm porneşte de la datele iniţiale, pe care le
prelucrează în vederea obţinerii rezultatului problemei. Algoritmii se
caracterizează prin generalitate, finitudine şi unicitate. Oricărei probleme care
admite o formulare matematică i se poate asocia un algoritm de rezolvare, care
nu se confundă nici cu formularea matematică şi nici cu reprezentarea sub
formă unui program într-un limbaj de programare. Printre cele mai utilizate
metode de descriere a algoritmilor se numără reprezentarea prin scheme logice
şi cea cu ajutorului limbajelor de tip pseudocod. În capitolele următoare vom
folosi pentru descrierea algoritmilor un limbaj de tip pseudocod, iar în
secţiunile 1.4 şi 1.5 a acestui capitol vom prezenta, pe scurt, câteva din
metodele de programare şi câteva din elementele limbajului de programare C în
vederea implementării algoritmilor în acest limbaj de programare. Algoritmii
prezentaţi sunt exprimaţi într-un pseudocod care posedă următoarele operaţii
simple: atribuirea (variabilă  expresie), apelul de procedură (funcţie) (execută
nume (listă_parametri)), citirea (citeşte listă_variabile), scrierea (scrie
listă_expresii) şi în următoarele structuri de control: secvenţa ({instrucţiune_1

- 10 -
... instrucţiune_n}), selecţia unară (dacă condiţie atunci instrucţiune), selecţia
binară (dacă condiţie atunci instrucţiune_1 altfel instrucţiune_2), selecţia
multiplă (alege selector dintre valoare1:intrucţiune1 … valoaren:instrucţiunen),
iteraţia cu număr prestabilit de ciclări (pentru contor  expresie_1:expresie_2
repetă instrucţiune), iteraţia pretestată (cât timp condiţie repetă instrucţiune),
iteraţia posttestată (repetă instrucţiune până când condiţie).
Vom înţelege prin problemă algoritmică o funcţie total definită
P : I → F , unde I este mulţimea informaţiilor iniţiale (intrările problemei) iar F
este mulţimea informaţiilor finale. Presupunem că I şi F sunt cel mult
numărabile. Dacă i  I este precizat, atunci determinarea lui P(i) se numeşte o
instanţă a problemei P. Vom folosi pentru o instanţă notaţia p şi prin abuz de
notaţie vom scrie „ p  P ”. Un algoritm care rezolvă problema P va porni de la
o codificare a unei instanţe oarecare a problemei P şi va oferi o codificare a
rezultatului.
Din multitudinea de algoritmi existenţi pentru rezolvarea unei probleme
se va alege cel mai „performant”, adică să fie uşor de înţeles, codificat,
modificat, depanat şi să utilizeze în mod eficient resursele. Eficienţa unui
algoritm este evaluată prin timpul consumat în unitatea centrală şi memoria
ocupată, iar pentru algoritmii cu specific numeric mai sunt consideraţi şi factori
precum precizia şi stabilitatea numerică. Deoarece analizăm performanţele unui
algoritm şi nu performanţele unor calculatoare şi nici software-ul folosit, vom
exprima timpul consumat în număr de operaţii (în virgulă mobilă). Vom nota
prin T = TA ( p) numărul de operaţii efectuate de algoritmul A pentru rezolvarea
instanţei p şi vom asocia problemei rezolvate un număr g (P) numit
dimensiunea problemei – reprezentând numărul datelor de intrare.
Resursa timp se exprimă ca o funcţie de dimensiunea problemei, funcţie
numită complexitatea în timp a algoritmului T = f (n) . Această funcţie este
polinomială sau exponenţială, iar dacă dimensiunea problemei creşte la infinit
se obţine complexitatea asimptotică în timp a algoritmului. Comportarea în
cazul cel mai nefavorabil a algoritmului A pe o intrare de dimensiune n este
TA (n) = sup{TA ( p) : p  P şi g ( p) = n} ,
iar comportarea medie a algoritmului este
T Amed (n) = M ({T A ( p) : p  P şi g ( p) = n})
(adică media variabilei aleatoare TA ( p) ).
Deoarece determinarea exactă a lui TA (n) este dificilă vom căuta margini
superioare şi inferioare pentru TA (n) . Pentru funcţia f : N → N ,
O( f ) = {g g : N → N, c  R, c  0, n0  N : g (n)  cf (n), n  n0 }
( f ) = {g g : N → N, c  R, c  0, n0  N : g (n)  cf (n), n  n0 }
( f ) = { g g : N → N, g  O ( f )   ( f ) } .

- 11 -
Vom spune că P are complexitatea O( f (n)) dacă există un algoritm A
care rezolvă problema P şi are complexitatea TA (n) = O( f (n)) . O problemă P
are complexitatea ( f (n)) dacă orice algoritm A care rezolvă problema P are
complexitatea TA (n) = ( f (n)) . Un algoritm A cu TA (n) = ( p(n)) , unde p
este un polinom în n, se numeşte polinomial. Un algoritm care nu este
polinomial se numeşte exponenţial. Astfel algoritmii cu complexitate
exponenţială sunt irealizabili, în timp ce algoritmii polinomiali de grad mai
mare decât 2 sunt nepractici. Importanţa practică a acestora rezultă şi din
următorul exemplu. Presupunem că un pas necesită 10 −6 secunde, adică
O(1) = 10 −6 secunde, atunci pentru n = 40,
un algoritm cu funcţia de complexitate n necesită 0.00004 secunde,
un algoritm cu funcţia de complexitate n 5 necesită  1.7 minute,
un algoritm cu funcţia de complexitate n 6 necesită  129 ani (!).

1.4. Metode de programare


Vom prezenta un scurt istoric al unor metode de programare, dar nu
exhaustiv. Am considerat necesar acest lucru, în vederea implementării
ulterioare, în limbaje de evoluate de programare, a algoritmilor prezentaţi în
lucrare. O clasificare cronologică ar fi următoarea: programarea artizanală,
procedurală, modulară, structurată, prin abstractizarea datelor şi orientatǎ pe
obiecte.
Programarea artizanală este prima modalitatea de programare, în care
iniţiativa şi experienţa programatorului joacă un rol important, fiecare
programator îşi are propriile reguli de programare, iar programele au un singur
corp de instrucţiuni, sunt lungi şi greu de înţeles.
Programarea procedurală are la bază utilizarea procedurilor (care se
mai numesc şi subprograme sau subrutine – unităţi distincte de program) care
trebuie parametrizate cu anumite variabile numite parametri formali a căror
valori de apel se numesc parametri efectivi. Procedurile realizează o
abstractizare prin parametri (ele trebuie să fie generale deci procesarea să facă
abstractizare de valorile datelor). La apelare o procedură funcţionează după
principiul cutiei negre (se cunosc intrările şi ieşirile, rezultatele din acestea dar
nu şi modul de transformare). Sunt proceduri care definesc o valoare de
revenire (numite şi funcţii) şi proceduri care nu definesc o valoare de revenire.
Programarea modulară are la bază elaborarea programelor pe module.
O colecţie de funcţii înrudite (funcţiile obţinute în urma programării unei
subprobleme – componentă a descompunerii arborescente a problemei date în
subprobleme mai simple), împreună cu datele pe care le prelucrează în comun
formează un modul. Deoarece o parte din datele utilizate în comun de funcţiile

- 12 -
modulului nu sunt necesare şi în alte module ele sunt protejate (ascunse în
modul).
Programarea structurată. Descompunerea unei probleme în
subprobleme mai simple se face succesiv în mai multe etape, până când
subproblemele sunt direct programabile sub forma unor proceduri sau module.
Această descompunere, numită rafinare pas cu pas, este o descompunere
arborescentă. În cadrul procedurilor se folosesc anumite structuri de control a
execuţiei. Prelucrarea de bază în cadrul acestor structuri de control este cea de
atribuire. Această abordare a programării s-a născut din necesitatea eliminării
saltului necondiţionat, determinându-l pe Dijsktra să impună D-structurile de
control:
secvenţa (în care prelucrările se execută în ordinea scrierii lor);
iteraţia pretestată (cât timp o condiţie este adevărată execută o
prelucrare, prelucrare ce trebuie să modifice valoarea de adevăr a condiţiei);
alternativa simplă (dacă o condiţie este adevărată execută o prelucrare).
S-a demonstrat (Bohm şi Jacopini) că orice algoritm se poate descrie
doar cu D-structurile, dar pentru o mai bună lizibilitate şi înţelegere a
programelor sursă s-au adăugat şi iteraţia posttestată, iteraţia cu un număr
prestabilit de ciclări, alternativa binară şi alternativa generalizată.
Programarea prin abstractizarea datelor propune metodologii în care
conceptele deduse din analiza problemei să poată fi reflectate cât mai fidel în
program. În general un tip abstract de date are două componente: datele
membru – care reflectă reprezentarea tipului şi funcţiile membru – care reflectă
comportamentul tipului.
Programarea orientată spre obiecte. În cadrul structurilor ierarhice,
unde conceptele sunt strâns legate între ele, nu este suficientă doar legătura
dintre concepte în care datele membru ale unei clase pot fi obiecte ale unei alte
clase. Exprimarea ierarhiilor conduce la atribute suplimentare cum sunt cele de
moştenire, atribute care conduc la un model nou de programare numit
programare orientată obiect. În vârful ierarhiei se află fenomenul sau forma de
existenţă care are trăsături comune pentru toate celelalte componente ale
ierarhiei respective. Pe nivelul următor al ierarhiei se află componente care pe
lângă trăsăturile comune de pe nivelul superior, mai au trăsături specifice. O
ierarhie are, de obicei, mai multe nivele, iar situarea unui element pe un nivel
sau altul al ierarhiei este uneori o problemă complexă.

Discuţii finale:
Să se discute despre erorile de calcul numeric, despre algoritmi şi complexitate
de calcul, despre metode de programare.

Tema propusă:
Să se facă o lucrare despre erorile de calcul numeric, despre algoritmi şi
complexitate de calcul, despre metode de programare.
- 13 -
CAPITOLUL 2
Rezolvarea numerică a ecuaţiilor şi sistemelor de
ecuaţii algebrice neliniare

Obiectivul capitolului
Însuşirea unor noţiuni referitoare la metodele Newton, Aitken, Steffensen,
falsei poziţii.

Cuvinte cheie: metode numerice.

2.1. Introducere
Forma generală a unei ecuaţii (sistem de ecuaţii) algebrice neliniare este:
f ( x) = 0
unde f este o funcţie vectorială pe X  R n , n  1 , cu n componente:
f ( x) = ( f1 ( x), f 2 ( x),..., f n ( x))T , iar x este vectorul necunoscutelor cu n
componente x = ( x1, x2 ,..., xn ) . Pentru n = 1, notând x1 = x , avem o ecuaţie
algebrică neliniară sau transcendentă, cu o necunoscută.

2.2. Rezolvarea numerică a ecuaţiilor neliniare


Fie f : R → R o funcţie dată (în anumite cazuri, f va fi o funcţie de la C
la C).
Presupunând că avem funcţia reală de argument real
f : [ xmin , xmax ] → R ,
orice valoare   [ x min , x max ] pentru care f () = 0 se numeşte rădăcină
(soluţie) a ecuaţiei f ( x) = 0 sau zero al funcţiei f (x).
În general, prin rădăcină aproximativă a ecuaţiei f ( x) = 0 se înţelege o
valoare ' apropiată de valoarea exactă  . O rădăcină aproximativă poate fi
definită în două moduri: numărul ' cu proprietatea | '− |  (  0) sau,
numărul ' cu proprietatea | f (' ) |  .
Să se găsească una sau mai multe soluţii ale ecuaţiei f ( x) = 0 .
Presupunem că f este o funcţie continuă şi cu ajutorul, fie matematic, fie
experimental, se va determina un interval [a,b] în care ecuaţia are o rădăcină şi
numai una care se va nota cu  .

- 14 -
2.2.1. Metoda aproximaţiilor succesive
Metoda constă în construirea unui şir de aproximaţii succesive (şir de
iterare) a lui  , rădăcina exactă a ecuaţiei f ( x) = 0 , de forma:
x0 = aproximaţia iniţială (dat);
xn +1 = g ( xn ) ,
care să tindă la  .
Pentru a genera acest şir, se înlocuieşte ecuaţia f ( x) = 0 printr-o ecuaţie
echivalentă, în intervalul considerat, x = g (x) , unde g este o funcţie continuă.
f (x)
De exemplu, x = x − f (x) sau x = x − cu   0 . Apoi, plecând de la x0

ales în [a,b], se construieşte:
x1 = g ( x0 )

...
x n +1 = g ( x n ).
Geometric, se înlocuieşte căutarea intersecţiei graficului funcţiei f cu axa
absciselor, prin căutarea intersecţiei curbei de ecuaţie y = g (x) cu dreapta de
ecuaţie y = x .
Există numeroase moduri de a obţine metoda de aproximaţii succesive,
adică de a determina g plecând de la f.
În acest sens sunt necesare răspunsuri la întrebările:
i) şirul ( x n ) este convergent?
ii) dacă şirul converge, limita sa este  ?
Dacă ( x n ) nu-i convergent atunci metoda aleasă trebuie eliminată. Dacă
s  [a, b] (unde s = lim x n , deoarece lim xn +1 = lim g ( x n ) şi cum g este o
n→ n → n →
funcţie continuă urmează că s = g (s) , adică f (s) = 0 ) atunci s =  . Deci
răspunsul la întrebarea ii) este orice şir.
Deoarece, din punct de vedere numeric se efectuează un număr finit de
iteraţii, este necesar să ne preocupe şi următoarele probleme:
iii) dacă precizia  este dată atunci este necesar să se cunoască cum se
opresc iteraţiile astfel încât această condiţie să fie îndeplinită.
iv) deoarece se cere obţinerea rapidă a rezultatului aproximativ, este
necesar să fie estimată maniera în care evoluează eroarea en = xn −  în cursul
iteraţiilor.
Metoda aproximaţiilor succesive conduce la următorul algoritm.
Algoritmul 2.2.1.1.
Intrări: g = funcţia din relaţia xn +1 = g ( xn )

- 15 -
 = precizia
x = aproximaţia iniţială
nr_max = numărul maxim de iteraţii admis
Ieşiri: x = soluţia aproximativă îndeplinind  sau nr_max
{
k 0
x0  x
x  g (x)
cât timp | x − x0 |   şi k  nr_max
{
k  k +1
x0  x
x  g (x)
}
}.

Pentru a detecta timpuriu procesele divergente şi a nu parcurge în mod


inutil numărul maxim de iteraţii nr_max, imediat după ce este calculată noua
valoare a funcţiei g (care cu semn schimbat înseamnă corecţia rădăcinii) este
comparată cu corecţia din pasul anterior (păstrată). Dacă corecţia creşte în
valoare absolută procesul este divergent.
Dăm câteva metode clasice a metodei aproximaţiilor succesive.

2.2.2. Metoda Lagrange


Metoda Lagrange se mai numeşte şi metoda de părţi proporţionale şi
constă în înlocuirea graficului funcţiei f restrâns la un interval [a,b] prin dreapta
determinată de punctele A(a, f (a)) şi B(b, f (b)) . Dreapta are ecuaţia:
y − f (a) f (b) − f (a)
= .
x−a b−a
Dacă x1 este intersecţia dreptei AB cu axa absciselor atunci:
b−a
x1 = a − f (a) .
f (b) − f (a)
Presupunând că f ( x1 ) f (a)  0 atunci   [a, x1 ] şi repetând procedeul de
mai sus, înlocuind b cu x1 obţinem:
x1 − a
x2 = a − f (a) .
f ( x1 ) − f (a)
În general avem xn +1 = g ( xn ) unde funcţia g este definită prin
x−a
g ( x) = a − f (a ) ,
f ( x) − f (a)
- 16 -
sau
af ( x) − xf (a)
g ( x) = .
f ( x) − f (a)

2.2.3. Metoda Newton


Metoda Newton se mai numeşte şi metoda tangentei şi constă în
înlocuirea graficului funcţiei f restrâns la un interval [a,b] prin tangenta într-un
punct al graficului.
Tangenta la curbă în punctul B(b, f (b)) are ecuaţia:
y − f (b) = f ' (b)( x − b) .
Dacă x1 este intersecţia acestei tangente cu axa absciselor atunci:
f (b)
x1 = b − .
f ' (b)
Se reîncepe procedeul precedent cu tangenta în punctul ( x1, f ( x1 )) , în
general se obţine:
xn +1 = g ( xn )
f ( x)
unde g ( x) = x − .
f ' ( x)
Remarca 2.2.3.1. Metoda lui Newton este bine definită dacă
f ' (b)  0 . Este suficient ca  să fie un zero simplu al lui f, căci, dacă f ' este
continuă şi x n „suficient de aproape” de  vom avea f ' ( xn )  0 .
Metoda Newton conduce la următorul algoritm.
Algoritmul 2.2.3.1.
Intrări: f = funcţia din metodă
fd = derivata funcţiei f
 = precizia
nr_max = numărul maxim de iteraţii admis
x = aproximaţia iniţială
Ieşiri: x = soluţia aproximativă îndeplinind  sau nr_max

{
k 0
x0  x
x  x0 − f ( x0 ) / fd( x0 )
cât timp | x − x0 |   şi k  nr_max
{
k  k +1
x0  x

- 17 -
x  x0 − f ( x0 ) / fd( x0 )
}
}.
Dacă pe parcursul procesului iterativ se anulează derivata funcţiei atunci
se execută o iteraţie de „salvare” în care corecţia rădăcinii se calculează fără a o
împărţi la derivata funcţiei. Această abordare are avantajul că rezolvă şi
zerourilor de ordin superior, în care funcţia şi prima ei derivată au zerouri
comune.

2.2.4. O teoremă de punct fix


În exemplele precedente, avem următoarea situaţie:
x0 dat
xn +1 = g ( xn ) .
Problema care se pune este de a alege o metodă, deci funcţia g astfel încât
şirul ( x n ) să fie convergent la  .
Este necesar ca soluţia ecuaţiei x = g (x) în intervalul [a,b] să fie aceeaşi
cu soluţia ecuaţiei f ( x) = 0 în intervalul [a,b].
Are loc următorul rezultat:
Teorema 2.2.4.1. Dacă în intervalul [a,b] funcţia g verifică
următoarele condiţii:
a) pentru orice x  [a, b] are loc g ( x)  [a, b] ;
b) g este o aplicaţie strict contractantă, adică există un număr real L:
0  L  1 astfel încât pentru x  [a, b] , y  [a, b] avem:
| g ( x) − g ( y) |  L | x − y |
atunci, oricare ar fi x0  [a, b] şirul definit prin
xn +1 = g ( xn )
converge spre unica soluţie  a ecuaţiei x = g (x) cu   [a, b] .
Demonstraţie.
Dacă  1 şi  2 sunt două soluţii distincte ale ecuaţiei x = g (x) urmează

| 1 −  2 | = | g (1 ) − g ( 2 ) |  L | 1 −  2 | cu L  1.
Deci | 1 −  2 | (1 − L)  0 . Deoarece L  1 obţinem  1 =  2 .
Avem
| xn +1 − xn | = | g ( xn ) − g ( xn −1 ) |  L | xn − xn −1 | .
Deci | x n +1 − x n |  Ln | x1 − x0 | sau
| xn + p − xn | = | ( xn + p − xn + p −1 ) + ( xn + p −1 − xn + p − 2 ) + ... + ( xn +1 − xn ) |

 | xn + p − xn + p −1 | + | xn + p −1 − xn + p − 2 | + ...+ | xn +1 − xn| .

- 18 -
Deci
| xn + p − xn |  |x1 − x0 | ( Ln + p −1 + Ln + p − 2 + ... + Ln )

1 − Lp Ln
 Ln |x1 − x0 |  |x1 − x0 | .
1− L 1− L
Deoarece lim Ln = 0 urmează că lim | x n + p − x n |= 0 pentru p  N .
n → n→
Deoarece şirul ( x n ) verifică criteriul lui Cauchy urmează că el este
convergent spre limita sa  şi cum g este funcţie continuă, deoarece este strict
contractantă, această limită verifică  = g () .
Dacă xn  [a, b] atunci g ( x n )  [a, b] . Deoarece elementele şirului ( x n )
aparţin intervalului [a,b] (deoarece x0  [a, b] ) şi ( x n ) converge, urmează că
limita sa  aparţine intervalului [a,b].
Se poate evalua eroarea făcând p să tindă spre  :
Ln
|  − xn |  | x1 − x0 |
.
1− L
Se constată că pentru n fixat, eroarea este cu atât mai mică cu cât L se
apropie de zero, în timp ce, dacă L este apropiat de 1 eroarea se diminuează.
Dacă g este o funcţie derivabilă atunci o condiţie suficientă astfel încât g
să fie strict contractantă este următoarea.
Propoziţia 2.2.4.1. Fie g o funcţie derivabilă în [a,b]. Dacă g '
verifică max | g ' ( x) | = L  1 atunci g este o aplicaţie strict contractantă în
x[ a , b ]
intervalul [a,b].
Utilizând formula creşterilor finite:
g ( x) − g ( y) = g ' ()( x − y) cu   (a, b) ,
| g ( x) − g ( y ) | =| g ' () || x − y |  ( max | g ' ( x) |) | x − y | = L | x − y |
x[ a, b]
unde 0  L  1 .
Condiţia a) din teorema precedentă trebuie să fie îndeplinită.
1 1
Într-adevăr. Pentru funcţia g ( x) = x + , unde x  1 , g ' ( x) = 1 − ,
x x2
| g ' ( x) |  c  1, dar ecuaţia x = g (x) nu are punct fix în intervalul considerat,
1
deoarece x = g ( x)  = 0 .
x
Intervalul [a,b] în care ipotezele teoremei de punct fix sunt verificate este,
în general greu de determinat.
Dacă se poate calcula (estima) g ' () atunci are loc următorul rezultat.

- 19 -
Propoziţia 2.2.4.2. Fie  o soluţie a ecuaţiei x = g (x) cu g ' funcţie
continuă. Dacă | g ' () |  0 atunci există un interval [a,b] conţinând  pentru
care şirul definit prin x0  [a, b] şi xn +1 = g ( xn ) converge la  .
Demonstraţie.
Fie 0  g ' ()  1 . Atunci, din continuitatea lui g ' , există un interval
[ p, q] conţinând  pentru care
max | g ' ( x) |  1 şi g ' ( x)  0 .
x[ p, q ]
Funcţia g restrictivă la intervalul [p, q] este strict crescătoare şi verifică
max | g ' ( x) |  1 .
x[ p, q ]
Arătăm că dacă x  [ p, q] atunci g ( x)  [ p, q] . Deoarece
g ( x)  [ g ( p), g (q)] , este suficient să arătăm că [ g ( p), g (q)]  [ p, q] .
Deoarece  − g ( p) = g () − g ( p) = g ' ()( − p)  0 urmează că
 − g ( p)   − p , adică g ( p)  p .
Similar, deoarece g (q) −  = g (q) − g () = g ' ()(q − )  0 urmează că
g (q)  q .
Deci p  g ( p)  g (q)  q .
Luând [a, b] = [ p, q] , avem verificate ipotezele teoremei de punct fix.
Fie − 1  g ' ()  0 . Atunci există un interval [ p, q] astfel încât
max | g ' ( x) |  1 şi g ' ( x)  0 .
x[ p, q ]
Se arată şi în acest caz că sunt verificate ipotezele teoremei de punct fix.
Şirul ( x n ) converge la  din [a, b] .
Dăm fără demonstraţie următorul rezultat.
Propoziţia 2.2.4.3. Fie  o soluţie a ecuaţiei x = g (x) . Dacă g ' este
continuă într-o vecinătate a lui  şi | g ' () |  1, x0   , şirul definit de x0 şi
xn +1 = g ( xn ) nu converge spre  .
Dacă | g ' () | = 1 atunci şirul ( x n ) poate converge sau diverge.
Exemplu. Să se găsească condiţia | g ' () |  1 care asigură existenţa unui
interval [a,b], conţinând  , în care ipotezele teoremei de punct fix sunt
verificate pentru:
1) metoda aproximaţiilor succesive;
2) metoda lui Lagrange;
3) metoda lui Newton.
Rezolvare.

- 20 -
1) Fie funcţia g definită prin g ( x) = x − g ( x) . Dacă f este derivabilă atunci
g ' ( x) = 1 − f ' ( x) . Condiţia | g ' () |  1 devine | 1 − f ' () |  1, adică
0  f ()  2 .
2) Fie x0 = b , xn +1 = g ( xn ) şi funcţia g definită prin
af ( x) − xf (a)
g ( x) = .
f ( x) − f (a )
Dacă f este derivabilă avem
(af ' ( x) − f (a))( f ( x) − f (a)) − f ' ( x)(af ( x) − xf (a))
g ' ( x) = ,
( f ( x) − f (a)) 2
de unde
f ( a ) + ( − a ) f ' ( )
g ' ( ) = ,
f (a)
deoarece f () = 0 .
Dar
( a − ) 2
f ( a ) = f ( ) + ( a −  ) f ' ( ) + f " (c) cu c  (a, ) ,
2
de unde
( a −  ) 2 f " (c )
g ' ( ) = .
2 f (a)
( a −  ) 2 f " (c )
Deci | g ' () |  1 devine  1.
2 f (a)
3) Fie x0 = b , xn +1 = g ( xn ) şi funcţia g definită prin
f ( x)
g ( x) = x − .
f ' ( x)
f ( x) f " ( x)
Dacă există f " atunci g ' ( x) = .
( f ' ( x)) 2
Deci g ' () = 0 .
Deci există totdeauna un interval în care ipotezele teoremei de punct fix
sunt verificate, în cazul metodei tangentei.
Este mai uşoară aplicarea metodei Newton apelând la rezultatul următor.
Teorema 2.2.4.2. Dacă f  C 2 [a, b] verifică
(1) f (a) f (b)  0
(2) x  [a, b] , f ' ( x)  0
(3) x  [a, b] , f " ( x)  0

- 21 -
atunci alegând x0  [a, b] astfel încât f ( x0 ) f " ( x0 )  0 , şirul ( x n ) definit prin
x0 şi xn +1 = g ( xn ) converge spre unica soluţie  a ecuaţiei f ( x) = 0 în
intervalul [a, b] .
Demonstraţie.
Condiţiile (1), (2) şi (3) asigură existenţa şi unicitatea unei rădăcini
simple  în [a,b] a ecuaţiei f ( x) = 0 .
Deoarece
f ( xn )
x n +1 = x n −
f ' ( xn )
urmează că
f ( xn )
xn +1 −  = xn −  −
f ' ( xn )

f () − f ( x n )
= xn −  +
f ' ( xn )
( − x n ) 2
( − x n ) f ' ( x n ) + f " ( n )
= xn −  + 2
f ' ( xn )
cu  n cuprins între  şi x n .
Deci
 x − 
 f ' ( xn ) − n f " ( n ) 
x n +1 −  = ( x n − )1 − 2 ,
 f ' ( xn ) 
 
 
adică
( x n −  ) 2 f " ( n )
xn +1 −  = .
2 f ' ( xn )
Dacă f " ( x) şi f ' ( x) sunt de acelaşi semn pe [a,b] atunci pentru n  0 ,
xn +1 −   0 , şirul este minorat de  plecând de la rangul 1.
Dacă f " ( x) şi f ' ( x) sunt de semne contrare pe [a,b] atunci pentru n  0 ,
xn +1 −   0 , şirul este majorat de  plecând de la rangul 1.
1) Fie f " ( x)  0 pentru x  [a, b] . Din ipoteză urmează că f ( x0 )  0 .
a) Fie f ' ( x)  0 . Atunci şirul este minorat de  plecând de la
rangul 1.
f ( x0 )
Cum x1 = x0 −  x0 urmează că x n   ,
f ' ( x0 )
n  N .
- 22 -
Deoarece f (x) nu se anulează decât pentru  , oricare din
termenii şirului sunt mai mari decât  urmează că f ( x n ) este de
acelaşi semn cu f ( x0 ) , deci pozitiv.
Deci
f ( xn )
xn +1 = xn −  xn .
f ' ( xn )
Şirul este descrescător, minorat, deci convergent la  .
b) Fie f ' ( x)  0 . Atunci şirul este majorat de  plecând de la
rangul 1.
f ( x0 )
Cum x1 = x0 −  x0 urmează că x n   ,
f ' ( x0 )
n  N .
Deoarece f (x) nu se anulează decât pentru  şi oricare din
termenii şirului sunt mai mici decât  urmează că f ( x n ) este de
acelaşi semn cu f ( x0 ) , deci pozitiv.
Deci
f ( xn )
xn +1 = xn −  xn .
f ' ( xn )
Şirul este crescător, majorat, deci convergent la  .
2) Fie f " ( x)  0 pentru x  [a, b] . Demonstraţia este similară cu cea
de la punctul 1).

2.2.5. Ordinul metodei


În afară de convergenţă, trebuie să ştim cât de „rapidă” este convergenţa
şirului definit prin xn +1 = g ( xn ) , adică cum se diminuează eroarea en = xn − 
în următoarea iteraţie.
Aceasta ne conduce la următoarea definiţie a ordinului metodei.
Definiţia 2.2.5.1. Metoda definită prin xn +1 = g ( xn ) este de ordin
|e |
p, dacă n +1 are limită în mulţimea numerelor reale strict pozitive când n
p
| en |
tinde spre +  .
Explicaţia acestei definiţii.
( x − ) 2
e n +1 = x n +1 −  = g ( x n ) − g (  ) = ( x n −  ) g ' (  ) + n g" () + ... +
2!
( x n − ) p ( p )
+ g (  ) + ( x n −  ) p ( x n −  )
p!
sau
- 23 -
en2 enp ( p )
en +1 = en g ' () + g" () + ... + g () + enp (en ) .
2! p!
Metoda este, deci, de ordinul p, dacă şi numai dacă:
g ' () = g " () = ... = g ( p −1) () = 0 şi g ( p ) ()  0 .
• Metoda aproximaţiilor succesive este de ordinul 1 (adică convergenţa
este liniară)
Într-adevăr. Se cunoaşte, din exemplul 1, că 0  f ' ()  2 .
• Dacă f " (c)  0 atunci metoda Lagrange este de ordinul 1.
Rezultă imediat din exemplul 2.
• Metoda lui Newton este de ordinul cel puţin 2.
Teorema 2.2.5.1.
Dacă  este un zero simplu atunci metoda Newton este de ordinul cel
puţin doi.
Verificare.
Avem g ' () = 0 .
Deoarece
( f ' ( x) f " ( x) + f ( x) f ' ' ' ( x))( f ' ( x)) 2 − 2 f ' ( x) f " ( x) f ( x) f " ( x)
g" ( x) =
( f ' ( x)) 4
f " ( )
urmează că g " () = .
f ' ( )
Dacă  este un zero simplu al lui f atunci f ' ()  0 .
Dacă f " ()  0 atunci g" ()  0 altfel ordinul metodei este mai mare
decât 2.
Pentru metodele de ordinul doi se mai spune încă: convergenţă este
pătratică.
Ordinul depinde atât de metoda aleasă cât şi de natura zeroului.
Propoziţia 2.2.5.1. Dacă  este un zero al lui f de multiplicitate m,
f ( x)
metoda iterativă definită prin xn +1 = g ( xn ) cu g ( x) = x − m este de
f ' ( x)
ordinul cel puţin doi.

Verificare.
În loc să considerăm ecuaţia f ( x) = 0 care admite  ca soluţie de
multiplicitate m, se poate lua | f ( x) |1 / m = 0 care admite  ca soluţie simplă.
Metoda Newton este atunci definită prin:
f 1 / m ( x)
xn +1 = g ( xn ) cu g ( x) = x − ,
( f 1 / m ( x))'

- 24 -
adică
f 1 / m ( x) f ( x)
g ( x) = x − = x−m .
1 f ' ( x)
1 m −1
f ( x) f ' ( x)
m

2.2.6. Accelerarea convergenţei


2.2.6.1. Metoda Aitken
Remarca 2.2.6.1.1. În metoda aproximaţiilor succesive şi metoda
Lagrange eroarea este de forma
en +1 = ( A +  n )en ,

unde:
A = g ' () , 0  | A |  1 şi lim  n = 0 .
n→
Verificare.
În metoda aproximaţiilor succesive:
g ( x) = x − f ( x) , x n +1= xn − f ( xn ) , en +1 = en − f ( xn ) ,
 f ( xn ) 
g ' ( x) = 1 − f ' ( x) , en +1 = en  g ' ( xn ) + f ' ( xn ) −  .
 e n 
 f ( xn )  f ( x n ) − f ( )
lim  n = lim  f ' ( xn ) −  = lim f ' ( xn ) − lim ,
n → n →  en  n →  n → en
lim  n = lim f ' ( x n ) − f ' () = 0 .
n → n→
A = g ' () = 1 − f ' () .
Din exemplul 1 urmează că 0  | A |  1 .
În metoda Lagrange:
af ( x) − xf (a)
g ( x) = .
f ( x) − f (a)
( a −  ) 2 f " (c )
Din exemplul 2 urmează că 0  | A |  1 , unde A = g ' () =
2 f (a)
cu c  (a, ) .
af ( xn ) − xn f (a) ( a − ) f ( x n ) − en f ( a )
xn +1 = , en +1 = ,
f ( xn ) − f (a) f ( xn ) − f (a)
en +1 = ( g ' () +  n )en .
( a − ) f ( x ) − ( x − ) f ( a )
Fie H ( x) = .
( x − )( f ( x) − f (a))

- 25 -
( a − ) f ' ( x ) − f ( a ) ( a −  ) f ' ( ) − f ( a )
lim H ( x) = lim = .
x → x →  f ( x) − f (a) + f ' ( x)( x − ) − f (a)
f ( a ) + ( − a ) f ' ( )
lim  n = lim H ( xn ) − = 0.
n → x → f (a)
Dacă presupunem  n = 0 atunci
xn +1 −  = A( xn − )

xn + 2 −  = A( xn +1 − ).
Deci
xn + 2 − xn +1 = A( xn +1 − xn ) ,
adică
x − x n +1
A = n+2 .
xn +1 − xn
Deci
1
=( xn +1 − Ax n ),
1− A
1
 = xn + ( xn +1 − xn ),
1− A
( xn +1 − xn ) 2
 = xn − .
xn + 2 − 2 xn +1 + xn
Adică, dacă  n = 0 atunci soluţia se obţine numai după două iteraţii
succesive.
Fie  n  0 . Este de aşteptat ca şirul ( x' n ) definit prin:
( xn +1 − xn ) 2
x' n = x n −
xn + 2 − 2 xn +1 + xn
să aproximeze mai bine rădăcina  decât x n .
Teorema 2.2.6.1.1. Dacă ( x n ) este un şir care converge la  având
ordinul de convergenţă unu atunci şirul ( x' n ) definit prin
( xn +1 − xn ) 2 x ' −
x' n = x n − converge mai repede, adică lim n = 0.
xn + 2 − 2 xn +1 + xn n →  xn − 
Demonstraţie.
Deoarece ( x n ) are ordinul de convergenţă unu avem en +1 = ( A +  n )en
cu 0  | A |  1 şi lim  n = 0 . Deci
n→
en + 2 = ( A +  n +1 )( A +  n )en

- 26 -
x n + 2 − 2 x n +1 + x n = ( x n + 2 − ) − 2( x n +1 − ) + ( x n − )
= en + 2 − 2en +1 + en
= (( A +  n +1 )( A +  n ) − 2( A +  n ) + 1)en
= (( A − 1) 2 +  n )en
cu
 n = ( n +1 +  n ) A − 2 n +  n +1 n .
Deci lim  n = 0 .
n→
La fel, xn +1 − xn = en +1 − en = ( A − 1 +  n )en .
Deci
( x n +1 − x n ) 2 ( A − 1 +  n ) 2 en2
x ' n − = x n −  − = en −
x n + 2 − 2 x n +1 + x n (( A − 1) 2 +  n )en
e (( A − 1) 2 +  n ) − ( A − 1 +  n ) 2 en  − 2 n ( A − 1) −  2n
= n = en n .
( A − 1) 2 +  n ( A − 1) 2 +  n
x ' −
Deci lim n = 0.
n →  xn − 

( xn +1 − xn ) 2
Metoda definită de x' n = xn − se numeşte metoda lui
xn + 2 − 2 xn +1 + xn
Aitken.

2.2.6.2. Metoda Steffensen


Dacă se aplică procedeul de accelerare a convergenţei al lui Aitken
şirului definit prin xn +1 = g ( xn ) avem că x' n este o aproximare mai bună a lui
 decât x n . Este, deci, natural să continuăm înlocuind x n cu x' n , apoi de a
calcula g ( x' n ) şi g ( g ( x' n )) pentru a aplica accelerarea lui Aitken.
Aceasta revine la a calcula succesiv:
y n = x' n
y n +1= g ( y n )
y n + 2 = g ( y n +1 )
deci
( y n +1 − y n ) 2
x ' n +1 = y n − .
y n + 2 − 2 y n +1 + y n
Se poate defini x' n +1 în funcţie de x' n plecând de la g:
( g ( x' n ) − x' n ) 2
x' n +1 = x' n −
g ( g ( x' n )) − 2 g ( x' n ) + x' n
ceea ce se poate scrie:

- 27 -
x' n g ( g ( x' n )) − ( g ( x' n )) 2
x ' n +1 = .
g ( g ( x' n )) − 2 g ( x' n ) + x' n
Aceasta este metoda Steffensen, care se poate defini formal prin funcţia G
care dă procesul iterativ:
xg ( g ( x)) − ( g ( x)) 2
G ( x) = .
g ( g ( x)) − 2 g ( x) + x
Are loc următorul rezultat:
Teorema 2.2.6.2.1.
Fie  o rădăcină simplă a ecuaţiei x = g (x) .
Dacă metoda generată de g este de ordinul unu atunci metoda Steffensen
este de ordinul cel puţin doi.
Dacă metoda generată de g este de ordinul p  1 atunci metoda
Steffensen este de ordinul 2 p − 1 .
Demonstraţie.
Pentru g  C p +1 , în vecinătatea lui  , avem
e2 e p ( p)
g ( + e) =  + eg ' () + g" () + ... + g (  ) + O ( e p +1 ) .
2! p!
g ( k ) ( )
Notând cu x k = avem
k!
g ( + e) =  + x1  e + x2  e 2 + ... + x p e p + O(e p +1 ) .
Dacă ordinul metodei este 1, adică x1  0 , deoarece
g ( g ( + e)) =  + x1  (ex1 + x 2 e 2 ) + x 2 (ex1 ) 2 + O(e 3 )
atunci
G ( + e) −  = O(e 2 ) dacă x1  1.
Deci metoda Steffensen este de ordinul cel puţin 2.
Dacă ordinul metodei este p  1 , adică x1 = x 2 = ... = x p −1 = 0 atunci
g (  + e ) =  + x p e p + O ( e p +1 ) ,

g ( g ( + e)) =  + x pp +1e p + O(e p +1 ) ,


2 2

G ( + e) −  = − x 2p e 2 p −1 + O(e 2 p ) ,
adică metoda Steffensen este de ordinul 2 p − 1 .
Metoda Steffensen furnizează următorul algoritm.
Algoritmul 2.2.6.2.1.
Intrări: g = funcţia din metoda neaccelerată
 = precizia
- 28 -
nr_max = numărul maxim de iteraţii admis
x = aproximaţia iniţială
Ieşiri: x = soluţia aproximativă îndeplinind  sau nr_max
{
k 0
x0  x
x1  g ( x0 )
x2  g ( x1 )
x  x0 ( x1 − x0 ) 2 /( x 2 − 2 x1 + x0 )
cât timp | x − x0 |   şi k  nr_max
{
k  k +1
x0  x
x1  g ( x0 )
x2  g ( x1 )
x  x0 ( x1 − x0 ) 2 /( x 2 − 2 x1 + x0 )
}
}.

2.2.7. Metoda poziţiei false


Metoda Newton prezintă inconvenientul de a calcula derivata lui f. Se
poate ca această derivată f ' să fie dificil de calculat. Atunci, se înlocuieşte
derivata f ' ( xn ) printr-o aproximaţie în funcţie de valori ale lui f.
De exemplu
f ( xn ) − f ( xn −1 )
f ' ( xn )  .
xn − xn −1
Aceasta este metoda falsei poziţii (corzii).
Atunci avem
f ( xn )( xn − xn −1 )
xn +1 = xn − ,
f ( xn ) − f ( xn −1 )
x f ( xn ) − xn f ( xn −1 )
xn +1 = n −1 .
f ( xn ) − f ( xn −1 )
Se remarcă că xn +1 se obţine în funcţie de xn −1 şi x n şi nu numai în
funcţie de x n , ca în cazul metodelor precedente.

- 29 -
Dacă se compară cu metoda Lagrange definită prin:
af ( xn ) − xn f (a)
xn +1 =
f ( xn ) − f (a)
se remarcă că metoda poziţiei false se obţine din metoda Lagrange înlocuind a
cu xn −1 .
Se poate, deci, prevedea că ordinul metodei poziţiei false va fi mai bun
decât al metodei Lagrange, dar mai puţin bun decât al metodei Newton.
Are loc
Teorema 2.2.7.1.
Ordinul metodei poziţiei false este
1+ 5
p= ,
2
dacă f ' ()  0 şi f " ()  0 .
Demonstraţie.
Avem:
x f ( xn ) − xn f ( xn −1 ) − f ( xn ) + f ( xn −1 )
xn +1 −  = n −1 ,
f ( xn ) − f ( xn −1 )
e f ( xn ) − en f ( xn −1 )
en +1 = n −1 .
f ( xn ) − f ( xn −1 )
Dacă f ' ()  0 şi f " ()  0 atunci
( x n − ) 2
f ( x n ) = ( x n −  ) f ' ( ) + f " ( ) + ( x n −  ) 2 ( x n −  ) .
2!
Atunci:
e2 e2
en −1 (en f ' () + n f " () + en2 (en )) − en (en −1 f ' () + n −1 f " () + en2−1(en −1 ))
e n +1 = 2 2
2 2
e −e
(en − en −1 ) f ' () + n n −1 f " () + en2 (en ) − en2−1(en −1 ))
2
e e
(en − en−1 ) f " () n n−1
2 f " ( )
en+1  = en en−1 .
(en − en−1 ) f ' () 2 f ' ( )
Pentru n tinzând spre infinit urmează că en +1 ~ ken en −1 , unde
f " ()
k= .
2 f ' ( )
Ordinul metodei falsei poziţii este p, dacă avem
|e |
lim n +1 = c cu c  0 .
n →  | en | p

- 30 -
Deci:
| en +1 |~ c | en | p şi | en |~ c | en −1 | p ,
de unde
| en +1 |~ c p +1 | en −1 | p .
2

Înlocuind în | en +1 |~ k | en || en −1 | , obţinem:
c p p 2 − p −1
e ~ 1,
k n −1
oricare ar fi k şi en −1 , deci p trebuie să verifice
p2 − p −1 = 0 ,
adică
1+ 5
p= .
2

2.2.8. Principiul dihotomiei


Dacă este relativ uşor de a verifica condiţiile în  pentru a asigura
convergenţa şirului de iteraţii, este în general greu de a alege x0 - iteraţia
iniţială. Procedeul dihotomiei permite să se determine valoarea x0 în
vecinătatea lui  .
Fie  o rădăcină a ecuaţiei f ( x) = 0 cu f continuă.
Dacă există un interval închis [a,b] astfel încât f (a) f (b) să fie negativ,
există cel puţin o rădăcină în intervalul [a,b]. Dacă în plus f este strict monotonă
în acest interval atunci această rădăcină este unică.
a+b
Se poate atunci considera punctul , mijlocul intervalului [a,b] şi
2
a+b a+b
calcula f   şi localiza  în noul interval având pentru extremităţi
 2  2
a+b
şi punctul a sau b după cum f (a) sau f (b) este de semn contrar lui f  .
 2 
La fiecare iteraţie se înjumătăţeşte lungimea intervalului. La începutul iteraţiei
b−a
n, lungimea intervalului era .
2n
Această metodă furnizează următorul algoritm.
Algoritmul 2.2.8.1.
Intrări: a, b = capetele intervalului
f = funcţia
 = precizia
Ieşiri: x = rădăcina localizată
- 31 -
{
x  (a + b) / 2
cât timp
| f ( x) |   şi b − a  
{
dacă
f ( a ) f ( x)  0
atunci
bx
altfel
ax
x  (a + b) / 2
}
}.

2.3. Rezolvarea numerică a sistemelor neliniare


Pentru mai multă claritate, ne limităm la sisteme de două ecuaţii cu două
necunoscute. Se constată că teoria este identică cu cea a ecuaţiilor înlocuind
x  R cu X  R 2 şi valoarea absolută în R cu norma în R 2 .
Fie f1 şi f 2 două aplicaţii în D  R 2 → R .
Se caută  = (1,  2 ) astfel încât
f1 ( 1 ,  2 ) = 0
f 2 ( 1 ,  2 ) = 0.
Domeniul D se va alege astfel încât să existe în D o soluţie  şi numai
una a sistemului.

2.3.1. Metoda aproximaţiilor succesive


f ( x, y ) = 0
Fie sistemul  1 echivalent cu sistemul:
 f 2 ( x, y ) = 0
 x = x − f1 ( x, y )
 y = y − f ( x, y ).
 2
Aceasta ne conduce, luând ( x0 , y 0 )  D :
 x1 = x0 − f1 ( x0 , y0 )
 y = y − f ( x , y ).
 1 0 2 0 0
Iterând, obţinem
 xn +1 = xn − f1 ( xn , y n ) = g1 ( xn , y n )
y
 n +1 = y n − f 2 ( xn , y n ) = g 2 ( xn , y n ).
Punând X = ( x, y) ,
F ( X ) = ( f1 ( X ), f 2 ( X ))
- 32 -
G( X ) = ( g1 ( X ), g 2 ( X )) ,
atunci iteraţia se scrie:
X n +1 = X n − F ( X n ) = G( X n ) .
Drept normă luăm: X = x 2 + y 2 .
Dăm fără demonstraţie următorul rezultat:
Teorema 2.3.1.1. Fie mulţimea închidă D  R 2 . Dacă
1) X  D  G( X )  D ;
2) există o constantă L: 0  L  1 astfel încât:
X , Y  D , G ( X ) − G (Y )  L X − Y
atunci şirul definit prin X 0  D , X n +1 = G( X n ) este convergent şi limita sa
aparţine lui D.
O condiţie suficientă pentru ca G să fie o aplicaţie contractantă este dată
de următoarea teoremă.
Teorema 2.3.1.2. Dacă g1 şi g 2 sunt funcţii cu derivate parţiale
continui în D, atunci,
X1 , X 2  D , G ( X 1 ) − G ( X 2 )  L X 1 − X 2

unde L = max g '12x + g '12y + g ' 22 x + g ' 22 y .


X D
Demonstraţie.
Inegalitatea G( X 1 ) − G( X 2 )  L X 1 − X 2 este echivalentă cu
2 2
G( X 1 ) − G( X 2 )  L2 X 1 − X 2 , adică
( g1 ( x1 , y1 ) − g1 ( x2 , y 2 )) 2 + ( g 2 ( x1 , y1 ) − g 2 ( x2 , y 2 )) 2  L2 (( x1 − x2 ) 2 + ( y1 − y 2 ) 2 ) .
Utilizând formula creşterilor finite avem:
g1( x1, y1) − g1( x2 , y2 ) = ( x1 − x2 ) g '1x ( x , y ) + ( y1 − y2 ) g '1 y ( x , y ) ,
unde x  ( x1, x2 ) şi y  ( y1, y2 ) .
Deci:
( g1 ( x1 , y1 ) − g1 ( x 2 , y 2 )) 2 = (ac + bd ) 2
unde a = g '1x ( x , y ), b = g '1 y ( x , y ), c = ( x1 − x 2 ), d = ( y1 − y 2 ) .
(ac + bd ) 2 = g '12x ( x , y )( x1 − x 2 ) 2 + g '12y ( x , y )( y1 − y 2 ) 2 +
+ 2 g '1x ( x , y )( x1 − x 2 ) g '1 y ( x , y )( y1 − y 2 ).
(ac + bd ) 2  (a 2 + b 2 )(c 2 + d 2 ) .
Deci

- 33 -
( g1 ( x1 , y1 ) − g1 ( x2 , y 2 )) 2  ( g '12x ( x , y ) + g '12y ( x , y ))(( x1 − x 2 ) 2 + ( y1 − y 2 ) 2 ),
( g 2 ( x1 , y1 ) − g 2 ( x2 , y 2 )) 2  ( g ' 22 x ( x , y ) + g ' 22 y ( x , y ))(( x1 − x 2 ) 2 + ( y1 − y 2 ) 2 ).
Deci:
( g1 ( x1 , y1 ) − g1 ( x 2 , y 2 )) 2 + ( g 2 ( x1 , y1 ) − g 2 ( x 2 , y 2 )) 2  max ( g '12x + g '12y + g ' 22 x + g ' 22 y ) 
X D
 (( x1 − x 2 ) 2 + ( y1 − y 2 ) 2 ).
Metoda aproximaţiilor succesive conduce la următorul algoritm.
Algoritmul 2.3.1.1.
Intrări: n = număr de necunoscute
g = procedura de evaluare G(X )
 = precizia
nr_max = numărul maxim de iteraţii admis
X = aproximaţia iniţială
Ieşiri: X = soluţia aproximativă îndeplinind  şi nr_max
{
k 0
X0  X
execută g (n, X 0)
cât timp X − X 0   şi k  nr_max
{
k  k +1
X0  X
execută g (n, X 0)
}
}.

2.3.2. Metoda Newton


Metoda Newton în cazul unei ecuaţii f ( x) = 0 poate fi interpretată
astfel: plecând de la o valoare x n aproximând soluţia  , se caută o creştere 
astfel ca f ( xn + ) = 0 .
De fapt, utilizând formula Taylor şi neglijând termenii de ordinul 2,
obţinem:
f ( xn ) + f ' ( xn ) = 0 ,
f ( xn ) f ( xn )
de unde  = − şi deci xn +1 = xn − .
f ' ( xn ) f ' ( xn )
Pentru sisteme se procedează la fel. Se dezvoltă fiecare din cele două
funcţii în serie Taylor şi se neglijează termenii de ordinul  2 .

- 34 -
Plecând de la ( x n , y n ) , căutăm 1 , 2 astfel ca:
 f1 ( xn + 1 , y n +  2 ) = 0
 f ( x +  , y +  ) = 0.
 2 n 1 n 2
Dezvoltăm în serie Taylor şi neglijăm termenii de ordinul 2:
 f1 ( xn , y n ) + 1 f '1x ( xn , y n ) +  2 f '1 y ( xn , y n ) = 0
 f ( x , y ) +  f ' ( x , y ) +  f ' ( x , y ) = 0.
 2 n n 1 2x n n 2 2y n n
Deci, (1 ,  2 ) trebuie să verifice următorul sistem:
1 f '1x ( xn , y n ) +  2 f '1 y ( xn , y n ) = − f1 ( xn , y n )
 f ' ( x , y ) +  f ' ( x , y ) = − f ( x , y ).
 1 2x n n 2 2y n n 2 n n
 f '1x ( xn , y n ) f '1 y ( xn , y n ) 
Fie J ( xn , y n ) J ( xn , y n ) = 
matricea  .
 f ' 2 x ( xn , y n ) f ' 2 y ( xn , y n ) 
Dacă determinantul lui J ( xn , yn ) (matricea lui Jacobi) este diferit de zero
  f 
atunci sistemul are o soluţie şi numai una  1  = − J −1 ( xn , y n ) 1  . Atunci
 2   f2 
metoda Newton devine:
( x0 , y 0 )
xn +1 = xn + 1
y n +1 = y n +  2 .
Şi în cazul sistemelor, metoda Newton este de ordin cel puţin 2. Pentru a
  f 
evita inversarea matricii jacobiene, avem J ( xn , y n ) 1  = − 1  .
 2   f2 
Un algoritm furnizat de metoda Newton este:
Intrări: n = numărul de necunoscute
f = procedura de evaluare a lui ( f1 ( X ), f 2 ( X ))
J = procedură de calcul a matricii jacobiene
 = precizia
nr_max = numărul maxim de iteraţii admis
X = aproximaţia iniţială
Ieşiri: X = soluţia aproximativă îndeplinind  şi nr_max
{
k 0
dX  0
repetă
k  k +1
X 0  X + dX
execută f (n, X 0, b)
b  −b

- 35 -
execută J (n, X 0, A)
execută Gauss (n, A, b) /* Eliminarea Gauss
execută Sist_Tr (n, A, b, dx) /*Rezolvarea sistemelor
triunghiulare
X  X0
până când dX   sau k > nr_max
}.

2.4. Exerciţii
1) Fie ecuaţia x 3 − x 2 − 1 = 0 . Precizaţi un interval [k , k + 1] , k  Z în
care se găseşte o singură rădăcină reală, apoi determinaţi cu o eroare  această
rădăcină folosind metodele:
a) metoda lui Newton;
b) metoda coardei.
2) Câţi paşi sunt necesari pentru determinarea rădăcinii reale a ecuaţiei
e x − x 2 − 2 = 0 , x  [1,2; 1,5] cu o aproximaţie de 10 −6 , prin metodele:
a) metoda lui Newton;
b) metoda coardei.
3) Să se rezolve sistemul neliniar
 x1 + 3 lg x1 − x12 = 0

2 x1 − x1 x2 − 5 x1 + 1 = 0
x 
folosind metoda lui Newton cu iteraţia iniţială X 0 =  0  =   .
3,4
 0   2,2 
y

Discuţii finale:
Să se programeze utilizând metoda Newton, Aitken, Steffensen, falsei poziţii.

Tema propusă:
Să se facă o lucrare cu tema metoda Newton, Aitken, Steffensen, falsei poziţii.

- 36 -
CAPITOLUL 3
Rezolvarea sistemelor algebrice liniare

Obiectivele invatarii
Însuşirea unor noţiuni referitoare la metoda de eliminare a lui Gauss,
factorizarea LU, factorizarea Cholesky, metoda iterativă Jacobi, metoda
iterativă Gauss-Seidel.

Cuvinte cheie: metode directe, metode iterative.

3.1. Introducere
Un sistem de ecuaţii algebrice liniare poate fi scris sub forma
n
 aij x j = bi , i = 1,..., m
j =1
unde aij  R sunt coeficienţi, x j sunt necunoscutele sistemului, iar bi sunt
termenii liberi.
Sunt posibile situaţiile:
(i) dacă m  n atunci trebuie aleşi n – m parametri pentru a obţine o
soluţie;
(ii) dacă m  n atunci se caută o soluţie care să minimizeze
2
m  n 
  bi −  aij x j  ;
i =1 j =1 
(iii) pentru m = n, dacă det A  0 atunci sistemul are o soluţie unică altfel
(adică, det A = 0 ) atunci sistemul poate avea o infinitate de soluţii sau poate să
nu aibă nici o soluţie.
Metodele de rezolvare sunt de două feluri: directe (sau exacte) în care
soluţia este obţinută după un număr de operaţii dinainte cunoscut şi metode
iterative, care utilizând o aproximaţie iniţială o îmbunătăţeşte de la o etapă la
alta.

3.2. Metode directe


Ca exemple de metode directe se pot aminti metoda lui Cramer bazată pe
calculul determinanţilor, metoda de eliminare a lui Gauss, metoda factorizării
directe. Deşi în esenţă foarte simplă, metoda lui Cramer se dovedeşte cu totul
ineficientă sub aspectul numărului de operaţii şi nu este în general
implementată.

- 37 -
3.2.1. Metoda de eliminare a lui Gauss
Fie un sistem de n ecuaţii liniare cu n necunoscute scris sub forma Ax = b ,
unde A este o matrice pătrată, nesingulară, de dimensiune n  n , iar x şi b sunt
vectori coloană de dimensiune n.
Metoda constă în a obţine zerouri sub diagonala principală a matricii A
succesiv, întâi pe prima coloană, apoi pe coloana a doua ş.a.m.d., pe ultima linie
a lui A rămânând doar coeficientul a nn - modificat de operaţiile de eliminare
anterioare. Un pas (etapă) k al metodei constă în obţinerea de zerouri sub
diagonala principală, în coloana k a matricei A. Etapa este simbolizată prin
indice superior atât pentru matricea A cât şi pentru vectorul b. Notăm, iniţial,
A (1) = A şi b (1) = b .
În urma pasului k − 1 al fazei eliminării, sistemul are forma echivalentă
 a (1) a (1)  a (1) a1(1k)+1  a1(1n)   b (1) 
 11 12 1k  1 
 0 a ( 2)  a ( 2) ( 2) ( 2)  x1   ( 2) 
a  a b
 22 2k 2 k +1 2n  x2
   2 
            
− −
 0 0  a kk ( k 1 ) ( k
a kk +1 1)
 a knk −1)  xk  =  bk( k −1) 
(
  x   
 0 0  a k( k+−11k) a k( k+−11k)+1  a k( k+−11n)  k +1   bk( k+−11) 
 
       x n    
 ( k −1) ( k −1) ( k −1)   ( k −1) 
 0 0  a nk a nk +1  a nn   bn 
La pasul k ( k = 1, 2, ..., n − 1) este eliminată necunoscuta x k din ultimele
n – k ecuaţii şi sistemul este adus la forma
 a (1) a (1)  a (1) a1k +1  a1n 
(1) (1)
 11 12 1k  b (1) 
( 2)  1  
  
x 1
 0 a ( 2)  a ( 2) ( 2)
 22 a 2k +1  a 2n  x 2  b ( 2) 
      
2k 2
      
 0 (k )  x  (k ) 
 k  =  bk
(k ) (k )
0  a kk a kk +  a kn 
 (k )
1 
( k )  x k +1   b (k ) 
 0 a k +1k +1  a k +1n 
   k +
0 0 0 1
   
     
  xn   (k ) 
 ( k )   b 
0 0 0 0 a
(k )
 a  n 
 nk +1 nn 
În final se obţine sistemul
A ( n) x = b ( n) ,
în care matricea A (n ) este superior triunghiulară.
Sistemul se rezolvă prin metoda substituţiei inverse potrivit relaţiilor

- 38 -
 b ( n)
xn = n
 ( n)
a nn

 x =  b (i ) −  n (i ) 
 (i )
 i  i
a ij j  / aii , i = n − 1, ..., 1 .
x
  j =i +1 
Sistemul Ax = b poate fi transformat într-un sistem superior triunghiular
echivalent (adică cu matricea sistemului triunghiulară superior) folosind
rezultatele următoarei teoreme:
Teorema 3.2.1.1. Dacă A ( k ) = (aij )1 i, j  k , A( k )  R k  k , cu

k = 1, 2, ..., n sunt nesingulare, atunci există T  R n  n , nesingulară şi inferior


triunghiulară astfel încât matricea T  A = U este superior triunghiulară.
Demonstraţie. Fie T = Tn −1  Tn − 2  ...  T2  T1 un produs de matrici
elementare de forma Tk = I n − t k ekT , în care I n este matricea unitate, e k este
coloana k a lui I n , iar t k = (0  0 t k +1k  t nk )T , în care ultimele
n − k elemente sunt neprecizate deocamdată.
Înmulţind la stânga matricea sistemului A cu matricea de transformare T
obţinem
T  A = Tn −1  Tn − 2  ...  T2  T1  A ,
sau exprimat printr-o secvenţă de transformări elementare:
A1 = A
A2 = T1  A1
...
Ak +1 = Tk  Ak
...
An = Tn −1  An −1
în care fiecare operaţie anulează elementele subdiagonale din coloana k ale
matricei Ak :
1 0  0  0   a11 a12  a1k  a1n 
0 1  0  0   0 a 22  a 2k  a 2n 
             
0 0  1  0  0 0  a kk  a kn  = Ak +1
0  − t k +1k  0  0

0
 0  a k +1k  a k +1n 
             
0 0  − t nk  1  0 0  a nk  a nn 

Tk  Ak = Tk (a1 a2  ak  an ) = (Tk a1 Tk a2  Tk ak  Tk an ) ,
unde a i este coloana i a matricei Ak .
( )
Tk a k = I n − t k ekT a k = a k − a kk  t k .

- 39 -
Componenta i a coloanei transformate Tk a k este:
pentru i  k
a'ik = aik − a kk  t ik = 
a
aik − a  t pentru i  k .
 ik kk ik
Remarcăm faptul că, în timpul transformării, primele k componente nu se
modifică, fiind afectate numai elementele subdiagonale.
Din condiţia de anulare a acestora urmează
a
tik = ik , pentru i = k + 1, ..., n ,
a kk
determinându-se vectorul t k , deci şi matricea Tk .
Coloanele a j ( j  k ) se vor modifica astfel:
( )
Tk a j = I n − t k ekT a j = a j − a kj  t k ,
iar pe componente:
a
a'i = aij − a kj  t ik = aij − a kj  ik , j = k + 1, ..., n , i = k + 1, ..., n .
a kk
Coloanele a j ( j  k ) au elementele subdiagonale deja anulate ( a kj = 0
pentru j  k ) astfel că transformarea le lasă nemodificate:
Tk a j = a j .

Metoda de triangularizare şi substituţia inversă conduc la un O ( n 3 ) -


algoritm.
Algoritmul 3.2.1.1.
Intrări: n = dimensiunea sistemului
A = matricea sistemului
b = vectorul termenilor liberi
Ieşiri: A = matricea sistemului triunghiular
b = termenii liberi ai sistemului triunghiular
x = vectorul necunoscutelor
{
pentru k  1 : n − 1
pentru i  k + 1 : n
{
t  aik / a kk
ai , k : n  ai , k : n − t  a k , k : n
bi  bi − t  bk
}
pentru i  n : 1
{

- 40 -
suma  suma + ai , i +1:n  xi +1:n
xi  (bi - suma) / aii
}
}.
În implementarea algoritmului eliminării gaussiene, la fiecare pas k al
eliminării se efectuează împărţirea liniei pivot k la elementul diagonal a kk . În
practică, este posibil ca acest element să fie egal cu zero, situaţie în care este
imposibilă continuarea algoritmului. Erorile de rotunjire în calculul elementelor
matricii A (k ) sunt cu atât mai mici cu cât elementul pivot a kk este mai mare în
valoare absolutǎ. Astfel, se efectueazǎ pivotarea parţialǎ pe coloane, ceea ce
pentru pasul k al eliminării revine la a găsi elementul maxim al matricei A(k −1)
situat pe coloana k şi liniile i  k , adică | a k |= max | aik | şi permută între ele
k i  n

liniile  şi k. Permutarea a două linii sau coloane dintr-o matrice se poate face
prin înmulţirea cu o matrice de permutare care diferă de matricea unitate prin:
a = akk = 0 , ak = a k = 1 . Astfel înmulţirea: A' = Pk A are ca efect
permutarea liniilor  şi k din matricea A, în timp ce: A" = A  Ak , produce
permutarea coloanelor k şi  .
Căutarea elementului maxim în valoare absolută în submatricea delimitată
de ultimele n − k + 1 linii şi coloane duce la performanţe mai bune de stabilitate
numerică. Astfel se efectuează pivotarea totală.

3.2.2. Factorizarea LU
Fiind dată matricea A = (aij ) , i, j = 1, 2, ..., n a unui sistem nesingular ne
propunem să descompunem această matrice în produsul matricei inferior
triunghiulare L cu matricea superior triunghiulară U:
  11 0 0  0   u11 u12 u13  u1n 

 21  22 0  0   0 u 22 u 23  u 2n 
A =   31  32  33  0    0 0 u 33  u 3n  .
            
       0 0   nn 
 n1 n2 n3 nn   0
Motivul acestei descompuneri constă în transformarea sistemului dat
Ax = b în două sisteme liniare: Ly = b şi Ux = y a căror matrici sunt
triunghiulare şi deci rezolvarea lor este uşoară. Relaţia ce leagă elementele celor
min( i , j )
trei matrici poate fi scrisă   ik u kj = aij , i, j = 1, 2, ..., n .
k =1
Sunt posibile mai multe factorizări LU. Matricele L şi U au în total
n(n + 1) elemente nenule, în timp ce A = LU ne furnizează n 2 relaţii. Este

- 41 -
necesară particularizarea, de exemplu, a elementelor diagonale a uneia din
matricile L sau U. Dacă se consideră elementele diagonale ale matricii U unitare
se obţine factorizarea Crout, în timp ce dacă elementele diagonale ale lui L sunt
unitare se obţine factorizarea Doolittle.
Considerăm, întâi,  ii = 1, i = 1,2,..., n . Atunci u11= a11 .
Pentru i = 1 , j  1 avem  11u1 j = a1 j  u1 j = a1 j , j = 1, 2, ..., n .
a
Pentru i  1 , j = 1 avem  i1u11 = ai1   i1 = i1 , i = 1, 2, ..., n .
u11
La pasul k ( 1  k  n ) avem
i = k , j  k ,  k1u1 j +  k 2 u 2 j + ... +  kk u kj = a kj 
k −1
u kj = a kj −   ks u sj , j = k , ..., n .
s =1
i  k , j = k ,  i1u1k +  i 2u2k + ... +  ik ukk = aik 
1  k −1 
 ik =  aik −   is u sk , i = k + 1, ..., n .
u kk  s =1 
Fie, acum u ii = 1 , i = 1, 2, ..., n .
Pentru j = 1, i  1 avem
 i1u11 = ai1   i1 = ai1, i = 1, 2, ..., n
Pentru i = 1 , j  1 avem
 11u1 j = a1 j  u1 j = a1 j /  11 , j = 1, 2, ..., n .
La pasul k ( 1  k  n ) avem
i = k ,…,n, j = k :
 i1u1k +  i 2u2k + ... +  ik ukk = aik 
k −1
 ik = aik −   is u sk .
s =1
i = k , j = k + 1,..., n :
 k1u1 j +  k 2 u 2 j + ... +  kk u kj = a kj 
1  k −1 
u kj =  a kj −   ks u sj 
 kk  s =1 
Factorizarea Crout conduce la următorul O ( n 3 ) - algoritm.
Algoritmul 3.2.2.1.
Intrări: n = dimensiunea matricii
A = matricea de factorizat
Ieşiri: L, U (folosesc acelaşi spaţiu de memorie ca A)
{
- 42 -
pentru k  1 : n
{
pentru i  k : n
{
s  ai1:k −1  a1:k −1k
aik  aik − s
}
pentru j  k + 1 : n
{
s  a k1:k −1  a1:k −1 j
a kj  (a kj − s ) / a kk
}
}
}.
Din teorema 3.2.1.1. are loc următorul rezultat:
Teorema 3.2.2.1. Dacă toate submatricele principale A (k ) ale unei
matrici A nesingulare de ordinul n sunt nesingulare atunci există o factorizare
LU, unde L este triunghiulară inferior şi U este superior triunghiulară.

3.2.3. Factorizarea Cholesky


n n
Fie A o matrice simetrică şi pozitiv definită (adică   aij xi x j  0
i =1 j =1
pentru orice x  0 ). Deoarece factorizarea LU strică simetria matricii A,
factorizarea Cholesky menţine simetria matricii A, având şi avantajul unui timp
de execuţie mai mic pe calculator. Această factorizare constă în descompunerea
lui A sub forma A = LLT , unde L este o matrice inferior triunghiulară, ceea ce
revine la
min( i , j )
  ik  jk = aij , i, j = 1, 2, ..., n .
k =1
2
La primul pas avem  11 = a11   11 = a11 .
a
Pentru i  1 , j = 1 avem  i1 11 = ai1   i1 = i1 .
 11
La pasul k ( 2  k  n ) avem i = j = k ,
 2k1 +  2k 2 + ... +  2kk = a kk 
k −1
 kk = a kk −   2ks .
s =1

- 43 -
Pentru i  k , j = k :
 i11k +  i 2  2k + ... +  ik  kk = aik 
1  k −1 
 ik =  aik −   is  ks , i = k + 1, ..., n .
 kk  s =1 

3.3. Metode iterative


Numărul de operaţii pentru metodele directe de rezolvare a sistemelor
algebrice liniare este O ( n 3 ) (n fiind numărul de ecuaţii şi necunoscute), în timp
de metodele iterative pot conduce la un număr mai mic de operaţii.
Principiul general de rezolvare este similar cu cel de la rezolvarea ecuaţiei
f ( x) = 0 , în care ecuaţia este scrisă sun forma
x = g (x) ,
conducând la procesul iterativ
xk +1 = g ( xk ) .

Fie
A  M n (R ), A = (aij )1 i , j  n şi b  R n , b = (bi )1 i  n .
Pentru rezolvarea sistemului algebric de ecuaţii liniare
Ax = b
considerăm clasa de metode iterative
u k +1 − u k
B + Au k = b ,
p
unde A  M n (R ) şi k R sunt parametrii care definesc metoda iterativă.
Pornind de la un element arbitrar u 0 se construieşte un şir (u k ) k N unde
fiecare element reprezintă o aproximaţie a soluţiei sistemului Ax = b , dacă
această soluţie există. Aceasta constituie o metodǎ iterativǎ de rezolvare a
sistemului algebric.
Ne interesează condiţiile în care şirul de aproximaţii (u k ) k N converge
către soluţia sistemului.
Pentru matricea A introducem notaţiile:
 a11  0 
D = diag ( A) =      ,
 0  a nn 

- 44 -
 0 0  0 0
inf
a 0  0 0
A =  21 ,
    
 a n1 an2  a nn −1 0
 0 a12 a12  a1n −1 a1n 
  a 2n −1 a 2n  .
Asup =  0 0 a 23
     
0 0 0  0 0 

3.3.1. Metoda iterativă Jacobi


Dacă aii  0 , i  {1, 2, ..., n} atunci necunoscuta x i din ecuaţia i este
n aij b
xi = −  xj + i .
j =1 aii aii
j i

Construim şirul u = (u1k ,..., u nk ) definit prin formulele de


k
recurenţă
n aij b
uik +1 = −  uik + i , i  {1, 2, ..., n} ,
j =1 aii aii
j i

k  N , iar prima aproximaţie u 0 = (u10 ,..., u n0 ) este un element din R n . Relaţia


n
de mai sus se mai scrie aii (uik +1 − uik ) +  aij uik = bi , i  {1, 2, ..., n} sau
j =1
k +1
sub formă matriceală D(u − u ) + Au = b . Raportat la cazul general, în
k k

metoda Jacobi avem B = D şi p = 1 . Şirul definit prin formulele de recurenţă


n aij ( k ) b
xi(k +1) = −  xj + i , i {1, 2, ..., n}, k N se rescrie prin
j =1 aii aii
j i

x ( k +1) = Px ( k ) + d , k N, unde


 b1 
 
P = D −1C , d = D −1b, C = −( Ainf + Asup ), b =  b2  . Vom stabili în ce condiţii
  
 bn 
şirul definit mai sus converge la soluţia exactă a sistemului Ax = b . Fie x
soluţia exactă şi e (k ) eroarea în aproximaţia k : e ( k ) = x − x ( k ) . Sistemul
Ax = b se mai scrie Dx = Cx + b sau x = D −1Cx + D −1b . Deci
e( k +1) = x − x( k +1) = D −1C ( x − x( k ) ) = Pe( k ) ,

- 45 -
sau, trecând la norme şi notând cu e (0) = x − x (0) obţinem
k
e ( k +1)  P  e ( k )  ...  P  e (0) .
Deci, dacă P  1 atunci şirul este convergent la soluţia exactă.
Ţinând seama de formulele de recurenţă scrise pe componente şi folosind
respectiv norma maximă, norma unu sau norma euclidiană, condiţia de
convergenţă devine:
n n
 | aij |  | aii |, i  {1,2,..., n} sau  | aij |  | a jj |, j  {1,2,..., n}
j =1 i =1
j i i j
sau
2
n n  aij 
    1.

i =1 j =1  aii 
j i

Din motive de eficienţă verificăm condiţia || x ( k +1) − x( k ) ||  || x( k ) ||


considerând şirul convergent începând cu un rang k.
Metoda Jacobi conduce la următorul algoritm.
Algoritmul 3.3.1.1.
Intrări: n = ordinul matricii sistemului
A = matricea sistemului
b = vectorul termenilor liberi
y = aproximaţia iniţială / precedentă a soluţiei
nr_max = numărul maxim admis de iteraţii
 = precizia
Ieşiri: x = soluţia (aproximaţia cerută)
{
k 0
p y
| p − q | p
cât timp (k < nr_max) şi ( | p − q |  p ) pentru i  1 : n
{
S 0
pentru j  1 : i − 1
s  s + aij y j
pentru j  i + 1 : n
s  s + aij y j
xi  (bi − s ) / aii
}
- 46 -
p y
q x
yx
k  k +1
}.

3.3.2. Metoda iterativă Gauss-Seidel


În această metodă, construim şirul u k = (u1k ,..., u nk ) definit prin
formulele de recurenţă
n a1 j k b1
u1k +1 = −  uj + ,
j = 2 a11 a11
i −1 aij n aij k bi
uik +1 = −  u kj +1 −  uj + , i { 2, ..., n − 1} ,
j =1 aii j = i +1 aii aii
n −1 a nj b
u nk +1 = −  u kj +1 + n ,
j =1 a nn a nn
k  N şi u 0 = (u10 ,..., u n0 ) un element din R n .

Formulele de recurenţă se pot scrie sub forma


i n
k +1 k
 aij u j +  aij u j = bi , i  {1, 2, ..., n}
j =1 j = i +1
sau sub formă matriceală
( Ainf + D)u k +1 + Asup u k = b şi ( Ainf + D)(u k +1 − u k ) + Au k = b .
Astfel B = Ainf + D şi p = 1 . Remarcăm faptul că, în această metodă se
folosesc noile valori ale componentelor vectorului necunoscutelor x ( k +1)
imediat ce au fost calculate. Şirul definit prin formulele de recurenţă
i −1 n
xi( k +1) = (bi −  aij x (jk +1) −  aij x (jk ) ) / aii , i  {1, 2, ..., n} , k  N ,
j =1 j = i +1

se rescrie prin x ( k +1) = Px ( k ) + d , k  N , unde


P = −( D + Ainf ) −1 Asup , d = ( D + Ainf ) −1 b .
Condiţia de convergenţă este:

- 47 -
P  1  ( D + Ainf ) −1 Asup  1 .

Deoarece calcularea inversei necesită O ( n 3 ) operaţii, o condiţie simplă


de convergenţă a metodei Gauss-Seidel este: pentru fiecare linie a matricii A,
elementul diagonal considerat în modul să fie strict mai mare decât suma
tuturor modulelor celorlalte elemente ale liniei respective. Notând cu
i −1 n
s1i =  | aij / aii |, si2 =  | aij / aii |, i  {1,2,..., n}
j =1 j = i +1

condiţia precedentă se scrie: s1i + si2  1, i  {1,2,..., n} .


Să demonstrăm convergenţa. Sistemul de ecuaţii Ax = b se mai scrie
i −1 n
xi = (bi −  aij x j −  aij x j ) / aii , i  {1, 2, ..., n} ,
j =1 j =i +1
cu x i valorile exacte ale necunoscutelor şi aii nenuli.
i −1 aij n aij
Obţinem xi − xi( k +1) = −  ( x j − x (jk +1) ) −  ( x j − x (jk ) ) ,
j =1 aii j = i +1 aii
i  {1, 2, ..., n}, sau, trecând la module:
i −1 aij n aij
| ei( k +1) |   | e (jk +1) | +  | e (jk ) | , i  {1, 2, ..., n} .
j =1 aii j = i +1 aii

Utilizând norma maximă a vectorului eroare e (k ) = max | ei( k ) | ,


 i
obţinem | ei( k +1) |  s1i e ( k +1) + si2 e ( k ) , i  {1, 2, ..., n} sau

e ( k +1)  s1i e ( k +1) + si2 e ( k )  e ( k +1)   e (k ) cu   (0,1) .


    
Metoda Gauss-Seidel furnizează următorul algoritm.
Algoritmul 3.3.2.1.
Intrări: n = ordinul matricii sistemului
A = matricea sistemului
b = vectorul termenilor liberi
y = aproximaţia iniţială / precedentă a soluţiei
nr_max = numărul maxim admis de iteraţii
 = precizia
Ieşiri: x = soluţia (aproximaţia cerută)
{
k 0
py
xy

- 48 -
| p − q | p
cât timp (k > nr_max) şi ( | p − q |  p ) pentru i  1 : n
{
S 0
pentru j  1 : i − 1
s  s + aij x j
pentru j  i + 1 : n
s  s + aij y j
xi  (b − s ) / aii
}
p y
q x
yx
k  k +1
}.

3.3.3. Metoda relaxǎrii


Fie q R*. Metoda relaxǎrii este datǎ de
u k +1 − u k
( D + qAinf ) + Au k = b ,
q
adicǎ
B = D + qA inf , p = q .
Dacǎ q = 1 obţinem metoda Gauss-Seidel.
Existǎ şi alte condiţii în care procedeele iterative sunt convergente. Dacǎ
q  (0,2) şi A este o matrice simetricǎ şi strict pozitivǎ atunci şirul de
aproximaţii construit prin metoda relaxǎrii converge cǎtre soluţia exactǎ a
sistemului Ax = b.

3.4. Exerciţii
1) Să se rezolve sistemele:
0,78x1−0,02 x2 − 0,12 x3 − 0,14 x4 = 0,76
− 0,02 x1+0,68x2 − 0,04 x3 + 0,06 x4 = 0,08
a)  utilizând metoda Jacobi;
− 0,12 x −0,04 x2 + 0,72 x3 − 0,08x4 = 1,12
0,14 x +10,06 x −
 1 2 0,08 x3 + 0,74 x4 = 0,68

- 49 -
 x1 + x 2 + x3 + x 4 + x5 = 12
2 x1 +3x 2 + x3 + 5 x 4 + 2 x5 = 35
b) − x1 + x 2 − 5 x3 + 3x 4 + 6 x5 = 10 utilizând metoda Gauss;
3 x1 + x 2 + 7 x3 − 2 x 4 − 3 x5 = 12
2 x1 +2 x 2 + 2 x3 − x 4 − 3 x5 = 10
6 x1 − x2 − x3 = 11,33
c) − x1 +6 x2 − x3 = 32 utilizând metoda Gauss-Seidel.
− x1 − x2 + 6 x3 = 42
2) Analizaţi comparat metodele Jacobi, Gauss-Seidel şi relaxării pentru
 2 −1 0  1  0
A =  − 1 2 − 1 , b =  0  , x (0) =  0  .
 0 −1 2  1  0
     

Discuţii finale:
Să se discute despre metoda de eliminare a lui Gauss, factorizarea LU,
factorizarea Cholesky, metoda iterativă Jacobi, metoda iterativă Gauss-Seidel.

Tema propusă:
Să se realizeze o lucrare cu tema metoda de eliminare a lui Gauss, factorizarea
LU, factorizarea Cholesky, metoda iterativă Jacobi, metoda iterativă Gauss-
Seidel.

- 50 -
CAPITOLUL 4
Rezolvarea numerică a problemelor algebrice de
valori şi vectori proprii

Obiectivul capitolului
Însuşirea noţiunilor necesare programării algoritmul lui Jacobi de determinare a
valorilor si vectorilor proprii.

Cuvinte cheie: valori proprii, vectori proprii.

4.1. Abordarea elementară a subiectului


La probleme algebrice de valori şi vectori proprii conduc numeroase
probleme tehnico-ştiinţifice.
Vom arăta în cele ce urmează cum se ajunge la o problemă algebrică de
valori şi vectori proprii, extinzând problema rezolvării unui sistem omogen de
ecuaţii.
Astfel luând sistemul:
a11 x1 + a12 x2 + a13 x3 = 0
a 21 x1 + a 22 x2 + a 23 x3 = 0
a31 x1 + a32 x2 + a33 x3 = 0
constatăm că acesta se poate scrie sub forma Ax = 0 , unde A este matricea
formată din elementele ( aij ) cu i = 1,2,3 şi j = 1,2,3 , iar x este vectorul
 x1 
coloană  x2  . Sistemul nu are alte soluţii decât cea banală exceptând cazul
 
 x3 
det A = 0 .
Să presupunem că matricea A depinde de un parametru  şi anume să
luăm A = ( A'−I ) , unde I este matricea unitate.
În acest fel putem căuta acele valori  pentru care det A = 0 şi apoi
putem căuta soluţiile nebanale ale ecuaţiei Ax = 0 .
Problema pe care o avem de rezolvat se poate scrie sun forma:
A' x = x .
Deci o problemă algebrică de valori şi vectori proprii se exprimă prin
relaţia:
Ax = x

- 51 -
unde A este o matrice pătratică de ordin n, x un vector (nenul) care se numeşte
vector propriu (la dreapta) ce trebuie calculat iar  un număr care se numeşte
valoare proprie ce trebuie calculată.
Valorile proprii  pentru problema Ax = x sunt rădăcinile ecuaţiei
(numită ecuaţie caracteristică):
det( A − I ) = P() = 0 ,
P() fiind un polinom de grad n în  obţinut din dezvoltarea determinantului
det( A − I ) . Având o valoare proprie  , un vector propriu corespunzător x este
soluţia nebanală a sistemului omogen de ecuaţii ( A − I ) x = 0 .

4.2. Aspecte teoretice generale


4.2.1. Clase speciale de matrici
Matricea adjunctă (notată A H ) este matricea transpusă şi conjugată
( A H = (a ji )  M n  m dacă A = (aij )  M m n ).

Dacă A este o matrice pătratică şi A = A H , matricea A se numeşte


hermetiană (autoadjunctă).
Se demonstrează că:
( A H ) H = A,
( AB ) H = B H A H ,
( A H ) −1 = ( A−1 ) H .
O matrice A este unitară dacă A H A = I .
Dacă A reală atunci A H = AT (transpusa) şi dacă AT A = I atunci A se
numeşte ortogonală. Într-o matrice unitară (ortogonală), coloanele formează o
bază ortonormală.
O matrice de rotaţie R( p, q ) = (rij ) ( p  q ) este o matrice care diferă de
matricea unitate numai prin liniile p şi q, unde singurele elemente nenule sunt:
r pp = c , r pq = s , rqp = − s, rqq = c ,

unde c, s sunt două numere complexe astfel ca | c | 2 + | s | 2 = 1 . (Se poate lua


c = v cos , s = w sin  , cu | v |=| w |= 1 . Pentru matrici reale, c = cos  ,
s = sin  ).
Se verifică uşor că R( p, q ) R(Tp, q ) = I , adică matricea de rotaţie este
unitară (ortogonală).
Norma euclidiană a unei matrici A = (aij ) este definită prin
1/ 2
 n n 
A E =    | aij | 2  .
 i =1 j =1 
 
- 52 -
Prin definiţie, urma matricei A este
n
TrA =  aii .
i =1
Dacă H este nesingulară, matricele A şi HAH −1 se numesc asemenea
(similare).
Ecuaţiile caracteristice a două matrici asemenea sunt identice, deoarece:
det( HAH −1 − I ) = det( HAH −1 − HIH −1 )
= det H ( A − I ) H −1
= det H  det( A − I )  det H −1
= det( A − I ).
Dacă x este vector propriu al matricei A atunci Hx este vector propriu al
matricii HAH −1 , deoarece:
din Ax = x  HAx = Hx  HAH −1 Hx = Hx .
O matrice asemenea cu o matrice diagonală se numeşte regulată.
Dacă A este regulată atunci ea admite n vectori proprii liniar independenţi
(o bază de vectori proprii).
Dacă D = diag(1,  2 ,...,  n ) şi A = HDH −1 rezultă AH = HD . Notăm
H = ( x1 , x2 ,..., xn ) . Avem
 a11 a12  a1n   1 0  0 
a  a 2n ( x   0  .
 21 a 22 x2  x n ) = ( x1 x2  x n ) 0  2
     1     
 a n1 a n2  a nn  0 0   n 
Obţinem Axi =  i xi .
Teorema 4.2.1.1. Dacă valorile proprii ale unei matrici sunt
distincte, atunci matricea este regulată.
Teorema 4.2.1.2. Pentru orice matrice pătratică complexă A există o
matrice unitară P, astfel încât
B = P H AP
să fie superior triunghiulară.
O matrice A este normală dacă
A H A = AA H .
Lema 4.2.1.1. O matrice normală şi triunghiulară este matrice
diagonală.
Demonstraţie. Fie T = (t ij ) superior triunghiulară
( t ij = 0, 1  j  i  n ). Scriem egalitatea ce rezultă din faptul că A este normală:

- 53 -
 t11 t12 t13  t1n   t11 0 0  0 
 0   0 
 t 22 t 23  t 2n   t12 t 22 0
 0 0 t 33  t 3n    t13 t 23 t 33  0  = T H T .
         
 0  t nn   t1n  t nn 
 0 0 t 2n t 3n
Deci:
 n n 
  t1 j t1 j  t1 j t 2 j  t1n t1n   
 j =1 j =2   t11t11  t1n t11 

     =    
 
  t nn t nn     t in t in 
n

   i =1 
 


n
2 2
 | t1i | =| t11 |  t1 j = 0 pentru j  2 ,
i =1
n
2 2 2
 | t 2i | =| t12 | + | t 22 |  t 2 j = 0 pentru j  3 ,
i=2
…,
deci T este diagonală.
Teorema 4.2.1.3. O matrice normală este regulată şi admite o bază
ortonormală de vectori proprii şi reciproc.
Demonstraţie. Fie A normală. Din teorema 4.2.1.2. există P unitară
astfel încât B = P H AP să fie superior triunghiulară.
Avem
BB H = ( P H AP)( P H AP) H = ( P H AP )( P H AH P )
= P H A( PP H ) AH P = P H AAH P
( PP H = I pentru că P este unitară).
B H B = ( P H AP ) H ( P H AP ) = ( P H A H P )( P H AP )
= P H AH ( PP H ) AP = P H A H AP
= P H AAH P
( A H A = AA H pentru că A este normală).
Deci BB H = B H B , adică B este normală. Conform lemei 4.2.1.1. rezultă
că B este diagonală. Cum P H = P −1 (P unitară) şi B diagonală rezultă că A este
regulată. Coloanele lui P sunt vectori proprii şi formează o bază ortonormală.
Reciproc. Dacă A admite o bază ortonormală de vectori proprii avem
AP = PD , unde P este matricea unitară a acestor vectori proprii şi D este

- 54 -
matricea diagonală a valorilor proprii. Avem A = PDP −1 = PDP H (P unitară).
Avem
AAH = ( PDP H )( PDP H ) H
= PDP H PD H P H = PDD H P H ,
AH A = ( PDP H ) H ( PDP H ) = PD H P H PDP H
= PD H DP H = PDD H P H .
Deci A H A = AA H , adică A este normală.

4.2.2. Punerea corectă a problemei


Ne punem problema efectului perturbaţiei matricei asupra valorilor proprii
ale ei (adică la mici variaţii ale datelor de intrare să vedem efectul asupra
datelor de ieşire din metodă).
Teorema 4.2.2.1. Fie A o matrice regulată şi fie H o matrice ale
cărei coloane sunt vectori proprii liniar independenţi ai matricei A. Atunci,
pentru fiecare valoare proprie  a matricei perturbate A + B , unde B are
elementele de modul subunitare, există o valoare proprie  i a matricei A astfel
încât
|  i −  |   n  H  H −1 .
Demonstraţie. Din A regulată rezultă
H −1 AH = diag (1 ,  2 ,...,  n ) = D .
Scriem ecuaţia caracteristică a lui A + B şi rezultă:
0 = det( A + B − I ) = det( H −1 ( A + B − I ) H ) = det( H −1 AH − I + H −1 BH ) .
Deci
0 = det( D − I + H −1 BH ) .
Dacă  j =  atunci teorema este demonstrată. Presupunem că  j  

pentru j = 1, n . Atunci det( D − I )  0  ( D − I ) −1 .


Deci
det[(D − I ) −1 ( D − I + H −1 BH )] = 0 

det[I + ( D − I ) −1 H −1 BH )] = 0 
I + ( D − I )−1 H −1 BH este singulară (avem teorema: dacă C  1 atunci
I  C este nesingulară).
Deci ( D − I ) −1 H −1 BH  1 . Utilizând norma spectrală:

- 55 -
 max |  j −  | −1 H −1  B  H  1 .
j

Deci min |  j −  |  H −1  B  H .
j
Dar
| bij | 1  B  n .
Deci
min |  j −  |   n  H −1  H .
j

4.3. Metoda lui Jacobi


Cazul matricelor complexe hermitiene se reduce la cel al matricelor reale
simetrice.
Fie A = B + iC , B, C reale. Fie  valoare proprie (în acest caz este
reală) căreia îi corespunde un vector propriu de forma x + iy cu x, y  R n .
Deci ( B + iC)( x + iy) = ( x + iy) , sau
Bx − Cy = x
Cx + By = y ,
adică
B − C  x =  x .
C B   y   y 
Deci problema devine reală dar de dimensiune dublă.
A
hermitiană  ( B + iC ) H = B + iC  B T − iC T = B + iC  B = B T şi − C = C T .
Deci matricea de ordin 2n este reală şi simetrică.
Ne limităm la o matrice A reală şi simetrică. Deci
AT = A  AT A = AA T  A normală. Conform lemei 4.2.1.3., A este regulată
şi admite o bază ortonormală de vectori proprii. A regulată, este asemenea cu o
matrice diagonală ce are pe diagonală valorile proprii.
Metoda lui Jacobi utilizează matrice de rotaţie reale şi construieşte un şir
de matrice { Ak } asemenea cu A.
Luăm A0 = A şi în general Ak +1 = Rk Ak RkT , k = 0,1,2,... , în care
Rk = R( p k , q k ) o matrice de rotaţie reală, având la intersecţiile liniilor p k şi
q k cu coloanele p k şi q k elementele cos  k , sin  k şi respectiv − sin  k ,
cos  k , iar în rest elementele matricei unitate.

- 56 -
Pentru un k fixat notăm p = p k , q = q k , =  k . Alegem p şi q astfel încât
| a kpq | = max | aijk | (maximul în modul dintre elementele nediagonale).
1 i  j  n
Alegem  astfel încât să se anuleze pentru Ak +1 elementele simetrice cele mai
mari în modul.
Dacă A0 este simetrică atunci
A0T = A0  A1T = R0 A0T R0T = R0 A0 R0T = A1 .
Prin inducţie
AkT+1 = Ak +1  Ak +1 simetrică.
p q
1 
  
 
 1 
p cos  sin  
 1 
Rk =   
 1 
 
q − sin  cos  
 1 
  
 1 

p q
1 
  
 
 1 
p cos  − sin  
 1 
T
Rk =   
 1 
 
q sin  cos  
 1 
  
 1 

Se observă că
Rk RkT = I .
Deci
AkT+1 = Rk Ak RkT = Rk Ak Rk−1  Ak +1 asemenea cu Ak .
Facem calculele în relaţia
- 57 -
Ak +1 = Rk Ak RkT
şi avem
p i j q
1 0  0  0 0 0  0
0 1  0  0 0 0  0
         
 0 0  cos   0  
0 sin   0   cos  −  
         (a (k ) )
sin
 ( k +1)
0 0  0  1 0 0  0  ij    = (aij )
0 0  0  0 1 0  0   sin  cos  
  
 0 0  − sin   0 0 cos   0    
         
0 0  0  0 0 0  1
Deci
a ( k +1) = a ( k ) cos  + a ( k ) sin , i  p, q
ip ip iq
 ( k +1) (k ) (k )
aiq = −aip sin  + aiq cos , i  p, q
k +
a pp = a pp cos  + 2a pq) sin  cos  + a qq
( 1) ( k ) 2 ( k (k )
sin 2 
 ( k +1)
a qq = a (pp
k)
sin 2  − 2a (pq
k) (k )
sin  cos  + a qq cos 2 
a ( k +1) = a ( k +1) = (a ( k ) − a ( k ) ) cos  sin  + a ( k ) (cos 2  − sin 2 )
 pq qp qq pp pq
celelalte elemente rămânând neschimbate:
aij( k +1) = aij( k ) ,
pentru toţi i, j  p, q .
k +1)
Din condiţia de anulare a lui a (pq obţinem:
sin 2 2a (pqk )
a (k )
cos 2 + (a (k )
−a (k )
) = 0  tg 2 = ( k ) .
a pp − a qq
pq qq pp (k )
2

Alegem  cu |  | .
4
Lucrăm cu numărătorul şi numitorul separat (pentru a evita pierderea
preciziei la împărţire).
sin 2 c sin 2 2 c 2 2 c2 c
=  =  sin 2 =  sin 2 = =f 
cos 2 d 2
cos 2 d 2 2
d +c 2
d 2 + c2
sin  şi cos  , unde c = numărătorul cu semnul fracţiei, d = numitorul în modul.
Teorema 4.3.1. Şirul matricelor { Ak } construit cu metoda lui Jacobi
este convergent şi
lim Ak = diag (1 ,  2 ,...,  n )
k →
unde  i sunt valorile proprii ale matricii A.
- 58 -
Demonstraţie. Să luăm
(k ) (k ) (k )
Ak = diag (a11 , a 22 ,..., a nn ) + Ek ,
unde E k este matricea simetrică a elementelor nediagonale ale lui Ak cu zero
pe diagonală. Din relaţiile de mai sus rezultă
( k +1) 2 ( k +1) 2 (k ) 2 (k ) 2
 [(aip ) + (aiq ) ] =  [(aip ) + (aiq ) ]
i  p, q i  p, q
adică suma pătratelor elementelor nediagonale, cu excepţia celor din poziţiile
(p,q) şi (q, p) nu se modifică.
Dar elementele din poziţiile (p,q) şi (q, p) în A(k +1) sunt zero.

Deci
2
  
1/ 2
 +
Ek +1 E =    | aij |   = Ek E − 2(a (pq
2 ( k 1) 2 2 k) 2
)
 i j  
  
k +1) ( k +1)
pentru că a (pq = a qp = 0 . Rezultă că
2 2
E k +1 E   E k E
2
cu  = 1 −  1.
n2 − n
Într-adevăr, | aij( k ) | | a qp
(k )
| pentru 1  i  j  n . În E k E sunt n 2
termeni, deci
2 1 2
Ek E  (n 2 − n)(a (pq k) 2
)  Ek E  (a (pq
k) 2
) 
2
n −n
2 2
−2(a (pq
k) 2
) − Ek E 
2
n −n
2 2 k) 2  2  2
 Ek +1 E = Ek E − 2(a (pq )  1 −  Ek E .
2
 n −n
2 2
Deci E k E   k E0 E cu 0    1 . Rezultă lim E k = 0 . Deci la
k →
limită se obţine o matrice diagonală. Deoarece toate matricile şirului sunt
asemenea cu A elementele diagonale sunt valorile proprii ale lui A. Convergenţa
este cel puţin comparabilă cu cea a lui  k , din punct de vedere al rapidităţii.
Dacă ultima rotaţie care se efectuează până elementele nediagonale devin
inferioare preciziei  a calculelor (  fiind dat) este Rs atunci avem:

- 59 -
( Rs  R2 R1 R0 ) A( R0T R1T R2T  RsT ) = diag (1 ,  2 ,...,  n ) .
Cu această precizie vectorii proprii sunt coloanele matricii
Vs = R0T R1T R2T  RsT = ( Rs  R2 R1 R0 )T .
Iniţializăm V = I şi la fiecare pas înmulţim la stânga pe V cu rotaţia
respectivă. Notăm V = (Vij(k ) ) .
Înmulţirea de mai sus se transpune în formulele:
v ( k +1) = v ( k ) cos  + v (k ) sin 
pi pi qi
 ( k +1) (k ) (k )
 qi
v = − v pi sin  + v qi cos 
Metoda Jacobi conduce la următorul algoritm.

Algoritmul 4.3.1.
Intrări: n = ordinul matricei simetrice A
A = matricea simetrică
 = precizia
Ieşiri: x = vectorul cu valorile proprii
B = matricea ale cărei coloane conţine vectorii proprii
{
s1   + 1
cât timp s1  
{
max | b12 |
p 1
q2
pentru i → 1 : n
pentru j → 1 : n
dacă j  i atunci
dacă max  | bij | atunci
{
max | bij |
p i
q j
}
dacă b pp = bqq atunci
{
c  2/2
s  2/2

- 60 -
}
altfel
{
c  cos(arctan(2b pq /(b pp − bqq )) / 2)
s  sin(arctan(2b pq /(b pp − bqq )) / 2)
}
a pp  b pp c 2 + bqq s 2 + 2b pq sc
a qq  b pp s 2 + bqq c 2 − 2b pq sc
a pq  (bqq − b pp ) sc + (c 2 − s 2 )b pq
a qp  a pq
pentru i → 1 : n
{
dacă (i  p) şi (i  q) atunci
{
aip  bip c + biq s
a pi  aip
aiq  −bip s + biq c
a qi  aiq
pentru j  1 : n
dacă ( j  p) şi ( j  q) atunci
{
aij  bij
a ji  aij
}
}
}
pentru i  1 : n
pentru j  1 : n
bij  aij
s1  0
pentru i  1 : n
pentru j  1 : n
dacă j  i atunci
s1  s1 + aij2
}

- 61 -
pentru i  1 : n
 i  aii
pentru j  1 : n
{
\* vectorul propriu j
pentru j  1 : n
bij  aij
}
}.

4.4. Probleme de valori proprii generalizate


În unele probleme ale fizicii matematice intervin ecuaţii de valori
proprii generalizate
Ax = Bx ,
unde atât A cât şi B sunt matrici pătrate.
O posibilitate de transformare a ecuaţiei de mai sus într-o problemă
standard, de forma
Ax = x ,
constă în înmulţirea ecuaţiei la stânga cu B −1 , presupunând că matricea B este
nesingulară:
( B −1 A) x = x .
Dacă A şi B sunt simetrice, nu întotdeauna B −1 A este simetrică.
Dacă A şi B sunt simetrice şi B este pozitiv definită, se poate transforma
problema generalizată într-o problemă standard pornind de la descompunerea
Chalescki a matricii B:
B = L  LT ,
unde L este inferior triunghiulară.
Obţinem:
L−1 Ax = LT x ,
sau,

L−1 A( L−1 )T ( LT x) = ( LT x) ,
adică
A x = x
pentru matricea simetrică

A = L−1 A( L−1 )T .

- 62 -
Valorile proprii ale matricei A coincid cu cele ale lui A, iar vectorii
proprii corespunzători sunt
x = LT x ,
adică

x = ( LT ) −1 x .

4.5. Exerciţii
1) Să se determine valorile proprii şi vectorii proprii pentru
1 1 1
matricea A = 1 1 1 .
1 1 1
 
2) Să se determine cea mai mare valoare proprie pentru
 202 − 262 − 369 
A =  − 176 440 504  .
 228 − 462 − 561
 
3) Fie matricile:
7 6 2  1 5 0 
a) A =  1 2 − 2  b) B =  1 1 − 1 .
 −1 1 2  0 1 1 
   
Să se determine valorile proprii şi vectorii proprii prin metoda Jacobi.
De asemenea, să se scrie programul în C pentru metoda mai sus menţionată.

Discuţii finale:
Să se discute despre algoritmul lui Jacobi de determinare a valorilor şi
vectorilor proprii.

Tema propusă:
Să se facă o lucrare cu tema algoritmul lui Jacobi de determinare a valorilor şi
vectorilor proprii.

- 63 -
CAPITOLUL 5
Aproximarea funcţiilor prin polinoame

Obiectivele invatarii
Însuşirea unor noţiunie referitoare la interpolarea polinomială Lagrange,
algoritmul Aitken, diferenţe divizate, formula lui Newton de interpolare,
diferenţe finite, formule de interpolare pe noduri echidistante, interpolarea
polinomială Hermite, aproximarea discretă în sensul celor mai mici pătrate.

Cuvinte cheie: interpolare.

5.1. Introducere
Pentru o funcţie f : [a, b] → R problema aproximării ei printr-un
polinom se pune fie când este dificil de evaluat f, fie când nu se cunoaşte
expresia analitică a lui f ci doar valorile ei în anumite puncte xi  [a, b] ,
i  0, n , obţinute în general ca urmarea a unor măsurări şi prezentate într-un
tabel.
Mulţimea de puncte xi  [ a , b ] , i  0, n , cu proprietatea
a  x0  x1  ...  xn  b , o vom nota prin d[ a , b ] şi o vom numi diviziune a
intervalului [a, b] .
Punctele x i , i  0, n vor fi numite nodurile diviziunii.
Alegerea unui polinom pentru aproximarea funcţiei f se justifică prin
modul simplu computerizat de evaluare a valorii polinomului într-un punct.
Weierstrass, în 1885, demonstrează că „orice funcţie continuă pe un
interval [a, b] este limita uniformă pe [a, b] a unui şir de polinoame” şi dă un
procedeu pentru calculul acestor polinoame. Bernstein, în 1912, dă o metodă
prin care putem calcula, pentru o funcţie continuă pe [a, b] , un şir ( Pn ) n de
polinoame uniform convergent către f.
Fiind dată o funcţie arbitrară f : [a, b] → R se pune problema stabilirii
unui criteriu de alegere a polinomului P care să aproximeze funcţia dată. Astfel
este necesar un instrument matematic pentru măsurarea distanţei dintre două
funcţii, care impune situarea într-un spaţiu vectorial normat complet şi în
funcţie de stabilirea criteriului de alegere a polinomului P care să aproximeze
funcţia f vom avea metode de aproximare a funcţiilor prin polinoame şi anume:
aproximarea prin interpolare, aproximarea în medie pătratică.

- 64 -
5.2. Aproximarea prin interpolare
Fie f : [a, b] → R şi diviziunea
d[ a , b ] : a  x0  x1  ...  xn  b .
Presupunem cunoscute valorile funcţiei f în nodurile x i , i  0, n ale
diviziunii d[ a , b ] şi (eventual) derivatele de anumite ordine ale funcţiei f în
aceste noduri. Se pune problema determinării unui polinom P care are aceleaşi
valori ca şi f în noduri şi (eventual) derivatele de anumite ordine ale lui f şi P în
noduri să coincidă. Un astfel de polinom P îl vom numi polinom de interpolare
ataşat funcţiei f şi diviziunii d[ a , b ] .

5.2.1. Interpolarea polinomială Lagrange


Fie f : [a, b] → R şi xi  [a, b] , i  0, n astfel încât x i să fie toate
distincte. Presupunem că se cunosc valorile funcţiei f în nodurile x i ,
f i = f ( xi ) , i  0, n . Se pune problema determinării unui polinom P astfel încât
P ( xi ) = f i pentru i = 0, 1, ..., n .
Teorema 5.2.1.1. Există un polinom şi numai unul de grad cel mult
n astfel ca P ( xi ) = f i pentru i = 0, 1, ..., n .
Demonstraţie. Dacă P şi Q sunt două polinoame de grad cel mult n
astfel ca P( xi ) = Q( xi ) = f i pentru i = 0, 1, ..., n atunci polinomul R = P − Q
este de asemenea de grad cel mult n şi R( xi ) = 0 pentru i = 0, 1, ..., n . Deoarece
polinomul R se anulează de cel puţin (n + 1) ori şi este de grad cel mult n,
urmează că R este polinomul identic nul, adică P = Q .
Existenţa polinomului P o demonstrăm construind efectiv polinomul P
răspunzând condiţiilor P ( xi ) = f i pentru i = 0, 1, ..., n . Să găsim un polinom
 k în spaţiul vectorial al polinoamelor de grad cel mult n, notat P n , astfel ca
 i ( xk ) = 0 pentru i  k ,  k ( xk ) = 1.
Acest polinom se anulează de n ori pentru x0 , x1 , ..., xk −1 , x k +1 , ..., x n .
Deci
 k ( x) = ( x − x0 )( x − x1 )...( x − xk −1 )( x − xk +1 )...(x − xn ) .
Deoarece  k ( xk ) = 1 urmează că
n x− xj
 k ( x) =  .
j = 0 xk − x j
jk

- 65 -
Cele (n + 1) polinoame  k ( k = 0, 1, ..., n ) sunt liniar independente în
spaţiul vectorial al polinoamelor de grad cel mult n. Într-adevăr, fie o
combinaţie liniară nulă:
 0  0 ( x) + 11 ( x) + ... +  n  n ( x)  0 .
Pentru x = x k , k = 0, 1, ..., n , avem
0  0 ( xk ) + 1 1 ( xk ) + ... + k  k ( xk ) +  + n  n ( xk ) = 0 .
Deci  k = 0 pentru k = 0, 1, ..., n .
Cele (n + 1) polinoame  k formează deci o bază a acestui spaţiu vectorial
de dimensiune n + 1. Polinomul P căutat se obţine ca o combinaţie liniară de
polinoame  k , adică polinomul dat de formula Lagrange:
n
P( x) =  f k  k ( x) .
k =0
Într-adevăr,
n
P( xi ) =  f k  k ( xi ) = f i , pentru i = 0, 1, ..., n .
k =0
Pentru calculul valorii polinomului de interpolare Lagrange într-un punct
a folosind relaţia
n
P( x) =  f k  k ( x)
k =0
a fost definit algoritmul următor:
Algoritmul 5.2.1.1.
Intrări: n = gradul polinomului de interpolare
a = valoarea argumentului polinomului
x = tabloul absciselor punctelor de interpolare
y = tabloul ordonatelor punctelor de interpolare
Ieşiri:  = valoarea polinomului de interpolare în a
{
0
pentru i  0 : n
{
P 1
pentru j  0 : n
dacă j  i atunci
P  P  (a − x j ) /( xi − x j )
   + yi  P
}
}.

- 66 -
Complexitatea metodei este O ( n 2 ) , mai exact 4n 2 operaţii ( n(2n + 3)
adăugări, (n + 1)(2n + 1) înmulţiri şi (n + 1) împărţiri).
În continuare dăm o altă manieră de scriere a polinomului Lagrange. Fie
w polinomul de grad (n + 1) definit prin:
w( x) = ( x − x0 )( x − x1 )...( x − xn ) .
Atunci
w' ( xk ) = ( xk − x0 )( xk − x1 )...(xk − xk −1 )( xk − xk +1 )...( xk − xn ) .
Deci
w( x)
 k ( x) =
( x − xk ) w' ( xk )
cu  k ( xk ) = 1.
Înlocuind  k prin expresia sa în formula Lagrange, obţinem:
n f k w( x) n fk
P( x) =  = w( x)  .
k = 0 ( x − x k ) w' ( x k ) k = 0 ( x − x k ) w' ( x k )
n
În cazul când f k = 1 pentru orice k avem relaţia   k ( x) = 1 . Cum
k =0
n n 1
  k ( x) = w( x)  =1
k =0 k = 0 ( x − x k ) w' ( x k )
obţinem formulele baricentrice
n fk

( x − x k ) w' ( x k )
P( x) = k = 0 .
n 1

k = 0 ( x − x k ) w' ( x k )
În acest caz numărul de operaţii este de ordinul 2n 2 , dar o nouă evaluare
1
a lui P(x) , dacă se conservă valorile lui , nu va cere decât 2n operaţii.
w' ( x k )

5.2.2. Algoritmul Aitken


Atunci când se doreşte modificarea punctelor de interpolare, se preferă
următorul algoritm.
Lema 5.2.2.1. Fie Q şi R două polinoame de interpolare de grad cel
mult n, construite respectiv pe {x0 , x1, ..., xn −1, a} şi pe {x0 , x1 , ..., xn −1, b}
astfel încât:
Q( xi ) = R( xi ) = f i pentru i = 0, 1, ..., n − 1
Q(a) = 

- 67 -
R(b) =  .
Atunci polinomul de interpolare de grad n + 1, construit pe
{x0 , x1 , ..., xn −1 , a, b} astfel încât
P( xi ) = f i pentru i = 0, 1, ..., n − 1
P(a) = 
P(b) = 
poate să se obţină plecând de la Q şi R astfel:
(b − x)Q( x) − (a − x) R( x)
P( x) = .
b−a
Demonstraţie. P este un polinom de grad cel mult n + 1.
(b − xi ) f i − (a − xi ) f i
P ( xi ) = = f i , i = 0, 1, ..., n − 1
b−a
(b − a)
P(a) = =
b−a
(a − b)
P(b) = − = .
b−a
În continuare se va construi polinomul P de grad cel mult n astfel încât:
P ( xi ) = f i pentru i = 0, 1, ..., n .
Considerăm următorul tabel triunghiular:

0 1 2 3 j j+1 n
0 P0,0 x0 − x
1 P1,0 P1,1 x1 − x
2 P2,0 P2,1 P2,2 x2 − x
3 P3,0 P3,1 P3,2 P3,3 x3 − x

k Pk ,0 Pk ,1 Pk ,2 Pk ,3 Pk , j Pk , j +1 xk − x

n Pn,0 Pn,1 Pn,2 Pn, n xn − x

Fie următoarea relaţie de recurenţă:


pentru k = 0, 1, ..., n
Pk ,0 = f k ;
pentru j = 0, 1, ..., n − 1

- 68 -
pentru k = j + 1, j + 2, ..., n
( xk − x) P j , j ( x) − ( x j − x) Pk , j ( x)
Pk , j +1 ( x) = .
xk − x j
Teorema 5.2.2.1. Polinomul de interpolare este egal cu Pn, n .
Demonstraţie. Se va arăta că Pk , j cu k  j este polinomul de
interpolare pe punctele {x0 , x1 , ..., x j −1 , x k } , ceea ce va implica faptul că Pn, n
este polinomul căutat.
Facem demonstraţia prin recurenţă pe al doilea indice
Pk ,0 = f k pentru k = 0, 1, ..., n .
Dacă ipoteza este verificată pentru j fixat atunci pentru k = j, j + 1, ..., n :
Pk , j este polinomul de interpolare pe punctele {x0 , x1 , ..., x j −1 , x k } ;
P j , j este polinomul de interpolare pe punctele {x0 , x1 , ..., x j −1 , x j } .
Aplicând lema 5.2.2.1., Pk , j +1 este polinomul de interpolare pe
punctele {x0 , x1 , ..., x j −1 , x j , x k } .

5.2.3. Evaluarea restului la interpolarea Lagrange


Fie f : [a, b] → R şi fie x0 , x1 , ..., xn  [a, b] . Ce se poate spune despre
restul f ( x) − P( x) , unde P este polinomul de interpolare, astfel că P ( xi ) = f i ,
i = 0, 1, ..., n .
Se remarcă faptul că x nu poate să aparţină lui [a, b] . În aceste caz, se
spune că avem o extrapolare.
Aproximarea realizată cu ajutorul polinomului de interpolare Lagrange
este nelocală, în sensul că la evaluarea funcţiei de interpolat contribuie
informaţii din toate punctele de interpolare, nu numai din cele din vecinătatea
argumentului considerat. Aceasta conduce la oscilaţii complet străine de
comportarea reală a funcţiei aproximate. Un exemplu în acest sens este pentru
aproximarea funcţiei f ( x) = 1 / x . Distribuirea în mod echidistant a punctelor
de interpolare reduce oscilaţiile până aproape la dispariţie.
Teorema 5.2.3.1.
Dacă f  C n +1[a, b] şi a  x0  x1  ...  xn  b atunci
( x − x0 )( x − x1 )...( x − xn ) ( n +1)
f ( x) − P( x) = f () ,
(n + 1)!
unde a  min( x, x0 )    max(x, xn )  b .
Demonstraţie. Fie F : [a, b] → R , definită prin
F ( y) = f ( y) − P( y) − c  wn ( y)

- 69 -
unde c este o constantă aleasă astfel încât F ( x) = 0 .
Deci c = ( f ( x) − P( x)) / w( x) , unde w( x) = ( x − x0 )( x − x1 )...( x − xn ) .
Din condiţiile de interpolare F ( xi ) = 0 , i = 0, 1, ..., n .
Deci F are n + 2 zerouri distincte şi anume: x, x0 , x1 , ..., xn pe [a, b] .
Aplicând teorema Rolle pe acest interval, F ' va avea cel puţin n + 1 zerouri
distincte, F" cel puţin n zerouri distincte. Din aproape în aproape, F (n +1) va
avea cel puţin un zero   (a, b) şi deci 0 = F ( n +1) () = f ( n +1) () − c(n + 1)! .
Sub această formă restul nu poate fi determinat în practică, deoarece
punctul  , care depinde de x şi de nodurile de interpolare nu este cunoscut.
Dacă, însă, se cunoaşte estimaţia M n = sup | f ( n +1) ( y ) | , se poate evalua
y[ a, b]
M n | w( x) |
| f ( x) − P( x) | .
(n + 1)!
Interpolarea polinomială Lagrange este utilă pentru construirea formulelor
de aproximare a integralelor, derivatelor şi ecuaţiilor diferenţiale.
În practică, pentru a aproxima o mulţime de puncte de interpolare, se va
limita la polinoame de grad cel mult 10.
Se va prefera pentru polinoame de grad mai mare decât 10, să se utilizeze
funcţii spline care au cele mai bune proprietăţi de stabilitate.
Exemplul 1. Să se construiască polinomul de interpolare Lagrange a
funcţiei f definită pe [−5,5] prin f ( x) = e − x .
2

Rezolvare. Se constată că se aproximează curba f ( x) = e − x la centrul


2

intervalului, iar la extremităţi se produc oscilaţii numite efecte de margine.


Exemplul 2. Să se construiască polinomul de interpolare Lagrange a
1
funcţiei f definite pe [−5,5] prin f ( x) = .
1+ x2
Rezolvare. Se remarcă faptul că se produc efecte de margine.
Exemplul 3. Se dă funcţia f prin următorul tabel:
xi 0 1 2
f ( xi ) −4 1 10
Se cere polinomul Lagrange P(x) .
Rezolvare.
( x − 1)( x − 2) ( x − 0)( x − 2) ( x − 0)( x − 1)
P( x) = (−4)  + 1 + 10 
(0 − 1)(0 − 2) (1 − 0)(1 − 2) (2 − 0)(2 − 1)
= 2 x 2 + 3x − 4.

- 70 -
5.2.4. Diferenţe divizate
Formula restului aminteşte oarecum de restul unei alte aproximări
polinomiale a unei funcţii de n ori continuu diferenţiabilă – formula lui Taylor.
Vom arăta că şi polinomul lui Lagrange se poate exprima sub o formă similară
cu polinomul lui Taylor, în care derivatele se înlocuiesc cu diferenţe divizate.
Diferenţa divizată de ordinul zero în x0 este
[ x0 ] f = f ( x0 ) .
Prin definiţie diferenţa divizată de ordinul întâi pe nodurile distincte x i
şi x j este numărul notat cu [ xi , x j ] f şi este dat de:
f ( x j ) − f ( xi )
[ xi , x j ] f = .
x j − xi
Diferenţa divizată de ordinul al doilea pe nodurile distincte x i , x j şi
x k este:
[ x j , x k ] f − [ xi , x j ] f
[ xi , x j , x k ] f = .
x k − xi
În general, diferenţa divizată de ordinul k pe k + 1 noduri distincte se
defineşte prin recurenţă:
[ x2 ,..., xk +1 ] f − [ x1 ,..., xk ] f
[ x1 , x2 ,..., xk +1 ] f =
xk +1 − x1
în care diferenţele divizate de la numărător sunt de ordin k − 1 .
Rezultatul care urmează precizează că diferenţa divizată depinde de
nodurile în care este definită şi de valorile funcţiei f în aceste noduri.
Teorema 5.2.4.1. Pentru orice k  2 şi orice noduri distincte
x1 , x 2 ,..., x k are loc formula:
k f ( xi )
[ x1 , x2 ,..., xk ] f =  .
k
i =1
 ( xi − x j )
j =1
j i
Demonstraţie. Facem inducţie după k. Pentru k = 2 , formula din enunţ
se verifică conform definiţiei diferenţei divizate de ordinul întâi. Presupunem
adevărată formula din enunţ pentru k noduri distincte oarecare şi verificăm
pentru k + 1 noduri. Utilizând formula de recurenţă din definiţia diferenţei
divizate de ordinul k şi ipoteza de inducţie avem:

- 71 -
 
 
 k +1 k 
1  f ( xi ) f ( xi )  f ( xk +1 )
[ x1 , x2 ,..., xk +1 ] f = − = +
xk +1 − x1  i = 2 k +1 i =1
k  k
  ( xi − x j )  ( xi − x j )   ( xk +1 − x j )
 j =2 j =1  j =1
 j i j i 
k f ( x )( x − x ) − f ( x )( x − x ) f ( x1 ) k +1 f ( xi )
k +1
+ i i 1 i i
− =  .
k +1 k +1 k
i=2 i =1
( xk +1 − x1 )  ( xi − x j )  ( x1 − x j )  ( xi − x j )
j =1 j =2 j =1
j i j i
Diferenţele divizate definite prin recurenţă furnizează un algoritm de
complexitate O ( n 2 ) .

Algoritmul 5.2.4.1.
Intrări: n + 1 = numărul de puncte
x = tabloul celor n + 1 puncte
y = tabloul valorilor funcţie f în cele n + 1 puncte
Ieşiri: y = diferenţele divizate de ordin 0 .. n în x0
{
pentru i  1 : n
pentru j  n : i
y j  ( y j − y j −1 ) /( x j − x j −1 )

}.

5.2.5. Formula lui Newton de interpolare


Cu ajutorul diferenţei divizate putem exprima restul la interpolarea
Lagrange sub o altă formă. Avem:
n n x− xj
f ( x ) − P ( x ) = f ( x ) −  f ( xi ) 
i =0 j = 0 xi − x j
j i
n n
f ( x) f ( xi )
=  ( x − xi ) ( +  ),
n
i =0 i =0
 ( x − xi ) ( xi − x )  ( xi − x j )
i =0 j i
de unde, conform relaţiei din teorema 5.2.4.1.
f ( x) − P ( x) = wn ( x)  [ x, x0 ,..., x n ] f ,
unde (am renotat) wn ( x) = ( x − x0 )( x − x1 )( x − xn ) .

- 72 -
Polinomul Lagrange
P ( x ) = Ln ( x )
se scrie:
Ln( x) = L1 ( x) + ( L2 ( x) − L1 ( x)) + ... + ( Ln ( x) − Ln−1 ( x)) .
Pentru fiecare m, 2  m  n , polinomul
Lm ( x) − Lm −1 ( x)
are gradul cel mult m şi
Lm ( x j ) − Lm −1 ( x j ) = 0 ,
pentru 0  j  m .
Deci
Lm ( x) − Lm −1 ( x) = am −1wm −1 ( x) ,
unde
m −1
w m − 1 ( x) =  ( x − x j ) .
j =0
Pentru x = xm obţinem f ( xm ) − Lm −1 ( xm ) = am −1wm −1 ( xm ) ;
comparând cu expresia lui f ( x) − P( x) , pentru n = m − 1 şi x = xm , deducem
a m −1 = [ x m , x0 , x1 ,..., x m −1 ] f = [ x0 , x1 ,..., x m ] f .
Se obţine polinomul lui Newton de interpolare:
P( x) = f ( x0 ) + [ x0 , x1 ] f ( x − x0 ) + ... + [ x0 , x1 ,..., x n ] f ( x − x0 )( x − x1 )...( x − xn −1 ) .
Calculul polinomului Newton de interpolare se exprimă prin:
Algoritmul 5.2.5.1.
Intrări: n = gradul polinomului de interpolare
a = abscisa în care se calculează polinomul
x = tabloul punctelor de interpolare
y = tabloul valorilor prin f a punctelor de interpolare
Ieşiri:  = valoarea polinomului de interpolare în a
{
apelează Dif._div. (n,x,y)
s  y0
P 1
pentru i  1 : n
{
P  P  (a − xi −1 )
s  s + P  yi
}
s
}.

- 73 -
5.2.6. Diferenţe finite
Nodurile de interpolare x0 , x1 , ..., xn sunt echidistante dacă
xi = x0 + ih , i = 0, 1, ..., n .
Numim diferenţă finită de ordinul întâi în x f ( x) = f ( x + h) − f ( x) .
Se verifică direct că  este un operator liniar, iar diferenţa finită de
ordinul k în x se defineşte prin relaţia
k f ( x) = (k −1 f ( x)) , k = 2, 3, ... .
Formula de calcul pentru k f (x ) este următoarea:
k
k f ( x) =  (−1) k − j C kj f ( x + jh) .
j =0
Pentru demonstraţie, procedăm prin inducţie. Avem:
k +1 f ( x) = k f ( x + h) − k f ( x)
k k
=  (−1) k − j C kj f ( x + h + jh) −  (−1) k − j C kj f ( x + jh).
j =0 j =0
Făcând în prima sumă schimbarea de indice j ' = j + 1 şi renotând apoi
j ' = j , obţinem:
k +1 k
k +1 f ( x) =  (−1) k − j '+1 C kj '−1 f ( x + j ' h) +  (−1) k − j +1 C kj f ( x + jh)
j ' =1 j =0
k +1− ( k +1)
k +1
= (−1) C k +1 f ( x + (k + 1)h) +
k
+  (−1) k +1− j (C kj −1 + C kj ) f ( x + jh) + (−1) k +1− 0 C k0+1 f ( x + 0  h)
j =1
k +1
=  (−1) k +1− j C kj +1 f ( x + jh).
j =0
Prin inducţie după k, se arată că are loc:
k f ( xi )
[ xi , xi +1 ,..., xi + k ] f = .
k! h k

5.2.7. Formule de interpolare pe noduri echidistante


Să presupunem că punctul x în care se face interpolarea pe nodurile
echidistante x0 , x1 , ..., xn este apropiat de x0 . Făcând transformarea
x = x0 + th în polinomul lui Newton de interpolare şi ţinând cont de legătura
dintre diferenţe finite şi divizate, obţinem după simplificări:
t (t − 1) 2 t (t − 1)...(t − n + 1) n
P( x0 + th) = f ( x0 ) + t f ( x0 ) +  f ( x0 ) + ... +  f ( x0 ).
2! n!

- 74 -
Aceasta se numeşte formula lui Newton progresivă pe noduri
echidistante.
Dacă x este apropiat de x n , făcând transformarea i' = n + 1 − i ,
i = 0, 1, ..., n , formula lui Newton devine:
P( x) = f ( xn ) + [ xn , xn −1 ] f ( x − xn ) + [ xn , xn −1 , xn − 2 ] f ( x − xn )( x − xn −1 ) +
+ ... + [ xn , xn −1 ,..., x0 ] f ( x − xn )( x − xn −1 )...( x − x1 ).
Făcând transformarea x = xn + th şi ţinând cont de legătura dintre
diferenţe finite şi divizate, obţinem după simplificări:
t (t + 1) 2
P( xn + th) = f ( xn ) + t f ( xn −1 ) +  f ( xn − 2 ) + ... +
2!
t (t + 1)...(t + n − 1) n
+  f ( x0 ),
n!
numit polinomul Newton regresiv pe noduri echidistante.
Formula lui Newton progresivă pe noduri echidistante conduce la
următorul algoritm.
Algoritmul 5.2.7.1.
Intrări: n + 1 = numărul de puncte
h = pasul
x = tabloul punctelor de interpolare
x0 + ah = abscisa în care se calculează polinomul
Ieşiri:  = valoarea polinomului de interpolare în x0 + ah
{
  f ( x0 )
pentru k  1 : n
{
P 1
pentru q  1 : k − 1
P  P  (a − q + 1) / q
dacă k este par atunci
d  f ( x0 )
altfel
d  − f ( x0 )
pentru j  1 : k
{
c 1
pentru q  1 : j
c  c  (k − q + 1) / q
dacă (k − j ) este par atunci d  d + c  f ( x0 + jh)

- 75 -
altfel
d  d − c  f ( x0 + jh)
}
}
}.

Exemplu. Se dă funcţia f prin următorul tabel:

xi 0 1 2 3
yi −4 1 10 29

Se cere polinomul Newton progresiv.


Rezolvare. Se întocmeşte un tabel cu diferenţe finite şi se obţine:
4 6
P(0 + t  1) = −4 + 5t + t (t − 1) + t (t − 1)(t − 2)  P( x) = t 3 − t 2 + 5t − 4 .
2! 3!

5.2.8. Interpolarea polinomială Hermite


Fie f : [a, b] → R şi x0 , x1 , ..., xn noduri de interpolare, toate distincte.
Se caută un polinom P astfel încât:
 P( xi ) = f ( xi ) = f i , i = 0, 1, ..., n .
 P' ( x ) = f ' ( x ) = f '
 i i i
Teorema 5.2.8.1. Există un polinom P şi numai unul singur de grad
cel mult 2n + 1 astfel încât:
 P( xi ) = f i pentru i = 0, 1, ..., n .
P' ( x ) = f '
 i i
Demonstraţie. Presupunem că există polinoamele P şi Q de grad cel
mult 2n + 1 astfel ca P( xi ) = Q( xi ) = f i şi P' ( xi ) = Q' ( xi ) = f 'i pentru
i = 0, 1, ..., n . Polinomul R = P − Q , care are de asemenea gradul cel mult
2n + 1, admite fiecare x i ca rădăcină dublă ( R( xi ) = R' ( xi ) = 0 ). Deoarece R
are cel puţin 2n + 2 rădăcini şi are gradul cel mult 2n + 1 urmează că R este
polinomul nul şi deci P = Q .
Să arătăm că polinomul
n n
P( x) =  hi ( x) f i +  k i ( x) f 'i ,
i =0 i =0
unde:
hi ( x) = [1 − 2( x − xi )'i ( xi )] 2i ( x)
k i ( x) = ( x − xi ) 2i ( x)
cu
- 76 -
n x− xj
 i ( xi ) = 
j = 0 xi − x j
j i
îndeplineşte condiţiile din enunţ.
Deoarece  i este un polinom de grad n, hi şi k i sunt polinoame de grad
2n + 1. Cum
 i ( x j ) =  ij ,

hi ( xi ) = [1 − 2( xi − xi )'i ( xi )] 2i ( xi ) = 1 ,
k i ( xi ) = ( xi − xi ) 2i ( xi ) = 0 ,
pentru j  i avem:
hi ( x j ) = [1 − 2( x j − xi )'i ( xi )] 2i ( x j ) = 0 , k i ( x j ) = ( x j − xi ) 2i ( x j ) = 0 ,
adică P( xk ) = f k .
h'i ( x) = −2'i ( xi ) 2i ( x) + [1 − 2( x − xi )'i ( xi )]2 i ( x)'i ( x) ,
k 'i ( x) =  2i ( x) + 2( x − xi ) i ( x)'i ( x) .
Deci:
h'i ( xi ) = −2'i ( xi ) + 2'i ( xi ) = 0 , k 'i ( xi ) =  2i ( xi ) = 1 ,
pentru j  i avem h'i ( x j ) = 0 , k 'i ( x j ) = 0 , deci P' ( xk ) = f ' k .
Pentru evaluarea erorii la interpolarea Hermite avem
Teorema 5.2.8.2.
Dacă f  C 2n + 2 [a, b] şi a  x0  x1  ...  xn  b atunci
( x − x0 ) 2 ( x − x1 ) 2 ...( x − xn ) 2 ( 2n + 2)
f ( x) − P( x) = f ( ) ,
(2n + 2)!
unde a  min( x, x0 )    max(x, xn )  b .
Demonstraţia este asemănătoare celei de la interpolare Lagrange.
Polinomul P având expresia
n n
P( x) =  hi ( x) f i +  k i ( x) f 'i
i =0 i =0
se numeşte polinomul lui Hermite construit pe baza condiţiilor de interpolare
 P( xi ) = f ( xi ) = f i , i = 0, 1, ..., n .
 P' ( x ) = f ' ( x ) = f '
 i i i
Pentru calculul valorii polinomului Hermite într-un punct a a fost definit
un O ( n 2 ) - algoritm.
Algoritmul 5.2.8.1.
Intrări: n + 1 = numărul nodurilor de interpolare
- 77 -
a = abscisa în care se calculează valoarea polinomului
x = tabloul celor n + 1 puncte de interpolare
y = tabloul valorilor funcţiei de interpolat în cele n+1 puncte
y _ d = tabloul valorilor derivatelor funcţiei de interpolat în cele
n+1 puncte
Ieşiri: h = valoarea polinomului Hermite în a
{
s 0
pentru i  0 : n
{
 1
_d 0
pentru j  0 : n
dacă j  i atunci
{
    (a − x j ) /( xi − x j )

 _ d   _ d + 1 /( xi − x j )

s  s + + (1 − 2  (a − xi )  l _ d )      yi + (a − xi )      y _ d i

}
h s
}.

5.2.9. Interpolarea prin funcţii spline


Studiul interpolării polinomiale ne conduce la două constatări. Prima
este costul calculelor care devine ridicat când gradul polinomului este mare, iar
a doua este că se „stăpâneşte” rău efectul de margine dacă intervalul de
interpolare este mare.
O altă aproximare este cea locală, adică făcând interpolarea pe
subintervale prin funcţii spline.
Fie x0 , x1 , ..., xn punctele de interpolare. Pe fiecare subinterval
[ xi , xi +1 ] se caută un polinom de interpolare S i astfel încât condiţiile de
interpolare să fie îndeplinite:
S i ( xi ) = f ( xi ) = f i pentru i = 0, 1, ..., n .
În plus se cere ca S i să fie de clasă C 2 . De asemenea, pentru
i = 1, 2, ..., n − 1:
S 'i −1 ( xi ) = S 'i ( xi ) , continuitatea primei derivate,

- 78 -
S"i −1 ( xi ) = S"i ( xi ) , continuitatea derivatei a doua.
Condiţiile de interpolare şi cele de clasă impun a căuta S i de gradul trei.
Exprimăm S i în funcţie de f "i şi f "i +1 (necunoscute încă).
Prin interpolare liniară avem, punând hi = xi +1 − xi :
x −x x − xi
S "i ( x) = f "i i +1 + f "i +1 .
hi hi
Integrând de două ori obţinem:
( xi + 1 − x ) 3 ( x − xi ) 3
S i ( x) = f "i + f "i +1 + ai ( xi +1 − x) + bi ( x − xi ) ,
6hi 6hi
unde a i şi bi sunt constante de integrare, care se pot calcula ţinând cont de
S i ( xi ) = f i şi Si ( xi +1 ) = f i +1 , adică
hi2 hi2
f "i + ai hi = f i şi f "i +1 + bi hi = f i +1 ,
6 6
de unde
f h f h
ai = i − f "i i şi bi = i +1 − f "i +1 i .
hi 6 hi 6

Înlocuind a i şi bi prin expresiile lor obţinem:

 ( x − x) 3 hi   ( x − xi ) 3 hi 
S i ( x) = f "i  i +1 − ( xi +1 − x)  + f "i +1  − ( x − xi )  +
 6hi 6   6hi 6 
   
fi f i +1
+ ( xi +1 − x) + ( x − xi ).
hi hi

Punem condiţia ca derivata să fie o funcţie continuă pe intervalul dat.


Avem
 − ( xi +1 − x) 2 hi   ( x − xi ) 2 hi  f i f i +1
S 'i ( x) = f "i  +  + f "i +1  − − +
 2 h 6   2 h 6  hi hi
 i   i

S 'i ( x i ) = S 'i −1 ( x i ) ,
echivalent cu:
hi h f f h h f f
− f "i − f "i +1 i − i + i +1 = f "i −1 i −1 + f "i i −1 − i −1 + i ,
3 6 hi hi 6 3 hi −1 hi −1

- 79 -
sau încă pentru i = 1, 2, ..., n − 1:

 f − f i f i − f i −1 
hi f "i +1 +2(hi + hi −1 ) f "i + hi −1 f "i −1 = 6 i +1 − .
 hi hi −1 

Am obţinut un sistem de n − 1 ecuaţii liniare cu n + 1 necunoscute.


Precizând valorile lui f "0 şi f "n se poate rezolva sistemul liniar tridiagonal.
Exemplu. Pe intervalul [−5,5] fie funcţiile f şi g definite prin
1
f ( x) = e − x şi g ( x) =
2
. Să se facă interpolarea prin funcţii spline cu 3, 5
2
x +1
şi respectiv 9 puncte echidistante şi să se dea valorile derivatelor la extremităţi.
Rezolvare. Se constată că pentru 9 puncte de interpolare avem o foarte
bună aproximare şi nici un efect de margine.

5.3. Aproximarea în sensul celor mai mici pătrate


5.3.1. Problema fundamentală a aproximării liniare
Exemplu. Să aproximăm pe f (x) pe intervalul [a, b] printr-un
polinom P(x) .
Se pune problema să se găsească P astfel ca:
1
2
a)  ( f ( x) − P( x)) dx să fie minimă;
0
1 1 d
2
b)  ( f ( x) − P( x)) dx +  ( f ( x) − P( x)) 2 dx să fie minimă;
0 0 dx
c) max | f ( x) − P( x) | să fie minimă.
0  x 1
Este necesară o măsură numerică a „distanţei” dintre funcţia de aproximat
şi polinomul aproximant într-un spaţiu vectorial normat.
Fie X un spaţiu vectorial normat peste corpul K (adesea K = R ). Notăm
prin ( , ) produsul scalar şi prin  norma.
Fie x1 , x 2 ,..., x n , n elemente din X liniar independente. Trebuie să
aproximăm y printr-o combinaţie liniară de x1 , x 2 ,..., x n , adică, să găsim
a1 , a 2 ,..., a n cu ai  K , astfel ca y − (a1 x1 + a 2 x 2 + ... + a n xn ) să fie cât mai
mic posibil.
Definiţia 5.3.1.1. Cea mai bună aproximare a lui y printr-o
combinaţie liniară de ( xi ) i =1 n este un element a1x1 + a2 x2 + ... + an xn astfel
ca:
y − (a1 x1 + a 2 x 2 + ... + a n x n )  y − (b1 x1 + b2 x 2 + ... + bn x n ) , bi  K .
Cea mai bună aproximare constă în a găsi minimul normei erorii.
- 80 -
Drept norme se consideră:
1) dacă X = R atunci x = x (modulul);
2) dacă X = Rn atunci x = ( x12 + x 22 + ... + x n2 )1 / 2 (norma
euclidiană);
3) dacă X = C (a, b) (= spaţiul vectorial al funcţiilor continue pe [a, b] )
atunci:
a) f = max f ( x) (norma convergenţei uniforme);
a  x b
1/ 2
b 
b) f =   | f ( x) | 2 dx (norma convergenţei pătratice).
a 

5.3.2. Teoreme fundamentale


Teorema 5.3.2.1. Fie n elemente liniar independente din
X : x1, x2 , ..., xn . Pentru orice y  X , problema celei mai bune aproximări are
o soluţie.
Verificare. Trebuie arătat că funcţia norma erorii
e(a1 , a 2 ,..., a n ) = y − (a1 x1 + a 2 x 2 + ... + a n x n )

are un minim. Pentru aceasta, se arată că această funcţie este continuă şi că este
suficient a limita mulţimea de variaţie a lui a1 , a 2 ,..., a n la o mulţime mărginită
şi închisă (exteriorul acestei mulţimi nu conţine minimul) pentru a aplica
teorema: orice funcţie continuă pe o mulţime închisă şi mărginită din R n îşi
atinge minimul său.
Corolarul 5.3.2.1. Fie f  C(a, b) , n întreg fixat.
Problema: să se găsească (ai ) astfel ca:

min max | f ( x) − (a0 + a1 x + ... + a n x n ) |


ai a  x  b

are o soluţie. Această soluţie este unică.


Aceasta se numeşte aproximarea Tchebycheff de grad n a lui f.
Corolar 5.3.2.2. Fie f  C(a, b) , n întreg fixat.
Problema: să se găsească (ai ) astfel ca:
b
min  | f ( x) − (a0 + a1 x + ... + a n x n ) | dx
ai a
are o soluţie. Această soluţie este unică.
Aceasta se numeşte aproximarea continuă în sensul celor mai mici
pătrate.
- 81 -
Corolarul 5.3.2.3. Date fiind x0 , x1 ,..., x k , k + 1 puncte distincte cu

k  n , problema: să se găsească (ai ) astfel ca:


n
min  ( f ( xi ) − (a0 + a1 xi + a 2 xi2 + ... + a n xin )) 2
ai i = 0

are o soluţie.
Aceasta se numeşte aproximarea discretă în sensul celor mai mici pătrate.

5.3.3. Aproximarea discretă în sensul celor mai mici pătrate


a) Cazul general
Să se determine P : R → R unde
P( x) = a0u0 ( x) + a1u1 ( x) + ... + an un ( x) ,
ceea ce revine la a determine (n + 1) numere (ai ) .
Cele (n + 1) funcţii liniar independente (u i ) sunt date. Se pot alege,
u k ( x) = x k ( k = 0, 1, ..., n ) sau funcţiile trigonometrice sau cele exponenţiale.
Se cunosc (k + 1) perechi ( xi , y i ) ( i = 0, 1, ..., k ) cu k  n , unde x i sunt
distincte. Fie ri = yi − P ( xi ) , i = 0, 1, ..., k .
k
Să se determine a = (ai )  R n +1 astfel ca R(a) =  ri2 să fie minim.
i =0
k +1
Considerând norma euclidiană în R , avem R(a) =|| r 2 || , unde
r = (ri ) 0i  k  R k +1 . Luăm: y = ( y i ) 0i  k  R k +1 . U = (u ij ) = (u i ( x j )) , matricea
rectangulară cu (k + 1) linii şi (n + 1) coloane.
Avem || r ||2 = (r, r ) = ( y − Ua, y − Ua) .
Minimul lui R este caracterizat prin R(a)  R(a + b) ,   R − {0} ,
b  R n +1 , adică:
( y − Ua, y − Ua)  ( y − U (a + b), y − U (a + b))
( y − Ua, y − Ua)  ( y − Ua − Ub, y − Ua − Ub)
0  −2( y − Ua,Ub) +  2 (Ub,Ub).
Pentru   0 , împărţind prin 2 şi făcând  să tindă spre zero obţinem
0  −( y − Ua,Ub) . pentru   0 , împărţind prin 2 şi făcând  să tindă spre
zero obţinem 0  −( y − Ua,Ub) . Cele două inegalităţi dau ( y − Ua,Ub) = 0 .

- 82 -
Notând cu U T transpusa lui U obţinem (U T y − U T Ua, b) = 0 ,
b  R n +1 . Deci valoarea minimă a funcţiei R verifică sistemul liniar
U T Ua = U T y , unde U T U este o matrice pătratică de ordin n + 1 .
Acest sistem se numeşte sistemul ecuaţiilor normale.
b) Cazul liniar
În acest caz particular, se caută polinomul de grad unu, P( x) = a0 + a1 x
k k
2 2
astfel ca  ( yi − a1 xi − a0 )   ( yi − b1 xi − b0 ) , (b0 , b1 )  R 2 . Fie
i =0 i =0
k +1 k +1
X = ( xi )  R şi Y = ( yi )  R . Sistemul de ecuaţii normale devine:
1 x0   y0 
1 x1  a y 
1 1 1  1    1 1 1  1  1 
x x2  xk 1 x2  0  =  x x2  xk  y 2  ,
 0 x1
  1  
a 0 x1
   
1 x k  y 
  k

 k   k 
 k + 1  xi    yi 
adică  i = 0  a0  =  i = 0 . x=
1 k
 xi ,
 k a   k 
Notând
k
2  1 k + 1 i =0
  xi  x i    xi y i 
 i =0 i =0   i =0 

1 k
y=  yi , deoarece ( xi − x )( yi − y ) = xi yi − xyi − yxi + xy , avem
k + 1 i =0

1 k 1 k x k y k
 ( xi − x )( yi − y ) =  xi y i −  yi −  xi + x y , care, în
k + 1 i =0 k + 1 i =0 k + 1 i =0 k + 1 i =0
statistică, se numeşte covarianţa vectorilor X şi Y şi se notează
1 k
( X , Y ) =  ( xi − x )( yi − y ) .
k + 1 i =0
1 k
Dacă X = Y , obţinem ( X 2 ) = 2
 ( xi − x ) .
k + 1 i =0
( X , Y )
Rezolvarea sistemului dă a1 = , a0 = y − a1 x .
( X 2 )

- 83 -
5.4. Exerciţii
1) Să se determine polinomul de interpolare Lagrange care aproximează
funcţia f, cu valorile din tabelul alăturat:
xi 0 1 2
f i 0 1 27
2) Să se calculeze, folosind polinomul de interpolare Lagrange, funcţia
definită de următorul tabel:
xi 0 1,2 2,5 4,0 5,1 6,0 6,5 7,0
f i 3,00 6,84 14,25 27 39,21 51,00 58,25 66,00
Se va evalua f (2,00) .
3) Pentru x0 = 1 , h = 1, să se determine diferenţele finite pentru
f ( x) = x 4 − x 2 + 1 .
4) Fie funcţia f : R → R definită prin f ( x) = 1 .
1+ x2
a) Construiţi polinomul P de interpolare Lagrange pe punctele 0, 1, 3, 5.
b) Calculaţi P(4) şi comparaţi cu f (4) .
c) Calculaţi polinomul Q al lui Hermite astfel ca:
Q(0) = f (0) , Q' (0) = f ' (0) , Q(5) = f (5) , Q' (5) = f ' (5) .
Comparaţi f (4) cu Q(4) . Care este concluzia?
5) Să se determine valorile polinoamelor de interpolare: Lagrange, Aitken,
Newton şi Hermite ce aproximează următoarele funcţii pe nodurile de interpolare
corespunzătoare în punctele precizate şi să se calculeze diferenţele finite şi divizate:
a) f ( x) = x 3 şi nodurile: 0; 2; 4; 6; 8 în 0,1;
b) f ( x) = x 3 − 2 x 2 + x + 3 şi nodurile 1; 2; 3; 4 în 1,1;
x4
c) f ( x) = şi nodurile 2; 3; 4; 5; 6 în 4,5.
ln x
De asemenea, să se scrie programele în C pentru metodele mai sus
menţionate.
Discuţii finale:
Să se discute despre interpolarea polinomială Lagrange, algoritmul Aitken,
diferenţe divizate, formula lui Newton de interpolare, diferenţe finite, formule
de interpolare pe noduri echidistante, interpolarea polinomială Hermite,
aproximarea discretă în sensul celor mai mici pătrate.
Tema propusă:
Să se întocmească o lucrare cu tema interpolarea polinomială Lagrange,
algoritmul Aitken, diferenţe divizate, formula lui Newton de interpolare,
diferenţe finite, formule de interpolare pe noduri echidistante, interpolarea
polinomială Hermite, aproximarea discretă în sensul celor mai mici pătrate.
- 84 -
Capitolul 6
Rezolvarea ecuaţiilor diferenţiale ordinare de ordinul I

Obiectivul capitolului
Însuşirea unor noţiuni referitoare la metoda Euler şi la metode Runge – Kutta.

Cuvinte cheie: metode de rezolvare a ecuaţiilor diferenţiale ordinare de


ordinul I.

6.1. Introducere
Ecuaţiile diferenţiale numerice ordinare sunt o parte a analizei numerice
care studiază soluţia numerică a ecuaţiilor diferenţiale ordinare (ODE). Această
parte este cunoscută de asemenea sub denumirea de integrare numerică, dar unii
cercetători rezervă acest termen pentru calculul integralelor. Multe ecuaţii
diferenţiale nu pot fi rezolvate analitic, caz în care trebuie să ne mulţumim cu o
aproximaţie a soluţiei. Algoritmii studiaţi aici pot fi folosiţi pentru a calcula
astfel de aproximaţie. O metodă alternativă este să folosim tehnicile din calcul
pentru a obţine o dezvoltare în serie a soluţiei. Ecuaţiile diferenţiale ordinare
apar în multe discipline ştiinţifice, de exemplu în mecanică, chimie, biologie şi
economie. În plus, unele metode în numerica ecuaţiilor diferenţiale ordinare
transformă ecuaţia cu derivate parţiale într-o ecuaţie diferenţială ordinară, care
trebuie rezolvată.
Problema
Vrem să aproximăm soluţia ecuaţiei diferenţiale:
y '(t ) = f (t , y(t )), y(t0 ) = y0 (1)
unde f este o funcţie care duce [t0,∞) × Rd în Rd, şi condiţia iniţială y0  Rd este
un vector dat.
Formularea de mai sus se numeşte problema valorii iniţiale (IVP).
Teorema Picard – Lindelöf afirmă că există o soluţie unică, dacă f este Lipschitz
continuă. În contrast, problemele valorii mărginite (BVP) menţionează soluţia y
în mai mult de un punct. Diferite metode trebuie să fie folosite pentru a rezolva
BVP, de exemplu shooting method, multiple shooting sau metode globale
metoda diferenţelor finite sau metode sintagmă.
Ne limităm la ecuaţii diferenţiale de ordinul I (adică, în ecuaţie apare
doar prima derivată a lui y). Oricât, o ecuaţie de ordin superior poate fi uşor
convertită într-o ecuaţie de ordinul I introducând noi variabile. De exemplu,
ecuaţia de ordinul II y " = − y poate fi rescrisă ca ecuaţiile de ordinul I:
y ' = z şi z ' = − y .

- 85 -
6.2. Metode
Prezentăm două metode elementare.

6.2.1. Metoda Euler


Plecând de la ecuaţia diferenţială (1), înlocuim derivata y ' prin diferenţa
finită
y (t + h) − y (t )
y '(t )  (2)
h
care conduce la formula următoare:
y(t + h)  y(t ) + hf (t , y(t )) (3)
Această formulă este de obicei aplicată în felul următor.
Alegem un pas h şi construim şirul
t0, t1 = t0 + h, t2 = t0 + 2h, … .
Notăm prin yn o estimare numerică a soluţiei exacte y(tn). motivaţi de (3),
calculăm aceste estimări prin următoarea schemă recursivă:
yn +1 = yn + hf (tn , yn ) (4)
Aceasta este metoda Euler (sau metoda Euler forward, în contrast cu
metoda Euler backward, care va fi descrisă în continuare). Metoda este numită
după Leonhard Euler care a descris-o în 1768.
Metoda Euler este un exemplu de metodă explicită. Aceasta înseamnă că
noua valoare yn +1 este definită în funcţie de ceva ce deja se cunoaşte, precum
yn .

6.2.2. Metoda Euler backward


Dacă, în locul lui (2), folosim aproximarea:
y (t ) − y (t − h)
y '(t )  (5)
h
obţinem metoda Euler backward:
yn +1 = yn + hf (tn +1, yn +! ) (6)
Metoda Euler backward este o metodă implicită, adică trebuie să
rezolvăm o ecuaţie pentru a găsi yn +1 .
Adesea folosim o iteraţie de punct fix sau metoda Newton – Raphson (sau
modificată) pentru a obţine asta.
Bineînţeles, ia timp să rezolvăm această ecuaţie; acest cost trebuie luat în
considerare când selectăm metoda pe care o folosim.
Avantajul metodelor implicite precum (6) este că ele sunt de obicei mai
stabile pentru a rezolva o ecuaţie mare, adică poate fi folosit un pas h mai mare.

- 86 -
6.3. Generalizări
Metoda Euler este adesea nu destul de precisă. Mai precis, ea are doar
ordinul 1, acest lucru făcându-i pe matematicieni să caute metode de ordin mai
mare.
O posibilitate este folosirea nu doar a valorii anterior calculată yn pentru
a determina yn +1 , dar şi determinarea faptului ca soluţia să depindă de mai
multe valori precedente. Aceasta conduce la aşa – numita metoda multi – pas.
Probabil cea mai simplă este metoda Leapfrog care este de ordinul 2 şi, vorbind
grosolan, se bazează pe două valori de timp.
Aproape toate metodele practice multi – pas sunt din familia metodelor
multi – pas liniare, care au forma:
 k yn + k +  k −1 yn + k −1 + + 0 yn =
h k f (tn + k , yn + k ) + k −1 f (tn + k −1 , yn + k −1 ) + + 0 f (tn , yn ) .
O altă posibilitate este să folosim mai multe puncte în intervalul [tn,tn+1].
Aceasta conduce la familia metodelor Runge – Kutta. Ambele idei pot fi
combinate, metodele rezultante fiind numite metode liniare generale.
6.3.1. Metode Runge – Kutta
În analiza numerică, metodele Runge – Kutta sunt o familie importantă de
metode iterative implicite şi explicite pentru aproximarea soluţiilor unor ecuaţii
diferenţiale ordinare. Aceste tehnici au fost dezvoltate în jurul anului 1900 de
matematicienii germani C. Runge şi M. W. Kutta.
6.3.1.1. Metoda clasică Runge – Kutta de ordin 4
Fie problema y ' = f (t , y), y(t0 ) = y0 . Metoda clasică Runge – Kutta de
ordin 4 (RK4) pentru această problemă este dată de ecuaţiile următoare:
h
yn +1 = yn + (k1 + 2k2 + 2k3 + k4 )
6
tn +1 = tn + h
unde yn +1 este aproximarea RK4 pentru y(tn +1 ) şi
k1 = f (tn , yn )
 h h 
k2 = f  tn + , yn + k1 
 2 2 
 h h 
k3 = f  tn + , yn + k2 
 2 2 
k4 = f ( tn + h, yn + hk3 )

- 87 -
Astfel, valoarea următoare ( yn +1 ) este determinată de valoarea curentă
( yn ) plus produsul dintre mărimea intervalului (h) şi o pantă estimată. Panta
este o medie ponderată a pantelor:
• k1 este panta de la începutul intervalului;
• k 2 este panta de la mijlocul intervalului, folosind panta k1
h
pentru a determina valoarea lui y în punctul tn + folosind metoda lui Euler;
2
• 3 este tot panta de la mijlocul intervalului, dar folosind panta
k
k 2 pentru a determina valoarea lui y;
• k1 este panta de la sfârşitul intervalului, cu valoarea lui y
determinată folosind k3 .
Atunci,
k + 2k2 + 2k3 + k4
panta = 1 .
6
Metoda RK4 este o metodă de ordin 4, adică eroarea pe pas este de
ordinul lui h5 , în timp ce eroarea totală acumulată are ordinul h 4 .

6.3.1.2. Metode Runge – Kutta explicite


Familia metodelor Runge – Kutta explicite este o generalizare a metodei
RK4. Ea este dată de:
s
yn +1 = yn + h  bi ki ,
i =1
unde
k1 = f (tn , yn )
k2 = f ( tn + c2 h, yn + a21hk1 )
k3 = f ( tn + c3 h, yn + a31hk1 + a32 hk2 )

( )
ks = f tn + cs h, ys + as1hk1 + as 2 hk2 + ... + as , s −1hk s −1 .
Metoda Runge – Kutta este consistentă dacă
i −1
 aij = ci pentru i = 2,..., s .
j =1

6.3.1.3. Metode Runge – Kutta ajustative


Metodele ajustative produc o estimare a erorii de trunchiere locale a
unui pas simplu Runge – Kutta. Acest lucru se produce având două metode, una
de ordin p şi una de ordin p − 1 .
- 88 -
Pasul cu ordinul cel mai mic este dat de
s
yn +1 = yn + h  bi ki ,
i =1
unde ki sunt aceeaşi pentru metoda de ordinul cel mai înalt. Atunci, eroarea
este:
en +1 = yn +1 − yn +1
s
= h  (bi − bi )ki ,
i =1
p
care este O ( h ) .

6.3.1.4. Metode Runge – Kutta implicite


Metodelor implicite sunt mai generale decât cele explicite. Soluţia
aproximativă a problemei valorii iniţiale reflectă numărul mai mare de
coeficienţi:
s
yn +1 = yn + h  bi ki ,
i =1
unde
 s 
ki = f  tn + ci h, yn + h  aij k j 
 j =1

 .
Cel mai simplu exemplu de metodă Runge – Kutta implicită este metoda
Euler backward:
yn +1 = yn + hf (tn + h, yn +1 ) .

6.3.2. Caracteristici
O bună implementare a uneia din aceste metode de rezolvare a ecuaţiilor
diferenţiale ordinare este necesară mai mult decât formula time – stepping.
Adesea este insuficient să folosim acelaşi pas tot timpul, deci au fost dezvoltate
metodele care variază pasul.
De obicei, pasul este ales astfel încât eroarea (locală) pe pas să fie mai
mică decât un nivel de toleranţă. Aceasta înseamnă că metodele trebuie de
asemenea să calculeze un indicator al erorii, o estimare a erorii locale.
O extindere a acestei idei este să alegem dinamic între diferite metode de
diferite ordine (aceasta se numeşte metoda variaţiei ordinului). Metodele de
extrapolare sunt des folosite pentru a construi diferite metode de diferite ordine.
Alte caracteristici sunt:
• ieşirea densă: aproximări numerice mici pentru întreg intervalul de
integrare, şi nu doar în punctele t0, t1, t2, ...

- 89 -
• locaţia evenimentului: găsirea timpul în care, o funcţie particulară se
anulează.
• ajutor pentru calcul paralel.
• când sunt folosite pentru integrare în raport cu timpul, reversibilitatea
timpului.

6.4. Metode alternative


Multe metode nu cad în contextul discutat aici. Unele clase de metode
alternative sunt:
• metodele multi – derivate, care folosesc nu numai funcţia f ci şi
derivatele ei. Această clasă include metodele Hermite – Obreschkoff şi
metodele Fehlberg, precum şi metode precum metoda Parker –
Sochacki, care calculează recursiv coeficienţii seriei Taylor a soluţiei y.
• metode pentru ODE de ordinul 2. Spunem că toate ODE de ordin
superior pot fi transformate în ODE de primul ordin de tipul (1). În timp
ce aceasta este cu siguranţă adevărat, s-ar putea să nu fie cea mai bună
cale de procedat. În particular, metodele Nyström lucrează direct cu
ecuaţii de ordinul doi.
• metode geometrice intrinseci sunt special destinate pentru clase speciale
de ODE (de exemplu, integratorii simplectici pentru soluţia ecuaţiilor
hamiltoniene). Ele ţin cont că soluţia numerică respectă geometria
acestor clase.
Analiza
Analiza numerică nu este doar schiţa pentru metodele numerice, dar şi
pentru analiza lor. Cele trei concepte centrale în această analiză sunt:
convergenţa, ordinul şi stabilitatea.
Convergenţa
O metodă numerică este convergentă dacă soluţia numerică se apropie de
soluţia exactă când pasul h tinde către 0. mai precis, cerem ca pentru fiecare
ecuaţie diferenţială ordinară (1) cu o funcţie Lipschitz f şi pentru orice t* > 0,
lim max yn, h − y(tn ) = 0 .
h →0  t 
n = 0,  
 h 
Toate metodele menţionate mai sus sunt convergente. De fapt,
convergenţa este o condiţie sine qua non pentru orice schemă numerică.
Consistenţa şi ordinul
Presupunem că metoda numerică este:
yn + k = (tn + k ; yn , yn +1, , yn + k −1; h) .
Eroarea locală a metodei este eroarea făcută de un pas al metodei. Adică,
ea este diferenţa dintre rezultatul dat de metodă, presupunând că nu a fost făcută
nici o eroare în paşii anteriori, şi soluţia exactă:

- 90 -
hn + k =  (tn + k ; y (tn ), y (tn +1 ), , y (tn + k −1 ); h) − y (tn + k ) .
hn + k
Metoda este consistentă dacă lim = 0.
h →0 h
Metoda este de ordinul p dacă hn + k = O(h p +1 ) pentru h → 0.
Deci, o metodă este consistentă dacă are un ordin mai mare decât 0.
Metoda Euler (forward) (4) şi metoda Euler backward (6) introduse mai sus au
amândouă ordinul 1, deci sunt consistente. Majoritatea metodelor folosite în
practică ating un ordin mare. Consistenţa este o condiţie necesară pentru
convergenţă, dar nu şi suficientă; pentru ca o metodă să fie convergentă trebuie
să fie atât consistentă cât şi stabilă în zero.
Un concept asociat este eroarea globală, adică eroarea făcută în toţi paşii
pe care trebuie să-i atingem la timpul fixat t. explicit, eroarea globală la timpul t
t − t0
este y N − y (t ) unde N = . Eroarea globală a unei metode cu un pas de
h
ordinul p este O ( h p ) ; în particular, o astfel de metodă este convergentă.
Această afirmaţie nu este neapărat adevărat pentru metodele multi – pas.
Stabilitatea şi stiffness
Pentru unele ecuaţii diferenţiale, aplicarea unor metode standard – precum
metoda Euler, metodele explicite Runge – Kutta sau metodele multi – pas (de
exemplu, metodele Adams – Bashforth) – expun instabilitatea în soluţie, totuşi
alte metode pot conduce la soluţii stabile. Acest “comportament dificil” în
ecuaţie (care nu trebuie neapărat să fie dificilă) este descris ca rigiditate, şi
adesea este cauzat la prezenţa unor scale de timp diferite în problema de bază.
Problemele rigide sunt omniprezente în cinematica chimică, teoria controlului,
mecanica solidului, predicţia vremii, biologie şi electronică.

Discuţii finale:
Să se discute despre metoda Euler şi metode Runge – Kutta.

Tema propusă:
Să se întocmească o lucrare cu tema metoda Euler, metode Runge – Kutta.

- 91 -
CAPITOLUL 7
Integrarea numerică

Obiectivul capitolului
Însuşirea unor noţiuni referitoare la formulele Newton – Cotes, metoda
dreptunghiurilor, regula trapezului, metoda Romberg, regula Simpson,
cvadratura gaussiană.

Cuvinte cheie: integrarea numerică.

7.1. Introducere
În analiza numerică, integrarea numerică constituie o familie vastă de
algoritmi pentru calculul valorii numerice a unei integrale definite, şi prin
dezvoltare, termenul este de asemenea numit uneori folosit să descrie soluţia
numerică a unei ecuaţii diferenţiale. Termenul cvadratură numerică (pe scurt,
adesea, cvadratură) este mai mult sau mai puţin sinonim pentru integrarea
numerică, special ca aplicat integralelor unu – dimensionale. Integrarea 2 –
dimensională şi mai mare este uneori descrisă ca cubatură, deşi sensul
cvadraturii este înţeles la fel de bine şi pentru integrări de dimensiune mai mare.
Problema fundamentală considerată de integrarea numerică este să
calculăm o soluţie aproximativă a unei integrale definite:
b
 f ( x)dx .
a
Dacă f ( x) este o funcţie netedă peste o un număr mic de dimensiuni şi
limitele de integrare sunt mărginite, atunci există multe metode de aproximare a
integralei cu o precizie arbitrară.

Legătura cu ecuaţiile diferenţiale


b
Problema evaluării integralei  f ( x)dx poate fi redusă la problema valorii
a
iniţiale pentru o ecuaţie diferenţială ordinară. Dacă integrala de mai sus se
notează cu I (b) , atunci funcţia I satisface
I '( x) = f ( x), I (a) = 0 .
Metode dezvoltate pentru ecuaţii diferenţiale ordinare, precum metodele
Runge – Kutta, pot fi aplicate pentru problema formulată şi astfel pot fi folosite
pentru a evalua integrala.

- 92 -
Această ecuaţie diferenţială are o formă specială: membrul drept conţine
doar variabila dependentă (x) şi nu variabila independentă (I). Acest fapt
sugerează că pot fi dezvoltate metode specifice pentru evaluarea unei integrale,
şi că aceste metode pot lucra mai bine decât metodele generale pentru problema
valorii iniţiale pentru ecuaţii diferenţiale.
Motive pentru integrarea numerică
Există câteva motive pentru a face integrarea numerică. Integrantul f ( x)
poate fi cunoscut doar în anumite puncte, aşa cum este obţinut prin prelevare.
Unele sisteme încastrate şi alte aplicaţii pe calculatoare pot avea nevoie de
integrare numerică pentru acest motiv. Poate fi ştiută o formulă pentru
integrant, dar este dificil sau imposibil de găsit o antiderivată care este o funcţie
2
elementară. Un exemplu de asemenea integrant este f ( x) = e − x , antiderivata
căruia nu poate fi scrisă într-o formă elementară. Poate fi găsită o antiderivată
simbolică, dar este mai uşor de calculat o aproximare numerică decât de
calculat antiderivata. Acesta poate fi cazul dacă antiderivata este dată ca o serie
infinită sau ca product, sau dacă evaluarea ei necesită o funcţie specială ca nu
este disponibilă.
Metode pentru integrale de dimensiune unu
Metodele de integrare numerică pot fi descrise ca, combinând evaluările
integrantului pentru a obţine o aproximare a integralei. O importantă parte a
analizei oricărei metodei de integrare numerică este studiul comportării erorii
aproximării ca o funcţie de numărul de evaluări ale integrantului. O metodă care
produce o eroare mică pentru un număr mic de evaluări este de obicei
considerată ca superioară. Reducând numărul de evaluări ale integrantului
reducem numărul de operaţii aritmetice implicate, şi de aceea, reduce eroarea
totală rotunjită. De asemenea, fiecare evaluare ia timp, şi integrantul poate fi
complicat.
Poate fi făcută integrarea numerică brută dacă integrantul se comportă
rezonabil (adică, este continuu) prin evaluarea integrantului cu creşteri foarte
mici.
Regulile cvadraturii bazate pe interpolarea funcţiilor
O clasă largă de reguli de integrare poate fi obţinută prin construcţia
funcţiilor de interpolare car sunt uşor de integrat. De obicei aceste funcţii de
interpolare sunt polinoame.

Exemplificare pentru regula dreptunghiului

- 93 -
Cea mai simplă metodă de acest tip este să punem ca funcţie de
interpolare o funcţie constantă (un polinom de grad 0) care trece prin punctul
 a + b  a + b 
 ,f   . Această metodă se numeşte regula mijlocului sau regula
 2  2 
dreptunghiului.
b a+b
 f ( x)dx  (b − a ) f  .
a  2 

.
Exemplificare pentru regula trapezului

Funcţia de interpolare poate fi o funcţie afină (un polinom de grad 1) care


trece prin punctele (a, f (a)) şi (b, f (b)) . Această metodă se numeşte regula
trapezului.
b f (a) + f (b)
 f ( x)dx  (b − a)
a 2

Exemplificare pentru regula Simpson

Pentru oricare din aceste trei reguli, putem face o aproximare mai precisă
împărţind intervalul [a, b] într-un număr de n subintervale, calculând o
aproximare pe fiecare subinterval, apoi adunând toate rezultatele. Acest mod se
numeşte regulă compusă, regulă extinsă sau regulă iterativă. De exemplu,
regula trapezului compusă poate fi exprimată ca:
b b − a  f (a) + f (b) n −1  b − a 
 f ( x)dx   +  f a + k   (*)
a n  2 k =1  n 
unde subintervalele au forma
 kh, (k + 1)h  ,
b−a
cu h = şi k = 0, n − 1 .
n

- 94 -
Interpolare cu polinoame evaluate în puncte echidistante în [a, b] produce
formulele Newton – Cotes, care are ca exemple regula dreptunghiului şi regula
trapezului. Regula Simpson, care se bazează pe un polinom de grad 2, este de
asemenea o formulă Newton – Cotes.
Regula corespunzătoare cu fiecare interval subdivizat include toate
punctele curente, deci valorile acelor integranţi pot fi refolosite. Dacă permitem
intervalelor dintre punctele de interpolare să varieze, găsim un alt grup de
formule de cvadratură, precum formulele de cvadratură gaussiană. O regulă de
cvadratură gaussiană este mai precisă decât o regulă Newton – Cotes care cere
acelaşi număr de evaluări ale funcţiilor, dacă integrantul este neted (adică, dacă
el are multe derivate). Alte metode de cvadratură cu variaţia intervalelor include
metoda cvadratura Clenshaw – Curtis şi metoda cvadraturii Fejér.
Algoritmi ajustaţi
Dacă f ( x) nu are multe derivate în toate punctele, sau dacă derivatele
devin mari, atunci cvadratura gaussiană este adesea insuficientă. În acest caz,
un algoritm similar cu următorul va executa mai bine:
// Acest algoritm calculează integrala definită a unei funcţii de la 0 la 1,
ajustativ,
// alegând cei mai mici paşi în vecinătatea punctelor problematice.
// Fie initial_h mărimea pasului iniţial.
x:=0
h:=initial_h
accumulator:=0
WHILE x<1.0 DO
IF x+h>1.0 THEN
h=1.0-x
END IF
IF error in quadrature of f(x) over [x,x+h] is too large THEN
Make h smaller
ELSE
accumulator:=accumulator + quadrature of f over [x,x+h]
x:=x+h
IF error in quadrature of f(x) over [x,x+h] is very small THEN
Make h larger
END IF
END IF
END WHILE
RETURN accumulator
Unele detalii ale algoritmului cer o gândire atentă. Pentru multe cazuri, nu
este evidentă estimarea erorii dintr-o cvadratură pe un interval pentru o funcţie
f ( x) . O soluţie populară este folosirea a două reguli diferite de cvadratură şi
folosirea diferenţei lor ca o estimare a erorii din cvadratură. Cealaltă problemă

- 95 -
este să decidem ce semnifică “prea mare” sau “foarte mic”. Un criteriu local
pentru “prea mare” este că eroarea cvadraturii trebuie să nu fie mai mare decât
t  h unde t, un număr real, este toleranţa pe care dorim să o fixăm pentru
eroarea globală. Apoi, din nou, dacă h este deja mic, s-ar putea să nu merite să
facem mai mic chiar dacă eroarea cvadraturii este aparent mare. Un criteriu
global este ca suma erorilor pe toate intervalele trebuie să fie mai mică decât t.
Acest tip de analiză a erorii se numeşte, de obicei, “a posteriori” din moment ce
noi calculăm eroarea după ce am calculat aproximarea.
Metode de extrapolare
Precizia unei reguli de cvadratură de tip Newton – Cotes este, în general,
o funcţie de numărul punctelor de evaluare. Rezultatul este mai precis când
numărul punctelor de evaluare creşte, sau, echivalent, când mărimea pasului
dintre puncte scade. Este natural să ne întrebăm ce va fi rezultatul dacă
permitem pasului să se apropie de zero. La această întrebare se poate răspunde
extrapolând rezultatul de la două sau mai multe mărimi diferite de zero (de
exemplu, extrapolarea Richardson). Funcţia de extrapolare poate fi o funcţie
polinomială sau una raţională.
Estimarea (a priori) conservativă a erorii
Fie f cu prima derivată mărginită pe [a, b] . Teorema de medie pentru f,
unde x < b, ne dă:
( x − a) f '( yx ) = f ( x) − f (a)
pentru un y x din [a, x] depinzând de x. Dacă integrăm în x de la a la b în ambii
membri şi luăm valoarea absolută, obţinem:
b b
 f ( x)dx − (b − a) f (a) =  ( x − a) f '( y x )dx
a a
Putem aproxima, în plus, integrala din membrul drept introducând
valoarea absolută în integrant şi înlocuind termenul în f ' printr-o limită
superioară:
b (b − a)2
 f ( x)dx − (b − a) f (a)  sup f '( x) (**)
a 2 a  x b
b
Deci, dacă aproximăm integrala  f ( x)dx prin regula cvadraturii
a
(b − a) f (a) , atunci eroarea nu este mai mare de membrul drept al (**). Putem
transforma aceasta într-o analiză a erorii pentru suma Riemann (*), dând
marginea superioară a:
n−1
sup f '( x)
2 0  x 1

- 96 -
pentru termenul erorii a acelei aproximări particulare. Folosind mai multe
derivate şi cvadratura putem face o analiză a erorii similară folosind seriile
Taylor (folosind o sumă parţială cu rest) pentru f. Această analiză a erorii dă o
limită superioară a erorii, dacă derivatele lui f sunt disponibile.
Această metodă de integrare poate fi combinată cu aritmetica intervalului
pentru a obţine demonstraţii cu calculatorul şi pentru a verifica calculele.

Integrale multidimensionale
Regulile cvadraturii discutate până acum sunt destinate pentru a calcula
integrale de dimensiune 1. Pentru a calcula integrale în dimensiuni multiple, o
abordare este să exprimăm integrala multiplă ca integrale de dimensiune unu
repetate aplicând teorema lui Fubini. Această abordare cere ca evaluările
funcţiei să crească exponenţial cu numărul cu care creşte dimensiunea. Aceste
două metode sunt cunoscute ca învingând această aşa – numită curse a
dimensiunii.

Monte Carlo
Metodele Monte Carlo şi metodele cvasi – Monte Carlo sunt uşor de
aplicat integralelor multidimensionale, şi pot produce o mai mare precizie
pentru acelaşi număr de evaluări ale funcţiei decât integrări repetare folosind
metode unu – dimensionale.
O clasă mare de metode Monte Carlo utile este formată din aşa – numiţii
algoritmi “lanţul Monte Carlo al lui Marcov”, care include algoritmul
Metropolis – Hastings şi prelevarea Gibbs.

Integrarea numerică prin metoda Monte Carlo: nodurile sunt aleatoriu


echidistante. Noile noduri sunt albastru închis, vechile noduri sunt bleu.
Valoare integralei tinde către 3.32.

- 97 -
7.2. Integrarea în puncte echidistante
7.2.1. Formulele Newton-Cotes
În analiza numerică, formulele Newton – Cotes, numite şi regulile
Newton – Cotes, reprezintă un grup de formule pentru integrarea numerică
(numită şi cvadratură) bazate pe evaluarea integrantului în n + 1 puncte
echidistante. Ele sunt numite după Isaac Newton şi Roger Cotes. Formulele
Newton – Cotes pot fi utile dacă este dată valoarea integrantului în punctele
echidistante. Dacă este posibil să schimbăm punctele în care este evaluat
integrantul, atunci alte metode precum cvadratura gaussiană şi cvadratura
Clenshaw – Curtis sunt, probabil, mai potrivite.
Este presupus că valoarea unei funcţii f este cunoscută în punctele
echidistante xi, pentru i = 0, n . Există două tipuri de formule Newton – Cotes:
tipul “închis” care foloseşte valoarea funcţiei în toate punctele, şi tipul
“deschis” care nu foloseşte valorile funcţiei în capetele intervalului. Formula
Newton – Cotes închisă de grad n este exprimată astfel:
b n
 f ( x)dx   wi f ( xi )
a i =0
x − x0
unde xi = h i + x0, cu h (numit pas) egal cu n . wi se numesc ponderi. Aşa
n
cum se poate vedea în următoarea derivaţie, ponderile derivă din polinoamele
Lagrange fundamentale. Aceasta înseamnă că ele depind doar de xi nu şi de
funcţia f. Fie L( x) polinomul de interpolare în forma Lagrange pentru punctele
( x0 , f ( x0 )), ,( xn , f ( xn )) . Atunci
b b b n
 f ( x)dx   L( x)dx =   f ( xi )li ( x)dx
a a a i =0
n b n
=  f ( xi )   li ( x)dx.
i =0 a i =0
wi
Formula Newton – Cotes deschisă de grad n este exprimată ca:
b n −1
 f ( x)dx   wi f ( xi )
a i =1
Ponderile sunt găsite într-o manieră similară ca în formula închisă.
Instabilitatea pentru grad mare
O formulă Newton – Cotes de orice grad n poate fi construită. Oricum,
pentru n mare, o regulă Newton – Cotes poate suferi uneori din cauza
fenomenului Runge unde eroarea creşte exponenţial pentru n mare. Metode
precum cvadratura gaussiană şi a cvadraturii Clenshaw – Curtis cu puncte ne-
echidistanete (grupate în extremităţile intervalului de integrare) sunt stabile şi

- 98 -
mult mai precise, şi sunt preferate formulei Newton – Cotes. Dacă aceste
metode nu pot fi folosite, deoarece integrantul este dat doar în punctele
echidistante, atunci fenomenul Runge poate fi evitat folosind o regulă compusă,
aşa cum este explicat dedesubt.

Formulele Newton – Cotes închise


grad Denumire Formulă Eroarea
h
( f0 + f1 ) h3 (2)
1 Regula trapezului − f ( )
2 12
h
( f0 + 4 f1 + f 2 ) h5 (4)
2 Regula lui Simpson − f ( )
3 90
3
regula lui 3h
( f0 + 3 f1 + 3 f 2 + f3 ) 3h5 (4)
3 8 − f ( )
8 80
Simpson
Regula lui Boole 2h 7
4 sau (7 f0 + 32 f1 + 12 f 2 + 32 f3 + 7 f 4 ) − 8h f (6) ()
Regula lui Bode 45 945

Exponentul pasului h în eroare arată viteza la care descreşte eroarea


aproximării. Derivata lui f în termenul eroare arată care polinoame pot fi
integrate exact). De notat că derivata lui f în termenul eroare creşte cu 2 pentru
fiecare altă regulă. Numărul ξ se află între a şi b.

Formulele Newton – Cotes deschise


grad Denumire Formulă Eroarea
h3 (2)
1 Regula dreptunghiului 2hf1 f ( )
24
3h
( f1 + f 2 ) h3 (2)
2 Fără nume f ( )
2 4
4h
(2 f1 − f 2 + 2 f3 ) 28h5 (4)
3 Fără nume f ( )
3 90
5h
(11 f1 + f 2 + f3 + 11 f 4 ) 95h5 (4)
4 Fără nume f ( )
24 144

- 99 -
Reguli compuse
Pentru ca regulile Newton – Cotes să fie precise, pasul h trebuie să fie
mic, ceea ce înseamnă că intervalul de integrare [a,b] trebuie să fie mic. Din
acest motiv se execută integrarea numerică împărţind [a,b] în subintervale mai
mici, aplicând o regulă Newton-Cotes pe fiecare subinterval şi adunând
rezultatele. Aceasta se numeşte regulă compusă.

7.2.2. Metoda dreptunghiurilor


În calculul integral, metoda dreptunghiurilor foloseşte o aproximare a
unei integrale definite, făcută prin găsirea ariei unei serii de dreptunghiuri. În
calculul numeric, aceasta a fost înlocuită de metode de integrare numerică mai
sofisticate. Oricare colţ stâng sau drept, sau mijlocul de sus a dreptunghiului se
găsesc pe graficul funcţiei, cu bazele de-a lungul axei x. Aproximarea este luată
prin sumarea ariilor celor n dreptunghiuri care umplu spaţiul între două valori x
dorite.
b n
 f ( x)dx   f (a + i ' x)x ,
a i =1
i − 1 pentru aproximarea stângă
b−a  1

unde x = , i ' = i − pentru aproximarea în mijloc .
n  2
i pentru aproximarea dreaptă
Necesitatea lui a + i'Δx apare când a este nenul, şi cum poziţia primului
dreptunghi nu este în f(i'Δx) ci, mai degrabă, f(a + i'Δx). Cu cât creşte n, cu atât
aproximarea este precisă. De fapt, limita aproximării pentru n →  este exact
b n
egală cu integrala definită:  f ( x)dx = lim  f (a + i ' x)x . Acest lucru este
a n → i =1
adevărat indiferent de ce i este folosit. Deşi aproximarea în mijloc tinde să fie
mai precisă pentru n finit, limita celor trei aproximări, cum n →  , este
aceeaşi, astfel oricare dintre ele poate fi folosită pentru a calcula o integrală
definită.

Aproximarea dreaptă Riemann Aproximarea în mijloc Aproximarea stângă Riemann

- 100 -
Eroarea
Erorii de aproximare în mijloc se descompune ca cubul lăţimii
dreptunghiului
a+h  h  h3
 f ( x)dx = hf  a +  + f "()
a  2  24
pentru   (a, a + h) oarecare.

7.2.3. Regula trapezului


În matematică, regula trapezului este o modalitate de a calcula
b
aproximativ integrala definită  f ( x)dx . Regula trapezului lucrează
a
aproximând regiunea de sub graficul unei funcţii f ( x) printr-un trapez şi
calculând aria lui. Rezultă că
b f (a) + f (b)
 f ( x)dx  (b − a) .
a 2
Pentru a calcula această integrală precis, împărţim, pentru început,
intervalul de integrare [a, b] în n subintervale mai mici, şi apoi aplicăm regula
trapezului pe fiecare dintre ele. Obţinem regula trapezului compusă:
b b − a  f (a) + f (b) n −1  b − a 
 f ( x)dx   +  f a + k  .
a n  2 k =1  n 
Aceasta poate fi scrisă alternativ ca
b b−a
 f ( x)dx  ( f ( x0 ) + 2 f ( x1 ) + 2 f ( x2 ) + + 2 f ( xn −1 ) + f ( xn ) )
a 2n
unde
b−a
xk = a + k ,
n
pentru k = 0, n (putem folosi de asemenea o reţea neuniformă).
Regula trapezului este una din familiile de formule pentru integrarea
numerică numite formulele Newton – Cotes. Regula Simpson este alt membru
al aceleiaşi familii, adesea mai precis. Regula Simpson şi alte metode ca ea pot
fi aşteptate să îmbunătăţească regula trapezului pentru funcţii care sunt de două
ori continue diferenţiabile; oricum, pentru funcţii grosolane, regula trapezului
este probabil preferabilă. În plus, regula trapezului tinde să devină extrem de
precisă când sunt integrate funcţii periodice pe perioada lor, un lucru cel mai
bine înţeles în legătură cu formula de sumare Euler – MacLaurin.
Un avantaj al regulii trapezului este acela că semnul erorii aproximării
este cunoscut. O integrală aproximată cu această regulă pe o funcţie sus-
concavă va fi supraestimată deoarece trapezele includ toată aria de sub curbă şi
- 101 -
se extind peste ea. Folosind această metodă la o funcţie jos-concavă produce o
subestimare deoarece aria este nenumărată pentru partea de sub curbă, dar nici
una nu este numărată deasupra. Dacă intervalul integralei fiind aproximat
include un punct de inflexiune, atunci eroarea este mai greu de identificat.

7.2.4. Metoda Romberg


În analiza numerică, metoda Romberg (1955) generează o matrice
triunghiulară formată din estimări numerice ale unei integrale definite
b
 f ( x)dx
a
folosind extrapolarea Richardson în repetate rânduri pe regula trapezului.
Metoda Romberg evaluează integrantul în puncte echidistante. Integrantul
trebuie să aibă derivate continue. Dacă este posibil să evaluăm integrantul în
puncte neechidistante, atunci alte metode precum cvadratura gaussiană şi
cvadratura Clenshaw – Curtis sunt mai precise.
Metoda Romberg poate fi definită inductiv astfel:
1
R(0, 0) = (b − a) ( f (a) + f (b) )
2
n −1
1 2
R(n, 0) = R(n − 1, 0) + hn  f ( a + (2k − 1)hn )
2 k =1
1 1
R(n, m) = R(n, m − 1) + ( R(n, m − 1) − R(n − 1, m − 1) )
2 4m − 1
sau
R(n, m) =
4 m
1
−1
( 4m R(n, m − 1) − R(n − 1, m − 1) )

b−a m+1
unde n  1, m  1, hn = . Eroarea R(n, m) este de ordinul O(hn2 ).
n
2
Prima extrapolare, R(n,1) , este echivalentă cu regula Simpson cu n + 2 puncte.
Când evaluările funcţiei sunt costisitoare, ar fi de preferat să înlocuim
interpolarea polinomială a lui Richardson cu interpolarea raţională propusă de
Bulirsch şi Stoer (1967).
Exemplu
Ca exemplu, funcţia Gauss este integrată de la 0 la 1, adică funcţia eroare
erf (1)  0.842700792949715 . Matricea triunghiulară este calculată pe linie şi
calculul se termină dacă ultimele două intrări din ultima linie diferă prin mai
puţin de 1.e – 8.
0.77174333
0.82526296 0.84310283
0.83836778 0.84273605 0.84271160
0.84161922 0.84270304 0.84270083 0.84270066
- 102 -
0.84243051 0.84270093 0.84270079 0.84270079 0.84270079
Rezultatul din colţul drept inferior al matricei triunghiulare este precis.
Este de remarcat că acest rezultat derivă din aproximările mai puţin precise
obţinute prin regula trapezului în prima coloană a matricei triunghiulare.

7.2.5. Regula Simpson


În analiza numerică, regula Simpson este o metodă pentru integrarea
numerică, aproximarea numerică a integralelor definite. Anume, ea este
aproximarea
b b−a a+b 
 f ( x)dx   f (a ) + 4 f   + f (b)  .
a 6   2  
Interpolarea cvadratică
Înlocuim integrantul f ( x) prin polinomul integral P(x) care ia aceleaşi
a+b
valori ca f ( x) în punctele terminale a şi b şi în mijlocul m = .
2
Putem folosi interpolarea polinomială Lagrange pentru a găsi o expresie
pentru acest polinom,
( x − m)( x − b) ( x − a)( x − b) ( x − a)( x − m)
P( x) = f (a ) + f ( m) + f (b) .
(a − m)(a − b) (m − a)(m − b) (b − a)(b − m)
Un calcul simplu arată că
b b−a  a+b 
 P( x)dx =  f (a ) + 4 f   + f (b)  .
a 6   2  
Media mijlocului şi regulile trapezului
O altă derivaţie construieşte regula Simpson din două aproximări mai
simple:
a+b
regula mijlocului: M = (b − a ) f  
 2 
1
regula trapezului: T = (b − a) ( f (a) + f (b) ) .
2
Erorile în aceste aproximări sunt, respectiv,
1 1
− (b − a)3 f "(a) + O((b − a) 4 ) şi (b − a)3 f "(a) + O((b − a) 4 ) .
24 12
Rezultă că termenul principal al erorii se anulează dacă luăm media
2M + T
ponderată . Această medie ponderată este exact regula Simpson.
3
Folosind altă aproximare (de exemplu, regula trapezului cu un număr
dublu de puncte), este posibil să luăm o medie ponderată potrivită şi să
eliminăm alt termen al erorii. Aceasta este metoda Romberg.

- 103 -
Coeficienţii nedeterminaţi
A treia derivaţie începe de la ansatz
b a+b
 f ( x)dx  f (a) + f   + f (b) .
a  2 
Coeficienţii ,  şi  pot fi fixaţi cerând ca această aproximare să fie
exactă pentru toate polinoamele cvadratice. Aceasta produce regula Simpson.
Eroarea
Eroarea în aproximarea unei integrale prin regula Simpson este
(b − a)5 (4)
− f () , unde  este un număr oarecare între a şi b. Eroarea este
2880
(asimptotic) proporţională cu (b − a )5 . Oricum, derivaţiile de mai sus sugerează
o eroare proporţională cu (b − a ) 4 . Regula Simpson câştigă un ordin în plus
deoarece punctele în care integrantul este evaluat, sunt distribuite simetric în
intervalul [a, b] .
Regula Simpson compusă
Dacă intervalul de integrare [a, b] este mic (adică funcţia de integrat este
relativ netedă pe intervalul [a, b] ), atunci regula Simpson va furniza o
aproximare adecvată a integralei exacte. Pentru o astfel de funcţie, un
interpolant cvadratic neted precum cel folosit în regula Simpson va da duce la
rezultate bune. Oricum, este des întâlnit cazul ca funcţia pe care încercăm să o
integrăm este netedă peste interval. Aceasta înseamnă că orice funcţia este
puternic oscilantă, ori ea nu are derivate în anumite puncte. În aceste cazuri,
regula Simpson poate da rezultate foarte slabe. O cale uzuală de a rezolva
această problemă este spargerea intervalului [a, b] într-un număr de
subintervale mici. Apoi, regula Simpson este aplicată pe fiecare subinterval, se
sumează rezultatele pentru o obţine o aproximare a integralei pe întreg
intervalul. Acest tip de abordare se numeşte regula Simpson compusă.
Presupunem că intervalul [a, b] este împărţit în n subintervale, cu n un
număr par. Atunci, regula Simpson compusă este dată de:
 n
−1
n 
b h 2 2 
 f ( x)dx   f ( x0 ) + 2  f ( x2 j ) + 4  f ( x2 j −1 ) + f ( xn )  ,
a 3 j =1 j =1 
 
a −b
unde xi = a + ih pentru i = 0, n cu h = ; în particular, x0 = a şi xn = b .
n
Formula de mai sus poate fi scrisă astfel:

- 104 -
b h
 f ( x)dx  [ f ( x0 ) + 4 f ( x1 ) + 2 f ( x2 ) + 4 f ( x3 ) + 2 f ( x4 ) + +
a 3
+4 f ( xn −1 ) + f ( xn )].
Eroarea făcută de regula Simpson compusă este mărginită (în valoarea
absolută) de
h4 b−a
(b − a) max f (4) () , unde h = .
180 [ a, b] n
Această formulare împarte intervalul [a, b] în subintervale de lungime
egală. În practică, este deseori avantajos de a folosi subintervale de lungimi
diferite, şi de a ne concentra eforturile în locurile unde integrantul se comportă
mai puţin bine. Aceasta conduce la metoda Simpson ajustată.

7.2.6. Metoda ajustativă Simpson


Metoda ajustativă Simpson, numită de asemenea regula ajustativă
Simpson, este o metodă de integrare numerică propusă de William M.
McKeeman în 1962. Este, probabil, primul algoritm ajustativ pentru integrarea
numerică care a apărut, deşi mai multe metode moderne bazate pe integrarea
Gauss – Kronrod şi integrarea Clenshaw – Curtis sunt, în general, preferate
acum. Metoda ajustativă Simpson foloseşte o estimare a erorii pe care o
obţinem calculând o integrală definită folosind regula lui Simpson. Dacă eroare
depăşeşte o toleranţă specificată de utilizator, algoritmul cere subdivizarea
intervalului de integrare în două şi aplicarea metodei ajustative a lui Simpson pe
fiecare subinterval într-o manieră recursivă. Tehnica este de obicei mult mai
eficientă decât regula de compunere Simpson din moment de foloseşte mai
puţine funcţii de evaluare în punctele în care funcţia este bine aproximată de o
funcţie integrală.
Criteriul de determinare a momentului în care oprim subdivizarea
intervalului este:
S ( a , c ) + S (c , b ) − S ( a , b )

15
unde [a, b] este un interval care are mijlocul c, S (a, b), S (a, c) şi S (c, b) sunt
estimările date de regula lui Simpson pe intervalele corespunzătoare şi  este
toleranţa dorită pentru interval.
Regula Simpson este un caz particular al metodei Romberg. Teoria
acestei metode arată că regula lui Simpson este exactă atunci când integrantul
este un polinom de grad 3 sau mai mic. Potrivit metodei Romberg, cea mai
corectă estimare Simpson S (a, c) + S (c, b) pentru şase valori ale funcţiei se
combină cu cea mai puţin corectă estimare Simpson S (a, b) pentru trei valori
ale funcţiei aplicând corecţia

- 105 -
S ( a , c ) + S (c , b ) − S ( a , b )
.
15
Aici, constanta 15 este aleasă pentru a asigura că după ce aplicăm
corecţia, este obţinută o estimare care este exactă pentru polinoame de grad cel
mult 5.

7.3. Integrarea în puncte neechidistante


Pentru funcţii care nu sunt periodice, oricât, de departe, cele mai precise
metode cu puncte neechidistante sunt cvadratura gaussiană şi cvadratura
Clenshaw – Curtis.

7.3.1. Cvadratura gaussiană


În analiza numerică, o regulă de integrare este o aproximare a integralei
definite a unei funcţii, uneori formulată ca suma ponderată a valorilor funcţiei
în punctele date înăuntrul domeniului de integrare.
O regula de cvadratură gaussiană n – puncte, numită după Carl Friedrich
Gauss, este in regulă de integrare construită pentru a produce un rezultat exact
pentru polinoamele de grad 2n − 1 , printr-o alegere corespunzătoare a n
punctelor xi şi n ponderilor wi.
Domeniul de integrare pentru o astfel de regulă este, prin convenţie, luat
[−1, 1], astfel că regula este exprimată ca
1 n
 f ( x)dx   wi f ( xi ) .
−1 i =1
Se poate arăta (vezi Press, ş.a. sau Stoer şi Bulirsch) că punctele de
evaluare sunt chiar rădăcinile polinomului care aparţine clasei polinoamelor
ortogonale.
Reguli pentru problema de bază
Pentru problema de integrare exprimată mai sus, polinoamele asociate
sunt polinoamele Legendre, Pn ( x ) . Cu cel de-al n – lea polinom normalizat
pentru a obţine Pn(1) = 1, nodul Gauss i, xi, este a i – a rădăcină a lui Pn;
ponderea ei este dată de (Abramowitz & Stegun 1972, p. 887)
2
wi = .
(1 − xi2 )( P 'n ( xi ))2
În continuare sunt date câteva reguli de integrare pentru ordine mici:

Numărul de
Punctele, xi Ponderile, wi
puncte, n
1 0 2

- 106 -
1
2  1
3
8
0 9
3
3 5
 9
5

6
3−2 18 + 30
5
 36
7
4
6
3+ 2 18 − 30
5
 36
7

128
0
225

5 1 10 322 + 13 70
 5−2
3 7 900

1 10 322 − 13 70
 5+2
3 7 900

Schimbarea intervalului pentru cvadratura gaussiană


O integrală pe [a, b] trebuie schimbată într-o integrală pe [−1, 1] înainte
să aplicăm regula de integrare gaussiană. Această schimbare a intervalului poate
fi făcută astfel:
b b−a 1 b−a a+b
 f ( x ) dx =  f x+  dx .
a 2 −1  2 2 
După aplicarea regulii de integrare Gauss se obţine următoarea
aproximare:
b−a n b−a a+b
 wi f  x+ 
2 i =1  2 2 

- 107 -
Alte forme ale cvadraturii gaussiene
Problema integrării poate fi exprimată într-o manieră puţin mai generală
prin introducerea unei funcţii pondere  , pozitivă, în integrant, şi permiţând un
interval diferit de [−1, 1]. Adică, problema este calculul
b
 ( x) f ( x)dx
a
pentru unele alegeri ale lui a, b şi ω. Pentru a = −1, b = 1 şi ω(x) = 1, problema
este aceeaşi cu cea considerată mai sus. Alte alegeri conduc la alte reguli de
integrare, unele dintre ele fiind cele din tabelul următor.

Intervalul ω(x) Polinoamele ortogonale

[−1,1] 1 Polinoamele Legendre

(−1,1) (1 − x) (1 + x) , ,   −1 Polinoamele Jacobi

1
(−1,1) Polinoamele Chebyshev (de prima speţă)
1 − x2

Polinoamele Chebyshev (de speţa a


[−1,1] 1− x 2
doua)

[0,∞) e− x Polinoamele Laguerre

e− x
2
(−∞,∞) Polinoamele Hermite

Teorema fundamentală
b
Fie q un polinom netrivial de grad n astfel încât  ( x) x k q( x)dx = 0
a
pentru toţi k = 0, n − 1 .
Dacă alegem nodurile să fie zero-urile lui q, atunci există ponderile wi
care fac integrala calculată exactă pentru toate polinoamele de grad 2n − 1 sau
mai mic. În plus, toate aceste noduri se vor găsi în intervalul deschis (a, b).

Estimarea erorii
Eroarea unei reguli de integrare Gauss poate fi exprimată după cum
urmează. Pentru un integrant care are 2n derivate continue,

- 108 -
b n f (2n) ()
 ( x) f ( x)dx −  wi f ( xi ) = ( pn , pn )
a i =1 (2n)!

pentru un ξ oarecare din (a, b), unde pn este polinomul ortogonal de grad n şi
b
unde ( f , g ) =  ( x) f ( x) g ( x)dx
a
În cazul special ω(x) = 1 avem estimarea erorii
(b − a)2n +1 (n !)4
f (2n) (), a    b .
(2n + 1) (2n)!
3

Stoer şi Bulirsch au remarcat că nu este convenabil în practică, din


moment ce poate fi dificil de estimat derivata de ordinul 2n, şi, în plus, eroarea
actuală poate fi mult mai mică decât o margine stabilită de derivată.
O altă abordare este de a folosi regulile de cvadratură gaussiană de ordine
diferite, şi să estimăm eroarea ca diferenţa dintre cele două rezultate. Pentru
acest scop, pot fi utile regulile de integrare Gauss – Kronrod.

Regulile Gauss – Kronrod


Dacă intervalul [a,b] este împărţit, punctele de evaluare Gauss ale noilor
subintervale coincid cu punctele de evaluarea anterioare (exceptând zero, pentru
numerele impare), şi astfel, integrantul trebuie să fie evaluat în fiecare punct.
Regulile Gauss – Kronrod sunt extinderi ale regulilor de cvadratură gaussiană
generate prin adăugarea a n + 1 puncte la o regulă n – punct în aşa fel încât
regula rezultantă să fie de ordin 3n + 1. Acest fapt permite calculul estimărilor
de ordin superior refolosind valorile funcţiei a unei estimări de ordin mic.
Diferenţa dintre regula de cvadratură gaussiană şi extensia ei Kronrod este
des utilizată ca o estimare a erorii aproximării. Regulile sunt numite după
Alexander Kronrod care le-a inventat în 1960. Algoritmii în QUADPACK au la
bază regulile Gauss–Kronrod. Un exemplu popular combină o regulă Gauss 7 –
puncte cu o regulă Kronrod 15 – puncte.
Deoarece punctele Gauss sunt încorporate în punctele Kronrod, un total
de doar 15 evaluări produc estimarea integrării cât şi eroarea estimării.

Nodurile Gauss Ponderile


±0.94910 79123 42759 0.12948 49661 68870
±0.74153 11855 99394 0.27970 53914 89277
±0.40584 51513 77397 0.38183 00505 05119
0.00000 00000 00000 0.41795 91836 73469

- 109 -
Nodurile Kronrod Ponderile
±0.99145 53711 20813 0.02293 53220 10529
±0.94910 79123 42759 0.06309 20926 29979
±0.86486 44233 59769 0.10479 00103 22250
±0.74153 11855 99394 0.14065 32597 15525
±0.58608 72354 67691 0.16900 47266 39267
±0.40584 51513 77397 0.19035 05780 64785
±0.20778 49550 07898 0.20443 29400 75298
0.00000 00000 00000 0.20948 21410 84728

Patterson a arătat cum se găsesc alte extensii de acest tip.

7.3.2. Cvadratura tanh – sinh


Cvadratura tanh – sinh este o metodă de integrare numerică introdusă de
Hidetosi Takahasi şi Masatake Mori în 1974. Ea foloseşte schimbarea de
variabilă
 
x = tanh  sinh t 
2 
pentru a transforma o integrală pe ( −1,1) într-o integrală pe întreaga dreaptă
reală. Pentru un pas dat h, integrala este aproximată de suma

 wk f ( xk )
k =−
cu:
 
- abscisele xk = tanh  sinh kh 
2 
şi

cosh kh
2  
- ponderile wk = tanh  sin kh  .
   2 
cos 2  sinh kh 
2 
La fel ca cvadratura gaussiană, cvadratura tanh-sinh este potrivită pentru
integrarea cu precizie arbitrară, unde este dorită o acurateţe de sute sau mii de
digiţi.
Convergenţa este pătratică pentru integranţi cu comportare suficient de
bună: dublarea numărului de puncte de evaluare dublează grosolan numărul de
digiţi corecţi.

- 110 -
Cvadratura tanh – sinh este mai puţin eficientă decât cvadratura Gauss
pentru integranţi netezi, dar, spre deosebire de cvadratura Gauss lucrează bine şi
cu integranţi care au singularităţi sau derivate infinite într-unul sau în ambele
capete ale intervalului de integrare. Un alt avantaj este acela că abscisele şi
ponderile sunt relativ simplu de calculat. Costul calculului perechilor abscise –
ponderi pentru o acurateţe de n – digiţi este n 2 log 2 n comparabil cu n3 log n
pentru cvadratura Gauss.
Comparând schema cu cvadratura Gauss şi cvadratura funcţiei eroare,
Bailey ş.a. au găsit că schema tanh – sinh „pare a fi cea mai bună pentru
integranţi de tipul celor mai des întâlniţi în cercetările matematice
experimentale”.

7.3.3. Cvadratura Clenshaw – Curtis


Cvadratura Clenshaw-Curtis şi cvadratura Fejér sunt metode de
integrare numerică, sau de cvadratura numerică, bazate pe o dezvoltare a
integrantului în termeni de polinoame Chebyshev. Echivalent, ele folosesc o
schimbare de variabilă x = cosθ şi folosesc o aproximare a transformării cosinus
discretă pentru seriile cosinus. În afară că au o convergenţă rapidă comparabilă
cu regulile de integrare gaussiană, cvadratura Clenshaw – Curtis şi Fejér conduc
natural către regulile de integrare (în care diferite ordine de precizie împart
punctele), care este importantă pentru ambele integrări (multidimensionale şi
ajustativă). Pe scurt, funcţia f ( x) care trebuie integrată este evaluată în punctul
de extrem N sau în rădăcinile unui polinom Chebyshev şi aceste valori sunt
folosite pentru a construi o aproximare polinomială pentru această funcţie.
Această aproximare este atunci integrată exact. În practică, ponderile de
integrare pentru valoarea funcţiei în fiecare nod sunt precalculate, şi acest calcul
poate fi executat în timpul O(NlogN) cu ajutorul diferitor algoritmi legaţi de
transformării rapide Fourier pentru DCT.
O cale simplă de a înţelege algoritmul este de a înţelege faptul că
cvadratura Clenshaw – Curtis (propus de acei autori în 1960) se referă la o
integrare printr-o schimbare de variabilă x = cosθ.
Algoritmul este exprimat pentru integrala unei funcţii f ( x) pe un
interval [−1,1] (orice alt interval poate fi obţinut printr-o rescalare). Pentru
această integrală, putem scrie
1 
 f ( x)dx =  f (cos )sin d  .
−1 0
Aceasta înseamnă că trebuie să transformăm această problemă din
integrarea lui f ( x) în integrarea lui f (cos )sin  . Acest lucru poate fi făcut
dacă ştim seria cosinus pentru f (cos ) :

- 111 -
a 
f (cos ) = 0 +  ak cos(k )
2 k =1
caz în care integrala devine:
 a0  2a2k
 f (cos ) sin d  = +  .
0 2 k =1 1 − (2k )2
Bineînţeles, pentru a calcula coeficienţii seriei cosinus
2
ak =  f (cos ) cos d 
0
trebuie să executăm încă o dată o integrare numerică, deci pentru început
aceasta poate să pară că nu simplifică problema. Spre deosebire de calculul
integralelor arbitrare, oricum, integrările seriilor Fourier pentru funcţii periodice
(precum f (cos ) , prin construcţie), până la frecvenţa Nyquist k = N, sunt
n
precis calculate de punctele N echidistante şi ponderile n = echidistante
N
1
pentru n = 0, N (cu excepţia punctelor terminale care sunt ponderate de ,
2
pentru a evita dubla numărare). Adică, aproximăm integrala seriilor cosinus
prin transformarea cosinus discretă (DCT) de tipul I:
2  f (1) f (−1) N −1  n  nk  
ak   + (−1)k +  f  cos  cos
N 2 2 n =1  N  N 
pentru k = 0, N şi apoi folosim formula de mai sus pentru integrală în termenii
acelor ak .
Legătura cu polinoamele Chebyshev
Motivul pentru care aceasta este legată de polinoamele Chebyshev Tk ( x)
este acela că, prin definiţie, Tk (cos ) = cos( k ) şi astfel, seria cosinus de mai
sus este într-adevăr o aproximare a lui f ( x) prin polinoame Chebyshev:
a 
f ( x) = 0 T0 ( x) +  ak Tk ( x) ,
2 k =1
şi astfel integrăm “cu adevărat” f ( x) integrând dezvoltarea aproximantă în
n
termenii polinoamelor Chebyshev. Punctul de evaluare xn = cos corespunde
N
extremei polinomului Chebyshev TN ( x) .
Faptul că o astfel de aproximare Chebyshev este chiar o serie cosinus
după o schimbare de variabile este responsabilă pentru convergenţa rapidă a
aproximării deoarece mai mulţi termeni Tk ( x) sunt incluşi. O serie cosinus
converge foarte repede pentru funcţiile pare, periodice, şi suficient de netede.
- 112 -
Acest lucru este adevărat aici, din moment de f (cos ) este pară şi periodică în
 prin construcţie, şi este de k ori derivabilă în orice punct dacă f ( x) este de k
ori derivabilă pe [−1,1] . (Spre deosebire, aplicând direct o dezvoltare în serie
cosinus lui f ( x) în loc de f (cos ) în mod uzual nu va converge rapid
deoarece panta dezvoltărilor pare – periodice va fi, în general, discontinuă).
Comparaţia cu cvadratura Gauss
Metoda clasică a integrării Gauss evaluează integrantul în N + 1 puncte şi
este construită pentru a integra exact polinoamele de grad maxim 2 N + 1 .
În contrast, cvadratura Clenshaw – Curtis, mai întâi evaluează integrantul
în N + 1 puncte şi integrează exact polinoamele doar până la gradul N. Poate
părea, deci, că cvadratura Clenshaw – Curtis este intrinsec, mai rea, decât
cvadratura Gauss, dar, în realitate acesta nu pare să fie cauza.
În practică, mai mulţi autori au observat că cvadratura Clenshaw – Curtis
poate avea o precizie comparabilă cu cea a cvadraturii gaussiene pentru acelaşi
număr de puncte. Acest lucru este posibil deoarece cei mai mulţi integranţi
numerici nu sunt polinoame (în special, de când polinoamele pot fi integrate
analitic), şi aproximarea mai multor funcţii în termeni ai polinoamelor
Chebyshev converge rapid. De fapt, rezultate teoretice recente (Trefethen,
2006) argumentează că atât cvadratura gaussiană cât şi cea Clenshaw – Curtis
 [2 N ]− k 
au eroarea mărginită de O   pentru un integrant de k ori diferenţiabil.
 k 
 
Un avantaj des citat al integrării Clenshaw – Curtis este acela că ponderile
cvadraturii pot fi evaluate în timpul O( N log N ) prin algoritmi rapizi de
transformare Fourier (şi analogii lor pentru DCT), pe când ponderile integrării
gaussiene cer un timp O ( N 2 ) de calcul.
Ca o chestiune practică, o cvadratura numerică de ordin ridicat este de
puţine ori făcută prin simpla evaluare a formulei de integrare pentru N foarte
mare.
În schimb, de obicei foloseşte o schemă de integrare ajustativă care mai
întâi evaluează integrala de ordin mic, şi apoi, succesiv, rafinează precizia doar
în regiunile unde integrala este inexactă. Pentru a evalua precizia integralei,
comparăm răspunsul cu cel al regulii de integrare pentru ordine mici pare. Ideal,
această regulă de integrare de ordin mic evaluează integrantul pe o submulţime
a punctelor N originale, să minimizez evaluările integranţilor. Aceasta se
numeşte regulă de integrare nested, şi aici cvadratura Clenshaw – Curtis are
avantajul că regula pentru ordinul N foloseşte o submulţime a punctelor de la
ordinul 2N. În contrast, regulile de integrare gaussiene nu sunt natural nested, şi
astfel trebuie să folosească cvadratura Gauss – Kronrod sau metodele similare.

- 113 -
7.3.4. Cvadratura Fejér
Fejér a propus două reguli de integrare foarte asemănătoare cu cele de
integrare Clenshaw – Curtis, dar cu mult timp înainte (în 1933). A “doua”
regulă de integrare a lui Fejér este identică cu cea dată de Clenshaw – Curtis.
Singura diferenţă este aceea că punctele terminale f (−1) şi f (1) sunt fixate în
zero. Adică, Fejér a folosit doar extremele interioare ale polinoamelor
Chebyshev, adică punctele staţionare.
“Prima” regulă de integrare a lui Fejér evaluează ak estimând f (cos )
într-o altă mulţime de puncte echidistante, la jumătatea distanţei dintre extreme:
(n + 0,5)n
n = pentru 0  n  N . Acestea sunt rădăcinile lui TN (cos ) ,
N
cunoscute sub denumirea de nodurile Chebyshev. (Aceste mijloace echidistante
sunt singurele celelalte alegeri ale punctelor de integrare care păstrează atât
simetria pară a transformării cosinus cât şi simetria translaţională a seriei
Fourier periodice) . Aceste lucruri conduc la:
2 N −1  (n + 0,5)  (n + 0,5)k 
ak   f  cos  cos
N n=0  N  N
care este chiar DCT de tip II.
În ciuda faptului că Fejér a descoperit aceste tehnici înainte lui Clenshaw
şi Curtis, denumirea “cvadratura Clenshaw – Curtis” a devenit cea standard.

7.3.5. Cvadratura ajustativă


În matematica aplicată, cvadratura ajustativă este un proces în care
integrala unei funcţii f ( x) este aproximată folosind regulile de integrare statice
pe subintervale adaptativ rafinate ale domeniului de integrare.
În general, algoritmii ajustativă sunt la fel de eficienţi şi eficaci precum
cei tradiţionali pentru integranţi “cu comportare bună”, dar, sunt de asemenea
eficaci pentru integranţi “cu comportare rea”, pentru care algoritmii tradiţionali
eşuează.
Schema generală
Cvadratura ajustativă urmează schema generală:
1. procedura integrate (f,a,b,tau)
b
2. Q   f ( x)dx
a
b
3.   Q −  f ( x)dx
a
4. dacă    atunci
5. m = (a + b) / 2
6. Q = integrate(f,a,m,tau) + integrate(f,m,b,tau)

- 114 -
7. sfârşit dacă
8. return Q
Este calculată o aproximare Q a integralei lui f ( x) pe intervalul [a, b]
(linia 2), precum şi o eroare estimată  (linia 3). Dacă eroarea estimată este mai
mare decât toleranţa cerută  (linia 4), atunci intervalul este împărţit (linia 5) şi
integrala este aplicată pe ambele intervale separat (linia 6). Se returnează atât
estimarea iniţială sau suma înjumătăţită calculată recursiv (linia 7).
b
Componentele importante sunt însăşi regula de integrare Q   f ( x)dx ,
a
b
estimarea erorii   Q −  f ( x)dx ,
a
şi logica deciderii împărţirii cărui interval, şi apoi când să ne oprim.
Bineînţeles că există mai multe variante ale acestei scheme. Cea mai
uzuală va fi discutată mai târziu.
Reguli de integrare de bază
Regulile de integrare au în general forma:
n b
Q =  wi f ( xi )   f ( x)dx
i =0 a
unde nodurile xi şi ponderile wi sunt, în general, calculate anterior.
În cazul general, sunt folosite formulele Newton – Cotes de ordin par,
unde nodurile xi sunt uniform spaţiate în interval:
i
xi = a + (b − a) .
n
Când sunt folosite asemenea reguli, punctele în care f(x) a fost evaluată
pot fi reutilizate după revenire:

x1 x2 x3
adâncimea

x1 x2 x3

x1 x2 x3
O strategie similară este folosită la cvadratura Clenshaw - Curtis, unde
nodurile sunt alese astfel:
 2i 
xi = cos    .
n 
sau, când este folosită cvadratura Fejér:

- 115 -
 2(i + 0,5) 
xi = cos   .
 n +1 
Un algoritm poate fi ales să folosească diferite metode de integrare pe
subintervale diferite, de exemplu, folosind o metodă de ordin înalt doar acolo
unde integrantul este neted.
Estimarea erorii
Unii algoritmi de integrare generează o secvenţă de rezultate care ar
trebui să se apropie de valoarea corectă. Altfel, putem folosi o “regulă nulă”
care are forma regulii de integrare de mai sus, dar ale cărei valori vor fi zero
pentru un integrant simplu (de exemplu, dacă integrantul este un polinom de
grad apropiat).
Subdiviziunea logică
Cvadratura ajustativă “locală” face eroarea acceptabilă pentru un interval
dat proporţional cu lungimea acelui interval. Acest criteriu poate fi cu greu
satisfăcut dacă integrantul se comportă rău în doar câteva puncte, de exemplu.
Pentru câţiva paşi de discontinuitate. Alternativ, putem cere doar ca suma
erorilor pe fiecare subinterval să fie mai mică decât cererea utilizatorului.
Aceasta va fi cvadratura ajustativă “globală”. Cvadratura ajustativă globală
poate fi mai eficientă (folosind mai puţine evaluări ale integrantului) dar este, în
general, mai dificil de programat şi poate cere mai mult spaţiu de lucru pentru
înregistrarea informaţiei pe mulţimea curentă de intervale.

7.4. Integrări cu funcţii pondere


Mai general, putem pune problema integrării unei funcţii f ( x) în locul
unei funcţii pondere w( x) care este cunoscută de dinainte:
1 
 f ( x) w( x)dx =  f (cos ) w( cos ) sin d  .
−1 0
Cazul cel mai comun este w( x) = 1 , ca mai sus, dar în unele aplicaţii este
utilă o funcţie pondere diferită. Motivul fundamental este că, din moment ce
w( x) poate fi luat în socoteală aprioric, eroarea de integrare poate fi făcută să
depindă doar de precizia în aproximarea lui f ( x) , indiferent de cât de rău se
comportă funcţia pondere.
Cvadratura Clenshaw – Curtis poate fi generalizată la acest caz după cum
urmează. Ca şi înainte, ea merge găsind dezvoltarea cos-sin a funcţiei f (cos )
via DCT, şi apoi integrând fiecare termen a seriei cosinus. Acum, aceste
integrale sunt de forma:

Wk =  w(cos ) cos(k )sin d  .
0
Pentru majoritatea funcţiilor w( x) , această integrală nu poate fi calculată
analitic, spre deosebire de cazul anterior. Din moment ce aceeaşi funcţie
- 116 -
pondere este folosită în general pentru mai mulţi integranţi f ( x) , putem
permite să calculăm aceşti Wk numeric pentru a mări precizia în prealabil. În
plus, din moment ce w(x) este specificată în mod general analitic, putem uneori
folosi metode speciale să calculăm Wk. De exemplu, au fost dezvoltate diferite
metode pentru a aplica cvadratura Clenshaw – Curtis pentru integranţi de forma
f(x)w(x) cu o funcţie pondere w(x) puternic oscilantă, de exemplu o sinusoidă
sau o funcţie Bessel. Acest lucru este util pentru precizia ridicată a calculului
seriilor Fourier sau a seriilor Fourier – Bessel, în care metodele de integrare
pentru w(x) = 1 sunt problematice din cauza preciziei ridicate cerută să rezolve
contribuţia oscilaţiilor rapide. Aici, partea integrantului cu oscilaţii rapide este
luată în seamă prin metode speciale pentru Wk, pe când funcţia necunoscută f(x)
se comportă mai bine. Alt caz în care funcţiile pondere sunt utile, în special,
dacă integrantul este necunoscut dar are o singularitate cunoscută de o anumită
formă, de exemplu, o discontinuitate cunoscută sau o divergenţă a integralei
1
(precum ) într-un anumit punct.
x
De notat este că cvadratura gaussiană poate fi de asemenea adaptată
pentru diferite funcţii pondere, dar tehnica este întrucâtva diferită. În cvadratura
Clenshaw – Curtis, integrantul este întotdeauna evaluat în aceeaşi mulţime de
puncte a lui w(x), corespunzătoare extremelor sau rădăcinilor polinomului
Chebyshev. În cvadratura gaussiană, diferite funcţii pondere conduc la diferite
polinoame ortogonale, şi astfel, diferite rădăcini în care integrantul este evaluat.

7.5. Metoda Nyström


Metoda Nyström de discretizare a unei ecuaţii integrale foloseşte o regulă
de integrare; adică, aplicând regula de integrare
b n
 h( x)dx   wk h( xk )
a k =1
de exemplu, ecuaţiei Fredholm neomogene de speţa a doua
b
f ( x) = u ( x) −  K ( x, x ')u ( x ')dx '
a
rezultă
n
f ( x) = u ( x) −  wk K ( x, xk )u ( xk ) .
k =1

7.6. Formula Euler-MacLaurin


În matematică, formula Euler – MacLaurin furnizează o legătură
puternică între integrale şi sume. Ea poate fi folosită pentru aproximarea
integralelor prin sume finite, sau invers, pentru evaluarea sumelor finite şi

- 117 -
seriilor infinite folosind integralele şi calculul. Formula a fost descoperită
independent de Leonhard Euler şi Colin MacLaurin în jurul anului 1735 (şi a
fost generalizată mai târziu ca formula lui Darboux). Euler a avut nevoie de ea
pentru a calcula seriile infinite încet convergente în timp ce MacLaurin a
folosit-o pentru a calcula integrale.
Formula
Dacă n este un număr natural şi f ( x) este o funcţie netedă (în sensul,
diferenţiabilă) definită pentru toate numerele reale x dintre 0 şi n, atunci
n
integrala I =  f ( x)dx poate fi aproximată de suma:
0
f (0) f (n) f (0) + f (n) n −1
S= + f (1) + + f (n − 1) + = +  f (k )
2 2 2 k =1
(vezi regula trapezului). Formula Euler – MacLaurin furnizează expresii pentru
diferenţa dintre sumă şi integrală în termeni ai derivatelor f ( k ) în 0 şi n. Pentru
orice număr natural p, avem:

( )
p B
S − I =  k +1 f ( k ) (n) − f ( k ) (0) + R
k =1 (k + 1)!
unde B1 = −1/2, B2 = 1/6, B3 = 0, B4 = −1/30, B5 = 0, B6 = 1/42, B7 = 0, B8 =
−1/30, ... sunt numerele Bernoulli, şi R este eroarea care este mică pentru valori
corespunzătoare ale lui p.
Utilizând substituţia, putem adapta această formulă de asemenea la funcţii
f care sunt definite pe alte intervale ale dreptei reale.
Restul
Restul R este dat de
n B p +1 ( x − [ x])
R = (−1) p  f ( p +1) ( x) dx ,
0 ( p + 1)!
unde Bi ( x − [ x]) sunt polinoamele Bernoulli. Restul poate fi estimat prin:
2 n
(2 p +1)
R   f ( x) dx .
2p
(2) 0
Sume care implică un polinom
Dacă f este un polinom şi p este suficient de mare, atunci restul dispare.
De exemplu, dacă f(x) = x3, putem alege p = 2 pentru a obţine, după
simplificare,
2
3  n(n + 1) 
n
 i =  .
i =0  2 

- 118 -
Integrarea numerică
Formula Euler – MacLaurin este, de asemenea, folosită pentru analiza
detaliată a erorilor în integrarea numerică; în particular, metodele de extrapolare
depind de ea.
Dezvoltări asimptotice ale sumelor
În contextul calculului dezvoltărilor asimptotice ale sumelor şi seriilor, de
obicei, cea mai utilă formă a formulei Euler – MacLaurin este:
f (a) + f (b)  B2k
( )
b b
 f ( n )  f ( x)dx + +  f (2k −1) (b) − f (2k −1) (a ) ,
n=a a 2 k =1 (2k )!
unde a şi b sunt întregi. Adesea, dezvoltarea rămâne validă chiar şi după ce
trecem la limită pentru a → − sau b → + , sau amândouă. În multe cazuri
integrala sau membru drept pot fi evaluate în forma închisă în termenii
funcţiilor elementare chiar şi atunci când suma din membrul stâng nu poate.
Atunci toţi termenii seriilor asimptotice pot si exprimaţi în termenii funcţiilor
elementare. De exemplu,
b 1  1 1  B
  dk + +  2t .
n=a (z + k)
2
0 (z + k)
2
z 2 t =1 z 2t +1
1
=
z
1
Aici, membrul stâng este egal cu suma dintre şi  (1) ( z ) , unde,
2
z
aceasta din urmă este funcţia poligamma de prim ordin definită prin
(1) d2
 ( z) = ln ( z ) ; funcţia gamma ( z) este egală cu ( z − 1)! dacă z este un
dz 2
1
întreg pozitiv. Scăzând din ambele părţi rezultă o dezvoltare asimptotică
z2
pentru  (1) ( z ) . Dezvoltarea, în schimb, serveşte ca punct de plecare pentru una
din derivaţiile estimării precise a erorii pentru aproximarea Stirling a funcţiei
factorial.
Derivaţia din inducţie matematică
Polinoamele Bernoulli Bn(x), n = 0, 1, 2, ... pot fi definite recursiv după
cum urmează:
B0 ( x) = 1 ,
1
B 'n = nBn −1 ( x) şi  Bn ( x)dx = 0 pentru n  1 .
0
Primii termeni sunt:
1 1
B1 ( x) = x − , B2 ( x) = x 2 − x + ,
2 6
- 119 -
3 1 1
B3 ( x) = x3 − x 2 + x, B4 ( x) = x 4 − 2 x3 + x 2 − ,
2 2 30
Valorile Bn(1) sunt numerele Bernoulli. Pentru n ≥ 2, avem Bn(0) = Bn(1).
Funcţiile Bernoulli periodice Pn sunt date de
Pn ( x) = Bn ( x −  x  ) pentru 0  x  1 ,
adică, coincid cu polinoamele Bernoulli pe (0,1) şi sunt periodice, de perioadă
1.
Fie integrala
k +1
 f ( x)dx =  udv ,
k
unde
u = f ( x),
du = f '( x)dx,
dv = P0 ( x)dx (din moment ce P0 ( x) = 1 ),
v = P1 ( x) .
Integrând prin părţi, obţinem
k +1 k +1
uv −  vdu =  f ( x) P1 ( x) k −  f '( x) P1 ( x)dx
k
f (k ) + f (k + 1) k +1
= −  f '( x) P1 ( x)dx.
2 k
Sumăm pentru k de la 1 la n − 1 şi rezultă
n f (1) f ( n) n
 f ( x)dx = + f (2) + + f (n − 1) + −  f '( x) P1 ( x)dx .
1 2 2 1
f (1) + f (n)
Adunând în ambii membri şi rearanjând, avem
2
n n f (1) + f (n) n
 f (k ) =  f ( x)dx + +  f '( x) P1 ( x)dx (1)
k =1 1 2 1
Ultimii doi termeni dau eroarea atunci când integrala este folosită pentru
aproximarea sumei.
Considerăm
k +1
 f '( x) P1 ( x)dx =  udv ,
k
unde

- 120 -
u = f '( x),
du = f "( x)dx,
dv = P1 ( x)dx,
P ( x)
v= 2 .
2
Integrând din nou, prin părţi, obţinem,
k +1
 f '( x) P2 ( x)  1 k +1
uv −  vdu =   −  f "( x) P2 ( x)dx
 2 k 2 k
f '(k + 1) − f '(k ) 1 k +1
= −  f "( x) P2 ( x)dx.
12 2 k
Sumând apoi pentru k de la 1 la n − 1 , şi apoi înlocuind ultima integrală în
(1) cu ce am arătat că este egală, avem:
n n f (1) + f (n) f '(n) − f '(1) 1 n
 f (k ) =  f ( x)dx + + −  f "( x) P2 ( x)dx .
k =1 1 2 12 12 1
Procedând în continuare la fel se obţine demonstraţia prin inducţie
matematică a formulei de sumare Euler – MacLaurin, în care, pasul de inducţie
se bazează pe integrarea prin părţi şi pe identităţile pentru funcţiile periodice
Bernoulli.
Pentru o obţine limitele mărimii erorii atunci când suma este aproximată
de integrală, notăm că polinoamele Bernoulli pe intervalul [0,1] îşi ating
valorile maxime absolute în extreme şi Bn(1) este al n – lea număr Bernoulli.
Derivaţia din analiza funcţională
Formula Euler – MacLaurin poate fi înţeleasă ca o curioasă aplicaţie a
unor idei din spaţiile Hilbert şi analiza funcţională. Fie Bn(x) polinoamele
Bernoulli. Funcţiile duale polinoamelor Bernoulli sunt date de
(−1)n +1  ( n −1)
Bn ( x) =  (1 − x) − ( n −1) ( x) 
n!  
unde δ este funcţia delta a lui Dirac. Deasupra este o notaţie formală pentru
ideea de a lua derivatele într-un punct; astfel avem:
1 1 ( n −1)
 Bn ( x) f ( x)dx =  f (1) − f ( n −1) (0) 
0 n ! 
pentru n > 0 şi o funcţie arbitrară, dar diferenţiabilă, f(x) definită pe intervalul
unitate. Pentru cazul n =0, definim B0 ( x) = 1 . Polinoamele Bernoulli, împreună
cu dualele lor, formează o mulţime ortogonală a intervalului unitate: avem
1
 Bm ( x) Bn ( x)dx = mn
0
şi
- 121 -

 Bn ( x) Bn ( y ) = ( x − y ) .
n=0
Formula de sumare Euler – MacLaurin rezultă atunci ca o integrală peste
cea din urmă. Avem
1 
f ( x) =   Bn ( x) Bn ( y ) f ( y )dy
0 n=0
1  1  ( n −1)
=  f ( y )dy +  Bn ( x) f (1) − f ( n −1) (0)  −
0 n =1 n!  
1 1
(N )
−  BN +1 ( x − y ) f ( y )dy.
( N + 1)! 0
Luând x = 0, şi rearanjând termenii, obţinem formula cunoscută, împreună
cu eroarea. De notat că numerele Bernoulli sunt definite ca Bn = Bn(0), şi că
acestea se anulează pentru n impar mai mare decât 1. Această derivaţie nu
presupune că f(x) este netedă şi că se comportă bine; anume, că f poate fi
aproximată prin polinoame; echivalent, că f este o funcţie analitică reală.
Formula de sumare Euler – MacLaurin poate fi astfel văzută a fi un
rezultat al reprezentării funcţiei pe intervalul unitate prin produsul direct al
polinoamelor Bernoulli şi al dualelor lor. Oricât, reprezentarea nu este completă
pe mulţimea funcţiile pătrat integrabile. Dezvoltarea în termenii polinoamelor
Bernoulli are un nucleu netrivial. În particular, sin(2πnx) este într-un nucleu;
integrala lui sin(2πnx) se anulează pe intervalul unitate, fiind diferenţa
derivatelor ei în capetele intervalului.

7.7. T – integrarea
T – integrarea este o tehnică de integrare numerică dezvoltată de Jon
Michael Smith în 1970 pentru a facilita comanda şi controlul avionului.
Prescurtare pentru “integrare numerică tunabilă” ea foloseşte un pas fix ca
mărime şi o formulă iterativă care depinde de faza şi parametrii câştigaţi.
Fie f ( x) integrantul şi P şi G faza şi parametrii câştigaţi. În plus, limita
din membrul stâng al integralei este notată prin x0 şi x este mărimea pasului.
T – integrarea se defineşte prin formula recursivă:
Fn = Fn −1 + G x ( Pf n + (1 − P) f n −1 ) .

Aici, f n este notaţia pentru f ( xn ) . Cantitatea Fn aproximează


x0 + nx
 f ( x)dx .
x0

- 122 -
Dacă G = 1, atunci metoda se reduce la următoarele tehnici binecunoscute
de integrare numerică pentru valorile date de P:
• P = 0: regula stângă a dreptunghiului,
• P = 1/2: regula trapezului,
• P = 1: regula dreaptă a dreptunghiului.
T – integrarea poate fi acordată la problema care este folosită pentru
rezolvare. T – integrarea este bazată pe teoria informaţiei, nu pe teoria
aproximării. T – integrarea are un domeniu simplu de frecvenţă de ajustare a
parametrilor: un parametru de ajustare a fazei şi un parametru de ajustare
câştigat. Interesant, pentru probleme open-loop, fixând câştigul şi variind faza
obţinem toţi integratorii numerici de prim ordin şi un infinit de noi integratori
până acum necunoscuţi. Pentru aplicaţiile closed loop T – integrarea conduce la
o infinitate de integratori neclasici care produce integrarea numerică exactă a
sistemelor liniare şi integrarea aproape exactă a sistemelor neliniare.
Pentru aplicaţiile asupra sistemelor de informaţie (calculator, control,
comunicare şi simulare) T – integratorul simplu de prim ordin face toţi
integratorii numerici bazaţi pe teoria clasică a aproximării. Simularea mişcării
avionului pentru diferite configuraţii aviatice (roată sus, roată jos, clapă sus,
clapă jos, motor afară etc.) şi condiţiile dinamice (decolarea, aterizarea etc.)
devine o simplă problemă de tunare a T – integratorului la condiţiile de zbor
care sunt simulate. În acest sens, T – integratorul se adaptează la problema pe
care încearcă să o rezolve.

Discuţii finale:
Să se discute formulele Newton – Cotes, metoda dreptunghiurilor, regula
trapezului, metoda Romberg, regula Simpson, cvadratura gaussiană.

Tema propusă:
Să se realizeze o lucrare despre formulele Newton – Cotes, metoda
dreptunghiurilor, regula trapezului, metoda Romberg, regula Simpson,
cvadratura gaussiană.

- 123 -
BIBLIOGRAFIE

Bucur, C. M., Metode numerice, Ed. Facla, Timişoara, 1973.


Ciurea, E., Algoritmi Introducere în algoritmica grafurilor, Ed. Tehnică,
Bucureşti, 2001.
Coman, G., Analiză numerică, Ed. Libris, Cluj, 1995.
Croitoru, C., Tehnici de bază în optimizarea combinatorie, Ed.
Universităţii „Al. I. Cuza”, Iaşi, 1992.
Cuculescu, I., Analiză numerică, Ed. Tehnică, Bucureşti, 1967.
Demidovici, B.P., Maron, I., Elements de calcul numerique, Ed. Mir de
Mosou, 1973.
Dodescu, Gh., Toma, M., Metode de calcul numeric, E. D. P., Bucureşti,
1976.
Dodescu, Gh., Metode numerice în algebră, Ed. tehnică, Bucureşti, 1979.
Ichim, I., Marinescu, G., Metode de aproximare numerică, Ed.
Academiei R. S. R., Bucureşti, 1986.
Ignat, C., Ilioi, C., Jucan, T., Elemente de informatică şi calcul numeric,
Univ. „Al. I. Cuza”, Iaşi, Fac. de Matematică, 1989.
del Rio J. A. I., Cabezas J. M. R., Metodos Numericas, Teoria, problemas y
practicas con MATLAB, Ed. Piramide, 2002.
Knut, D. E., Sortare şi căutare, vol. 3, Tratat de programarea
calculatoarelor, Ed. Tehnică, Bucureşti, 1976.
Livovschi, L., Georgescu, H., Sinteza şi analiza algoritmilor, Ed.
Ştiinţifică şi Enciclopedică, Bucureşti, 1986.
Melhorn, K., Data Structures and Algorithms, Springer-Verlag, Berlin,
1984.
Mihu, C., Metode numerice în algebra liniară, Ed. Tehnică, Bucureşti,
1977.
Popovici, P., Cira, O., Rezolvarea numerică a ecuaţiilor neliniare,
Ed.Signata,Timişoara,1992.
Press, W. H., Teuklosky, S. A., Vetterling, W. T., Flannery, B. P.,
Numerical Recipes in C: The Art of scientific Computing, (Cambridge
University Press, Cambridge, 1992).
Scheiber, E., Metode numerice, Univ. Transilvania din Braşov, Facultatea
de Matematică – Informatică, (electronic).
Toma, M., Odăgescu, I., Metode numerice şi subrutine, Ed. Tehnică,
Bucureşti, 1980.
Vladislav, T., Raşa, I., Analiză numerică, Ed. Tehnică, Bucureşti, 1997.
Vraciu, G., Popa, A., Metode numerice cu aplicaţii în tehnica de calcul,
Scrisul românesc, Craiova, 1982.
***, Borland International, Inc. Borland C++, Programming Guide
(Borland International, Scotts wally, CA, 1992).
- 124 -
- 125 -

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