Analiz˘ a numeric˘ a

O introducerere bazat˘ a pe MATLAB
Radu Tiberiu Trˆımbit ¸as¸
ii
Referent ¸i:
Prof. univ. dr. Gheorghe Coman
Prof. univ. dr. Octavian Agratini
Prefat ¸˘ a
Lloyd N. Trefethen a propus urm˘ atoarea definit ¸ie a Analizei numerice:
Analiza numeric˘ a este studiul algoritmilor pentru rezolvarea problemelor
matematicii continue.
Cuvˆ antul cheie este acela de algoritmi. Des¸i foarte multe lucr˘ ari nu evident ¸iaz˘ a acest lucru, ˆın
centrul atent ¸iei Analizei numerice st˘ a proiectarea s¸i analiza algoritmilor de rezolvare a unei
anumite clase de probleme.
Problemele sunt cele din matematica continu˘ a. ,,Continu˘ a” ˆınseamn˘ a aici faptul c˘ a vari-
abilele ce intervin aici sunt reale sau complexe; opusul lui continuu este discret. Pe scurt,
am putea spune c˘ a Analiza numeric˘ a este Algoritmic˘ a continu˘ a, ˆın contrast cu Algoritmica
clasic˘ a, care este Algoritmic˘ a discret˘ a.
Este clar c˘ a deoarece numerele reale s¸i complexe nu pot fi reprezentate exact ˆın calculator,
ele trebuie s˘ a fie aproximate printr-o reprezentare finit˘ a. Din acest moment intervin erorile
de rotunjire s¸i iar este clar c˘ a studiul lor este unul din obiectivele importante ale Analizei
numerice. Au existat s¸i mai exist˘ a ˆınc˘ a opinii care sust ¸in c˘ a acesta este cel mai important
obiectiv. Un argument ˆın sprijinul acestei idei, ˆınafar˘ a de omniprezent ¸a erorilor, este dat de
metodele exacte de rezolvare a sistemelor de ecuat ¸ii liniare, cum ar fi eliminarea gaussian˘ a.
Dar, cele mai multe probleme ale matematicii continue nu pot fi rezolvate prin algoritmi
as¸a-zis¸i finit ¸i, chiar presupunˆ and prin absurd c˘ a am lucra ˆın aritmetic˘ a cu precizie exact˘ a.
Un prim exemplu care se poate da aici este problema rezolv˘ arii unei ecuat ¸ii polinomiale.
Acest lucru se evident ¸iaz˘ a la problemele de valori s¸i vectori proprii, dar apar ˆın orice prob-
lem˘ a ce presupune termeni neliniari sau derivate – determinarea zerourilor, cuadraturi, ecuat ¸ii
diferent ¸iale s¸i integrale, optimizare s¸.a.m.d.
Chiar dac˘ a erorile de rotunjire ar dispare, Analiza numeric˘ a ar r˘ amˆ ane. Aproximarea
numerelor, obiectivul aritmeticii ˆın virgul˘ a flotant˘ a, este un subiect dificil s¸i obositor. Un
obiectiv mai profund al Analizei numerice este aproximarea necunoscutelor, nu a cantit˘ at ¸ilor
cunoscute. Scopul este convergent ¸a rapid˘ a a aproximat ¸iilor s¸i mˆ andria specialis¸tilor din acest
domeniu este aceea c˘ a, pentru multe probleme s-au inventat algoritmi care converg extrem de
v
vi Prefat ¸˘ a
rapid. Dezvoltarea pachetelor de calcul simbolic a mics¸orat important ¸a erorilor de rotunjire,
f˘ ar˘ a a mics¸ora important ¸a vitezei de convergent ¸˘ a a algoritmilor.
Definit ¸ia de mai sus nu surprinde cˆ ateva aspecte importante : c˘ a aces¸ti algoritmi sunt
implementat ¸i pe calculatoare, a c˘ aror arhitectur˘ a poate fi o parte important˘ a a problemei; c˘ a
fiabilitatea s¸i eficient ¸a sunt obiective supreme; c˘ a anumit ¸i specialis¸ti ˆın analiza numeric˘ a scriu
programe s¸i alt ¸ii demonstreaz˘ a teoreme
1
; s¸i lucrul cel mai important, c˘ a toat˘ a munca este
aplicat˘ a, aplicat˘ a cu succes la mii de aplicat ¸ii, pe milioane de computere din toat˘ a lumea.
,,Problemele matematicii continue” sunt problemele pe care s¸tiint ¸a s¸i ingineria sunt constru-
ite; f˘ ar˘ a metode numerice, s¸tiint ¸a s¸i ingineria, as¸a cum sunt ele practicate ast˘ azi ar ajunge
repede ˆın impas. Ele sunt de asemenea problemele care au preocupat cei mai mult ¸i matem-
aticieni de la Newton pˆ an˘ a azi. La fel ca s¸i cei ce se ocup˘ a de matematica pur˘ a, specialis¸tii ˆın
Analiza numeric˘ a sunt mos¸tenitorii marii tradit ¸ii a lui Euler, Lagrange, Gauss s¸i a altor mari
matematicieni.
Din motivele amintite mai sus am incercat s˘ a realizez o lucrare ˆın care s˘ a existe un echili-
bru ˆıntre teorie, aspectele algoritmice s¸i implement˘ arile practice. S-a optat pentru MATLAB
7. Mult ¸umesc doamnei Courtney Esposito de la Mathworks Inc. pentru amabilitatea de a-mi
pune la dispozit ¸ie documentat ¸ia s¸i kit-ul de instalare.
Pentru a desc˘ arca sursele din aceast˘ a carte s¸i solut ¸iile problemelor trimitem cititorul la
pagina de web a autorului: http://www.math.ubbcluj.ro/
˜
tradu.
Radu Tiberiu Trˆımbit ¸as¸
Cluj-Napoca, februarie 2005
1
exist˘ a mult ¸i specialis¸ti foarte buni care le fac pe amˆ andou˘ a
Cuprins
1. Introducere ˆın MATLAB 1
1.1. Lansarea MATLAB s¸i sistemul de help . . . . . . . . . . . . . . . . . . . . . 2
1.2. Modul calculator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3. Matrice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3.1. Generarea matricelor . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.3.2. Indexarea s¸i notat ¸ia ,,:” . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.3.3. Operat ¸ii ˆın sens matricial s¸i ˆın sens tablou . . . . . . . . . . . . . . . 12
1.3.4. Analiza datelor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.3.5. Operatori relat ¸ionali s¸i logici . . . . . . . . . . . . . . . . . . . . . . 18
1.4. Programarea ˆın MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
1.4.1. Fluxul de control . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
1.4.2. Fis¸iere M . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
1.4.3. Argumente funct ¸ie . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
1.4.4. Num˘ ar variabil de argumente . . . . . . . . . . . . . . . . . . . . . . 32
1.4.5. Variabile globale . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
1.4.6. Recursivitate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
1.4.7. Alte tipuri numerice . . . . . . . . . . . . . . . . . . . . . . . . . . 36
1.4.8. Controlul erorilor . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
1.5. Toolbox-urile Symbolic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
2. Grafic˘ a ˆın MATLAB 49
2.1. Grafice bidimensionale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
2.1.1. Grafice de baz˘ a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
2.1.2. Axe s¸i adnotarea . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
2.1.3. Mai multe grafice pe aceeas¸i figur˘ a . . . . . . . . . . . . . . . . . . 58
2.2. Grafice tridimensionale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
vii
viii Cuprins
2.3. Salvarea s¸i imprimarea graficelor . . . . . . . . . . . . . . . . . . . . . . . . 68
2.4. Facilit˘ at ¸i grafice noi ˆın MATLAB 7 . . . . . . . . . . . . . . . . . . . . . . . 69
Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
3. Elemente de Teoria erorilor s¸i aritmetic˘ a ˆın virgul˘ a flotant˘ a 71
3.1. Probleme numerice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
3.2. M˘ asuri ale erorii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
3.3. Eroarea propagat˘ a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
3.4. Reprezentarea ˆın virgul˘ a flotant˘ a . . . . . . . . . . . . . . . . . . . . . . . . 76
3.4.1. Parametrii reprezent˘ arii . . . . . . . . . . . . . . . . . . . . . . . . . 76
3.4.2. Anularea . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
3.5. Standardizarea reprezent˘ arii ˆın virgul˘ a flotant˘ a . . . . . . . . . . . . . . . . . 79
3.5.1. Parametrii standardului . . . . . . . . . . . . . . . . . . . . . . . . . 79
3.5.2. Cantit˘ at ¸i speciale . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
3.6. Numere ˆın virgul˘ a flotant˘ a ˆın MATLAB . . . . . . . . . . . . . . . . . . . . 81
3.7. Condit ¸ionarea unei probleme . . . . . . . . . . . . . . . . . . . . . . . . . . 85
3.8. Condit ¸ionarea unui algoritm . . . . . . . . . . . . . . . . . . . . . . . . . . 87
3.9. Eroarea global˘ a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
3.10. Probleme prost condit ¸ionate s¸i probleme incorect puse . . . . . . . . . . . . 89
3.11. Stabilitatea . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
3.11.1. Notat ¸ii asimptotice . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
3.11.2. Precizie s¸i stabilitate . . . . . . . . . . . . . . . . . . . . . . . . . . 92
3.11.3. Analiza regresiv˘ a a erorilor . . . . . . . . . . . . . . . . . . . . . . . 93
Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
4. Rezolvarea numeric˘ a a sistemelor de ecuat ¸ii algebrice liniare 97
4.1. Elemente de Analiz˘ a matricial˘ a . . . . . . . . . . . . . . . . . . . . . . . . . 98
4.2. Condit ¸ionarea unui sistem liniar . . . . . . . . . . . . . . . . . . . . . . . . 104
4.3. Metode exacte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
4.3.1. Metoda elimin˘ arii a lui Gauss . . . . . . . . . . . . . . . . . . . . . 109
4.4. Metode bazate pe factorizare . . . . . . . . . . . . . . . . . . . . . . . . . . 114
4.4.1. Descompunerea LU . . . . . . . . . . . . . . . . . . . . . . . . . . 114
4.4.2. Descompunere LUP . . . . . . . . . . . . . . . . . . . . . . . . . . 116
4.4.3. Factorizarea Cholesky . . . . . . . . . . . . . . . . . . . . . . . . . 118
4.4.4. Descompunerea QR . . . . . . . . . . . . . . . . . . . . . . . . . . 121
4.5. Rafinarea iterativ˘ a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
4.6. Algoritmul lui Strassen pentru ˆınmult ¸irea matricelor . . . . . . . . . . . . . 128
4.7. Rezolvarea sistemelor de ecuat ¸ii liniare ˆın MATLAB . . . . . . . . . . . . . 131
4.7.1. Sisteme p˘ atratice . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
4.7.2. Sisteme supradeterminate . . . . . . . . . . . . . . . . . . . . . . . 132
4.7.3. Sisteme subdeterminate . . . . . . . . . . . . . . . . . . . . . . . . 133
4.7.4. Factorizarea LU s¸i Cholesky . . . . . . . . . . . . . . . . . . . . . . 134
4.7.5. Factorizarea QR . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
4.8. Rezolvarea iterativ˘ a a sistemelor algebrice liniare . . . . . . . . . . . . . . . 139
Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
Cuprins ix
5. Aproximarea funct ¸iilor 153
5.1. Aproximat ¸ie prin metoda celor mai mici p˘ atrate . . . . . . . . . . . . . . . . 156
5.1.1. Produse scalare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
5.1.2. Ecuat ¸iile normale . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
5.1.3. Eroarea ˆın metoda celor mai mici p˘ atrate. Convergent ¸a . . . . . . . . 161
5.1.4. Exemple de sisteme ortogonale . . . . . . . . . . . . . . . . . . . . 163
5.1.5. Exemple de polinoame ortogonale . . . . . . . . . . . . . . . . . . . 166
5.2. Polinoame s¸i potrivirea datelor ˆın MATLAB . . . . . . . . . . . . . . . . . . 180
5.3. Interpolare polinomial˘ a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
5.3.1. Spat ¸iul H
n
[a, b] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
5.3.2. Interpolare Lagrange . . . . . . . . . . . . . . . . . . . . . . . . . . 189
5.3.3. Interpolare Hermite . . . . . . . . . . . . . . . . . . . . . . . . . . 193
5.3.4. Expresia erorii de interpolare . . . . . . . . . . . . . . . . . . . . . . 197
5.3.5. Convergent ¸a interpol˘ arii Lagrange . . . . . . . . . . . . . . . . . . . 200
5.4. Calculul eficient al polinoamelor de interpolare . . . . . . . . . . . . . . . . 207
5.4.1. Metode de tip Aitken . . . . . . . . . . . . . . . . . . . . . . . . . . 207
5.4.2. Metoda diferent ¸elor divizate . . . . . . . . . . . . . . . . . . . . . . 209
5.4.3. Diferent ¸e finite: formula lui Newton progresiv˘ a s¸i regresiv˘ a . . . . . . 213
5.4.4. Diferent ¸e divizate cu noduri multiple . . . . . . . . . . . . . . . . . 215
5.5. Interpolare spline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
5.5.1. Spline liniare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
5.5.2. Interpolarea cu spline cubice . . . . . . . . . . . . . . . . . . . . . 220
5.5.3. Propriet˘ at ¸i de minimalitate ale funct ¸iilor spline cubice . . . . . . . . 225
5.6. Interpolare ˆın MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
6. Aproximare uniform˘ a 235
6.1. Polinoamele lui Bernstein . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
6.2. B-spline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
6.2.1. Not ¸iuni s¸i rezultate de baz˘ a . . . . . . . . . . . . . . . . . . . . . . . 241
6.2.2. Algoritmul de evaluare a unui B-spline . . . . . . . . . . . . . . . . 243
6.2.3. Aplicat ¸ii ˆın grafica pe calculator . . . . . . . . . . . . . . . . . . . . 244
6.2.4. Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
6.3. Funct ¸ii spline cu variat ¸ie diminuat˘ a . . . . . . . . . . . . . . . . . . . . . . . 251
6.4. Operatori liniari s¸i pozitivi . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
6.5. Cea mai bun˘ a aproximare uniform˘ a . . . . . . . . . . . . . . . . . . . . . . . 260
Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
7. Aproximarea funct ¸ionalelor liniare 263
7.1. Introducere . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
7.2. Derivare numeric˘ a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
7.3. Integrare numeric˘ a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
7.3.1. Formula trapezului s¸i formula lui Simpson . . . . . . . . . . . . . . 269
7.3.2. Formule Newton-Cotes cu ponderi s¸i formule de tip Gauss . . . . . . 274
7.3.3. Propriet˘ at ¸i ale cuadraturilor gaussiene . . . . . . . . . . . . . . . . . 277
x Cuprins
7.4. Cuadraturi adaptive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
7.5. Cuadraturi iterate. Metoda lui Romberg . . . . . . . . . . . . . . . . . . . . 286
7.6. Cuadraturi adaptive II . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
7.7. Integrare numeric˘ a ˆın MATLAB . . . . . . . . . . . . . . . . . . . . . . . . 291
Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
8. Rezolvarea numeric˘ a a ecuat ¸iilor neliniare 297
8.1. Ecuat ¸ii neliniare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
8.2. Iterat ¸ii, convergent ¸˘ a s¸i eficient ¸˘ a . . . . . . . . . . . . . . . . . . . . . . . . . 298
8.3. Metoda s¸irurilor Sturm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300
8.4. Metoda falsei pozit ¸ii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302
8.5. Metoda secantei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
8.6. Metoda lui Newton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307
8.7. Metoda aproximat ¸iilor succesive . . . . . . . . . . . . . . . . . . . . . . . . 310
8.8. Metoda lui Newton pentru r˘ ad˘ acini multiple . . . . . . . . . . . . . . . . . . 311
8.9. Ecuat ¸ii algebrice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
8.10. Metoda lui Newton ˆın R
n
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
8.11. Metode quasi-Newton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316
8.11.1. Interpolare liniar˘ a . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
8.11.2. Metode de modificare . . . . . . . . . . . . . . . . . . . . . . . . . 318
8.12. Ecuat ¸ii neliniare ˆın MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . 321
Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
9. Valori s¸i vectori proprii 327
9.1. Valori proprii s¸i r˘ ad˘ acini ale polinoamelor . . . . . . . . . . . . . . . . . . . 328
9.2. Terminologie s¸i descompunere Schur . . . . . . . . . . . . . . . . . . . . . . 329
9.3. Iterat ¸ia vectorial˘ a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332
9.4. Metoda QR – teoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335
9.5. Metoda QR – practica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338
9.5.1. Metoda QR clasic˘ a . . . . . . . . . . . . . . . . . . . . . . . . . . . 338
9.5.2. Deplasare spectral˘ a . . . . . . . . . . . . . . . . . . . . . . . . . . . 344
9.5.3. Metoda QR cu pas dublu . . . . . . . . . . . . . . . . . . . . . . . . 346
9.6. Valori s¸i vectori proprii ˆın MATLAB . . . . . . . . . . . . . . . . . . . . . . 351
Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
10. Rezolvarea numeric˘ a a ecuat ¸iilor diferent¸iale ordinare 357
10.1. Ecuat ¸ii diferent ¸iale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358
10.2. Metode numerice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359
10.3. Descrierea local˘ a a metodelor cu un pas . . . . . . . . . . . . . . . . . . . . 360
10.4. Exemple de metode cu un pas . . . . . . . . . . . . . . . . . . . . . . . . . 361
10.4.1. Metoda lui Euler . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361
10.4.2. Metoda dezvolt˘ arii Taylor . . . . . . . . . . . . . . . . . . . . . . . 363
10.4.3. Metode de tip Euler ˆımbun˘ at˘ at ¸ite . . . . . . . . . . . . . . . . . . . . 364
10.5. Metode Runge-Kutta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365
10.6. Descrierea global˘ a a metodelor cu un pas . . . . . . . . . . . . . . . . . . . 370
Cuprins xi
10.6.1. Stabilitatea . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372
10.6.2. Convergent ¸a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375
10.6.3. Asimptotica erorii globale . . . . . . . . . . . . . . . . . . . . . . . 376
10.7. Monitorizarea erorilor s¸i controlul pasului . . . . . . . . . . . . . . . . . . . 379
10.7.1. Estimarea erorii globale . . . . . . . . . . . . . . . . . . . . . . . . 379
10.7.2. Estimarea erorii de trunchiere . . . . . . . . . . . . . . . . . . . . . 381
10.7.3. Controlul pasului . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384
10.8. Ecuat ¸ii diferent ¸iale ordinare ˆın MATLAB . . . . . . . . . . . . . . . . . . . 393
10.8.1. Rezolvitori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393
10.8.2. Exemple non-stiff . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394
10.8.3. Opt ¸iuni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397
10.8.4. Ecuat ¸ii stiff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399
10.8.5. Tratarea evenimentelor . . . . . . . . . . . . . . . . . . . . . . . . . 406
10.8.6. Ecuat ¸ii implicite . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414
Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415
11. Aproxim˘ ari ˆın mai multe variabile 423
11.1. Aproximarea funct ¸iilor de mai multe variabile pe un domeniu rectangular . . 424
11.2. Integrarea numeric˘ a a funct ¸iilor de mai multe variabile . . . . . . . . . . . . 432
11.2.1. Considerat ¸ii de implementare . . . . . . . . . . . . . . . . . . . . . 437
11.3. Aproxim˘ ari ˆın mai multe variabile ˆın MATLAB . . . . . . . . . . . . . . . . 439
11.3.1. Interpolarea funct ¸iilor de mai multe variabile ˆın MATLAB . . . . . . 439
11.3.2. Calculul integralelor duble ˆın MATLAB . . . . . . . . . . . . . . . . 442
Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443
Bibliografie 445
Indice 450
xii Cuprins
Lista surselor MATLAB
1.1 Funct ¸ia stat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
1.2 Funct ¸ia sqrtn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
1.3 Funct ¸ia fd deriv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
1.4 Funct ¸ia companb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
1.5 Funct ¸ia momente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
1.6 Funct ¸ia koch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
1.7 Fulgul lui Koch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
2.1 Reprezentarea grafic˘ a a unei funct ¸ii implicite . . . . . . . . . . . . . . . . . 63
3.1 Calculul lui eps - varianta 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
3.2 Calculul lui eps - varianta 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
4.1 Rezolv˘ a sistemul Ax = b prin metoda elimin˘ arii a lui Gauss cu pivot scalat
pe coloan˘ a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
4.2 Descompunere LUP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
4.3 Substitut ¸ie direct˘ a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
4.4 Substitut ¸ie invers˘ a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
4.5 Descompunere Cholesky . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
4.6 Factorizare QR utilizˆ and reflexii Householder . . . . . . . . . . . . . . . . . 124
4.7 Rezolvarea sistemului Ax = b prin metoda QR . . . . . . . . . . . . . . . . 125
4.8 Algoritmul lui Strassen pentru ˆınmult ¸irea a dou˘ a matrice . . . . . . . . . . . 129
4.9 Metoda lui Jacobi pentru sisteme liniare . . . . . . . . . . . . . . . . . . . . 143
4.10 Metoda SOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
4.11 Determinarea parametrului optim de relaxare . . . . . . . . . . . . . . . . . 146
5.1 Calculul polinoamelor Legendre cu relat ¸ia de recurent ¸˘ a . . . . . . . . . . . . 169
5.2 Calculul coeficient ¸ilor Legendre . . . . . . . . . . . . . . . . . . . . . . . . 169
5.3 Aproximare ˆın sensul celor mai mici p˘ atrate cu polinoame Legendre . . . . . 169
5.4 Aproximare ˆın sensul celor mai mici p˘ atrate cu polinoame Cebˆıs¸ev de spet ¸a I 174
5.5 Calculul polinoamelor Cebˆıs¸ev de spet ¸a I cu relat ¸ia de recurent ¸˘ a . . . . . . . 175
xiii
xiv LISTA SURSELOR MATLAB
5.6 Aproximare ˆın sensul celor mai mici p˘ atrate cu polinoame Cebˆıs¸ev de spet ¸a I
– continuare: calculul coeficient ¸ilor Fourier . . . . . . . . . . . . . . . . . . 175
5.7 Aproximant˘ a Cebˆıs¸ev discret˘ a . . . . . . . . . . . . . . . . . . . . . . . . . 176
5.8 Coeficient ¸ii aproximantei Cebˆıs¸ev discrete . . . . . . . . . . . . . . . . . . . 176
5.9 Test aproximante mcmmp . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
5.10 Exemplu de aproximare ˆın sensul celor mai mici p˘ atrate . . . . . . . . . . . . 187
5.11 Interpolare Lagrange . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
5.12 Calculul polinoamelor fundamentale Lagrange folosind facilit˘ at ¸i MATLAB.
Rezultatul este returnat ˆıntr-o matrice: o linie corespunde unui polinom fun-
damental, iar coloanele corespund punctelor in care se face evaluarea . . . . . 192
5.13 Contraexemplul lui Runge . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
5.14 Generarea tabelei diferent ¸elor divizate . . . . . . . . . . . . . . . . . . . . . 211
5.15 Calculul formei Newton a polinomului de interpolare Lagrange . . . . . . . . 212
5.16 Generarea tabelei de diferent ¸e divizate cu noduri duble . . . . . . . . . . . . 218
6.1 Implementarea algoritmului Cox-deBoor pentru calculul B-splinelor . . . . . 247
6.2 Implementarea algoritmului de Casteljau pentru curbe B´ ezier . . . . . . . . . 248
6.3 Calculul funct ¸iei spline cu variat ¸ie diminuat˘ a . . . . . . . . . . . . . . . . . 254
7.1 Aproximarea unei integrale prin formula repetat˘ a a trapezului . . . . . . . . . 271
7.2 Aproximarea unei integrale prin formula repetat˘ a a lui Simpson . . . . . . . . 272
7.3 Calculul nodurilor s¸i coeficient ¸ilor unei formule de cuadratur˘ a gaussiene . . . 281
7.4 Aproximarea unei integrale cu o formul˘ a de tip Gauss . . . . . . . . . . . . . 281
7.5 Generare formul˘ a Gauss-Legendre . . . . . . . . . . . . . . . . . . . . . . . 282
7.6 Generare formul˘ a Gauss-Cebˆıs¸ev de spet ¸a I . . . . . . . . . . . . . . . . . . 282
7.7 Generare formul˘ a Gauss-Cebˆıs¸ev de spet ¸a a II-a . . . . . . . . . . . . . . . . 282
7.8 Generare formul˘ a Gauss-Hermite . . . . . . . . . . . . . . . . . . . . . . . . 283
7.9 Generare formul˘ a Gauss-Laguerre . . . . . . . . . . . . . . . . . . . . . . . 283
7.10 Generare formul˘ a Gauss-Jacobi . . . . . . . . . . . . . . . . . . . . . . . . . 283
7.11 Cuadratur˘ a adaptiv˘ a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
7.12 Metoda lui Romberg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290
7.13 Cuadratura adaptiv˘ a, variant˘ a . . . . . . . . . . . . . . . . . . . . . . . . . . 292
8.1 Metoda secantei pentru ecuat ¸ii neliniare ˆın R . . . . . . . . . . . . . . . . . 307
8.2 Metoda lui Newton pentru ecuat ¸ii neliniare ˆın R . . . . . . . . . . . . . . . . 310
8.3 Metoda lui Newton ˆın R s¸i R
n
. . . . . . . . . . . . . . . . . . . . . . . . . 315
8.4 Metoda lui Broyden pentru sisteme neliniare . . . . . . . . . . . . . . . . . . 320
9.1 Tranformarea RQ a unei matrice Hessenberg . . . . . . . . . . . . . . . . . . 340
9.2 Trecerea la forma Hessenberg . . . . . . . . . . . . . . . . . . . . . . . . . 342
9.3 Metoda QR simpl˘ a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343
9.4 Metoda QR cu partit ¸ionare s¸i tratarea cazurilor 2 2 . . . . . . . . . . . . . 344
9.5 Calculul valorilor proprii ale unei matrice 2 2 . . . . . . . . . . . . . . . . 345
9.6 Iterat ¸ia QR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
9.7 Metoda QR cu deplasare spectral˘ a s¸i partit ¸ionare . . . . . . . . . . . . . . . 347
9.8 Metoda QR cu deplasare spectral˘ a, partit ¸ionare s¸i tratarea valorilor proprii
complexe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
9.9 Iterat ¸ie QR s¸i partit ¸ionare . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
9.10 Metoda QR cu dublu pas, partit ¸ionare s¸i tratarea matricelor 2 2 . . . . . . . 350
LISTA SURSELOR MATLAB xv
9.11 Iterat ¸ie QR cu dublu pas s¸i transformare Hessenberg . . . . . . . . . . . . . . 351
10.1 Metoda Runge-Kutta de ordinul 4 . . . . . . . . . . . . . . . . . . . . . . . 368
10.2 Implementarea unei metode Runge-Kutta cu pas constant cu tabel˘ a Butcher . 371
10.3 Init ¸ializare tabel˘ a Butcher RK4 . . . . . . . . . . . . . . . . . . . . . . . . . 371
10.4 Sistemul lui R¨ ossler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399
10.5 Problem˘ a stiff cu informat ¸ii despre jacobian . . . . . . . . . . . . . . . . . . 407
10.6 Problema celor dou˘ a corpuri . . . . . . . . . . . . . . . . . . . . . . . . . . 410
10.7 Funct ¸iile fox2 s¸i events pentru problema de urm˘ arire . . . . . . . . . . . 414
11.1 Interpolant bidimensional produs tensorial de tip Lagrange . . . . . . . . . . 428
11.2 Interpolant bidimensional sum˘ a boolean˘ a de tip Lagrange . . . . . . . . . . . 430
11.3 Aproximarea unei integrale duble pe dreptunghi . . . . . . . . . . . . . . . . 438
xvi LISTA SURSELOR MATLAB
CAPITOLUL 1
Introducere ˆın MATLAB
Cuprins
1.1. Lansarea MATLAB s¸i sistemul de help . . . . . . . . . . . . . . . . . . 2
1.2. Modul calculator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3. Matrice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3.1. Generarea matricelor . . . . . . . . . . . . . . . . . . . . . . . 6
1.3.2. Indexarea s¸i notat ¸ia ,,:” . . . . . . . . . . . . . . . . . . . . . . 10
1.3.3. Operat ¸ii ˆın sens matricial s¸i ˆın sens tablou . . . . . . . . . . . . 12
1.3.4. Analiza datelor . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.3.5. Operatori relat ¸ionali s¸i logici . . . . . . . . . . . . . . . . . . . 18
1.4. Programarea ˆın MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . 22
1.4.1. Fluxul de control . . . . . . . . . . . . . . . . . . . . . . . . . 22
1.4.2. Fis¸iere M . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
1.4.3. Argumente funct ¸ie . . . . . . . . . . . . . . . . . . . . . . . . . 30
1.4.4. Num˘ ar variabil de argumente . . . . . . . . . . . . . . . . . . . 32
1.4.5. Variabile globale . . . . . . . . . . . . . . . . . . . . . . . . . 34
1.4.6. Recursivitate . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
1.4.7. Alte tipuri numerice . . . . . . . . . . . . . . . . . . . . . . . . 36
1.4.8. Controlul erorilor . . . . . . . . . . . . . . . . . . . . . . . . . 39
1.5. Toolbox-urile Symbolic . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
MATLAB
1
este un sistem interactiv destinat calculelor numerice. Prima versiune MAT-
LAB a fost scris˘ a ˆın anii ’70 de Cleve Moler. MATLAB us¸ureaz˘ a sarcina utilizatorului de
1
MATLAB

este o marc˘ a ˆınregistrat˘ a a Mathworks Inc., Natick MA
1
2 Introducere ˆın MATLAB
a rezolva problemele numerice. Aceasta permite concentrarea asupra p˘ art ¸ii creatoare a re-
zolv˘ arii problemei s¸i ˆıncurajeaz˘ a experimentele. MATLAB utilizeaz˘ a algoritmi cunoscut ¸i s¸i
testat ¸i, ˆın care utilizatorul poate avea ˆıncredere. Operat ¸iile puternice se pot realiza us¸or cu un
num˘ ar mic de comenzi (de multe ori una sau dou˘ a). V˘ a putet ¸i programa propriul set de funct ¸ii
pentru aplicat ¸ia dumneavoastr˘ a. De asemenea, sunt disponibile facilit˘ at ¸i grafice excelente, iar
imaginile pot fi inserate ˆın documente L
A
T
E
X sau Word. Pentru o introducere mai detaliat˘ a ˆın
MATLAB a se vedea [30, 44, 39].
1.1. Lansarea MATLAB s¸i sistemul de help
Sub sistemul de operare Windows, MATLAB se lanseaz˘ a dˆ and un click dublu pe icon-
ul corespunz˘ ator sau selectˆ and programul din meniul de start. Prompterul din fereastra de
comand˘ a este indicat prin >>. MATLABpoate fi utilizat ˆın mai multe moduri: ca un calculator
avansat (cˆ and comenzile sunt introduse ˆın linia de comand˘ a de la tastatur˘ a), ca un limbaj de
programare de nivel ˆınalt s¸i sub form˘ a de rutine apelate dintr-un limbaj de programare, de
exemplu C.
Informat ¸iile de help pot fi obt ¸inute ˆın mai multe moduri:
• din linia de comand˘ a utilizˆ and comanda ’help subiect’;
• dintr-o fereastr˘ a de help separat˘ a, deschis˘ a prin meniul Help;
• utilizˆ and MATLAB helpdesk memorat pe disc sau CD.
Comanda help help da o scurt˘ a descriere a sistemului de help, iar help far˘ a nici un
parametru d˘ a o list˘ a a subiectelor de help. Primele linii arat˘ a astfel
HELP topics:
matlab\general - General purpose commands.
matlab\ops - Operators and special characters.
matlab\lang - Programming language constructs.
matlab\elmat - Elementary matrices and matrix manipulation.
matlab\elfun - Elementary math functions.
matlab\specfun - Specialized math functions.
matlab\matfun - Matrix functions - numerical linear algebra.
Pentru a obt ¸ine informat ¸ii de help despre funct ¸iile elementare se tasteaz˘ a
>> help elfun
Pentru a obt ¸ine doar un ecran la un moment dat se poate introduce ˆıntˆ ai comanda more on,
adic˘ a
>> more on
>> help elfun
Pentru a trece la urm˘ atoarea pagin˘ a se poate ap˘ asa orice tast˘ a.
O alt˘ a facilitate util˘ a este utilizarea unei comenzi de forma lookfor cuvant-cheie,
care caut˘ a ˆın fis¸ierele help un cuvˆ ant cheie. Propunem cititorului s˘ a testeze lookfor
1.2. Modul calculator 3
factorization, care d˘ a informat ¸ii despre rutinele de factorizare a matricelor, deosebit
de utile ˆın algebra liniar˘ a.
Pentru ˆıncep˘ atori s¸i cei care predau MATLAB demonstrat ¸iile sunt foarte utile. Un set
cuprinz˘ ator se poate lansa prin comanda
>> demo
Atent ¸ie, ea s¸terge toate variabilele!
ˆ
Inafar˘ a de facilitatea de help on-line, exist˘ a un sistem bazat pe hipertext, care d˘ a detalii
asupra asupra celor mai multe comenzi s¸i exemple. El este disponibil prin comanda doc.
1.2. Modul calculator
Operat ¸iile aritmetice de baz˘ a sunt + -
*
/ s¸i ridicarea la putere ˆ. Ordinea implicit˘ a a
operat ¸iilor se poate schimba cu ajutorul parantezelor.
MATLAB recunos¸te mai multe tipuri de numere:
• ˆıntregi, cum are fi 1362 sau -217897;
• reale, de exemplu 1.234, −10.76;
• complexe, cum ar fi 3.21 −4.3i, unde i =

−1;
• Inf, desemneaz˘ a infinitul;
• NaN, Not a Number, care se obt ¸ine ca rezultat al unei operat ¸ii ilegale sau al unei nede-
termin˘ ari din analiza matematic˘ a (0/0, ∞/∞, ∞−∞, etc.).
Notat ¸ia cu exponent este de asemenea utilizat˘ a:
−1.3412e + 03 = −1.3412 10
3
= −1341.2
−1.3412e −01 = −1.3412 10
−1
= −0.13412
Toate calculele se realizeaz˘ a ˆın virgul˘ a flotant˘ a. Formatul ˆın care MATLABafis¸eaz˘ a numerele
este controlat de comanda format. Tastat ¸i help format pentru o list˘ a complet˘ a. Tabela
urm˘ atoare d˘ a cˆ ateva exemple.
Comanda Exemple de ies¸iri
format short 31.4162(4 zecimale)
format short e 31.416e+01
format long e 3.141592653589793e+000
format short g 31.4162(4 zecimale)
format bank 31.42(2 zecimale)
Comanda format compact elimin˘ a liniile goale de la ies¸ire s¸i permite s˘ a se afis¸eze mai
mult˘ a informat ¸ie.
Numele de variabile ˆın MATLAB sunt formate din secvent ¸e de litere s¸i cifre, prima fiind
o liter˘ a. Exemple: x, y, z525, TotalGeneral. Se face distinct ¸ie ˆıntre literele mari s¸i cele
mici. Exist˘ a s¸i nume speciale, a c˘ aror folosire trebuie evitat˘ a, cum ar fi:
4 Introducere ˆın MATLAB
- eps = 2.2204e-16 = 2
−54
este epsilon-ul mas¸inii (vezi capitolul 3) care
reprezint˘ a cel mai mare num˘ ar cu proprietatea c˘ a 1+eps nu poate fi distins de 1;
- pi = π.
Dac˘ a se fac calcule cu numere complexe folosirea variabilelor i s¸i j este contraindicat˘ a,
deoarece ele desemneaz˘ a unitatea imaginar˘ a. D˘ am cˆ ateva exemple:
>>x = 3-2ˆ4
x =
-13
>>y = x
*
5
y =
-65
>>eps
ans =
2.2204e-016
Variabila special˘ a ans p˘ astreaz˘ a valoarea ultimei expresii evaluate. Ea poate fi utilizat˘ a ˆın
expresii, la fel ca orice alt˘ a variabil˘ a.
>>3-2ˆ4
ans =
-13
>>ans
*
5
ans =
-65
Dac˘ a dorim s˘ a suprim˘ am afis¸area ultimei expresii evaluate, vom pune caracterul ,,;” la
sfˆ ars¸itul expresiei. Pe o linie de comand˘ a se pot introduce mai multe expresii. Ele pot fi
separate prin virgul˘ a, caz ˆın care valoarea expresiei terminat˘ a cu virgul˘ a va fi afis¸at˘ a, sau cu
,,;”, caz ˆın care valoarea expresiei nu va fi afis¸at˘ a.
>> x=-13; y = 5
*
x, z = xˆ2+y, z2 = xˆ2-y;
y =
-65
z =
104
Dac˘ a dorim s˘ a salv˘ am variabile, o putem face cu comanda
>>save nume-fisier lista-variabile
unde variabilele din lista-variabile sunt separate prin blanc. Se pot folosi ˆın numele
de variabile construct ¸ii de tip wildcard, desemnate prin *. Rezultatul salv˘ arii se p˘ astreaz˘ a ˆın
fis¸ierul nume-fisier de tip .mat, ˆın format binar, specific MATLAB. Variabilele salvate
pot fi ˆınc˘ arcate prin
>>load nume-fisier
Se pot face salv˘ ari s¸i ˆınc˘ arc˘ ari s¸i ˆın format ascii, ˆın dubl˘ a precizie sau prin ad˘ augare la un
fis¸ier existent. Pentru detalii a se vedea help save s¸i help load.
Lista variabilelor utilizate ˆın sesiunea curent˘ a se poate vizualiza cu whos:
1.3. Matrice 5
cos, sin, tan, csc, sec, cot Funct ¸ii trigonometrice
acos, asin, atan, atan2, asec,
acsc, acot
Funct ¸ii trigonometrice inverse
cosh, sinh, tanh, sech, csch, coth Funct ¸ii hiperbolice
acosh, asinh, atanh, asech, acsch,
acoth
Funct ¸ii hiperbolice inverse
log, log2, log10, exp, pow2,
nextpow2
Funct ¸ii exponent ¸iale
ceil, fix, floor, round Rotunjiri
abs, angle, conj, imag, real Complexe
mod, rem, sign Rest, semn
airy, bessel
*
, beta
*
, erf
*
,
expint, gamma
*
, legendre
Funct ¸ii matematice
factor, gcd, isprime, lcm, primes,
nchoosek, perms, rat, rats
Funct ¸ii din teoria numerelor
cart2sph, cart2pol, pol2cart,
sph2cart
Transform˘ ari de coordonate
Tabela 1.1: Funct ¸ii elementare s¸i funct ¸ii matematice speciale ("fun
*
" indic˘ a existent ¸a mai
multor funct ¸ii al c˘ aror nume ˆıncepe cu ”fun”
>>whos
Name Size Bytes Class
ans 1x1 8 double array
i 1x1 8 double array
v 1x3 24 double array
x 1x1 8 double array
y 1x1 8 double array
z 1x1 8 double array
z2 1x1 8 double array
Grand total is 7 elements using 72 bytes
Comanda
>>diary nume-fisier
salveaz˘ a toate comenzile s¸i rezultatele afis¸ate pe ecran (cu except ¸ia celor ale comenzilor
grafice) ˆın fis¸ierul nume-fisier. Acest proces de ,,jurnalizare” se termin˘ a prin
>>diary off
MATLAB dispune de un set bogat de funct ¸ii elementare, care apar organizate pe clase ˆın
tabela 1.1.
1.3. Matrice
Matricele sunt tipuri de date fundamentale ˆın MATLAB. Ele sunt de fapt tablouri mul-
tidimensionale ˆın dubl˘ a precizie. Cele mai folosite sunt matricele bidimensionale, care sunt
6 Introducere ˆın MATLAB
tablouri bidimensionale cu m linii s¸i n coloane. Vectorii linie (m = 1) s¸i coloan˘ a (n = 1)
sunt cazuri particulare de matrice bidimensionale.
1.3.1. Generarea matricelor
Exist˘ a mai multe moduri de a genera matrice. Unul dintre ele este cel explicit, care uti-
lizeaz˘ a parantezele p˘ atrate. Ca separatori ˆıntre elemente se folosesc blancul sau virgula ˆın
interiorul unei linii s¸i punctul s¸i virgula sau ,,newline” pentru a separa liniile:
>> A = [5 7 9
1 -3 -7]
A =
5 7 9
1 -3 -7
>> B = [-1 2 5; 9 0 5]
B =
-1 2 5
9 0 5
>> C = [0, 1; 3, -2; 4, 2]
C =
0 1
3 -2
4 2
Dimensiunea unei matrice se poate obt ¸ine cu comanda size:
>> v = size(A)
v =
2 3
>> [r, c] = size(A)
r =
2
c =
3
Prima form˘ a returneaz˘ a un vector cu dou˘ a elemente ce cont ¸ine num˘ arul de linii s¸i respectiv
de coloane. A doua pune dimensiunile ˆın variabile separate.
MATLAB are un set util de funct ¸ii pentru construirea unor matrice speciale, vezi
tabela 1.2. Matricele de zerouri, de elemente 1 s¸i matricele identice se obt ¸in cu funct ¸iile
zeros, ones s¸i respectiv eye. Toate au aceeas¸i sintax˘ a. De exemplu, zeros(m,n) sau
zeros([m,n]) produce o matrice m n de zerouri, ˆın timp ce zeros(n) produce o
matrice n n. Exemple:
>> zeros(2)
ans =
0 0
0 0
>> ones(2,3)
ans =
1 1 1
1.3. Matrice 7
zeros Matricea nul˘ a
ones Matrice format˘ a din elemente 1
eye Matricea identic˘ a
repmat Replicarea s¸i pavarea tablourilor
rand Numere aleatoare distribuite uniform
randn Numere aleatoare distribuite normal
linspace Vector de elemente echidistante
logspace Vector de elemente spat ¸iate logaritmic
Tabela 1.2: Funct ¸ii pentru generarea de matrice
1 1 1
>> eye(3,2)
ans =
1 0
0 1
0 0
O situat ¸ie comun˘ a se ˆıntˆ alnes¸te atunci cˆ and se dores¸te construirea unei matrice iden-
tice sau nule avˆ and o dimensiune egal˘ a cu a unei matrice date A. Aceasta se poate face cu
eye(size(A)). O funct ¸ie ˆınrudit˘ a cu size este funct ¸ia length: length(A) este cea
mai mare dintre dimensiunile lui A. Astfel, pentru un vector n 1 sau 1 n, x, length(x)
returneaz˘ a n.
Funct ¸iile rand s¸i randn genereaz˘ a matrice de numere (pseudo-)aleatoare, utilizˆ and
aceeas¸i sintax˘ a ca s¸i eye. Funct ¸ia rand produce o matrice de numere aleatoare avˆ and
distribut ¸ia uniform˘ a pe intervalul [0,1]. Funct ¸ia randn genereaz˘ a o matrice de numere
aleatoare avˆ and distribut ¸ia normal˘ a standard. Apelate f˘ ar˘ a argumente, ambele funct ¸ii produc
un singur num˘ ar aleator.
>> rand
ans =
0.4057
>> rand(3)
ans =
0.9355 0.8936 0.8132
0.9169 0.0579 0.0099
0.4103 0.3529 0.1389
ˆ
In simul˘ arile s¸i experimentele cu numere aleatoare este important ca secvent ¸ele de numere
aleatoare s˘ a fie reproductibile. Numerele produse de rand depind de starea generatorului.
Starea se poate seta prin comanda rand(’state’,j). Pentru j=0 generatorul rand este
setat ˆın starea init ¸ial˘ a (starea de la lansarea MATLAB). Pentru ˆıntregi j nenuli, generatorul
este setat pe a j-a stare. Starea lui randn se seteaz˘ a ˆın acelas¸i mod. Perioadele lui rand s¸i
randn, adic˘ a num˘ arul de termeni generat ¸i ˆınainte ca secvent ¸ele s˘ a ˆınceap˘ a s˘ a se repete este
mai mare decˆ at 2
1492
≈ 10
449
.
Matricele se pot construi s¸i ˆın form˘ a de bloc. Din matricea B, definit˘ a prin B=[1 2; 3
4], putem crea
8 Introducere ˆın MATLAB
>> C=[B, zeros(2); ones(2), eye(2)]
C =
1 2 0 0
3 4 0 0
1 1 1 0
1 1 0 1
Matricele diagonale pe blocuri se pot defini utilizˆ and funct ¸ia blkdiag, care este mai
us¸or de utilizat decˆ at notat ¸ia cu paranteze p˘ atrate. Exemplu:
>> A=blkdiag(2
*
eye(2),ones(2))
A =
2 0 0 0
0 2 0 0
0 0 1 1
0 0 1 1
Funct ¸ia repmat permite construirea de matrice prin repetarea de subblocuri:
repmat(A,m,n) creaz˘ a o matrice de m pe n blocuri ˆın care fiecare bloc este o copie a
lui A. Dac˘ a n lipses¸te, valoarea sa implicit˘ a este m. Exemplu:
>> A=repmat(eye(2),2)
A =
1 0 1 0
0 1 0 1
1 0 1 0
0 1 0 1
Sunt disponibile s¸i comenzi pentru manipularea matricelor; vezi tabela 1.3.
reshape Schimbarea dimensiunii
diag Matrice diagonale s¸i diagonale ale matricelor
blkdiag Matrice diagonal˘ a pe blocuri
tril Extragerea p˘ art ¸ii triunghiulare inferior
triu Extragerea p˘ art ¸ii triunghiulare inferior
fliplr Rotire matrice ˆın jurul axei de simetrie verticale
flipud Rotire matrice ˆın jurul axei de simetrie orizontale
rot90 Rotat ¸ia unei matrice cu 90 de grade
Tabela 1.3: Funct ¸ii de manipulare a matricelor
Funct ¸ia reshape schimb˘ a dimensiunile unei matrice: reshape(A,m,n) produce o
matrice m pe n ale c˘ arei elemente sunt luate coloan˘ a cu coloan˘ a din A. De exemplu:
>>A=[1 4 9; 16 25 36], B=reshape(A,3,2)
A =
1 4 9
16 25 36
B =
1 25
16 9
4 36
1.3. Matrice 9
Funct ¸ia diag lucreaz˘ a cu diagonalele unei matrice s¸i poate avea ca argument o matrice
sau un vector. Pentru un vector x, diag(x) este matricea cu diagonala principal˘ a x:
>>diag([1,2,3])
ans =
1 0 0
0 2 0
0 0 3
Mai general, diag(x,k) pune x pe diagonala cu num˘ arul k, unde k = 0 ˆınseamn˘ a diago-
nala principal˘ a, k > 0 specific˘ a diagonale situate deasupra diagonalei principale, iar k < 0
diagonale dedesubtul diagonalei principale:
>> diag([1,2],1)
ans =
0 1 0
0 0 2
0 0 0
>> diag([3 4],-2)
ans =
0 0 0 0
0 0 0 0
3 0 0 0
0 4 0 0
Pentru o matrice A, diag(A) este vectorul coloan˘ a format din elementele de pe diagonala
principal˘ a a lui A. Pentru a produce o matrice diagonal˘ a avˆ and aceas¸i diagonal˘ a ca A se va uti-
liza diag(diag(A)). Analog cazului vectorial, diag(A,k) produce un vector coloan˘ a
construit din a k-a diagonal˘ a a lui A. Astfel dac˘ a
A =
2 3 5
7 11 13
17 19 23
atunci
>> diag(A)
ans =
2
11
23
>> diag(A,-1)
ans =
7
19
tril(A) obt ¸ine partea triunghiular˘ a inferior a lui A (elementele situate pe diagonal˘ a
principal˘ a s¸i dedesubtul ei s¸i ˆın rest zero). Analog lucreaz˘ a triu(A) pentru partea triunghi-
ular˘ a superior. Mai general, tril(A,k) d˘ a elementele situate pe diagonala a k-a a lui A
s¸i dedesubtul ei, ˆın timp ce triu(A,k) d˘ a elementele situate pe a k-a diagonal˘ a a lui A s¸i
deasupra ei. Pentru A ca mai sus:
10 Introducere ˆın MATLAB
compan matrice companion
gallery colect ¸ie de matrice de test
hadamard matrice Hadamard
hankel matrice Hankel
hilb matrice Hilbert
invhilb inversa matricei Hilbert
magic p˘ atrat magic
pascal matricea Pascal (coeficient ¸i binomiali)
rosser matrice simetric˘ a pentru testarea valorilor proprii
toeplitz matrice Toeplitz
vander matrice Vandermonde
wilkinson matricea lui Wilkinson pentru testarea valorilor proprii
Tabela 1.4: Matrice speciale
>>tril(A)
ans =
2 0 0
7 11 0
17 19 23
>>triu(A,1)
ans =
0 3 5
0 0 13
0 0 0
>>triu(A,-1)
ans =
2 3 5
7 11 13
0 19 23
MATLABposed˘ a un set de funct ¸ii pentru generarea unor matrice speciale. Aceste matrice
au propriet˘ at ¸i interesante care le fac utile pentru construirea de exemple s¸i testarea algorit-
milor. Ele sunt date ˆın tabela 1.4. Vom exemplifica funct ¸iile hilb s¸i vander ˆın sect ¸iunea
4.2. Funct ¸ia gallery asigur˘ a accesul la o colect ¸ie bogat˘ a de matrice de test creat˘ a de
Nicholas J. Higham [32]. Pentru detalii vezi help gallery.
1.3.2. Indexarea s¸i notat¸ia ,,:”
Pentru a permite accesul s¸i atribuirea la nivel de submatrice, MATLAB are o notat ¸ie
puternic˘ a bazat˘ a pe caracterul ,,:”. Ea este utilizat˘ a pentru a defini vectori care act ¸ioneaz˘ a ca
indici. Pentru scalarii i s¸i j, i:j desemneaz˘ a vectorul linie cu elementele i, i+1, . . . j
(pasul este 1). Un pas diferit, s, se specific˘ a prin i:s:j. Exemple:
>> 1:5
ans =
1 2 3 4 5
1.3. Matrice 11
>> 4:-1:-2
ans =
4 3 2 1 0 -1 -2
>> 0:.75:3
ans =
0 0.7500 1.5000 2.2500 3.0000
Elementele individuale ale unei matrice se acceseaz˘ a prin A(i,j), unde i ≥ 1 s¸i j ≥ 1
(indicii zero sau negativi nu sunt admis¸i ˆın MATLAB). Notat ¸ia A(p:q,r:s) desemneaz˘ a
submatricea constˆ and din intersect ¸ia liniilor de la p la q s¸i coloanelor de la r la s a lui
A. Ca un caz special, caracterul ,,:” singur, ca specificator de linie s¸i coloan˘ a, desemneaz˘ a
toate elementele din acea linie sau coloan˘ a: A(:,j) este a j-a coloan˘ a a lui A, iar A(i,:)
este a i-a linie. Cuvˆ antul cheie end utilizat ˆın acest context desemneaz˘ a ultimul indice ˆın
dimensiunea specificat˘ a; astfel A(end,:) selecteaz˘ a ultima linie a lui A.
ˆ
In fine, o subma-
trice arbitrar˘ a poate fi selectat˘ a specificˆ and indicii de linie s¸i coloan˘ a individuali. De exemplu,
A([i,j,k],[p,q])produce submatricea dat˘ a de intersect ¸ia liniilor i, j s¸i k s¸i coloanelor
p s¸i q. Iat˘ a cˆ ateva exemple ce utilizeaz˘ a matricea
>> A = [
2 3 5
7 11 13
17 19 23
]
a primelor nou˘ a numere prime:
>> A(2,1)
ans =
7
>> A(2:3,2:3)
ans =
11 13
19 23
>> A(:,1)
ans =
2
7
17
>> A(2,:)
ans =
7 11 13
>> A([1 3],[2 3])
ans =
3 5
19 23
Un caz mai special este A(:)care desemneaz˘ a un vector coloan˘ a ce cont ¸ine toate elementele
lui A, as¸ezate coloan˘ a dup˘ a coloan˘ a, de la prima la ultima
>> B=A(:)
B =
12 Introducere ˆın MATLAB
2
7
17
3
11
19
5
13
23
Cˆ and apare ˆın partea stˆ ang˘ a a unei atriburi, A(:) completeaz˘ a A, p˘ astrˆ andu-i forma. Cu
astfel de notat ¸ie, matricea de numere prime 3 3, A, se poate defini prin
>> A=zeros(3); A(:)=primes(23); A=A’
A =
2 3 5
7 11 13
17 19 23
Funct ¸ia primes returneaz˘ a un vector de numere prime mai mici sau egale cu argumen-
tul ei. Transpunerea A = A’ (vezi sect ¸iunea 1.3.3) este necesar˘ a pentru a ordona numerele
prime dup˘ a linii nu dup˘ a coloane.
Legat˘ a de notat ¸ia ,,:” este funct ¸ia linspace, care ˆın loc de increment accept˘ a num˘ ar de
puncte: linspace(a,b,n) genereaz˘ a n puncte echidistante ˆıntre a s¸i b. Dac˘ a n lipses¸te,
valoarea sa implicit˘ a este 100. Exemplu:
>> linspace(-1,1,9)
ans =
Columns 1 through 7
-1.0000 -0.7500 -0.5000 -0.2500 0 0.2500 0.5000
Columns 8 through 9
0.7500 1.0000
Notat ¸ia [] ˆınseamn˘ a matricea vid˘ a, 0 0. Atribuirea lui [] unei linii sau unei matrice
este un mod de a s¸terge o linie sau o coloan˘ a a matricei:
>>A(2,:)=[]
A =
2 3 5
17 19 23
Acelas¸i efect se obt ¸ine cu A = A([1,3],:). Matricea vid˘ a este de asemenea util˘ a ca
indicator de pozit ¸ie ˆıntr-o list˘ a de argumente, as¸a cum se va vedea ˆın '1.3.4.
1.3.3. Operat ¸ii ˆın sens matricial s¸i ˆın sens tablou
Pentru scalarii a s¸i b, operat ¸iile +, -, / and ˆ produc rezultate evidente. Pe lˆ ang˘ a op-
eratorul uzual de ˆımp˘ art ¸ire, cu semnificat ¸ia
a
b
, MATLAB are operatorul de ˆımp˘ art ¸ire stˆ ang˘ a
(backslash `), cu semnificat ¸ia
b
a
. Pentru matrice, toate aceste operat ¸ii pot fi realizate ˆın sens
1.3. Matrice 13
Operat ¸ia Sens matricial Sens tablou
Adunare + +
Sc˘ adere - -
ˆ
Inmult ¸ire * .*
ˆ
Imp˘ art ¸ire stˆ ang˘ a ` .`
ˆ
Imp˘ art ¸ire uzual˘ a / ./
Ridicare la putere ˆ .ˆ
Tabela 1.5: Operat ¸ii pe matrice s¸i tablouri
matricial (ˆın conformitate cu regulile algebrei matriciale) sau ˆın sens tablou (element cu ele-
ment). Tabela 1.5 d˘ a lista lor.
Operat ¸iile de adunare s¸i sc˘ adere sunt identice atˆ at ˆın sens matricial cˆ at s¸i ˆın sens tablou.
Produsul A
*
B este ˆınmult ¸irea matricial˘ a uzual˘ a. Operatorii de ˆımp˘ art ¸ire / s¸i ` definesc solut ¸ii
ale sistemelor liniare: A`B este solut ¸ia X a lui A
*
X = B, ˆın timp ce A/B este solut ¸ia lui X
*
B
= A. Exemple:
>> A=[2,3,5; 7,11,13; 17,19,23]
A =
2 3 5
7 11 13
17 19 23
>> A=[1 2; 3 4], B=ones(2)
A =
1 2
3 4
B =
1 1
1 1
>> A+B
ans =
2 3
4 5
>> A
*
B
ans =
3 3
7 7
>> A\B
ans =
-1 -1
1 1
ˆ
Inmult ¸irea s¸i ˆımp˘ art ¸irea ˆın sens tablou, sau pe elemente, se specific˘ a precedˆ and operatorul
cu un punct. Dac˘ a A s¸i B sunt matrice de aceeas¸i dimensiune, atunci C = A.
*
B ˆınsemn˘ a
C(i,j)=A(i,j)
*
B(i,j) iar C = A.`B ˆınseamn˘ a C(i,j)=B(i,j)/A(i,j). Pen-
tru A s¸i B ca ˆın exemplul precedent:
>> A.
*
B
14 Introducere ˆın MATLAB
ans =
1 2
3 4
>> B./A
ans =
1.0000 0.5000
0.3333 0.2500
Inversa unei matrice p˘ atratice nesingulare se obt ¸ine cu funct ¸ia inv, iar determinantul
unei matrice p˘ atratice cu det.
Ridicarea la putere ˆ este definit˘ a ca putere a unei matrice, dar forma cu punct face ridi-
carea la putere element cu element. Astfel, dac˘ a A este o matrice p˘ atratic˘ a, atunci Aˆ2 este
A
*
A, dar A.ˆ2 se obt ¸ine ridicˆ and la p˘ atrat fiecare element al lui A:
>> Aˆ2, A.ˆ2
ans =
7 10
15 22
ans =
1 4
9 16
Operat ¸ia .ˆ permite ca exponentul s˘ a fie un tablou cˆ and dimensiunile bazei s¸i exponentului
coincid, sau cˆ and baza este un scalar:
>> x=[1 2 3]; y=[2 3 4]; Z=[1 2; 3 4];
>> x.ˆy
ans =
1 8 81
>> 2.ˆx
ans =
2 4 8
>> 2.ˆZ
ans =
2 4
8 16
Ridicarea la putere a matricelor este definit˘ a pentru toate puterile, nu numai pentru ˆıntregi
pozitivi. Dac˘ a n<0 este un ˆıntreg, atunci Aˆn este definit prin inv(A)ˆ(-n). Pentru p
neˆıntreg, Aˆp este evaluat˘ a utilizˆ and valorile proprii ale lui A; rezultatul poate fi incorect
sau imprecis dac˘ a A nu este diagonalizabil˘ a sau cˆ and A este prost condit ¸ionat˘ a din punct de
vedere al valorilor proprii.
Transpusa conjugat˘ a a matricei A se obt ¸ine cu A’. Dac˘ a A este real˘ a, atunci aceasta este
transpusa obis¸nuit˘ a. Transpusa f˘ ar˘ a conjugare se obt ¸ine cu A.’. Alternativele funct ¸ionale
ctranspose(A) s¸i transpose(A) sunt uneori mai convenabile.
ˆ
In cazul particular al vectorilor coloan˘ a x s¸i y, x’
*
y este produsul scalar, care se poate
obt ¸ine s¸i cu dot(x,y). Produsul vectorial a doi vectori se poate obt ¸ine cu cross. Exemplu:
>> x=[-1 0 1]’; y=[3 4 5]’;
>> x’
*
y
1.3. Matrice 15
ans =
2
>> dot(x,y)
ans =
2
>> cross(x,y)
ans =
-4
8
-4
La adunarea dintre un scalar s¸i o matrice, MATLAB va expanda scalarul ˆıntr-o matrice cu
toate elementele egale cu acel scalar. De exemplu
>> [4,3;2,1]+4
ans =
8 7
6 5
>> A=[1 -1]-6
A =
-5 -7
Totus¸i, dac˘ a atribuirea are sens f˘ ar˘ a expandare, atunci va fi interpretat˘ a ˆın acest mod. Astfel,
dac˘ a comanda precedent˘ a este urmat˘ a de A=1, A va deveni scalarul 1, nu ones(1,2). Dac˘ a
o matrice este ˆınmult ¸it˘ a sau ˆımp˘ art ¸it˘ a cu un scalar, operat ¸ia se realizeaz˘ a element cu element:
>> [3 4 5; 4 5 6]/12
ans =
0.2500 0.3333 0.4167
0.3333 0.4167 0.5000
Funct ¸iile de matrice ˆın sensul algebrei liniare au numele terminat ˆın m: expm, funm,
logm, sqrtm. De exemplu, pentru A = [2 2; 0 2],
>> sqrt(A)
ans =
1.4142 1.4142
0 1.4142
>> sqrtm(A)
ans =
1.4142 0.7071
0 1.4142
>> ans
*
ans
ans =
2.0000 2.0000
0 2.0000
1.3.4. Analiza datelor
Tabela 1.6 d˘ a funct ¸iile de baz˘ a pentru analiza datelor. Cel mai simplu mod de utilizare a
lor este s˘ a fie aplicate unui vector, ca ˆın exemplele
16 Introducere ˆın MATLAB
max Maximul
min Minimul
mean Media
median Mediana
std Abaterea medie p˘ atratic˘ a
var Dispersia
sort Sortare ˆın ordine cresc˘ atoare
sum Suma elementelor
prod Produsul elementelor
cumsum Suma cumulat˘ a
cumprod Produsul cumulat
diff Diferent ¸a elementelor
Tabela 1.6: Funct ¸ii de baz˘ a pentru analiza datelor
>> x=[4 -8 -2 1 0]
x =
4 -8 -2 1 0
>> [min(x) max(x)]
ans =
-8 4
>>sort(x)
ans =
-8 -2 0 1 4
>>sum(x)
ans =
-5
Funct ¸ia sort sorteaz˘ a cresc˘ ator. Pentru un vector real x, se poate face sortarea de-
scresc˘ atoare cu -sort(-x). Pentru vectori complecs¸i, sort sorteaz˘ a dup˘ a valorile ab-
solute.
Dac˘ a argumentele sunt matrice, aceste funct ¸ii act ¸ioneaz˘ a pe coloane. Astfel, max s¸i min
returneaz˘ a un vector ce cont ¸ine elementul maxim s¸i respectiv cel minim al fiec˘ arei coloane,
sum returneaz˘ a un vector ce cont ¸ine sumele coloanelor, iar sort sorteaz˘ a elementele din
fiecare coloan˘ a a unei matrice ˆın ordine cresc˘ atoare. Funct ¸iile min s¸i max pot returna un al
doilea argument care specific˘ a ˆın care componente sunt situate elementul minims¸i cel maxim.
De exemplu, dac˘ a
A =
0 -1 2
1 2 -4
5 -3 -4
atunci
>>max(A)
ans =
5 2 2
1.3. Matrice 17
>>[m,i]=min(A)
m =
0 -3 -4
i =
1 3 2
As¸a cum ne arat˘ a acest exemplu, dac˘ a exist˘ a dou˘ a sau mai multe elemente minimale ˆıntr-o
coloan˘ a, se returneaz˘ a numai indicele primului. Cel mai mic element dintr-o matrice se poate
obt ¸ine aplicˆ and min de dou˘ a ori succesiv:
>>min(min(A))
ans =
-4
sau utilizˆ and
>> min(A(:))
ans =
-4
Funct ¸iile max s¸i min pot fi f˘ acute s˘ a act ¸ioneze pe linie printr-un al treilea argument:
>>max (A,[],2)
ans =
2
2
5
Argumentul 2 din max(A,[],2) specific˘ a maximul dup˘ a a doua dimensiune, adic˘ a dup˘ a
indicele de coloan˘ a. Al doilea argument vid [] este necesar, deoarece max sau min cu dou˘ a
argumente returneaz˘ a maximul sau minimul celor dou˘ a argumente:
>>max(A,0)
ans =
0 0 2
1 2 0
5 0 0
Funct ¸iile sort s¸i sum pot fi s¸i ele f˘ acute s˘ a act ¸ioneze pe linii, printr-un al doilea argument.
Pentru detalii a se vedea help sort sau doc sort.
Funct ¸ia diff calculeaz˘ a diferent ¸e. Aplicat˘ a unui vector x de lungime n produce vectorul
[x(2)-x(1) x(3)-x(2) ... x(n)-x(n-1)] de lungime n-1. Exemplu
>>x=(1:8).ˆ2
x =
1 4 9 16 25 36 49 64
>>y=diff(x)
y =
3 5 7 9 11 13 15
>>z=diff(y)
z =
2 2 2 2 2 2
18 Introducere ˆın MATLAB
ischar Testeaz˘ a dac˘ a argumentul este s¸ir de caractere(string)
isempty Testeaz˘ a dac˘ a argumentul este vid
isequal Testeaz˘ a dac˘ a tablourile sunt identice
isfinite Testeaz˘ a dac˘ a elementele unui tablou sunt finite
isieee Testez˘ a dac˘ a mas¸ina utilizeaz˘ a aritmetica IEEE
isinf Testeaz˘ a dac˘ a elementele unui tablou sunt inf
islogical Testeaz˘ a dac˘ a argumentul este un tablou logic
isnan Test de NaN
isnumeric Testeaz˘ a dac˘ a argumentul este numeric
isreal Testeaz˘ a dac˘ a argumentul este tablou real
issparse Testeaz˘ a dac˘ a argumentul este tablou rar
Tabela 1.7: O select ¸ie de funct ¸ii logice is
*
1.3.5. Operatori relat ¸ionali s¸i logici
Operatorii relat ¸ionali ˆın MATLABsunt: == (egal), ˜=(diferit), < (mai mic), > (mai mare),
<= (mai mic sau egal) s¸i >= (mai mare sau egal). De notat c˘ a un singur egal = ˆınseamn˘ a
atribuire.
Comparat ¸ia ˆıntre scalari produce 1 dac˘ a relat ¸ia este adev˘ arat˘ a s¸i 0 ˆın caz contrar.
Comparat ¸iile sunt definite ˆıntre matrice de aceeas¸i dimensiune s¸i ˆıntre o matrice s¸i un scalar,
rezultatul fiind ˆın ambele cazuri o matrice de 0 s¸i 1. La comparat ¸ia matrice-matrice se com-
par˘ a perechile corespunz˘ atoare de elemente, pe cˆ and la comparat ¸ia matrice-scalar se compar˘ a
scalarul cu fiecare element. De exemplu:
>> A=[1 2; 3 4]; B = 2
*
ones(2);
>> A == B
ans =
0 1
0 0
>>A > 2
ans =
0 0
1 1
Pentru a testa dac˘ a dac˘ a matricele A s¸i B sunt identice, se poate utiliza expresia
isequal(A,B):
>> isequal(A,B)
ans =
0
Mai exist˘ a s¸i alte funct ¸ii logice ˆınrudite cu isequals¸i al c˘ aror nume ˆıncepe cu is. Oselect ¸ie
a lor apare ˆın tabela 1.7; pentru o list˘ a complet˘ a a se tasta doc is. Funct ¸ia isnan este util˘ a
deoarece testul x == NaN produce ˆıntotdeauna 0 (false), chiar dac˘ a x este NaN! (Un NaN
este prin definit ¸ie diferit de orice s¸i nu are o relat ¸ie de ordine cu nimic, vezi sect ¸iunea 3.4.)
Operatorii logici ˆın MATLAB sunt: & (s¸i), | (sau), ˜ (not), xor (sau exclusiv), all
(adev˘ arat dac˘ a toate elementele unui vector sunt nenule), any (adev˘ arat dac˘ a cel put ¸in un
element al unui vector este nenul). D˘ am cˆ ateva exemple:
1.3. Matrice 19
Nivel de precedent ¸˘ a Operator
1 (cea mai mare) transpusa (.´), putere(.ˆ), transpusa conjugat˘ a com-
plex˘ a(’), putere matricial˘ a(ˆ)
2 plus unar (+), minus unar (-), negat ¸ie (∼)
3 ˆınmult ¸ire (.
*
), ˆımp˘ art ¸ire dreapt˘ a (./), ˆımp˘ art ¸ire stˆ ang˘ a
(.`), ˆınmult ¸ire matricial˘ a (
*
), ˆımp˘ art ¸ire dreapt˘ a matricial˘ a
(/), ˆımp˘ art ¸ire stˆ ang˘ a matricial˘ a (`)
4 adunare (+), sc˘ adere (-)
5 dou˘ a puncte (:)
6 mai mic (<), mai mic sau egal (<=), mai mare (>), mai
mare sau egal (>=), egal (==), diferit (~=)
7 s¸i logic (&)
8 (cea mai mic˘ a) sau logic (|)
Tabela 1.8: Precedent ¸a operatorilor
>> x = [-1 1 1]; y = [1 2 -3];
>> x>0 & y>0
ans =
0 1 0
>> x>0 | y>0
ans =
1 1 1
>> xor(x>0,y>0)
ans =
1 0 1
>> any(x>0)
ans =
1
>>all(x>0)
ans =
0
De notat c˘ a xor trebuie apelat ca o funct ¸ie: xor(a,b). Operatorii logici and, or, not
s¸i cei relat ¸ionali pot fi apelat ¸i s¸i ˆın form˘ a funct ¸ional˘ a: and(a,b), . . . , eq(a,b), . . . (vezi
help ops).
Precedent ¸a operatorilor este rezumat˘ a ˆın tabela 1.8 (vezi help precedence). MAT-
LAB evalueaz˘ a operatorii de precedent ¸˘ a egal˘ a de la stˆ anga la dreapta. Precedent ¸a se poate
modifica cu ajutorul parantezelor.
De notat c˘ a versiunile MATLAB anterioare lui MATLAB 6 aveau aceeas¸i precedent ¸˘ a
pentru and s¸i or (spre deosebire de majoritatea limbajelor de programare). MathWorks re-
comand˘ a folosirea parantezelor pentru a garanta obt ¸inerea rezultatelor identice ˆın toate versi-
unile MATLAB.
Pentru matrice all returneaz˘ a un vector linie ce cont ¸ine rezultatul lui all aplicat fiec˘ arei
coloane. De aceea all(all(A=B)) este un alt mod de a testa egalitatea matricelor A s¸i B.
Funct ¸ia any lucreaz˘ a analog; de exemplu, any(any(A==B)) returneaz˘ a 1 dac˘ a A s¸i B au
20 Introducere ˆın MATLAB
cel put ¸in un element egal s¸i 0 ˆın caz contrar.
Comanda find returneaz˘ a indicii corespunz˘ atori elementelor nenule ale unui vector. De
exemplu,
>> x = [-3 1 0 -inf 0];
>> f = find(x)
f =
1 2 4
Rezultatul lui find poate fi apoi utilizat pentru a selecta doar acele elemente ale vectorului:
>> x(f)
ans =
-3 1 -Inf
Cu x ca ˆın exemplul de mai sus, putem utiliza find pentru a obt ¸ine elementele finite ale lui
x,
>> x(find(isfinite(x)))
ans =
-3 1 0 0
s¸i s˘ a ˆınlocuim componentele negative ale lui x cu zero:
>> x(find(x<0))=0
x =
0 1 0 0 0
Cˆ and find se aplic˘ a matricei A, vectorul de indici corespunde lui A privit˘ a ca un vector
coloan˘ a obt ¸inut din as¸ezarea coloanelor una peste alta (adic˘ a A(:)), s¸i acest vector poate fi
utilizat pentru a indexa A.
ˆ
In exemplul urm˘ ator se utilizeaz˘ a find pentru a face zero toate
elementele lui A care sunt mai mici decˆ at elementele corespunz˘ atoare ale lui B:
>> A = [4 2 16; 12 4 3], B = [12 3 1; 10 -1 7]
A =
4 2 16
12 4 3
B =
12 3 1
10 -1 7
>> f = find(A<B)
f =
1
3
6
>> A(f) = 0
A =
0 0 16
12 4 0
ˆ
In cazul matricelor, putem utiliza find sub forma [i,j] = find(A), care returneaz˘ a
vectorii i s¸i j ce cont ¸in indicii de linie s¸i coloan˘ a ale elementelor nenule.
1.3. Matrice 21
Rezultatele operatorilor logici s¸i ale funct ¸iilor logice din MATLAB sunt tablouri de ele-
mente 0 s¸i 1, care sunt exemple de tablouri logice. Astfel de tablouri pot fi create s¸i prin apli-
carea funct ¸iei logical unui tablou numeric. Tablourile logice pot fi utilizate la indexare.
Fie exemplul
>> clear
>> y = [1 2 0 -3 0]
y =
1 2 0 -3 0
>> i1 = logical(y)
Warning: Values other than 0 or 1 converted to logical 1(Type
"warning off MATLAB:conversionToLogical" to suppress
this warning.)
>> i1 =
1 1 0 1 0
>> i2 = ( y˜=0 )
i2 =
1 1 0 1 0
>> i3 = [1 1 0 1 0]
i3 =
1 1 0 1 0
>> whos
Name Size Bytes Class
i1 1x5 5 logical array
i2 1x5 5 logical array
i3 1x5 40 double array
y 1x5 40 double array
Grand total is 20 elements using 90 bytes
>> y(i1)
ans =
1 2 -3
>> y(i2)
ans =
1 2 -3
>> isequal(i2,i3)
ans =
1
>> y(i3)
??? Subscript indices must either be real positive
integers or logicals.
Acest exemplu ilustreaz˘ a regula c˘ a A(M), unde M este un tablou logic de aceeas¸i dimen-
siune ca s¸i A, extrage elementele lui A corespunzˆ and elementelor lui M cu partea real˘ a nenul˘ a.
Chiar dac˘ a i2 are aceleas¸i elemente ca i3 (s¸i la comparat ¸ie ele ies egale), doar tabloul logic
i2 poate fi utilizat la indexare.
Un apel la find poate fi uneori evitat dac˘ a argumentul s˘ au este un tablou logic.
ˆ
In ex-
emplul precedent, x(find(isfinite(x)))poate fi ˆınlocuit cu x(isfinite(x)). Se
recomand˘ a utilizarea lui find pentru claritate.
22 Introducere ˆın MATLAB
1.4. Programarea ˆın MATLAB
1.4.1. Fluxul de control
MATLAB are patru structuri de control: instruct ¸iunea if, instruct ¸iunea de ciclare
for, instruct ¸iunea de ciclare while s¸i instruct ¸iunea switch. Cea mai simpl˘ a form˘ a a
instruct ¸iunii if este
if expresie
instruct ¸iuni
end
unde secvent ¸a instruct ¸iuni este executat˘ a dac˘ a p˘ art ¸ile reale ale elementelor lui expresie
sunt toate nenule. Secvent ¸a de mai jos interschimb˘ a x s¸i y dac˘ a x este mai mare decˆ at y:
if x > y
temp = y;
y = x;
x = temp;
end
Atunci cˆ and o instruct ¸iune if este urmat˘ a ˆın aceeas¸i linie de alte instruct ¸iuni, este nevoie de
o virgul˘ a pentru a separa if-ul de instruct ¸iunea urm˘ atoare:
if x > 0, x = sqrt(x); end
Alternativa se implementeaz˘ a cu else, ca ˆın exemplul
a = piˆexp(1); c = exp(pi);
if a >= c
b = sqrt(aˆ2-cˆ2)
else
b = 0
end
ˆ
In fine, se pot introduce teste suplimentare cu elseif (de notat c˘ a nu este nici un spat ¸iu
ˆıntre else s¸i if):
>> if a >= c
b = sqrt(aˆ2-cˆ2)
elseif aˆc > cˆa
b = cˆa/aˆc
else
b = aˆc/cˆa
end
ˆ
Intr-un test if de forma ,,if condit ¸ie1 & condit ¸ie2”, condit ¸ie2 nu este evaluat˘ a dac˘ a
condit ¸ie1 este fals˘ a (as¸a-numit˘ a evaluare prin scurtcircuit). Acest lucru este util cˆ and evalu-
area lui condit ¸ie2 ar putea da o eroare — probabil din cauza unei variabile nedefinite sau a
unei dep˘ as¸iri de indice.
Ciclul for este una dintre cele mai utile construct ¸ii MATLAB, des¸i codul este mai com-
pact f˘ ar˘ a ea. Sintaxa ei este
for variabil˘ a = expresie
1.4. Programarea ˆın MATLAB 23
instruct ¸iuni
end
De obicei, expresie este un vector de forma i:s:j. Instruct ¸iunile sunt executate pentru vari-
abil˘ a egal˘ a cu fiecare element al lui expresie ˆın parte. De exemplu, suma primilor 25 de
termeni ai seriei armonice 1/i se calculeaz˘ a prin
>> s = 0;
>> for i = 1:25, s = s + 1/i; end, s
s =
3.8160
Un alt mod de a defini expresie este utilizarea notat ¸iei cu paranteze p˘ atrate:
for x = [pi/6 pi/4 pi/3], disp([x, sin(x)]), end
0.5236 0.5000
0.7854 0.7071
1.0472 0.8660
Ciclurile for pot fi imbricate, indentarea ajutˆ and ˆın acest caz la cres¸terea lizibilit˘ at ¸ii.
Editorul-debuger-ul MATLAB poate realiza indentarea automat˘ a. Codul urm˘ ator construies¸te
o matrice simetric˘ a 5 pe 5 , A, cu elementul (i, j) egal cu i/j pentru j ≥ i:
n = 5; A = eye(n);
for j=2:n
for i = 1:j-1
A(i,j)=i/j;
A(j,i)=i/j;
end
end
Expresia din ciclul for poate fi o matrice, ˆın care caz lui variabil˘ a i se atribuie succesiv
coloanele lui expresie, de la prima la ultima. De exemplu, pentru a atribui lui x fiecare vector
al bazei canonice, putem scrie for x=eye(n), ..., end.
Ciclul while are forma
while expresie
instruct ¸iuni
end
Secvent ¸a instruct ¸iuni se execut˘ a atˆ at timp cˆ at expresie este adev˘ arat˘ a. Exemplul urm˘ ator
aproximeaz˘ a cel mai mic num˘ ar nenul ˆın virgul˘ a flotant˘ a:
x = 1;
while x>0, xmin = x; x = x/2; end, xmin
xmin =
4.9407e-324
Execut ¸ia unui ciclu while sau for poate fi terminat˘ a cu o instruct ¸iune break, care d˘ a
controlul primei instruct ¸iuni de dup˘ a end-ul corespunz˘ ator. Construct ¸ia while 1, ..., end,
reprezint˘ a un ciclu infinit, care este util atunci cˆ and nu este convenabil s˘ a se pun˘ a testul la
ˆınceputul ciclului. (De notat c˘ a, spre deosebire de alte limbaje, MATLAB nu are un ciclu
,,repeat-until”.) Putem rescrie exemplul precedent mai concis prin
24 Introducere ˆın MATLAB
x = 1;
while 1
xmin = x;
x = x/2;
if x == 0, break, end
end
xmin
ˆ
Intr-un ciclu imbricat un break iese ˆın ciclul de pe nivelul anterior.
Instruct ¸iunea continue cauzeaz˘ a trecerea controlului la execut ¸ia unui ciclu for sau
while urm˘ atoarei iterat ¸ii, s˘ arind instruct ¸iunile r˘ amase din ciclu. Un exemplu trivial este:
for i=1:10
if i < 5, continue, end
disp(i)
end
care afis¸eaz˘ a ˆıntregii de la 5 la 10.
Structura de control cu care ˆıncheiem este instruct ¸iunea switch. Ea const˘ a din
,,switch expresie” urmat˘ a de o list˘ a de instruct ¸iuni ,,case expresie instruct ¸iuni”, termi-
nat˘ a opt ¸ional cu ,,otherwise instruct ¸iuni” s¸i urmat˘ a de end. Exemplul urm˘ ator evalueaz˘ a
p-norma unui vector x pentru trei valori ale lui p:
switch(p)
case 1
y = sum(abs(x));
case 2
y = sqrt(x’
*
x);
case inf
y = max(abs(x));
otherwise
error(’p poate fi 1, 2 sau inf.’)
end
Funct ¸ia error genereaz˘ a un mesaj de eroare s¸i opres¸te execut ¸ia curent˘ a. Expresia ce urmez˘ a
dup˘ a case poate fi o list˘ a de valori delimitate de acolade. Expresia din switch poate coin-
cide cu orice valoare din list˘ a:
x = input(’Enter a real number: ’)
switch x
case {inf, -inf}
disp(’Plus or minus infinity’)
case 0
disp(’Zero’)
otherwise
disp(’Nonzero and finite’)
end
Construct ¸ia switch din MATLAB se comport˘ a diferit de cea din C sau C++ : odat˘ a ce
MATLAB a selectat un grup de expresii case s¸i instruct ¸iunile sale au fost executate, se d˘ a
controlul primei instruct ¸iuni de dup˘ a switch, f˘ ar˘ a a fi nevoie de instruct ¸iuni break.
1.4. Programarea ˆın MATLAB 25
1.4.2. Fis¸iere M
Fis¸ierele M din MATLAB sunt echivalentele programelor, funct ¸iilor, subrutinelor s¸i pro-
cedurilor din alte limbaje de programare. Ele ofer˘ a urm˘ atoarele avantaje:
• experimentarea algoritmului prin editare, ˆın loc de a retip˘ ari o list˘ a lung˘ a de comenzi;
• ˆınregistrarea permanent˘ a a unui experiment;
• construirea de utilitare, care pot fi utilizate repetat;
• schimbul de fis¸iere M.
Multe fis¸iere M scrise de entuzias¸ti pot fi obt ¸inute de pe Internet, pornind de la pagina
de web http://www.mathworks.com. Exist˘ a s¸i grupul de s¸tiri comp.soft-sys.
matlab, dedicat MATLAB. (Grupurile de s¸tiri pot fi citite ˆın mai multe moduri, inclusiv
printr-un web browser.) Se pot obt ¸ine detalii tastˆ and info la prompterul MATLAB.
Un fis¸ier M este un fis¸ier text cu extensia (tipul) .m ce cont ¸ine comenzi MATLAB. Ele
sunt de dou˘ a tipuri:
Fis¸iere M de tip script (sau fis¸iere de comenzi) — nu au nici un argument de intrare sau
ies¸ire s¸i opereaz˘ a asupra variabilelor din spat ¸iul de lucru.
Fis¸iere M de tip funct ¸ie — cont ¸in o linie de definit ¸ie function s¸i pot accepta argu-
mente de intrare s¸i returna argumente de ies¸ire, iar variabilele lor interne sunt locale funct ¸iei
(ˆınafar˘ a de cazul cˆ and sunt declarate global).
Un fis¸ier script permite memorarea unei secvent ¸e de comenzi care sunt utilizate repetat
sau vor fi necesare ulterior.
Script-ul de mai jos utilizeaz˘ a numerele aleatoare pentru a simula un joc. S˘ a consider˘ am
13 c˘ art ¸i de pic˘ a care sunt bine amestecate. Probabilitatea de a alege o carte particular˘ a din
pachet este 1/13. Act ¸iunea de extragere a unei c˘ art ¸i se implementeaz˘ a prin generarea unui
num˘ ar aleator. Jocul continu˘ a prin punerea c˘ art ¸ii ˆınapoi ˆın pachet s¸i reamestecare pˆ an˘ a cˆ and
utilizatorul apas˘ a o tast˘ a diferit˘ a de r sau s-a atins num˘ arul de repet˘ ari (20).
%JOCCARTI
%Simularea unui joc de carti
rand(’state’,sum(100
*
clock));
for k=1:20
n=ceil(13
*
rand);
fprintf(’Cartea extrasa: %3.0f\n’,n)
disp(’ ’)
disp(’Apasati r si Return pentru a continua’)
r=input(’sau orice litera pentru a termina: ’,’s’);
if r˜=’r’, break, end
end
Linia
rand(’state’,sum(100
*
clock));
26 Introducere ˆın MATLAB
reseteaz˘ a de fiecare dat˘ a generatorul la o stare diferit˘ a.
Primele dou˘ a linii ale acestui fis¸ier script ˆıncep cu simbolul % s¸i deci sunt linii de comen-
tariu. Ori de cˆ ate ori MATLAB ˆıntˆ alnes¸te un % va ignora restul liniei. Aceasta ne permite s˘ a
inser˘ am texte explicative care vor face fis¸ierele M mai us¸or de ˆınt ¸eles.
ˆ
Incepˆ and cu versiunea
7 se admit blocuri de comentarii, adic˘ a comentarii care s˘ a se ˆıntind˘ a pe mai multe linii. Ele
sunt delimitate prin operatorii %¦ s¸i %¦. Ei trebuie s˘ a fie singuri pe linie, ca ˆın exemplul:
%{
Comentariu bloc
pe doua linii
%}
Dac˘ a script-ul de mai sus este memorat ˆın fis¸ierul joccarti.m, tastˆ and joccarti se
obt ¸ine:
>> joccarti
Cartea extrasa: 7
Apasati r si Return pentru a continua
sau orice litera pentru a termina: r
Cartea extrasa: 3
Apasati r si Return pentru a continua
sau orice litera pentru a termina: a
>>
Fis¸ierele M de tip funct ¸ie permit extinderea limbajului MATLAB prin scrierea de funct ¸ii
proprii care accept˘ a s¸i returneaz˘ a argumente. Ele se pot utiliza ˆın acelas¸i mod ca funct ¸iile
MATLAB existente, cum ar fi sin, eye, size, etc.
Sursa MATLAB 1.1 Funct ¸ia stat
function [med,abmp] = stat(x)
%STAT Media si abaterea medie patratica a unei selectii
% [MED,ABMP] = STAT(X) calculeaza media si abaterea
% medie patratica a selectiei X
n = length(x);
med = sum(x)/n;
abmp = sqrt(sum((x-med).ˆ2)/n);
Sursa MATLAB 1.1 d˘ a o funct ¸ie simpl˘ a care calculeaz˘ a media s¸i abaterea medie p˘ atratic˘ a
a unei select ¸ii (vector). Acest exemplu ilustreaz˘ a unele facilit˘ at ¸i ale funct ¸iilor. Prima linie
ˆıncepe cu cuvˆ antul cheie function urmat de argumentele de ies¸ire, [med,abmp] s¸i de
simbolul =.
ˆ
In dreapta = urmeaz˘ a numele funct ¸iei, stat, urmat de argumentele de intrare, ˆın
cazul nostru x, ˆıntre paranteze. (
ˆ
In general, putem avea orice num˘ ar de argumente de intrare
s¸i de ies¸ire.) Numele de funct ¸ie trebuie s˘ a fie la fel ca al fis¸ierului .m ˆın care funct ¸ia este
memorat˘ a – ˆın cazul nostru stat.m.
1.4. Programarea ˆın MATLAB 27
A doua linie a unui fis¸ier funct ¸ie se numes¸te linie H1 sau help 1. Se recomand˘ a ca ea
s˘ a aib˘ a urm˘ atoarea form˘ a: s˘ a ˆınceap˘ a cu un %, urmat f˘ ar˘ a nici un spat ¸iu de numele funct ¸iei
cu litere mari, urmat de unul sau mai multe spat ¸ii s¸i apoi o scurt˘ a descriere. Descrierea va
ˆıncepe cu o liter˘ a mare, se va termina cu un punct, iar dac˘ a este ˆın englez˘ a se vor omite
cuvintele “the” s¸i “a”. Cˆ and se tasteaz˘ a help nume functie, toate liniile, de la prima
linie de comentariu pˆ ana la prima linie care nu este de comentariu (de obicei o linie goal˘ a,
pentru lizibilitatea codului surs˘ a) sunt afis¸ate pe ecran. Deci, aceste linii descriu funct ¸ia s¸i
argumentele sale. Se convine ca numele de funct ¸ie s¸i de argumente s˘ a se scrie cu litere mari.
Pentru exemplul stat.m avem
>>help stat
STAT media si abaterea medie patratica a unei selectii
[MED,ABMP] = STAT(X) calculeaza media si abaterea
medie patratica a selectiei X
Se recomand˘ a documentarea tuturor funct ¸iilor utilizator ˆın acest mod, oricˆ at de scurte ar fi.
Este util ca ˆın liniile de comentariu din text sa apar˘ a data scrierii funct ¸iei s¸i datele cˆ and s-au
f˘ acut modific˘ ari. Comanda help lucreaz˘ a similar s¸i pe fis¸iere script.
Funct ¸ia stat se apeleaz˘ a la fel ca orice funct ¸ie MATLAB:
>> [m,a]=stat(1:10)
m =
5.5000
a =
2.8723
>> x=rand(1,10);
[m,a]=stat(x)
m =
0.5025
a =
0.1466
O funct ¸ie mai complicat˘ a este sqrtn, ilustrat˘ a ˆın sursa 1.2. Dˆ andu-se a > 0, ea cal-
culeaz˘ a

a cu metoda lui Newton,
x
k+1
=
1
2

x
k
+
a
x
k

, x
1
= a,
afis¸ˆ and s¸i iterat ¸iile. D˘ am exemple de utilizare:
>> [x,it]=sqrtn(2)
k x_k er. relativa
1: 1.5000000000000000e+000 3.33e-001
2: 1.4166666666666665e+000 5.88e-002
3: 1.4142156862745097e+000 1.73e-003
4: 1.4142135623746899e+000 1.50e-006
5: 1.4142135623730949e+000 1.13e-012
6: 1.4142135623730949e+000 0.00e+000
x =
1.4142
28 Introducere ˆın MATLAB
it =
6
>> x=sqrtn(2,1e-4)
k x_k er. relativa
1: 1.5000000000000000e+000 3.33e-001
2: 1.4166666666666665e+000 5.88e-002
3: 1.4142156862745097e+000 1.73e-003
4: 1.4142135623746899e+000 1.50e-006
x =
1.4142
Sursa MATLAB 1.2 Funct ¸ia sqrtn
function [x,iter] = sqrtn(a,tol)
%SQRTN Radical cu metoda lui Newton.
% X = SQRTN(A,TOL) calculeaza radacina patrata a lui
% A prin metoda lui Newton(sau a lui Heron).
% presupunem ca A >= 0.
% TOL este toleranta (implicit EPS).
% [X,ITER] = SQRTN(A,TOL) returneaza numarul de
% iteratii ITER necesare.
if nargin < 2, tol = eps; end
x = a;
iter = 0;
xdiff = inf;
fprintf(’ k x_k er. relativa\n’)
for k=1:50
iter = iter + 1;
xold = x;
x = (x + a/x)/2;
xdiff = abs(x-xold)/abs(x);
fprintf(’%2.0f: %20.16e %9.2e\’, iter, x, xdiff)
if xdiff <= tol, return, end
end
error(’Nu s-a atins precizia dupa 50 de iteratii.’)
Acest fis¸ier M utilizeaz˘ a comanda return, care d˘ a controlul apelantului. Spre deosebire
de alte limbaje de programare, nu este necesar s˘ a se pun˘ a return la sfˆ ars¸itul unei funct ¸ii sau
al unui script. Funct ¸ia nargin returneaz˘ a num˘ arul de argumente de intrare cu care funct ¸ia a
fost apelat˘ a s¸i permite atribuirea de valori implicite argumentelor nespecificate. Dac˘ a apelul
lui sqrtn nu a furnizat o valoare pentru tol, atunci tol primes¸te valoarea eps. Num˘ arul
de argumente la ies¸ire este returnat de funct ¸ia nargout.
Un fis¸ier M de tip funct ¸ie poate cont ¸ine alte funct ¸ii, numite subfunct ¸ii, care pot s˘ a apar˘ a
ˆın orice ordine dup˘ a funct ¸ia principal˘ a (sau primar˘ a). Subfunct ¸iile sunt vizibile numai din
1.4. Programarea ˆın MATLAB 29
funct ¸ia principal˘ a sau din alte subfunct ¸ii. Ele realizeaz˘ a calcule care trebuie separate de
funct ¸ia principal˘ a, dar nu sunt necesare ˆın alte fis¸iere M, sau supraˆıncarc˘ a funct ¸ii cu acelas¸i
nume (subfunct ¸iile au prioritate mai mare). Help-ul pentru o subfunct ¸ie se poate specifica
punˆ and numele funct ¸iei urmat de “/” s¸i numele subfunct ¸iei. Pentru exemple a se vedea sursele
MATLAB 5.3 s¸i 5.6 din capitolul 5.
Pentru a crea s¸i edita fis¸iere M avem dou˘ a posibilit˘ at ¸i. Putem utiliza orice editor pentru
fis¸iere ASCII sau putem utiliza MATLAB Editor/Debugger. Sub Windows el se apeleaz˘ a prin
comanda edit sau din opt ¸iunile de meniu File-New sau File-Open. Sub Unix se apeleaz˘ a
doar prin comanda edit. Editorul/debugger-ul MATLAB are diverse facilt˘ at ¸i care ajut˘ a uti-
lizatorul, cum ar fi indentarea automat˘ a a ciclurilor s¸i structurilor de control, evident ¸ierea
sintaxei prin culori, verificarea perechilor de paranteze s¸i apostrofuri.
Cele mai multe funct ¸ii MATLAB sunt fis¸iere M p˘ astrate pe disc, dar exist˘ a s¸i funct ¸ii
predefinite cont ¸inute ˆın interpretorul MATLAB. Calea MATLAB (MATLAB path) este o
list˘ a de directori care specific˘ a unde caut˘ a MATLAB fis¸ierele M. Un fis¸ier M este disponibil
numai dac˘ a este pe calea MATLAB. Drumul poate fi setat s¸i modificat prin comenzile path
s¸i addpath, sau prin utilitarul (fereastra) path Browser, care se apeleaz˘ a din opt ¸iunea de
meniu File-Set Path sau tastˆ and pathtool. Un script (dar nu s¸i o funct ¸ie) care nu este pe
calea de c˘ autare se poate executa cu run urmat de calea complet˘ a pˆ an˘ a la fis¸ierul M. Un fis¸ier
M se poate afis¸a pe ecran cu comanda type.
Un aspect important al MATLAB este dualitatea comenzi-funct ¸ii.
ˆ
Inafar˘ a de forma cla-
sic˘ a, nume, urmat de argumente ˆıntre paranteze, funct ¸iile pot fi apelate s¸i sub forma nume,
urmat de argumente separate prin spat ¸ii. MATLAB presupune ˆın al doilea caz c˘ a argumentele
sunt s¸iruri de caractere. De exemplu apelurile format long s¸i format(’long’) sunt
echivalente. Dar, ˆın exemplul,
>> sqrt 2
ans =
7.0711
MATLAB interpreteaz˘ a 2 ca un s¸ir s¸i sqrt se aplic˘ a valorii ASCII a lui 2, s¸i anume 50.
MATLAB 7 permite definirea de funct ¸ii imbricate , adic˘ a funct ¸ii cont ¸inute ˆın corpul altor
funct ¸ii.
ˆ
In exemplul care urmeaz˘ a, funct ¸ia F2 este imbricat˘ a ˆın funct ¸ia F1:
function x = F1(p1,p2)
...
F2(p2)
function y = F2(p3)
...
end
...
end
Ca orice alt˘ a funct ¸ie, o funct ¸ie imbricat˘ a are propriul s˘ au spat ¸iu de lucru ˆın care se memo-
reaz˘ a variabilele pe care le utilizeaz˘ a. Ea are de asemenea acces la spat ¸iul de lucru al tuturor
funct ¸iilor ˆın care este imbricat˘ a. Astfel, de exemplu, o variabil˘ a care are o valoare atribuit˘ a
ei de funct ¸ia exterioar˘ a poate fi citit˘ a s¸i modificat˘ a de o funct ¸ie imbricat˘ a la orice nivel ˆın
funct ¸ia exterioar˘ a. Variabilele create ˆıntr-o funct ¸ie imbricat˘ a pot fi citite sau modificate ˆın
orice funct ¸ie care cont ¸ine funct ¸ia imbricat˘ a.
30 Introducere ˆın MATLAB
1.4.3. Argumente funct ¸ie
ˆ
In multe probleme, cum ar fi integrarea numeric˘ a, rezolvarea unor ecuat ¸ii operatoriale,
minimizarea unei funct ¸ii, este nevoie ca o funct ¸ie s˘ a fie transmis˘ a ca argument unei alte
funct ¸ii. Aceasta se poate realiza ˆın mai multe feluri, depinzˆ and de modul ˆın care funct ¸ia
apelat˘ a a fost scris˘ a. Vom ilustra aceasta cu funct ¸ia ezplot, care reprezint˘ a grafic funct ¸ia
f(x) peste domeniul implicit [−2π, 2π]. Un prim mod este transmiterea funct ¸iei printr-o
construct ¸ie numit˘ a function handle. Acesta este un tip de date MATLAB care cont ¸ine toate
informat ¸iile necesare pentru a evalua o funct ¸ie. Un function handle poate fi creat punˆ and
caracterul @ ˆın fat ¸a numelui de funct ¸ie. Astfel, dac˘ a fun este un fis¸ier M de tip funct ¸ie de
forma cerut˘ a de ezplot, atunci putem tasta
ezplot(@fun)
fun poate fi numele unei funct ¸ii predefinite:
ezplot(@sin)
Numele unei funct ¸ii poate fi transmis ca un s¸ir de caractere:
ezplot(’exp’)
Function handle a fost introdus ˆıncepˆ and cu MATLAB 6 s¸i este de preferat utiliz˘ arii s¸irurilor,
fiind mai eficient s¸i mai versatil. Totus¸i, ocazional se pot ˆıntˆ alni funct ¸ii care s˘ a accepte argu-
mente de tip funct ¸ie sub form˘ a de s¸ir, dar nu sub form˘ a de function handle. Conversia dintr-o
form˘ a ˆın alta se poate face cu func2str s¸i str2func (vezi help function handle).
Mai exist˘ a dou˘ a moduri de a transmite o funct ¸ie lui ezplot: ca expresie ˆıntre apostrofuri,
ezplot(’xˆ2-1’), ezplot(’1/(1+xˆ2)’)
sau ca obiect inline
ezplot(inline(’exp(x)-1’))
Un obiect inline este o funct ¸ie definit˘ a printr-un s¸ir s¸i care poate fi atribuit˘ a unei variabile s¸i
apoi evaluat˘ a:
>> f=inline(’exp(x)-1’), f(2)
f =
Inline function:
f(x) = exp(x)-1
ans =
6.3891
MATLAB determin˘ a s¸i ordoneaz˘ a argumentele unei funct ¸ii inline. Dac˘ a acest lucru nu este
satisf˘ ac˘ ator, argumentele se pot defini s¸i ordona explicit, transmit ¸ˆ and lui inline parametrii
suplimentari:
>> f = inline(’log(a
*
x)/(1+yˆ2)’)
f =
Inline function:
f(a,x,y) = log(a
*
x)/(1+yˆ2)
>> f = inline(’log(a
*
x)/(1+yˆ2)’,’x’,’y’,’a’)
f =
Inline function:
f(x,y,a) = log(a
*
x)/(1+yˆ2)
ˆ
Incepˆ and cu versiunea 7, MATLAB permite funct ¸ii anonime. Ele pot fi definite ˆın linii de
comand˘ a, fis¸iere M de tip funct ¸ie sau script s¸i nu necesit˘ a un fis¸ier M. Sintaxa pentru crearea
unei funct ¸ii anonime este
1.4. Programarea ˆın MATLAB 31
Sursa MATLAB 1.3 Funct ¸ia fd deriv
function y = fd_deriv(f,x,h)
%FD_DERIV Aproximarea derivatei cu diferenta divizata.
% FD_DERIV(F,X,H) este diferenta divizata a lui F cu
% nodurile X si X+ H. H implicit: SQRT(EPS).
if nargin < 3, h = sqrt(eps); end
y = (feval(f,x+h) - feval(f,x))/h;
f = @(listaarg)expresie
Instruct ¸iunea de mai jos creaz˘ a o funct ¸ie anonim˘ a care ridic˘ a argumentul ei la p˘ atrat:
sqr = @(x) x.ˆ2;
D˘ am s¸i un exemplu de utilizare
a = sqr(5)
a =
25
Pentru a evalua ˆın corpul unei funct ¸ii o funct ¸ie transmis˘ a ca parametru se utilizeaz˘ a
funct ¸ia feval. Sintaxa ei este feval(fun,x1,x2,...,xn), unde fun este funct ¸ia,
iar x1,x2,...,xn sunt argumentele sale. S˘ a consider˘ am funct ¸ia fd deriv din sursa 1.3.
Aceast˘ a funct ¸ie aproximeaz˘ a derivata funct ¸iei dat˘ a ca prim argument cu ajutorul diferent ¸ei
divizate
f

(x) ≈
f(x +h) −f(x)
h
.
Cˆ and se tasteaz˘ a
>> fd_deriv(@sqrt,0.1)
ans =
1.5811
primul apel la feval din fd deriv este equivalent cu sqrt(x+h). Putem utiliza funct ¸ia
sqrtn (sursa MATLAB 1.2) ˆın locul funct ¸ie predefinite sqrt:
>> fd_deriv(@sqrtn,0.1)
k x_k er. relativa
1: 5.5000000745058064e-001 8.18e-001
2: 3.6590910694939033e-001 5.03e-001
% Restul ies¸irii lui sqrtn se omite
ans =
1.5811
Putem transmite lui fd deriv un obiect inline, dar o expresie de tip s¸ir nu funct ¸ioneaz˘ a:
>> f = inline(’exp(-x)/(1+xˆ2)’);
>> fd_deriv(f,pi)
32 Introducere ˆın MATLAB
ans =
-0.0063
>>fd_deriv(’exp(-x)/(1+xˆ2)’,pi)
??Error using==>feval Invalid function name ’exp(-x)/(1+xˆ2)’
Error in ==> C:\radu\sane2\FD_DERIV.M
On line 8 ==> y = (feval(f,x+h) - feval(f,x))/h;
Pentru a face fd deriv s˘ a accepte expresii de tip s¸ir vom insera
f=fcnchk(f);
la ˆınceputul funct ¸iei (ˆın acest mod lucreaz˘ a ezplot s¸i alte funct ¸ii MATLAB, vezi [44] pentru
exemple).
Este uneori necesar s˘ a se ,,vectorizeze” un obiect inline sau o expresie de tip s¸ir, adic˘ a s˘ a
se converteasc˘ a ˆınmult ¸irile, ridic˘ arile la putere s¸i ˆımp˘ art ¸irile ˆın operat ¸ii ˆın sens tablou, astfel
ca s˘ a se poat˘ a utiliza argumente vectori s¸i matrice. Acest lucru se poate realiza cu funct ¸ia
vectorize:
>> f = inline(’log(a
*
x)/(1+yˆ2)’);
>> f = vectorize(f)
f =
Inline function:
f(a,x,y) = log(a.
*
x)./(1+y.ˆ2)
Dac˘ a fcnchk se apeleaz˘ a cu un argument suplimentar ’vectorized’, ca ˆın
fcnchk(f,’vectorized’), atunci ea vectorizeaz˘ a s¸irul f.
MATLAB7 a simplificat modul de apel al argumentelor de tip funct ¸ie. Se pot apela funct ¸ii
referite cu function handle prin interfat ¸a de apel standard ˆın loc de feval. Astfel, un function
handle va fi tratat ca s¸i un nume de funct ¸ie
fhandle(arg1, arg2, ..., argn)
Dac˘ a funct ¸ia nu are nici un argument apelul ei are forma
fhandle()
Linia a doua a funct ¸iei fd deriv (sursa 1.3) ar fi putut fi scris˘ a ˆın MATLAB 7 sub forma
y = (f(x+h) - f(x))/h;
1.4.4. Num˘ ar variabil de argumente
ˆ
In anumite situat ¸ii o funct ¸ie trebuie s˘ a accepte sau s˘ a returneze un num˘ ar variabil,
posibil nelimitat, de argumente. Aceasta se poate realiza utilizˆ and funct ¸iile varargin s¸i
varargout. S˘ a presupunem c˘ a dorim s˘ a scriem o funct ¸ie companb ce construies¸te ma-
tricea companion pe blocuri, de dimensiune mn mn, a matricelelor n n A
1
, A
2
, . . . ,
A
m
:
C =

−A
1
−A
2
. . . . . . −A
m
I 0 0
I
.
.
.
.
.
.
.
.
.
.
.
.
I 0
¸
¸
¸
¸
¸
¸
¸
¸
.
Solut ¸ia este de a utiliza varargin as¸a cum se arat˘ a ˆın sursa MATLAB 1.4. Cˆ and
1.4. Programarea ˆın MATLAB 33
Sursa MATLAB 1.4 Funct ¸ia companb
function C = companb(varargin)
%COMPANB Matrice companion pe blocuri.
% C = COMPANB(A_1,A_2,...,A_m) este matricea
% companion pe blocuri corespunzatoare
% matricelor n-pe-n A_1,A_2,...,A_m.
m = nargin;
n = length(varargin{1});
C = diag(ones(n
*
(m-1),1),-n);
for j = 1:m
Aj = varargin{j};
C(1:n,(j-1)
*
n+1:j
*
n) = -Aj;
end
varargin apare ˆın lista de argumente, argumentele furnizate sunt copiate ˆıntr-un tablou
de celule numit varargin. Tablourile de celule (cell arrays) sunt structuri de date de tip
tablou, ˆın care fiecare element poate p˘ astra date de tipuri s¸i dimensiuni diferite. Elementele
unui tablou de celule pot fi selectate utilizˆ and acolade. Consider˘ am apelul
>> X = ones(2); C = companb(X, 2
*
X, 3
*
X)
C =
-1 -1 -2 -2 -3 -3
-1 -1 -2 -2 -3 -3
1 0 0 0 0 0
0 1 0 0 0 0
0 0 1 0 0 0
0 0 0 1 0 0
Dac˘ a inser˘ am o linie ce cont ¸ine doar varargin la ˆınceputul lui companb apelul de mai
sus produce
varargin =
[2x2 double] [2x2 double] [2x2 double]
Deci, varargin este un tablou de celule 13 ale c˘ arui elemente sunt matrice 22 transmise
lui companb ca argumente, iar varargin¦j¦ este a j-a matrice de intrare, A
j
. Nu este
necesar ca varargin s˘ a fie singurul argument de intrare, dar dac˘ a apare el trebuie s˘ a fie
ultimul.
Analogul lui varargin pentru argumente de ies¸ire este varargout.
ˆ
In sursa MAT-
LAB 1.5 este dat un exemplu care calculeaz˘ a momentele unui vector, pˆ an˘ a la un ordin dorit.
Num˘ arul de argumente de ies¸ire se determin˘ a cu nargout s¸i apoi se creaz˘ a tabloul de celule
varargout ce cont ¸ine ies¸irea dorit˘ a. Ilustr˘ am cu apelurile funct ¸iei momente din sursa 1.5:
>> m1 = momente(1:4)
m1 =
2.5000
>> [m1,m2,m3] = momente(1:4)
34 Introducere ˆın MATLAB
m1 =
2.5000
m2 =
7.5000
m3 =
25
Sursa MATLAB 1.5 Funct ¸ia momente
function varargout = momente(x)
%MOMENTE Momentele unui vector.
% [m1,m2,...,m_k] = MOMENTE(X) returneaza momentele de
% ordin 1, 2, ..., k ale vectorului X, unde momentul
% de ordin j este SUM(X.ˆj)/LENGTH(X).
for j=1:nargout, varargout(j) = sum(x.ˆj)/length(x); end
1.4.5. Variabile globale
Variabilele din interiorul unei funct ¸ii sunt locale spat ¸iului de lucru al acelei funct ¸ii. Une-
ori este convenabil s˘ a cre˘ am variabile care exist˘ a ˆın mai multe spat ¸ii de lucru, eventual chiar
cel principal. Aceasta se poate realiza cu ajutorul instruct ¸iunii global. Ca exemplu d˘ am
codurile pentru funct ¸iile tic s¸i toc (cu unele comentarii prescurtate). Aceste funct ¸ii pot
contoriza timpul, gestionˆ and un cronometru. Variabila global˘ a TICTOC este vizibil˘ a ˆın am-
bele funct ¸ii, dar este invizibil˘ a ˆın spat ¸iul de lucru de baz˘ a (nivel linie de comand˘ a sau script)
sau ˆın orice alt˘ a funct ¸ie care nu o declar˘ a cu global.
function tic
% TIC Start a stopwatch timer.
% TIC; any stuff; TOC
% prints the time required.
% See also: TOC, CLOCK.
global TICTOC
TICTOC = clock;
function t = toc
% TOC Read the stopwatch timer.
% TOC prints the elapsed time since TIC was used.
% t = TOC; saves elapsed time in t, does not print.
% See also: TIC, ETIME.
global TICTOC
if nargout < 1
elapsed_time = etime(clock,TICTOC)
else
t = etime(clock,TICTOC);
end
ˆ
In interiorul unei funct ¸ii, variabilele globale vor apare ˆınaintea primei aparit ¸ii a unei vari-
abile locale, ideal la ˆınceputul fis¸ierului. Se convine ca numele de variabile globale s˘ a fie
1.4. Programarea ˆın MATLAB 35
Sursa MATLAB 1.6 Funct ¸ia koch
function koch(pl,pr,level)
%KOCH Curba Koch generata recursiv.
% Apel KOCH(PL, PR, LEVEL) unde punctele PL s¸i PR
% sunt extremitatea stˆang˘a s¸i dreapt˘a
% LEVEL este nivelul de recursivitate.
if level == 0
plot([pl(1),pr(1)],[pl(2),pr(2)]); % Uneste pl si pr.
hold on
else
A = (sqrt(3)/6)
*
[0 1; -1 0]; % matrice rot./scal.
pmidl = (2
*
pl + pr)/3;
koch(pl,pmidl,level-1) % ramura stanga
ptop = (pl + pr)/2 + A
*
(pl-pr);
koch(pmidl,ptop,level-1) % ramura stanga-mijloc
pmidr = (pl + 2
*
pr)/3;
koch(ptop,pmidr,level-1) % ramura mijloc
koch(pmidr,pr,level-1) % ramura dreapta
end
scrise cu litere mari, s˘ a fie lungi s¸i sugestive.
1.4.6. Recursivitate
Funct ¸iile pot fi recursive, adic˘ a ele se pot autoapela, direct sau indirect. Recursivitatea
este un instrument puternic, des¸i nu toate calculele descrise ˆın manier˘ a recursiv˘ a pot fi imple-
mentate eficient ˆın mod recursiv.
Funct ¸ia koch din sursa MATLAB 1.6 utilizeaz˘ a recursivitatea pentru a desena o curb˘ a
Koch s¸i este inspirat˘ a din [30]. Construct ¸ia de baz˘ a este ˆınlocuirea unui segment de dreapt˘ a
prin patru segmente mai scurte. Partea din stˆ anga sus a figurii 1.1 arat˘ a rezultatul aplic˘ arii
acestei construct ¸ii unei linii orizontale. Imaginea din dreapta jos ne arat˘ a ce se ˆıntˆ ampl˘ a cˆ and
fiecare din aceste linii este prelucrat˘ a. Imaginile din stˆ anga s¸i dreapta jos ne arat˘ a urm˘ atoarele
dou˘ a niveluri de recursivitate.
Funct ¸ia koch are trei argumente de intrare. Primele dou˘ a, pl s¸i pr dau coordonatele
(x, y) ale capetelor segmentului curent s¸i al treilea, level, indic˘ a nivelul de recursivitate
cerut. Dac˘ a level = 0 se deseneaz˘ a un segment; altfel koch se autoapeleaz˘ a de patru ori cu
level decrementat cu 1 s¸i cu puncte care definesc capetele celor patru segmente mai scurte.
Figura 1.1 a fost obt ¸inut˘ a cu urm˘ atorul cod:
pl=[0;0]; %left endpoint
36 Introducere ˆın MATLAB
0 0.2 0.4 0.6 0.8 1
−0.2
−0.1
0
0.1
0.2
0.3
0.4
0.5
Curba Koch: nivel = 1
0 0.2 0.4 0.6 0.8 1
−0.2
−0.1
0
0.1
0.2
0.3
0.4
0.5
Curba Koch: nivel = 2
0 0.2 0.4 0.6 0.8 1
−0.2
−0.1
0
0.1
0.2
0.3
0.4
0.5
Curba Koch: nivel = 3
0 0.2 0.4 0.6 0.8 1
−0.2
−0.1
0
0.1
0.2
0.3
0.4
0.5
Curba Koch: nivel = 4
Figura 1.1: Curbe Koch create cu funct ¸ia koch.
pr=[1;0]; %right endpoint
for k = 1:4
subplot(2,2,k)
koch(pl,pr,k)
axis(’equal’)
title([’Koch curve: level = ’,num2str(k)],’FontSize’,16)
end
hold off
Apelˆ and koch cu perechi de puncte echidistante situate pe cercul unitate se obt ¸ine o
curb˘ a numit˘ a fulgul de z˘ apad˘ a al lui Koch (Koch’s snowflake). Codul este dat ˆın sursa 1.7.
Funct ¸ia snowflake accept˘ a la intrare num˘ arul de laturi edges s¸i nivelul de recursivitate
level. Valorile implicite ale acestor parametrii sunt 7 s¸i respectiv 4.
ˆ
In figura 1.2 se dau
dou˘ a exemple.
Pentru alte exemple de recursivitate, a se vedea funct ¸iile MATLAB quad s¸i quadl s¸i
sursele din sect ¸iunile 7.4 s¸i 7.6, utilizate pentru integrarea numeric˘ a.
1.4.7. Alte tipuri numerice
Tipul de date implicit ˆın MATLAB este tipul de date double. Pe lˆ ang˘ a acesta, MATLAB
furmizeaz˘ a s¸i alte tipuri de date, avˆ and scopul ˆın principal de a realiza economie de memorie.
Acestea sunt
• int8 s¸i uint8 – ˆıntregi pe 8 bit ¸i cu semn s¸i f˘ ar˘ a semn;
1.4. Programarea ˆın MATLAB 37
Sursa MATLAB 1.7 Fulgul lui Koch
function snowflake(edges,level)
if nargin<2, level=4; end
if nargin<1, edges=7; end
clf
for k = 1:edges
pl = [cos(2
*
k
*
pi/edges); sin(2
*
k
*
pi/edges)];
pr = [cos(2
*
(k+1)
*
pi/edges); sin(2
*
(k+1)
*
pi/edges)];
koch(pl,pr,level);
end
axis(’equal’)
s=sprintf(’Koch snowflake, level=%d, edges=%d’,level, edges);
title(s,’FontSize’,16,’FontAngle’,’italic’)
hold off
−1 −0.5 0 0.5 1
−0.8
−0.6
−0.4
−0.2
0
0.2
0.4
0.6
0.8
Koch snowflake, level=4, edges=7
−1 −0.5 0 0.5 1
−0.8
−0.6
−0.4
−0.2
0
0.2
0.4
0.6
0.8
Koch snowflake, level=3, edges=5
Figura 1.2: Fulgi Koch obt ¸inut ¸i cu snowflakes
• int16 s¸i uint16 – ˆıntregi pe 16 bit ¸i cu semn s¸i f˘ ar˘ a semn;
• int32 s¸i uint32 – ˆıntregi pe 32 bit ¸i cu semn s¸i f˘ ar˘ a semn;
• single – numere ˆın virgul˘ a flotant˘ a simpl˘ a precizie (pe 32 de bit ¸i).
Funct ¸iile eye, ones, zeros pot returna date de ies¸ire de tipuri ˆıntregi sau single. De
exemplu,
>> ones(2,2,’int8’)
returneaz˘ a o matrice 2 2 cu elemente de tipul int8
ans =
1 1
1 1
38 Introducere ˆın MATLAB
Funct ¸iile care definesc tipuri de date ˆıntregi au acelas¸i nume ca s¸i tipul. De exemplu
x = int8(5);
atribuie lui x valoarea 5 reprezentat˘ a sub forma unui ˆıntreg pe 8 bit ¸i. Funct ¸ia class permite
verificarea tipului unui rezultat.
>>class(x)
ans =
int8
Conversia unui num˘ ar de tip double la un tip ˆıntreg se face prin routunjire la cel mai apropiat
ˆıntreg:
>> int8(2.7)
ans =
3
>>int8(-2.5)
ans =
-3
Funct ¸iile intmax s¸i intmin, avˆ and ca argument un nume de tip ˆıntreg, returneaz˘ a cea
mai mare s¸i respectiv cea mai mic˘ a valoare de acel tip:
>> intmax(’int16’)
ans =
32767
>> intmin(’int16’)
ans =
-32768
Dac˘ a se ˆıncearc˘ a conversia unui num˘ ar mai mare decˆ at valoarea maxim˘ a a unui ˆıntreg de un
anumit tip la acel tip, MATLAB returneaz˘ a valoarea maxim˘ a (saturation on overflow).
>> int8(300)
ans =
127
Analog, pentru valori mai mici decˆ at valoarea minim˘ a, se returneaz˘ a valoarea minim˘ a de acel
tip.
Dac˘ a se realizeaz˘ a operat ¸ii aritmetice ˆıntre ˆıntregi de acelas¸i tip rezultatul este un ˆıntreg
de acel tip. De exemplu
>> x=int16(5)+int16(9)
x =
14
>> class(x)
ans =
int16
Dac˘ a rezultatul este mai mare decˆ at valoarea maxim˘ a de acel tip, MATLAB returneaz˘ a val-
oarea maxim˘ a de acel tip. Analog, pentru un rezultat mai mic decˆ at valoarea minim˘ a, se
returneaz˘ a valoarea minim˘ a de acel tip.
ˆ
In ambele situat ¸ii se d˘ a un mesaj de avertisment care
se poate inhiba (sau reactiva) cu funct ¸ia intwarning.
1.4. Programarea ˆın MATLAB 39
Dac˘ a A s¸i B sunt tablouri de tip ˆıntreg, ˆımp˘ art ¸irile ˆın sens tablou, A./B s¸i A.`B, se
realizeaz˘ a ˆın aritmetica ˆın dubl˘ a precizie, iar rezultatul se convertes¸te la tipul ˆıntreg original,
ca ˆın exemplul
>> int8(4)./int8(3)
ans =
1
Se pot combina ˆın expresii scalari de tip double cu scalari sau tablouri de tip ˆıntreg,
rezultatul fiind de tip ˆıntreg:
class(5
*
int8(3))
ans =
int8
Nu se pot combina scalari ˆıntregi sau tablouri de tip ˆıntreg cu scalari sau tablouri de un tip
ˆıntreg diferit sau de tip single.
Pentru toate operat ¸iile binare ˆın care un operand este un tablou de tip ˆıntreg iar cel˘ alat este
un scalar de tip double, MATLAB realizeaz˘ a operat ¸ia element cu element ˆın dubl˘ a precizie s¸i
convertes¸te rezultatul ˆın tipul ˆıntreg originar. De exemplu,
>> int8([1,2,3,4,5])
*
0.8
ans =
1 2 2 3 4
De notat c˘ a: MATLAB calculeaz˘ a [1,2,3,4,5]
*
0.8ˆın dubl˘ a precizie s¸i apoi convertes¸te
rezultatul ˆın int8; al doilea s¸i al treilea element din tablou dup˘ a ˆınmult ¸irea ˆın dubl˘ a precizie
sunt 1.6 s¸i 2.4, care sunt routunjite la cel mai apropiat ˆıntreg, 2.
Tipul single va fi descris ˆın '3.6.
Pentru detalii asupra tipurilor nondouble vezi [41, 42].
1.4.8. Controlul erorilor
Instruct ¸iunea try permite s˘ a se testeze dac˘ a o anumit˘ a comand˘ a a generat o eroare.
Forma general˘ a a instruct ¸iunii try-catch este
try
instructiune
...
instructiune
catch
instructiune
...
instructiune
end
Se execut˘ a instruct ¸iunile dintre try s¸i catch. Dac˘ a apare o eroare se execut˘ a instruct ¸iunile
dintre catch s¸i end. Aceast˘ a parte trebuie s˘ a trateze eroare ˆıntr-un anumit mod. Blocurile
try-catch se pot imbrica.
ˆ
In MATLAB 7 funct ¸ia error se poate apela cu un mesaj de eroare cu format (ca ˆın
sprintf), dup˘ a cum ne arat˘ a exemplul urm˘ ator:
40 Introducere ˆın MATLAB
error(’File %s not found\n’, filename)
sau cu un identificator de mesaj
error(’MATLAB:noSuchFile’, ’File %s not found\n’,...
filename)
Sursa ultimei erori se poate identifica cu lasterr, care returneaz˘ a ultimul mesaj de
eroare sau cu lasterror, care returneaz˘ a o structur˘ a ce cont ¸ine mesajul de eroare s¸i iden-
tificatorul acestuia.
Exemplul urm˘ ator determin˘ a cauza erorii la ˆınmult ¸irea a dou˘ a matrice utilizˆ and
try-catch s¸i lasterr:
function matrixMultiply2(A, B)
try
A
*
B
catch
errmsg = lasterr;
if(strfind(errmsg, ’Inner matrix dimensions’))
disp(’
**
Wrong dimensions for matrix multiply’)
else
if(strfind(errmsg, ’not defined for values of class’))
disp(’
**
Both arguments must be double matrices’)
end
end
end
Dac˘ a dimensiunea matricelor este ilegal˘ a, se afis¸az˘ a primul mesaj:
>> A = [1 2 3; 6 7 2; 0 1 5];
>> B = [9 5 6; 0 4 9];
>> matrixMultiply2(A, B)
**
Wrong dimensions for matrix multiply
iar dac˘ a funct ¸ia este apelat˘ a cu un argument tablou de celule, al doilea mesaj:
>> C = {9 5 6; 0 4 9};
>> matrixMultiply2(A, C)
**
Both arguments must be double matrices
Pentru detalii a se vedea doc try s¸i [42].
1.5. Toolbox-urile Symbolic
Toolbox-urile Symbolic Math ˆıncorporeaz˘ a facilit˘ at ¸i de calcul simbolic ˆın mediul numeric
al MATLAB. Toolbox-urile se bazeaz˘ a pe nucleul Maple

. Exist˘ a dou˘ a toolbox-uri:
• Symbolic Math Toolbox care asigur˘ a accesul la nucleul Maple s¸i la pachetul de algebr˘ a
liniar˘ a al Maple utilizˆ and o sintax˘ a s¸i un stil care sunt extensii naturale ale limbajului
MATLAB.
1.5. Toolbox-urile Symbolic 41
• Extended Symbolic Math Toolbox extinde facilit˘ at ¸ile amintite mai sus pentru a asigura
acces la facilit˘ at ¸ile pachetelor negrafice Maple, facilit˘ at ¸ile de programare s¸i proceduri
definite de utilizator.
Toolboxul Symbolic Math defines¸te un nou tip de date MATLAB numit obiect simbolic
sau sym. Intern, un obiect simbolic este o structur˘ a de date care memoreaz˘ a o reprezentare
sub form˘ a de s¸ir a simbolului. Toolbox-ul Symbolic Math utilizeaz˘ a obiectele simbolice pen-
tru a reprezenta variabile simbolice, expresii s¸i matrice. Aritmetica cu care se opereaz˘ a asupra
obiectelor simbolice este implicit cea rat ¸ional˘ a.
Obiectele simbolice se construiesc cu ajutorul declarat ¸iei sym. De exemplu, instruct ¸iunea
x = sym(’x’);
produce o variabil˘ a simbolic˘ a numit˘ a x. Se pot combina mai multe declarat ¸ii de acest tip
folosind forma syms:
syms a b c x y f g
Exemplele din aceast˘ a sect ¸iune presupun c˘ a s-a executat aceast˘ a comand˘ a.
Derivare. O expresie simbolic˘ a se poate deriva cu diff. S˘ a cre˘ am o expresie simbolic˘ a:
>> f=exp(a
*
x)
*
sin(x);
Derivata ei ˆın raport cu x se obt ¸ine astfel
>> diff_f=diff(f,x)
diff_f =
a
*
exp(a
*
x)
*
sin(x)+exp(a
*
x)
*
cos(x)
Dac˘ a n este un ˆıntreg, diff(f,x,n) calculeaz˘ a derivata de ordinul n a lui f. De exemplu,
pentru derivata de ordinul al doilea
>> diff(f,x,2)
ans = aˆ2
*
exp(a
*
x)
*
sin(x)+2
*
a
*
exp(a
*
x)
*
cos(x)-exp(a
*
x)
*
sin(x)
Pentru detalii suplimentare a se vedea help sym/diff sau doc sym/diff.
Integrare. Pentru a calcula primitiva unei expresii simbolice f se poate folosi
int(f,x).
Ca exemplu, s˘ a calcul˘ am primitiva lui g(x) = e
−ax
sin cx:
>> g = exp(-a
*
x)
*
sin(c
*
x);
>> int_g=int(g,x)
int_g =
-c/(aˆ2+cˆ2)
*
exp(-a
*
x)
*
cos(c
*
x)-a/(aˆ2+cˆ2)
*
exp(-a
*
x)
*
sin(c
*
x)
Dˆ and comanda diff(int g,x) nu se obt ¸ine g ci o expresie echivalent˘ a, dar dup˘ a
simplificare cu comanda simple(diff(int g,x)) se obt ¸ine un s¸ir de mesaje care in-
formeaz˘ a utilizatorul asupra regulilor utilizate s¸i ˆın final
ans = exp(-a
*
x)
*
sin(c
*
x)
Calcului

π
−π
g dx se poate realiza cu comanda int(g,x,-pi,pi). Rezultatul nu este
foarte elegant. Vom calcula acum integrala

π
0
xsin xdx:
42 Introducere ˆın MATLAB
>> int(’x
*
sin(x)’,x,0,pi)
ans = pi
Dac˘ a Maple nu poate g˘ asi integrala sub forma analitic˘ a, ca ˆın exemplul
>> int(exp(sin(x)),x,0,1)
Warning: Explicit integral could not be found.
ans =
int(exp(sin(x)),x = 0 .. 1)
se poate ˆıncerca o aproximare numeric˘ a:
>> quad(’exp(sin(x))’,0,1)
ans =
1.6319
Pentru detalii suplimentare a se vedea help sym/int sau doc sym/int.
Substitut¸ii s¸i simplific˘ ari.
ˆ
Inlocuirea unui parametru cu o valoare sau cu un alt parametru
se realizeaz˘ a cu subs. De exemplu, s˘ a calcul˘ am integrala definit˘ a a lui g de mai sus pentru
a=2 s¸i c=4:
>> int_sub=subs(int_def_g,{a,c},{2,4})
int_sub =
107.0980
A se vedea help sym/int sau doc sym/int.
Funct ¸ia simplify este o funct ¸ie puternic˘ a care aplic˘ a diverse tipuri de identit˘ at ¸i pentru
a aduce o expresie la o form˘ a mai ,,simpl˘ a”. Exemplu:
>> syms h
>> h=(1-xˆ2)/(1-x);
>> simplify(h)
ans = x+1
Funct ¸ia simple este o funct ¸ie neortodox˘ a care are drept scop obt ¸inerea unei expresii echiva-
lente care s˘ a aib˘ a cel mai mic num˘ ar de caractere. Am dat mai sus un exemplu, dar mai
consider˘ am unul:
>> [jj,how]=simple (cos(x)ˆ2+sin(x)ˆ2)
jj =
1
how =
simplify
Cel de-al doilea parametru de ies¸ire are rolul de a inhiba mesajele lungi referitoare la
procesul de simplificare.
A se vedea help sym/simplify s¸i help sym/simple sau doc
sym/simplify s¸i doc sym/simple.
Serii Taylor. Comanda taylor este util˘ a pentru a genera dezvolt˘ ari Taylor simbolice ˆın
jurul unei valori date a argumentului. Ca exemplu, s˘ a calcul˘ am dezvoltarea de ordinul 5 a lui
e
x
ˆınjurul lui x = 0:
1.5. Toolbox-urile Symbolic 43
>> clear, syms x, Tay_expx=taylor(exp(x),5,x,0)
Tay_expx =
1+x+1/2
*
xˆ2+1/6
*
xˆ3+1/24
*
xˆ4
Comanda pretty scrie o expresie simbolic˘ a ˆıntr-un format apropiat de cel din matematic˘ a:
>> pretty(Tay_expx)
2 3 4
1 + x + 1/2 x + 1/6 x + 1/24 x
S˘ a compar˘ am acum aproximanta pentru x = 2 cu valoarea exact˘ a:
>> approx=subs(Tay_expx,x,2), exact=exp(2)
approx =
7
exact =
7.3891
>> frac_err=abs(1-approx/exact)
frac_err =
0.0527
Putem compara s¸i grafic cele dou˘ a aproximante cu ezplot (a se vedea capitolul 2 pentru
o descriere a facilit˘ at ¸ilor grafice din MATLAB):
>> ezplot(Tay_expx,[-3,3]), hold on
>> ezplot(exp(x),[-3,3]), hold off
>> legend(’Taylor’,’exp’,’Location’,’Best’)
Graficul apare ˆın figura 1.3. Funct ¸ia ezplot este o modalitate convenabil˘ a de a reprezenta
grafic expresii simbolice.
Pentru detalii suplimentare a se vedea help sym/taylor sau doc sym/taylor.
Limite. Pentru sintaxa s¸i modul de utilizare a comenzii limit a se vedea help
sym/limit sau doc sym/limit. Ne vom limita la a da dou˘ a exemple simple. Primul
calculeaz˘ a lim
x→0
sin x
x
:
>> L=limit(sin(x)/x,x,0)
L =
1
Al doilea exemplu calculez˘ a limitele laterale ale funct ¸iei tangent˘ a ˆın
π
2
.
>> LS=limit(tan(x),x,pi/2,’left’)
LS =
Inf
>> LD=limit(tan(x),x,pi/2,’right’)
LD =
-Inf
Rezolvarea ecuat ¸iilor. Toolbox-ul Symbolic Math poate rezolva ecuat ¸ii s¸i sisteme de
ecuat ¸ii, inclusiv neliniare. A se vedea help sym/solve sau doc sym/solve. Vom
44 Introducere ˆın MATLAB
−3 −2 −1 0 1 2 3
0
2
4
6
8
10
12
14
16
18
x
Taylor
exp
Figura 1.3: Comparat ¸ie ˆıntre exponent ¸ial˘ a s¸i dezvoltarea sa Taylor
da cˆ ateva exemple.
ˆ
Inainte de rezolvarea unei ecuat ¸ii vom s¸terge memoria, vom defini sim-
bolurile s¸i ecuat ¸iile. (Este o bun˘ a practic˘ a de a s¸terge memoria ˆınainte de rezolvarea unei noi
probleme pentru a evita efectele provocate de valorile precedente ale unor variabile.)
Vom ˆıncepe cu rezolvarea ecuat ¸iei de gradul al doilea ax
2
+bx +c = 0.
>> clear, syms x a b c
>> eq=’a
*
xˆ2+b
*
x+c=0’;
>> x=solve(eq,x)
x =
1/2/a
*
(-b+(bˆ2-4
*
a
*
c)ˆ(1/2))
1/2/a
*
(-b-(bˆ2-4
*
a
*
c)ˆ(1/2))
Este posibil ca la rezolvarea unei ecuat ¸ii s˘ a se obt ¸in˘ a mai multe solut ¸ii (ˆın exemplul de mai
sus s-au obt ¸inut dou˘ a). Se poate selecta una concret˘ a prin indexare, de exemplu x(1).
S˘ a rezolv˘ amacum sistemul liniar 2x−3y+4z = 5, y+4z+x = 10, −2z+3x+4y = 0.
>> clear, syms x y z
>> eq1=’2
*
x-3
*
y+4
*
z=5’;
>> eq2=’y+4
*
z+x=10’;
>> eq3=’-2
*
z+3
*
x+4
*
y=0’;
>> [x,y,z]=solve(eq1,eq2,eq3,x,y,z)
x =
-5/37
y =
45/37
z =
165/74
De notat c˘ a ordinea ˆın care se dau variabilele ˆın lista de parametrii de intrare nu este impor-
tant˘ a, pe cˆ and ordinea ˆın care se dau variabilele de ies¸ire este important˘ a.
1.5. Toolbox-urile Symbolic 45
Exemplul urm˘ ator rezolv˘ a sistemul neliniar y = 2e
x
s¸i y = 3 −x
2
.
>> clear, syms x y
>> eq1=’y=2
*
exp(x)’; eq2=’y=3-xˆ2’;
>> [x,y]=solve(eq1,eq2,x,y)
x =
.36104234240225080888501262630700
y =
2.8696484269926958876157155521484
Ultimul exemplu rezolv˘ a ecuat ¸ia trigonometric˘ a sin x =
1
2
. Aceasta are o infinitate de
solut ¸ii. Secvent ¸a de comenzi
>> clear, syms x, eq=’sin(x)=1/2’;
>> x=solve(eq,x)
d˘ a doar solut ¸ia
x =
1/6
*
pi
Pentru solut ¸iile dintr-un anumit interval, de exemplu [2,3] se poate folosi comanda simbolic˘ a
fsolve:
>> clear, x=maple(’fsolve(sin(x)=1/2,x,2..3)’)
x =
2.6179938779914943653855361527329
Rezultatul este un s¸ir de caractere, care poate fi convertit ˆın double cu str2double:
>> z=str2double(x), whos
z =
2.6180
Name Size Bytes Class
ans 1x33 264 double array
x 1x33 66 char array
y 1x1 8 double array
z 1x1 8 double array
Grand total is 68 elements using 346 bytes
Funct ¸ia maple trimite comenzi Maple nucleului Maple. A se consulta help-urile core-
spunz˘ atoare s¸i documentat ¸ia.
Aritmetic˘ a cu precizie variabil˘ a (vpa). Exist˘ a trei tipuri de operat ¸ii aritmetice ˆın tool-
box:
• numeric – operat ¸iile MATLAB ˆın virgul˘ a flotant˘ a;
• rat ¸ional – aritmetica simbolic˘ a exact˘ a Maple;
46 Introducere ˆın MATLAB
• VPA – aritmetica cu precizie variabil˘ a Maple (variable precision arithmetic).
Aritmetica de precizie variabil˘ a se realizeaz˘ a cu ajutorul funct ¸iei vpa. Num˘ arul de cifre
este controlat de variabila Maple Digits. Funct ¸ia digits afis¸eaz˘ a valoarea lui Digits, iar
digits(n), unde n este ˆıntreg seteaz˘ a Digits la n cifre. Comanda vpa(E) evalueaz˘ a E cu
precizia Digits, iar vpa(E,n) evalueaz˘ a E cu n cifre. Rezultatul este de tip sym.
De exemplu, instruct ¸iunile MATLAB
>> clear
>> format long
1/2+1/3
folosesc modul de calcul numeric pentru a produce
ans =
0.83333333333333
Cu toolbox-ul Symbolic Math, intruct ¸iunea
>> sym(1/2)+1/3
va produce, folosind calculul simbolic
ans =
5/6
Tot ˆın toolbox, cu aritmetica cu precizie variabil˘ a, instruct ¸iunile
>> digits(25)
>> vpa(’1/2+1/3’)
au ca rezultat
>> ans =
.8333333333333333333333333
Pentru a converti un num˘ ar ˆın precizie variabil˘ a ˆıntr-unul de tip double se poate folosi
funct ¸ia double.
ˆ
In exemplul urm˘ ator
>> digits(32)
>> clear, phi1=vpa((1+sqrt(5))/2)
phi1 =
1.6180339887498949025257388711907
>> phi2=vpa(’(1+sqrt(5))/2’), diff=phi1-phi2
phi2 =
1.6180339887498948482045868343656
diff =
.543211520368251e-16
discrepant ¸a dintre phi1 s¸i phi2 se explic˘ a prin aceea c˘ a prima atribuire face calculele ˆın
dubl˘ a precizie s¸i convertes¸te rezultatul ˆın vpa, iar a doua utilizeaz˘ a s¸irul s¸i face toate calculele
ˆın vpa.
Pentru detalii suplimentare asupra Symbolic Math Toolbox trimitem cititorul la [40].
1.5. Toolbox-urile Symbolic 47
Probleme
Problema 1.1. Calculat ¸i eficient suma
S
n
=
n
¸
k=1
1
k
2
,
pentru k = 20, 200. Cˆ at de bine aproximeaz˘ a S
n
suma seriei
S =

¸
k=1
1
k
2
=
π
2
6
?
Problema 1.2. Scriet ¸i un fis¸ier M de tip funct ¸ie care evalueaz˘ a dezvoltarea MacLaurin a
funct ¸iei ln(x + 1):
ln(x + 1) = x −
x
2
2
+
x
3
3
− + (−1)
n+1
x
n
n
+. . .
Convergent ¸a are loc pentru x ∈ [−1, 1]. Testat ¸i funct ¸ia MATLAB pentru valori ale lui x din
[−0.5, 0.5] s¸i verificat ¸i ce se ˆıntˆ ampl˘ a cˆ and x se apropie de -1 sau 1.
Problema 1.3. Scriet ¸i un script MATLAB care cites¸te un ˆıntreg s¸i determin˘ a scrierea sa cu
cifre romane.
Problema 1.4. Implementat ¸i algoritmul lui Euclid ˆın MATLAB.
Problema 1.5. Implementat ¸i ˆın MATLAB c˘ autarea binar˘ a ˆıntr-un tablou ordonat.
Problema 1.6. Scriet ¸i cod MATLAB care creaz˘ a, pentru o valoare dat˘ a a lui n, matricea
tridiagonal˘ a
B
n
=

1 n
−2 2 n −1
−3 3 n − 2
.
.
.
.
.
.
.
.
.
−n + 1 n −1 2
−n n
¸
¸
¸
¸
¸
¸
¸
¸
¸
.
Problema 1.7. Care este cea mai mare valoare a lui n cu proprietatea c˘ a
S
n
=
n
¸
k=1
k
2
< L,
unde L este dat? Rezolvat ¸i prin ˆınsumare s¸i utilizˆ and formula care d˘ a pe S
n
.
Problema 1.8. Generat ¸i matricea H
n
= (h
ij
), unde
h
ij
=
1
i +j −1
, i, j = 1, n,
folosind toolbox-ul Symbolic.
48 Introducere ˆın MATLAB
Problema 1.9. S˘ a se genereze matricea triunghiular˘ a a coeficient ¸ilor binomiali, pentru puteri
mergˆ and de la 1 la un n ∈ N dat.
Problema 1.10. Scriet ¸i o funct ¸ie MATLAB care primes¸te la intrare coordonatele vˆ arfurilor
unui triunghi s¸i subdivizeaz˘ a recursiv triunghiul ˆın patru triunghiuri, dup˘ a mijloacele laturilor.
Subdivizarea continu˘ a pˆ an˘ a cˆ and se atinge un nivel dat.
Problema 1.11. Scriet ¸i o funct ¸ie MATLAB care s˘ a extrag˘ a dintr-o matrice dat˘ a A o parte
care s˘ a fie diagonal˘ a pe blocuri, unde blocurile sunt de dimensiune dat˘ a, iar colt ¸ul din stˆ anga
sus al fiec˘ arui bloc este situat pe diagonala principal˘ a.
CAPITOLUL 2
Grafic˘ a ˆın MATLAB
Cuprins
2.1. Grafice bidimensionale . . . . . . . . . . . . . . . . . . . . . . . . . . 49
2.1.1. Grafice de baz˘ a . . . . . . . . . . . . . . . . . . . . . . . . . . 49
2.1.2. Axe s¸i adnotarea . . . . . . . . . . . . . . . . . . . . . . . . . . 55
2.1.3. Mai multe grafice pe aceeas¸i figur˘ a . . . . . . . . . . . . . . . . 58
2.2. Grafice tridimensionale . . . . . . . . . . . . . . . . . . . . . . . . . . 60
2.3. Salvarea s¸i imprimarea graficelor . . . . . . . . . . . . . . . . . . . . . 68
2.4. Facilit˘ at ¸i grafice noi ˆın MATLAB 7 . . . . . . . . . . . . . . . . . . . . 69
Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
MATLAB are facilit˘ at ¸i grafice puternice s¸i versatile. Se pot genera grafice s¸i figuri relativ
us¸or, iar atributele lor se pot modifica cu us¸urint ¸˘ a. Nu ne propunems˘ a fim exhaustivi, ci dorim
doar s˘ a introducemcititorul ˆın facilit˘ at ¸ile grafice MATLAB care vor fi necesare ˆın continuare.
Figurile existente pot fi modificate us¸or cu utilitarul Plot Editor. Pentru utilizarea sa a se vedea
help plotedit s¸i meniul Tools sau bara din ferestrele figurilor. Celor care doresc detalii
sau s˘ a aprofundeze subiectul le recomand˘ am [30, 38, 43, 46].
2.1. Grafice bidimensionale
2.1.1. Grafice de baz˘ a
Funct ¸ia MATLAB plot realizeaz˘ a grafice bidimensionale simple unind punctele vecine.
Tastˆ and
>>x=[1.5,2.2,3.1,4.6,5.7,6.3,9.4];
49
50 Grafic˘ a ˆın MATLAB
1 2 3 4 5 6 7 8 9 10
1
2
3
4
5
6
7
8
(a) Implicit
1 2 3 4 5 6 7 8 9 10
1
2
3
4
5
6
7
8
(b) Neimplicit
Figura 2.1: Grafice x-y simple
>>y=[2.3,3.9,4.3,7.2,4.5,3.8,1.1];
>>plot(x,y)
se obt ¸ine imaginea din stˆ anga figurii 2.1(a), ˆın care punctele x(i), y(i) sunt unite ˆın
secvent ¸˘ a. MATLAB deschide o fereastr˘ a pentru figur˘ a (dac˘ a una nu a fost deja deschis˘ a ca
rezultat al unei comenzi precedente) ˆın care deseneaz˘ a imaginea.
ˆ
In acest exemplu se uti-
lizeaz˘ a valori implicite ale unor facilit˘ at ¸i cum ar fi domeniul pentru axele x s¸i y, spat ¸iile
dintre diviziunile de pe axe, culoarea s¸i tipul liniei.
Mai general, ˆın loc de plot(x,y), putem utiliza plot(x,y,s¸ir), unde s¸ir este
un s¸ir de caractere ce controleaz˘ a culoarea, marcajul s¸i stilul de linie. De exemplu,
plot(x,y,’r
*
--’) ne spune c˘ a ˆın fiecare punct x(i), y(i) se va plasa un asterisc
ros¸u, punctele fiind unite cu o linie ros¸ie ˆıntrerupt˘ a. plot(x,y,’+y’) marcheaz˘ a punctele
cu un plus galben, f˘ ar˘ a a le uni cu nici o linie. Tabela 2.1 d˘ a toate opt ¸iunile disponibile. Imag-
inea din partea dreapt˘ a a figurii 2.1 s-a obt ¸inut cu plot(x,y,’kd:’), care deseneaz˘ a o
linie punctat˘ a neagr˘ a marcat˘ a cu romburi. Cele trei elemente din s¸ir pot apare ˆın orice ordine;
de exemplu, plot(x,y,’ms--’) s¸i plot(x,y,’s--m’) sunt echivalente. De notat c˘ a
plot accept˘ a mai multe seturi de date. De exemplu,
plot(x,y,’g-’,b,c,’r--’)
deseneaz˘ a ˆın aceeas¸i figur˘ a graficele pentru x(i), y(i) s¸i b(i), c(i) cu linie continu˘ a
verde s¸i respectiv cu linie ˆıntrerupt˘ a ros¸ie.
Comanda plot accept˘ a s¸i argumente matriciale. Dac˘ a x este un vector de dimensiune m
s¸i Y este o matrice mn, plot(x,Y) suprapune graficele obt ¸inute din x s¸i fiecare coloan˘ a
a lui Y. Similar, dac˘ a X s¸i Y sunt matrice de aceeas¸i dimensiune, plot(X,Y) suprapune
graficele obt ¸inute din coloanele corespunz˘ atoare ale lui X s¸i Y. Dac˘ a argumentele lui plot nu
sunt reale, atunci p˘ art ¸ile imaginare sunt ˆın general ignorate. Singura except ¸ie este atunci cˆ and
plot este apelat cu un singur argument. Dac˘ a Y este complex, plot(Y) este echivalent
cu plot(real(Y),imag(Y). ˆın cazul cˆ and Y este real, plot(Y) deseneaz˘ a graficul
obt ¸inut luˆ and pe abscis˘ a indicii punctelor s¸i pe ordonat˘ a Y.
Atributele se pot controla furnizˆ and argumente suplimentare lui plot. Propriet˘ at ¸ile
2.1. Grafice bidimensionale 51
Culoare
r ros¸u
g verde
b albastru
c cian
m magenta
y galben
k negru
w alb
Marcaj
o cerc
*
asteric
. punct
+ plus
x ori
s p˘ atrat
d romb
ˆ triunghi ˆın sus
v triunghi ˆın jos
> triunghi dreapta
< triunghi stˆ anga
p pentagram˘ a (stea cu 5 colt ¸uri)
h hexagram˘ a (stea cu 6 colt ¸uri)
Stil de linie
- continu˘ a (implicit)
- - ˆıntrerupt˘ a
: punctat˘ a
-. linie-punct
Tabela 2.1: Opt ¸iuni pentru comanda plot
1 2 3 4 5 6 7 8 9 10
1
2
3
4
5
6
7
8
(a)
1 2 3 4 5 6 7 8 9 10
1
2
3
4
5
6
7
8
(b)
Figura 2.2: Dou˘ a grafice x-y neimplicite
52 Grafic˘ a ˆın MATLAB
Linewidth (implicit 0.5 puncte) s¸i MarkerSize (implicit 6 puncte) pot fi specificate
ˆın puncte, unde un punct este 1/72 inch. De exemplu, comanda
>>plot(x,y,’m--ˆ’,’LineWidth’,3,’MarkerSize’,5)
produce un grafic cu linie cu l˘ at ¸imea 3 puncte s¸i marcaje cu dimensiunea 5 puncte. Culoarea
laturilor marcajului s¸i a interiorului marcajului se poate seta pe una din culorile din tabela 2.1
cu propriet˘ at ¸ile MarkerEdgeColor s¸i MarkerFaceColor. Astfel, de exemplu
plot(x,y,’o’,’MarkerEdgeColor,’,’m’)
coloreaz˘ a cercurile (nu s¸i interiorul) ˆın magenta. Graficul din stˆ anga figurii 2.2 s-a obt ¸inut cu
plot(x,y,’m--ˆ’,’LineWidth’,3,’MarkerSize’,5)
iar cel din dreapta cu comanda
plot(x,y,’--rs’,’MarkerSize’,20,’MarkerFaceColor’,’g’)
Funct ¸ia loglog, spre deosebire de plot, scaleaz˘ a axele logaritmic. Aceast˘ a facilitate
este util˘ a pentru a reprezenta relat ¸ii de tip putere sub forma unei drepte.
ˆ
In continuare vom
reprezenta graficul restului Taylor de ordinul al doilea [1 +h+h
2
/2 −exp(h)[ al lui exp(h)
pentru h = 1, 10
−1
, 10
−2
, 10
−3
, 10
−4
. Cˆ and h este mic, aceast˘ a cantitate se comport˘ a ca
un multiplu al lui h
3
s¸i deci pe o scar˘ a log-log valorile vor fi situate pe o dreapt˘ a cu panta
3. Vom verifica aceasta reprezentˆ and restul s¸i dreapta de referint ¸˘ a cu panta prev˘ azut˘ a cu linie
punctat˘ a. Graficul apare ˆın figura 2.3
h=10.ˆ[0:-1:-4];
taylerr=abs((1+h+h.ˆ2/2)-exp(h));
loglog(h,taylerr,’-’,h,h.ˆ3,’--’)
xlabel(’h’), ylabel(’|eroare|’)
title(’Eroarea in aproximarea Taylor de grad 2 a lui exp(h)’)
box off
ˆ
In acest exemplu s-au utilizat comenzile title, xlabel s¸i ylabel. Aceste funct ¸ii
afis¸eaz˘ a s¸irul parametru de intrare deasupra imaginii, axei x s¸i respectiv axei y. Comanda
box off elimin˘ a caseta de pe marginea graficului curent, l˘ asˆ and doar axele de coordonate.
Dac˘ a loglog primes¸te s¸i valori nepozitive, MATLAB va da un avertisment s¸i va afis¸a doar
datele pozitive. Funct ¸iile ˆınrudite semilogx s¸i semilogy, scaleaz˘ a doar una din axe.
Dac˘ a o comand˘ a de afis¸are este urmat˘ a de alta, atunci noua imagine o va ˆınlocui pe cea
veche sau se va suprapune peste ea, depinzˆ and de starea hold curent˘ a. Comanda hold on
face ca toate imaginile care urmeaz˘ a s˘ a se suprapun˘ a peste cea curent˘ a, ˆın timp ce hold off
ne spune c˘ a fiecare imagine nou˘ a o va ˆınlocui pe cea precedent˘ a. Starea implicit˘ a corespunde
lui hold off.
Se pot reprezenta curbe ˆın coordonate polare cu ajutorul comenzii polar(t,r), unde
t este unghiul polar, iar r este raza polar˘ a. Se poate folosi s¸i un parametru suplimentar s, cu
aceeas¸i semnificat ¸ie ca la plot. Graficul unei curbe ˆın coordonate polare, numit˘ a cardioid˘ a,
s¸i care are ecuat ¸ia
r = a(1 + cos t), t ∈ [0, 2π],
unde a este o constant˘ a real˘ a dat˘ a, apare ˆın figura 2.4 s¸i se obt ¸ine cu secvent ¸a:
2.1. Grafice bidimensionale 53
10
−4
10
−3
10
−2
10
−1
10
0
10
−14
10
−12
10
−10
10
−8
10
−6
10
−4
10
−2
10
0
h
|
e
r
o
a
r
e
|
Eroarea in aproximarea Taylor de gradul 2 a lui exp(h)
Figura 2.3: Exemplu cu loglog
t=0:pi/50:2
*
pi;
a=2; r=a
*
(1+cos(t));
polar(t,r)
title(’cardioida’)
Funct ¸ia fill lucreaz˘ a la fel ca plot. Comanda fill(x,y,c) reprezint˘ a poligonul
cu vˆ arfurile x(i), y(i) ˆın culoarea c. Punctele se iau ˆın ordine s¸i ultimul se unes¸te cu
primul. Culoarea c se poate da s¸i sub forma unui triplet RGB, [r g b]. Elementele r, g s¸i
b, care trebuie s˘ a fie scalari din [0,1], determin˘ a nivelul de ros¸u, verde s¸i albastru din culoare.
Astfel, fill(x,y,[0 1 0]) umple poligonul cu culoarea verde, iar fill(x,y,[1 0
1]) cu magenta. Dˆ and proport ¸ii egale de ros¸u, verde s¸i albastru se obt ¸in nuant ¸e de gri care
variaz˘ a de la negru ([0 0 0]) la alb ([1 1 1]). Exemplul urm˘ ator deseneaz˘ a un heptagon
regulat ˆın gri:
n=7;
t=2
*
(0:n-1)
*
pi/n;
fill(cos(t),sin(t),[0.7,0.7,0.7])
axis square
Rezultatul apare ˆın figura 2.5.
Comanda clf s¸terge figura curent˘ a, iar close o ˆınchide. Este posibil s˘ a avem mai multe
ferestre figuri pe ecran. Cel mai simplu mod de a crea o nou˘ a figur˘ a este comanda figure.
An-a fereastr˘ a figur˘ a (unde n apare ˆın bara de titlu) poate fi f˘ acut˘ a figur˘ a curent˘ a cu comanda
figure(n). Comanda close all va ˆınchide toate ferestrele figuri.
De notat c˘ a multe atribute ale unei figuri pot fi modificate interactiv, dup˘ a afis¸area figurii,
utilizˆ and meniul Tool al ferestrei sau bara de instrumente (toolbar).
ˆ
In particular, este posibil
s˘ a se fac˘ a zoom pe o regiune particular˘ a cu ajutorul mouse-ului (vezi help zoom).
54 Grafic˘ a ˆın MATLAB
1
2
3
4
30
210
60
240
90
270
120
300
150
330
180 0
cardioida
Figura 2.4: Grafic ˆın coordonate polare — cardioid˘ a
−1 −0.8 −0.6 −0.4 −0.2 0 0.2 0.4 0.6 0.8 1
−1
−0.8
−0.6
−0.4
−0.2
0
0.2
0.4
0.6
0.8
1
Figura 2.5: Exemplu de utilizare fill
2.1. Grafice bidimensionale 55
axis([xmin xmax ymin ymax]) Seteaz˘ a limitele axelor x s¸i y
axis auto Returneaz˘ a limitele implicite
axis equal Egaleaz˘ a unit˘ at ¸ile pe axele de coordonate
axis off Elimin˘ a axele
axis square Face caseta axelor p˘ atrat˘ a (cubic˘ a)
axis tight Seteaz˘ a limitele axelor egale cu limitele
datelor
xlim([xmin xmax]) Seteaz˘ a limitele pe axa x
ylim([ymin,ymax]) Seteaz˘ a limitele pe axa y
Tabela 2.2: Unele comenzi pentru controlul axelor
−1 −0.8 −0.6 −0.4 −0.2 0 0.2 0.4 0.6 0.8 1
−1
−0.8
−0.6
−0.4
−0.2
0
0.2
0.4
0.6
0.8
1
Figura 2.6: Utilizarea axis off
2.1.2. Axe s¸i adnotarea
Diversele aspecte ale unui grafic pot fi controlate cu comanda axis. Unele opt ¸iuni se
dau ˆın tabela 2.2. Axele pot fi eliminate cu axis off. Raportul dintre unitatea pe x s¸i cea
pe y (aspect ratio) poate fi f˘ acut egal cu unu, astfel ca cercurile s˘ a nu par˘ a elipse, cu axis
equal. Comanda axis square face caseta axelor p˘ atrat˘ a.
Graficul din stˆ anga figurii 2.6 a fost obt ¸inut cu
plot(fft(eye(17))), axis equal, axis square
Deoarece figura este situat˘ a ˆın interiorul cercului unitate, axele sunt foarte necesare. Graficul
din dreapta figurii 2.6 a fost generat cu
plot(fft(eye(17))), axis equal, axis off
Comanda axis([xmin xmax ymin ymax]) seteaz˘ a limitele pentru axa x s¸i re-
spectiv y. Pentru a reveni la set˘ arile implicite, pe care MATLAB le alege automat ˆın funct ¸ie
de datele care urmeaz˘ a a fi reprezentate, se utilizeaz˘ a axis auto. Dac˘ a se dores¸te ca
una dintre limite s˘ a fie aleas˘ a automat de c˘ atre MATLAB, ea se ia -inf sau inf; de ex-
emplu, axis([-1,1,-inf,0]. Limitele pe axa x sau y se pot seta individual cu cu
xlim([xmin xmax]) s¸i ylim([ymin ymax]).
Exemplul urm˘ ator reprezint˘ a funct ¸ia 1/(x −1)
2
+ 3/(x −2)
2
pe intervalul [0,3]:
56 Grafic˘ a ˆın MATLAB
x = linspace(0,3,500);
plot(x,1./(x-1).ˆ2+3./(x-2).ˆ2)
grid on
Comanda grid on produce o gril˘ a de linii orizontale s¸i verticale care pornesc de la diviz-
iunile axelor. Rezultatul se poate vedea ˆın figura 2.7(a). Datorit˘ a singularit˘ at ¸ilor din x = 1, 2
graficul nu d˘ a prea mult˘ a informat ¸ie. Totus¸i, executˆ and comanda
ylim([0,50])
se obt ¸ine figura 2.7(b), care se focalizeaz˘ a asupra p˘ art ¸ii interesante a primului grafic.
0 0.5 1 1.5 2 2.5 3
0
1
2
3
4
5
6
7
8
x 10
5
(a)
0 0.5 1 1.5 2 2.5 3
0
5
10
15
20
25
30
35
40
45
50
(b)
Figura 2.7: Utilizarea lui ylim (dreapta) pentru a schimba limitele automate pe axa y
(stˆ anga).
Exemplul urm˘ ator reprezint˘ a epicicloida
x(t) = (a +b) cos(t) −b cos((a/b + 1)t)
y(t) = (a +b) sin(t) −b sin((a/b + 1)t)

0 ≤ t ≤ 10π,
pentru a = 12 s¸i b = 5.
a = 12; b=5;
t=0:0.05:10
*
pi;
x = (a+b)
*
cos(t)-b
*
cos((a/b+1)
*
t);
y =(a+b)
*
sin(t)-b
*
sin((a/b+1)
*
t);
plot(x,y)
axis equal
axis([-25 25 -25 25])
grid on
title(’epicicloida: a=12, b=5’)
xlabel(’x(t)’),
ylabel(’y(t)’)
Rezultatul apare ˆın figura 2.8. Limitele din axis au fost alese astfel ca s˘ a r˘ amˆ an˘ a un oarecare
spat ¸iu ˆın jurul epicicloidei.
2.1. Grafice bidimensionale 57
−25 −20 −15 −10 −5 0 5 10 15 20 25
−25
−20
−15
−10
−5
0
5
10
15
20
25
epicicloida: a=12, b=5
x(t)
y
(
t
)
Figura 2.8: Epicicloid˘ a
Comanda legend(’string1’,’string2’,...,’stringn’,pp) va atas¸a
unui grafic o legend˘ a care pune ’stringi’ dup˘ a informat ¸ia culoare/marcaj/stil pen-
tru graficul corespunz˘ ator. Parametrul opt ¸ional pp indic˘ a pozit ¸ia legendei (vezi help
legend). Exemplul care urmeaz˘ a adaug˘ a o legend˘ a unui grafic al sinusului s¸i cosinusului
(figura 2.9):
x = -pi:pi/20:pi;
plot(x,cos(x),’-ro’,x,sin(x),’-.b’)
h = legend(’cos’,’sin’,2);
−4 −3 −2 −1 0 1 2 3 4
−1
−0.8
−0.6
−0.4
−0.2
0
0.2
0.4
0.6
0.8
1
cos
sin
Figura 2.9: Grafic cu legend˘ a
Textele se pot include ˆın grafice cu ajutorul comenzii text(x, y, s), unde x s¸i y sunt
58 Grafic˘ a ˆın MATLAB
0 1 2 3 4 5 6 7
−1
−0.8
−0.6
−0.4
−0.2
0
0.2
0.4
0.6
0.8
1
← sin(π)
Figura 2.10: Exemplu de utilizare text
coordonatele textului, iar s este un s¸ir de caractere sau o variabil˘ a de tip s¸ir.
ˆ
Incepˆ and cu ver-
siunea 5, MATLAB permite introducerea ˆın interiorul parametrului s a unor construct ¸ii T
E
X,
de exemplu pentru indice, ˆpentru exponent, sau litere greces¸ti ( `alpha, `beta, `gamma,
etc.). De asemenea, anumite atribute ale textului, cum ar fi tipul font-ului, dimensiunea s¸i
altele sunt selectabile ˆıncepˆ and cu versiunea 4. Comenzile
plot(0:pi/20:2
*
pi,sin(0:pi/20:2
*
pi),pi,0,’o’)
text(pi,0,’ \leftarrow sin(\pi)’,’FontSize’,18)
adnoteaz˘ a punctul de coordonate (π, 0) cu s¸irul sin(π). Rezultatul apare ˆın figura 2.10. Aceste
facilit˘ at ¸i se pot utiliza s¸i ˆın titluri, legende sau etichete ale axelor, care sunt obiecte de tip text.
ˆ
Incepˆ and cu MATLAB 7 primitivele text suport˘ a un subset puternic L
A
T
E
X. Proprietatea core-
spunz˘ atoare se numes¸te Interpreter s¸i poate avea valorile TeX, LaTeX sau none. Pen-
tru un exemplu de utilizare a macrourilor L
A
T
E
X a se vedea script-ul graphLegendre.m,
pagina 167.
2.1.3. Mai multe grafice pe aceeas¸i figur˘ a
Funct ¸ia MATLAB subplot permite plasarea mai multor imagini pe o gril˘ a ˆın aceeas¸i
figur˘ a. Utilizˆ and subplot(mnp), sau echivalent, subplot(m,n,p), fereastra figurii se
ˆımparte ˆıntr-un tablou mn de regiuni, fiecare avˆ and propriile ei axe. Comanda de desenare
curent˘ a se va aplica celei de-a p-a dintre aceste regiuni, unde contorul variaz˘ a de-a lungul
primei linii, apoi de-a lungul celei de-a doua s¸.a.m.d. De exemplu, subplot(425) ˆımparte
fereastra figurii ˆıntr-o matrice 4 2 de regiuni s¸i ne spune c˘ a toate comenzile de desenare se
vor aplica celei de-a cincea regiuni, adic˘ a primei regiuni din al treilea rˆ and. Dac˘ a se execut˘ a
mai tˆ arziu subplot(427), atunci pozit ¸ia (4,1) devine activ˘ a. Vom da ˆın continuare mai
multe exemple.
2.1. Grafice bidimensionale 59
0 2 4 6
0
2
4
6
8
10
12
0 2 4 6 8 10
−1
−0.5
0
0.5
1
0.2 0.4 0.6 0.8 1
−15
−10
−5
0
5
10
15
20
0 5 10 15
−1
−0.5
0
0.5
1
Figura 2.11: Exemple cu subplot s¸i fplot
Pentru cei nefamiliarizat ¸i cu grafica MATLAB, comanda de reprezentare grafic˘ a a unei
funct ¸ii, fplot, este foarte util˘ a. Ea alege ˆın mod adaptiv un num˘ ar suficient de puncte pentru
a produce un grafic suficient de precis. Exemplul urm˘ ator genereaz˘ a graficele din figura 2.11.
subplot(221), fplot(’exp(sqrt(x)
*
sin(12
*
x))’,[0 2
*
pi])
subplot(222), fplot(’sin(round(x))’,[0,10],’--’)
subplot(223), fplot(’cos(30
*
x)/x’,[0.01 1 -15 20],’-.’)
subplot(224)
fplot(’[sin(x),cos(2
*
x),1/(1+x)]’,[0 5
*
pi -1.5 -1.5 1.5])
ˆ
In acest exemplu primul apel al lui fplot produce graficul funct ¸iei exp(

xsin 12x) pe
intervalul 0 ≤ x ≤ 2π.
ˆ
In al doilea apel se selecteaz˘ a stilul de linie ˆıntrerupt˘ a cu ’--’, ˆın
locul celei implicite, continue. Argumentul [0.01 1 -15 20] din cel de-al treilea apel
seteaz˘ a limitele pe axele x s¸i y la 0.01 ≤ x ≤ 1 s¸i respectiv −15 ≤ y ≤ 20, iar ’-.’
utilizeaz˘ a stilul de linie linie-punct. Ultimul exemplu arat˘ a cum se pot reprezenta mai multe
funct ¸ii la un singur apel.
Sintaxa general˘ a a lui fplot este
fplot(fun,lims,tol,N,’LineSpec’,p1,p2,...)
cu semnificat ¸ia:
• fun este funct ¸ia de reprezentat (function handle, obiect inline sau expresie);
• lims d˘ a limitele pe axele x s¸i/sau y;
• tol este eroarea relativ˘ a (inplicit 2 10
−3
);
60 Grafic˘ a ˆın MATLAB
• se folosesc cel put ¸in N+1 puncte la generarea graficului;
• LineSpec determin˘ a tipul de linie;
• p1, p2, ... sunt parametrii adit ¸ionali transmis¸i lui fun, care trebuie s˘ a aib˘ a
parametrii de intrare x, p1, p2, . . . .
Este posibil s˘ a se obt ¸in˘ a grile neregulate de imagini apelˆ and subplot cu s¸abloane de
grile diferite. Figura 2.12 a fost generat˘ a cu:
x = linspace(0,15,100);
subplot(2,2,1), plot(x,sin(x))
subplot(2,2,2), plot(x,round(x))
subplot(2,1,2), plot(x,sin(round(x)))
Al treilea argument al lui subplot poate fi un vector ce specific˘ a mai multe regiuni; ultima
linie se poate ˆınlocui cu
subplot(2,2,3:4), plot(x,sin(round(x)))
ˆ
In ˆıncheierea acestei sect ¸iuni, tabela 2.3 d˘ a cele mai populare funct ¸ii MATLAB pentru
grafice 2D. Funct ¸iile cu numele de forma ezfun sunt variante us¸or de utilizat (easy) ale
funct ¸iilor fun corespunz˘ atoare.
0 5 10 15
−1
−0.5
0
0.5
1
0 5 10 15
−1
−0.5
0
0.5
1
0 5 10 15
0
5
10
15
Figura 2.12: Grile neregulate produse cu subplot
2.2. Grafice tridimensionale
Fuct ¸ia plot3 este un analog tridimensional al lui plot. Figura 2.13 a fost obt ¸inut˘ a cu:
2.2. Grafice tridimensionale 61
plot grafic x-y simplu
loglog grafic cu scar˘ a logaritmic˘ a pe ambele axe
semilogx grafic cu scar˘ a logaritmic˘ a pe axa x
semilogy grafic cu scar˘ a logaritmic˘ a pe axa x
plotyy grafic x-y cu axe y s¸i al stˆ anga s¸i la dreapta
polar grafic polar
fplot reprezentare grafic˘ a automat˘ a a unei funct ¸ii
ezplot versiune us¸or de utilizat (easy-to-use) a lui fplot
ezpolar versiune us¸or de utilizat (easy-to-use) a lui polar
fill umplere poligon
area grafic de tip arie plin˘ a
bar grafic de tip bar˘ a
barh grafic de tip bar˘ a orizontal˘ a
hist histogram˘ a
pie grafic cu sectoare de cerc
comet grafic x-y animat
errorbar grafic cu bare de eroare
quiver cˆ amp de vectori bidimensional
scatter Grafic dispersat (nor de puncte)
Tabela 2.3: Funct ¸ii pentru grafice 2D
−30
−20
−10
0
10
20
30
−30
−20
−10
0
10
20
30
−5
0
5
x(t)
Exemplu plot3
y(t)
z
(
t
)
Figura 2.13: Grafic 3D creat cu plot3
62 Grafic˘ a ˆın MATLAB
−2 −1.5 −1 −0.5 0 0.5 1 1.5 2
−1
−0.5
0
0.5
1
x
y
sin(3 y−x
2
+1)+cos(2 y
2
−2 x)
−2 −1.5 −1 −0.5 0 0.5 1 1.5 2
−1
−0.5
0
0.5
1
Figura 2.14: Contururi obt ¸inute cu ezcontour (sus) s¸i contour (jos).
t = -5:0.005:5;
x = (1+t.ˆ2).
*
sin(20
*
t);
y = (1+t.ˆ2).
*
cos(20
*
t);
z=t;
plot3(x,y,z)
grid on
xlabel(’x(t)’), ylabel(’y(t)’), zlabel(’z(t)’)
title(’{\itExemplu} plot3’,’FontSize’,14)
Acest exemplu utilizeaz˘ a funct ¸iile xlabel, ylabel s¸i title, precum s¸i analogul lor
zlabel. De notat s¸i utilizarea notat ¸iei T
E
X ˆın titlu, pentru a produce text italic. Culoarea,
marcajul s¸i stilul de linie pentru plot3 se controleaz˘ a la fel ca pentru plot. Limitele de axe
ˆın spat ¸iul tridimensional se determin˘ a automat, dar ele pot fi schimbate cu
axis([xmin, xmax, ymin, ymax, zmin, zmax])
ˆ
Inafar˘ a de xlim s¸i ylim, exist˘ a s¸i zlim, prin care se pot schimba limitele pe axa z.
O facilitate us¸or de utilizat de desenare a contururilor este oferit˘ a de ezcontour. Apelul
lui ezcontour ˆın exemplul urm˘ ator produce contururi pentru funct ¸ia sin(3y − x
2
+ 1) +
cos(2y
2
− 2x) pe domeniul dat de −2 ≤ x ≤ 2 s¸i −1 ≤ y ≤ 1; rezultatul se poate vedea ˆın
jum˘ atatea de sus a figurii 2.14.
subplot(211)
ezcontour(’sin(3
*
y-xˆ2+1)+cos(2
*
yˆ2-2
*
x)’,[-2,2,-1,1]);
%
x=-2:.01:2; y=-1:0.01:1;
[X,Y] = meshgrid(x,y);
Z =sin(3
*
Y-X.ˆ2+1)+cos(2
*
Y.ˆ2-2
*
X);
subplot(212)
contour(x,y,Z,20)
2.2. Grafice tridimensionale 63
Sursa MATLAB 2.1 Reprezentarea grafic˘ a a unei funct ¸ii implicite
xm=-3:0.2:3; ym=-2:0.2:1;
[x,y]=meshgrid(xm,ym);
f=y.ˆ3+exp(y)-tanh(x);
contour(x,y,f,[0,0],’k-’)
xlabel(’x’); ylabel(’y’);
title(’yˆ3+eˆy=tanh(x)’,’FontSize’,14)
De notat c˘ a nivelurile de contur au fost alese automat. Pentru jum˘ atatea de jos a figurii 2.14 s-
a utilizat funct ¸ia contour.
ˆ
Intˆ ai se fac init ¸ializ˘ arile x = -2:.01:2 s¸i y = -1:.01:1
pentru a obt ¸ine puncte mai apropiate ˆın domeniul respectiv. Apoi se execut˘ a [X,Y] =
meshgrid(x,y), care obt ¸ine matricele X s¸i Y astfel ˆıncˆ at fiecare linie a lui X s˘ a fie o
copie a lui x s¸i fiecare coloan˘ a a lui Y s˘ a fie o copie a vectorului y. (Funct ¸ia meshgrid
este foarte util˘ a la preg˘ atirea datelor pentru multe funct ¸ii MATLAB de grafic˘ a 3D.) Matricea
Z este apoi generat˘ a prin operat ¸ii de tip tablou din X s¸i Y; Z(i,j) memoreaz˘ a valoarea
funct ¸iei corespunzˆ and lui x(j) s¸i y(i). Aceasta este forma cerut˘ a de contour. Apelul
contour(x,y,Z,20) spune MATLAB s˘ a priveasc˘ a Z ca fiind format˘ a din cote deasupra
planului xOy cu spat ¸ierea dat˘ a de x s¸i y. Ultimul argument de intrare spune c˘ a se vor utiliza
20 de niveluri de contur; dac˘ a acest argument este omis, MATLAB va alege automat num˘ arul
de niveluri de contur.
Funct ¸ia contour se poate utiliza s¸i la reprezentarea funct ¸iilor implicite cum ar fi
y
3
+ exp(y) = tanh(x).
Pentru a o reprezenta grafic, rescriem ecuat ¸ia sub forma
f(x, y) = y
3
+ exp(y) −tanh(x)
s¸i desen˘ am conturul pentru f(x, y) = 0 (vezi script-ul 2.1 s¸i figura 2.15).
Pentru aplicat ¸ii ˆın mecanic˘ a ale funct ¸iei contour vezi [36].
Funct ¸ia mesh accept˘ a date ˆın aceeas¸i form˘ a ca s¸i contour s¸i produce o reprezentare
de suprafat ¸˘ a de tip cadru de sˆ arm˘ a (wire-frame). Funct ¸ia meshc se deosebes¸te de mesh
prin aceea c˘ a adaug˘ a un grafic de tip contur dedesubtul suprafet ¸ei. Exemplul de mai jos,
care produce figura 2.16, lucreaz˘ a cu suprafat ¸a definit˘ a de sin(y
2
+x) −cos(y −x
2
) pentru
0 ≤ x, y ≤ π. Primul grafic este generat cu subplot s¸i mesh(Z). Deoarece nu se d˘ a
nici o informat ¸ie pentru abscis˘ a s¸i ordonat˘ a, mesh utilizeaz˘ a ˆın locul lor indicii de linie s¸i
de coloan˘ a. A doua imagine arat˘ a efectul lui meshc(Z). Pentru cea de-a treia, s-a utilizat
mesh(x,y,Z), s¸i deci gradat ¸iile de pe axele x s¸i y corespund valorilor x s¸i y. Limitele pe
axe s-au specificat cu axis([0 pi 0 pi -5 5]). Pentru ultima imagine s-a utilizat din
nou mesh(Z), urmat˘ a de hidden off, care inhib˘ a afis¸area liniilor ascunse.
x = 0:0.1:pi; y=0:0.1:pi;
[X,Y]=meshgrid(x,y);
Z=sin(Y.ˆ2+X)-cos(Y-X.ˆ2);
subplot(221)
mesh(Z)
64 Grafic˘ a ˆın MATLAB
−3 −2 −1 0 1 2 3
−2
−1.5
−1
−0.5
0
0.5
1
x
y
y
3
+e
y
=tanh(x)
Figura 2.15: Curb˘ a dat˘ a printr-o funct ¸ie implicit˘ a
0
20
40
0
20
40
−2
0
2
0
20
40
0
20
40
−2
0
2
0
1
2
3
0
2
−5
0
5
0
20
40
0
20
40
−2
0
2
Figura 2.16: Grafice obt ¸inute cu mesh s¸i meshc
2.2. Grafice tridimensionale 65
−1
0
1
−1
0
1
−1
0
1
surf
−0.5
0
0.5
−1
0
1
−1
0
1
−1
0
1
surfc
−0.5
0
0.5
−1
0
1
−1
0
1
−1
0
1
surf shading flat
−0.5
0
0.5
−1
0
1
−1
0
1
−1
0
1
waterfall
−0.5
0
0.5
Figura 2.17: Suprafet ¸e desenate cu surf, surfc s¸i waterfall
subplot(222)
meshc(Z)
subplot(223)
mesh(x,y,Z)
axis([0 pi 0 pi -5 5])
subplot(2,2,4)
mesh(Z)
hidden off
Funct ¸ia surf difer˘ a de mesh prin aceea c˘ a produce un grafic de suprafat ¸a cu celulele
umplute (colorate), iar surfc adaug˘ a contururi dedesubt.
ˆ
In exemplul um˘ ator am folosit
funct ¸ia MATLAB membrane, care returneaz˘ a funct ¸ia proprie a unei membrane ˆın form˘ a
de L. Imaginile de pe prima linie a figurii 2.17 arat˘ a efectele lui surf s¸i surfc.
ˆ
In ele
apare o scar˘ a de culori, realizat˘ a utilizˆ and colorbar. Harta de culori curent˘ a se poate
seta cu colormap; vezi doc colormap. A treia imagine (pozit ¸ia (2,1)) utilizeaz˘ a funct ¸ia
shading cu opt ¸iunea flat pentru a elimina liniile grilei de pe suprafat ¸˘ a; o alt˘ a opt ¸iune
este interp, care selecteaz˘ a culorile prin interpolare. A patra imagine (pozit ¸ia (2,2)) uti-
lizeaz˘ a funct ¸ia ˆınrudit˘ a waterfall, care este similar˘ a lui mesh, dar f˘ ar˘ a cadrul de sˆ arm˘ a
pe direct ¸ia coloanelor.
Z=membrane; FS = ’FontSize’;
subplot(2,2,1), surf(Z), title(’\bf{surf}’,FS,14), colorbar
subplot(2,2,2), surfc(Z), title(’\bf{surfc}’,FS,14), colorbar
subplot(2,2,3), surf(Z), shading flat
title(’\bf{surf} shading flat’,FS,14)
subplot(2,2,4), waterfall(Z), title(’\bf{waterfall}’,FS,14)
66 Grafic˘ a ˆın MATLAB
−1
−0.5
0
0.5
1
−1
−0.5
0
0.5
1
−1
−0.5
0
0.5
1
Figura 2.18: Vedere 3D a unei imagini 2D.
Graficele tridimensionale din figurile 2.13, 2.16 s¸i 2.17 utilizeaz˘ a unghiurile de
vizualizare implicite ale MATLAB. Acestea pot fi modificate cu view. Apelul view(a,b)
alege unghiul de rotat ¸ie ˆın sens invers acelor de ceasornic ˆın jurul axei z (azimutul) de a
grade s¸i unghiul fat ¸˘ a de planul xOy (elevat ¸ia) de b grade. Implicit este view(-37.5,30).
Instrumentul rotate 3D de pe bara de instrumente a figurii fereastr˘ a permite utilizarea
mouse-ului pentru schimbarea unghiurilor de vedere.
Este posibil sa vedem un grafic 2D ca pe unul 3D, utilizˆ and comanda view pentru a da
unghiurile de vedere, sau mai simplu utilizˆ and view(3). Figura 2.18 a fost obt ¸inut˘ a tastˆ and
plot(fft(eye(17))); view(3); grid
Tabela 2.4 d˘ a un rezumat al celor mai populare funct ¸ii pentru grafice 3D. As¸a cum indic˘ a
tabela, unele funct ¸ii au s¸i variante “easy to use” al c˘ aror nume ˆıncepe cu ez.
O tr˘ as˘ atur˘ a comun˘ a tuturor funct ¸iilor grafice este aceea c˘ a valorile NaN sunt interpretate
ca ,,date lips˘ a” s¸i nu sunt reprezentate. De exemplu,
plot([1 2 NaN 3 4])
deseneaz˘ a dou˘ a linii disjuncte s¸i nu unes¸te punctele 2 s¸i 3, ˆın timp ce
A=peaks(80); A(28:52,28:52)=NaN; surfc(A)
produce graficul surfc cu gaur˘ a din figura 2.19. (Funct ¸ia peaks din MATLABare expresia
z = 3
*
(1-x).ˆ2.
*
exp(-(x.ˆ2) - (y+1).ˆ2) ...
- 10
*
(x/5 - x.ˆ3 - y.ˆ5).
*
exp(-x.ˆ2-y.ˆ2) ...
- 1/3
*
exp(-(x+1).ˆ2 - y.ˆ2)
s¸i genereaz˘ a o matrice de cote util˘ a pentru a testa s¸i demonstra facilit˘ at ¸ile grafice 3D.)
2.2. Grafice tridimensionale 67
plot3

grafic simplu x-y-z
contour

contur
contourf

contur plin
contour3 contur 3D
mesh

reprezentare wire-frame
meshc

reprezentare wire-frame plus contururi
meshz suprafat ¸˘ a wire-frame cu cortin˘ a
surf

suprafat ¸˘ a plin˘ a
surfc

suprafat ¸˘ a plin˘ a plus contururi
waterfall wire-frame unidirect ¸ional
bar3 bare 3D
bar3h bare 3D orizontale
pie3 grafice sector 3D
fill3 poligon umplut tridimensional
comet3 curb˘ a 3D animated˘ a
scatter3 nor de puncte 3D
Aceste funct ¸ii fun au corespondent ezfun
Tabela 2.4: Funct ¸ii grafice 3D
0
20
40
60
80
0
20
40
60
80
−10
−5
0
5
10
Figura 2.19: Grafic surfc al unei matrice ce cont ¸ine NaN-uri.
68 Grafic˘ a ˆın MATLAB
2.3. Salvarea s¸i imprimarea graficelor
Comanda print permite listarea unui grafic la imprimant˘ a sau salvarea lui pe disc ˆıntr-
un format grafic sau sub form˘ a de fis¸ier M. Formatul ei este:
print -dperiferic -optiuni numefisier
Ea are mai multe opt ¸iuni, care pot fi vizualizate cu help print. Dintre tipurile de per-
iferice admise amintim:
- dps - Postscript pentru imprimante alb-negru;
- dpsc - Postscript pentru imprimante color;
- dps2 - Postscript nivelul 2 pentru imprimante alb-negru;
- dpsc2 - PostScript nivelul 2 pentru imprimante color;
- deps - Encapsulated PostScript pentru imprimante alb-negru;
- depsc - Encapsulated PostScript pentru imprimante color;
- deps2 - Encapsulated PostScript nivelul 2 pentru imprimante alb-negru;
- depsc2 - Encapsulated PostScript nivelul 2 pentru imprimante color;
- djpeg - <nn> - imagine JPEG la nivelul de calitate nn (implicit nn=75).
Dac˘ a imprimanta dumneavoastr˘ a este setat˘ a corespunz˘ ator, comanda print va trimite
cont ¸inutul figurii curente spre ea. Comanda
print -deps2 myfig.eps
creaz˘ a un fis¸ier Postscript ˆıncapsulat alb s¸i negru, nivelul 2, numit myfig.eps, care poate fi
listat pe o imprimant˘ a PostScript sau inclus ˆıntr-un document. Acest fis¸ier poate fi ˆıncorporat
ˆıntr-un document L
A
T
E
X, as¸a cum se schit ¸eaz˘ a mai jos:
\documentclass{article}
\usepackage[dvips]{graphics}
...
\begin{document}
...
\begin{figure}
\begin{center}
\includegraphics[width=8cm]{myfig.eps}
\end{center}
\caption{...}
\end{figure}
...
\end{document}
Comanda print se poate utiliza s¸i ˆın form˘ a funct ¸ional˘ a (vezi sect ¸iunea 1.4.2, pagina
29 pentru dualitatea comenzi/funct ¸ii). Pentru a ilustra utilitatea formei funct ¸ionale, exem-
plul urm˘ ator genereaz˘ a o secvent ¸˘ a de cinci figuri s¸i le salveaz˘ a ˆın fis¸ierele fig1.eps, . . . ,
fig5.eps:
2.4. Facilit˘ at ¸i grafice noi ˆın MATLAB 7 69
x = linspace(0,2
*
pi,50);
for i=1:5
plot(x,sin(i
*
x))
print(-deps2’,[’fig’,int2str(i),’.eps’])
end
Al doilea argument al comenzii print este format prin concatenare, utilizˆ and funct ¸ia
int2str, care convertes¸te un ˆıntreg ˆın s¸ir. Astfel, de exemplu, pentru i=1, instruct ¸iunea
print este echivalent˘ a cu print(’-deps2’, ’fig1.eps’).
Comanda saveas salveaz˘ a o figur˘ a ˆıntr-un fis¸ier care apoi poate fi ˆınc˘ arcat de c˘ atre
MATLAB. De exemplu,
saveas(gcf,’myfig’,’fig’)
salveaz˘ a figura curent˘ a ˆın format binar FIG, care poate fi ˆınc˘ arcat ˆın MATLAB cu comanda
open(’myfig.fig’).
Se pot salva s¸i imprima figuri din meniul File al ferestrei figurii.
2.4. Facilit˘ at¸i grafice noi ˆın MATLAB 7
ˆ
In MATLAB 7 s-au introdus instrumente grafice noi s¸i s-au perfect ¸ionat unele facilit˘ at ¸i:
• noi interfet ¸e grafice interactive pentru crearea s¸i modificarea graficelor f˘ ar˘ a a introduce
cod M;
• generare de cod M dintr-o figur˘ a, permit ¸ˆ and reutilizarea graficelor din program;
• facilit˘ at ¸i ˆımbun˘ at˘ at ¸ite de adnotare a graficelor, inclusiv desenarea de figuri geometrice,
aliniere, legare a adnot˘ arilor de puncte;
• Instrumente de explorare a datelor;
• posibilitatea de a aplica transform˘ ari cum ar fi rotat ¸ii, translat ¸ii s¸i scal˘ ari asupra
grupurilor de obiecte grafice;
• panouri de interfet ¸e utilizator s¸i controale ActiveX accesibile din GUIDE;
• suport Handle Graphics
R
ˆımbun˘ at˘ at ¸it s¸i suport pentru afis¸area unor ecuat ¸ii cu interfat ¸˘ a
complet˘ a T
E
X sau L
A
T
E
X.
Probleme
Problema 2.1 (Curba Lissajous (Bodwitch)). S˘ a se reprezinte curba parametric˘ a:
α(t) = (a sin(nt +c), b sint), t ∈ [0, 2π],
pentru (a) a = 2, b = 3, c = 1, n = 2, (b) a = 5, b = 7, c = 9, n = 4, (c) a = b = c = 1,
n = 10.
70 Grafic˘ a ˆın MATLAB
Problema 2.2 (Curba fluture). S˘ a se reprezinte curba polar˘ a
r(t) = e
cos(t)
−a cos(bt) + sin
5
(ct),
pentru valorile (a) a = 2, b = 4, c = 1/12, (b) a = 1, b = 2, c = 1/4, (c) a = 3, b = 1,
c = 1/2. Experimentat ¸i pentru t ˆın intervale de forma [0, 2kπ], k ∈ N.
Problema 2.3 (Rodoneea sferic˘ a). S˘ a se reprezinte grafic curba tridimensional˘ a definit˘ a
prin
α(t) = a(sin(nt) cos t, sin(nt) sin t, cos(nu)),
pentru valorile (a) a = n = 2, (b) a = 1/2, n = 1, (c) a = 3, n = 1/4, (d) a = 1/3, n = 5.
Problema 2.4 (Sfera r˘ asucit˘ a (Corkscrew)). S˘ a se reprezinte grafic suprafat ¸a parametric˘ a
dat˘ a prin
χ(u, v) = (a cos u cos v, a sinu cos v, a sinv +bu)
unde (u, v) ∈ [0, 2π) [−π, π), pentru (a) a = b = 1, (b) a = 3, b = 1, (c) a = 1, b = 0, (d)
a = 1, b = −3/2.
Problema 2.5. S˘ a se reprezinte curba dat˘ a implicit
b
2
y
2
= x
3
(a −x),
pentru (a) a = 1, b = 2, (b) a = b = 1, (c) a = 2, b = 1.
Problema 2.6 (Elicoid). S˘ a se reprezinte grafic suprafat ¸a parametric˘ a dat˘ a prin
χ(u, v) = (av cos u, bv sin u, cu +ev)
unde (u, v) ∈ [0, 2π) [−d, d), pentru (a) a = 2, b = c = 1, e = 0, (b) a = 3, b = 1, c = 2,
e = 1.
CAPITOLUL 3
Elemente de Teoria erorilor s¸i aritmetic˘ a ˆın virgul ˘ a flotant ˘ a
Cuprins
3.1. Probleme numerice . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
3.2. M˘ asuri ale erorii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
3.3. Eroarea propagat˘ a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
3.4. Reprezentarea ˆın virgul˘ a flotant˘ a . . . . . . . . . . . . . . . . . . . . . 76
3.4.1. Parametrii reprezent˘ arii . . . . . . . . . . . . . . . . . . . . . . 76
3.4.2. Anularea . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
3.5. Standardizarea reprezent˘ arii ˆın virgul˘ a flotant˘ a . . . . . . . . . . . . . . 79
3.5.1. Parametrii standardului . . . . . . . . . . . . . . . . . . . . . . 79
3.5.2. Cantit˘ at ¸i speciale . . . . . . . . . . . . . . . . . . . . . . . . . 80
3.6. Numere ˆın virgul˘ a flotant˘ a ˆın MATLAB . . . . . . . . . . . . . . . . . . 81
3.7. Condit ¸ionarea unei probleme . . . . . . . . . . . . . . . . . . . . . . . 85
3.8. Condit ¸ionarea unui algoritm . . . . . . . . . . . . . . . . . . . . . . . . 87
3.9. Eroarea global˘ a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
3.10. Probleme prost condit ¸ionate s¸i probleme incorect puse . . . . . . . . . . 89
3.11. Stabilitatea . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
3.11.1. Notat ¸ii asimptotice . . . . . . . . . . . . . . . . . . . . . . . . 91
3.11.2. Precizie s¸i stabilitate . . . . . . . . . . . . . . . . . . . . . . . . 92
3.11.3. Analiza regresiv˘ a a erorilor . . . . . . . . . . . . . . . . . . . . 93
Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
Aprecierea preciziei rezultatelor calculelor este un obiectiv important ˆın Analiza nu-
meric˘ a. Se disting mai multe tipuri de erori care pot limita aceast˘ a precizie:
1. erori ˆın datele de intrare;
71
72 Elemente de Teoria erorilor s¸i aritmetic˘ a ˆın virgul˘ a flotant˘ a
2. erori de rotunjire;
3. erori de aproximare.
Erorile ˆın datele de intrare sunt ˆın afara (dincolo de) controlului calculelor. Ele se pot datora,
de exemplu, imperfect ¸iunilor inerente ale m˘ asur˘ atorilor fizice.
Erorile de rotunjire apar dac˘ a se fac calcule cu numere a c˘ aror reprezentare se restrˆ ange
la un num˘ ar finit de cifre, as¸a cum se ˆıntˆ ampl˘ a de obicei.
Pentru al treilea tip de erori, multe metode nu dau solut ¸ia exact˘ a a problemei date P, chiar
dac˘ a calculele se fac f˘ ar˘ a rotunjire, ci mai degrab˘ a solut ¸ia unei alte probleme mai simple
¯
P,
care aproximeaz˘ a P. De exemplu, problema P a ˆınsum˘ arii unei serii infinite:
e = 1 +
1
1!
+
1
2!
+
1
3!
+
poate fi ˆınlocuit˘ a cu problema mai simpl˘ a
¯
P de a ˆınsuma numai un num˘ ar finit de termeni
ai seriei. Eroarea de aproximare astfel obt ¸inut˘ a se numes¸te eroare de trunchiere (totus¸i, acest
termen este de asemenea utilizat pentru erorile de rotunjire comise prin s¸tergerea ultimelor
cifre ale reprezent˘ arii). Multe probleme de aproximare se se obt ¸in prin ,,discretizarea“ proble-
mei originale P: integralele definite se aproximeaz˘ a prin sume finite, derivatele prin diferent ¸e,
etc.
ˆ
In astfel de cazuri, eroarea de aproximare se numes¸te eroare de discretizare. Unii autori
extind termenul de ,,eroare de trunchiere“ pentru a acoperi s¸i eroarea de discretizare.
ˆ
In acest capitol vom examina efectul general al erorilor de intrare s¸i de rotunjire asupra
rezultatelor unui calcul. Erorile de aproximare vor fi discutate ˆın capitolele urm˘ atoare cˆ and
vom trata metodele numerice individual.
3.1. Probleme numerice
Combinat ¸ia dintre o problem˘ a matematic˘ a (PM), (de natur˘ a constructiv˘ a) s¸i specificat ¸iile
de precizie ale rezultatului (SP) se numes¸te problem˘ a numeric˘ a.
Exemplul 3.1.1. Fie f : R −→ R s¸i x ∈ R. Dorim s˘ a calcul˘ am y = f(x).
ˆ
In general x nu
este reprezentabil ˆın calculator; din acest motiv vom lucra cu o aproximare x

a sa, x

≈ x.
De asemenea este posibil ca f s˘ a nu poat˘ a fi calculat˘ a exact; vomˆınlocui f cu o aproximant˘ a a
sa f
A
. Valoarea calculat˘ a ˆın calculator va fi f
A
(x

). Deci problema numeric˘ a este urm˘ atoarea:
PM. dˆ andu-se x s¸i f, s˘ a se calculeze f(x);
SP. [f(x) −f
A
(x

)[ < ε, ε dat. ♦
Problemele numerice apart ¸in uneia din urm˘ atoarele categorii:
Evaluarea unei funct ¸ionale: l : T → R, cum ar fi, de exemplu, calcularea valorii
unei funct ¸ii f(x), a derivatelor f

(x), f
′′
(x), . . . (derivare numeric˘ a), a integralelor definite

b
a
f(t)dt (integrare numeric˘ a) s¸i a normelor |f|
p
, etc.
Rezolvarea ecuat ¸iilor algebrice: determinarea valorilor unor necunoscute aflate ˆın relat ¸ii
algebrice prin rezolvarea unor sisteme de ecuat ¸ii liniare sau neliniare.
3.1. Probleme numerice 73
Rezolvarea unor ecuat ¸ii analitice: determinarea funct ¸iilor (sau valorilor de funct ¸ii)
solut ¸ii ale unei ecuat ¸ii operatoriale, cum ar fi ecuat ¸iile diferent ¸iale ordinare sau cu derivate
part ¸iale, ecuat ¸iile integrale, ecuat ¸ii funct ¸ionale, etc.
Probleme de optimizare: determinarea unor valori numerice particulare ale unor funct ¸ii,
care optimizeaz˘ a (minimizeaz˘ a sau maximizeaz˘ a) o funct ¸ie obiectiv, cu restrict ¸ii sau f˘ ar˘ a
restrict ¸ii.
Problemele matematice constructive, din care provin problemele numerice, pot fi privite
ca o aplicat ¸ie abstract˘ a F : X →Y ˆıntre dou˘ a spat ¸ii liniare normate.
ˆ
In funct ¸ie de care dintre cantit˘ at ¸ile y, x sau F este necunoscut˘ a ˆın ecuat ¸ia
Fx = y,
avem de-a face cu o problem˘ a direct˘ a, o problem˘ a invers˘ a sau o problem˘ a de identificare:
F x y
problem˘ a direct˘ a dat˘ a dat dorit
problem˘ a invers˘ a dat˘ a dorit dat
problem˘ a de identificare dorit˘ a dat dat
Exemplul 3.1.2 (Integrare). Evaluarea unei integrale definite
Fx =

b
a
x(t)dt
este o problem˘ a direct˘ a.
ˆ
In aceast˘ a problem˘ a F : T → R este o funct ¸ional˘ a care aplic˘ a, de
exemplu T = C[a, b] pe R. Integrandul – ˆın acest caz o funct ¸ie x definit˘ a pe [a, b] – este dat,
iar integrala y = Fx trebuie determinat˘ a. ♦
Exemplul 3.1.3 (Sistem de ecuat ¸ii liniare). Rezolvarea sistemului de ecuat ¸ii liniare
Ax = b, A ∈ R
n×n
, x, b ∈ R
n
este o problem˘ a invers˘ a tipic˘ a. Aplicat ¸ia liniar˘ a F este caracterizat˘ a de n
2
coeficient ¸i (el-
ementele lui A). Vectorul b (imaginea) este dat, iar vectorul x (care este transformat ˆın b)
trebuie determinat. ♦
Exemplul 3.1.4 (Analiza unei mixturi). Trebuie determinat˘ a compozit ¸ia unei mixturi de
substant ¸e care se evapor˘ a. Presupunˆ and c˘ a ˆın unitatea de timp se evapor˘ a o cantitate fixat˘ a
din fiecare substant ¸˘ a, se poate utiliza urm˘ atorul model dependent de timp al mixturii
y(t) =
m
¸
i=1
y
i0
e
−kit
. (3.1.1)
ˆ
In afar˘ a de cantit˘ at ¸ile init ¸iale y
i0
, i = 1, 2, . . . , m s¸i de ratele de evaporare k
1
, . . . , k
m
ale
substant ¸elor necunoscute, num˘ arul m de substant ¸e este de asemenea necunoscut. Dac˘ a la
74 Elemente de Teoria erorilor s¸i aritmetic˘ a ˆın virgul˘ a flotant˘ a
momentele t
1
, . . . , t
n
se m˘ asoar˘ a cantit˘ at ¸ile y
1
, . . . , y
n
, trebuie determinat ¸i parametrii y
i0
,
k
i
, i = 1, m s¸i m ai aplicat ¸iei
F : (t
1
, . . . , t
n
) →(y
1
, . . . , y
n
) =

m
¸
i=1
y
i0
e
−kit1
, . . . ,
m
¸
i=1
y
i0
e
−kitn

;
deci avem o problem˘ a de identificare. Pentru orice m ∈ ¦1, 2, . . . , n/2¦ (cel mult 2 n/2 = n
necunoscute ˆın acest caz) se poate ˆıncerca minimizarea distant ¸ei ˆıntre funct ¸ia model (3.1.1)
s¸i valorile date, care poate fi definit˘ a prin
r
m
=
n
¸
j=1

y
i

m
¸
i=1
y
i0
e
−kitj

2
. (3.1.2)
Aceasta este o problem˘ a invers˘ a extremde dificil˘ a (problem˘ a de estimat ¸ie neliniar˘ a). Minimul
trebuie determinat folosind tehnici de optimizare cu restrict ¸ii. Valoarea reziduului minim r

m
face posibil˘ a determinarea valorii lui m care poate fi utilizat˘ a pentru cea mai bun˘ a adaptare
a modelului la datele de intrare. Totus¸i, aceasta nu ˆınsemn˘ a minimizarea lui r
m
f˘ ar˘ a restrict ¸ii
asupra lui m, ci mai degrab˘ a a nu alege m mai mare decˆ at este necesar, ˆın scopul de a obt ¸ine
modelul cel mai simplu posibil. ♦
3.2. M˘ asuri ale erorii
Definit ¸ia 3.2.1. Fie X un spat ¸iu liniar normat, A ⊆ X s¸i x ∈ X. Un element x

∈ A se
numes¸te aproximant˘ a a lui x din A (notat ¸ie x

≈ x).
Definit ¸ia 3.2.2. Dac˘ a x

este o aproximant˘ a a lui x diferent ¸a ∆x = x − x

se numes¸te
eroare, iar
|∆x| = |x

−x| (3.2.1)
se numes¸te eroare absolut˘ a.
Definit ¸ia 3.2.3. Expresia
δx =
|∆x|
|x|
, x = 0 (3.2.2)
se numes¸te eroare relativ˘ a.
Observat ¸ia 3.2.4.
1. Deoarece ˆın practic˘ a x este necunoscut, se foloses¸te aproximarea δx =
∆x
x

. Dac˘ a
|∆x| este mic comparativ cu x

, atunci aproximanta este bun˘ a.
2. Dac˘ a X = R, se lucreaz˘ a cu δx =
∆x
x
s¸i ∆x = x

−x. ♦
3.3. Eroarea propagat˘ a 75
3.3. Eroarea propagat˘ a
Fie f : R
n
−→ R, x = (x
1
, . . . , x
n
) s¸i x

= (x

1
, . . . , x

n
). Dorim s˘ a evalu˘ am
eroarea absolut˘ a s¸i relativ˘ a ∆f s¸i respectiv δf cˆ and se aproximeaz˘ a f(x) prin f(x

). Aceste
erori se numesc erori propagate, deoarece ne spun cum se propag˘ a eroarea init ¸ial˘ a (ab-
solut˘ a sau relativ˘ a) pe parcursul calcul˘ arii lui f. S˘ a presupunem c˘ a x = x

+ ∆x, unde
∆x = (∆x
1
, . . . , ∆x
n
). Pentru eroarea absolut˘ a avem (folosind formula lui Taylor)
∆f = f(x

1
+ ∆x
1
, . . . , x

n
+ ∆x
n
) −f(x

1
, . . . x

n
) =
=
n
¸
i=1
∆x
i
∂f
∂x

i
(x

1
, . . . x

n
) +
1
2
n
¸
i=1
n
¸
j=1
∆x
i
∆x
j

2
f
∂x

i
∂x

j
(θ),
unde θ ∈ [(x

1
, . . . , x

n
), (x

1
+ ∆x
1
, . . . , x

n
+ ∆x
n
)] .
Dac˘ a ∆x
i
sunt suficient de mici, atunci ∆x
i
∆x
j
sunt neglijabile comparativ cu ∆x
i
s¸i
obt ¸inem
∆f ≈
n
¸
i=1
∆x
i
∂f
∂x

i
(x

1
, . . . x

n
). (3.3.1)
Pentru eroarea relativ˘ a avem
δf =
∆f
f

n
¸
i=1
∆x
i
∂f
∂x

i
(x

)
f(x

)
=
n
¸
i=1
∆x
i

∂x

i
ln f(x

) =
=
n
¸
i=1
x

i
δx
i

∂x

i
ln f(x

).
Deci
δf =
n
¸
i=1
x

i

∂x

i
ln f(x

)δx
i
. (3.3.2)
De o mare important ¸˘ a practic˘ a este s¸i problema invers˘ a: cu ce precizie trebuie aproximate
datele pentru ca rezultatul s˘ a aib˘ a o precizie dat˘ a? Adic˘ a, dˆ andu-se ε > 0, cˆ at trebuie s˘ a fie
∆x
i
sau δx
i
, i = 1, n astfel ˆıncˆ at ∆f sau δf < ε? O metod˘ a de rezolvare se bazeaz˘ a pe
principiul efectelor egale: se presupune c˘ a tot ¸i termenii care intervin ˆın (3.3.1) sau (3.3.2) au
acelas¸i efect, adic˘ a
∂f
∂x

1
(x

)∆x
1
= . . . =
∂f
∂x

n
(x

)∆x
n
.
Din (3.3.1) se obt ¸ine
∆x
i

∆f
n

∂f
∂x

i
(x

)

. (3.3.3)
Analog,
δx
i
=
δf
n

x

i

∂x

i
ln f(x

)

. (3.3.4)
76 Elemente de Teoria erorilor s¸i aritmetic˘ a ˆın virgul˘ a flotant˘ a
3.4. Reprezentarea ˆın virgul˘ a flotant˘ a
3.4.1. Parametrii reprezent˘ arii
Des¸i au fost propuse mai multe reprezent˘ ari pentru numerele reale, reprezentarea ˆın vir-
gul˘ a flotant˘ a este cea mai r˘ aspˆ andit˘ a. Parametrii reprezent˘ arii ˆın virgul˘ a flotant˘ a sunt baza
β (ˆıntotdeauna par˘ a), precizia p, exponentul maxim e
max
s¸i cel minim e
min
, toate numere
naturale.
ˆ
In general, un num˘ ar ˆın virgul˘ a flotant˘ a se reprezint˘ a sub forma
x = ±d
0
.d
1
d
2
. . . d
p−1
β
e
, 0 ≤ d
i
< β (3.4.1)
unde d
0
.d
1
d
2
. . . d
p−1
se numes¸te semnificant sau mantis˘ a, iar e exponent . Valoarea lui x
este
±(d
0
+d
1
β
−1
+d
2
β
−2
+ +d
p−1
β
−(p−1)

e
. (3.4.2)
Pentru ca reprezentarea ˆın virgul˘ a flotant˘ a s˘ a fie unic˘ a, numerele flotante se normalizeaz˘ a,
adic˘ a se modific˘ a reprezentarea (nu valoarea) astfel ˆıncˆ at d
0
= 0. Zero se reprezint˘ a ca
1.0β
emin−1
.
ˆ
In acest mod ordinea numeric˘ a uzual˘ a a numerelor reale nenegative corespunde
ordinii lexicografice a reprezent˘ arii lor flotante (cu exponentul ˆın stˆ anga semnificantului).
Termenul de num˘ ar ˆın virgul˘ a flotant˘ a este utilizat pentru a desemna un num˘ ar real care
poate fi reprezentat exact ˆın virgul˘ a flotant˘ a.
Distribut ¸ia numerelor ˆın virgul˘ a flotant˘ a pe axa real˘ a apare ˆın figura 3.1.
β
e
min β
e
min
+1
β
e
min
+2
0
β
e
min
+3
Figura 3.1: Distribut ¸ia numerelor ˆın virgul˘ a flotant˘ a pe axa real˘ a (f˘ ar˘ a denormalizare)
Fiecare interval de forma [β
e
, β
e+1
) din Rcont ¸ine β
p
numere ˆın virgul˘ a flotant˘ a (num˘ arul
posibil de semnificant ¸i). Intervalul (0, β
emin
) este gol s¸i din acest motiv se introduc nu-
merele denormalizate, adic˘ a numere cu semnificantul de forma 0.d
1
d
2
. . . d
p−1
s¸i exponentul
β
emin−1
. Faptul c˘ a se admit numere denormalizate sau nu se consider˘ a a fi un parametru su-
plimentar al reprezent˘ arii. Mult ¸imea numerelor ˆın virgul˘ a flotant˘ a pentru un set de parametri
dat ¸i ai reprezent˘ arii se va nota cu
F(β, p, e
min
, e
max
, denorm), denorm ∈ ¦true, false¦.
Distribut ¸ia numerelor ˆın virgul˘ a flotant˘ a cˆ and se admite denormalizarea apare ˆın figura 3.2.
Aceast˘ a mult ¸ime nu coincide cu R din urm˘ atoarele motive:
1. este o submult ¸ime finit˘ a a lui Q;
3.4. Reprezentarea ˆın virgul˘ a flotant˘ a 77
0
β
e
min β
e
min
+1
β
e
min
+2
β
e
min
+3
Figura 3.2: Distribut ¸ia numerelor ˆın virgul˘ a flotant˘ a pe axa real˘ a (cu denormalizare)
2. pentru x ∈ R putem avea [x[ > β β
emax
(dep˘ as¸ire superioar˘ a) sau [x[ < 1.0 β
emin
(dep˘ as¸ire inferioar˘ a).
Operat ¸iile aritmetice uzuale pe F(β, p, e
min
, e
max
, denorm) se noteaz˘ a cu ⊕, ⊖, ⊗, ⊘,
iar funct ¸iile uzuale cu SIN, COS, EXP, LN, SQRT s¸.a.m.d. (F, ⊕, ⊗) nu este corp deoarece
(x ⊕y) ⊕z = x ⊕(y ⊕z) (x ⊗y) ⊗z = x ⊗(y ⊗z)
(x ⊕y) ⊗z = x ⊗z ⊕y ⊗z.
Pentru m˘ asurarea erorii de reprezentare, ˆın afar˘ a de eroarea relativ˘ a, se foloses¸te ulps
– units in the last place (unit˘ at ¸i ˆın ultima pozit ¸ie). Dac˘ a num˘ arul z se reprezint˘ a prin
d
0
.d
1
d
2
. . . d
p−1
β
e
, atunci eroarea este
[d
0
.d
1
d
2
. . . d
p−1
−z/β
e
[ β
p−1
ulps.
Eroarea relativ˘ a ce corespunde la
1
2
ulps este
1
2
β
−p

1
2
ulps ≤
β
2
β
−p
,
c˘ aci eroarea absolut˘ a este 0.0 . . . 0
. .. .
p
β

β
e
, cu β

=
β
2
. Valoarea eps =
β
2
β
−p
se numes¸te
epsilon-ul mas¸inii.
Rotunjirea implicit˘ a se face dup˘ a regula cifrei pare: dac˘ a x = d
0
.d
1
. . . d
p−1
d
p
. . . s¸i
d
p
>
β
2
rotunjirea se face ˆın sus, dac˘ a d
p
<
β
2
rotunjirea se face ˆın jos, iar dac˘ a d
p
=
β
2
s¸i
printre cifrele eliminate exist˘ a una nenul˘ a rotunjirea se face ˆın sus, iar ˆın caz contrar ultima
cifr˘ a p˘ astrat˘ a este par˘ a. Dac˘ a not˘ am cu fl operat ¸ia de rotunjire, operat ¸iile aritmetice din F se
pot defini prin
x ⊚y = fl(x ◦ y). (3.4.3)
Se pot alege s¸i alte variante de rotunjire – cˆ at mai dep˘ artat de 0, spre −∞, spre +∞, spre
0 (trunchiere).
ˆ
In rat ¸ionamentele asupra operat ¸iilor ˆın virgul˘ a flotant˘ a vom folosi urm˘ atorul
model
∀x, y ∈ F, ∃δ cu [δ[ < eps astfel ˆıncˆ at x ⊚y = (x ◦ y)(1 +δ). (3.4.4)
ˆ
In cuvinte, orice operat ¸ie ˆın aritmetica ˆın virgul˘ a flotant˘ a este exact˘ a pˆ an˘ a la o eroare relativ˘ a
de cel mult eps.
Formula (3.4.4) se numes¸te axioma fundamental˘ a a aritmeticii ˆın virgul˘ a flotant˘ a.
78 Elemente de Teoria erorilor s¸i aritmetic˘ a ˆın virgul˘ a flotant˘ a
3.4.2. Anularea
Din formulele pentru eroarea relativ˘ a (3.3.2), dac˘ a x ≈ x(1 +δ
x
) s¸i y ≈ y(1 +δ
y
), avem
urm˘ atoarele expresii pentru erorile relative ale operat ¸iilor ˆın virgul˘ a flotant˘ a:
δ
xy
= δ
x

y
, (3.4.5)
δ
x/y
= δ
x
−δ
y
, (3.4.6)
δ
x+y
=
x
x +y
δ
x
+
y
x +y
δ
y
. (3.4.7)
Singura operat ¸ie critic˘ a din punct de vedere al erorii este sc˘ aderea a dou˘ a cantit˘ at ¸i apropiate
x ≈ y, caz ˆın care δ
x−y
→ ∞. Acest fenomen se numes¸te anulare s¸i este reprezentat grafic
ˆın figura 3.3. Aici b, b

, b
′′
sunt cifre binare acceptabile, iar g-urile reprezint˘ a cifre binare
contaminate de eroare (gunoaie – garbage digits). De notat c˘ a, gunoi - gunoi = gunoi, dar mai
important, normalizarea mut˘ a prima cifr˘ a contaminat˘ a de pe pozit ¸ia a 12-a pe pozit ¸ia a treia.
x = 1 0 1 1 0 0 1 0 1 b b g g g g e
y = 1 0 1 1 0 0 1 0 1 b′ b′ g g g g e
x-y = 0 0 0 0 0 0 0 0 0 b
′′
b
′′
g g g g e
= b
′′
b
′′
g g g g ? ? ? ? ? ? ? ? ? e-9
Figura 3.3: Anularea
Anularea este de dou˘ a tipuri: benign˘ a, cˆ and se scad dou˘ a cantit˘ at ¸i exacte s¸i catastrofal ˘ a,
cˆ and se scad dou˘ a cantit˘ at ¸i deja rotunjite. Programatorul trebuie s˘ a fie cons¸tient de posi-
bilitatea aparit ¸iei anul˘ arii s¸i s˘ a ˆıncerce s˘ a o evite. Expresiile ˆın care apare anularea trebuie
rescrise, iar o anulare catastrofal˘ a trebuie ˆıntotdeauna transformat˘ a ˆın una benign˘ a. Vom da
ˆın continuare cˆ ateva exemple de anul˘ ari catastrofale s¸i modul de transformare a lor .
Exemplul 3.4.1. Dac˘ a a ≈ b, atunci expresia a
2
−b
2
se transform˘ a ˆın (a −b)(a +b). Forma
init ¸ial˘ a este de preferat ˆın cazul cˆ and a ≫b sau b ≫a. ♦
Exemplul 3.4.2. Dac˘ a anularea apare ˆıntr-o expresie cu radicali, se amplific˘ a cu conjugata:

x +δ −

x =
δ

x +δ +

x
, δ ≈ 0.

Exemplul 3.4.3. Diferent ¸a valorilor unei funct ¸ii pentru argumente apropiate se transform˘ a
folosind formula lui Taylor:
f(x +δ) −f(x) = δf

(x) +
δ
2
2
f
′′
(x) + f ∈ C
n
[a, b].

Exemplul 3.4.4. La ecuat ¸ia de gradul al doilea ax
2
+ bx + c = 0, anularea poate s˘ a apar˘ a
dac˘ a b
2
≫4ac. Formulele uzuale
3.5. Standardizarea reprezent˘ arii ˆın virgul˘ a flotant˘ a 79
x
1
=
−b +

b
2
−4ac
2a
(3.4.8)
x
2
=
−b −

b
2
−4ac
2a
(3.4.9)
pot s˘ a conduc˘ a la anulare astfel: pentru b > 0 anularea apare la calculul lui x
1
, iar pentru
b < 0 anularea apare la calculul lui x
2
. Remediul este s˘ a amplific˘ am cu conjugata
x
1
=
2c
−b −

b
2
−4ac
(3.4.10)
x
2
=
2c
−b +

b
2
−4ac
(3.4.11)
s¸i s˘ a utiliz˘ amˆın primul caz formulele (3.4.10) s¸i (3.4.9), iar ˆın al doilea caz (3.4.8) s¸i (3.4.11).
S˘ a consider˘ am acum ecuat ¸ia de gradul al doilea cu a = 1, b = 100000000 s¸i c = 1.
Aplicˆ and formulele 3.4.8 s¸i 3.4.9 obt ¸inem:
>>a=1; c=1; b=-100000000;
>>x1=(-b+sqrt(bˆ2-4
*
a
*
c))/(2
*
a)
x1 =
100000000
>>x2=(-b-sqrt(bˆ2-4
*
a
*
c))/(2
*
a)
x2 =
7.45058059692383e-009
Dac˘ a se amplific˘ a cu conjugata pentru a calcula x
2
avem:
>>x1=(-b+sqrt(bˆ2-4
*
a
*
c))/(2
*
a)
x1 =
100000000
>> x2a=2
*
c/(-b+sqrt(bˆ2-4
*
a
*
c))
x2a =
1e-008
Aceleas¸i rezultate se obt ¸in s¸i cu funct ¸ia root. ♦
3.5. Standardizarea reprezent˘ arii ˆın virgul˘ a flotant˘ a
3.5.1. Parametrii standardului
Exist˘ a dou˘ a standarde diferite pentru calculul ˆın virgul˘ a flotant˘ a: IEEE 754 care prevede
β = 2 s¸i IEEE 854 care permite β = 2 sau β = 10, dar las˘ a o mai mare libertate de
reprezentare. Ne vom ocupa numai de primul standard.
80 Elemente de Teoria erorilor s¸i aritmetic˘ a ˆın virgul˘ a flotant˘ a
Parametrii standardului se dau ˆın tabela 3.1.
Precizia
Simpl˘ a Simpl˘ a extins˘ a Dubl˘ a Dubl˘ a extins˘ a
p 24 ≥ 32 53 ≥ 64
e
max
+127 ≥ +1023 +1023 ≥ +16383
e
min
-126 ≤ −1022 -1022 ≤ −16382
dim. exponent 8 ≥ 11 11 ≥ 15
dim. num˘ ar 32 ≥ 43 64 ≥ 79
Tabela 3.1: Parametrii reprezent˘ arii flotante
Motivele pentru formatele extinse sunt:
1. o mai bun˘ a precizie;
2. pentru conversia din binar ˆın zecimal s¸i invers este nevoie de 9 cifre ˆın simpl˘ a precizie
s¸i de 17 cifre ˆın dubl˘ a precizie.
Motivul pentru care [e
min
[ < e
max
este acela c˘ a 1/2
emin
nu trebuie s˘ a dea dep˘ as¸ire.
Operat ¸iile ⊕, ⊖, ⊗, ⊘ trebuie s˘ a fie exact rotunjite. Precizia aceasta se asigur˘ a cu dou˘ a
cifre de gard˘ a s¸i un bit suplimentar.
Reprezentarea exponentului se numes¸te reprezentare cu exponent deplasat, adic˘ a ˆın loc
de e se reprezint˘ a e +D, unde D este fixat la alegerea reprezent˘ arii.
ˆ
In cazul IEEE 754, D = 127.
3.5.2. Cantit˘ at¸i speciale
ˆ
In standardul IEEE 754 exist˘ a urm˘ atoarele cantit˘ at ¸i speciale:
Exponent Semnificant Ce reprezint˘ a
e = e
min
−1 f = 0 ±0
e = e
min
−1 f = 0 0.f 2
emin
e
min
≤ e ≤ e
max
1.f 2
e
e = e
max
+ 1 f = 0 ±∞
e = e
max
+ 1 f = 0 NaN
NaN. Avem de fapt o familie de valori NaN, operat ¸iile ilegale sau nedeterminate conduc
la NaN: ∞+ (−∞), 0 ∞, 0/0, ∞/∞, xREM0, ∞REMy,

x pentru x < 0. Dac˘ a un
operand este NaN rezultatul va fi tot NaN.
Infinit. 1/0 = ∞, −1/0 = −∞. Valorile infinite dau posibilitatea continu˘ arii calculului,
lucru mai sigur decˆ at abortarea sau returnarea celui mai mare num˘ ar reprezentabil.
x
1+x
2
pentru x = ∞d˘ a rezultatul 0.
Zero cu semn. Avem doi de 0: +0, −0; relat ¸iile +0 = −0 s¸i −0 < +∞sunt adev˘ arate.
Avantaje: tratarea simpl˘ a a dep˘ as¸irilor inferioare s¸i discontinuit˘ at ¸ilor. Se face distinct ¸ie ˆıntre
log 0 = −∞s¸i log x = NaN pentru x < 0. F˘ ar˘ a 0 cu semn nu s-ar putea face distinct ¸ie la
logaritm ˆıntre un num˘ ar negativ care d˘ a dep˘ as¸ire superioar˘ a s¸i 0.
3.6. Numere ˆın virgul˘ a flotant˘ a ˆın MATLAB 81
3.6. Numere ˆın virgul˘ a flotant˘ a ˆın MATLAB
MATLAB utilizeaz˘ a numere ˆın virgul˘ a flotant˘ a dubl˘ a precizie, conform standardului
IEEE. Nu se face distinct ¸ie ˆıntre numerele ˆıntregi sau reale. Comanda format hex este
util˘ a la vizualizarea reprezent˘ arii ˆın virgul˘ a flotant˘ a. De exemplu, reprezent˘ arile lui 1, -1, 0.1
s¸i ale sect ¸iunii de aur, φ = (1 +

5)/2, se obt ¸in cu:
>> format hex
>> 1,-1
ans =
3ff0000000000000
ans =
bff0000000000000
>> 0.1
ans =
3fb999999999999a
>> phi=(1+sqrt(5))/2
phi =
3ff9e3779b97f4a8
Se consider˘ a c˘ a fract ¸ia f satisface 0 ≤ f < 1, iar exponentul −1022 ≤ e ≤ 1023. Sistemul
de numere ˆın virgul˘ a flotant˘ a al MATLAB poate fi caracterizat de trei constante: realmin,
realmax s¸i eps. Constanta realmin reprezint˘ a cel mai mic num˘ ar normalizat ˆın virgul˘ a
flotant˘ a. Orice cantitate mai mic˘ a decˆ at ea este fie un num˘ ar denormalizat, fie d˘ a dep˘ asire
inferioar˘ a. Cel mai mare num˘ ar reprezentabil ˆın virgul˘ a flotant˘ a se numes¸te realmax. Orice
cantitate mai mare decˆ at el d˘ a dep˘ as¸ire superioar˘ a. Epsilon-ul mas¸inii este desemnat prin
eps. Valorile acestor constante sunt
binar zecimal hexazecimal
eps 2
−52
2.220446049250313e-016 3cb0000000000000
realmin 2
−1022
2.225073858507201e-308 0010000000000000
realmax (2−eps)×2
1023
1.797693134862316e+308 7fefffffffffffff
Funct ¸iile din sursele 3.1 s¸i 3.2 calculeaz˘ a eps. Este instructiv s˘ a se tasteze individual, la
prompterul MATLAB, fiecare linie din a doua variant˘ a.
Sursa MATLAB 3.1 Calculul lui eps - varianta 1
function eps=myeps1
eps = 1;
while (1+eps) > 1
eps = eps/2;
end
eps = eps
*
2;
Interesant c˘ a:
82 Elemente de Teoria erorilor s¸i aritmetic˘ a ˆın virgul˘ a flotant˘ a
Sursa MATLAB 3.2 Calculul lui eps - varianta 2
function z=myeps2
x=4/3-1;
y=3
*
x;
z=1-y;
>> format long
>> 2
*
realmax
ans =
Inf
>> realmin
*
eps
ans =
4.940656458412465e-324
>> realmin
*
eps/2
ans =
0
sau ˆın hexazecimal:
>> format hex
>> 2
*
realmax
ans =
7ff0000000000000
>> realmin
*
eps
ans =
0000000000000001
>> realmin
*
eps/2
ans =
0000000000000000
Numerele denormalizate sunt situate ˆın intervalul dintre eps
*
realmin s¸i realmin. Nu-
merele denormalizate sunt reprezentate luˆ and e = 1023. Deplasamentul este D = 1023.
Infinitul, Inf, se reprezint˘ a luˆ and e = 1024 s¸i f = 0, iar NaN cu e = 1024 s¸i f = 0. De
exemplu
>> format short
>> Inf-Inf
ans =
NaN
>> Inf/Inf
ans =
NaN
Dou˘ a funct ¸ii care descompun ˆın componente s¸i recompun din componente numerele ˆın
virgul˘ a flotant˘ a sunt log2 s¸i pow2. Expresia [F,E]=log2(X) returneaz˘ a un tablou F de
numere reale, de aceeas¸i dimensiune ca s¸i X, care verific˘ a 0.5 <= abs(F) < 1 s¸i un tablou
E de ˆıntregi, de aceeas¸i dimensiune ca s¸i X, astfel ˆıncˆ at X = F.
*
2ˆE. Dac˘ a un element al lui
X este zero, pe pozit ¸ia respectiv˘ a vom avea F=0 s¸i E=0. Aceast˘ a funct ¸ie corespunde funct ¸iei
ANSI C frexp() s¸i funct ¸iei logb() din standardul IEEE. Comanda X=pow2(F,E),
3.6. Numere ˆın virgul˘ a flotant˘ a ˆın MATLAB 83
unde F este un tablou de reale s¸i E un tablou de ˆıntregi calculeaz˘ a X=F.
*
(2.ˆE). Intern,
se adun˘ a E la exponent ¸ii flotant ¸i ai elementelor lui F. Aceast˘ a funct ¸ie corespunde funct ¸iei
ANSI C ldexp() s¸i funct ¸iei scalbn() din standardul IEEE.
ˆ
In aritmetica IEEE, comanda
[F,E] = log2(X) conduce la:
F E X
1/2 1 1
pi/4 2 pi
-3/4 2 -3
1/2 -51 eps
1-eps/2 1024 realmax
1/2 -1021 realmin
iar X = pow2(F,E) reconstituie pe X.
Am v˘ azut ˆın '1.4.7 c˘ a ˆın MATLAB 7 exist˘ a s¸i numere ˆın virgul˘ a flotant˘ a ˆın simpl˘ a pre-
cizie. De exemplu,
>> a = single(5);
atribuie lui a valoarea 5 reprezentat˘ a ˆın virgul˘ a flotant˘ a ˆın simpl˘ a precizie. Putem compara
aceast˘ a valoare cu corespondentul ei ˆın dubl˘ a precizie:
>> b=5;
>> whos
Name Size Bytes Class
a 1x1 4 single array
b 1x1 8 double array
Grand total is 2 elements using 12 bytes
>> format hex
>> a,b
a =
40a00000
b =
4014000000000000
La conversia din double ˆın single, datorit˘ a rotunjirii la cel mai apropiat num˘ ar ˆın
simpl˘ a precizie, valoarea poate fi afectat˘ a:
>> format long
>> single(3.14)
ans =
3.1400001
ˆ
In operat ¸ii binare cu operanzi de tip single rezultatul este tot de tip single. Rezultatul
unei operat ¸ii binare ˆıntre un single s¸i un double este de tip single, ca ˆın exemplele:
>> x = single(2)
*
single(3)
x =
6
84 Elemente de Teoria erorilor s¸i aritmetic˘ a ˆın virgul˘ a flotant˘ a
>> class(x)
ans =
single
>> x = single(8)+3
x =
11
>> class(x)
ans =
single
Funct ¸iile eps, realmin s¸i realmax pot fi apelate s¸i pentru simpl˘ a precizie:
>> eps(’single’)
ans =
1.1921e-007
>> realmin(’single’),realmax(’single’)
ans =
1.1755e-038
ans =
3.4028e+038
ˆ
In MATLAB 7 funct ¸ia eps d˘ a distant ¸a ˆıntre numerele ˆın virgul˘ a flotant˘ a. Comanda
d=eps(x) unde x este un num˘ ar ˆın virgul˘ a floatant˘ a single sau double, d˘ a distant ¸a
de la abs(x) la cel mai apropiat num˘ ar ˆın virgul˘ a flotant˘ a mai mare decˆ at x s¸i de aceeas¸i
precizie cu x. Exemplu:
>> format long
>> eps
ans =
2.220446049250313e-016
>> eps(5)
ans =
8.881784197001252e-016
eps(’double’) este echivalent cu eps sau cu eps(1.0), iar eps(’single’) este
echivalent cu eps(single(1.0)).
Evident, distant ¸a dintre numerele ˆın virgul˘ a flotant˘ a simpl˘ a precizie este mai mare decˆ at
cea ˆıntre numerele ˆın virgul˘ a flotant˘ a dubl˘ a precizie. De exemplu,
>> x = single(5)
>> eps(x)
returneaz˘ a
ans =
4.7683716e-007
care este mai mare decˆ at eps(5).
3.7. Condit ¸ionarea unei probleme 85
3.7. Condit ¸ionarea unei probleme
Putem gˆ andi o problem˘ a ca o aplicat ¸ie
f : R
m
→R
n
, y = f(x). (3.7.1)
Ne intereseaz˘ a sensibilitatea aplicat ¸iei ˆıntr-un punct dat x la mici perturbat ¸ii ale argumen-
tului, adic˘ a cˆ at de mare sau cˆ at de mic˘ a este perturbat ¸ia lui y comparativ cu perturbat ¸ia lui
x.
ˆ
In particular, dorim s˘ a m˘ asur˘ am gradul de sensibilitate printr-un singur num˘ ar, num˘ arul de
condit ¸ionare al aplicat ¸iei f ˆın punctul x. Vom presupune c˘ a f este calculat˘ a exact, cu precizie
infinit˘ a. Condit ¸ionarea lui f este deci o proprietate inerent˘ a a funct ¸iei f s¸i nu depinde de nici
o considerat ¸ie algoritmic˘ a legat˘ a de implementarea sa.
Aceasta nu ˆınseamn˘ a c˘ a determinarea condit ¸ion˘ arii unei probleme este nerelevant˘ a pentru
orice solut ¸ie algoritmic˘ a a problemei. Din contr˘ a. Motivul este acela c˘ a solut ¸ia calculat˘ a cu
(3.7.1), y

(utilizˆ and un algoritm specific s¸i aritmetica ˆın virgul˘ a flotant˘ a) este (s¸i acest lucru
se poate demonstra) solut ¸ia unei probleme ,,apropiate“
y

= f(x

) (3.7.2)
cu
x

= x +δ (3.7.3)
s¸i, mai mult, distant ¸a |δ| = |x

−x| poate fi estimat˘ a ˆın termeni de precizie a mas¸inii. Deci,
dac˘ a s¸tim cˆ at de tare sau cˆ at de slab react ¸ioneaz˘ a aplicat ¸ia la mici perturbat ¸ii, cum ar fi δ ˆın
(3.7.3), putem spune ceva despre eroarea y

−y a solut ¸iei cauzat˘ a de aceast˘ a perturbat ¸ie.
Se poate considera s¸i condit ¸ionarea ˆıntre aplicat ¸ii mai generale, dar pentru implement˘ ari
practice este suficient s˘ a ne limit˘ am la cazul finit dimensional.
Fie
x = [x
1
, . . . , x
m
]
T
∈ R
m
, y = [y
1
, . . . , y
n
]
T
∈ R
n
,
y
ν
= f
ν
(x
1
, . . . , x
m
), ν = 1, n.
y
ν
va fi privit ca o funct ¸ie de o singur˘ a variabil˘ a x
µ
γ
νµ
= (cond
νµ
f)(x) =

x
µ
∂fν
∂xµ
f
ν
(x)

. (3.7.4)
Aceasta ne d˘ a o matrice de numere de condit ¸ionare
Γ(x) =

¸
¸
¸
¸
x1
∂f
1
∂x
1
f1(x)
. . .
xm
∂f
1
∂xm
f1(x)
.
.
.
.
.
.
.
.
.
x1
∂fn
∂x
1
fn(x)
. . .
xm
∂fn
∂xm
fn(x)
¸

= [γ
νµ
(x)] (3.7.5)
s¸i vom lua ca num˘ ar de condit ¸ionare
(cond f)(x) = |Γ(x)|. (3.7.6)
86 Elemente de Teoria erorilor s¸i aritmetic˘ a ˆın virgul˘ a flotant˘ a
Alt˘ a abordare. Consider˘ am norma | |

∆y
ν

m
¸
µ=1
∂f
ν
∂x
µ
∆x
µ
(= f
ν
(x + ∆x) −f
ν
(x))
[∆y
ν
[ ≤
n
¸
µ=1

∂f
ν
∂x
µ

∆x
µ
≤ max
µ
[∆x
µ
[
m
¸
µ=1

∂f
ν
∂x
µ


≤ max
µ
[∆x
µ
[ max
ν
m
¸
µ=1

∂f
ν
∂x
µ

Am obt ¸inut
|∆y|

≤ |∆x|

∂f
∂x


(3.7.7)
unde
J(x) =
∂f
∂x
=

∂f1
∂x1
∂f1
∂x2
. . .
∂f1
∂xm
∂f2
∂x1
∂f2
∂x2
. . .
∂f2
∂xm
.
.
.
.
.
.
.
.
.
.
.
.
∂fn
∂x1
∂fn
∂x2
. . .
∂fn
∂xm
¸
¸
¸
¸
¸
¸
∈ R
n
R
m
(3.7.8)
este matricea jacobian˘ a a lui f
|∆y|

|y|


|x|

∂f
∂x


|f(x)|

|∆x|
|x|

. (3.7.9)
Estimarea (3.7.9) este mai grosier˘ a decˆ at (3.7.4).
Dac˘ a m = n = 1 ˆın ambele abord˘ ari se obt ¸ine
(cond f)(x) =

xf

(x)
f(x)

,
pentru x = 0, y = 0.
Dac˘ a x = 0 ∧ y = 0 se consider˘ a eroarea absolut˘ a pentru x s¸i eroarea relativ˘ a pentru y
(cond f)(x) =

f

(x)
f(x)

;
pentru y = 0 ∧ x = 0 se ia eroarea absolut˘ a pentru y s¸i eroarea relativ˘ a pentru x, iar pentru
x = y = 0
(cond f)(x) = f

(x).
Exemplul 3.7.1 (Sisteme de ecuat ¸ii liniare algebrice). Dˆ andu-se matricea A ∈ R
m×n
s¸i
vectorul b ∈ R
n
s˘ a se rezolve sistemul
Ax = b. (3.7.10)
3.8. Condit ¸ionarea unui algoritm 87
Aici datele de intrare sunt elementele lui A s¸i b, iar rezultatul este vectorul x. Pentru a
simplifica lucrurile s˘ a presupunem c˘ a A este o matrice fixat˘ a care nu se schimb˘ a s¸i c˘ a b ar
putea fi perturbat. Avem aplicat ¸ia f : R
n
→R
n
dat˘ a de
x = f(b) := A
−1
b,
care este liniar˘ a. Deci
∂f
∂b
= A
−1
s¸i utilizˆ and (3.7.9) obt ¸inem
(cond f)(b) =
|b||A
−1
|
|A
−1
b|
=
|Ax||A
−1
|
|A
−1
b|
,
max
b∈R
n
b=0
(cond f)(b) = max
x∈R
n
b=0
|Ax|
|x|
|A
−1
| = |A||A
−1
|.
(3.7.11)

Num˘ arul |A||A
−1
| se numes¸te num˘ ar de condit ¸ionare al matricei A s¸i se noteaz˘ a cond A.
cond A = |A||A
−1
|.
Vom reveni asupra acestei probleme ˆın capitolul 4, consacrat rezolv˘ arii sistemelor de ecuat ¸ii
algebrice liniare.
3.8. Condit ¸ionarea unui algoritm
Fie problema
f : R
m
→R
n
, y = f(x). (3.8.1)
ˆ
Impreun˘ a cu f se d˘ a un algoritmA care rezolv˘ a problema. Adic˘ a dˆ andu-se un vector x ∈
F(β, p, e
min
, e
max
, denorm), algoritmul A produce un vector y
A
(ˆın aritmetica ˆın virgul˘ a
flotant˘ a), despre care se presupune c˘ a aproximeaz˘ a y = f(x). Astfel avem o aplicat ¸ie f
A
ce
descrie modul ˆın care problema f este rezolvat˘ a de algoritmul A
f
A
: F
m
(. . . ) →F
n
(. . . ), y
A
= f
A
(x).
Pentru a putea analiza f
A
facem urm˘ atoarea ipotez˘ a de baz˘ a
∀ x ∈ F
m
∃ x
A
∈ F
m
: f
A
(x) = f(x
A
). (3.8.2)
Adic˘ a, solut ¸ia calculat˘ a corespunzˆ and unei anumite intr˘ ari x este solut ¸ia exact˘ a pentru o alt˘ a
intrare, diferit˘ a de prima, x
A
(nu neap˘ arat num˘ ar ˆın virgul˘ a flotant˘ a, s¸i nici unic determinat˘ a)
despre care sper˘ am c˘ a este apropiat˘ a de x. Cu cˆ at g˘ asim un x
A
mai apropiat de x, cu atˆ at
avem mai mare ˆıncredere ˆın algoritm.
Definim condit ¸ionarea lui Aˆın x comparˆ and eroarea relativ˘ a la intrare cu eps:
(cond A)(x) = inf
xA
|x
A
−x|
|x|

eps .
Justificare:
δ
y
=
f
A
(x) −f(x)
f(x)
=
(x
A
−x)f

(ξ)
f(x)

x
A
−x
x

1
eps
xf

(x)
f(x)
eps .
88 Elemente de Teoria erorilor s¸i aritmetic˘ a ˆın virgul˘ a flotant˘ a
Infimumul se ia dup˘ a tot ¸i x
A
ce satisfac y
A
= f(x
A
).
ˆ
In practic˘ a se poate lua orice
valoare x
A
s¸i se obt ¸ine o margine superioar˘ a a num˘ arului de condit ¸ionare
(cond A)(x) ≤
xA−x
x
eps
. (3.8.3)
3.9. Eroarea global˘ a
Consider˘ am din nou problema:
f : R
m
→R
n
, y = f(x). (3.9.1)
Aceasta este problema (matematic˘ a) idealizat˘ a, ˆın care datele sunt numere reale, iar
solut ¸ia este solut ¸ia matematic˘ a exact˘ a. Cˆ and o rezolv˘ am ˆın aritmetica ˆın virgul˘ a flotant˘ a,
cu precizia eps, utilizˆ and un algoritm A, rotunjim la ˆınceput toate datele s¸i acestora nu le
aplic˘ am f, ci f
A
.
x

= x rotunjit,
|x

−x|
|x|
= ε, y

A
= f
A
(x

).
Aici ε este eroarea de rotunjire. Ea poate proveni s¸i din alte surse (m˘ asur˘ atori). Eroarea total˘ a
este
|y

A
−y|
|y|
.
Pe baza ipotezei (3.8.2) alegˆ and x
A
optimal avem
f
A
(x

) = f(x

A
),
|x

A
−x

|
|x

|
= (cond A)(x

) eps . (3.9.2)
Fie y

= f(x

). Avem utilizˆ and inegalitatea triunghiului
|y

A
−y|
|y|

|y

A
−y

|
|y|
+
|y

−y|
|y|

|y

A
−y

|
|y

|
+
|y

−y|
|y

|
.
Am presupus c˘ a |y| ≈ |y

|. Din (3.9.2) rezult˘ a pentru primul termen
|y

A
−y

|
|y

|
=
|f
A
(x

) −f(x

)|
|f(x

)|
=
|f(x

A
) −f(x

)|
|f(x

)|

≤ (cond f)(x

)
|x

A
−x|
|x

|
= (cond f)(x

)(cond A)(x

) eps,
iar pentru al doilea
|y

−y|
|y|
=
|f(x

) −f(x)|
|f(x)|
≤ (cond f)(x)
|x

−x|
|x|
= (cond f)(x)ε.
3.10. Probleme prost condit ¸ionate s¸i probleme incorect puse 89
Presupunˆ and c˘ a (cond f)(x

) ≈ (cond f)(x) obt ¸inem
|y

A
−y|
|y|
≤ (cond f)(x)[ε + (cond A)(x

) eps]. (3.9.3)
Interpretare: erorile ˆın date s¸i eps contribuie ˆımpreun˘ a la eroarea total˘ a. Ambele sunt
amplificate de condit ¸ionarea problemei, dar ultima este amplificat˘ a s¸i de condit ¸ionarea algo-
ritmului.
3.10. Probleme prost condit¸ionate s¸i probleme incorect puse
Dac˘ a num˘ arul de condit ¸ionare al unei probleme este mare ((condf)(x) ≫ 1), atunci
chiar pentru erori (relative) mici trebuie s˘ a ne as¸tept˘ am la erori foarte mari ˆın datele de ies¸ire.
Astfel de probleme se numesc probleme prost condit ¸ionate. Nu este posibil s˘ a tragem o linie
clar˘ a de demarcat ¸ie ˆıntre problemele bine condit ¸ionate s¸i cele prost condit ¸ionate. O catego-
rizare a unei probleme ˆın prost condit ¸ionat˘ a sau bine condit ¸ionat˘ a depinde de specificat ¸iile de
precizie. Dac˘ a dorim ca
|y

−y

A
|
|y|
< τ
s¸i ˆın (3.9.3) (cond f)(x)ε ≥ τ, atunci problema este sigur prost condit ¸ionat˘ a.
Este important s˘ a se aleag˘ a o limit˘ a rezonabil˘ a pentru eroare, c˘ aci ˆın caz contrar, chiar
dac˘ a cres¸tem num˘ arul de iterat ¸ii, nu vom putea cres¸te precizia.
Dac˘ a rezultatul unei probleme matematice depinde discontinuu de date ce variaz˘ a con-
tinuu, atunci este imposibil de dat o solut ¸ie numeric˘ a a problemei ˆın vecin˘ atatea disconti-
nuit˘ at ¸ii.
ˆ
In astfel de cazuri rezultatul poate fi perturbat substant ¸ial, chiar dac˘ a datele de intrare
sunt precise s¸i utiliz˘ am aritmetica de precizie multipl˘ a. Astfel de probleme se numesc prob-
leme incorect puse. O problem˘ a incorect pus˘ a poate s˘ a apar˘ a, de exemplu, dac˘ a un rezultat
ˆıntreg este calculat din date reale (adic˘ a date care variaz˘ a continuu), de exemplu num˘ arul de
r˘ ad˘ acini reale ale unei funct ¸ii sau rangul unei matrice.
Exemplul 3.10.1 (Num˘ arul de zerouri reale ale unui polinom). Ecuat ¸ia
P
3
(x, c
0
) = c
0
+x −2x
2
+x
3
are una, dou˘ a sau trei r˘ ad˘ acini reale, dup˘ a cum c
0
este strict pozitiv, zero sau strict negativ
(vezi figura 3.4). Deci, pentru valori ale lui c
0
apropiate de zero, num˘ arul de zerouri reale ale
lui P
3
este o problem˘ a incorect pus˘ a. ♦
Unii autori (vezi, de exemplu, [14]) numesc probleme incorect puse problemele al c˘ aror
num˘ ar de condit ¸ionare este infinit.
Exemplul 3.10.2. Un exemplu clasic este problema evalu˘ arii unui polinom cu schema lui
Horner (a se vedea [14, sect ¸iunea 1.6] s¸i [44]). Vom compara valoarea obt ¸inut˘ a prin evaluarea
lui p(x) = (x − 1)
7
prin expandare s¸i utilizarea schemei lui Horner s¸i prin calcul direct,
folosind formula care ˆıl d˘ a pe p. Figura 3.5(a) s-a obt ¸inut cu secvent ¸a:
90 Elemente de Teoria erorilor s¸i aritmetic˘ a ˆın virgul˘ a flotant˘ a
−1 0 1 2
−2
−1.5
−1
−0.5
0
0.5
1
1.5
2
−1 0 1 2
−2
−1.5
−1
−0.5
0
0.5
1
1.5
2
−1 0 1 2
−2
−1.5
−1
−0.5
0
0.5
1
1.5
2
Figura 3.4: Problem˘ a incorect pus˘ a
x = 0.988:1e-4:1.012;
p=[1,-7,21,-35,35,-21,7,-1];
y2=polyval(p,x);
plot(x,y2)
iar 3.5(b) cu
y1=(x-1).ˆ7;
plot(x,y1)
0.985 0.99 0.995 1 1.005 1.01 1.015
−4
−3
−2
−1
0
1
2
3
4
x 10
−14
(a) Horner
0.985 0.99 0.995 1 1.005 1.01 1.015
−4
−3
−2
−1
0
1
2
3
4
x 10
−14
(b) direct
Figura 3.5: Evaluarea lui p(x) = (x −1)
7
cu schema lui Horner (stˆ anga) s¸i direct
3.11. Stabilitatea 91
3.11. Stabilitatea
3.11.1. Notat¸ii asimptotice
Aceast˘ a subsect ¸iune introduce notat ¸iile asimptotice de baz˘ a s¸i cˆ ateva abuzuri comune.
Pentru o funct ¸ie dat˘ a g(n) vom nota cu Θ(g(n)) mult ¸imea de funct ¸ii
Θ(g(n)) = ¦f(n) : ∃c
1
, c
2
, n
0
> 0 0 ≤ c
1
g(n) ≤ f(n) ≤ c
2
g(n) ∀n ≤ n
0
¦ .
Des¸i Θ(g(n)) este o mult ¸ime; scriem f(n) = Θ(g(n)) pentru a indica faptul c˘ a f(n) ∈
Θ(g(n)). Acest abuz de egalitate pentru a nota apartenent ¸a la o mult ¸ime poate p˘ area la ˆınceput
confuz, dar vom vedea c˘ a are anumite avantaje. Vom spune c˘ a g(n) este o margine asimptot-
ica strˆ ans˘ a (assymptotically tight bound) pentru f(n).
Definit ¸ia mult ¸imii Θ(g(n)) necesit˘ a ca fiecare membru al ei s˘ a fie asimptotic nenegativ,
adic˘ a f(n) ≥ 0 cˆ and n este suficient de mare.
ˆ
In consecint ¸˘ a g(n) trebuie s˘ a fie s¸i ea asimptotic
negativ˘ a, c˘ aci altfel Θ(g(n)) este vid˘ a. Din acest motiv vom presupune c˘ a fiecare funct ¸ie
utilizat˘ a ˆın interiorul notat ¸iei Θ este asimptotic nenegativ˘ a. Aceast˘ a presupunere are loc s¸i
pentru celelate notat ¸ii asimptotice care vor fi definite ˆın acest capitol.
Pentru o funct ¸ie dat˘ a g(n) vom nota cu O(g(n)) mult ¸imea de funct ¸ii
O(g(n)) = ¦f(n) : ∃c, n
0
0 ≤ f(n) ≤ cg(n), ∀n ≥ n
0
¦ .
Pentru a indica faptul c˘ a f(n) este un membru al lui O(g(n)) scriem f(n) = O(g(n)).
Observ˘ am c˘ a f(n) = Θ(g(n)) =⇒ f(n) = O(g(n), deoarece notat ¸ia Θ este mai tare decˆ at
notat ¸ia O. Utilizˆ and notat ¸iile din teoria mult ¸imilor avem Θ(g(n)) ⊆ O(g(n)). Una dintre
propriet˘ at ¸ile ciudate ale notat ¸iei este aceea c˘ a n = O(n
2
).
Pentru o funct ¸ie dat˘ a g(n) vom nota prin Ω(g(n)) mult ¸imea de funct ¸ii
Ω(g(n)) = ¦f(n) : ∃c, n
0
0 ≤ cg(n) ≤ f(n), ∀n ≥ n
0
¦ .
Aceast˘ a notat ¸ie furnizeaz˘ a o margine asimptotic˘ a inferioar˘ a. Din definit ¸iile notat ¸iilor asimp-
totice se obt ¸ine imediat:
f(n) = Θ(g(n)) ⇐⇒f(n) = O(g(n)) ∧ f(n) = Ω(g(n)).
Spunem c˘ a funct ¸iile f s¸i g : N −→R sunt asimptotic echivalente, notat ¸ie ∼ dac˘ a
lim
n→∞
f(n)
g(n)
= 1.
Extinderea notat ¸iilor asimptotice la mult ¸imea numerelor reale este natural˘ a. De exemplu
f(t) = O(g(t)) ˆınseamn˘ a c˘ a exist˘ a o constant˘ a pozitiv˘ a C astfel ˆıncˆ at pentru orice t sufi-
cient de apropiat de o limit˘ a subˆınt ¸eleas˘ a (de exemplu t →∞sau t →0) avem
[f(t)[ ≤ Cg(t). (3.11.1)
92 Elemente de Teoria erorilor s¸i aritmetic˘ a ˆın virgul˘ a flotant˘ a
3.11.2. Precizie s¸i stabilitate
Vom considera o problem˘ a ca fiind o aplicat ¸ie f : X −→ Y , unde X s¸i Y sunt spat ¸ii
liniare normate (pentru scopurile noastre ne vom limita la cazul finit dimensional). Ne va
interesa comportarea problemei ˆıntr-un punct particular x ∈ X (comportarea poate diferi de
la un punct la altul). Combinat ¸ia unei probleme f cu nis¸te date prescrise x se va numi instant ¸˘ a
a problemei, dar se obis¸nuies¸te s˘ a se utilizeze termenul de problem˘ a pentru ambele not ¸iuni.
Numerele complexe sunt reprezentate printr-o pereche de numere ˆın virgul˘ a flotant˘ a s¸i
operat ¸iile elementare se realizeaz˘ a pe aceast˘ a reprezentare. Rezultatul este acela c˘ a axioma
(3.4.4) este valabil˘ a s¸i pentru numere complexe, exceptˆ and faptul c˘ a la operat ¸iile ⊗ s¸i ⊘ eps
trebuie m˘ arit cu un factor de 2
3/2
s¸i respectiv 2
5/2
.
Un algoritm va fi privit ca o aplicat ¸ie f
A
: X −→Y , unde X s¸i Y sunt ca mai sus. Fie f
o problem˘ a, un calculator al c˘ arui sistem de numere ˆın virgul˘ a flotant˘ a satisface (3.4.4), dar
nu neap˘ arat (3.4.3), un algoritm f
A
pentru f s¸i o implementare a acestui algoritm sub form˘ a
de program pe calculator, A, toate fixate. Dˆ andu-se o dat˘ a x ∈ X, o vom rotunji la un num˘ ar
ˆın virgul˘ a flotant˘ a s¸i apoi o vom furniza programului. Rezultatul este o colect ¸ie de numere ˆın
virgul˘ a flotant˘ a care apart ¸in spat ¸iului Y (deoarece algoritmul a fost conceput s˘ a rezolve f).
Vom numi acest rezultat calculat f
A
(x).
Exceptˆ and cazul trivial, f
A
nu poate fi continu˘ a. Vom spune c˘ a un algoritm f
A
pentru
problema f este precis, dac˘ a pentru orice x ∈ X, eroarea sa relativ˘ a verific˘ a
|f
A
(x) −f(x)|
|f(x)|
= O(eps). (3.11.2)
Dac˘ a problema f este prost condit ¸ionat˘ a, obiectivul preciziei, as¸a cum este definit de
(3.11.2), este nerezonabil de ambit ¸ios. Erorile de rotunjire ˆın datele de intrare sunt inevitabile
pe calculatoare numerice s¸i chiar dac˘ a toate calculele urm˘ atoare se realizeaz˘ a perfect, aceast˘ a
perturbat ¸ie ne conduce la o modificare semnificativ˘ a a rezultatului.
ˆ
In loc s˘ a urm˘ arimprecizia
ˆın toate cazurile, este mai rezonabil s˘ a urm˘ arimstabilitatea. Spunemc˘ a algoritmul f
A
pentru
problema f este stabil dac˘ a pentru orice x ∈ X exist˘ a un ¯ x cu
|¯ x −x|
|x|
= O(eps) (3.11.3)
astfel ˆıncˆ at
|f
A
(x) −f(¯ x)|
|f(¯ x)|
= O(eps). (3.11.4)
ˆ
In cuvinte, un algoritm stabil ne d˘ a un r˘ aspuns aproape corect la o problem˘ a aproape exact˘ a.
Mult ¸i dintre algoritmii din algebra liniar˘ a numeric˘ a satisfac o condit ¸ie care este mai put-
ernic˘ a s¸i mai simpl˘ a decˆ at stabilitatea. Spunem c˘ a un algoritm f
A
pentru problema f este
regresiv stabil (backward stable) dac˘ a
∀x ∈ X ∃¯ x cu
|¯ x −x|
|x|
= O(eps) astfel ˆıncˆ at f
A
(x) = f(¯ x). (3.11.5)
Aceasta este o ˆınt˘ arire a definit ¸iei stabilit˘ at ¸ii ˆın sensul c˘ a O(eps) din (3.11.4) a fost ˆınlocuit cu
0.
ˆ
In cuvinte, un algoritm este regresiv stabil dac˘ a d˘ a r˘ aspunsul corect la o problem˘ a aproape
exact˘ a.
3.11. Stabilitatea 93
Observat ¸ia 3.11.1. Semnificat ¸ia notat ¸iei
[[cantitate calculat˘ a[[ = O(eps) (3.11.6)
este urm˘ atoarea:
• [[cantitate calculat˘ a[[ reprezint˘ a norma unui num˘ ar sau a unei colect ¸ii de numere de-
terminate de algoritmul f
A
pentru o problem˘ a f, depinzˆ and atˆ at de datele de intrare
x ∈ X ale lui f cˆ at s¸i de eps. Un exemplu este eroarea relativ˘ a.
• Procesul implicit de trecere la limit˘ a este eps → 0 (adic˘ a eps corespunde lui t din
(3.11.1)).
• O se aplic˘ a uniform tuturor datelor x ∈ X. La formularea rezultatelor de stabilitate
aceast˘ a uniformitate va fi implicit˘ a.
• Pentru orice aritmetic˘ a pe calculator particular˘ a eps este o cantitate fixat˘ a. Cˆ and vor-
bim despre limita eps →0, consider˘ amo idealizare a unui calculator sau a unei familii
de calculatoare. Ecuat ¸ia (3.11.6) ˆınseamn˘ a c˘ a dac˘ a rul˘ am algoritmul ˆın cauz˘ a pe cal-
culatoare ce satisfac (3.4.3) s¸i (3.4.4) pentru un s¸ir de eps-uri descresc˘ ator ce tinde
c˘ atre zero, se garanteaz˘ a c˘ a [[cantitate calculat˘ a[[ descres¸te proport ¸ional cu eps sau mai
repede. Acestor calculatoare ideale li se cere s˘ a satisfac˘ a doar (3.4.3) s¸i (3.4.4) s¸i nimic
altceva.
• Constanta implicit˘ a din notat ¸ia O poate depinde s¸i de dimensiunile argumentelor (de
exemplu pentru rezolvarea unui sistem Ax = b de dimensiunile lui A s¸i b).
ˆ
In general,
ˆın probleme practice, cres¸terea erorii datorat˘ a dimensiunii este lent˘ a, dar pot exista
situat ¸ii ˆın care s˘ a apar˘ a factori cum ar fi 2
m
, care fac astfel de margini inutile ˆın prac-
tic˘ a. ♦
Datorit˘ a echivalent ¸ei normelor pe spat ¸ii finit dimensionale, pentru problemele f s¸i algo-
ritmii f
A
definite pe astfel de spat ¸ii, propriet˘ at ¸ile de precizie, stabilitate s¸i stabilitate regresiv˘ a
au loc sau nu independent de alegerea normelor.
3.11.3. Analiza regresiv˘ a a erorilor
Stabilitatea regresiv˘ a implic˘ a precizia ˆın sens relativ.
Teorema 3.11.2. Presupunem c˘ a se aplic˘ a un algoritm regresiv stabil f
A
unei probleme f :
X −→ Y cu num˘ arul de condit ¸ionare (cond f)(x) pe un calculator ce satisface (3.4.3) s¸i
(3.4.4). Atunci eroarea relativ˘ a satisface
|f
A
(x) −f(x)|
|f(x)|
= O((cond f)(x) eps) . (3.11.7)
Demonstrat ¸ie. Din definit ¸ia (3.11.5) a stabilit˘ at ¸ii regresive, exist˘ a un ¯ x ∈ X ce satisface
|¯ x −x|
|x|
= O(eps),
94 Elemente de Teoria erorilor s¸i aritmetic˘ a ˆın virgul˘ a flotant˘ a
astfel ˆıncˆ at f
A
(x) = f (¯ x). Din definit ¸ia (3.7.5) s¸i (3.7.6) a lui (cond f)(x) aceasta implic˘ a
|f
A
(x) −f(x)|
|f(x)|
≤ ((cond f)(x) +o(1))
|¯ x −x|
|x|
, (3.11.8)
unde o(1) desemneaz˘ a o cantitate ce converge c˘ atre zero cˆ and eps → 0. Combinˆ and aceste
delimit˘ ari se obt ¸ine (3.11.7).
Procesul urmat ˆın demonstrat ¸ia teoremei 3.11.2 este cunoscut sub numele de analiza re-
gresiv˘ a a erorilor (backward error analysis). Se obt ¸ine o estimat ¸ie a preciziei ˆın doi pas¸i.
Primul pas este investigarea condit ¸ion˘ arii problemei. Cel˘ alalt este investigarea stabilit˘ at ¸ii
propriu-zise a algoritmului. Conform teoremei 3.11.2, dac˘ a algoritmul este regresiv stabil,
atunci precizia final˘ a reflect˘ a acel num˘ ar de condit ¸ionare.
ˆ
In afar˘ a de analiza regresiv˘ a a erorilor, exist˘ a s¸i o analiz˘ a direct˘ a sau progresiv˘ a. Aici se
estimeaz˘ a erorile de rotunjire la fiecare pas s¸i apoi modul cum se compun s¸i ˆın final un total
(sect ¸iunea 3.3).
Experient ¸a a ar˘ atat c˘ a pentru cei mai mult ¸i algoritmi ai algebrei liniare numerice analiza
progresiv˘ a a erorilor este mai greu de realizat decˆ at cea regresiv˘ a. Cei mai buni algoritmi
pentru cele mai multe probleme ale algebrei liniare numerice nu fac altceva mai bun decˆ at s˘ a
calculeze solut ¸ia exact˘ a pentru nis¸te date us¸or perturbate. Analiza regresiv˘ a este o metod˘ a de
rat ¸ionament bine adaptat˘ a acestei situat ¸ii.
Probleme
Problema 3.1. Scriet ¸i funct ¸ii MATLAB pentru calculul lui sin x s¸i cos x folosind formula
lui Taylor:
sin x = x −
x
3
3!
+
x
5
5!
+... + (−1)
n
x
2n+1
(2n + 1)!
+...
cos x = 1 −
x
2
2!
+
x
4
4!
+... + (−1)
n
x
2n
(2n)!
+....
S¸ tim de la cursul de Analiz˘ a matematic˘ a urmatoarele:
- modulul erorii este mai mic decat modulul primului termen neglijat;
- raza de convergent ¸˘ a este R = ∞.
Ce se ˆıntˆ ampl˘ a pentru x = 10π (s¸i ˆın general pentru x = 2kπ, k mare)? Explicat ¸i fenomenul
s¸i propunet ¸i un remediu.
Problema 3.2. Fie
E
n
=
1

0
x
n
e
x−1
dx.
3.11. Stabilitatea 95
Se observ˘ a c˘ a E
1
= 1/e s¸i E
n
= 1 −nE
n−1
, n = 2, 3, . . . . Se poate ar˘ at˘ a c˘ a
0 < E
n
<
1
n + 1
s¸i dac˘ a E
1
= c avem
lim
n→∞
E
n
=

0, pentru c = 1/e
∞ altfel.
Explicat ¸i fenomenul, g˘ asit ¸i un remediu s¸i calculat ¸i e cu precizia eps.
Problema 3.3. S˘ a se studieze teoretic s¸i experimental condit ¸ionarea problemei determin˘ arii
r˘ ad˘ acinilor ecuat ¸iei polinomiale
x
n
+a
1
x
n−1
+a
2
x
n−2
+ +a
n
= 0 (3.11.9)
cunoscˆ andu-se coeficient ¸ii. Se va scrie o rutin˘ a pentru calculul num˘ arului de condit ¸ionare
al fiec˘ arei r˘ ad˘ acini s¸i se va studia grafic efectul perturb˘ arii fiec˘ arui coeficient cu o variabil˘ a
aleatoare normal˘ a cu media 0 s¸i dispersia 1e-10.
Aplicat ¸ie pentru ecuat ¸iile
(x −1)(x −2) . . . (x −n) = 0
s¸i (3.11.9) pentru a
k
= 2
−k
. Se va lua ca exemplu practic pentru testare n = 20. Ce se
ˆıntˆ ampl˘ a dac˘ a perturbat ¸ia urmeaz˘ a legea uniform˘ a?
Problema 3.4. Care este indicele celui mai mare num˘ ar Fibonacci care poate fi reprezentat
exact ˆın MATLABˆın dubl˘ a precizie? Care este indicele celui mai mare num˘ ar Fibonacci care
poate fi reprezentat ˆın MATLAB ˆın dubl˘ a precizie f˘ ar˘ a a da dep˘ as¸ire flotant˘ a superioar˘ a?
Problema 3.5. Fie F mult ¸imea tuturor numerelor ˆın virgul˘ a flotant˘ a IEEE, exceptˆ and NaN
s¸i Inf, care au exponentul deplasat 7ff (ˆın hexazecimal) s¸i numerele denormalizate, care
au exponentul deplasat 000 (ˆın hexazecimal).
(a) Cˆ ate elemente are F?
(b) Ce proport ¸ie a elementelor lui F este ˆın intervalul [1, 2)?
(c) Ce proport ¸ie a elementelor lui F este ˆın intervalul [1/64, 1/32)?
(d) Determinat ¸i prin select ¸ie aleatoare proport ¸ia de elemente din F care satisfac relat ¸ia
logic˘ a MATLAB
x ∗ (1/x) == 1
Problema 3.6. Ce numere reale familiare sunt aproximate prin numerele ˆın virgul˘ a flotant˘ a
pentru care cu format hex se afis¸eaz˘ a urm˘ atoarele valori:
4059000000000000
3f847ae147ae147b
3fe921fb54442d18
96 Elemente de Teoria erorilor s¸i aritmetic˘ a ˆın virgul˘ a flotant˘ a
Problema 3.7. Explicat ¸i rezultatele afis¸ate de
t = 0.1
n = 1:10
e = n/10 - n
*
t
Problema 3.8. Ce face fiecare din urm˘ atoarele programe? Cˆ ate linii de ies¸ire produce fiecare
program? Care sunt ultimele dou˘ a valori ale lui x afis¸ate?
x=1; while 1+x>1, x=x/2, pause (.02), end
x=1; while x+x>x, x=2
*
x, pause (.02), end
x=1; while x+x>x, x=x/2, pause (.02), end
Problema 3.9. Scriet ¸i o funct ¸ie MATLAB care calculeaz˘ a aria unui triunghi cˆ and se cunosc
laturile, folosind formula lui Heron:
S =

p(p −a)(p −b)(p −c),
unde p este semiperimetrul. Ce se ˆıntˆ ampl˘ a dac˘ a triunghiul este aproape degenerat? Propunet ¸i
un remediu s¸i dat ¸i o evaluare a erorii (vezi [25]).
Problema 3.10. Dispersia de select ¸ie se defines¸te prin
s
2
=
1
N −1
N
¸
i=1
(x
i
− ¯ x)
2
,
unde
¯ x =
1
N
N
¸
i=1
x
i
.
Ea se mai poate calcula s¸i cu formula
s
2
=
1
N −1

N
¸
i=1
x
2
i

1
N

N
¸
i=1
x
i

2
¸
¸
.
Care formul˘ a este mai precis˘ a din punct de vedere numeric? Dat ¸i un exemplu care s˘ a justifice
r˘ aspunsul.
CAPITOLUL 4
Rezolvarea numeric˘ a a sistemelor de ecuat ¸ii algebrice
liniare
Cuprins
4.1. Elemente de Analiz˘ a matricial˘ a . . . . . . . . . . . . . . . . . . . . . . 98
4.2. Condit ¸ionarea unui sistem liniar . . . . . . . . . . . . . . . . . . . . . 104
4.3. Metode exacte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
4.3.1. Metoda elimin˘ arii a lui Gauss . . . . . . . . . . . . . . . . . . 109
4.4. Metode bazate pe factorizare . . . . . . . . . . . . . . . . . . . . . . . 114
4.4.1. Descompunerea LU . . . . . . . . . . . . . . . . . . . . . . . . 114
4.4.2. Descompunere LUP . . . . . . . . . . . . . . . . . . . . . . . . 116
4.4.3. Factorizarea Cholesky . . . . . . . . . . . . . . . . . . . . . . . 118
4.4.4. Descompunerea QR . . . . . . . . . . . . . . . . . . . . . . . . 121
4.5. Rafinarea iterativ˘ a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
4.6. Algoritmul lui Strassen pentru ˆınmult ¸irea matricelor . . . . . . . . . . . 128
4.7. Rezolvarea sistemelor de ecuat ¸ii liniare ˆın MATLAB . . . . . . . . . . . 131
4.7.1. Sisteme p˘ atratice . . . . . . . . . . . . . . . . . . . . . . . . . 132
4.7.2. Sisteme supradeterminate . . . . . . . . . . . . . . . . . . . . . 132
4.7.3. Sisteme subdeterminate . . . . . . . . . . . . . . . . . . . . . . 133
4.7.4. Factorizarea LU s¸i Cholesky . . . . . . . . . . . . . . . . . . . 134
4.7.5. Factorizarea QR . . . . . . . . . . . . . . . . . . . . . . . . . . 135
4.8. Rezolvarea iterativ˘ a a sistemelor algebrice liniare . . . . . . . . . . . . . 139
Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
97
98 Rezolvarea numeric˘ a a sistemelor de ecuat ¸ii algebrice liniare
Exist˘ a dou˘ a clase de metode de rezolvare a sistemelor algebrice liniare: metode directe
sau exacte, care furnizeaz˘ a solut ¸ia ˆıntr-un num˘ ar finit de pas¸i, ˆın ipoteza c˘ a toate calculele
se fac exact (Cramer, eliminarea gaussian˘ a, Cholesky) s¸i metode iterative, care aproximeaz˘ a
solut ¸ia generˆ and un s¸ir care converge c˘ atre aceasta (Jacobi, Gauss-Seidel, SOR).
4.1. Elemente de Analiz˘ a matricial˘ a
p-norma unui vector x ∈ K
n
se defines¸te prin
|x|
p
=

n
¸
i=1
[x
i
[
p

1/p
1 ≤ p < ∞.
Pentru p = ∞norma este definit˘ a prin
|x|

= max
i=1,n
[x
i
[.
Norma | |
2
se numes¸te norm˘ a euclidian˘ a, | |
1
se numes¸te norm˘ a Minkowski, iar | |

se
numes¸te norm˘ a Cebˆıs¸ev.
Funct ¸ia MATLAB norm calculeaz˘ a p-norma unui vector. Ea este apelat˘ a sub forma
norm(x,p), cu valoarea implicit˘ a p=2.
ˆ
In cazul special cˆ and p=-Inf, se calculeaz˘ a can-
titatea min
i
[x
i
[. Exemplu:
>> x = 1:4;
>> [norm(x,1),norm(x,2),norm(x,inf),norm(x,-inf)]
ans =
10.0000 5.4772 4.0000 1.0000
Figura 4.1 d˘ a reprezent˘ arile sferelor unitate din R
2
ˆın diverse p-norme. Ea a fost obt ¸inut˘ a
cu ajutorul funct ¸iei contour.
p = 1
−1 0 1
−1
−0.5
0
0.5
1
p = 2
−1 0 1
−1
−0.5
0
0.5
1
p = 3
−1 0 1
−1
−0.5
0
0.5
1
p = ∞
−1 0 1
−1
−0.5
0
0.5
1
Figura 4.1: Sfera unitate din R
2
pentru patru p-norme
Fie A ∈ K
n×n
. Polinomul p(λ) = det(A − λI) se numes¸te polinomul caracteristic al
lui A. R˘ ad˘ acinile lui p se numesc valori proprii ale lui A, iar dac˘ a λ este o valoare proprie
a lui A vectorul x = 0 cu proprietatea c˘ a (A − λI)x = 0 se numes¸te vector propriu al lui
4.1. Elemente de Analiz˘ a matricial˘ a 99
A corespunz˘ ator valorii proprii λ. Mult ¸imea valorilor proprii ale lui A (spectrul lui A) se
noteaz˘ a cu λ(A).
Valoarea ρ(A) = max¦[λ[ λ valoare proprie a lui A¦ se numes¸te raz˘ a spectral˘ a a matricei
A. Vom nota cu A
T
transpusa lui A s¸i cu A

transpusa conjugat˘ a a lui A.
Definit ¸ia 4.1.1. O matrice A se numes¸te:
1. normal˘ a, dac˘ a AA

= A

A;
2. unitar˘ a, dac˘ a AA

= A

A = I;
3. hermitian˘ a, dac˘ a A = A

;
4. ortogonal˘ a, dac˘ a AA
T
= A
T
A = I, A real˘ a;
5. simetric˘ a, dac˘ a A = A
T
, A real˘ a.
Definit ¸ia 4.1.2. O norm˘ a matricial˘ a este o aplicat ¸ie | | : K
m×n
→ R care pentru orice
A, B ∈ K
m×n
s¸i α ∈ K verific˘ a urm˘ atoarele relat ¸ii
(NM1) |A| ≥ 0, |A| = 0 ⇔A = O
n
;
(NM2) |αA| = [α[|A|;
(NM3) |A+B| ≤ |A| +|B|;
(NM4) |AB| ≤ |A||B|.
Primele trei propriet˘ at ¸i ne spun c˘ a | | este o norm˘ a pe K
m×n
, care este s¸i spat ¸iu vec-
torial de dimensiune mn, iar (NM4) este specific˘ a normelor matriciale. Un mijloc simplu de
construire a normelor matriciale este urm˘ atorul: fiind dat˘ a o norm˘ a vectorial˘ a | | pe C
n
,
aplicat ¸ia | | : C
n×n
→R
|A| = sup
v∈C
n
v=0
|Av|
|v|
= sup
v∈C
n
v≤1
|Av| = sup
v∈C
n
v=1
|Av|
este o norm˘ a matricial˘ a numit˘ a norm˘ a matricial˘ a subordonat˘ a (normei vectoriale date) sau
norm˘ a natural˘ a (indus˘ a de norma dat˘ a).
Observat ¸ia 4.1.3. 1. Aceste norme matriciale subordonate sunt un caz particular al
normei unei aplicat ¸ii liniare A : K
m
→K
n
.
2. O norm˘ a subordonat˘ a verific˘ a |I| = 1.
3. Dac˘ a matricea A este real˘ a, marginea superioar˘ a a raportului |Av|/|v| este atins˘ a
pentru vectori reali (vezi teorema urm˘ atoare). ♦
S˘ a calcul˘ am acum normele subordonate normelor vectoriale | |
1
, | |
2
, | |

.
100 Rezolvarea numeric˘ a a sistemelor de ecuat ¸ii algebrice liniare
Teorema 4.1.4. Fie A ∈ K
n×n
(C). Atunci
|A|
1
:= sup
v∈C
n
\{0}
|Av|
1
|v|
1
= max
j
¸
i
[a
ij
[,
|A|

:= sup
v∈C
n
\{0}
|Av|

|v|

= max
i
¸
j
[a
ij
[,
|A|
2
:= sup
v∈C
n
\{0}
|Av|
2
|v|
2
=

ρ(A

A) =

ρ(AA

) = |A

|
2
.
Norma | |
2
este invariant˘ a la transform˘ arile unitare, adic˘ a
UU

= I ⇒|A|
2
= |AU|
2
= |UA|
2
= |U

AU|
2
.
Altfel spus, dac˘ a A este normal˘ a (AA

= A

A), atunci |A|
2
= ρ(A).
Demonstrat ¸ie. Pentru orice vector v avem
|Av|
1
=
¸
i

¸
j
a
ij
v
j


¸
j
[v
j
[
¸
i
[a
ij
[ ≤

max
j
¸
i
[a
ij
[

|v|
1
.
Pentru a ar˘ ata c˘ a max
j
¸
i
[a
ij
[ este efectiv cel mai mic num˘ ar α pentru care are loc |Av|
1

α|v|
1
, ∀ v ∈ C
n
, s˘ a construim un vector u (care depinde de A) astfel ˆıncˆ at
|Au|
1
=

max
j
¸
i
[a
ij
[
¸
|u|
1
.
Dac˘ a j
0
este un indice ce verific˘ a
max
j
¸
i
[a
ij
[ =
¸
i
[a
ij0
[,
atunci vectorul u are componentele u
i
= 0 pentru i = j
0
, u
j0
= 1.
La fel
|Av|

= max
i

¸
j
a
ij
v
j

¸
max
i
¸
j
[a
ij
[
¸

|v|

.
Fie i
0
un indice ce verific˘ a
max
i
¸
j
[a
ij
[ =
¸
j
[a
i0j
[.
4.1. Elemente de Analiz˘ a matricial˘ a 101
Vectorul u de componente u
j
=
a
i0j
[a
i0j
[
dac˘ a a
i0j
= 0, u
j
= 1 dac˘ a a
i0j
= 0, verific˘ a
|Au|

=

max
i
¸
j
[a
ij
[

|u|

.
Deoarece AA

este hermitian˘ a, exist˘ a o descompunere proprie AA

= QΛQ

, unde Q
este o matrice unitar˘ a (ale c˘ arei coloane sunt vectori proprii) s¸i Λ este matricea diagonal˘ a a
valorilor proprii, care trebuie s˘ a fie toate reale. Dac˘ a ar exista o valoare proprie negativ˘ a s¸i
q ar fi vectorul propriu corespunz˘ ator, am avea 0 ≤ |Aq|
2
2
= q
T
A
T
Aq = q
T
λq = λ|q|
2
2
.
Deci
|A|
2
= max
x=0
|Ax|
2
|x|
2
= max
x=0
(x

A

Ax)
1/2
|x|
2
= max
x=0
(x

QΛQ

x)
1/2
|x|
2
= max
x=0
((Q

x)

ΛQ

x)
1/2
|Q

x|
2
= max
y=0
(y

Λy)
1/2
|y|
2
= max
y=0

¸
λ
i
y
2
i
¸
y
2
i
≤ max
y=0

λ
max

¸
y
2
i
¸
y
2
i
;
egalitatea are loc dac˘ a y este o coloan˘ a convenabil aleas˘ a a matricei identitate.
S˘ a ar˘ at˘ am c˘ a ρ(A

A) = ρ(AA

). Dac˘ a ρ(A

A) > 0, exist˘ a p astfel ˆıncˆ at p = 0, A

Ap =
ρ(A

A)p s¸i Ap = 0 (ρ(A

A) > 0). Cum Ap = 0 s¸i AA

(Ap) = ρ(A

A)Ap, rezult˘ a c˘ a
0 < ρ(A

A) ≤ ρ(AA

) s¸i deci ρ(AA

) = ρ(A

A), c˘ aci (A

)

= A. Dac˘ a ρ(A

A) = 0,
avem ρ(AA

) = 0. Deci, ˆın toate cazurile |A|
2
2
= ρ(A

A) = ρ(AA

) = |A

|
2
2
. Invariant ¸a
normei | |
2
la transform˘ ari unitare nu este decˆ at traducerea egalit˘ at ¸ilor
ρ(A

A) = ρ(U

A

AU) = ρ(A

U

UA) = ρ(U

A

UU

AU).
ˆ
In fine, dac˘ a Aeste normal˘ a, exist˘ a o matrice U astfel ˆıncˆ at U

AU = diag(λ
i
(A))
def
= Λ.
ˆ
In aceste condit ¸ii
A

A = (UΛU

)

UΛU = UΛ

ΛU

,
ceea ce ne arat˘ a c˘ a
ρ(A

A) = ρ(Λ

Λ) = max
i

i
(A)[
2
= (ρ(A))
2
.

Observat ¸ia 4.1.5. 1) Dac˘ a A este hermitian˘ a sau simetric˘ a (deci normal˘ a),
|A|
2
= ρ(A).
2) Dac˘ a A este unitar˘ a sau ortogonal˘ a (deci normal˘ a),
|A|
2
=

ρ(A

A) =

ρ(I) = 1.
102 Rezolvarea numeric˘ a a sistemelor de ecuat ¸ii algebrice liniare
3) Teorema 4.1.4 ne spune c˘ a matricele normale s¸i norma | |
2
verific˘ a
|A|
2
= ρ(A).
(4) Norma | |

se mai numes¸te norma Cebˆ as¸ev sau m-norm˘ a, norma | |
1
norma lui
Minkowski sau l-norm˘ a, iar norma | |
2
norm˘ a euclidian˘ a. ♦
Teorema 4.1.6. (1) Fie Ao matrice p˘ atratic˘ a oarecare s¸i || o norm˘ a matricial˘ a oarecare
(subordonat˘ a sau nu). Atunci
ρ(A) ≤ |A|. (4.1.1)
(2) Fiind dat˘ a o matrice A s¸i un num˘ ar ε > 0, exist˘ a cel put ¸in o norm˘ a matricial˘ a subor-
donat˘ a astfel ˆıncˆ at
|A| ≤ ρ(A) +ε. (4.1.2)
Demonstrat ¸ie. (1) Fie p un vector ce verific˘ a p = 0, Ap = λp, [λ[ = ρ(A) s¸i q un vector
astfel ˆıncˆ at pq
T
= 0. Deoarece
ρ(A)|pq
T
| = |λpq
T
| = |Apq
T
| ≤ |A||pq
T
|,
rezult˘ a (4.1.1).
(2) Fie Ao matrice dat˘ a. Exist˘ a o matrice inversabil˘ a U astfel ˆıncˆ at U
−1
AU este triunghi-
ular˘ a superior (de fapt U este unitar˘ a). De exemplu
U
−1
AU =

¸
¸
¸
¸
¸
¸
λ
1
t
12
t
13
. . . t
1,n
λ
2
t
23
. . . t
2,n
.
.
.
.
.
.
λ
n−1
t
n−1,n
λ
n
¸

.
scalarii λ
i
fiind valorile proprii ale matricei A. (Pentru demonstrat ¸ie a se vedea teorema 9.2.6
din capitolul 9.) Fiec˘ arui scalar δ = 0 ˆıi asociem matricea
D
δ
= diag(1, δ, δ
2
, . . . , δ
n−1
),
astfel ca
(UD
δ
)
−1
A(UD
δ
) =

¸
¸
¸
¸
¸
¸
λ
1
δt
12
δ
2
t
13
. . . δ
n−1
t
1n
λ
2
δt
23
. . . δ
n−2
t
2n
.
.
.
.
.
.
λ
n−1
δt
n−1n
λ
n
¸

.
Fiind dat ε > 0, fix˘ am δ astfel ca
n
¸
j=i+1

j−i
t
ij
[ ≤ ε, 1 ≤ i ≤ n −1.
4.1. Elemente de Analiz˘ a matricial˘ a 103
Atunci aplicat ¸ia
| | : B ∈ K
n×n
→|B| = |(UD
δ
)
−1
B(UD
δ
)|

,
care depinde de A s¸i de ε r˘ aspunde problemei.
ˆ
Intr-adev˘ ar, avem pe de o parte
|A| ≤ ρ(A) +ε,
conformalegerii lui δ s¸i definit ¸iei normei | |

(|c
ij
|

= max
i
¸
j
[c
ij
[) s¸i pe de alt˘ a parte
ea este o norm˘ a matricial˘ a subordonat˘ a normei vectoriale
v ∈ K
n
→|(UD
δ
)
−1
v|

.

Un exemplu important de norm˘ a nesubordonat˘ a este dat de teorema urm˘ atoare. Fie tr(X)
urma maticei X (suma elementelor de pe diagonal˘ a).
Teorema 4.1.7. Aplicat ¸ia | |
E
: K
n×n
→R definit˘ a prin
|A|
E
=

¸
i
¸
j
[a
ij
[
2

1/2
= ¦tr(A

A)¦
1/2
este o norm˘ a matricial˘ a nesubordonat˘ a, invariant˘ a la transform˘ arile unitare
UU

= I ⇒|A|
E
= |AU|
E
= |UA|
E
= |U

AU|
E
s¸i care verific˘ a
|A|
2
≤ |A|
E


n|A|
2
, ∀ A ∈ K
n×n
.
Demonstrat ¸ie. | |
E
este norma euclidian˘ a pe K
n×n
de dimensiune n
2
. Proprietatea (NM4)
se demonstreaz˘ a cu inegalitatea Cauchy-Buniakowski-Schwarz
|AB|
2
E
=
¸
i,j

¸
k
a
jk
b
kj


¸
i,j

¸
k
[a
ik
[
2
¸
¸
l
[b
lj
[
2
¸
=
=

¸
i,k
[a
ik
[
2

¸
j,l
[b
lj
[
2

= |A|
2
E
|B|
2
E
.
Aceast˘ a norm˘ a nu este subordonat˘ a, deoarece |I|
E
=

n. Dac˘ a U este o matrice unitar˘ a
|A|
2
E
= tr(A

A) = tr(U

A

AU) =
= |AU|
2
E
= tr(U

A

UA) = |UA|
E
.
ˆ
In fine, inegalit˘ at ¸ile din enunt ¸ rezult˘ a din inegalit˘ at ¸ile
ρ(A

A) ≤ tr(A

A) ≤ nρ(A

A).

104 Rezolvarea numeric˘ a a sistemelor de ecuat ¸ii algebrice liniare
Norma | |
E
se numes¸te norm˘ a Frobenius .
Teorema 4.1.8. Fie B o matrice p˘ atratic˘ a. Urm˘ atoarele afirmat ¸ii sunt echivalente:
(1) lim
k→∞
B
k
= 0;
(2) lim
k→∞
B
k
v = 0, ∀ v ∈ K
n
;
(3) ρ(B) < 1;
(4) Exist˘ a o norm˘ a matricial˘ a subordonat ˘ a astfel ˆıncˆ at |B| < 1.
Demonstrat ¸ie. (1) ⇒(2)
|B
k
v| ≤ |B
k
||v| ⇒ lim
k→∞
B
k
v = 0
(2) ⇒(3) Dac˘ a ρ(B) ≥ 1 putem g˘ asi p astfel ˆıncˆ at p = 0, Bp = λp, [λ[ ≥ 1. Atunci s¸irul de
vectori (B
k
p)
k∈N
ar putea s˘ a nu convearg˘ a c˘ atre 0.
(3) ⇒(4) ρ(B) < 1 ⇒∃| | astfel ˆıncˆ at |B| ≤ ρ(B) +ε, ∀ ε > 0 deci |B| < 1.
(4) ⇒(1) Este suficient s˘ a aplic˘ am inegalitatea |B
k
| ≤ |B|
k
.
Funct ¸ia norm se poate aplica s¸i matricelor. Ea se apeleaz˘ a sub forma norm(A,p) unde
A este o matrice, iar p=1,2,inf pentru o p-norm˘ a sau p=’fro’ pentru norma Frobenius.
Exemplu:
>> A=[1:3;4:6;7:9]
A =
1 2 3
4 5 6
7 8 9
>> [norm(A,1) norm(A,2) norm(A,inf) norm(A,’fro’)]
ans =
18.0000 16.8481 24.0000 16.8819
4.2. Condit ¸ionarea unui sistem liniar
Fie sistemul (exemplul este datorat lui Wilson)

¸
¸
¸
10 7 8 7
7 5 6 5
8 6 10 9
7 5 9 10
¸

¸
¸
¸
x
1
x
2
x
3
x
4
¸

=

¸
¸
¸
32
23
33
31
¸

,
cu solut ¸ia (1, 1, 1, 1)
T
s¸i consider˘ am sistemul perturbat, ˆın care membrul drept este foarte
put ¸in modificat, matricea r˘ amˆ anˆ and neschimbat˘ a

¸
¸
¸
10 7 8 7
7 5 6 5
8 6 10 9
7 5 9 10
¸

¸
¸
¸
x
1
+δx
1
x
2
+δx
2
x
3
+δx
4
x
4
+δx
4
¸

=

¸
¸
¸
32.1
22.9
33.1
30.9
¸

,
4.2. Condit ¸ionarea unui sistem liniar 105
cu solut ¸ia (9.2, −12.6, 4.5, −1.1)
T
. Altfel spus, o eroare de 1/200 ˆın date (aici componentele
din membrul drept) atrage o eroare relativ˘ a de 10/1 asupra rezultatului, deci o m˘ arire a erorii
relative de ordin 2000!
Consider˘ am acum sistemul avˆ and de aceast˘ a dat˘ a matricea perturbat˘ a

¸
¸
¸
10 7 8.1 7.2
7.08 5.04 6 5
8 5.98 9.89 9
6.99 4.99 9 9.98
¸

¸
¸
¸
x
1
+ ∆x
1
x
2
+ ∆x
2
x
3
+ ∆x
4
x
4
+ ∆x
4
¸

=

¸
¸
¸
32
23
33
31
¸

,
cu solut ¸ia (−81, 137, −34, 22)
T
. Din nou, o variat ¸ie mic˘ a ˆın datele de intrare (aici, elementele
matricei) modific˘ a complet rezultatul (solut ¸ia sistemului liniar). Matricea are un aspect ,,bun“,
ea este simetric˘ a, determinantul ei este 1, iar inversa ei este

¸
¸
¸
25 −41 10 −6
−41 68 −17 10
10 −17 5 −3
−6 10 −3 2
¸

,
care este de asemenea simpatic˘ a.
S˘ a analiz˘ am aceste fenomene.
ˆ
In primul caz se d˘ a o matrice inversabil˘ a A s¸i se compar˘ a
solut ¸iile exacte x s¸i x +δx ale sistemelor
Ax = b
A(x +δx) = b +δb.
Fie | | o norm˘ a vectorial˘ a oarecare s¸i | | norma matricial˘ a subordonat˘ a. Din egalit˘ at ¸ile
δx = A
−1
δb s¸i b = Ax se deduce
[[∆x[[ ≤ [[A
−1
[[[[δb[[, [[b[[ ≤ [[A[[[[x[[.
Eroarea relativ˘ a a rezultatului
||δx||
||x||
este majorat˘ a ˆın funct ¸ie de eroarea relativ˘ a a datelor prin
[[δx[[
[[x[[
≤ [[A[[[[A
−1
[[
[[δb[[
[[b[[
.
ˆ
In al doilea caz, cˆ and matricea variaz˘ a, avem de comparat solut ¸iile exacte ale sistemelor
Ax = b
(A + ∆A)(x + ∆x) = b.
Din egalitatea ∆x = −A
−1
∆A(x + ∆x) se deduce
[[∆x[[ ≤ [[A
−1
[[[[∆A[[[[x + ∆x[[
care se mai poate scrie
[[∆x[[
[[x + ∆x[[
≤ [[A[[[[A
−1
[[
[[∆A[[
[[A[[
.
106 Rezolvarea numeric˘ a a sistemelor de ecuat ¸ii algebrice liniare
Dac˘ a A este nesingular˘ a, num˘ arul
cond(A) = [[A[[[[A
−1
[[ (4.2.1)
se numes¸te num˘ ar de condit ¸ionare al matricei A. Dac˘ a A este singular˘ a convenim s˘ a lu˘ am
cond(A) = ∞.
Se poate da o estimare a num˘ arului de condit ¸ionare ˆın care s˘ a intervin˘ a simultan s¸i
perturbat ¸iile lui A s¸i ale lui b. Consider˘ am sistemul parametrizat, cu parametrul t
(A +t∆A)x(t) = b +t∆b, x(0) = x.
Matricea A fiind nesingular˘ a, funct ¸ia x este diferent ¸iabil˘ a ˆın t = 0:
˙ x(0) = A
−1
(∆b − ∆Ax).
Dezvoltarea Taylor a lui x(t) este dat˘ a de
x(t) = x +t ˙ x(0) +O(t
2
).
Rezult˘ a c˘ a eroarea absolut˘ a poate fi estimat˘ a utilizˆ and
|∆x(t)| = |x(t) −x| ≤ [t[ |x

(0)| +O(t
2
)
≤ [t[

A
−1

(|∆b| + |∆A| |x|) +O(t
2
)
s¸i datorit˘ a lui [[b[[ ≤ [[A[[[[x[[ obt ¸inem pentru eroarea relativ˘ a
|∆x(t)|
|x|
≤ [t[

A
−1

|∆b|
|x|
+|∆A|

+O(t
2
) (4.2.2)
≤ |A|

A
−1

[t[

|∆b|
|b|
+
|∆A|
|A|

+O(t
2
).
Introducˆ and notat ¸iile
ρ
A
(t) := [t[
|∆A|
|A|
, ρ
b
(t) := [t[
|∆b|
|b|
pentru erorile relative ˆın A s¸i b, estimarea erorii (4.2.2) se scrie sub forma
|∆x(t)|
|x|
≤ cond(A) (ρ
A

b
) +O(t
2
).
MATLAB are mai multe funct ¸ii pentru calculul sau estimarea num˘ arului de condit ¸ionare.
• cond(A,p), unde valoarea implicit˘ a este p=2. Pentru p=2 se utilizeaz˘ a svd, iar
pentru p=1,Inf se utilizeaz˘ a inv.
• condest(A) estimeaz˘ a cond
1
A. Utilizeaz˘ a lu s¸i un algoritm recent al lui Higham
s¸i Tisseur [31]. Potrivit˘ a pentru matrice mari, rare.
4.2. Condit ¸ionarea unui sistem liniar 107
• rcond(A) estimeaz˘ a 1/cond
1
A. Utilizeaz˘ a lu(A) s¸i un algoritm utilizat de LIN-
PACK s¸i LAPACK. De interes mai mult istoric.
Exemplul 4.2.1 (Exemple de matrice prost condit¸ionate). Matricea lui Hilbert
1
H
n
=
(h
ij
), cu h
ij
=
1
i+j−1
, i, j = 1, n are ordinul de m˘ arime al num˘ arului de condit ¸ionare relativ
la norma euclidian˘ a dat de (Szeg¨ o
2
)
cond
2
(H
n
) ∼
(

2 + 1)
4n+4
2
14/4

πn
.
Pentru diverse valori ale lui n se obt ¸ine
n cond
2
(H
n
)
10 1.6 10
13
20 2.45 10
28
40 7.65 10
58
Un alt exemplu este matricea Vandermonde. Dac˘ a elementele sunt echidistante ˆın [-1,1],
atunci
cond

(V
n
) ∼
1
π
e

π
4
e
n(
π
4
+
1
2
ln 2)
,
iar pentru t
i
=
1
i
, i = 1, n avem
cond

(V
n
) > n
n+1
.

S˘ a verific˘ am condit ¸ionarea matricelor din exemplul 4.2.1. Pentru matricea Hilbert am folosit
secvent ¸a (fis¸ierul testcondhilb.m):
1
David Hilbert (1862-1943) a fost cel mai important reprezentant al
s¸colii matematice din G¨ ottingen. Contribut ¸iile sale fundamentale ˆın
aproape toate domeniile matematicii — algebr˘ a, teoria numerelor, ge-
ometrie, ecuat ¸ii integrale, calcul variat ¸ional s¸i fundamentele matem-
aticii — s¸i ˆın particular cele 23 de probleme celebre pe care le-a pro-
pus ˆın 1900 la un congres internat ¸ional al matematicienilor de la Paris,
au dat un nou impuls s¸i o nou˘ a direct ¸ie matematicii din secolul al XX-
lea.
2
Gabor Szeg˝ o (1895-1985) Unul dintre cei mai important ¸i matemati-
cieni maghiari din secolul al XX-lea. Contribut ¸ii importante ˆın dome-
niul problemelor extremale s¸i matricelor Toeplitz.
108 Rezolvarea numeric˘ a a sistemelor de ecuat ¸ii algebrice liniare
fprintf(’ n cond_2 est. cond teoretic\n’)
for n=[10:15,20,40]
H=hilb(n);
et=(sqrt(2)+1)ˆ(4
*
n+4)/(2ˆ(14/4)
*
sqrt(pi
*
n));
x=[n, norm(H)
*
norm(invhilb(n)), condest(H), et];
fprintf(’%d %g %g %g\n’,x)
end
Se obt ¸in urm˘ atoarele rezultate:
n cond_2 est. cond teoretic
10 1.60263e+013 3.53537e+013 1.09635e+015
11 5.23068e+014 1.23037e+015 3.55105e+016
12 1.71323e+016 3.79926e+016 1.15496e+018
13 5.62794e+017 4.25751e+017 3.76953e+019
14 1.85338e+019 7.09955e+018 1.23395e+021
15 6.11657e+020 7.73753e+017 4.04966e+022
20 2.45216e+028 4.95149e+018 1.58658e+030
40 7.65291e+058 7.02056e+019 4.69897e+060
Verificarea pentru matrice Vandermonde cu elemente echidistante ˆın [-1,1] s-a realizat cu
(fis¸ierul condvander2.m):
warning off
fprintf(’ n cond_inf estimare cond teoretic\n’)
for n=[10,20,40,80]
t=linspace(-1,1,n);
V=vander(t);
et=1/pi
*
exp(-pi/4)
*
exp(n
*
(pi/4+1/2
*
log(2)));
x=[n, norm(V,inf)
*
norm(inv(V),inf), condest(V), et];
fprintf(’%d %e %e %e\n’,x)
end
warning on
D˘ am s¸i rezultatele obt ¸inute:
n cond_inf estimare cond teoretic
10 2.056171e+004 1.362524e+004 1.196319e+004
20 1.751063e+009 1.053490e+009 9.861382e+008
40 1.208386e+019 6.926936e+018 6.700689e+018
80 8.059962e+038 8.475473e+038 3.093734e+038
Pentru matricea Vandermonde cu elemente de forma 1/i am folosit secvent ¸a (fis¸ierul
condvander.m)
warning off
fprintf(’ n cond_inf estimare cond teoretic\n’)
for n=10:15
t=1./(1:n);
V=vander(t);
x=[n, norm(V,inf)
*
norm(inv(V),inf), condest(V), nˆ(n+1)];
4.3. Metode exacte 109
fprintf(’%d %e %e %e\n’,x)
end
warning on
s¸i am obt ¸inut:
n cond_inf estimare cond teoretic
10 5.792417e+011 5.905580e+011 1.000000e+011
11 2.382382e+013 2.278265e+013 3.138428e+012
12 1.060780e+015 9.692982e+014 1.069932e+014
13 5.087470e+016 4.732000e+016 3.937376e+015
14 2.615990e+018 2.419006e+018 1.555681e+017
15 1.436206e+020 1.294190e+020 6.568408e+018
ˆ
In toate aceste exemple, s-a folosit comanda warning off pentru a inhiba afis¸area
mesajelor de avertisment de forma:
Matrix is close to singular or badly scaled.
Results may be inaccurate. RCOND = ...
4.3. Metode exacte
4.3.1. Metoda elimin˘ arii a lui Gauss
S˘ a consider˘ am sistemul liniar de n ecuat ¸ii cu n necunoscute
Ax = b, (4.3.1)
unde A ∈ K
n×n
, b ∈ K
n×1
sunt date, iar x ∈ K
n×1
este necunoscuta, sau scris detaliat

a
11
x
1
+a
12
x
2
+ +a
1n
x
n
= b
1
(E
1
)
a
21
x
1
+a
22
x
2
+ +a
2n
x
n
= b
2
(E
2
)
.
.
.
.
.
.
a
n1
x
1
+a
n2
x
2
+ +a
nn
x
n
= b
n
(E
n
)
(4.3.2)
Metoda elimin˘ arii a lui Gauss
3
are dou˘ a etape:
3
Johann Carl Friedrich Gauss (1777-1855) a fost unul dintre cei mai
mari matematicieni ai secolului al nou˘ asprezecelea s¸i probabil ai tu-
turor timpurilor. A tr˘ ait aproape toat˘ a viat ¸a ˆın G¨ ottingen, unde a fost
directorul observatorului astronomic 40 de ani.
ˆ
In timpul student ¸iei
la G¨ ottingen, Gauss a descoperit c˘ a poligonul cu 17 laturi poate fi
construit cu rigla s¸i compasul, rezolvˆ and astfel o problem˘ a deschis˘ a
a antichit˘ at ¸ii.
ˆ
In dizertat ¸ia sa a dat prima demonstrat ¸ie a teoremei
fundamentale a algebrei. A avut contribut ¸ii fundamentale ˆın teoria
numerelor, geometrie diferent ¸ial˘ a s¸i neeuclidian˘ a, funct ¸ii eliptice s¸i
hipergeometrice, mecanic˘ a cereasc˘ a s¸i geodezie s¸i diverse ramuri ale
fizicii, ˆın special magnetism s¸i optic˘ a. Eforturile sale de calcul ˆın
mecanica cereasc˘ a s¸i geodezie, bazate pe principiul celor mai mici
p˘ atrate, au necesitat rezolvarea manual˘ a a unor sisteme de ecuat ¸ii
liniare mari, la care a utilizat metodele cunoscute ast˘ azi sub numele de
eliminare gaussian˘ a s¸i metoda relax˘ arii. Lucr˘ arile lui Gauss ˆın dome-
niul cuadraturilor numerice continu˘ a munca predecesorilor s˘ ai New-
ton s¸i Cotes.
110 Rezolvarea numeric˘ a a sistemelor de ecuat ¸ii algebrice liniare
e1) transformarea sistemului dat ˆıntr-unul echivalent, triunghiular;
e2) rezolvarea sistemului triunghiular prin substitut ¸ie invers˘ a.
La rezolvarea sistemului (4.3.1) sau (4.3.2) sunt permise urm˘ atoarele operat ¸ii:
1. Ecuat ¸ia E
i
poate fi ˆınmult ¸it˘ a cu λ ∈ K

. Aceast˘ a operat ¸ie se va nota cu (λE
i
) →(E
i
).
2. Ecuat ¸ia E
j
poate fi ˆınmult ¸it˘ a cu λ ∈ K

s¸i adunat˘ a la ecuat ¸ia E
i
, iar rezultatul utilizat
ˆın locul lui E
i
, notat ¸ie (E
i
+λE
j
) →(E
i
).
3. Ecuat ¸iile E
i
s¸i E
j
pot fi interschimbate, notat ¸ie (E
i
) ←→(E
j
).
Pentru a exprima convenabil operat ¸iile necesare pentru transformarea sistemului ˆın unul
triunghiular vom lucra cu matricea extins˘ a:
¯
A = [A, b] =

a
11
a
12
. . . a
1n
a
21
a
22
. . . a
2n
.
.
.
.
.
.
.
.
.
.
.
.
a
n1
a
n2
. . . a
nn

a
1,n+1
a
2,n+1
.
.
.
a
n,n+1
¸
¸
¸
¸
¸
cu a
i,n+1
= b
i
.
Presupunˆ and c˘ a a
11
= 0, vom elimina coeficient ¸ii lui x
1
din E
j
, pentru j = 2, n prin
operat ¸ia (E
j
−(a
j1
/a
11
)E
1
) → (E
j
). Vom proceda apoi la fel cu coeficient ¸ii lui x
i
, pentru
i = 2, n −1, j = i + 1, n. Aceasta este posibil dac˘ a a
ii
= 0.
Procedura poate fi descris˘ a astfel: se formeaz˘ a o secvent ¸˘ a de matrice extinse
¯
A
(1)
,
¯
A
(2)
,
. . .,
¯
A
(n)
, unde
¯
A
(1)
= A s¸i
¯
A
(k)
are elementele a
(k)
ij
date de

E
i

a
(k−1)
i,k−1
a
(k−1)
k−1,k−1
E
k−1

−→(E
i
)
sau desf˘ as¸urat
a
(k)
i,j
=

a
(k−1)
ij
, pentru i = 1, k −1, j = 1, n + 1
0, pentru i = k, n, j = 1, k −1
a
(k−1)
ij

a
(k−1)
i,k−1
a
(k−1)
k−1,k−1
a
(k−1)
k−1,j
, pentru i = k, n, j = k, n + 1
Observat ¸ia 4.3.1. Notat ¸ia a
(p)
ij
semnific˘ a valoarea elementului a
ij
la pasul p. ♦
4.3. Metode exacte 111
Astfel
¯
A
(k)
=

a
(1)
11
a
(1)
12
a
(1)
13
. . . a
(1)
1,k−1
a
(1)
1k
. . . a
(1)
1n
0 a
(2)
22
a
(2)
23
. . . a
(2)
2,k−1
a
(2)
2,k
. . . a
(2)
2,n
.
.
.
.
.
. . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. a
(k−1)
k−1,k−1
a
(k−1)
k−1,k
. . . a
(k−1)
k−1,n
.
.
. 0 a
(k)
kk
. . . a
(k)
kn
.
.
.
.
.
.
.
.
. . . .
.
.
.
0 . . . . . . . . . 0 a
(k)
nk
. . . a
(k)
nn

a
(1)
1,n+1
a
(2)
2,n+1
.
.
.
.
.
.
a
(k−1)
k−1,n+1
a
(k)
k,n+1
.
.
.
a
(k)
n,n+1
¸
¸
¸
¸
¸
¸
¸
¸
¸
¸
¸
¸
¸
¸
¸
¸
¸
reprezint˘ a sistemul liniar echivalent ˆın care variabila x
k−1
a fost eliminat˘ a din ecuat ¸iile E
k
,
E
k+1
, . . . , E
n
. Sistemul corespunz˘ ator lui
¯
A
(n)
este un sistem triunghiular echivalent cu
sistemul init ¸ial

a
(1)
11
x
1
+a
(1)
12
x
2
+ +a
(1)
1n
x
n
= a
(1)
1,n+1
a
(2)
22
x
2
+ +a
(2)
2n
x
n
= a
(2)
2,n+1
.
.
.
a
(n)
nn
x
n
= a
(n)
n,n+1
Se obt ¸ine
x
n
=
a
(n)
n,n+1
a
(n)
n,n
s¸i ˆın general
x
i
=
1
a
(i)
ii

¸
a
(i)
i,n+1

n
¸
j=i+1
a
(i)
ij
x
j
¸

, i = n −1, 1.
Pentru ca procedura s˘ a fie aplicabil˘ a trebuie ca a
(i)
ii
= 0, i = 1, n. Elementul a
(i)
ii
se
numes¸te element pivot. Dac˘ a ˆın timpul algoritmului de eliminare gaussian˘ a la pasul k se
obt ¸ine pivotul a
(k)
kk
= 0, se poate face interschimbarea de linii (E
k
) ↔ (E
p
), unde k + 1 ≤
p ≤ n este cel mai mic ˆıntreg cu proprietatea a
(k)
pk
= 0.
ˆ
In practic˘ a sunt necesare astfel
de operat ¸ii chiar s¸i ˆın cazul cˆ and pivotul este nenul. Aceasta din cauz˘ a c˘ a un pivot mic ˆın
comparat ¸ie cu elementele care urmeaz˘ a dup˘ a el ˆın aceeas¸i coloan˘ a duce la erori de rotunjire
substant ¸iale. Aceasta se poate remedia alegˆ and ca pivot elementul din aceeas¸i coloan˘ a care
este situat sub diagonal˘ a s¸i care are cea mai mare valoare absolut˘ a, adic˘ a determinˆ and p astfel
ˆıncˆ at
[a
(k)
pk
[ = max
k≤i≤n
[a
(k)
ik
[
s¸i apoi f˘ acˆ and (E
k
) ↔ (E
p
). Aceast˘ a tehnic˘ a se numes¸te pivotare maximal˘ a pe coloan˘ a sau
pivotare part ¸ial˘ a.
112 Rezolvarea numeric˘ a a sistemelor de ecuat ¸ii algebrice liniare
O alt˘ a tehnic˘ a care reduce erorile s¸i preˆıntˆ ampin˘ a anul˘ arile ˆın aritmetica flotant˘ a este
pivotarea scalat˘ a pe coloan˘ a. La primul pas se defines¸te un factor de scalare pentru fiecare
linie
s
i
= max
j=1,n
[a
ij
[ sau s
i
=
n
¸
j=1
[a
ij
[.
Dac˘ a exist˘ a i astfel ˆıncˆ at s
i
= 0, matricea este singular˘ a.
La pas¸ii urm˘ atori se determin˘ a ce interschimb˘ ari se vor realiza. La pasul i se determin˘ a
cel mai mic ˆıntreg p, i ≤ p ≤ n, pentru care
[a
pi
[
s
p
= max
1≤j≤n
[a
ji
[
s
j
s¸i apoi (E
i
) ↔ (E
p
). Efectul scal˘ arii este de a ne asigura c˘ a elementul cel mai mare din
fiecare coloan˘ a are m˘ arimea relativ˘ a 1 ˆınainte de a realiza comparat ¸iile pentru interschim-
barea liniilor. Scalarea se realizeaz˘ a doar ˆın scop de comparat ¸ie, as¸a c˘ a ˆımp˘ art ¸irea cu factorul
de scalare nu produce erori de rotunjire. O a treia metod˘ a este cea a pivot˘ arii totale (sau
maximale). La aceast˘ a metod˘ a la pasul k se determin˘ a
max¦[a
ij
[, i = k, n, j = k, n¦
s¸i se realizeaz˘ a s¸i interschimb˘ ari de linii s¸i de coloane.
Pivotarea a fost introdus˘ a de Goldstine s¸i von Neumann ˆın 1947 [26].
Dac˘ a matricea A este singular˘ a s¸i are rangul p −1 atunci se obt ¸ine
¯
A
(p)
=

a
(1)
11
a
(1)
12
. . . a
(1)
1,p−1
a
(1)
1p
. . . a
(1)
1n
a
(1)
1,n+1
0 a
(2)
22
. . . a
(2)
2,p−1
a
(2)
2p
. . . a
(2)
2n
a
(2)
2,n+1
. . . . . . . . . . . . . . . . . . . . . . . .
0 0 . . . a
(p−1)
p−1,p−1
a
(p−1)
p−1,p
. . . a
(p−1)
p−1,n
a
(p−1)
p−1,n+1
0 0 . . . 0 0 . . . 0 a
(p)
p,n+1
0 0 . . . 0 0 . . . 0 a
(n)
n,n+1
¸
¸
¸
¸
¸
¸
¸
¸
¸
¸
.
Dac˘ a a
(p)
i,n+1
= b
(p)
i
= 0, i = p, n, atunci sistemul este compatibil nedeterminat, iar dac˘ a
exist˘ a q ∈ ¦p, . . . , n¦ astfel ˆıncˆ at a
(p)
q,n+1
= b
(p)
q
= 0 sistemul este incompatibil.
Deci metodele de eliminare de tip Gauss permit atˆ at rezolvarea cˆ at s¸i discut ¸ia sistemelor
de ecuat ¸ii liniare.
Observat ¸ia 4.3.2. D˘ am cˆ ateva sugestii care pot duce la ˆımbun˘ at˘ at ¸irea timpului de execut ¸ie.
1. La metodele de pivotare nu este nevoie s˘ a se realizeze fizic interschimbarea de linii
s¸i/sau coloane, ci se pot p˘ astra unul sau doi vectori de permut˘ ari p(q) cu semnificat ¸ia
p[i](q[i]) este linia (coloana) care a fost interschimbat˘ a cu linia (coloana) i.
2. Elementele de sub diagonal˘ a (care devin 0) pot s˘ a nu fie calculate.
3. Matricea A se poate inversa rezolvˆ and sistemul Ax = e
k
, k = 1, n, unde e
k
sunt
vectorii bazei canonice din K
n
. Metoda se numes¸te metoda ecuat ¸iilor simultane. ♦
4.3. Metode exacte 113
Sursa MATLAB 4.1 Rezolv˘ a sistemul Ax = b prin metoda elimin˘ arii a lui Gauss cu pivot
scalat pe coloan˘ a
function x=Gausselim(A,b)
%GAUSSELIM - eliminare gaussiana cu pivot scalat pe coloana
%apel x=Gausselim2(A,b)
%A -matricea, b- vectorul termenilor liberi
[l,n]=size(A);
x=zeros(size(b));
s=sum(abs(A),2);
A=[A,b]; %matricea extinsa
piv=1:n;
%Eliminare
for i=1:n-1
[u,p]=max(abs(A(i:n,i))./s(i:n)); %pivotare
p=p+i-1;
if u==0, error(’nu exista solutie unica’), end
if p˜=i %interschimbare linii
piv([i,p])=piv([p,i]);
end
for j=i+1:n
m=A(piv(j),i)/A(piv(i),i);
A(piv(j),i+1:n+1)=A(piv(j),i+1:n+1)-...
m
*
A(piv(i),i+1:n+1);
end
end
%substitutie inversa
x(n)=A(piv(n),n+1)/A(piv(n),n);
for i=n-1:-1:1
x(i)=(A(piv(i),n+1)-A(piv(i),i+1:n)
*
x(i+1:n))...
/A(piv(i),i);
end
114 Rezolvarea numeric˘ a a sistemelor de ecuat ¸ii algebrice liniare
S˘ a analiz˘ am metoda elimin˘ arii a lui Gauss. Descrierea ei apare ˆın sursa MATLAB 4.1.
Ca m˘ asur˘ a a complexit˘ at ¸ii vom considera num˘ arul de operat ¸ii aritmetice flotante, desemnate
prescurtat prin flops.
ˆ
In corpul ciclului for interior avem 2n − 2i + 3 flops, deci pentru ˆıntreg ciclul (n −
i)(2n −2i + 3) flops. Pentru ciclul exterior avem un total general de
n−1
¸
i=1
(n − i)(2n − 2i + 3) ∼
2n
3
3
.
Pentru substitut ¸ia invers˘ a avem Θ(n
2
) flops.
Total general, Θ(n
3
).
4.4. Metode bazate pe factorizare
4.4.1. Descompunerea LU
Teorema 4.4.1. Dac˘ a eliminarea gaussian˘ a pentru sistemul Ax = b se poate realiza f˘ ar˘ a
interschimb˘ ari de linii, atunci A se poate factoriza ˆın A = LU, unde L este triunghiular˘ a
inferior, iar U triunghiular˘ a superior. Perechea (L, U) se numes¸te descompunerea LU a
matricei A.
Avantaje. Ax = b ⇔LUx = b ⇔Ly = b ∧ Ux = y.
Dac˘ a avem de rezolvat mai multe sisteme Ax = b
i
, i = 1, m, fiecare rezolvare dureaz˘ a
Θ(n
3
); dac˘ a se factorizeaz˘ a la ˆınceput rezolvarea unui sistem dureaz˘ a Θ(n
2
), factorizarea
dureaz˘ a Θ(n
3
).
Observat ¸ia 4.4.2. U este matricea triunghiular˘ a superior obt ¸inut˘ a ˆın urma elimin˘ arii
gaussiene, iar L este matricea multiplicatorilor m
ij
. ♦
Dac˘ a eliminarea gaussian˘ a se face cu interschimb˘ ari avem de asemenea A = LU, dar L
nu este triunghiular˘ a inferior.
Metoda obt ¸inut˘ a se numes¸te factorizare LU.
Situat ¸ii cˆ and eliminarea gaussian˘ a se face f˘ ar˘ a interschimb˘ ari:
- A este diagonal dominant˘ a pe linii, adic˘ a
[a
ii
[ >
n
¸
j=1
j=i
[a
ij
[, i = 1, n
- A este pozitiv definit˘ a (∀ x = 0 x

Ax > 0).
Demonstrat ¸ia teoremei 4.4.1. (schit ¸˘ a) Pentru n > 1 partit ¸ion˘ am A astfel
A =

a
11
a
12
. . . a
1n
a
21
a
22
. . . a
2n
.
.
.
.
.
.
.
.
.
.
.
.
a
n1
a
n2
. . . a
nn
¸
¸
¸
¸
¸
=
¸
a
11
w

v A

,
4.4. Metode bazate pe factorizare 115
unde: v - vector coloan˘ a de dimensiune n −1, w

- vector linie de dimensiune n −1. Putem
factoriza A prin
A =
¸
a
11
w

v A

=
¸
1 0
v/a
11
I
n−1
¸
a
11
w

0 A

− vw

/a
11

.
Matricea A

−vw

/a
11
se numes¸te complement Schur al lui Aˆın raport cu a
11
. Se continu˘ a
apoi cu descompunerea recursiv˘ a a complementului Schur:
A

−vw

/a
11
= L

U

.
A =
¸
1 0
v/a
11
I
n−1
¸
a
11
w

0 A

−vw

/a
11

=
=
¸
1 0
v/a
11
I
n−1
¸
a
11
w

0 L

U

=
=
¸
1 0
v/a
11
L

¸
a
11
w

0 U

.

Exemplul 4.4.3. S˘ a se calculeze descompunerea LU a matricei
A =

2 3 1 5
6 13 5 19
2 19 10 23
4 10 11 31
¸
¸
¸
¸
Matricea init ¸ial˘ a este
2 3 1 5
3 4 2 4
1 16 9 18
2 4 9 21
iar primul complement Schur
A

−vw

/a
11
=

¸
13 5 19
19 10 23
10 11 31
¸

¸
3
1
2
¸

(3 1 5) =
=

¸
13 5 19
19 20 23
10 11 31
¸

¸
9 3 15
3 1 5
6 2 10
¸

=

¸
4 2 4
16 9 18
4 9 21
¸

.
Continu˘ am cu descompunerea recursiv˘ a a complement ¸ilor Schur de ordinul 2 s¸i 1:
2 3 1 5
3 4 2 4
1 4 1 2
2 1 7 17
116 Rezolvarea numeric˘ a a sistemelor de ecuat ¸ii algebrice liniare

9 18
9 21

4
1

(2, 4) =

1 2
7 17

2 3 1 5
3 4 2 4
1 4 1 2
2 1 7 3
A

−vw

/a
11
= 17 −7 2 = 3
Verificare:

¸
¸
¸
2 3 1 5
6 13 5 19
2 19 10 23
4 10 11 31
¸

=

¸
¸
¸
1 0 0 0
3 1 0 0
1 4 1 0
2 1 7 1
¸

¸
¸
¸
2 3 1 5
0 4 2 4
0 0 1 2
0 0 0 3
¸


Avemmai multe posibilit˘ at ¸i de alegere pentru u
ii
s¸i l
ii
, i = 1, n. De exemplu dac˘ a l
ii
= 1
avem factorizare Doolittle, dac˘ a u
ii
= 1 avem factorizare Crout. Aici s-a prezentat factor-
izarea Doolittle.
4.4.2. Descompunere LUP
Ideea din spatele descompunerii LUP este de a g˘ asi 3 matrice p˘ atratice L, U s¸i P unde
L - triunghiular˘ a inferior, U - triunghiular˘ a superior, P matrice de permutare, astfel ˆıncˆ at
PA = LU.
Tripletul (L, U, P) se va numi descompunerea LUP a matricei A.
Rezolvarea sistemului Ax = b este echivalent˘ a cu rezolvarea a dou˘ a sisteme triunghiu-
lare, deoarece
Ax = b ⇔LUx = Pb ⇔Ly = Pb ∧ Ux = y
s¸i
Ax = P
−1
LUx = P
−1
Ly = P
−1
Pb = b.
Vom alege ca pivot ˆın locul lui a
11
elementul a
k1
. Efectul este ˆınmult ¸irea cu o matrice de
permutare Q:
QA =
¸
a
k1
w

v A

=
¸
1 0
v/a
k1
I
n−1
¸
a
k1
w

0 A

− vw

/a
k1

.
Determin˘ am mai departe descompunerea LUP a complementului Schur.
P

(A

−vw

/a
k1
) = L

U

.
Definim
P =
¸
1 0
0 P

Q,
4.4. Metode bazate pe factorizare 117
care este tot o matrice de permutare. Avem acum
PA =
¸
1 0
0 P

QA =
=
¸
1 0
0 P

¸
1 0
v/a
k1
I
n−1
¸
a
k1
w

0 A

−vw

/a
k1

=
=
¸
1 0
P

v/a
k1
P

¸
a
k1
w

0 A

−vw

/a
k1

=
=
¸
1 0
P

v/a
k1
I
n−1
¸
a
k1
w

0 P

(A

−vw

/a
k1
)

=
=
¸
1 0
P

v/a
k1
I
n−1
¸
a
k1
w

0 L

U

=
¸
1 0
P

v/a
k1
L

¸
a
k1
w

0 U

.
De notat c˘ a, ˆın acest rat ¸ionament, atˆ at vectorul coloan˘ a cˆ at s¸i complementul Schur se
ˆınmult ¸esc cu matricea de permutare P

.
Exemplul 4.4.4. S˘ a se calculeze descompunerea LUP a matricei

¸
3 1 6
2 1 3
1 1 1
¸

Pivot ¸ii apar ˆıncadrat ¸i ˆın caset˘ a. Obt ¸inem succesiv

¸
¸
1 3 1 6
2 2 1 3
3 1 1 1
¸

¸
¸
1 3 1 6
2
2
3
1 3
3
1
3
1 1
¸

¸
¸
¸
1 3 1 6
2
2
3
1
3
−1
3
1
3
2
3
−1
¸

,
deoarece primul complement Schur este

1 3
1 1

2
3
1
3

1 6

=

1
3
−1
2
3
−1

.
Permut˘ am liniile 2 s¸i 3 s¸i obt ¸inem ˆın continuare:

¸
¸
¸
1 3 1 6
3
1
3
2
3
−1
2
2
3
1
3
−1
¸

¸
¸
1 3 1 6
3
1
3
2
3
−1
2
2
3
1
2
−1
¸

¸
¸
1 3 1 6
3
1
3
2
3
−1
2
2
3
1
2

1
2
¸

.
Deci
P =

¸
¸
1 0 0
0 0 1
0 1 0
¸

, L =

¸
¸
1 0 0
1
3
1 0
2
3
1
2
1
¸

, U =

¸
¸
3 1 6
0
2
3
−1
0 0 −
1
2
¸

.
118 Rezolvarea numeric˘ a a sistemelor de ecuat ¸ii algebrice liniare
Verificare:

¸
1 0 0
0 0 1
0 1 0
¸

¸
3 1 6
2 1 3
1 1 1
¸

=

¸
1 0 0
1
3
1 0
2
3
1
2
1
¸

¸
3 1 6
0
2
3
−1
0 0 −
1
2
¸

.

Urmeaz˘ a o implementare ˆın MATLAB a descompunerii LUP (funct ¸ia 4.2, fis¸ierul
lup.m). Pentru completare, sursele MATLAB 4.3 s¸i 4.4 dau codurile pentru substitut ¸ia di-
Sursa MATLAB 4.2 Descompunere LUP
function [L,U,P]=lup(A)
%determina descompunerea LUP a matricei A
%apel [L,U,P]=lup(A)
[m,n]=size(A);
P=zeros(m,n);
piv=(1:m)’;
for i=1:m-1
%pivotare
[pm,kp]=max(abs(A(i:m,i)));
kp=kp+i-1;
%interschimbare linii
if i˜=kp
A([i,kp],:)=A([kp,i],:);
piv([i,kp])=piv([kp,i]);
end
%complement Schur
lin=i+1:m;
A(lin,i)=A(lin,i)/A(i,i);
A(lin,lin)=A(lin,lin)-A(lin,i)
*
A(i,lin);
end;
for i=1:m
P(i,piv(i))=1;
end;
U=triu(A);
L=tril(A,-1)+eye(m);
rect˘ a s¸i respectiv invers˘ a.
4.4.3. Factorizarea Cholesky
Matricele hermitiene pozitiv definite pot fi descompuse ˆın factori triunghiulari de dou˘ a
ori mai repede decˆ at matricele generale. Algoritmul standard pentru aceasta, factorizarea
Cholesky
4
, este o variant˘ a a elimin˘ arii gaussiene ce opereaz˘ a atˆ at la stˆ anga cˆ at s¸i la dreapta
matricei, p˘ astrˆ and s¸i exploatˆ and simetria.
4
Andre-Louis Cholesky (1875-1918) ofit ¸er francez, specialist ˆın topografie s¸i geodezie, a activat ˆın Creta s¸i Africa
de nord ˆınaintea ˆınceperii primului r˘ azboi mondial. A dezvoltat metoda care ˆıi poart˘ a numele s¸i a aplicat-o la calculul
4.4. Metode bazate pe factorizare 119
Sursa MATLAB 4.3 Substitut ¸ie direct˘ a
function x=forwardsubst(L,b)
%FORWARDSUBST - substitutie directa
%L - matrice triunghiulara inferior
%b -vectorul termenilor liberi
x=zeros(size(b));
n=length(b);
for k=1:n
x(k)=(b(k)-L(k,1:k-1)
*
x(1:k-1))/L(k,k);
end
Sursa MATLAB 4.4 Substitut ¸ie invers˘ a
function x=backsubst(U,b)
%BACKSUBST - rezolvare sistem prin substitutie inversa
%U - matrice triunghiulara superior
%b - vectorul termenilor liberi
n=length(b);
x=zeros(size(b));
for k=n:-1:1
x(k)=(b(k)-U(k,k+1:n)
*
x(k+1:n))/U(k,k);
end
Sistemele cu matrice hermitiene pozitiv definite joac˘ a un rol important ˆın algebra liniar˘ a
numeric˘ a s¸i ˆın aplicat ¸ii. Datorit˘ a legilor fundamentale ale fizicii, multe matrice care intervin
ˆın probleme practice sunt de acest tip.
Reamintim cˆ ateva propriet˘ at ¸i ale matricelor hermitiene. Dac˘ a A este o matrice m m
hermitian˘ a pozitiv definit˘ a s¸i X este o matrice de tip m n de rang maxim, cu m ≥ n,
atunci matricea X

AX este de asemenea hermitian˘ a pozitiv definit˘ a deoarece (X

AX)

=
X

A

X = X

AX s¸i pentru orice vector x = 0 avem Xx = 0 s¸i astfel x

(X

AX) x =
(Xx)

A(Xx) > 0. Alegˆ and pe post de X o matrice mn cu un 1 ˆın fiecare coloan˘ a s¸i zero
ˆın rest, putem scrie orice submatrice principal˘ a n n a lui A sub forma X

AX. De aceea,
orice submatrice principal˘ a a lui A trebuie s˘ a fie pozitiv definit˘ a.
ˆ
In particular, orice element
diagonal al lui A este un num˘ ar real pozitiv.
Valorile proprii ale unei matrice hermitiene pozitiv definite sunt de asemenea numere
reale pozitive, Dac˘ a Ax = λx pentru x = 0, avem x

Ax = λx

x > 0 s¸i deci λ > 0
s¸i reciproc, dac˘ a toate valorile proprii sunt pozitive, atunci A este pozitiv definit˘ a. Vectorii
proprii ce corespund valorilor proprii distincte ale unei matrice hermitiene sunt ortogonali.
solut ¸iilor ecuat ¸iilor normale pentru probleme de aproximare ˆın sensul celor mai mici p˘ atrate care apar ˆın geodezie.
Lucrarea sa a fost publicat˘ a postum ˆın 1924, de c˘ atre camaradul s˘ au Benoˆıt, ˆın Bulletin G´ eodesique. Se pare c˘ a a
luat parte la misiunea militar˘ a francez˘ a din Romˆ ania ˆın timpul primului r˘ azboi mondial.
120 Rezolvarea numeric˘ a a sistemelor de ecuat ¸ii algebrice liniare
Presupunem c˘ a Ax
1
= λ
1
x
1
s¸i Ax
2
= λ
2
x
2
cu λ
1
= λ
2
. Atunci
λ
2
x

1
x
2
= x

1
Ax
2
= x

2
Ax
1
= λ
1
x

2
x
1
= λ
1
x

1
x
2
,
as¸˘ a c˘ a (λ
1
− λ
2
)x

1
x
2
= 0. Deoarece λ
1
= λ
2
, rezult˘ a c˘ a x

1
x
2
= 0. Matricele hermitiene
sunt de asemenea normale (AA

= A

A = A
2
).
O factorizare Cholesky a unei matrice A este o descompunere de forma
A = R

R, r
jj
> 0, (4.4.1)
unde R este o matrice triunghiular˘ a superior.
Teorema 4.4.5. Orice matrice hermitian˘ a pozitiv definit˘ a A ∈ C
m×m
are o factorizare
Cholesky (4.4.1) unic˘ a.
Demonstrat ¸ie. (Existent ¸a) Deoarece A este hermitian˘ a s¸i pozitiv definit˘ a a
11
> 0 s¸i putem
pune α =

a
11
. Observ˘ am c˘ a
A =
¸
a
11
w

w K

=
¸
α 0
w/α I
¸
1 0
0 K −ww

/a
11
¸
α w


0 I

= R

1
A
1
R
1
.
(4.4.2)
Acesta este pasul de baz˘ a care este repetat ˆın factorizarea Cholesky. Submatricea K −
ww

/a
11
fiind o submatrice principal˘ a de tip (m− 1) (m− 1) a matricei pozitiv definite
R

1
AR
−1
1
este pozitiv definit˘ a s¸i deci elementul ei situat ˆın colt ¸ul din stˆ anga sus este pozi-
tiv. Se arat˘ a prin induct ¸ie c˘ a toate submatricele care apar ˆın cursul factoriz˘ arii sunt pozitiv
definite s¸i procesul nu poate es¸ua. Continu˘ am cu factorizarea lui A
1
= R

2
A
2
R
2
s¸i ast-
fel A = R

1
R

2
A
2
R
2
R
1
; procesul poate continua pˆ an˘ a se ajunge la colt ¸ul din dreapta jos,
obt ¸inˆ andu-se
A = R

1
R

2
. . . R

m
. .. .
R

R
m
. . . R
2
R
1
. .. .
R
,
care are chiar forma dorit˘ a.
(Unicitatea) De fapt procedeul de mai sus stabiles¸te s¸i unicitatea. La fiecare pas (4.4.2),
valoarea α =

a
11
este determinat˘ a din forma factoriz˘ arii R

R s¸i odat˘ a ce α este determi-
nat, prima linie a lui R

1
este de asemenea determinat˘ a. Deoarece cantit˘ at ¸ile analoage sunt
determinate la fiecare pas al reducerii, ˆıntreaga factorizare este unic˘ a.
Cˆ and se implementeaz˘ a factorizarea Cholesky, este nevoie s˘ a se reprezinte explicit doar
jum˘ atate din matricea asupra c˘ areia se opereaz˘ a. Aceast˘ a simplificare permite evitarea a
jum˘ atate din operat ¸iile aritmetice. Se d˘ a mai jos una din multele posibilit˘ at ¸i de prezentare
formal˘ a a algoritmului (sursa MATLAB 4.5). Matricea Ade la intrare cont ¸ine diagonala prin-
cipal˘ a s¸i jum˘ atatea de deasupra diagonalei pricipale a matricei hermitiene s¸i pozitiv definite
de tip m m ce urmeaz˘ a a fi factorizat˘ a.
ˆ
In implement˘ ari practice se pot utiliza scheme de
memorare comprimat˘ a ce evit˘ a irosirea spat ¸iului pentru jum˘ atate din matricea p˘ atratic˘ a. Ma-
tricea de ies¸ire reprezint˘ a factorul triunghiular superior din factorizarea A = R

R. Fiecare
4.4. Metode bazate pe factorizare 121
Sursa MATLAB 4.5 Descompunere Cholesky
function R=Cholesky(A)
%CHOLESKY - factorizare Cholesky
%apel R=Cholesky(A)
%A - matrice hermitiana
%R - matrice triunghiulara superior
[m,n]=size(A);
for k=1:m
for j=k+1:m
A(j,j:m)=A(j,j:m)-A(k,j:m)
*
A(k,j)/A(k,k);
end
A(k,k:m)=A(k,k:m)/sqrt(A(k,k));
end
R=triu(A);
iterat ¸ie extern˘ a corespunde unei singure factoriz˘ ari elementare: partea triunghiular˘ a superior
a submatricei A

k:m,k:m
reprezint˘ a partea supradiagonal˘ a a matricei hermitiene ce trebuie fac-
torizat˘ a la pasul k.
Operat ¸iile aritmetice ˆın factorizarea Cholesky (sursa MATLAB 4.5) sunt dominate de
ciclul interior. O singur˘ a execut ¸ie a liniei
A(j,j:m)=A(j,j:m)-A(k,j:m)
*
A(k,j)/A(k,k);
necesit˘ a o ˆımp˘ art ¸ire, m− j + 1 ˆınmult ¸iri s¸i m− j + 1 sc˘ aderi, deci un total de ∼ 2(m− j)
flops. Acest calcul este repetat pentru fiecare j de la k + 1 la m s¸i acest ciclu este repetat
pentru fiecare k de la 1 la m. Suma se evalueaz˘ a direct
m
¸
k=1
m
¸
j=k+1
2(m−j) ∼ 2
m
¸
k=1
k
¸
j=1
j ∼
m
¸
k=1
k
2

1
3
m
3
flops,
deci jum˘ atate din volumul de calcule necesar pentru eliminarea gaussian˘ a.
4.4.4. Descompunerea QR
Teorema 4.4.6. Fie A ∈ R
m×n
, cu m ≥ n. Atunci exist˘ a o matrice ortogonal˘ a unic˘ a Q de
tip m n s¸i o matrice triunghiular˘ a superior unic˘ a, de tip n n R cu diagonala pozitiv˘ a
(r
ii
> 0) astfel ˆıncˆ at A = QR.
Demonstrat ¸ie. Va rezulta din algoritmul 4.6, care va fi dat ˆın aceast˘ a sect ¸iune.
Perechea (Q, R) din teorema 4.4.6 se numes¸te descompunere QR a lui A.
Matricele ortogonale s¸i unitare sunt utile ˆın calculele numerice, deoarece ele conserv˘ a
lungimile, unghiurile s¸i nu amplific˘ a erorile.
122 Rezolvarea numeric˘ a a sistemelor de ecuat ¸ii algebrice liniare
Px=||x||e
1
u
x
H
Figura 4.2: Un reflector Householder
Transform˘ ari Householder
O transformare Householder
5
(sau reflexie) este o matrice de forma P = I − 2uu
T
,
unde |u|
2
= 1. Se verific˘ a us¸or c˘ a P = P
T
s¸i c˘ a PP
T
=

I −2uu
T

I −2uu
T

=
I − 4uu
T
+ 4uu
T
uu
T
= I, deci P este o matrice simetric˘ a s¸i ortogonal˘ a. Ea se numes¸te
reflexie deoarece Px este reflexia lui x fat ¸˘ a de hiperplanul H ce trece prin origine s¸i este
ortogonal pe u (figura 4.2).
Dˆ andu-se un vector x, este us¸or de g˘ asit reflexia Householder care anuleaz˘ a toate com-
ponentele lui x, exceptˆ and prima: Px = [c, 0, . . . , 0]
T
= ce
1
. Vom face aceasta dup˘ a cum
urmeaz˘ a. Scriem Px = x − 2u(u
T
x) = ce
1
, deci u =
1
2(u
T
x)
(x − ce
1
), adic˘ a u este o
combinat ¸ie liniar˘ a a lui x s¸i e
1
. Deoarece |x|
2
= |Px|
2
= [c[, u trebuie s˘ a fie paralel cu
vectorul ˜ u = x±|x|
2
e
1
, deci u = ˜ u/|˜ u|
2
. Se poate verifica c˘ a orice alegere de semn ne con-
duce la un u ce satisface Px = ce
1
, atˆ at timp cˆ at ˜ u = 0. Vomutiliza ˜ u = x+sign(x
1
)|x|
2
e
1
,
deoarece astfel nu va apare nici o anulare flotant˘ a la calculul componentelor lui ˜ u. Dac˘ a
5
Alston S. Householder (1904-1993), matematician american.
Contribut ¸ii importante ˆın biologia matematic˘ a s¸i mai ales ˆın algebra
liniar˘ a numeric˘ a. Cartea sa cea mai important˘ a, ,,The Theory of
Matrices in Numerical Analysis” a avut un impact deosebit asupra
dezvolt˘ arii analizei numerice s¸i informaticii.
4.4. Metode bazate pe factorizare 123
x
1
= 0, vom conveni s˘ a luam sign(x
1
) = 1. Rezumˆ and, vom lua
˜ u =

x
1
+ sign(x
1
)|x|
2
x
2
.
.
.
x
n
¸
¸
¸
¸
¸
, cu u =
˜ u
|u|
2
.
Vom scrie aceasta sub forma u = House(x).
ˆ
In practic˘ a, putem memora ˜ u ˆın locul lui u
pentru a reduce efortul de calcul al lui u s¸i s˘ a utiliz˘ am formula P = I −
2
u
2
2
˜ u˜ u
T
ˆın loc de
P = I − 2uu
T
.
Exemplul 4.4.7. Vom ar˘ ata cum se poate calcula descompunerea QR a unei matrice 5 4
utilizˆ and transform˘ ari Householder. Acest exemplu poate face procedeul mai us¸or de ˆınt ¸eles
ˆın cazul general.
ˆ
In calculele de mai jos P
i
sunt matrice ortogonale 5 5, x este un element
generic nenul, iar o o pozit ¸ie nul˘ a.
1. Alegem P
1
astfel ˆıncˆ at A
1
≡ P
1
A =

x x x x
o x x x
o x x x
o x x x
o x x x
¸
¸
¸
¸
¸
¸
.
2. Alegem P
2
=
¸
I
1
0
0 P

2

astfel ˆıncˆ at A
2
≡ P
2
A
1
=

x x x x
o x x x
o o x x
o o x x
o o x x
¸
¸
¸
¸
¸
¸
.
3. Alegem P
3
=
¸
I
2
0
0 P

3

astfel ˆıncˆ at A
3
≡ P
3
A
2
=

x x x x
o x x x
o o x x
o o o x
o o o x
¸
¸
¸
¸
¸
¸
.
4. Alegem P
4
=
¸
I
3
0
0 P

4

astfel ˆıncˆ at A
4
≡ P
4
A
3
=

x x x x
o x x x
o o x x
o o o x
o o o o
¸
¸
¸
¸
¸
¸
.
Aici am ales matricele Householder P

i
pentru a anula elementele subdiagonale din coloana i;
aceasta nu distruge zerourile deja introduse ˆın coloanele precedente. S˘ a not˘ ammatricea final˘ a
54 cu
˜
R = A
4
. Atunci A = P
T
1
P
T
2
P
T
3
P
T
4
˜
R = QR, unde Qeste format˘ a din primele patru
coloane a lui P
T
1
P
T
2
P
T
3
P
T
4
= P
1
P
2
P
3
P
4
(deoarece P
i
sunt simetrice), iar R este format˘ a
din primele patru linii ale lui R. ♦
124 Rezolvarea numeric˘ a a sistemelor de ecuat ¸ii algebrice liniare
Sursa MATLAB 4.6 Factorizare QR utilizˆ and reflexii Householder
function [R,Q]=HouseQR(A)
%HouseQR - descompunere QR a lui A cu reflexii Househoulder
%apel [R,Q]=descQR(A)
%A matrice mxn, R triunghiulara superior, Q ortogonala
[m,n]=size(A);
u=zeros(m,n); %vectorii de reflexie
%obtine R
for k=1:n
x=A(k:m,k);
x(1)=mysign(x(1))
*
norm(x)+x(1);
u(k:m,k)=x/norm(x);
A(k:m,k:n)=A(k:m,k:n)-2
*
u(k:m,k)
*
(u(k:m,k)’
*
A(k:m,k:n));
end
R=triu(A(1:n,:));
if nargout==2 %se doreste Q
Q=eye(m,n);
for j=1:n
for k=n:-1:1
Q(k:m,j)=Q(k:m,j)-2
*
u(k:m,k)
*
(u(k:m,k)’
*
Q(k:m,j));
end
end
end
%semnul
function y=mysign(x)
if x>=0, y=1;
else, y=-1;
end
Sursa MATLAB4.6 descrie procesul de calcul pentru descompunerea QR bazat˘ a pe trans-
form˘ ari Householder.
Pornind de la observat ¸ia
Ax = b ⇔QRx = b ⇔Rx = Q
T
b,
putem alege urm˘ atoarea strategie pentru rezolvarea sistemului de ecuat ¸ii liniare Ax = b:
1. Se determin˘ a factorizarea A = QR a lui A;
2. Se calculeaz˘ a y = Q
T
b;
3. Se rezolv˘ a sistemul triunghiular superior Rx = y.
Strategia de mai sus este implementat˘ a ˆın funct ¸ia MATLAB 4.7.
Costul calculului descompunerii A = QR este 2n
2
m −
2
3
n
3
, costul pentru calculul lui
Q
T
b este O(mn), iar costul pentru calculul lui Qx este de asemenea O(mn).
Dac˘ a dorim s˘ a calcul˘ am matricea Q explicit, putem construi QI ca ˆın sursa 4.6 calculˆ and
coloanele sale Qe
1
, Qe
2
, . . . , Qe
m
.
4.4. Metode bazate pe factorizare 125
Sursa MATLAB 4.7 Rezolvarea sistemului Ax = b prin metoda QR
function x=QRSolve(A,b)
%QRSolve - rezolvare sistem prin metoda QR
[m,n]=size(A);
u=zeros(m,n); %vectorii de reflexie
%obtine R si QˆT
*
b
for k=1:n
x=A(k:m,k);
x(1)=mysign(x(1))
*
norm(x)+x(1);
u(k:m,k)=x/norm(x);
A(k:m,k:n)=A(k:m,k:n)-2
*
u(k:m,k)
*
(u(k:m,k)’
*
A(k:m,k:n));
b(k:m)=b(k:m)-2
*
u(k:m,k)
*
(u(k:m,k)’
*
b(k:m));
end
R=triu(A(1:n,:)); x=R\b(1:n);
Rotat ¸ii Givens
O rotat ¸ie Givens
R(θ) :=
¸
cos θ sin θ
−sinθ cos θ

rotes¸te vectorul x ∈ R
2
cu un unghi θ.
De asemenea, avem nevoie de rotat ¸ia Givens cu un unghi θ ˆın coordonatele i s¸i j:
R(i, j, θ) :=

¸
¸
¸
¸
¸
¸
¸
¸
¸
¸
¸
¸
¸
¸
¸
i j
1
1
.
.
.
i cos θ sin θ
.
.
.
j −sinθ cos θ
.
.
.
1
1
¸

.
Dˆ andu-se x, i s¸i j putem anula x
j
alegˆ and cos θ s¸i sin θ astfel ˆıncˆ at
¸
cos θ sinθ
−sin θ cos θ
¸
x
i
x
j

=
¸
x
2
i
+x
2
j
0
¸
,
adic˘ a
cos θ =
x
i

x
2
i
+x
2
j
, sin θ =
x
j

x
2
i
+x
2
j
.
126 Rezolvarea numeric˘ a a sistemelor de ecuat ¸ii algebrice liniare
Algoritmul QR bazat pe rotat ¸ii Givens este analog algoritmului bazat pe reflexii Householder,
dar cˆ and anul˘ am coloana i se anuleaz˘ a un element la un moment dat.
Exemplul 4.4.8. Vom ilustra doi pas¸i intermediari din calculul descompunerii QR a unei
matrice 5 4 utilizˆ and rotat ¸ii Givens. Pentru a trece de la

x x x x
o x x x
o o x x
o o x x
o o x x
¸
¸
¸
¸
¸
¸
la

x x x x
o x x x
o o x x
o o o x
o o o x
¸
¸
¸
¸
¸
¸
efectu˘ am ˆınmult ¸irile

1
1
1
c s
−s c
¸
¸
¸
¸
¸
¸

x x x x
o x x x
o o x x
o o x x
o o x x
¸
¸
¸
¸
¸
¸
=

x x x x
o x x x
o o x x
o o x x
o o o x
¸
¸
¸
¸
¸
¸
s¸i

1
1
c

s

−s

c

1
¸
¸
¸
¸
¸
¸

x x x x
o x x x
o o x x
o o x x
o o o x
¸
¸
¸
¸
¸
¸
=

x x x x
o x x x
o o x x
o o o x
o o o x
¸
¸
¸
¸
¸
¸
.

Costul descompunerii QR cu rotat ¸ii Givens este de dou˘ a ori costul descompunerii cu reflexii
Househoulder. Ele sunt utilizate ˆın alte aplicat ¸ii (de exemplu valori proprii).
Iat˘ a cˆ ateva detalii de implementare. Calculul sinusului s¸i cosinusului din matricea Givens
este dat ˆın algoritmul 4.1. El necesit˘ a 5 flops s¸i un radical. Nu necesit˘ a funct ¸ii trigonometrice
Algoritmul 4.1 Dˆ andu-se scalarii a s¸i b, calculeaz˘ a elementele c = cos(θ) s¸i s = sin(θ) ale
unei matrice Givens
function [c, s] =givens(a, b)
if b = 0 then
c := 1; s := 0;
else
if [b[ > [a[ then
τ := −a/b; s := 1/

1 +τ
2
; c := sτ;
else
τ := −b/a; c := 1/

1 +τ
2
; s := cτ;
end if
end if
inverse s¸i nu d˘ a dep˘ as¸ire superioar˘ a. Descompunerea QR bazat˘ a pe rotat ¸ii Givens este descris˘ a
de algoritmul 4.2 Acest algoritm necesit˘ a 3n
2
(m − n/3) flops. De notat c˘ a se pot utiliza s¸i
4.4. Metode bazate pe factorizare 127
Algoritmul 4.2 Factorizare A = QR cu ajutorul matricei Givens; rezultatul R se scrie peste
A.
Intrare: A ∈ R
m×n
Ies¸ire: R = Q
T
A, unde R este triunghiular˘ a superior.
for j := 1 to n do
for i := m−1 downto j + 1 do
[c, s] = givens(A
i−1,j
, A
i,j
);
A
i−1:i,j:n
=
¸
c s
−s c

T
A
i−1:i,j:n
;
end for
end for
alte secvent ¸e de rotat ¸ii; de exemplu primele dou˘ a for-uri din algoritmul 4.2 se pot ˆınlocui cu
for i := m downto 2
for j := 1 to min¦i −1, n¦
Astfel, zerourile vor fi introduse linie cu linie. O alt˘ a schimbare posibil˘ a se refer˘ a la planele
de rotat ¸ie: ˆın loc s˘ a rotim liniile i − 1 s¸i i ca ˆın algoritmul 4.2, am putea roti liniile j s¸i i
(algoritmul 4.3). Deoarece o rotat ¸ie Givens anuleaz˘ a exact un element, trebuie s˘ a memor˘ am
Algoritmul 4.3 Descompunere QR cu rotat ¸ii Givens – variant˘ a.
for j := 1 to n do
for i := m−1 downto j + 1 do
[c, s] = givens(A
j,j
, A
i,j
);
A
[j i],j:n
=
¸
c s
−s c

T
A
[j i],j:n
;
end for
end for
informat ¸ii despre rotat ¸ie pe pozit ¸ia acelui element. Vom face asta dup˘ a cum urmeaz˘ a. Fie
s = sin θ s¸i c = cos θ. Dac˘ a [s[ < [c[ se memoreaz˘ a s sign(c); altfel se memoreaz˘ a
sign(s)
c
.
Pentru a recupera s s¸i c din valoarea memorat˘ a (s˘ a o numim p) vom proceda astfel: dac˘ a
[p[ < 1, atunci s := p s¸i c =

1 −s
2
; altfel c := 1/p s¸i s :=

1 −c
2
. Motivul pentru care
nu memor˘ am s s¸i nu calcul˘ am c =

1 −s
2
este acela c˘ a dac˘ a s este apropiat de 1, c va fi
imprecis (datorit˘ a anul˘ arii flotante). Se poate recupera fie s s¸i c, fie −s s¸i −c; acest lucru este
convenabil ˆın practic˘ a.
Secvent ¸a de rotat ¸ii Givens se poate aplica ˆın as¸a fel ˆıncˆ at s˘ a fie necesare mai put ¸ine flops
decˆ at ˆın variantele prezentate aici. Se ajunge astfel la rotat ¸ii Givens rapide (vezi [27, capitolul
5]).
128 Rezolvarea numeric˘ a a sistemelor de ecuat ¸ii algebrice liniare
4.5. Rafinarea iterativ˘ a
Dac˘ a metoda de rezolvare pentru Ax = b este nestabil˘ a, atunci Ax = b, unde x este
valoarea calculat˘ a. Vom calcula corect ¸ia ∆x astfel ˆıncˆ at
A(x + ∆x
1
) = b ⇒A∆x
1
= b −Ax
Se rezolv˘ a sistemul s¸i se obt ¸ine un nou x, x := x+∆x
1
. Dac˘ a din nou Ax = b, se calculeaz˘ a
o nou˘ a corect ¸ie pˆ an˘ a cˆ and
|∆x
i
−∆x
i−1
| < ε sau |Ax −b| < ε.
Calculul cantit˘ at ¸ii r = b −Ax, numit˘ a reziduu, se va efectua ˆın dubl˘ a precizie.
4.6. Algoritmul lui Strassen pentru ˆınmult¸irea matricelor
Fie A, B ∈ K
n×n
. Dorim s˘ a calcul˘ am C = AB. Presupunem c˘ a n = 2
k
. Partit ¸ion˘ am A
s¸i B
A =

a
11
a
12
a
21
a
22

B =

b
11
b
12
b
21
b
22

C =

c
11
c
12
c
21
c
22

ˆ
In algoritmul clasic avem 8 ˆınmult ¸iri s¸i 4 adun˘ ari pentru un pas, iar timpul de execut ¸ie
T(n) = Θ(n
3
), deoarece T(n) = 8T(n/2) + Θ(n
2
).
Interesul este de a reduce num˘ arul de ˆınmult ¸iri. Volker Strassen a descoperit o metod˘ a de
a reduce num˘ arul de ˆınmult ¸iri pe pas la 7. Se calculeaz˘ a urm˘ atoarele cantit˘ at ¸i:
p
1
= (a
11
+a
22
)(b
11
+b
22
)
p
2
= (a
21
+a
22
)b
11
p
3
= a
11
(b
12
−b
22
)
p
4
= a
22
(b
21
−b
11
)
p
5
= (a
11
+a
12
)b
22
p
6
= (a
21
−a
11
)(b
11
+b
12
)
p
7
= (a
12
−a
22
)(b
21
+b
22
)
c
11
= p
1
+p
4
−p
5
+p
7
c
12
= p
3
+p
5
c
21
= p
2
+p
4
c
22
= p
1
+p
3
−p
2
+p
6
Procedura este descris˘ a detaliat de sursa MATLAB 4.8. Presupunem c˘ a m = 2
q
s¸i c˘ a
A, B ∈ R
m×m
. Dac˘ a m
min
= 2
d
cu d ≤ q, atunci acest˘ a funct ¸ie calculeaz˘ a C = AB
aplicˆ and recursiv procedura lui Strassen de q −d ori. Deoarece avem 7 ˆınmult ¸iri s¸i 18 adun˘ ari
sau sc˘ aderi pe pas, timpul de execut ¸ie verific˘ a relat ¸ia de recurent ¸˘ a
T(n) = 7T(n/2) + Θ(n
2
),
cu solut ¸ia
T(n) = Θ(n
log
2
7
) ∼ 28n
log
2
7
.
4.6. Algoritmul lui Strassen pentru ˆınmult ¸irea matricelor 129
Sursa MATLAB 4.8 Algoritmul lui Strassen pentru ˆınmult ¸irea a dou˘ a matrice
function C=strass(A,B,mmin)
%STRASS - inmultirea a doua matrice - algoritmul lui Strassen
%dimensiunea putere a lui 2
%A,B - matrice patratice
%C - produsul
%mmin -dimensiunea minima
[m,n]=size(A); if m<=mmin
%inmultire clasica
C=A
*
B;
else
%subdivizare si apel recursiv
n=m/2;
u=1:n; v=n+1:m;
P1=strass(A(u,u)+A(v,v),B(u,u)+B(v,v),mmin);
P2=strass(A(v,u)+A(v,v),B(u,u),mmin);
P3=strass(A(u,u),B(u,v)-B(v,v),mmin);
P4=strass(A(v,v),B(v,u)-B(u,u),mmin);
P5=strass(A(u,u)+A(u,v),B(v,v),mmin);
P6=strass(A(v,u)-A(u,u),B(u,u)+B(u,v),mmin);
P7=strass(A(u,v)-A(v,v),B(v,u)+B(v,v),mmin);
C(u,u)=P1+P4-P5+P7;
C(u,v)=P3+P5;
C(v,u)=P2+P4;
C(v,v)=P1+P3-P2+P6;
end
Algoritmul se poate generaliza pentru matrice cu dimensiunea n = m 2
k
.
Dac˘ a n este impar ultima coloan˘ a a lui C se calculeaz˘ a prin metode standard s¸i se execut˘ a
algoritmul lui Strassen pentru matrice de dimensiune n −1.
m 2
k+1
→m 2
k
p-urile se pot calcula ˆın paralel; la fel s¸i c-urile.
Accelerarea teoretic˘ a obt ¸inut˘ a pentru ˆınmult ¸irea matricelor se traduce printr-o accelerare
a invers˘ arii matricelor, deci s¸i a rezolv˘ arii sistemelor de ecuat ¸ii liniare. Dac˘ a not˘ am cu M(n)
timpul de ˆınmult ¸ire a dou˘ a matrice p˘ atratice de ordinul n s¸i cu I(n) timpul de inversare a
unei matrice de acelas¸i ordin, atunci M(n) = Θ(I(n)). Vom demonstra aceasta ˆın dou˘ a
etape: ar˘ at˘ am c˘ a M(n) = O(I(n)) s¸i apoi c˘ a I(n) = O(M(n)).
Teorema 4.6.1 (
ˆ
Inmult ¸irea nu este mai grea decˆ at inversarea). Dac˘ a puteminversa o ma-
trice n n ˆın timp I(n), unde I(n) = Ω(n
2
) satisface condit ¸ia de regularitate I(3n) =
O(I(n)), atunci putem ˆınmult ¸i dou˘ a matrice de ordinul n ˆın timp O(I(n)).
Demonstrat ¸ie. Fie As¸i B dou˘ a matrice nn. Vrem s˘ a calcul˘ amC = AB. Definim matricea
130 Rezolvarea numeric˘ a a sistemelor de ecuat ¸ii algebrice liniare
D de ordinul 3n 3n astfel:
D =

¸
I
n
A 0
0 I
n
B
0 0 I
n
¸

.
Inversa lui D este
D
−1
=

¸
I
n
−A AB
0 I
n
−B
0 0 I
n
¸

,
s¸i, astfel, putem calcula produsul AB luˆ and submatricea de ordinul n n din colt ¸ul din
dreapta sus al matricei D
−1
.
Putem calcula matricea Dˆıntr-un timp de ordinul Θ(n
2
) = O(I(n)) s¸i conformcondit ¸iei
de regularitate o putem inversa ˆıntr-un timp O(I(3n)) = O(I(n)). Deci
M(n) = O(I(n)).

S˘ a observ˘ am c˘ a I(n) satisface condit ¸ia de regularitate doar dac˘ a I(n) nu are salturi mari
ˆın valoare. De exemplu, dac˘ a I(n) = Θ(n
c
log
d
n), pentru orice constante c > 0, d ≥ 0,
atunci I(n) satisface condit ¸ia de regularitate.
Demonstrat ¸ia c˘ a inversarea matricelor nu este mai grea decˆ at ˆınmult ¸irea lor se bazeaz˘ a pe
propriet˘ at ¸ile matricelor simetrice, pozitiv definite.
Teorema 4.6.2 (Inversarea nu este mai grea decˆ at ˆınmult ¸irea). Dac˘ a putem ˆınmult ¸i dou˘ a
matrice reale n n ˆın timp M(n), unde M(n) = Ω(n
2
) s¸i M(n) satisface condit ¸iile de
regularitate M(n) = O(M(n+k)) pentru orice k, 0 ≤ k ≤ n s¸i M(n/2) ≤ cM(n), pentru
orice constant˘ a c < 1/2, atunci putem calcula inversa unei matrice reale nesingulare de
ordinul n n ˆın timp O(M(n)).
Demonstrat ¸ie. Putem presupune c˘ a n este multiplu de 2, deoarece

A 0
0 I
k

−1
=

A
−1
0
0 I
k

,
pentru orice k ∈ N

. As¸adar, alegˆ and pe k astfel ˆıncˆ at n + k s˘ a fie o putere a lui 2, extin-
dem matricea la o dimensiune care este puterea urm˘ atoare a lui 2 s¸i obt ¸inem r˘ aspunsul dorit
din r˘ aspunsul problemei pentru matricea extins˘ a ˆın acest mod. Condit ¸iile de regularitate ne
asigur˘ a c˘ a extinderea nu cauzeaz˘ a cres¸terea timpului decˆ at cu cel mult un factor constant.
Pentru moment, s˘ a presupunem c˘ a A este o matrice n n simetric˘ a s¸i pozitiv-definit˘ a; o
vom partit ¸iona ˆın patru submatrice de ordinul n/2 n/2 :
A =

B C
T
C D

. (4.6.1)
Dac˘ a
S = D−CB
−1
C
T
(4.6.2)
4.7. Rezolvarea sistemelor de ecuat ¸ii liniare ˆın MATLAB 131
este complementul Schur al lui Aˆın raport cu B, atunci
A
−1
=

B
−1
+B
−1
C
T
S
−1
CB
−1
−B
1
C
T
S
−1
−S
−1
CB
−1
S
−1

, (4.6.3)
relat ¸ie care se poate verifica prin ˆınmult ¸ire. Matricele B
−1
s¸i S
−1
exist˘ a, deoarece A este
simetric˘ a s¸i pozitiv definit˘ a, deoarece atˆ at B cˆ at s¸i S sunt simetrice s¸i pozitiv definite.
ˆ
In
plus, B
−1
C
T
= (CB
−1
)
T
s¸i B
−1
C
T
S
−1
= (S
−1
CB
−1
)
T
. Putem folosi ecuat ¸iile (4.6.2)
s¸i (4.6.3) pentru a specifica un algoritm recursiv ˆın care intervin patru ˆınmult ¸iri de matrice de
ordinul n/2 n/2:
C B
−1
,
(C B
−1
) C
T
S
−1
(CB
−1
)

CB
−1

T

S
−1
CB
−1

.
ˆ
Intrucˆ at matricele de ordinul n/2 n/2 se ˆınmult ¸esc folosind un algoritm pentru matrice de
ordinul n n, inversarea matricelor simetrice pozitiv-definite se poate rezolva ˆın timpul
I(n) ≤ 2I(n/2) + 4M(n) +O(n
2
) = 2I(n/2) +O(M(n)) = O(M(n)).
R˘ amˆ ane de studiat cazul cˆ and A este inversabil˘ a, dar nu este simetric˘ a s¸i pozitiv definit˘ a.
Deoarece A
T
A este simetric˘ a s¸i pozitiv definit˘ a, problema invers˘ arii lui A se reduce la prob-
lema invers˘ arii lui A
T
A. Reducerea se bazeaz˘ a pe observat ¸ia c˘ a, atunci cˆ and A este o matrice
nesingular˘ a de ordinul n n, avem
A
−1
=

A
T
A

−1
A
T
,
deoarece ((A
T
A)
−1
A
T
) = (A
T
A)
1
(A
T
A) = I
n
, s¸i inversa unei matrice este unic˘ a. Prin
urmare, putem calcula A
−1
, ˆınmult ¸ind ˆıntˆ ai pe pe A
T
cu A pentru a obt ¸ine A
T
A, inversˆ and
apoi matricea simetric˘ a s¸i pozitiv definit˘ a A
T
A prin algoritmul divide et impera prezentat,
s¸i, ˆın final ˆınmult ¸ind rezultatul cu A
T
. Fiecare din aces¸ti pas¸i necesit˘ a un timp O(M(n)).
Astfel, orice matrice nesingular˘ a cu elemente reale poate fi inversat˘ a ˆıntr-un timp de ordinul
O(M(n)).
Demonstrat ¸ia teoremei 4.6.2 sugereaz˘ a un mod de a rezolva ecuat ¸ii de forma Ax = b,
cu A nesingular˘ a, f˘ ar˘ a pivotare, rezolvˆ and ecuat ¸ia echivalent˘ a (A
T
A)x = b prin factorizare
Cholesky. Dar ˆın practic˘ a, descompunerea LUP funct ¸ioneaz˘ a mai bine, iar transformarea pro-
pus˘ a m˘ ares¸te num˘ arul de condit ¸ionare.
4.7. Rezolvarea sistemelor de ecuat ¸ii liniare ˆın MATLAB
Fie m num˘ arul de ecuat ¸ii s¸i n num˘ arul de necunoscute. Instrumentul fundamental de
rezolvare a sistemelor de ecuat ¸ii liniare este operatorul ` (vezi sect ¸iunea 1.3.3).
132 Rezolvarea numeric˘ a a sistemelor de ecuat ¸ii algebrice liniare
El trateaz˘ a trei tipuri de sisteme de ecuat ¸ii liniare, p˘ atratice (m = n), supradeterminate
(m > n) s¸i subdeterminate (m < n). Vom reveni asupra sistemelor supradeterminate vor
fi tratate ˆın capitolul urm˘ ator. Mai general, operatorul ` poate fi utilizat pentru a rezolva
AX = B, unde B este o matrice cu p coloane; ˆın acest caz MATLAB rezolv˘ a sistemele
AX(:, j) = B(:, j) pentru j = 1 : p. Sistemele de forma XA = B se pot rezolva cu
X = B/A.
Operatorul ` se bazeaz˘ a pe algoritmi diferit ¸i ˆın funct ¸ie de matricea coeficient ¸ilor. Di-
versele cazuri, care sunt diagnosticate automat prin examinarea matricei sistemului includ:
• matrice triunghiulare sau permut˘ ari de matrice triunghiulare;
• matrice simetrice, pozitiv definite;
• matrice p˘ atratice nesingulare;
• sisteme dreptunghiulare supradeterminate;
• sisteme dreptunghiulare subdeterminate.
4.7.1. Sisteme p˘ atratice
Dac˘ a A este o matrice p˘ atratic˘ a nesingular˘ a de ordinul n, atunci A`b este solut ¸ia sistemu-
lui Ax=b, calculat˘ a prin factorizare LU cu pivotare part ¸ial˘ a.
ˆ
In timpul rezolv˘ arii, MATLAB
calculeaz˘ a rcond(A) s¸i tip˘ ares¸te un mesaj de avertisment dac˘ a rezultatul este mai mic decˆ at
eps:
x = hilb(15)\ones(15,1)
Warning: Matrix is close to singular or badly scaled.
Results may be inaccurate. RCOND = 1.543404e-018.
4.7.2. Sisteme supradeterminate
Dac˘ a m > n, ˆın general sistemul Ax = b nu are nici o solut ¸ie. Expresia MATLAB
A`b calculeaz˘ a solut ¸ia sistemului ˆın sensul celor mai mici p˘ atrate, adic˘ a minimizeaz˘ a norma
euclidian˘ a a reziduului (adic˘ a norm(A
*
x-b)) peste tot ¸i vectorii x. Dac˘ a A are rang maxim
m, atunci solut ¸ia este unic˘ a. Dac˘ a A are rangul k mai mic decˆ at m (ˆın acest caz spunem c˘ a
A este deficient˘ a de rang), A`b calculeaz˘ a o solut ¸ie de baz˘ a cu cel mult k elemente nenule (k
este determinat s¸i x este calculat utilizˆ and factorizarea QR cu pivotare pe coloan˘ a).
ˆ
In ultimul
caz MATLAB d˘ a un mesaj de avertisment.
Solut ¸ia se mai poate calcula s¸i cu x min=pinv(A)
*
b, unde pinv(A) este pseudo-
inversa lui A. Dac˘ a A este deficient˘ a de rang, x min este solut ¸ia unic˘ a de norm˘ a euclidian˘ a
minimal˘ a. Vom reveni asupra acestui tip de sisteme ˆın capitolul urm˘ ator.
Pseudo-inversa Moore-Penrose a lui A, notat˘ a cu A
+
generalizeaz˘ a not ¸iunea de invers˘ a
pentru matrice dreptunghiulare s¸i deficiente de rang. Pseudo-inversa A
+
a lui A este matricea
unic˘ a care satisface condit ¸iile
AA
+
A = A, A
+
AA
+
= A
+
, (A
+
A)
+
= A
+
A, (AA
+
)
+
= AA
+
.
Vom ilustra cu urm˘ atoarele exemple:
4.7. Rezolvarea sistemelor de ecuat ¸ii liniare ˆın MATLAB 133
>> Y=pinv(ones(3))
Y =
0.1111 0.1111 0.1111
0.1111 0.1111 0.1111
0.1111 0.1111 0.1111
>> A=[0 0 0 0; 0 1 0 0; 0 0 2 0]
A =
0 0 0 0
0 1 0 0
0 0 2 0
>> pinv(A)
ans =
0 0 0
0 1.0000 0
0 0 0.5000
0 0 0
4.7.3. Sisteme subdeterminate
ˆ
In cazul unui sistem subdeterminat putem fie s˘ a nu avem nici o solut ¸ie fie s˘ a avem o
infinitate.
ˆ
In ultimul caz, A`b produce o solut ¸ie de baz˘ a cu cel mult k elemente nenule, unde
k este rangul lui A.
ˆ
In general aceast˘ a solut ¸ie nu are norma euclidian˘ a minim˘ a; solut ¸ia cu
norma minim˘ a se poate calcula cu pinv(A)
*
b. Dac˘ a sistemul nu are nici o solut ¸ie (este
incompatibil), atunci A`b este o solut ¸ie ˆın sensul celor mai mici p˘ atrate. Exemplul urm˘ ator
ilustreaz˘ a diferent ¸a dintre solut ¸ia obt ¸inut˘ a cu ` s¸i pinv:
>> A = [1 1 1; 1 1 -1], b=[3; 1]
A =
1 1 1
1 1 -1
b =
3
1
>> x=A\b; y = pinv(A)
*
b;
>> [x y]
ans =
2.0000 1.0000
0 1.0000
1.0000 1.0000
>> [norm(x) norm(y)]
ans =
2.2361 1.7321
MATLAB foloses¸te factorizarea QR cu pivotare pe coloan˘ a. Fie exemplul
>> R=fix(10
*
rand(2,4))
R =
9 6 8 4
2 4 7 0
>> b=fix(10
*
rand(2,1))
134 Rezolvarea numeric˘ a a sistemelor de ecuat ¸ii algebrice liniare
b =
8
4
Sistemul are 2 ecuat ¸ii s¸i 4 necunoscute. Deoarece matricea coeficient ¸ilor cont ¸ine ˆıntregi mici,
este recomandabil s˘ a afis¸˘ am solut ¸ia ˆın format rat ¸ional. Solut ¸ia particular˘ a se obt ¸ine cu:
>> format rat
>> p=R\b
p =
24/47
0
20/47
0
O component˘ a nenul˘ a este p(2), deoarece R(:,2) este coloana cu cea mai mare norm˘ a.
Cealalt˘ a este p(4), deoarece R(:,4) r˘ amˆ ane dominant˘ a dup˘ a eliminarea lui R(:,2).
Solut ¸ia complet˘ a a unui sistem supradeterminat poate fi caracterizat˘ a prin ad˘ augarea unui
vector arbitrar din spat ¸iul nul al matricei sistemului, care poate fi g˘ asit cu funct ¸ia null cu o
opt ¸iune care cere o baz˘ a rat ¸ional˘ a
>> Z=null(R,’r’)
Z =
5/12 -2/3
-47/24 1/3
1 0
0 1
Se poate verifica c˘ a R
*
Z este zero s¸i orice vector de forma x=p+Z
*
q, unde q este un vector
arbitrar, satisface R
*
x=b.
4.7.4. Factorizarea LU s¸i Cholesky
Funct ¸ia lu calculeaz˘ a o factorizare LUP cu pivotare part ¸ial˘ a. Apelul [L,U,P]=lu(A)
returneaz˘ a factorii triunghiulari s¸i matricea de permutare. Forma [L,U]=lu(A) returneaz˘ a
L = P
T
L, deci L este o matrice triunghiular˘ a cu liniile permutate.
>> format short g
>> A = gallery(’fiedler’,3), [L,U]=lu(A)
A =
0 1 2
1 0 1
2 1 0
L =
0 1 0
0.5 -0.5 1
1 0 0
U =
2 1 0
0 1 2
0 0 2
4.7. Rezolvarea sistemelor de ecuat ¸ii liniare ˆın MATLAB 135
Des¸i factorizarea LU este definit˘ a s¸i pentru matrice dreptunghiulare, lu accept˘ a la intrare
numai matrice p˘ atratice.
Rezolvarea sistemului Ax=b cu x=A`b cu A p˘ atratic˘ a este echivalent˘ a cu secvent ¸a MAT-
LAB:
[L,U] = lu(A); x = U\(L\b);
Determinantul s¸i inversa se calculeaz˘ a de asemenea prin factorizare LU:
det(A)=det(L)
*
det(U)=+-prod(diag(U))
inv(A)=inv(U)
*
inv(L)
Comanda chol(A), unde A este hermitian˘ a s¸i pozitiv definit˘ a calculeaz˘ a R astfel ˆıncˆ at
A = R

R. Factorizarea Cholesky permite ˆınlocuirea sistemului A
*
x=b cu R’
*
R
*
x=b.
Deoarece operatorul ` recunoas¸te sisteme triunghiulare, sistemul se poate rezolva rapid cu
x=R`(R’`R`b). D˘ am un exemplu de factorizare Cholesky:
>> A=pascal(4)
A =
1 1 1 1
1 2 3 4
1 3 6 10
1 4 10 20
>> R=chol(A)
R =
1 1 1 1
0 1 2 3
0 0 1 3
0 0 0 1
Funct ¸ia chol examineaz˘ a doar partea triunghiular˘ a superior a lui A. Dac˘ a A nu este
pozitiv definit˘ a se d˘ a un mesaj de eroare.
ˆ
In [R,p]=chol(A), dac˘ a p=0 factorizarea s-a
terminat cu succes, iar ˆın caz de es¸ec p este un num˘ ar natural nenul. Pentru detalii a se vedea
help chol sau doc chol.
Funct ¸ia cholupdate modific˘ a factorizarea Cholesky atunci cˆ and matricea original˘ a a
fost afectat˘ a de o perturbat ¸ie de rang 1 (adic˘ a cu o matrice de forma +xx

sau −xx

, unde x
este un vector).
4.7.5. Factorizarea QR
ˆ
In MATLAB exist˘ a patru variante de factorizare QR – complet˘ a sau economic˘ a s¸i cu sau
f˘ ar˘ a permutare de coloane.
Factorizarea complet˘ a QR a unei matrice C de dimensiune m n, m > n produce o
matrice p˘ atratic˘ a m m Q, ortogonal˘ a s¸i o matrice superior triunghiular˘ a R de dimensiune
mn. Forma de apel este [Q,R]=qr(C).
ˆ
In multe cazuri ultimele m−n coloane nu sunt
necesare, deoarece ele sunt ˆınmult ¸ite cu zerouri ˆın port ¸iunea de jos a lui R. De exemplu pentru
matricea C de mai jos:
C =
1 1
1 2
136 Rezolvarea numeric˘ a a sistemelor de ecuat ¸ii algebrice liniare
1 3
>> [Q,R]=qr(C)
Q =
-0.5774 0.7071 0.4082
-0.5774 0.0000 -0.8165
-0.5774 -0.7071 0.4082
R =
-1.7321 -3.4641
0 -1.4142
0 0
Factorizarea economic˘ a QR produce o matrice rectangular˘ a mn Q cu coloane ortonormale
s¸i o matrice p˘ atratic˘ a superior triunghiular˘ a R, de dimensiune n n. Exemplu
>> [Q,R]=qr(C,0)
Q =
-0.5774 0.7071
-0.5774 0.0000
-0.5774 -0.7071
R =
-1.7321 -3.4641
0 -1.4142
Pentru matrice dreptunghiulare mari, cu m ≫n, cˆ as¸tigul de timp s¸i memorie poate fi impor-
tant.
ˆ
In contrast cu factorizarea LU, factorizarea QR nu necesit˘ a pivotare sau permut˘ ari. O
factorizare QR cu pivotare pe coloane are forma AP = QR, unde P este o matrice de
permutare. Strategia de pivotare utilizat˘ a produce un factor R ale c˘ arui elemente diagonale
verific˘ a [r
11
[ ≥ [r
22
[ ≥ ≥ [r
nn
[. Pivotarea pe coloane este util˘ a pentru detectarea sin-
gularit˘ at ¸ilor sau deficient ¸elor de rang; detectarea se realizeaz˘ a prin examinarea elementelor
diagonale. Dac˘ a A este apropiat˘ a de o matrice de rang r < n, atunci ultimele n −r elemente
ale lui R vor avea ordinul eps
*
norm(A). Pivotarea se indic˘ a printr-un al treilea parametru
de ies¸ire, care este o matrice de permutare:
>> [Q,R,P]=qr(C)
Q =
-0.2673 0.8729 0.4082
-0.5345 0.2182 -0.8165
-0.8018 -0.4364 0.4082
R =
-3.7417 -1.6036
0 0.6547
0 0
P =
0 1
1 0
Dac˘ a combin˘ am pivotarea cu forma economic˘ a, ˆın locul matricei de permutare se returneaz˘ a
un vector:
4.7. Rezolvarea sistemelor de ecuat ¸ii liniare ˆın MATLAB 137
>> [Q,R,P]=qr(C,0)
Q =
-0.2673 0.8729
-0.5345 0.2182
-0.8018 -0.4364
R =
-3.7417 -1.6036
0 0.6547
P =
2 1
Funct ¸iile qrdelete, qrinserts¸i qrupdatemodific˘ a factorizarea QRcˆ and se s¸terge sau
se insereaz˘ a o coloan˘ a din matricea original˘ a sau cˆ and matricea este afectat˘ a de o perturbat ¸ie
de rang 1.
S˘ a consider˘ am acum un sistem Ax = b, p˘ atratic, unde A este o matrice p˘ atratic˘ a de
ordinul n de forma:
A = (a
i,j
), a
i,j
=

1, pentru i = j sau j = n;
−1, pentru i > j;
0, ˆın rest.
De exemplu, pentru n = 6,
A =

1 0 0 0 0 1
−1 1 0 0 0 1
−1 −1 1 0 0 1
−1 −1 −1 1 0 1
−1 −1 −1 −1 1 1
−1 −1 −1 −1 −1 1
¸
¸
¸
¸
¸
¸
¸
¸
.
O astfel de matrice se poate genera, pentru n dat, cu secvent ¸a
A=[-tril(ones(n,n-1),-1)+eye(n,n-1),ones(n,1)]
S˘ a presupunem c˘ a b s-a init ¸ializat cu b=A
*
ones(n,1). Un astfel de sistem are solut ¸ia
x = [1, 1, . . . , 1]
T
. Operatorul ` ne d˘ a, pentru n=100
>> x=A\b;
>> reshape(x,10,10)
ans =
1 1 1 1 1 1 0 0 0 0
1 1 1 1 1 1 0 0 0 0
1 1 1 1 1 1 0 0 0 0
1 1 1 1 1 0 0 0 0 0
1 1 1 1 1 0 0 0 0 0
1 1 1 1 1 0 0 0 0 0
1 1 1 1 1 0 0 0 0 0
1 1 1 1 1 0 0 0 0 0
1 1 1 1 1 0 0 0 0 0
1 1 1 1 1 0 0 0 0 1
138 Rezolvarea numeric˘ a a sistemelor de ecuat ¸ii algebrice liniare
>> norm(b-A
*
x)/norm(b)
ans =
0.3191
rezultat total eronat, des¸i A este bine condit ¸ionat˘ a
>> cond(A)
ans =
44.8023
Dac˘ a rezolv˘ am folosind metoda QR, se obt ¸ine
>> [Q,R]=qr(A);
>> x2=R\(Q’
*
b);
>> x2’
ans =
Columns 1 through 6
1.0000 1.0000 1.0000 1.0000 1.0000 1.0000
...
Columns 97 through 100
1.0000 1.0000 1.0000 1.0000
>> norm(b-A
*
x2)/norm(b)
ans =
8.6949e-016
Funct ¸ia linsolve permite rezolvarea mai rapid˘ a a sistemelor de ecuat ¸ii liniare prin
specificarea matricei sistemului. Apelat˘ a sub forma
x = linsolve(A,b,opts)
rezolv˘ a sistemul liniar A
*
x=b, selectˆ and un rezolvitor adecvat ˆın funct ¸ie de propriet˘ at ¸ile
matricei A, descrise de structura opts. Nu se face nici un test pentru a verifica dac˘ a A are
astfel de propriet˘ at ¸i. D˘ am lista numelor de cˆ ampuri s¸i a valorilor lor posibile.
nume cˆ amp proprietatea matricei
LT triunghiular˘ a inferior
UT triunghiular˘ a superior
UHESS Hessenberg superioar˘ a
SYM simetric˘ a sau hermitian˘ a
POSDEF positiv definit˘ a
RECT dreptunghiular˘ a
TRANSA transpusa (conjugat˘ a) a lui A – specific˘ a dac˘ a se rezolv˘ a
A
*
x=b sau A’x=b
Dac˘ a opts lipses¸te, sistemul se rezolv˘ a cu factorizare LUP, dac˘ a A este p˘ atratic˘ a s¸i cu fac-
torizare QR cu pivotare ˆın caz contrar. Dac˘ a A este prost condit ¸ionat˘ a ˆın cazul p˘ atratic sau
deficient˘ a de rang ˆın caz dreptunghiular, se d˘ a un mesaj de avertisment.
>> A = triu(rand(5,3)); x = [1 1 1 0 0]’;
>> b = A’
*
x;
>> y1 = (A’)\b
4.8. Rezolvarea iterativ˘ a a sistemelor algebrice liniare 139
y1 =
1.0000
1.0000
1.0000
0
0
>> opts.UT = true; opts.TRANSA = true;
>> y2 = linsolve(A,b,opts)
y2 =
1.0000
1.0000
1.0000
0
0
4.8. Rezolvarea iterativ˘ a a sistemelor algebrice liniare
Dorim s˘ a calcul˘ am solut ¸ia sistemului liniar
Ax = b, (4.8.1)
cˆ and A este inversabil˘ a. Presupunem c˘ a am g˘ asit o matrice T s¸i un vector c astfel ˆıncˆ at I −T
s˘ a fie inversabil˘ a s¸i astfel ˆıncˆ at punctul fix unic al ecuat ¸iei
x = Tx +c (4.8.2)
s˘ a fie egal cu solut ¸ia sistemului Ax = b. Fie x

solut ¸ia lui (4.8.1) sau, echivalent, a lui (4.8.2).
Iterat ¸iile: se d˘ a un x
(0)
arbitrar; se defines¸te s¸irul (x
(k)
) prin
x
(k+1)
= Tx
(k)
+c, k ∈ N. (4.8.3)
Lema 4.8.1. Dac˘ a ρ(X) < 1, exist˘ a (I −X)
−1
s¸i
(I −X)
−1
= I +X +X
2
+ +X
k
+. . .
Demonstrat ¸ie. Fie S
k
:= I +X + +X
k
. Observ˘ am c˘ a
(I −X)S
k
= I −X
k+1
,
de unde
lim
k→∞
(I −X)S
k
= I ⇒ lim
k→∞
S
k
= (I −X)
−1
,
deoarece X
k+1
→0 ⇔ρ(X) < 1.
Teorema 4.8.2. Propozit ¸iile urm˘ atoare sunt echivalente
(1) metoda (4.8.3) este convergent˘ a;
(2) ρ(T) < 1;
140 Rezolvarea numeric˘ a a sistemelor de ecuat ¸ii algebrice liniare
(3) |T| < 1 pentru cel put ¸in o norm˘ a matricial˘ a.
Demonstrat ¸ie.
u
(k)
= Tu
(k−1)
+c = T(Tu
(k−2)
+c) +c = =
= T
k
x
(0)
+ (I +T + +T
n−1
)c
(4.8.3) convergent˘ a ⇔ I − T inversabil˘ a ⇔ ρ(T) < 1 ⇔ ∃| | astfel ˆıncˆ at |B| < 1 (din
teorema 4.1.8).
Aplicˆ and teorema de punct fix a lui Banach se obt ¸ine:
Teorema 4.8.3. Dac˘ a exist˘ a | | astfel ˆıncˆ at |T| < 1, s¸irul (x
(k)
) definit de (4.8.3) este
convergent pentru orice x
(0)
∈ R
n
s¸i are loc
|x

−x
(k)
| ≤
|T|
k
1 −|T|
|x
(1)
−x
(0)
| ≤
|T|
1 −|T|
|x
(1)
−x
(0)
[[. (4.8.4)
O metod˘ a iterativ˘ a de rezolvare a unui sistem algebric liniar Ax = b pornes¸te de la o
aproximat ¸ie init ¸ial˘ a x
(0)
∈ R
n
(C
n
) s¸i genereaz˘ a un s¸ir de vectori ¦x
(k)
¦ care converge c˘ atre
solut ¸ia x

a sistemului. Aceste tehnici transform˘ a sistemul init ¸ial ˆıntr-un sistem echivalent de
forma x = Tx + c, T ∈ K
n×n
, c ∈ K
n
. Se genereaz˘ a un s¸ir de forma x
(k)
= Tx
(k−1)
+ c.
Un posibil criteriu de oprire este
|x
(k)
−x
(k−1)
| ≤
1 −|T|
|T|
ε. (4.8.5)
El are la baz˘ a rezultatul urm˘ ator:
Propozit¸ia 4.8.4. Dac˘ a x

este solut ¸ia sistemului (4.8.2), cu |T| < 1, atunci
|x

−x
(k)
| ≤
|T|
1 −|T|
|x
(k)
−x
(k−1)
|. (4.8.6)
Demonstrat ¸ie. Fie p ∈ N

. Avem
|x
(k+p)
−x
(k)
| ≤ |x
(k+1)
−x
(k)
| + +|x
(k+p)
−x
(k+p−1)
|. (4.8.7)
Pe de alt˘ a parte, din (4.8.3), rezult˘ a c˘ a
|x
(m+1)
−x
(m)
| ≤ |T||x
(m)
−x
(m−1)
|
sau, pentru k < m
|x
(m+1)
−x
(m)
| ≤ |T|
m−k+1
|x
(k)
−x
(k−1)
|.
Aplicˆ and aceste inegalit˘ at ¸i, pentru m = k, k +p −1 relat ¸ia (4.8.6) devine
|x
(k+p)
−x
(k)
| ≤ (|T| + +|T|
p
)|x
(k)
−x
(k−1)
|
≤ (|T| + +|T|
p
+. . . )|x
(k)
−x
(k−1)
|.
4.8. Rezolvarea iterativ˘ a a sistemelor algebrice liniare 141
Deoarece |T| < 1, avem
|x
(k+p)
−x
(k)
| ≤
|T|
1 −|T|
|x
(k)
−x
(k−1)
|,
din care prin trecere la limit˘ a ˆın raport cu p se obt ¸ine (4.8.6).
Dac˘ a |T| ≤ 1/2, inegalitatea (4.8.6) devine
|x

−x
(k)
| ≤ |x
k
−x
(k−1)
|,
iar criteriul de oprire
|x
(k)
−x
(k−1)
| ≤ ε.
Tehnicile iterative sunt rar utilizate pentru a rezolva sisteme de mici dimensiuni, deoarece
timpul necesar pentru a obt ¸ine precizia dorit˘ a dep˘ as¸es¸te timpul necesar pentru eliminarea
gaussian˘ a. Pentru sisteme rare (a c˘ aror matrice are multe zerouri), de mari dimensiuni,
metodele iterative sunt eficiente s¸i din punct de vedere al spat ¸iului s¸i din punct de vedere
al timpului.
Fie sistemul Ax = b. Presupunem c˘ a putem scrie matricea inversabil˘ a A sub forma A =
M −N. Dac˘ a M este us¸or de inversat (diagonal˘ a, triunghiular˘ a, etc.) este mai convenabil s˘ a
proced˘ am astfel:
Ax = b ⇔Mx = Nx +b ⇔x = M
−1
Nx +M
−1
b.
Ultima ecuat ¸ie are forma x = Tx +c, cu T = M
−1
N = I −M
−1
A. Se obt ¸ine s¸irul
x
(k+1)
= M
−1
Nx
(k)
+M
−1
b, k ∈ N,
x
(0)
vector arbitrar.
Prima descompunere pe care o consider˘ am este A = D −L −U, unde
(D)
ij
= a
ij
δ
ij
, (−L)
ij
=

a
ij
, i > j
0, altfel
(−U)
ij
=

a
ij
, i < j
0, altfel
Se ia M = D, N = L +U. Se obt ¸ine succesiv
Ax = b ⇔Dx = (L +U)x +b ⇔x = D
−1
(L + U)x +D
−1
b.
Deci T = T
J
= D
−1
(L +U), c = c
J
= D
−1
b. Metoda se numes¸te metoda lui Jacobi
6
. (D
6
Carl Gustav Jacob Jacobi (1804-1851) a fost contemporan al lui
Gauss, s¸i unul dintre cei mai important ¸i matematicieni germani
din secolul al XIX-lea. Numele s˘ au este legat de funct ¸ii eliptice,
ecuat ¸iile cu derivate part ¸iale ale dinamicii, mecanic˘ a cereasc˘ a. Ma-
tricea derivatelor part ¸iale poart˘ a de asemenea numele s˘ au. Este in-
ventatorul metodei iterative de rezolvare a sistemelor algebrice liniare
numit˘ a metoda lui Jacobi s¸i pe care a aplicat-o ˆın mecanica cereasc˘ a.
142 Rezolvarea numeric˘ a a sistemelor de ecuat ¸ii algebrice liniare
inversabil˘ a, de ce?)
Alt˘ a descompunere este A = D − L − U, M = D − L, N = U. Se obt ¸ine T
GS
=
(D − L)
−1
U, c
GS
= (D − L)
−1
b – numit˘ a metoda Gauss-Seidel (D − L inversabil˘ a, de
ce?)
Iterat ¸iile Jacobi se scriu pe componente x
(k)
i
=
1
a
ii

¸
¸b
i

n
¸
j=1
j=i
a
ij
x
(k−1)
j
¸

.
La calculul lui x
(k)
i
se utilizeaz˘ a componentele lui x
(k−1)
(substitut ¸ia simultan˘ a).
Deoarece pentru i > 1, x
(k)
1
, . . . , x
(k)
i−1
au fost deja calculat ¸i s¸i se presupune c˘ a sunt
aproximat ¸ii mai bune ale componentelor solut ¸iei decˆ at x
(k−1)
1
, . . . , x
(k−1)
i−1
, la iterat ¸iile Gauss-
Seidel vom calcula x
(k)
i
utilizˆ and valorile cele mai recente, adic˘ a
x
(k)
i
=
1
a
ii

¸
b
i

i−1
¸
j=1
a
ij
x
(k)
j

n
¸
j=i+1
a
ij
x
(k−1)
j
¸

.
Se pot da condit ¸ii necesare s¸i suficiente pentru convergent ¸a metodei lui Jacobi s¸i a metodei
Gauss-Seidel
ρ(T
J
) < 1
ρ(T
GS
) < 1
s¸i condit ¸ii suficiente: pentru o norm˘ a dat˘ a avem
|T
J
| < 1
|T
GS
| < 1.
Putem ˆımbun˘ at˘ at ¸i metoda Gauss-Seidel introducˆ and un parametru ω s¸i alegˆ and
M =
D
ω
−L.
Avem
A =

D
ω
−L

1 −ω
ω
D +U

,
iar iterat ¸ia obt ¸inut˘ a este

D
ω
−L

x
(k+1)
=

1 −ω
ω
D +U

x
(k)
+b.
Se obt ¸ine matricea
T = T
ω
=

D
ω
−L

−1

1 −ω
ω
D +U

= (D −ωL)
−1
((1 −ω)D +ωU).
Metoda se numes¸te metoda relax˘ arii . Avem urm˘ atoarele variante:
4.8. Rezolvarea iterativ˘ a a sistemelor algebrice liniare 143
Sursa MATLAB 4.9 Metoda lui Jacobi pentru sisteme liniare
function [x,ni]=Jacobi(A,b,x0,err,nitmax)
%JACOBI metoda lui Jacobi
%apel [x,ni]=Jacobi(A,b,x0,err,nitmax)
%parametri
%A - matricea sistemului
%b - vectorul termenilor liberi
%x0 -vector de pornire
%err - toleranta (implicit 1e-3)
%nitmax - numarul maxim de iteratii (implicit 50)
%x - solutia
%ni -numarul de iteratii realizat efectiv
%verificare parametri
if nargin < 5, nitmax=50; end
if nargin < 4, err=1e-3; end
if nargin <3, x0=zeros(size(b)); end
[m,n]=size(A);
if (m˜=n) | (n˜=length(b))
error(’dimensiuni ilegale’)
end
%calculul lui T si c (pregatirea iteratiilor)
M=diag(diag(A));
N=M-A;
T=inv(M)
*
N;
c=inv(M)
*
b;
alfa=norm(T,inf);
x=x0(:);
for i=1:nitmax
x0=x;
x=T
*
x0+c;
if norm(x-x0,inf)<(1-alfa)/alfa
*
err
ni=i;
return
end
end error(’prea multe iteratii’)
144 Rezolvarea numeric˘ a a sistemelor de ecuat ¸ii algebrice liniare
– ω > 1 suprarelaxare (SOR - Successive Over Relaxation) ;
– ω < 1 subrelaxare;
– ω = 1 Gauss-Seidel.
Urm˘ atoarele dou˘ a teoreme se refer˘ a la convergent ¸a metodei relax˘ arii. Scriem matricea
metodei sub forma
T
ω
= (I −ω
¯
L)
−1
[(1 − ω
¯
L)I +ω
¯
(U)],
unde
¯
L = D
−1
L s¸i
¯
U = D
−1
U.
Teorema 4.8.5 (Kahan). Are loc ρ(T
ω
) ≥ [ω − 1[. De aici rezult˘ a condit ¸ia necesar˘ a 0 <
ω < 2.
Demonstrat ¸ie. Scriem polinomul caracteristic al lui T
ω
sub forma p(λ) = det(λI − T
ω
) =
det((I −ω
¯
L)(λI −T
ω
)) = det((λ +ω −1)I −ωλ
¯
L −ω
¯
U); deci avem
p(0) = ±
n
¸
i=1
λ
i
(T
ω
) = ±det((ω −1)I) = ±(ω −1)
n
,
ceea ce implic˘ a max
i

i
(T
ω
)[ ≥ [ω −1[.
Teorema 4.8.6 (Ostrowski-Reich). Dac˘ a A este o matrice pozitiv definit˘ a s¸i 0 < ω < 2,
SOR converge pentru orice alegere a aproximat ¸iei init ¸iale x
(0)
.
Demonstrat ¸ie. Demonstrat ¸ia se face ˆın doi pas¸i. Fie M = ω
−1
(D −ωL). Atunci:
(1) definim Q = A
−1
(2M −A) s¸i ar˘ at˘ am ca Reλ
i
(Q) > 0, pentru orice i.
(2) ar˘ at˘ am c˘ a T
ω
= (Q−I)(Q +I), de unde rezult˘ a c˘ a [λ
i
(T
ω
)[ < 1, pentru orice i.
Pentru primul pas, observ˘ am c˘ a Qx = λx implic˘ a (2M−A)x = λAx. Adunˆ and aceast˘ a
ecuat ¸ie cu transpusa ei conjugat˘ a se obt ¸ine x

(M +M

−A)x = Reλ(x

Ax). Astfel Reλ =
x

(M + M

− A)x/x ∗ Ax = x

(
2
ω
− 1)Dx/x

Ax > 0, c˘ aci A s¸i (
2
ω
− 1)D sunt pozitiv
definite.
Pentru a demonstra (2), observ˘ am c˘ a
(Q−I)(Q +I)
−1
= (2A
−1
M − 2I)(2A
−1
M)
−1
= I −M
−1
A = T
ω
,
deci
[λ(T
ω
)[ =

λ(Q) −1
λ(Q) + 1

=

(Reλ(Q) −1)
2
+ (Imλ(Q))
2
(Reλ(Q) + 1)
2
+ (Imλ(Q))
2

1/2
.

Teoremele 4.8.5 s¸i 4.8.6 ne dau o condit ¸ie necesar˘ a s¸i suficient˘ a pentru convergent ¸a metodei
relax˘ arii dac˘ a matricea sistemului este simetric˘ a s¸i pozitiv definit˘ a: 0 < ω < 2.
4.8. Rezolvarea iterativ˘ a a sistemelor algebrice liniare 145
Sursa MATLAB 4.10 Metoda SOR
function [x,ni]=relax(A,b,omega,x0,err,nitmax)
%RELAX metoda relaxarii
%apel [z,ni]=relax(A,b,omega,err,nitmax)
%parametri
%A - matricea sistemului
%b - vectorul termenilor liberi
%omega - parametrul relaxarii
%x0 - vector de pornire
%err - toleranta (implicit 1e-3)
%nitmax - numarul maxim de iteratii (implicit 50)
%z - solutia
%ni -numarul de iteratii realizat efectiv
%verificare parametri
if nargin < 6, nitmax=50; end
if nargin < 5, err=1e-3; end
if nargin < 4, x0=zeros(size(b)); end
if (omega<=0) | (omega>=2)
error(’parametrul relaxarii ilegal’)
end
[m,n]=size(A);
if (m˜=n) | (n˜=length(b))
error(’dimensiuni ilegale’)
end
%calculul lui T si c (pregatirea iteratiilor)
M=1/omega
*
diag(diag(A))+tril(A,-1);
N=M-A;
T=M\N;
c=M\b;
alfa=norm(T,inf);
x=x0(:);
for i=1:nitmax
x0=x;
x=T
*
x0+c;
if norm(x-x0,inf)<(1-alfa)/alfa
*
err
ni=i;
return
end
end
error(’prea multe iteratii’)
146 Rezolvarea numeric˘ a a sistemelor de ecuat ¸ii algebrice liniare
Observat ¸ia 4.8.7. Pentru metoda Jacobi (s¸i Gauss-Seidel) avem urm˘ atoarele condit ¸ii sufi-
ciente de convergent ¸˘ a:
[a
ii
[ >
n
¸
j=1
j=i
[a
ij
[ (A diagonal dominant˘ a pe linii);
[a
ii
[ >
n
¸
j=1
j=i
[a
ji
[ (A diagonal dominant˘ a pe coloane). ♦
Valoarea optimal˘ a a lui ω (valabil˘ a doar pentru anumite tipuri de matrice, de exemplu
tridiagonale pe blocuri) este
ω
O
=
2
1 +

1 −(ρ(T
J
))
2
.
Pentru implementare, vezi sursa MATLAB 4.11.
ˆ
In practic˘ a determinarea parametrului optim
de relaxare pe baza razei spectrale nu este eficient˘ a. Rutina are scop pur didactic.
Sursa MATLAB 4.11 Determinarea parametrului optim de relaxare
function omega=relopt(A)
%RELOPT - determina valoarea optima a parametrului
% relaxarii
M=diag(diag(A)); %determin matricea Jacobi
N=M-A;
T=M \ N;
e=eig(T);
rt=max(abs(e)); %raza spectrala a matricei Jacobi
omega=2/(1+sqrt(1-rtˆ2));
Teorema 4.8.8. Fie B o matrice p˘ atratic˘ a s¸i | | o norm˘ a matricial˘ a oarecare. Atunci
lim
k→∞
|B
k
|
1/k
= ρ(B).
Demonstrat ¸ie. Cum ρ(B) ≤ |B| (teorema 4.1.6 s¸i cum ρ(B) = (ρ(B
k
))
1/k
avem
ρ(B) ≤ |B
k
|
1/k
, ∀ k ∈ N

.
Se va stabili c˘ a, pentru orice ε > 0 exist˘ a l = l(ε) ∈ N astfel ˆıncˆ at
k ≥ l ⇒|B
k
|
1/k
≤ ρ(B) +ε,
ceea ce demonstreaz˘ a relat ¸ia. Fie deci ε > 0 dat. Deoarece matricea
B
ε
=
B
ρ(B) +ε
4.8. Rezolvarea iterativ˘ a a sistemelor algebrice liniare 147
verific˘ a ρ(B
ε
) < 1 se deduce din teorema 4.8.2 c˘ a lim
k→∞
B
k
ε
= 0. Prin urmare, exist˘ a un
ˆıntreg ℓ = ℓ
ε
astfel ˆıncˆ at
k ≥ ℓ ⇒|B
k
ε
| =
|B|
k
(ρ(B) +ε)
k
≤ 1
ceea ce este chiar relat ¸ia c˘ autat˘ a.
D˘ am o teorem˘ a referitoare la matrice de forma (I +B).
Teorema 4.8.9. (1) Fie | | o norm˘ a matricial˘ a subordonat ˘ a s¸i B o matrice ce verific˘ a
|B| < 1.
Atunci matricea I +B este inversabil˘ a s¸i |I +B|
−1

1
1−||B||
.
(2) Dac˘ a o matrice de forma (I +B) este singular˘ a, atunci ˆın mod necesar
|B| ≥ 1
pentru orice norm˘ a matricial˘ a subordonat˘ a sau nu.
Demonstrat ¸ie. (1) Deoarece
(I +B)u = 0 ⇒|u| = |Bu|
|B| < 1 ∧ u = 0 ⇒|Bu| < |u|,
pentru norma vectorial˘ a corespunz˘ atoare, se deduce c˘ a
(I +B)u = 0 ⇒u = 0.
Matricea I +B fiind inversabil˘ a putem scrie
(I +B)
−1
= I −B(I +B)
−1
de unde
|(I +B)
−1
| ≤ 1 +|B||(I +B)
−1
|,
ceea ce conduce la inegalitatea c˘ autat˘ a.
(2) Aspune c˘ a matricea (I+B) este singular˘ a revine la a spune c˘ a −1 este valoare proprie
a lui B.
ˆ
In aceste condit ¸ii aplicarea teoremei 4.1.6 ne arat˘ a c˘ a |B| ≥ ρ(B) ≥ 1.
Cum se alege ˆıntre mai multe metode iterative convergente pentru rezolvarea aceluias¸i
sistem liniar Au = b? Pentru a fixa ideile, presupunem c˘ a B este normal˘ a. Atunci
|B
k
e
0
|
2
≤ |B
k
|
2
|e
0
|
2
= (ρ(B))
k
|e
0
|
2
s¸i aceast˘ a inegalitate este cea mai bun˘ a posibil˘ a, ˆın sensul c˘ a, pentru orice ˆıntreg k ≥ 0, exist˘ a
un vector e
0
(k) = 0 pentru care ea devine egalitate.
148 Rezolvarea numeric˘ a a sistemelor de ecuat ¸ii algebrice liniare
ˆ
In cazul matricelor normale, metoda este cu atˆ at mai rapid˘ a, cu cˆ at ρ(B) este mai mic˘ a,
deoarece
sup
e02=1
|B
k
e
0
|
1/k
2
= ρ(B) pentru orice k ≥ 0.
ˆ
In cazul general (matricea B oarecare, norm˘ a vectorial˘ a oarecare), concluzia este iden-
tic˘ a: asimptotic, vectorul de eroare e
k
= B
k
e
0
se comport˘ a ca s¸i (ρ(B))
k
, cum precizeaz˘ a
rezultatul urm˘ ator.
Teorema 4.8.10. (1) Fie | | o norm˘ a vectorial˘ a oarecare s¸i u astfel ˆıncˆ at
u = Bu +c.
Se consider˘ a metoda iterativ˘ a
u
k+1
= Bu
k
+c, k ≥ 0.
Atunci
lim
k→∞

sup
u0−u=1
|u
k
−u|
1/k
¸
= ρ(B).
(2) Fie | | o norm˘ a vectorial˘ a oarecare s¸i fie u astfel ˆıncˆ at
u = Bu +c =
¯
Bu +¯c.
Se consider˘ a metodele iterative
¯ u
k+1
=
¯
B¯ u
k
+¯c, k ≥ 0, u
k+1
= Bu
k
+c, k ≥ 0
cu ρ(B) < ρ(
¯
B), u
0
= ¯ u
0
. Atunci, oricare ar fi num˘ arul ε > 0 exist˘ a un ˆıntreg ℓ(ε) astfel
ˆıncˆ at
k ≥ ℓ ⇒ sup
u0−u=1

|¯ u
k
−u|
|u
k
−u|

1/k

ρ(
¯
B)
ρ(B) +ε
.
Demonstrat ¸ie. Fie | | norma matricial˘ a subordonat˘ a. Pentru orice k natural putem scrie
(ρ(B))
k
= ρ(B
k
) ≤ |B
k
| = sup
e0=1
|B
k
e
0
|
astfel ca
ρ(B) ≤ sup
e0=1
|B
k
e
0
|
1/k
= |B
k
|
1/k
s¸i asert ¸iunea (1) decurge din teorema 4.8.8. Conform aceleeas¸i teoreme, fiind dat un ε > 0
exist˘ a un ˆıntreg ℓ(ε) astfel ˆıncˆ at
k ≥ ℓ ⇒ sup
e0=1
|B
k
e
0
|
1/k
≤ (ρ(B) +ε).
Prin urmare, pentru orice k ≥ ℓ, exist˘ a un vector e
0
= e
0
(k) astfel ˆıncˆ at
|e
0
| = 1 s¸i |
¯
B
k
e
0
|
1/k
= |
¯
B
k
|
1/k
≥ ρ(
¯
B)
s¸i (2) este demonstrat˘ a.
4.8. Rezolvarea iterativ˘ a a sistemelor algebrice liniare 149
Deci studiul metodelor iterative r˘ aspunde la dou˘ a probleme.
(1) Fiind dat˘ a o metod˘ a iterativ˘ a cu matricea B, s˘ a se determine dac˘ a metoda este conver-
gent˘ a, adic˘ a dac˘ a ρ(B) < 1, sau echivalent, dac˘ a exist˘ a o norm˘ a matricial˘ a astfel ca |B| < 1.
(2) Fiind date dou˘ a metode iterative convergente, metoda iterativ˘ a cea mai rapid˘ a este cea
a c˘ arei matrice are cea mai mic˘ a raz˘ a spectral˘ a.
Vom ˆıncheia sect ¸iunea cu un exemplu care compar˘ a cele trei metode iterative stat ¸ionare.
Fie sistemul Ax = b, unde A este o matrice tridiagonal˘ a care are 5 pe diagonala principal˘ a
s¸i -1 pe diagonalele -1 s¸i 1, iar b s-a obt ¸inut cu b=A
*
ones(n,1). Solut ¸ia sistemului este
x=ones(n,1). Sistemul a fost rezolvat pentru n = 500, iar timpul de rezolvare a fost
contorizat. Se afis¸eaz˘ a s¸i num˘ arul de iterat ¸ii necesare. Secvent ¸a de verificare, cont ¸inut˘ a ˆın
fis¸ierul testiter.m, este:
o1=ones(n-1,1);
A=5
*
eye(n)-diag(o1,1)-diag(o1,-1);
b=A
*
ones(n,1);
err=eps;
%determin parametrul optim al relaxarii
w=relopt(A);
tic
%Jacobi
[x1,ni1]=Jacobi(A,b,b,err,1000);
%Gauss-Seidel
[x2,ni2]=relax(A,b,1,b,err,1000);
%relaxare
[x3,ni3]=relax(A,b,w,b,err,1000);
toc
ni1,ni2,ni3
S-au obt ¸inut urm˘ atoarele rezultate
>> testiter
Elapsed time is 1.382000 seconds.
ni1 =
41
ni2 =
27
ni3 =
25
Script-ul testitersparse.m se obt ¸ine din testiter.m, dac˘ a A este memorat˘ a ca ma-
trice rar˘ a, adic˘ a linia a doua se ˆınlocuies¸te cu
A=spdiags([-ones(n,1),5
*
ones(n,1),-ones(n,1)],-1:1,n,n);
iar linia w=relopt(A) cu w=relopt(full(A)). La execut ¸ia lui se obt ¸ine
>> testitersparse
Elapsed time is 0.731000 seconds.
ni1 =
41
150 Rezolvarea numeric˘ a a sistemelor de ecuat ¸ii algebrice liniare
ni2 =
27
ni3 =
25
Se constat˘ a un timp de execut ¸ie mult mai scurt, datorit˘ a rarit˘ at ¸ii lui A.
Probleme
Problema 4.1. Pentru un sistem avˆ and matricea tridiagonal˘ a s˘ a se implementeze urm˘ atoarele
metode:
(a) eliminarea gaussian˘ a, cu s¸i f˘ ar˘ a pivotare;
(b) descompunerea LU;
(c) descompunerea LUP;
(d) descompunerea Cholesky, dac˘ a matricea este simetric˘ a s¸i pozitiv definit˘ a.
(e) metoda Jacobi;
(f) metoda Gauss-Seidel;
(g) metoda SOR.
Problema 4.2. Implementat ¸i eliminarea gaussian˘ a cu pivotare part ¸ial˘ a ˆın dou˘ a variante: cu
permutare de linii logic˘ a (prin intermediul unui vector de permut˘ ari) s¸i cu permutare efectiv˘ a
a liniilor. Comparat ¸i timpii de execut ¸ie pentru diverse dimensiuni ale matricei sistemului.
Facet ¸i acelas¸i lucru s¸i pentru descompunerea LUP.
Problema 4.3. Modificat ¸i descompunerea LUP astfel ca s˘ a returneze s¸i valoarea determinan-
tului matricei init ¸iale.
Problema 4.4. Se consider˘ a sistemul
2x
1
−x
2
= 1
−x
j−1
+ 2x
j
−x
j+1
= j, j = 2, n −1
−x
n−1
+ 2x
n
= n
(a) S˘ a se genereze matricea sistemului folosind diag.
(b) S˘ a se rezolve folosind descompunerea lu.
(c) S˘ a se rezolve folosind o rutin˘ a potrivit˘ a din problema 4.1.
(d) S˘ a se genereze matricea cu spdiags, s˘ a se rezolve cu `, comparˆ and timpul de re-
zolvare cu timpul necesar pentru rezolvarea aceluias¸i sistem cu matrice dens˘ a.
4.8. Rezolvarea iterativ˘ a a sistemelor algebrice liniare 151
(e) S˘ a se estimeze num˘ arul de condit ¸ionare al matricei coeficient ¸ilor folosind condest.
Problema 4.5. Modificat ¸i eliminarea gaussian˘ a s¸i descompunerea LUP astfel ca s˘ a utilizeze
pivotarea total˘ a.
Problema 4.6. Scriet ¸i o funct ¸ie MATLAB care s˘ a genereze matrice band˘ a aleatoare de di-
mensiune dat˘ a s¸i care s˘ a fie diagonal dominante. Testat ¸i metoda lui Jacobi s¸i metoda SOR
pentru sisteme avˆ and astfel de matrice.
Problema 4.7. Consider˘ am ecuat ¸ia diferent ¸ial˘ a ordinar˘ a
y
′′
(x) −p(x)y

(x) −q(x)y(x) = r(x), x ∈ [a, b]
cu condit ¸iile pe frontier˘ a y(a) = α, y(b) = β. Presupunemc˘ a q(x) ≥ q > 0. Pentru a rezolva
ecuat ¸ia numeric, o vom discretiza, c˘ autˆ and solut ¸iile sale pe punctele echidistante x
i
= a+ih,
i = 0, . . . , N − 1, unde h = (b − a)/(N + 1). Definim p
i
= p(x
i
), q
i
= q(x
i
), r
i
= r(x
i
)
s¸i y
i
≈ y(x
i
). Utilizˆ and aproximat ¸iile
y

(x
i
) ≈
y
i+1
−y
i
2h
s¸i
y
′′
(x
i
) ≈
y
i+1
−2y
i
+y
i−1
h
2
s¸i t ¸inˆ and cont c˘ a y
0
= α s¸i y
N+1
= β, se ajunge la un sistem liniar tridiagonal.
(a) Scriet ¸i sistemul la care se ajunge prin discretizare s¸i studiat ¸i propriet˘ at ¸ile sale.
(b) Scriet ¸i o funct ¸ie MATLAB care rezolv˘ a numeric ecuat ¸ia diferent ¸ial˘ a cu condit ¸ii pe
frontier˘ a bazat˘ a pe ideea de mai sus. Sistemul se va rezolva printr-o metod˘ a direct˘ a s¸i
una iterativ˘ a (dac˘ a este posibil).
(c) Ar˘ atat ¸i c˘ a sistemul poate fi transformat ˆıntr-un sistem echivalent a c˘ arui matrice este
simetric˘ a s¸i pozitiv definit˘ a. S˘ a se implementeze s¸i aceast˘ a variant˘ a.
(d) Exploatat ¸i raritatea matricei sistemului.
Testat ¸i pentru problema
y
′′
= −
2
x
y

+
2
x
2
y +
sin(ln x)
x
2
, x ∈ [1, 2], y(1) = 1, y(2) = 2,
cu solut ¸ia exact˘ a
y = c
1
x +
c
2
x
2

3
10
sin(ln x) −
1
10
cos(ln x),
unde
c
2
=
1
70
[8 −12 sin(ln 2) −4 cos(ln 2)],
c
1
=
11
10
−c2.
152 Rezolvarea numeric˘ a a sistemelor de ecuat ¸ii algebrice liniare
Problema 4.8. Aplicat ¸i ideea din problema precedent˘ a la rezolvarea ecuat ¸iei lui Poisson uni-
dimensionale

d
2
v(x)
dx
2
= f, 0 < x < 1,
cu condit ¸iile pe frontier˘ a v(0) = v(1) = 0. Rezolvat ¸i sistemul la care se ajunge cu metoda
Cholesky s¸i cu metoda SOR.
Problema 4.9. S˘ a se determine matricea metodei Gauss-Seidel pentru matricea
A =

2 −1
−1 2 −1
−1 2 −1
.
.
.
.
.
.
.
.
.
−1 2 −1
−1 2
¸
¸
¸
¸
¸
¸
¸
¸
¸
.
Problema 4.10. O analiz˘ a de tip element finit a sarcinii pe o structur˘ a ne conduce la
urm˘ atorul sistem

α 0 0 0 β −β
0 α 0 −β 0 −β
0 0 α β β 0
0 −β β γ 0 0
β 0 β 0 γ 0
−β −β 0 0 0 γ
¸
¸
¸
¸
¸
¸
¸
¸
x =

15
0
−15
0
25
0
¸
¸
¸
¸
¸
¸
¸
¸
,
unde α = 482317, β = 2196.05 s¸i γ = 6708.43. Aici x
1
, x
2
, x
3
reprezint˘ a deplas˘ ari laterale,
iar x
4
, x
5
, x
6
reprezint˘ a deplas˘ ari rotat ¸ionale (tridimensionale) corespunzˆ and fort ¸ei aplicate
(membrul drept).
(a) Determinat ¸i x.
(b) Cˆ at de precise sunt calculele? Presupunem ˆıntˆ ai date exacte, apoi |∆A|/|A| = 5
10
−7
.
Problema 4.11. Consider˘ am sistemul
x
1
+x
2
= 2
10x
1
+ 10
18
x
2
= 10 + 10
18
.
(a) S˘ a se rezolve sistemul prin eliminare gaussian˘ a cu pivotare part ¸ial˘ a.
(b)
ˆ
Imp˘ art ¸it ¸i fiecare linie cu maximul ˆın modul din linia respectiv˘ a s¸i apoi utilizat ¸i elim-
inarea gaussian˘ a.
(c) Rezolvat ¸i sistemul folosind toolbox-ul Symbolic.
CAPITOLUL 5
Aproximarea funct ¸iilor
Cuprins
5.1. Aproximat ¸ie prin metoda celor mai mici p˘ atrate . . . . . . . . . . . . . . 156
5.1.1. Produse scalare . . . . . . . . . . . . . . . . . . . . . . . . . . 157
5.1.2. Ecuat ¸iile normale . . . . . . . . . . . . . . . . . . . . . . . . . 158
5.1.3. Eroarea ˆın metoda celor mai mici p˘ atrate. Convergent ¸a . . . . . . 161
5.1.4. Exemple de sisteme ortogonale . . . . . . . . . . . . . . . . . . 163
5.1.5. Exemple de polinoame ortogonale . . . . . . . . . . . . . . . . 166
5.2. Polinoame s¸i potrivirea datelor ˆın MATLAB . . . . . . . . . . . . . . . 180
5.3. Interpolare polinomial˘ a . . . . . . . . . . . . . . . . . . . . . . . . . . 186
5.3.1. Spat ¸iul H
n
[a, b] . . . . . . . . . . . . . . . . . . . . . . . . . . 186
5.3.2. Interpolare Lagrange . . . . . . . . . . . . . . . . . . . . . . . 189
5.3.3. Interpolare Hermite . . . . . . . . . . . . . . . . . . . . . . . . 193
5.3.4. Expresia erorii de interpolare . . . . . . . . . . . . . . . . . . . 197
5.3.5. Convergent ¸a interpol˘ arii Lagrange . . . . . . . . . . . . . . . . 200
5.4. Calculul eficient al polinoamelor de interpolare . . . . . . . . . . . . . . 207
5.4.1. Metode de tip Aitken . . . . . . . . . . . . . . . . . . . . . . . 207
5.4.2. Metoda diferent ¸elor divizate . . . . . . . . . . . . . . . . . . . 209
5.4.3. Diferent ¸e finite: formula lui Newton progresiv˘ a s¸i regresiv˘ a . . . 213
5.4.4. Diferent ¸e divizate cu noduri multiple . . . . . . . . . . . . . . . 215
5.5. Interpolare spline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
5.5.1. Spline liniare . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
5.5.2. Interpolarea cu spline cubice . . . . . . . . . . . . . . . . . . . 220
5.5.3. Propriet˘ at ¸i de minimalitate ale funct ¸iilor spline cubice . . . . . . 225
153
154 Aproximarea funct ¸iilor
5.6. Interpolare ˆın MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . . 226
Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
Capitolul prezent este legat de aproximarea funct ¸iilor. Funct ¸iile ˆın cauz˘ a pot s˘ a fie definite
pe un continuu - de regul˘ a un interval - sau pe o mult ¸ime finit˘ a de puncte. Prima situat ¸ie apare
ˆın contextul funct ¸iilor speciale (elementare sau transcendente) pe care dorim s˘ a le evalu˘ am
ca parte a unei subrutine. Deoarece o astfel de evaluare trebuie s˘ a se reduc˘ a la un num˘ ar
finit de operat ¸ii aritmetice, trebuie ˆın ultim˘ a instant ¸˘ a s˘ a aproxim˘ am funct ¸iile prin intermediul
polinoamelor sau funct ¸iilor rat ¸ionale. A doua situat ¸ie este ˆıntˆ alnit˘ a ˆın s¸tiint ¸ele fizice, cˆ and
m˘ asur˘ atorile unor cantit˘ at ¸i fizice se fac ˆın funct ¸ie de alte cantit˘ at ¸i (cumar fi timpul).
ˆ
In ambele
cazuri dorim s˘ a aproxim˘ am o funct ¸ie dat˘ a, cˆ at mai bine posibil, ˆın termeni de funct ¸ii mai
simple.
ˆ
In general o schem˘ a de aproximare poate fi descris˘ a dup˘ a cum urmeaz˘ a.
Se d˘ a o funct ¸ie f ∈ X ce urmeaz˘ a a fi aproximat˘ a, ˆımpreun˘ a cu o clas˘ a Φ de aproximante
s¸i o norm˘ a | | ce m˘ asoar˘ a m˘ arimea funct ¸iilor. C˘ aut˘ am o aproximare ´ ϕ ∈ Φ a lui f astfel
ˆıncˆ at
|f − ´ ϕ| ≤ |f −ϕ| pentru orice ϕ ∈ Φ. (5.0.1)
Aceast˘ a problem˘ a se numes¸te problem˘ a de cea mai bun˘ a aproximare a lui f cu elemente
din Φ, iar funct ¸ia ´ ϕ se numes¸te (element de) cea mai bun˘ a aproximare a lui f relativ la norma
| |.
Cunoscˆ andu-se o baz˘ a ¦π
j
¦
n
j=1
a lui Φ putem scrie
Φ = Φ
n
=

ϕ : ϕ(t) =
n
¸
j=1
c
j
π
j
(t), c
j
∈ R

. (5.0.2)
Φ este un spat ¸iu liniar finit dimensional sau o submult ¸ime a acestuia.
Exemplul 5.0.11. Φ = P
m
- mult ¸imea polinoamelor de grad cel mult m. O baz˘ a a sa este
e
j
(t) = t
j
, j = 0, 1, . . . , m. Deci dimP
m
= m + 1. Polinoamele sunt cele mai utilizate
aproximante pentru funct ¸ii pe domenii m˘ arginite (intervale sau mult ¸imi finite). Motivul –
teorema lui Weierstrass – orice funct ¸ie din C[a, b] poate fi aproximat˘ a oricˆ at de bine printr-un
polinom de grad suficient de mare. ♦
Exemplul 5.0.12. Φ = S
k
m
(∆) - spat ¸iul funct ¸iilor spline polinomiale de grad m s¸i cu clasa
de netezime k pe diviziunea
∆ : a = t
1
< t
2
< t
3
< < t
N−1
< t
N
= b
a intervalului [a, b]. Acestea sunt funct ¸ii polinomiale pe port ¸iuni de grad ≤ m, racordate
ˆın t
1
, . . . , t
N−1
, astfel ˆıncˆ at toate derivatele pˆ an˘ a la ordinul k s˘ a fie continue pe [a, b]. Pre-
supunem 0 ≤ k < m. Pentru k = m se obt ¸ine P
m
. Dac˘ a k = −1 permitem discontinuit˘ at ¸i ˆın
punctele de jonct ¸iune. ♦
Exemplul 5.0.13. Φ = T
m
[0, 2π] - spat ¸iul polinoamelor trigonometrice de grad cel mult m
pe [0, 2π]. Acestea sunt combinat ¸ii liniare ale funct ¸iilor
155
π
k
(t) = cos(k −1)t, k = 1, m+ 1,
π
m+1−k
(t) = sin kt, k = 1, m.
Dimensiunea spat ¸iului este n = 2m + 1. Astfel de aproximante sunt alegeri naturale dac˘ a
funct ¸ia de aproximat este periodic˘ a de perioad˘ a 2π. (Dac˘ a f are perioada p se face schimbarea
de variabil˘ a t →tp/2π.) ♦
De notat c˘ a mult ¸imea funct ¸iilor rat ¸ionale
Φ = R
r,s
= ¦ϕ : ϕ = p/q, p ∈ P
r
, q ∈ P
s
¦,
nu este spat ¸iu liniar.
Cˆ ateva alegeri posibile ale normei, atˆ at pentru funct ¸ii continue, cˆ at s¸i pentru cele dis-
crete apar ˆın tabelul 5.1. Cazul continuu presupune un interval [a, b] s¸i o funct ¸ie pondere
w(t) (posibil s¸i w(t) ≡ 1) definit˘ a pe intervalul [a, b] s¸i pozitiv˘ a, exceptˆ and zerourile izolate.
Cazul discret presupune o mult ¸ime de N puncte distincte t
1
, t
2
, . . . , t
N
ˆımpreun˘ a cu pon-
derile w
1
, w
2
, . . . , w
N
(posibil w
i
= 1, i = 1, N). Intervalul [a, b] poate fi nem˘ arginit, dac˘ a
funct ¸ia pondere w este astfel ˆıncˆ at integrala pe [a, b] care defines¸te norma s˘ a aib˘ a sens.
norm˘ a continu˘ a tip norm˘ a discret˘ a
|u|

= max
a≤t≤b
[u(t)[ L

|u|

= max
1≤i≤N
[u(t
i
)[
|u|
1
=

b
a
[u(t)[dt L
1
|u|
1
=
¸
N
i=1
[u(t
i
)[
|u|
1,w
=

b
a
[u(t)[w(t)dt L
1
w
|u|
1,w
=
¸
n
i=1
w
i
[u(t
i
)[
|u|
2,w
=

b
a
[u(t)[
2
w(t)dt

1/2
L
2
w
|u|
2,w
=

¸
N
i=1
w
i
[u(t
i
)[
2

1/2
Tabela 5.1: Tipuri de aproximare s¸i normele asociate
Deci, combinˆ and normele din tabel˘ a cu spat ¸iile liniare din exemple se obt ¸ine o problem˘ a
de cea mai bun˘ a aproximare (5.0.1) cu sens.
ˆ
In cazul continuu, funct ¸ia dat˘ a f s¸i funct ¸iile ϕ
din clasa Φ trebuie definite pe [a, b] s¸i norma |f − ϕ| trebuie s˘ a aib˘ a sens. La fel, f s¸i ϕ
trebuie definite ˆın punctele t
i
ˆın cazul discret.
De notat c˘ a dac˘ a cea mai bun˘ a aproximant˘ a ´ ϕˆın cazul discret este astfel ˆıncˆ at |f−´ ϕ| = 0,
atunci ´ ϕ(t
i
) = f(t
i
), pentru i = 1, 2, . . . , N. Spunem c˘ a ´ ϕ interpoleaz˘ a f ˆın punctele t
i
s¸i
numim aceast˘ a problem˘ a de aproximare problem˘ a de interpolare .
Cele mai simple probleme de aproximare sunt problema celor mai mici p˘ atrate (vezi
sect ¸iunea 5.1) s¸i problema de interpolare, iar spat ¸iul cel mai simplu este cel al polinoamelor.
ˆ
Inainte de a ˆıncepe cu problema celor mai mici p˘ atrate, introducem un instrument
notat ¸ional care ne permite s˘ a trat˘ am cazul continuu s¸i cel discret simultan. Definim ˆın cazul
continuu
λ(t) =

0, dac˘ a t < a (cˆ and −∞< a),

t
a
w(τ)dτ, dac˘ a a ≤ t ≤ b,

b
a
w(τ)dτ, dac˘ a t > b (cˆ and b < ∞).
(5.0.3)
156 Aproximarea funct ¸iilor
Astfel putem scrie, pentru orice funct ¸ie continu˘ a u

R
u(t)dλ(t) =

b
a
u(t)w(t)dt, (5.0.4)
c˘ aci dλ(t) ≡ 0 ˆın afara lui [a, b] s¸i dλ(t) = w(t)dt ˆın interiorul lui. Vom numi dλ m˘ asur˘ a
(pozitiv˘ a) continu˘ a. M˘ asura discret˘ a (numit˘ a s¸i ,,m˘ asura Dirac“) asociat˘ a mult ¸imii de puncte
¦t
1
, t
2
, . . . , t
N
¦ este o m˘ asur˘ a dλ care este nenul˘ a numai ˆın punctele t
i
s¸i are aici valoarea
w
i
. Astfel ˆın acest caz

R
u(t)dλ(t) =
N
¸
i=1
w
i
u(t
i
). (5.0.5)
O definit ¸ie mai precis˘ a se poate da cu ajutorul integralei Stieltjes, dac˘ a definim λ(t) ca fiind
o funct ¸ie ˆın scar˘ a cu saltul ˆın t
i
egal cu w
i
.
ˆ
In particular, definim norma lui L
2
prin
|u|
2,d
λ
=

R
[u(t)[
2
dλ(t)
1
2
(5.0.6)
s¸i obt ¸inem norma continu˘ a sau discret˘ a dup˘ a cum λ este ca ˆın (5.0.3) sau o funct ¸ie ˆın scar˘ a
ca ˆın (5.0.5).
Vom numi suportul lui dλ – notat cu suppdλ – intervalul [a, b] ˆın cazul continuu s¸i
mult ¸imea ¦t
1
, t
2
, . . . , t
N
¦ ˆın cazul discret. Spunem c˘ a mult ¸imea de funct ¸ii π
j
din (5.0.2)
este liniar independent˘ a pe suppdλ dac˘ a
∀ t ∈ suppdλ
n
¸
j=1
c
j
π
j
(t) ≡ 0 ⇒c
1
= c
2
= = c
k
= 0. (5.0.7)
5.1. Aproximat¸ie prin metoda celor mai mici p˘ atrate
Vom particulariza problema (5.0.1) luˆ and ca norm˘ a norma din L
2
|u|
2,d
λ
=

R
[u(t)[
2
dλ(t)
1
2
, (5.1.1)
unde dλ este fie o m˘ asur˘ a continu˘ a (conform (5.0.3)) sau discret˘ a (conform (5.0.5)) s¸i uti-
lizˆ and aproximanta ϕ dintr-un spat ¸iu liniar n-dimensional
Φ = Φ
n
=

ϕ : ϕ(t) =
n
¸
j=1
c
j
π
j
(t), c
j
∈ R

. (5.1.2)
Presupunem c˘ a funct ¸iile π
j
sunt liniar independente pe suppdλ s¸i c˘ a integrala din (5.1.1) are
sens pentru u = π
j
sau u = f.
5.1. Aproximat ¸ie prin metoda celor mai mici p˘ atrate 157
Problema astfel obt ¸inut˘ a se numes¸te problem˘ a de aproximare ˆın sensul celor mai mici
p˘ atrate sau problem˘ a de aproximare ˆın medie p˘ atratic˘ a. Solut ¸ia ei a fost dat˘ a la ˆınceputul
secolului al XIX-lea de c˘ atre Gauss s¸i Legendre
1
.
Presupunem c˘ a funct ¸iile de baz˘ a π
j
sunt liniar independente pe suppdλ. Vom presupune
c˘ a integrala din (5.1.1) are sens pentru u = π
j
, j = 1, . . . , n s¸i u = f.
Solut ¸ia problemei de cea mai bun˘ a aproximare se exprim˘ a mai us¸or cu ajutorul produselor
scalare.
5.1.1. Produse scalare
Dˆ andu-se o m˘ asur˘ a continu˘ a sau discret˘ a dλ s¸i dou˘ a funct ¸ii u s¸i v avˆ and norma finit˘ a
putem defini produsul scalar
(u, v) =

R
u(t)v(t)dλ(t). (5.1.3)
Inegalitatea Cauchy-Buniakovski-Schwarz
|(u, v)| ≤ |u|
2,d
λ
|v|
2,d
λ
ne spune c˘ a integrala ˆın (5.1.3) este bine definit˘ a.
Produsul scalar real are urm˘ atoarele propriet˘ at ¸i utile:
(i) simetria (u, v) = (v, u);
(ii) omogenitatea (αu, v) = α(u, v), α ∈ R;
(iii) aditivitatea (u +v, w) = (u, w) + (v, w);
(iv) pozitiv definirea (u, u) ≥ 0 s¸i (u, u) = 0 ⇔u ≡ 0 pe suppdλ.
Omogenitatea s¸i aditivitatea ne dau liniaritatea

1
u
1

2
u
2
, v) = α
1
(u
1
, v) +α
2
(u
2
, v). (5.1.4)
Relat ¸ia (5.1.4) se poate extinde la combinat ¸ii liniare finite. De asemenea
|u|
2
2,d
λ
= (u, u). (5.1.5)
1
Adrien Marie Legendre (1752-1833) matematician francez, bine
cunoscut pentru tratatul s˘ au asupra integralelor eliptice, dar s¸i pen-
tru lucr˘ arile sale de teoria numerelor s¸i geometrie. Este considerat,
al˘ aturi de Gauss, init ¸iator (ˆın 1805) al metodei celor mai mici p˘ atrate,
des¸i Gauss a utilizat metoda ˆınc˘ a din 1794, dar a publicat-o doar ˆın
1809.
158 Aproximarea funct ¸iilor
Spunem c˘ a u s¸i v sunt ortogonale dac˘ a
(u, v) = 0. (5.1.6)
Mai general, putem considera sisteme ortogonale ¦u
k
¦
n
k=1
:
(u
i
, u
j
) = 0 dac˘ a i = j, u
k
= 0 pe suppdλ; i, j = 1, n, k = 1, n. (5.1.7)
Pentru un astfel de sistem are loc teorema generalizat˘ a a lui Pitagora

n
¸
k=1
α
k
u
k

2
=
n
¸
k=1

k
[
2
|u
k
|
2
. (5.1.8)
O consecint ¸˘ a important˘ a a lui (5.1.8) este aceea c˘ a orice sistem ortogonal este liniar indepen-
dent pe suppdλ.
ˆ
Intr-adev˘ ar, dac˘ a membrul stˆ ang al lui (5.1.8) se anuleaz˘ a, atunci s¸i membrul
drept se anuleaz˘ a s¸i deoarece |u
k
|
2
> 0, din ipotez˘ a rezult˘ a α
1
= α
2
= = α
n
= 0.
5.1.2. Ecuat¸iile normale
Suntem acum ˆın m˘ asur˘ a s˘ a rezolv˘ am problema de aproximare ˆın sensul celor mai mici
p˘ atrate. Din (5.1.5) putem scrie p˘ atratul erorii din L
2
sub forma
E
2
[ϕ] := |ϕ −f|
2
= (ϕ −f, ϕ −f) = (ϕ, ϕ) −2(ϕ, f) + (f, f).
ˆ
Inlocuind pe ϕ cu expresia sa din (5.1.2) se obt ¸ine
E
2
[ϕ] =

R

¸
n
¸
j=1
c
j
π
j
(t)
¸

2
dλ(t) −2

R

¸
n
¸
j=1
c
j
π
j
(t)
¸

f(t)dλ(t)+ (5.1.9)
+

R
f
2
(t)dλ(t).
P˘ atratul erorii din L
2
este o funct ¸ie cuadratic˘ a de coeficient ¸ii c
1
, . . . , c
n
ai lui ϕ. Problema
celei mai bune aproximat ¸ii ˆın L
2
revine la a minimiza aceast˘ a funct ¸ie p˘ atratic˘ a; ea se rezolv˘ a
anulˆ and derivatele part ¸iale. Se obt ¸ine

∂c
i
E
2
[ϕ] = 2

R

¸
n
¸
j=1
c
j
π
j
(t)
¸

π
i
(t)dλ(t) −2

R
π
i
(t)f(t)dλ(t) = 0,
adic˘ a
n
¸
j=1

i
, π
j
)c
j
= (π
i
, f), i = 1, 2, . . . , n. (5.1.10)
Aceste ecuat ¸ii se numesc ecuat ¸ii normale pentru problema celor mai mici p˘ atrate. Ele
formeaz˘ a un sistem liniar de forma
Ac = b, (5.1.11)
5.1. Aproximat ¸ie prin metoda celor mai mici p˘ atrate 159
unde matricea A s¸i vectorul b au elementele
A = [a
ij
], a
ij
= (π
i
, π
j
), b = [b
i
], b
i
= (π
i
, f). (5.1.12)
Datorit˘ a simetriei produsului scalar, A este o matrice simetric˘ a. Mai mult, A este pozitiv
definit˘ a, adic˘ a
x
T
Ax =
n
¸
i=1
n
¸
j=1
a
ij
x
i
x
j
> 0 dac˘ a x = [0, 0, . . . , 0]
T
. (5.1.13)
Funct ¸ia (5.1.13) se numes¸te form˘ a p˘ atratic˘ a (deoarece este omogen˘ a de grad 2). Pozitiv
definirea lui A ne spune c˘ a forma p˘ atratic˘ a ai c˘ arei coeficient ¸i sunt elementele lui A este
ˆıntotdeauna nenegativ˘ a s¸i zero numai dac˘ a variabilele x
i
se anuleaz˘ a.
Pentru a demonstra (5.1.13) s˘ a inser˘ am definit ¸ia lui a
ij
s¸i s˘ a utiliz˘ am propriet˘ at ¸ile (i)-(iv)
ale produsului scalar
x
T
Ax =
n
¸
i=1
n
¸
j=1
x
i
x
j

i
, π
j
) =
n
¸
i=1
n
¸
j=1
(x
i
π
i
, x
j
π
j
) =

n
¸
i=1
x
i
π
i

2
.
Aceasta este evident nenegativ˘ a. Ea este zero numai dac˘ a
¸
n
i=1
x
i
π
i
≡ 0 pe suppdλ, care pe
baza liniar independent ¸ei lui π
i
implic˘ a x
1
= x
2
= = x
n
= 0.
Este un rezultat cunoscut din algebra liniar˘ a c˘ a o matrice A simetric˘ a pozitiv definit˘ a este
nesingular˘ a.
ˆ
Intr-adev˘ ar, determinantul s˘ au, precum s¸i minorii principali sunt strict pozitivi.
Rezult˘ a c˘ a sistemul de ecuat ¸ii normale (5.1.10) are solut ¸ie unic˘ a. Corespunde aceast˘ a solut ¸ie
minimului lui E[ϕ] ˆın (5.1.9)? Matricea hessian˘ a H = [∂
2
E
2
/∂c
i
∂c
j
] trebuie s˘ a fie pozitiv
definit˘ a. Dar H = 2A, deoarece E
2
este o funct ¸ie cuadratic˘ a. De aceea, H, ca s¸i A, este
ˆıntr-adev˘ ar pozitiv definit˘ a s¸i solut ¸ia ecuat ¸iilor normale ne d˘ a minimul dorit. Problema de
aproximare ˆın sensul celor mai mici p˘ atrate are o solut ¸ie unic˘ a, dat˘ a de
´ ϕ(t) =
n
¸
j=1
´c
j
π
j
(t) (5.1.14)
unde ´c = [´c
1
, ´c
2
, . . . , ´c
n
]
T
este vectorul solut ¸ie al ecuat ¸iilor normale (5.1.10). Aceasta re-
zolv˘ a problema de aproximare ˆın sensul celor mai mici p˘ atrate complet ˆın teorie, dar nu s¸i ˆın
practic˘ a. Referitor la o mult ¸ime general˘ a de funct ¸ii de baz˘ a liniar independente, pot ap˘ area
urm˘ atoarele dificult˘ at ¸i:
(1) Sistemul de ecuat ¸ii normale (5.1.10) poate fi prost condit ¸ionat. Un exemplu simplu
este urm˘ atorul: suppdλ = [0, 1], dλ(t) = dt pe [0, 1] s¸i π
j
(t) = t
j−1
, j = 1, 2, . . . , n.
Atunci

i
, π
j
) =

1
0
t
i+j−2
dt =
1
i +j −1
, i, j = 1, 2, . . . , n,
adic˘ a matricea A este matricea Hilbert. Prost condit ¸ionarea ecuat ¸iilor normale se datoreaz˘ a
alegerii neinspirate a funct ¸iilor de baz˘ a. Acestea devin aproape liniar dependente cˆ and ex-
ponentul cres¸te. O alt˘ a surs˘ a de degradare provine din elementele membrului drept b
j
=
160 Aproximarea funct ¸iilor

1
0
π
j
(t)f(t)dt. Cˆ and j este mare π
j
(t) = t
j−1
se comport˘ a pe [0, 1] ca o funct ¸ie discon-
tinu˘ a. Un polinom care oscileaz˘ a mai rapid pe [0, 1] ar fi de preferat, c˘ aci ar angaja mai
viguros funct ¸ia f.
(2) Al doilea dezavantaj este faptul c˘ a tot ¸i coeficient ¸ii ´c
j
din (5.1.14) depind de n, adic˘ a
´c
j
= ´c
(n)
j
, j = 1, 2, . . . , n. M˘ arirea lui n ne d˘ a un nou sistem de ecuat ¸ii mai mare s¸i cu o
solut ¸ie complet diferit˘ a. Acest fenomen se numes¸te nepermanent ¸a coeficient ¸ilor ´c
j
.
Amˆ andou˘ a neajunsurile (1) s¸i (2) pot fi eliminate (sau m˘ acar atenuate) alegˆ and ca funct ¸ii
de baz˘ a un sistem ortogonal,

i
, π
j
) = 0 dac˘ a i = j (π
i
, π
j
) = |π
j
|
2
> 0. (5.1.15)
Atunci sistemul de ecuat ¸ii normale devine diagonal s¸i poate fi rezolvat imediat cu formula
´c
j
=

j
, f)

j
, π
j
)
, j = 1, 2, . . . , n. (5.1.16)
Evident, aces¸ti coeficient ¸i ´c
j
sunt independent ¸i de n s¸i odat˘ a calculat ¸i r˘ amˆ an la fel pentru
orice n mai mare. Avem acum proprietatea de permanent ¸˘ a a coeficient ¸ilor. De asemenea nu
trebuie s˘ a rezolv˘ am sistemul de ecuat ¸ii normale, ci putem aplica direct (5.1.16). Aceasta nu
ˆınseamn˘ a c˘ a nu sunt probleme numerice ˆın (5.1.16).
ˆ
Intr-adev˘ ar, numitorul |π
j
|
2
cres¸te odat˘ a
cu j, ˆın timp ce integrala de la num˘ ar˘ ator (sau termenii individuali ˆın cazul discret) au acelas¸i
ordin de m˘ arime ca s¸i f. De aceea ne as¸tept˘ am ca valorile ´c
j
ale coeficient ¸ilor s˘ a descreasc˘ a
rapid. Din acest motiv pot s˘ a apar˘ a erori de anulare atunci cˆ and se calculeaz˘ a produsul scalar
de la num˘ ar˘ ator. Problemele de anulare pot fi ocolite ˆıntr-o oarecare m˘ asur˘ a calculˆ and ´c
j
ˆın
forma alternativ˘ a
´c
j
=
1

j
, π
j
)

f −
j−1
¸
k=1
c
k
π
k
, π
j

, j =, 1, 2, . . . , n, (5.1.17)
unde suma vid˘ a (cˆ and j = 1) se ia egal˘ a cu zero. Evident din ortogonalitatea lui π
j
, (5.1.17)
este echivalent˘ a cu (5.1.16) din punct de vedere matematic, dar nu neap˘ arat s¸i numeric.
D˘ am un algoritm care calculeaz˘ a ´c
j
cu (5.1.17), dar ˆın acelas¸i timp s¸i
´ ϕ(t):
s
0
:= 0;
for j = 1, 2, . . . , n do
´c
j
:=
1

j
|
2
(f −s
j−1
, π
j
);
s
j
:= s
j−1
+´c
j
π
j
(t).
end for
Orice sistem¦´ π
j
¦ care este liniar independent pe suppdλ poate fi ortogonalizat (ˆın raport
cu m˘ asura dλ) prin procedeul Gram-Schmidt. Se ia
π
1
= ´ π
1
s¸i apoi, pentru j = 2, 3, . . . se calculeaz˘ a recursiv
π
j
= ´ π
j

j−1
¸
k=1
c
k
π
k
, c
k
=
(´ π
j
, π
k
)

k
, π
k
)
, k = 1, j −1.
5.1. Aproximat ¸ie prin metoda celor mai mici p˘ atrate 161
Atunci fiecare π
j
astfel determinat este ortogonal pe toate funct ¸iile precedente.
5.1.3. Eroarea ˆın metoda celor mai mici p˘ atrate. Convergent ¸a
Am v˘ azut c˘ a dac˘ a Φ = Φ
n
const˘ a din n funct ¸ii π
j
, j = 1, 2, . . . , n care sunt liniar
independente pe suppdλ, atunci problema de aproximare ˆın sensul celor mai mici p˘ atrate
pentru dλ
min
ϕ∈φn
|f −ϕ|
2,d
λ
= |f − ´ ϕ|
2,d
λ
(5.1.18)
are o solut ¸ie unic˘ a ´ ϕ = ´ ϕ
n
, dat˘ a de (5.1.14). Exist˘ a multe moduri de a selecta baza ¦π
j
¦ a
lui Φ
n
s¸i de aceea mai multe moduri de a reprezenta solut ¸ia, care conduc totus¸i la aceeas¸i
funct ¸ie. Eroarea ˆın sensul celor mai mici p˘ atrate – cantitatea din dreapta relat ¸iei (5.1.18) –
este independent˘ a de alegerea funct ¸iilor de baz˘ a (des¸i calculul solut ¸iei, as¸a cum s-a ment ¸ionat
anterior, nu este).
ˆ
In studiul acestor erori, putem presupune f˘ ar˘ a a restrˆ ange generalitatea c˘ a
baza π
j
este un sistem ortogonal (fiecare sistem liniar independent poate fi ortogonalizat prin
procedeul Gram-Schmidt). Avem conform (5.1.16)
´ ϕ
n
(t) =
n
¸
j=1
´c
j
π
j
(t), ´c
j
=

j
, f)

j
, π
j
)
. (5.1.19)
Observ˘ amˆıntˆ ai c˘ a eroarea f −ϕ
n
este ortogonal˘ a pe Φ
n
, adic˘ a
(f − ´ ϕ
n
, ϕ) = 0, ∀ ϕ ∈ Φ
n
, (5.1.20)
unde produsul scalar este cel din (5.1.3). Deoarece ϕ este o combinat ¸ie liniar˘ a de π
k
, este
suficient s˘ a ar˘ at˘ am (5.1.20) pentru fiecare ϕ = π
k
, k = 1, 2, . . . , n.
ˆ
Inlocuind ˆ ϕ
n
cu expresia
sa din (5.1.19) ˆın (5.1.20), g˘ asim
(f − ´ ϕ
n
, π
k
) =

¸
f −
n
¸
j=1
´c
j
π
k
, π
k
¸

= (f, π
k
) −´c
k

k
, π
k
) = 0,
ultima ecuat ¸ie rezultˆ and din formula pentru ´c
k
din (5.1.19). Rezultatul din (5.1.20) are o
interpretare geometric˘ a simpl˘ a. Dac˘ a reprezent˘ am funct ¸iile ca vectori s¸i spat ¸iul Φ
n
ca un
plan, atunci pentru orice funct ¸ie f care ˆınt ¸eap˘ a planul Φ
n
, aproximanta ˆın sensul celor mai
mici p˘ atrate ´ ϕ
n
este proiect ¸ia ortogonal˘ a a lui f pe Φ
n
, vezi figura 5.1.
ˆ
In particular, alegˆ and ϕ = ´ ϕ
n
ˆın (5.1.20) obt ¸inem
(f − ´ ϕ
n
, ´ ϕ
n
) = 0
s¸i de aceea, deoarece f = (f − ´ ϕ) + ´ ϕ, conform teoremei lui Pitagora s¸i generaliz˘ arii sale
(5.1.8)
|f|
2
= |f − ´ ϕ|
2
+|´ ϕ|
2
= |f − ´ ϕ
n
|
2
+

n
¸
j=1
´c
j
π
j

2
= |f − ´ ϕ
n
|
2
+
n
¸
j=1
[´c
j
[
2

j
|
2
.
162 Aproximarea funct ¸iilor
n
f
ϕ
O
Figura 5.1: Aproximat ¸ia ˆın sensul celor mai mici p˘ atrate ca proiect ¸ie ortogonal˘ a
Exprimˆ and primul termen din dreapta obt ¸inem
|f − ´ ϕ
n
| =

|f|
2

n
¸
j=1
[´c
j
[|π
j
|
2

1/2
, ´c
j
=

j
, f)

j
, π
j
)
. (5.1.21)
De notat c˘ a expresia dintre acolade trebuie s˘ a fie nenegativ˘ a.
Formula (5.1.21) este de interes teoretic, dar de utilitate practic˘ a limitat˘ a. De notat, ˆıntr-
adev˘ ar, c˘ a pe m˘ asur˘ a ce eroarea se aproprie de nivelul eps al preciziei mas¸inii, calculul erorii
din membrul drept al lui (5.1.21) nu poate produce ceva mai mic decˆ at

eps datorit˘ a erorilor
comise ˆın timpul sc˘ aderilor sub radical (astfel se poate obt ¸ine chiar un rezultat negativ sub
radical). Utilizˆ and ˆın loc definit ¸ia
|f − ´ ϕ
n
| =

R
[f(t) − ´ ϕ
n
(t)]
2
dλ(t)
1
2
,
ˆımpreun˘ a, probabil, cu o regul˘ a de cuadratur˘ a (pozitiv˘ a) potrivit˘ a se garanteaz˘ a c˘ a se produce
un rezultat nenegativ, potent ¸ial la fel de mic ca O(eps).
Dac˘ a se d˘ a acum un s¸ir de spat ¸ii liniare Φ
n
, n = 1, 2, 3, . . . , avem evident
|f − ´ ϕ
1
| ≥ |f − ´ ϕ
2
| ≥ |f − ´ ϕ
3
| ≥ . . . ,
care rezult˘ a nu numai din (5.1.21), dar mai direct din faptul c˘ a
Φ
1
⊂ Φ
2
⊂ Φ
3
⊂ . . . .
Deoarece exist˘ a o infinitate de astfel de spat ¸ii, atunci secvent ¸a de erori din L
2
, fiind monoton
descresc˘ atoare, trebuie s˘ a convearg˘ a la o limit˘ a. Este limita 0? Dac˘ a este as¸a, spunem c˘ a
5.1. Aproximat ¸ie prin metoda celor mai mici p˘ atrate 163
aproximarea prin metoda celor mai mici p˘ atrate converge ˆın medie cˆ and n →∞. Este evident
din (5.1.21) c˘ a o condit ¸ie necesar˘ a s¸i suficient˘ a pentru aceasta este

¸
j=1
[´c
j
[
2

j
|
2
= |f|
2
. (5.1.22)
Un mod echivalent de a formula convergent ¸a este urm˘ atorul: dˆ andu-se f cu |f| < ∞,
adic˘ a ∀ f ∈ L
2

s¸i dˆ andu-se un ε > 0 arbitrar de mic, exist˘ a un ˆıntreg n = n
ε
s¸i o funct ¸ie
ϕ

∈ Φ
n
astfel ˆıncˆ at |f − ϕ

| ≤ ε. O clas˘ a de spat ¸ii Φ
n
avˆ and aceast˘ a proprietate se
numes¸te complet˘ a ˆın raport cu norma | | = | |
2,dλ
. Vom numi relat ¸ia (5.1.22) relat ¸ia
de completitudine. Pentru un interval finit [a, b] putem defini completitudinea lui ¦ϕ
n
¦ de
asemenea pentru norma uniform˘ a | |

pe [a, b]. Se poate presupune c˘ a f ∈ C[a, b] s¸i
π
j
∈ C[a, b] s¸i numim ¦ϕ
n
¦ complet˘ a ˆın norma | |

dac˘ a pentru orice f ∈ C[a, b] s¸i
orice ε > 0 exist˘ a n = n
ε
s¸i un ϕ

∈ Φ
n
astfel ˆıncˆ at |f − ϕ

|

≤ ε. Este us¸or de v˘ azut
c˘ a completitudinea lui ¦ϕ
n
¦ ˆın norma | |

pe (a, b) implic˘ a completitudinea lui ¦ϕ
n
¦ ˆın
norma din L
2
| |
2,dλ
, unde suppdλ = [a, b] s¸i deci convergent ¸a procesului de aproximare
prin metoda celor mai mici p˘ atrate.
ˆ
Intr-adev˘ ar, fie ε > 0 arbitrar s¸i fie n s¸i ϕ

∈ Φ
n
astfel
ˆıncˆ at
|f −ϕ

|


ε

R
dλ(t)

1/2
.
Conform ipotezei, acest lucru este posibil. Atunci
|f −ϕ

|
2,dλ
=

R
[f(t) −ϕ

(t)]
2
dλ(t)

1/2

≤ |f −ϕ

|

R
dλ(t)

1/2


ε

R
dλ(t)

1/2

R
dλ(t)

1/2
= ε,
as¸a cum s-a afirmat.
Exemplul 5.1.1. Φ
n
= P
n−1
. Aici completitudinea lui ¦ϕ
n
¦ ˆın norma | |

(pe un interval
finit [a, b]) este o consecint ¸˘ a a teoremei de aproximare a lui Weierstrass. Astfel aproximat ¸ia
polinomial˘ a ˆın sensul celor mai mici p˘ atrate pe un interval finit converge ˆıntotdeauna (ˆın
medie). ♦
5.1.4. Exemple de sisteme ortogonale
Unul dintre cele mai utilizate sisteme este sistemul trigonometric cunoscut din analiza
Fourier. Un alt sistem larg utilizat este cel al polinoamelor ortogonale.
(1) Sistemul trigonometric este format din funct ¸iile:
1, cos t, cos 2t, cos 3t, . . . , sin t, sin 2t, sin3t, . . .
164 Aproximarea funct ¸iilor
El este ortogonal pe [0, 2π] ˆın raport cu m˘ asura
dλ(t) =

dt pe [0, 2π]
0 ˆın rest
Avem


0
sin kt sinℓtdt =

0, pentru k = ℓ
π, pentru k = ℓ
k, ℓ = 1, 2, 3, . . .


0
cos kt cos ℓtdt =

0, k = ℓ
2π, k = ℓ = 0
π, k = ℓ > 0
k, ℓ = 0, 1, 2 . . .


0
sin kt cos ℓtdt = 0, k = 1, 2, 3, . . . , ℓ = 0, 1, 2, . . .
Aproximarea are forma
f(t) =
a
0
2
+

¸
k=1
(a
k
cos kt +b
k
sin kt). (5.1.23)
Utilizˆ and (5.1.16) obt ¸inem
a
k
=
1
π


0
f(t) cos ktdt, k = 1, 2, . . .
b
k
=
1
π


0
f(t) sin ktdt, k = 1, 2, . . . (5.1.24)
numit ¸i coeficient ¸i Fourier ai lui f. Ei sunt coeficient ¸ii (5.1.16) pentru sistemul trigonometric.
Prin extensie coeficient ¸ii (5.1.16) pentru orice sistem ortogonal (π
j
) se vor numi coeficient ¸ii
Fourier ai lui f relativ la acest sistem.
ˆ
In particular, recunoas¸tem ˆın seria Fourier trunchiat˘ a
pentru k = mcea mai bun˘ a aproximare a lui f din clasa polinoamelor trigonometrice de grad
≤ n relativ la norma
|u|
2
=


0
[u(t)[
2
dt
1/2
.
(2) Polinoame ortogonale. Dˆ andu-se o m˘ asur˘ a dλ, s¸tim c˘ a orice sistem finit de puteri
1, t, t
2
, . . . este liniar independent pe [a, b], dac˘ a suppdλ = [a, b], iar 1, t, . . . , t
n−1
este
liniar independent pe suppdλ = ¦t
1
, t
2
, . . . , t
N
¦. Deoarece o mult ¸ime de vectori liniar
independent ¸i a unui spat ¸iu liniar poate fi ortogonalizat˘ a prin procedeul Gram-Schmidt, orice
m˘ asur˘ a dλ de tipul considerat genereaz˘ a o mult ¸ime unic˘ a de polinoame monice π
j
(t, dλ),
j = 0, 1, 2, . . . , ce satisfac
gradπ
j
= j, j = 0, 1, 2, . . .

R
π
k
(t)π

(t)dλ(t) = 0, dac˘ a k = ℓ.
(5.1.25)
5.1. Aproximat ¸ie prin metoda celor mai mici p˘ atrate 165
Aceste polinoame se numesc polinoame ortogonale relativ la m˘ asura dλ. Vom permite indi-
cilor s˘ a mearg˘ a de la 0. Mult ¸imea ¦π
j
¦ este infinit˘ a dac˘ a suppdλ = [a, b] s¸i const˘ a din exact
N polinoame π
0
, π
1
, . . . , π
N−1
dac˘ a suppdλ = ¦t
1
, . . . , t
N
¦.
ˆ
In ultimul caz polinoamele se
numesc polinoame ortogonale discrete.
ˆ
Intre trei polinoame ortogonale monice
2
consecutive exist˘ a o relat ¸ie liniar˘ a. Mai exact,
exist˘ a constantele reale α
k
= α
k
(dλ) s¸i β
k
= β
k
(dλ) > 0 (depinzˆ and de m˘ asura dλ) astfel
ˆıncˆ at
π
k+1
(t) = (t −α
k

k
(t) −β
k
π
k−1
(t), k = 0, 1, 2, . . .
π
−1
(t) = 0, π
0
(t) = 1.
(5.1.26)
(Se subˆınt ¸elege c˘ a (5.1.26) are loc pentru orice k ∈ N dac˘ a suppdλ = [a, b] s¸i numai pentru
k = 0, N −2 dac˘ a suppdλ = ¦t
1
, t
2
, . . . , t
N
¦).
Pentru a demonstra (5.1.26) s¸i a obt ¸ine expresiile coeficient ¸ilor s˘ a observ˘ am c˘ a
π
k+1
(t) −tπ
k
(t)
este un polinom de grad ≤ k, s¸i deci poate fi exprimat ca o combinat ¸ie liniar˘ a a lui
π
0
, π
1
, . . . , π
k
. Scriem aceast˘ a combinat ¸ie sub forma
π
k+1
−tπ
k
(t) = −α
k
π
k
(t) −β
k
π
k−1
(t) +
k−2
¸
j=0
γ
k,j
π
j
(t) (5.1.27)
(sumele vide se consider˘ a nule).
ˆ
Inmult ¸im scalar ambii membri ai relat ¸iei anterioare cu π
k
s¸i
obt ¸inem
(−tπ
k
, π
k
) = −α
k

k
, π
k
),
adic˘ a
α
k
=
(tπ
k
, π
k
)

k
, π
k
)
, k = 0, 1, 2, . . . (5.1.28)
La fel, ˆınmult ¸ind scalar cu π
k−1
obt ¸inem
(−tπ
k
, π
k−1
) = −β
k

k−1
, π
k−1
).
Deoarece (tπ
k
, π
k−1
) = (π
k
, tπ
k−1
) s¸i tπ
k−1
difer˘ a de π
k
printr-un polinom de grad < k se
obt ¸ine prin ortogonalitate (tπ
k
, π
k−1
) = (π
k
, π
k
), deci
β
k
=

k
, π
k
)

k−1
, π
k−1
)
, k = 1, 2, . . . (5.1.29)
ˆ
Inmult ¸ind (5.1.27) cu π

, ℓ < k −1, se obt ¸ine
γ
k,ℓ
= 0, ℓ = 0, 1, . . . , k −1. (5.1.30)
Formula de recurent ¸˘ a (5.1.26) ne d˘ a o modalitate practic˘ a de determinare a polinoamelor
ortogonale. Deoarece π
0
= 1, putem calcula α
0
cu (5.1.28) pentru k = 0. Se continu˘ a apoi
cu π
1
, utilizˆ and (5.1.26) pentru k = 0. Mai departe, utilizˆ and alternativ (5.1.28), (5.1.29)
2
Un polinom se numes¸te monic dac˘ a coeficientul s˘ au dominant este 1.
166 Aproximarea funct ¸iilor
s¸i (5.1.26) putem calcula cˆ ate polinoame ortogonale dorim. Procedeul – numit procedura
lui Stieltjes
3
– este foarte potrivit pentru polinoame ortogonale discrete, c˘ aci ˆın acest caz
produsul scalar se exprim˘ a prin sume finite.
ˆ
In cazul continuu, calculul produsului scalar
necesit˘ a calcul de integrale, ceea ce complic˘ a lucrurile. Din fericire, pentru multe m˘ asuri
speciale importante, coeficient ¸ii se cunosc explicit. Cazul special cˆ and m˘ asura este simetric˘ a
(adic˘ a dλ(t) = w(t) cu w(−t) = w(t) s¸i suppdλ simetric˘ a fat ¸˘ a de origine) merit˘ a o atent ¸ie
special˘ a deoarece ˆın acest caz α
k
= 0, ∀ k ∈ N, conform lui (5.1.23) c˘ aci
(tπ
k
, π
k
) =

R
w(t)tπ
2
k
(t)dt =

b
a
w(t)tπ
2
k
(t)dt = 0,
deoarece avem o integral˘ a dintr-o funct ¸ie impar˘ a pe un domeniu simetric fat ¸a de origine.
5.1.5. Exemple de polinoame ortogonale
Polinoamele lui Legendre
Se definesc prin as¸a-numita formul˘ a a lui Rodrigues
π
k
(t) =
k!
(2k)!
d
k
dt
k
(t
2
−1)
k
. (5.1.31)
Verific˘ am ˆıntˆ ai ortogonalitatea pe [−1, 1] ˆın raport cu m˘ asura dλ(t) = dt. Pentru orice
0 ≤ ℓ < k, prin integrare repetat˘ a prin p˘ art ¸i se obt ¸ine:

1
−1
t

d
k
dt
k
(t
2
−1)
k
=

¸
m=0
(−1)

ℓ(ℓ −1) . . . (ℓ −m+ 1)t
ℓ−m
d
k−m−1
dt
k−m−1
(t
2
−1)
k

1
−1
= 0, (5.1.32)
ultima relat ¸ie avˆ and loc deoarece 0 ≤ k −m−1 < k. Deci,

k
, p) = 0, ∀p ∈ P
k−1
,
demonstrˆ andu-se astfel ortogonalitatea. Datorit˘ a simetriei, putem scrie
π
k
(t) = t
k

k
t
k−2
+. . . , k ≥ 2
3
Thomas Jan Stieltjes (1856-1894), matematician olandez, a studiat la
Institutul Tehnic din Delft, dar nu s¸i-a luat niciodat˘ a licent ¸a datorit˘ a
aversiunii pe care o avea pentru examene. A lucrat la Observatorul
astronomic din Leyda, ˆın calitate de ,,calculator asistent pentru cal-
cule astronomice”. Lucr˘ arile sale timpurii au atras atent ¸ia lui Hermite,
care i-a asigurat un post universitar la Toulouse. Prietenia lor a fost
exemplar˘ a. Stieltjes este cunoscut pentru lucr˘ arile sale despre fract ¸ii
continue s¸i problema momentelor, ˆın care printre altele a introdus in-
tegrala care ˆıi poart˘ a numele. A murit de tuberculoz˘ a la 38 de ani.
5.1. Aproximat ¸ie prin metoda celor mai mici p˘ atrate 167
s¸i observˆ and (din nou datorit˘ a simetriei) c˘ a relat ¸ia de recurent ¸˘ a are forma
π
k+1
(t) = tπ
k
(t) −β
k
π
k−1
(t),
obt ¸inem
β
k
=

k
(t) −π
k+1
(t)
π
k−1
(t)
,
care este valabil˘ a pentru orice t. F˘ acˆ and t →∞,
β
k
= lim
t→∞

k
(t) −π
k+1
(t)
π
k−1
(t)
= lim
t→∞

k
−µ
k+1
)t
k−1
+. . .
t
k−1
+. . .
= µ
k
−µ
k+1
.
(Dac˘ a k = 1, punem µ
1
= 0.) Din formula lui Rodrigues rezult˘ a
π
k
(t) =
k!
(2k)!
d
k
dt
k

t
2k
−kt
2k−2
+. . .

=
k!
(2k)!
(2k(2k −1) . . . (k + 1)t
k
−k(2k −2)(2k −3) . . . (k −1)t
k−1
+. . . )
= t
k

k(k −1)
2(2k −1)
t
k−2
+. . . ,
as¸a c˘ a
µ
k
=
k(k −1)
2(2k −1)
, k ≥ 2.
Deci,
β
k
= µ
k
−µ
k+1
=
k
2
(2k −1)(2k + 1)
s¸i deoarece µ
1
= 0,
β
k
=
1
4 −k
−2
, k ≥ 1. (5.1.33)
Sursa MATLAB 5.3 calculeaz˘ a aproximanta Legendre de grad n ˆın sensul celor mai mici
p˘ atrate. Se calculez˘ a ˆıntˆ ai coeficient ¸ii aproximantei Legendre cu formula (5.1.16) s¸i ˆın final se
evalueaz˘ a aproximanta astfel obt ¸inut˘ a. Funct ¸ia vLegendre (sursa 5.1) calculeaz˘ a valoarea
polinomului Legendre de grad dat pe nis¸te puncte date. Pentru calculul produselor scalare s-a
utilizat funct ¸ia quadl.
ˆ
In figura 5.2 apar graficele polinoamelor Legendre de grad k, k = 1, 4. Ele au fost
obt ¸inute cu script-ul graphLegendre.m:
%grafice polinoame Legendre
n=4; clf
t=(-1:0.01:1)’;
s=[];
ls={’:’,’-’,’--’,’-.’};
lw=[1.5,0.5,0.5,0.5];
for k=1:n
168 Aproximarea funct ¸iilor
−1 −0.8 −0.6 −0.4 −0.2 0 0.2 0.4 0.6 0.8 1
−1
−0.8
−0.6
−0.4
−0.2
0
0.2
0.4
0.6
0.8
1
t
L
k
polinoame Legendre
n=1
n=2
n=3
n=4
L
k+1
(t) = tL
k
(t) −
1
4−k
−2
L
k−1
(t)
Figura 5.2: Polinoame Legendre
y=vLegendre(t,k);
s=[s;strcat(’\itn=’,int2str(k))];
plot(t,y,’LineStyle’,ls{k},’Linewidth’,lw(k),’Color’,’k’);
hold on
end
legend(s,4)
xlabel(’t’,’FontSize’,12,’FontAngle’,’italic’)
ylabel(’L_k’,’FontSize’,12,’FontAngle’,’italic’)
title(’polinoame Legendre’,’Fontsize’,14);
text(-0.65,0.8,...
’$L_{k+1}(t)=tL_k(t)-\frac{1}{4-kˆ{-2}}L_{k-1}(t)$’,...
’FontSize’,14,’FontAngle’,’italic’,’Interpreter’,’LaTeX’)
Remarcat ¸i folosirea ˆın comanda text a comenzilor L
A
T
E
X pentru scrierea mai elegant˘ a a
relat ¸iei de recurent ¸˘ a.
5.1. Aproximat ¸ie prin metoda celor mai mici p˘ atrate 169
Sursa MATLAB 5.1 Calculul polinoamelor Legendre cu relat ¸ia de recurent ¸˘ a
function vl=vLegendre(x,n)
%VLEGENDRE - valoarea polinomului Legendre
%apel vl=vLegendre(x,n)
%x - punctele
%n - gradul
%vl - valoarea
pnm1 = ones(size(x));
if n==0, vl=pnm1; return; end
pn = x;
if n==1, vl=pn; return; end
for k=2:n
vl=x.
*
pn-1/(4-(k-1)ˆ(-2)).
*
pnm1;
pnm1=pn; pn=vl;
end
Sursa MATLAB 5.2 Calculul coeficient ¸ilor Legendre
function c=coeffLegendre(f,n)
%COEFFLEGENDRE - coeficientii aproximantei mcmmp Legendre
%apel c=coefLegendre(f,n)
%f - functia
%n - gradul
n3=2;
for k=0:n
if k>0, n3=n3
*
kˆ2/(2
*
k-1)/(2
*
k+1); end
c(k+1)=quadl(@fleg,-1,1,1e-12,0,f,k)/n3;
end
%subfunctii
function y=fleg(x,f,k)
y=f(x).
*
vLegendre(x,k);
Sursa MATLAB 5.3 Aproximare ˆın sensul celor mai mici p˘ atrate cu polinoame Legendre
function y=approxLegendre(f,x,n)
%APPROXLEGENDRE - aproximare continua mcmmp Legendre
%apel y=approxLegendre(f,x,n)
%f - functia
%x - punctele
%n - gradul
c=coeffLegendre(f,n);
y=evalaprLegendre(c,x);
170 Aproximarea funct ¸iilor
function y=evalaprLegendre(c,x)
%EVALAPRLEGENDRE - evaluare aproximanta Legendre mcmmp
y=zeros(size(x));
for k=1:length(c)
y=y+c(k)
*
vLegendre(x,k-1);
end
Polinoamele Cebˆıs¸ev de spet¸a I
Polinoamele lui Cebˆıs¸ev
4
de spet ¸a I se pot defini prin relat ¸ia
T
n
(x) = cos(narccos x), n ∈ N. (5.1.34)
Din identitatea trigonometric˘ a
cos(k + 1)θ + cos(k −1)θ = 2 cos θ cos kθ
s¸i din (5.1.34), punˆ and θ = arccos x se obt ¸ine
T
k+1
(x) = 2xT
k
(x) − T
k−1
(x) k = 1, 2, 3, . . .
T
0
(x) = 1, T
1
(x) = x.
(5.1.35)
De exemplu
T
2
(x) = 2x
2
−1,
T
3
(x) = 4x
3
−3x,
T
4
(x) = 8x
4
−8x
2
+ 1
s¸.a.m.d.
Din relat ¸ia (5.1.35) se obt ¸ine pentru coeficientul dominant al lui T
n
valoarea 2
n−1
(dac˘ a
n ≥ 1), deci polinomul Cebˆıs¸ev de spet ¸a I monic este

T
n
(x) =
1
2
n−1
T
n
(x), n ≥ 0,

T
0
= T
0
. (5.1.36)
4
Pafnuti Levovici Cebˆıs¸ev (1821-1894), matematician rus, cel mai im-
portant reprezentant al s¸colii matematice din Sankt Petersburg. A avut
contribut ¸ii de pionierat ˆın domeniul teoriei numerelor, calculului prob-
abilit˘ at ¸ilor s¸i teoriei aproxim˘ arii. Este considerat fondatorul teoriei
constructive a funct ¸iilor, dar a lucrat s¸i ˆın domeniul mecanicii s¸i al
balisticii.
5.1. Aproximat ¸ie prin metoda celor mai mici p˘ atrate 171
Din (5.1.34) se pot obt ¸ine r˘ ad˘ acinile lui T
n
x
(n)
k
= cos θ
(n)
k
, θ
(n)
k
=
2k −1
2n
π, k = 1, n. (5.1.37)
Ele sunt proiect ¸iile pe axa real˘ a ale punctelor de pe cercul unitate de argument θ
(n)
k
; figura
5.3 ilustreaz˘ a acest lucru pentru n=4.
θ
1
θ
2
θ
3
θ
4
Figura 5.3: Polinomul Cebˆıs¸ev T
4
s¸i r˘ ad˘ acinile sale
Pe intervalul [−1, 1] T
n
oscileaz˘ a de la +1 la -1, atingˆ and aceste valori extreme ˆın punctele
y
(n)
k
= cos η
(n)
k
, η
(n)
k
=

n
, k = 0, n.
ˆ
In figura 5.4 apar graficele unor polinoame Cebˆıs¸ev de spet ¸a I.
Polinoamele Cebˆıs¸ev de spet ¸a I sunt ortogonale ˆın raport cu m˘ asura
dλ(x) =
dx

1 −x
2
, pe [−1, 1].
Se verific˘ a us¸or din (5.1.34) c˘ a

1
−1
T
k
(x)T

(x)
dx

1 −x
2
=

π
0
T
k
(cos θ)T

(cos θ)dθ
=

π
0
cos kθ cos ℓθdθ =

0 dac˘ a k = ℓ
π dac˘ a k = ℓ = 0
π/2 dac˘ a k = ℓ = 0
(5.1.38)
172 Aproximarea funct ¸iilor
−1 −0.8 −0.6 −0.4 −0.2 0 0.2 0.4 0.6 0.8 1
−2
−1.5
−1
−0.5
0
0.5
1
1.5
2
2.5
3
T
3
(x)
T
4
(x)
T
7
(x)
T
8
(x)
Figura 5.4: Polinoamele Cebˆıs¸ev T
3
, T
4
, T
7
, T
8
pe [-1,1]
Dezvoltarea ˆın serie Fourier de polinoame Cebˆıs¸ev este dat˘ a de
f(x) =

¸

j=0
c
j
T
j
(x) :=
1
2
c
0
+

¸
j=1
c
j
T
j
(x), (5.1.39)
unde
c
j
=
2
π

1
−1
f(x)T
j
(x)
dx

1 −x
2
, j ∈ N.
P˘ astrˆ and ˆın (5.1.39) numai termenii de grad cel mult n se obt ¸ine o aproximare polinomial˘ a
util˘ a de grad n
τ
n
(x) =
n
¸

j=0
c
j
T
j
(x) :=
c
0
2
+
n
¸
j=1
c
j
T
j
(x), (5.1.40)
avˆ and eroarea
f(x) −τ
n
(x) =

¸
j=n+1
c
j
T
j
(x) ≈ c
n+1
T
n+1
(x). (5.1.41)
Aproximanta din (5.1.40) este cu atˆ at mai bun˘ a cu cˆ at coeficient ¸ii din extremitatea dreapt˘ a
tind mai repede c˘ atre zero. Eroarea (5.1.41) oscileaz˘ a ˆın esent ¸˘ a ˆıntre +c
n+1
s¸i −c
n+1
s¸i este
deci de m˘ arime ,,uniform˘ a“. Acest lucru contrasteaz˘ a puternic cu dezvoltarea Taylor ˆın jurul
lui x = 0, unde polinomul de grad n are eroarea proport ¸ional˘ a cu x
n+1
pe [−1, 1].
5.1. Aproximat ¸ie prin metoda celor mai mici p˘ atrate 173
ˆ
In raport cu produsul scalar
(f, g)
T
:=
n+1
¸
k=1
f(ξ
k
)g(ξ
k
), (5.1.42)
unde ¦ξ
1
, . . . , ξ
n+1
¦ este mult ¸imea zerourilor lui T
n+1
, are loc urm˘ atoarea proprietate de
ortogonalitate discret˘ a
(T
i
, T
j
)
T
=

0, i = j
n+1
2
, i = j = 0
n + 1, i = j = 0
.
ˆ
Intr-adev˘ ar, avem arccos ξ
k
=
2k−1
2n+2
π, k = 1, n + 1. S˘ a calcul˘ am acum produsul scalar:
(T
i
, T
j
)
T
= (cos i arccos t, cos j arccos t)
T
=
=
n+1
¸
k=1
cos(i arccos ξ
k
) cos(j arccos ξ
k
) =
=
n+1
¸
k=1
cos

i
2k −1
2(n + 1)
π

cos

j
2k −1
2(n + 1)
π

=
=
1
2
n+1
¸
k=1
¸
cos(i +j)
2k −1
2(n + 1)
π + cos(i −j)
2k −1
2(n + 1)
π

=
=
1
2
n+1
¸
k=1
cos(2k −1)
i +j
2(n + 1)
π +
1
2
n+1
¸
k=1
cos(2k −1)
i −j
2(n + 1)
π.
Not˘ am α :=
i+j
2(n+1)
π, β :=
i−j
2(n+1)
π s¸i
S
1
:=
1
2
n+1
¸
k=1
cos(2k −1)α,
S
2
:=
1
2
n+1
¸
k=1
cos(2k −1)β.
Deoarece
2 sinαS
1
= sin 2(n + 1)α,
2 sinβS
2
= sin 2(n + 1)β,
se obt ¸ine S
1
= 0 s¸i S
2
= 0.
ˆ
In raport cu produsul scalar
(f, g)
U
:=
1
2
f(η
0
)g(η
0
) +f(η
1
)g(η
1
) + +f(η
n−1
)g(η
n−1
) +
1
2
f(η
n
)g(η
n
)
=
n
¸
k=0
′′
f(η
k
)g(η
k
),
(5.1.43)
174 Aproximarea funct ¸iilor
unde ¦η
0
, . . . , η
n
¦ este mult ¸imea extremelor lui T
n
, are loc o proprietate similar˘ a
(T
i
, T
j
)
U
=

0, i = j
n
2
, i = j = 0
n, i = j = 0
.
ˆ
In sursa MATLAB5.4 se calculeaz˘ a aproximanta continu˘ a ˆın sensul celor mai mici p˘ atrate
de grad n cu polinoame Cebˆıs¸ev de spet ¸a I. Se procedeaz˘ a la fel ca la aproximarea Legendre.
Pentru a evita la calculul coeficient ¸ilor c
k
= (f, T
k
) aproximarea unor integrale improprii de
forma
c
k
=
2
π

1
−1
1

1 −x
2
f(x) cos(k arccos x) dx,
s-a efectuat schimbarea de variabil˘ a u = arccos x. Astfel, formula pentru c
k
devine
c
k
=
2
π

π
0
f(cos u) cos ku du.
Sursa 5.5 calculeaz˘ a valorile polinomului Cebˆıs¸ev de spet ¸a I de grad n ˆın nis¸te puncte date,
Sursa MATLAB 5.4 Aproximare ˆın sensul celor mai mici p˘ atrate cu polinoame Cebˆıs¸ev de
spet ¸a I
function y=approxChebyshev(f,x,n)
%APPROXCHEBYSHEV - aproximare continua mcmmp Cebisev #1
%apel Y=APPROXCHEBYSHEV(F,X)
%F - functia
%X - punctele
%N - gradul
%Y - valorile aproximantei
c=coeffChebyshev(f,n);
y=evalChebyshev(c,x);
function y=evalChebyshev(c,x)
%EVALCHEBYSHEV - evaluare aproximanta Cebisev mcmmp
y=c(1)/2
*
ones(size(x));
for k=1:length(c)-1
y=y+c(k+1)
*
vChebyshev(x,k);
end
iar sursa 5.6 obt ¸ine coeficient ¸ii Fourier ai aproxim˘ arii ˆın serie Fourier de polinoame Cebˆıs¸ev.
Funct ¸ia pentru calculul aproximantei discrete corespunz˘ atoare produsului scalar 5.1.42 se
d˘ a ˆın sursa 5.7. O astfel de aproximant ¸ie este foarte util˘ a ˆın probleme practice, iar precizia
nu este cu mult mai mic˘ a decˆ at cea a aproximat ¸iei continue; ˆın plus este mult mai simplu de
calculat deoarece nu este nevoie de aproxim˘ ari de integrale (produsele scalare devin sume
finite discrete, vezi sursa 5.8).
Dintre toate polinoamele monice de grad n,

T
n
are norma uniform˘ a cea mai mic˘ a.
5.1. Aproximat ¸ie prin metoda celor mai mici p˘ atrate 175
Sursa MATLAB 5.5 Calculul polinoamelor Cebˆıs¸ev de spet ¸a I cu relat ¸ia de recurent ¸˘ a
function y=vChebyshev(x,n)
%VCHEBYSHEV - calculul valorilor polinomului Cebisev
%apel Y=VCHEBYSHEV(X,N)
%X - punctele
%N - gradul
%Y - valorile polinomului Cebisev
pnm1=ones(size(x));
if n==0, y=pnm1; return; end
pn=x;
if n==1, y=pn; return; end
for k=2:n
y=2
*
x.
*
pn-pnm1;
pnm1=pn;
pn=y;
end
Sursa MATLAB 5.6 Aproximare ˆın sensul celor mai mici p˘ atrate cu polinoame Cebˆıs¸ev de
spet ¸a I – continuare: calculul coeficient ¸ilor Fourier
function c=coefceb(f,n,p)
%COEFCEB - coeficienti Cebisev mcmmp
%apel c=coefceb(f,n,p)
%f - functia
%n - gradul
%p - tabela coeficientilor
if nargin < 3
p=polceb(n);
end
for k=1:n+1
c(k)=2/pi
*
quadl(@fceb,0,pi,1e-10,0,f,k-1);
end
%subfunctie
function y=fceb(x,f,k)
y=cos(k
*
x).
*
f(cos(x));
176 Aproximarea funct ¸iilor
Sursa MATLAB 5.7 Aproximant˘ a Cebˆıs¸ev discret˘ a
function y=approxChebyshevdiscr(f,x,n)
%APPROXCHEBYSHEVDISCR - aproximare discreta mcmmp Cebisev #1
%apel y=approxChebyshevdiscr(f,x,n)
%f - functia
%x - punctele
%n - gradul
c=coeffChebyshevdiscr(f,n);
y=evalChebyshev(c,x);
Sursa MATLAB 5.8 Coeficient ¸ii aproximantei Cebˆıs¸ev discrete
function c=coeffChebyshevdiscr(f,n)
%COEFFCHEBYSHEVDISCR - coeficienti Cebisev mcmmp discreti
%apel c=coeffChebyshevdiscr(f,n)
%f - functia
%n - gradul
xi=cos((2
*
[1:n+1]-1)
*
pi/(2
*
n+2));
y=f(xi)’;
for k=1:n+1
c(k)=2/(n+1)
*
vChebyshev(xi,k-1)
*
y;
end
Teorema 5.1.2 (Cebˆıs¸ev). Pentru orice polinom monic

p
n
de grad n are loc
max
−1≤x≤1


p
n
(x)

≥ max
−1≤x≤1


T
n
(x)

=
1
2
n−1
, n ≥ 1, (5.1.44)
unde

T
n
(x) este dat de (5.1.36).
Demonstrat ¸ie. Se face prin reducere la absurd. Presupunem c˘ a
max
−1≤x≤1


p
n
(x)

<
1
2
n−1
. (5.1.45)
Atunci polinomul d
n
(x) =

T
n
(x) −

p
n
(x) (de grad ≤ n −1) satisface
d
n

y
(n)
0

> 0, d
n

y
(n)
1

< 0, d
n

y
(n)
2

> 0, . . . , (−1)
n
d
n

y
(n)
n

> 0. (5.1.46)
Deoarece d
n
are n schimb˘ ari de semn, el este identic nul; aceasta contrazice (5.1.46) s¸i astfel
(5.1.45) nu poate fi adev˘ arat˘ a.
Rezultatul (5.1.44) se poate interpreta ˆın modul urm˘ ator: cea mai bun˘ a aproximare uni-
form˘ a din P
n−1
pe [−1, 1] a lui f(x) = x
n
este dat˘ a de x
n


T
n
(x), adic˘ a, de agregarea
5.1. Aproximat ¸ie prin metoda celor mai mici p˘ atrate 177
termenilor pˆ an˘ a la gradul n −1 din

T
n
luat ¸i cu semnul minus. Din teoria aproximat ¸iilor uni-
forme se s¸tie c˘ a cea mai bun˘ a aproximare polinomial˘ a uniform˘ a este unic˘ a. Deci, egalitatea
ˆın (5.1.44) poate avea loc numai dac˘ a

p
n
(x) =

T
n
(x).
Polinoamele lui Cebˆıs¸ev de spet¸a a doua
Se definesc prin
Q
n
(t) =
sin[(n + 1) arccos t]

1 −t
2
, t ∈ [−1, 1]
Ele sunt ortogonale pe [−1, 1] ˆın raport cu m˘ asura dλ(t) = w(t)dt, w(t) =

1 −t
2
.
Relat ¸ia de recurent ¸˘ a este
Q
n+1
(t) = 2tQ
n
(t) −Q
n−1
(t), Q
0
(t) = 1, Q
1
(t) = 2t.
Polinoamele lui Laguerre
Polinoamele lui Laguerre
5
sunt ortogonale pe [0, ∞) ˆın raport cu ponderea w(t) = t
α
e
−t
,
α > 1. Se definesc prin
l
α
n
(t) =
e
t
t
−α
n!
d
n
dt
n
(t
n+α
e
−t
).
Relat ¸ia de recurent ¸˘ a pentru polinoame monice
˜
l
α
n
este
˜
l
α
n+1
(t) = (t −α
n
)
˜
l
α
n
(t) −(2n +α + 1)
˜
l
α
n−1
(t),
cu α
0
= Γ(1 +α) s¸i α
k
= k(k + α), pentru k > 0.
Polinoamele lui Hermite
Polinoamele lui Hermite sunt ortogonale pe (−∞, ∞) ˆın raport cu ponderea w(t) = e
−t
2
s¸i se definesc prin
H
n
(t) = (−1)
n
e
t
2 d
n
dt
n
(e
−t
2
).
Relat ¸ia de recurent ¸˘ a pentru polinoamele monice
˜
H
n
(t) este
˜
H
n+1
(t) = t
˜
H
n
(t) −β
n
˜
H
n−1
(t),
cu β
0
=

π s¸i β
k
= k/2, pentru k > 0.
5
Edmond Laguerre (1834-1886) matematician francez, activ ˆın Paris,
cu contribut ¸ii esent ¸iale ˆın geometrie, algebr˘ a s¸i analiz˘ a.
178 Aproximarea funct ¸iilor
Sursa MATLAB 5.9 Test aproximante mcmmp
function [n,erref]=excebc(f,err,proc)
%f - functia
%err - eroarea
%proc - procedeul de aproximare (Legendre, Cebisev
% continuu, Cebisev discret)
x=linspace(-1,1,100); %abscisele
y=f(x); %valorile functiei
n=1;
while 1
ycc=proc(f,x,n); %valorile aproximantei
erref=norm(y-ycc,inf); %eroarea
if norm(y-ycc,inf)<err %succes
return
end
n=n+1;
end
Polinoamele lui Jacobi
Sunt ortogonale pe [−1, 1] ˆın raport cu ponderea w(t) = (1 − t)
α
(1 + t)
β
, α, β > −1.
Pentru relat ¸ia de recurent ¸˘ a vezi observat ¸ia 7.3.5, pagina 280.
Un exemplu ˆın MATLAB
Fie funct ¸ia f : [−1, 1] →R, f(x) = x + sin πx
2
. Vom studia practic urm˘ atoarele aprox-
imante ˆın sensul celor mai mici p˘ atrate: Legendre, Cebˆıs¸ev de spet ¸a I continu˘ a s¸i Cebˆıs¸ev de
spet ¸a I discret˘ a. Pentru ˆınceput vom ˆıncerca s˘ a determin˘ am gradul aproximantei, astfel ca s˘ a
fie atins˘ a o anumit˘ a eroare. Ideea este urm˘ atoarea: vom evalua funct ¸ia s¸i aproximanta pe un
num˘ ar mare de puncte s¸i vom vedea dac˘ a norma | |

a vectorului diferent ¸elor valorilor este
mai mic˘ a decˆ at eroarea prescris˘ a. Dac˘ a da, se returneaz˘ a gradul, iar dac˘ a nu se continu˘ a cu
un n mai mare. Sursa MATLAB 5.9 returneaz˘ a gradul aproximantei s¸i eroarea efectiv˘ a. De
exemplu, pentru o eroare de 10
−3
se obt ¸in urm˘ atoarele rezultate
>> fp=@(x)x+sin(pi
*
x.ˆ2);
>> [n,er]=excebc(fp,1e-3,@approxLegendre)
n =
8
er =
9.5931e-004
>> [n,er]=excebc(fp,1e-3,@approxChebyshev)
n =
8
er =
5.9801e-004
>> [n,er]=excebc(fp,1e-3,@approxChebyshevdiscr)
n =
5.1. Aproximat ¸ie prin metoda celor mai mici p˘ atrate 179
11
er =
6.0161e-004
Programul urm˘ ator (exorthpol.m) calculeaz˘ a coeficient ¸ii s¸i vizualizeaz˘ a cele trei
tipuri de aproximante pentru un grad dat de utilizator:
k=input(’k=’);
fp=inline(’x+sin(pi
*
x.ˆ2)’);
x=linspace(-1,1,100);
y=fp(x);
yle=approxLegendre(fp,x,k);
ycc=approxChebyshev(fp,x,k);
ycd=approxChebyshevdiscr(fp,x,k);
plot(x,y,’:’, x,yle,’--’, x,ycc,’-.’,x,ycd,’-’);
legend(’f’,’Legendre’,’Cebisev continuu’,’Cebisev discret’,4)
title([’k=’,int2str(k)],’Fontsize’,14);
cl=coeffLegendre(fp,k)
ccc=coeffChebyshev(fp,k)
ccd=coeffChebyshevdiscr(fp,k)
Pentru k=3 s¸i k=4 se obt ¸in urm˘ atoarele valori ale coeficient ¸ilor
k=3 cl =
Columns 1 through 3
0.50485459411369 1.00000000000000 0.56690206826580
Column 4
0.00000000000000
ccc =
Columns 1 through 3
0.94400243153647 1.00000000000114 0.00000000000000
Column 4
-0.00000000000000
ccd =
Columns 1 through 3
0.88803168065243 1.00000000000000 0
Column 4
-0.00000000000000
k=4 cl =
Columns 1 through 3
0.50485459411369 1.00000000000000 0.56690206826580
Columns 4 through 5
0.00000000000000 -4.02634086092250
ccc =
Columns 1 through 3
0.94400243153647 1.00000000000114 0.00000000000000
Columns 4 through 5
-0.00000000000000 -0.49940325827041
ccd =
Columns 1 through 3
180 Aproximarea funct ¸iilor
0.94400233847188 1.00000000000000 -0.02739538442025
Columns 4 through 5
-0.00000000000000 -0.49939655365619
Graficele apar ˆın figura 5.5.
−1 −0.8 −0.6 −0.4 −0.2 0 0.2 0.4 0.6 0.8 1
−1
−0.5
0
0.5
1
1.5
2
k=3
f
Legendre
Cebisev continuu
Cebishev discret
(a) k = 3
−1 −0.8 −0.6 −0.4 −0.2 0 0.2 0.4 0.6 0.8 1
−1.5
−1
−0.5
0
0.5
1
1.5
2
k=4
f
Legendre
Cebisev continuu
Cebishev discret
(b) k = 4
Figura 5.5: Aproximante ˆın sensul celor mai mici p˘ atrate de grad k pentru funct ¸ia f :
[−1, 1] →R, f(x) = x + sinπx
2
5.2. Polinoame s¸i potrivirea datelor ˆın MATLAB
MATLAB reprezint˘ a un polinom
p(x) = p
1
x
n
+p
2
x
n−1
+p
n
x +p
n+1
printr-un vector linie p=[p(1) p(2) ...p(n+1)] al coeficient ¸ilor, ordonat ¸i de-
scresc˘ ator dup˘ a puterile variabilei.
S˘ a consider˘ am trei probleme legate de polinoame:
• evaluarea – dˆ andu-se coeficient ¸ii s˘ a se calculeze valoarea polinomului ˆın unul sau mai
multe puncte;
• determinarea r˘ ad˘ acinilor – dˆ andu-se coeficient ¸ii s˘ a se determine r˘ ad˘ acinile polinomu-
lui;
• potrivirea datelor (data fitting) – dˆ andu-se o mult ¸ime de date (x
i
, y
i
)
m
i=1
s˘ a se deter-
mine un polinom (sau o alt˘ a combinat ¸ie de funct ¸ii de baz˘ a) care ,,se potrives¸te” cu
aceste date.
Evaluarea se face cu ajutorul schemei lui Horner, implementat˘ a ˆın MATLAB prin funct ¸ia
polyval.
ˆ
In comanda y=polyval(p,x) x poate fi o matrice, ˆın acest caz evaluarea
f˘ acˆ andu-se element cu element (deci, ˆın sens tablou). Evaluarea ˆın sens matricial, adic˘ a
obt ¸inerea matricei
p(X) = p
1
X
n
+p
2
X
n−1
+p
n
X +p
n+1
,
5.2. Polinoame s¸i potrivirea datelor ˆın MATLAB 181
unde X este o matrice p˘ atratic˘ a se poate face cu comanda Y = polyvalm(p,X).
R˘ ad˘ acinile (reale s¸i complexe) ale polinomului p se pot obt ¸ine cu z = roots(p).
Funct ¸ia poly realizeaz˘ a operat ¸ia invers˘ a, adic˘ a construies¸te polinomul cunoscˆ and r˘ ad˘ acinile.
Ea accept˘ a ca argument s¸i o matrice p˘ atratic˘ a A, caz ˆın care p=poly(A) calculeaz˘ a polino-
mul caracteristic al lui A, adic˘ a det(xI −A).
Funct ¸ia polyder calculeaz˘ a coeficient ¸ii derivatei unui polinom, f˘ ar˘ a a-l evalua.
Ca exemplu, s˘ a consider˘ am polinomul p(x) = x
2
−x −1. R˘ ad˘ acinile lui le obt ¸inem cu
>> p = [1 -1 -1]; z = roots(p)
z =
-0.6180
1.6180
Verific˘ am, ˆın limitele erorilor de rotunjire, c˘ a acestea sunt r˘ ad˘ acinile:
>> polyval(p,z)
ans =
1.0e-015
*
-0.1110
0.2220
Observ˘ am c˘ a p este polinomul caracteristic al unei anumite matrice 2 2
>> A = [0 1; 1 1]; cp = poly(A)
cp =
1.0000 -1.0000 -1.0000
Teorema Cayley-Hamilton ne spune c˘ a orice matrice satisface polinomul s˘ au caracteristic.
Aceasta se verific˘ a ˆın limita erorilor de rotunjire:
>> polyvalm(cp, A)
ans =
1.0e-015
*
0.1110 0
0 0.1110
ˆ
Inmult ¸irea s¸i ˆımp˘ art ¸irea polinoamelor se realizeaz˘ a cu conv s¸i deconv. Sintaxa lui
deconv este [q,r]=deconv(g,h), unde g este deˆımp˘ art ¸itul, h ˆımp˘ art ¸itorul, q cˆ atul s¸i
r restul.
ˆ
In exemplul urm˘ ator vom ˆımp˘ art ¸i x
2
− 2x − x + 2 la x − 2, obt ¸inˆ and cˆ atul x
2
− 1
s¸i restul 0. Polinomul init ¸ial se va obt ¸ine apoi cu conv.
>> g = [1 -2 -1 2]; h=[1 -2];
>> [q,r] = deconv(g,h)
q =
1 0 -1
r =
0 0 0 0
>> conv(h,q)+r
ans =
1 -2 -1 2
182 Aproximarea funct ¸iilor
S˘ a trat˘ am acum problema potrivirii datelor. S˘ a presupunem c˘ a avem m observat ¸ii (y
i
)
m˘ asurate ˆın valorile specificate (t
i
):
y
i
= y(t
i
), i = 1, m.
Modelul nostru este o combinat ¸ie de n funct ¸ii de baz˘ a (π
i
)
y(t) ≈ c
1
π
1
(t, α) + +c
n
π
n
(t, α).
Matricea de proiectare (design matrix) A(α) va fi matricea cu elementele
a
i,j
= π
j
(t
i
, α),
ale c˘ arei elemente pot depinde de α.
ˆ
In notat ¸ie matricial˘ a, modelul se poate exprima ca:
y ≈ A(α)c.
Reziduurile sunt diferent ¸ele dintre valorile observate s¸i cele date de model
r
i
= y
i

n
¸
j=1
c
j
π
j
(t
i
, α)
sau ˆın notat ¸ie matricial˘ a
r = y −A(α)c.
Ne propunem s˘ a minimiz˘ am o anumit˘ a norm˘ a a reziduurilor. Cele mai frecvente alegeri sunt
|r|
2
2
=
m
¸
i=1
r
2
i
sau
|r|
2
2,w
=
m
¸
i=1
w
i
r
2
i
.
O explicat ¸ie intuitiv˘ a, fizic˘ a, a celei de-a doua alegeri ar fi aceea c˘ a anumite observat ¸ii sunt
mai importante decˆ at altele s¸i le vom asocia ponderi, w
i
. De exemplu, dac˘ a la observat ¸ia
i eroarea este aproximativ e
i
, atunci putem alege w
i
= 1/e
i
. Deci, avem de a face cu o
problem˘ a discret˘ a de aproximare ˆın sensul celor mai mici p˘ atrate. Problema este liniar˘ a dac˘ a
nu depinde de α s¸i neliniar˘ a ˆın caz contrar.
Orice algoritm de rezolvare a unei probleme de aproximare ˆın sensul celei mai mici
p˘ atrate f˘ ar˘ a ponderi poate fi utilizat la rezolvarea unei probleme cu ponderi prin scalarea
observat ¸iilor s¸i a matricei de proiectare.
ˆ
In MATLAB aceasta se poate realiza prin
A=diag(w)
*
A
y=diag(w)
*
y
Dac˘ a problema este liniar˘ a s¸i avem mai multe observat ¸ii decˆ at funct ¸ii de baz˘ a, suntem
condus¸i la rezolvarea sistemului supradeterminat (vezi sect ¸iunea 4.7.2)
Ac ≈ y,
5.2. Polinoame s¸i potrivirea datelor ˆın MATLAB 183
pe care ˆıl vom rezolva ˆın sensul celor mai mici p˘ atrate
c = A`y.
Abordarea teoretic˘ a se bazeaz˘ a pe rezolvarea ecuat ¸iilor normale
A
T
Ac = A
T
y.
Dac˘ a funct ¸iile de baz˘ a sunt liniar independente s¸i deci A
T
A nesingular˘ a, solut ¸ia este
c = (A
T
A)
−1
A
T
y,
sau
c = A
+
y,
unde A
+
este pseudo-inversa lui A. Ea se poate calcula cu funct ¸ia MATLAB pinv.
Fie sistemul Ax = b arbitrar. Dac˘ a A este o matrice m n cu m > n s¸i are rangul n,
atunci fiecare din urm˘ atoarele trei instruct ¸iuni
x=A\b
x=pinv(A)
*
b
x=inv(A’
*
A)
*
A’
*
b
calculeaz˘ a aceeas¸i solut ¸ie ˆın sensul celor mai mici p˘ atrate, des¸i operatorul ` o face cel mai
repede.
Totus¸i, dac˘ a A nu are rangul complet, solut ¸ia ˆın sensul celor mai mici p˘ atrate nu este
unic˘ a. Exist˘ a mai mult ¸i vectori care minimizeaz˘ a norma |Ax − b|
2
. Solut ¸ia calculat˘ a cu
x=A`b este o solut ¸ie de baz˘ a; ea are cel mult r componente nenule, unde r este rangul
lui A. Solut ¸ia calculat˘ a cu x=pinv(A)
*
b este solut ¸ia cu norm˘ a minim˘ a (ea minimizeaz˘ a
norm(x)).
ˆ
Incercarea de a calcula o solut ¸ie cu x=inv(A’
*
A)
*
A’
*
b es¸ueaz˘ a dac˘ a A’
*
A
este singular˘ a. Iat˘ a un exemplu care ilustreaz˘ a diversele solut ¸ii. Matricea
A=[1,2,3; 4,5,6; 7,8,9; 10,11,12];
este deficient˘ a de rang. Dac˘ a b=A(:,2), atunci o solut ¸ie evident˘ a a lui A
*
x=b este
x=[0,1,0]’. Nici una dintre abord˘ arile de mai sus nu calculeaz˘ a pe x. Operatorul ` ne
d˘ a
>> x=A\b
Warning: Rank deficient, rank = 2 tol = 1.4594e-014.
x =
0.5000
0
0.5000
Aceast˘ a solut ¸ie are dou˘ a componente nenule. Varianta cu pseudoinvers˘ a ne d˘ a
>> y=pinv(A)
*
b
y =
0.3333
0.3333
0.3333
184 Aproximarea funct ¸iilor
Se observ˘ a ca norm(y)=0.5774<norm(x)=0.7071. A treia variant˘ a es¸ueaz˘ a complet:
>> z=inv(A’
*
A)
*
A’
*
b
Warning: Matrix is singular to working precision.
z =
Inf
Inf
Inf
Abordarea bazat˘ a pe ecuat ¸ii normale are mai multe dezavantaje. Ecuat ¸iile normale
sunt ˆıntotdeauna mai prost condit ¸ionate decˆ at sistemul supradeterminat init ¸ial. Num˘ arul de
condit ¸ionare se ridic˘ a de fapt la p˘ atrat
6
:
cond(A
T
A) = cond(A)
2
.
ˆ
In reprezentarea ˆın virgul˘ a flotant˘ a, chiar dac˘ a coloanele lui A sunt liniar independente,
(A
T
A)
−1
ar putea fi aproape singular˘ a.
MATLAB evit˘ a ecuat ¸iile normale. Operatorul ` foloses¸te intern factorizarea QR. Solut ¸ia
se poate exprima prin c=R`(Q’
*
y).
Dac˘ a baza ˆın care se face aproximarea este 1, t, . . . , t
n
, se poate folosi funct ¸ia polyfit.
Comanda p=polyfit(x,y,n)calculeaz˘ a coeficient ¸ii polinomului de aproximare discret˘ a
de grad n ˆın sensul celor mai mici p˘ atrate pentru datele x s¸i y. Dac˘ a n ≥ m, se returneaz˘ a
coeficient ¸ii polinomului de interpolare.
Vom considera dou˘ a exemple.
O cantitate y este m˘ asurat˘ a ˆın diferite momente de timp, t, pentru a produce urm˘ atoarele
observat ¸ii:
t y
0.0 0.82
0.3 0.72
0.8 0.63
1.1 0.60
1.6 0.55
2.3 0.50
Aceste date pot fi introduse MATLAB prin
t=[0,0.3,0.8,1.1,1.6,2.3]’;
y=[0.82,0.72,0.63,0.60,0.55,0.50]’;
Vom ˆıncerca s˘ a model˘ am datele cu ajutorul unei funct ¸ii de forma
y(t) = c
1
+c
2
e
−t
.
Coeficient ¸ii necunoscut ¸i se vor calcula prin metoda celor mai mici p˘ atrate. Avem 6 ecuat ¸ii s¸i
dou˘ a necunoscute, reprezentate printr-o matrice 6 2
6
Pentru o matrice dreptunghiular˘ a X, num˘ arul de condit ¸ionare ar putea fi definit prin cond(X) = XX
+

5.2. Polinoame s¸i potrivirea datelor ˆın MATLAB 185
>> E=[ones(size(t)),exp(-t)]
E =
1.0000 1.0000
1.0000 0.7408
1.0000 0.4493
1.0000 0.3329
1.0000 0.2019
1.0000 0.1003
Solut ¸ia ˆın sensul celor mai mici p˘ a trate se poate g˘ asi cu ajutorul operatorului `:
c=E\y
c =
0.4760
0.3413
Urmeaz˘ a reprezentarea grafic˘ a pe puncte echidistante, completat˘ a cu datele originale:
T=[0:0.1:2.5]’;
Y=[ones(size(T)),exp(-T)]
*
c;
plot(T,Y,’-’,t,y,’o’)
xlabel(’t’); ylabel(’y’);
Se poate vedea c˘ a E c = y, dar diferent ¸a este minim˘ a ˆın sensul celor mai mici p˘ atrate (figura
5.6). Dac˘ a matricea A este deficient˘ a de rang (adic˘ a nu are coloane liniar independente),
0 0.5 1 1.5 2 2.5
0.5
0.55
0.6
0.65
0.7
0.75
0.8
0.85
0.9
t
y
Figura 5.6: Ilustrare a potrivirii datelor
atunci solut ¸ia ˆın sensul celor mai mici p˘ atrate a sistemului Ax = b nu este unic˘ a.
ˆ
In acest
186 Aproximarea funct ¸iilor
caz operatorul ` d˘ a un mesaj de avertizare s¸i produce o solut ¸ie de baz˘ a cu cel mai mic num˘ ar
posibil de elemente nenule.
Al doilea exemplu are ca date de intrare rezultatele de recens˘ amˆ antelor obt ¸inute de U. S.
Census pentru anii 1900–2000, din zece ˆın zece ani, exprimate ˆın milioane de oameni:
t y
1900 75.995
1910 91.972
1920 105.711
1930 123.203
1940 131.669
1950 150.697
1960 179.323
1970 203.212
1980 226.505
1990 249.633
2000 281.422
Se dores¸te modelarea cres¸terii populat ¸iei printr-un polinom de gradul al treilea
y(t) = c
1
t
3
+c
2
t
2
+c
3
t +c
4
s¸i predict ¸ia populat ¸iei din 2010.
Dac˘ a ˆıncerc˘ am s˘ a calcul˘ am coeficient ¸ii cu c=polyfit(t,y,3), matricea sistemului
va fi prost condit ¸ionat˘ a, coloanele ei vor fi aproape liniar dependente s¸i vom obt ¸ine mesajul
Warning: Polynomial is badly conditioned. Remove repeated
data points or try centering and scaling as
described in HELP POLYFIT.
Vom scala datele de intrare:
s = (t −s)/50.
Noua variabil˘ a este ˆın intervalul [−1, 1], iar sistemul va fi bine condit ¸ionat. Script-ul MAT-
LAB 5.10, census.m, calculeaz˘ a coeficient ¸ii, reprezint˘ a datele s¸i polinomul s¸i estimeaz˘ a
populat ¸ia ˆın 2010. Estimat ¸ia apare s¸i ˆın clar s¸i marcat˘ a cu un asterisc (vezi figura 5.7).
5.3. Interpolare polinomial˘ a
5.3.1. Spat¸iul H
n
[a, b]
Pentru n ∈ N

, definim
H
n
[a, b] = ¦f : [a, b] →R : f ∈ C
n−1
[a, b], f
(n−1)
absolut continu˘ a pe [a, b]¦. (5.3.1)
Orice funct ¸ie f ∈ H
n
[a, b] admite o reprezentare de tip Taylor cu restul sub form˘ a inte-
gral˘ a
f(x) =
n−1
¸
k=0
(x −a)
k
k!
f
(k)
(a) +

x
a
(x −t)
n−1
(n −1)!
f
(n)
(t)dt. (5.3.2)
5.3. Interpolare polinomial˘ a 187
Sursa MATLAB 5.10 Exemplu de aproximare ˆın sensul celor mai mici p˘ atrate
%CENSUS - exemplu cu recensamantul
% potrivire polinomiala
%datele
y = [ 75.995 91.972 105.711 123.203 131.669 150.697 ...
179.323 203.212 226.505 249.633 281.422]’;
t = (1900:10:2000)’; % anii de recensamant
x = (1890:1:2019)’; % anii de evaluare
w = 2010; % anul de predictie
s=(t-1950)/50;
xs=(x-1950)/50;
cs=polyfit(s,y,3);
zs=polyval(cs,xs);
est=polyval(cs,(2010-1950)/50);
plot(t,y,’o’,x,zs,’-’,w,est,’
*
’)
text(1990,est,num2str(est))
title(’Populatia SUA’, ’FontSize’, 14)
xlabel(’anul’, ’FontSize’, 12)
ylabel(’milioane’, ’FontSize’, 12)
1880 1900 1920 1940 1960 1980 2000 2020
50
100
150
200
250
300
350
312.6914
Populatia SUA
anul
M
i
l
i
o
a
n
e
Figura 5.7: Ilustrarea exemplului cu recens˘ amˆ antul
188 Aproximarea funct ¸iilor
H
n
[a, b] este un spat ¸iu liniar.
Observat ¸ia 5.3.1. Funct ¸ia f : I → R, I interval, se numes¸te absolut continu˘ a pe I dac˘ a
∀ ε > 0 ∃ δ > 0 astfel ˆıncˆ at oricare ar fi un sistem finit de subintervale disjuncte ale lui I
¦(a
k
, b
k

k=1,n
cu proprietatea
¸
n
k=1
(b
k
−a
k
) < δ s˘ a avem
n
¸
k=1
[f(b
k
) −f(a
k
)[ < ε.

Teorema urm˘ atoare, datorat˘ a lui Peano
7
, de o important ¸˘ a deosebit˘ a ˆın analiza numeric˘ a,
este o teorem˘ a de reprezentare a funct ¸ionalelor liniare reale, definite pe H
n
[a, b].
Teorema 5.3.2 (Peano). Fie L o funct ¸ional ˘ a real˘ a, continu˘ a, definit˘ a pe H
n
[a, b]. Dac˘ a
KerL = P
n−1
atunci
Lf =

b
a
K(t)f
(n)
(t)dt, (5.3.3)
unde
K(t) =
1
(n −1)!
L[( −t)
n−1
+
] (nucleul lui Peano). (5.3.4)
Observat ¸ia 5.3.3. Funct ¸ia
z
+
=

z, z ≥ 0
0, z < 0
se numes¸te parte pozitiv˘ a, iar z
n
+
se numes¸te putere trunchiat˘ a. ♦
Demonstrat ¸ie. f admite o reprezentare de tip Taylor, cu restul ˆın form˘ a integral˘ a
f(x) = T
n−1
(x) +R
n−1
(x),
unde
R
n−1
(x) =

x
a
(x −t)
n−1
(n −1)!
f
(n)
(t)dt =
1
(n −1)!

b
a
(x −t)
n−1
+
f
(n)
(t)dt
7
Giuseppe Peano (1858-1932), matematician italian activ la Torino, cu
contribut ¸ii fundamentale ˆın logica matematic˘ a, teoria mult ¸imilor, s¸i
fundamentele matematicii. Teoremele generale de existent ¸˘ a din dome-
niul teoriei ecuat ¸iilor diferent ¸iale ˆıi poart˘ a numele.
5.3. Interpolare polinomial˘ a 189
Aplicˆ and L obt ¸inem
Lf = LT
n−1
. .. .
0
+LR
n−1
⇒Lf =
1
(n −1)!
L

b
a
( −t)
n−1
+
f
(n)
(t)dt

=
cont
=
1
(n −1)!

b
a
L( −t)
n−1
+
f
(n)
(t)dt.

Observat ¸ia 5.3.4. Concluzia teoremei r˘ amˆ ane valabil˘ a s¸i dac˘ a L nu este continu˘ a, ci are
forma
Lf =
n−1
¸
i=0

b
a
f
(i)
(x)dµ
i
(x), µ
i
∈ BV [a, b].

Corolarul 5.3.5. Dac˘ a K p˘ astreaz˘ a semn constant pe [a, b] s¸i f
(n)
este continu˘ a pe [a, b],
atunci exist˘ a ξ ∈ [a, b] astfel ˆıncˆ at
Lf =
1
n!
f
(n)
(ξ)Le
n
, (5.3.5)
unde e
k
(x) = x
k
, k ∈ N.
Demonstrat ¸ie. Deoarece K p˘ astreaz˘ a semn constant pe [a, b] putem aplica ˆın (5.3.3) teorema
de medie
Lf = f
(n)
(ξ)

b
a
K
n
(t)dt, ξ ∈ [a, b].
Luˆ and f = e
n
se obt ¸ine chiar (5.3.5).
5.3.2. Interpolare Lagrange
Fie intervalul ˆınchis [a, b] ⊂ R, f : [a, b] → R s¸i o mult ¸ime de m + 1 puncte distincte
¦x
0
, x
1
, . . . , x
m
¦ ⊂ [a, b].
Teorema 5.3.6. Exist˘ a un polinom s¸i numai unul L
m
f ∈ P
m
astfel ˆıncˆ at
∀ i = 0, 1, . . . , m, (L
m
f)(x
i
) = f(x
i
); (5.3.6)
acest polinom se scrie sub forma
(L
m
f)(x) =
m
¸
i=0
f(x
i
)ℓ
i
(x), (5.3.7)
unde

i
(x) =
m
¸
j=0
j=i
x −x
j
x
i
−x
j
. (5.3.8)
190 Aproximarea funct ¸iilor
Definit ¸ia 5.3.7. Polinomul L
m
f definit astfel se numes¸te polinom de interpolare Lagrange
8
a lui f relativ la punctele x
0
, x
1
, . . . , x
m
, iar funct ¸iile ℓ
i
(x), i = 0, m, se numesc polinoame
de baz˘ a (fundamentale) Lagrange asociate acelor puncte.
Demonstrat ¸ie. Se verific˘ a imediat c˘ a ℓ
i
∈ P
i
s¸i c˘ a ℓ
i
(x
j
) = δ
ij
(simbolul lui Kronecker);
rezult˘ a c˘ a polinomul L
m
f definit de (5.3.6) este de grad cel mult m s¸i verific˘ a (5.3.7). Pre-
supunem c˘ a exist˘ a un alt polinom p

m
∈ P
m
care verific˘ a (5.3.7) s¸i punem q
m
= L
m
− p

m
;
avem q
m
∈ P
m
s¸i ∀ i = 0, 1, . . . , m, q
m
(x
i
) = 0; deci q
m
avˆ and (m + 1) r˘ ad˘ acini distincte
este identic nul, de unde unicitatea lui L
m
.
Fis¸ierul lagr.m (sursa MATLAB 5.11) cont ¸ine codul pentru calculul polinomului de inter-
polare Lagrange folosind formulele (5.3.7) s¸i (5.3.8).
Sursa MATLAB 5.11 Interpolare Lagrange
function fi=lagr(x,y,xi)
%LAGR - calculeaza polinomul de interpolare Lagrange
% x,y -coordonatele nodurilor
% xi - punctele in care se evalueaza polinomul
if nargin ˜=3
error(’numar ilegal de argumente’)
end
[mu,nu]=size(xi);
fi=zeros(mu,nu);
np1=length(y);
for i=1:np1
z=ones(mu,nu);
for j=[1:i-1,i+1:np1]
z=z.
*
(xi-x(j))/(x(i)-x(j));
end;
fi=fi+z
*
y(i);
end
Observat ¸ia 5.3.8. Polinomul fundamental ℓ
i
este deci unicul polinom care verific˘ a

i
∈ P
m
s¸i ∀ j = 0, 1, . . . , m, ℓ
i
(x
j
) = δ
ij
.
8
Joseph Louis Lagrange (1736-1813), protejat al lui Euler. Clairaut
scria despre tˆ an˘ arul Lagrange: ,,...un tˆ an˘ ar nu mai put ¸in remarca-
bil prin talent decˆ at prin modestie; temperamentul s˘ au este blˆ and s¸i
melancolic; nu cunoas¸te alt˘ a pl˘ acere decˆ at studiul.” Lagrange a avut
contribut ¸ii fundamentale ˆın calculul variat ¸ional, teoria numerelor s¸i
analiz˘ a matematic˘ a. Este cunoscut s¸i pentru reprezentarea pe care a
dat-o restului din formula lui Taylor. A dat formula de interpolare ˆın
1794. Lucrarea sa M´ ecanique Analytique, publicat˘ a ˆın 1788, l-a f˘ acut
unul din fondatorii mecanicii analitice.
5.3. Interpolare polinomial˘ a 191
Punˆ and
u(x) =
m
¸
j=0
(x −x
j
),
din (5.3.8) se deduce c˘ a ∀ x = x
i
, ℓ
i
(x) =
u(x)
(x−xi)u

(xi)
. ♦
ˆ
In figura 5.8 apare reprezentare grafic˘ a a polinoamelor fundamentale Lagrange de gradul trei
pentru nodurile x
k
= k, k = 0, 3.
0 0.5 1 1.5 2 2.5 3
−0.4
−0.2
0
0.2
0.4
0.6
0.8
1
1.2

0

3

2

1
Figura 5.8: Polinoame fundamentale de interpolare pentru nodurile x = 0, 1, 2, 3
Fis¸ierul pfl2b.m (sursa MATLAB 5.12) calculeaz˘ a polinoamele fundamentale La-
grange pentru nis¸te noduri date pe o mult ¸ime de puncte date.
Demonstrˆ and teorema 5.3.6 am demonstrat de fapt existent ¸a s¸i unicitatea solut ¸iei proble-
mei generale de interpolare Lagrange:
(PGIL) Fiind date b
0
, b
1
, . . . , b
m
∈ R, s˘ a se determine
p
m
∈ P
m
astfel ˆıncˆ at ∀ i = 0, 1, . . . , n, p
m
(x
i
) = b
i
. (5.3.9)
Problema (5.3.9) conduce la un sistem liniar de (m+ 1) ecuat ¸ii cu (m+ 1) necunoscute
(coeficient ¸ii lui p
m
).
Din teoria sistemelor liniare se s¸tie c˘ a
¦existent ¸a unei solut ¸ii ∀ b
0
, b
1
, . . . , b
m
¦ ⇔¦unicitatea solut ¸iei¦ ⇔
¦(b
0
= b
1
= = b
m
= 0) ⇒p
m
≡ 0¦
Punem p
m
= a
0
+a
1
x + +a
m
x
m
a = (a
0
, a
1
, . . . , a
m
)
T
, b = (b
0
, b
1
, . . . , b
m
)
T
192 Aproximarea funct ¸iilor
Sursa MATLAB 5.12 Calculul polinoamelor fundamentale Lagrange folosind facilit˘ at ¸i
MATLAB. Rezultatul este returnat ˆıntr-o matrice: o linie corespunde unui polinom funda-
mental, iar coloanele corespund punctelor in care se face evaluarea
function Z=pfl2b(x,t)
%PFL2b - calculeaza polinoamele fundamentale Lagrange
%apel Z=pfl2(x,t)
%x - nodurile de interpolare
%t - punctele in care se face evaluarea
m=length(x);
n=length(t);
[T,X]=meshgrid(t,x);
TT=T-X;
Z=zeros(m,n);
[U,V]=meshgrid(x,x);
XX=U-V;
for i=1:m
TX=prod(XX([1:i-1,i+1:m],i));
Z(i,:)=prod(TT([1:i-1,i+1:m],:))/TX;
end
s¸i not˘ am cu V = (v
ij
) matricea p˘ atratic˘ a de ordin m + 1 cu elementele v
ij
= x
j
i
. Ecuat ¸ia
(5.3.9) se scrie sub forma
V a = b
Matricea V este inversabil˘ a (determinantul ei este Vandermonde); se arat˘ a us¸or c˘ a V
−1
=
U
T
unde U = (u
ij
) cu ℓ
i
(x) =
¸
m
k=0
u
ik
x
k
; se obt ¸ine ˆın acest mod un procedeu put ¸in
costisitor de inversare a matricei Vandermonde s¸i prin urmare s¸i de rezolvare a sistemului
(5.3.9).
Exemplul 5.3.9. Polinomul de interpolare Lagrange corespunz˘ ator unei funct ¸ii f s¸i nodurilor
x
0
s¸i x
1
este
(L
1
f) (x) =
x −x
1
x
0
−x
1
f(x
0
) +
x −x
0
x
1
−x
0
f(x
1
),
adic˘ a dreapta care trece prin punctele (x
0
, f(x
0
)) s¸i (x
1
, f(x
1
)). Analog, polinomul de inter-
polare Lagrange corespunz˘ ator unei funct ¸ii f s¸i nodurilor x
0
, x
1
s¸i x
2
este
(L
2
f) (x) =
(x − x
1
)(x −x
2
)
(x
0
− x
1
)(x
0
−x
2
)
f(x
0
) +
(x −x
0
)(x −x
2
)
(x
1
−x
0
)(x
1
−x
2
)
f(x
1
)+
(x −x
0
)(x −x
1
)
(x
2
−x
0
)(x
2
−x
1
)
f(x
2
),
adic˘ a parabola care trece prin punctele (x
0
, f(x
0
)), (x
1
, f(x
1
)) s¸i (x
2
, f(x
2
)). Interpretarea
lor geometric˘ a apare ˆın figura 5.9. ♦
5.3. Interpolare polinomial˘ a 193
f
(L1f)(x)
(a) (L
1
f)
f
(L2f)(x)
(b) (L
2
f)
Figura 5.9: Interpretarea geometric˘ a a lui L
1
f (stˆ anga) si ¸ L
2
f
5.3.3. Interpolare Hermite
ˆ
In loc s˘ a facem s˘ a coincid˘ a f s¸i polinomul de interpolare ˆın punctele x
i
din [a, b], am
putea face ca f s¸i polinomul de interpolare s˘ a coincid˘ a ˆımpreun˘ a cu derivatele lor pˆ an˘ a la
ordinul r
i
ˆın punctele x
i
. Se obt ¸ine:
Teorema 5.3.10. Fiind date (m + 1) puncte distincte x
0
, x
1
, . . . , x
m
din [a, b] s¸i (m + 1)
numere naturale r
0
, r
1
, . . . , r
m
, punem n = m + r
0
+ r
1
+ + r
m
. Atunci, fiind dat˘ a o
funct ¸ie f, definit˘ a pe [a, b] s¸i admit ¸ˆ and derivate de ordin r
i
ˆın punctele x
i
, exist˘ a un singur
polinom s¸i numai unul H
n
f de grad ≤ n astfel ˆıncˆ at
∀ (i, ℓ), 0 ≤ i ≤ m, 0 ≤ ℓ ≤ r
i
(H
n
f)
(ℓ)
(x
i
) = f
(ℓ)
(x
i
), (5.3.10)
unde f
(ℓ)
(x
i
) este derivata de ordinul ℓ a lui f ˆın x
i
.
Definit ¸ia 5.3.11. Polinomul definit ˆın acest mod se numes¸te polinom de interpolare al lui
Hermite
9
al funct ¸iei f relativ la punctele x
0
, x
1
, . . . , x
m
s¸i la ˆıntregii r
0
, r
1
, . . . , r
m
.
Demonstrat ¸ie. Ecuat ¸ia (5.3.10) conduce la un sistem liniar de (n + 1) ecuat ¸ii cu (n + 1)
necunoscute (coeficient ¸ii lui H
n
f), deci este suficient s˘ a ar˘ at˘ am c˘ a sistemul omogen core-
spunz˘ ator admite doar solut ¸ia nul˘ a, adic˘ a relat ¸iile
H
n
f ∈ P
n
s¸i ∀ (i, ℓ), 0 ≤ i ≤ k, 0 ≤ ℓ ≤ r
i
, (H
n
f)
(ℓ)
(x
i
) = 0
9
Charles Hermite (1822-1901) matematician francez de frunte, mem-
bru al Academiei Franceze, cunoscut pentru lucr˘ arile sale ˆın domeniul
teoriei numerelor, algebr˘ a s¸i analiz˘ a. A devenit faimos dup˘ a ce a dat,
ˆın 1873, demonstrat ¸ia transcendent ¸ei num˘ arului e.
194 Aproximarea funct ¸iilor
ne asigur˘ a c˘ a, pentru orice i = 0, 1, . . . , m, x
i
este r˘ ad˘ acin˘ a de ordinul r
i
+1 a lui H
n
f; prin
urmare H
n
f are forma
(H
n
f)(x) = q(x)
m
¸
i=0
(x − x
i
)
ri+1
,
unde q este un polinom. Cum
¸
m
i=0

i
+ 1) = n + 1, acest lucru nu este compatibil cu
apartenent ¸a lui H
n
la P
n
, decˆ at dac˘ a q ≡ 0 s¸i deci H
n
≡ 0.
Observat ¸ia 5.3.12. 1) Dˆ andu-se numerele reale b
iℓ
pentru orice pereche (i, ℓ) astfel ˆıncˆ at
0 ≤ i ≤ k s¸i 0 ≤ ℓ ≤ r
i
, am ar˘ atat c˘ a problema general˘ a de interpolare Hermite
s˘ a se determine p
n
∈ P
n
a.ˆı. ∀ (i, ℓ) cu 0 ≤ i ≤ m s¸i
0 ≤ ℓ ≤ r
i
, p
(ℓ)
n
(x
i
) = b
iℓ
(5.3.11)
admite o solut ¸ie s¸i numai una.
ˆ
In particular, dac˘ a alegem pentru o pereche (i, ℓ) dat˘ a
b
iℓ
= 1 s¸i b
jn
= 0, ∀ (j, m) = (i, ℓ), se obt ¸ine un polinom de baz˘ a (fundamental) de
interpolare Hermite relativ la punctele x
0
, x
1
, . . . , x
m
s¸i la ˆıntregii r
0
, r
1
, . . . , r
m
. Poli-
nomul de interpolare Hermite definit prin (5.3.10) se obt ¸ine cu ajutorul polinoamelor
de baz˘ a(fundamentale) cu formula
(H
n
f)(x) =
m
¸
i=0
ri
¸
ℓ=0
f
(ℓ)
(x)h
iℓ
(x). (5.3.12)
Punˆ and
q
i
(x) =
k
¸
j=0
j=i

x −x
j
x
i
−x
j

rj+1
,
se verific˘ a c˘ a polinoamele de baz˘ a h
iℓ
sunt definite prin relat ¸iile de recurent ¸˘ a
h
iri
(x) =
(x −x
i
)
ri
r
i
!
q
i
(x)
s¸i pentru ℓ = r
i
− 1, r
i
−2, . . . , 1, 0
h
iℓ
(x) =
(x −x
i
)

ℓ!
q
i
(x) −
ri
¸
j=ℓ+1

j

q
(j−ℓ)
i
(x
i
)h
ij
(x).
2) Matricea V asociat˘ a sistemului liniar (5.3.11) se numes¸te matrice Vandermonde ge-
neralizat˘ a; ea este inversabil˘ a, iar elementele matricei ei inverse sunt coeficient ¸ii poli-
noamelor h
iℓ
.
3) Interpolarea Lagrange este un caz particular al interpol˘ arii Hermite (pentru r
i
= 0,
i = 0, 1, . . . , m); polinomul Taylor este un caz particular pentru m = 0 s¸i r
0
= n. ♦
5.3. Interpolare polinomial˘ a 195
Vom prezenta o expresie mai convenabil˘ a a polinoamelor fundamentale Hermite, obt ¸inut˘ a
de Dimitrie D. Stancu ˆın 1957[60]. Ele verific˘ a relat ¸iile
h
(p)
kj
(x
ν
) = 0, ν = k, p = 0, r
ν
h
(p)
kj
(x
k
) = δ
jp
, p = 0, r
k
,
(5.3.13)
pentru j = 0, r
k
s¸i ν, k = 0, m. Introducˆ and notat ¸iile
u(x) =
m
¸
k=0
(x −x
k
)
r
k
+1
s¸i
u
k
(x) =
u(x)
(x −x
k
)
r
k
+1
,
din (5.3.13) rezult˘ a c˘ a h
kj
are forma
h
kj
(x) = u
k
(x)(x −x
k
)
j
g
kj
(x), g
kj
∈ P
r
k
−j
. (5.3.14)
Dezvoltˆ and g
kj
cu formula lui Taylor, avem
g
kj
(x) =
r
k
−j
¸
ν=0
(x −x
k
)
ν
ν!
g
(ν)
kj
(x
k
); (5.3.15)
mai r˘ amˆ an de determinat valorile lui g
(ν)
kj
(x
k
), ν = 0, r
k
−j. Scriind (5.3.14) sub forma
(x −x
k
)
j
g
kj
(x) = h
kj
(x)
1
u
k
(x)
,
s¸i aplicˆ and formula lui Lebniz pentru derivata de ordinul j +ν a produsului se obt ¸ine
j+ν
¸
s=0

j + ν
s

(x −x
k
)
j

(j+ν−s)
g
(s)
kj
(x) =
j+ν
¸
s=0

j +ν
s

h
(j+ν−s)
kj
(x)
¸
1
u
k
(x)

(s)
.
Lˆ and x = x
k
, tot ¸i termenii din ambii membri se vor anula, cu except ¸ia celor corespunz˘ atori
lui s = ν. Avem deci

j +ν
ν

j!g
(ν)
kj
(x
k
) =

j +ν
ν
¸
1
u
k
(x)

(ν)
x=x
k
, ν = 0, r
k
−j.
Am obt ¸inut
g
(ν)
kj
(x
k
) =
1
j!
¸
1
u
k
(x)

(ν)
x=x
k
,
iar din (5.3.15) s¸i (5.3.14) avem ˆın final
h
kj
(x) =
(x −x
k
)
j
j!
u
k
(x)
r
k
−j
¸
ν=0
(x −x
k
)
ν
ν!
¸
1
u
k
(x)

(ν)
x=x
k
.
196 Aproximarea funct ¸iilor
Propozit¸ia 5.3.13. Operatorul H
n
este proiector, adic˘ a
• este liniar (H
n
(αf +βg) = αH
n
f +βH
n
g);
• este idempotent (H
n
◦ H
n
= H
n
).
Demonstrat ¸ie. Liniaritatea rezult˘ a imediat din formula (5.3.12). Datorit˘ a unicit˘ at ¸ii polino-
mului de interpolare Hermite H
n
(H
n
f) − H
n
f este identic nul, deci H
n
(H
n
f) = H
n
f s¸i
am ar˘ atat idempotent ¸a.
Exemplul 5.3.14. Polinomul de interpolare Hermite corespunz˘ ator unei funct ¸ii f s¸i nodurilor
duble 0 s¸i 1 are expresia
(H
3
f) (x) = h
00
(x)f(0) +h
10
(x)f(1) +h
01
(x)f

(0) +h
11
(x)f

(1),
unde
h
00
(x) = (x −1)
2
(2x + 1),
h
01
(x) = x(x −1)
2
,
h
10
(x) = x
2
(3 −2x),
h
11
(x) = x
2
(x −1).
Dac˘ a se adaug˘ a nodul x =
1
2
, calitatea aproxim˘ arii cres¸te (vezi figura 5.10). ♦
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
(a) (H
3
f)
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
(b) (H
3
f)
Figura 5.10: Polinoamele de interpolare Hermite (H
3
f) (—) corespunz˘ ator funct ¸iei f :
[0, 1] → R , f(x) = sinπx s¸i nodurilor duble x
0
= 0 s¸i x
1
= 1 ( )(stˆ anga) s¸i (H
5
f)
(—) corespunz˘ ator funct ¸iei f : [0, 1] → R , f(x) = sinπx ( ) s¸i nodurilor duble x
0
= 0,
x
1
=
1
2
s¸i x
2
= 1.
5.3. Interpolare polinomial˘ a 197
5.3.4. Expresia erorii de interpolare
Reamintim c˘ a norma unui operator liniar P
n
se poate defini prin
|P
n
| = max
f∈C[a,b]
|P
n
f|
|f|
, (5.3.16)
unde ˆın membrul drept se ia o norm˘ a convenabil˘ a pentru funct ¸ii. Luˆ and norma L

, din for-
mula lui Lagrange se obt ¸ine
|(L
m
f)(.)|

= max
a≤x≤b

m
¸
i=0
f(x
i
)ℓ
i
(x)

≤ |f|

max
a≤x≤b
m
¸
i=0
[ℓ
i
(x)[.
(5.3.17)
Fie |λ
m
|

= λ
m
(x

). Egalitatea are loc pentru o funct ¸ie ϕ ∈ C[a, b], liniar˘ a pe port ¸iuni s¸i
care verific˘ a ϕ(x
i
) = sgnℓ
i
(x

), i = 0, m. Deci,
|P
n
|

= Λ
m
, (5.3.18)
unde
Λ
m
= |λ
m
|

, λ
m
(x) =
m
¸
i=0
[ℓ
i
(x)[. (5.3.19)
Funct ¸ia λ
m
(x) s¸i maximul s˘ au Λ
m
se numesc funct ¸ia lui Lebesgue
10
s¸i respectiv constanta
lui Lebesgue pentru interpolarea Lagrange. Ele furnizeaz˘ a o prim˘ a estimare a erorii de inter-
polare: fie c
m
(f) eroarea ˆın cea mai bun˘ a aproximare a lui f prin polinoame de grad ≤ m,
c
m
(f) = min
p∈Pm
|f −p|

= |f − ˆ p
n
|

, (5.3.20)
unde ˆ p
n
este polinomul de grad m de cea mai bun˘ a aproximare a lui f. Utilizˆ and faptul c˘ a
operatorul L
m
este proiector s¸i formulele (5.3.17) s¸i (5.3.19), se g˘ ases¸te
|f −L
m
f| = |f − ˆ p
m
−L
m
(f − ˆ p
m
)|

≤ |f − ˆ p
m
|

+ Λ
m
|f − ˆ p
m
|

;
10
Henry Lebesgue (1875-1941), matematician francez, cunoscut pentru
lucr˘ arile sale fundamentale ˆın domeniul teoriei funct ¸iilor reale, s¸i ˆın
special pentru introducerea m˘ asurii s¸i integralei care ˆıi poart˘ a numele.
198 Aproximarea funct ¸iilor
adic˘ a,
|f −L
m
f|

≤ (1 + Λ
m
)c
m
(f). (5.3.21)
Astfel, cu cˆ at f poate fi aproximat˘ a mai bine prin polinoame de grad ≤ m, cu atˆ at este mai
mic˘ a eroarea de interpolare. Din p˘ acate, Λ
m
nu este uniform m˘ arginit˘ a: indiferent de cum
se aleg nodurile x
i
= x
(m)
i
, i = 0, m, se poate ar˘ ata c˘ a Λ
m
> O(log m) cˆ and m → ∞.
Totus¸i, nu este posibil s˘ a tragem, pe baza teoremei de aproximare a lui Weierstrass (adic˘ a din
c
m
→0, m →∞) concluzia c˘ a interpolarea Lagrange converge uniformpentru orice funct ¸ie
f, nici chiar pentru noduri judicios alese; se s¸tie c˘ a de fapt convergent ¸a nu are loc.
Dac˘ a dorims˘ a utiliz˘ ampolinomul de interpolare Lagrange sau Hermite pentru a aproxima
funct ¸ia f ˆıntr-un punct x ∈ [a, b], distinct de nodurile de interpolare (x
0
, . . . , x
m
), trebuie s˘ a
estim˘ am eroarea comis˘ a (R
n
f)(x) = f(x) −(H
n
f)(x). Dac˘ a nu posed˘ am nici o informat ¸ie
referitoare la f ˆın afara punctelor x
i
, este clar c˘ a nu putem spune nimic despre (R
n
f)(x);
ˆıntr-adev˘ ar este posibil s˘ a schimb˘ am f ˆın afara punctelor x
i
f˘ ar˘ a a modifica (H
n
f) (x). Tre-
buie deci s˘ a facem ipoteze suplimentare, care vor fi ipoteze de regularitate asupra lui f. S˘ a
not˘ am cu C
m
[a, b] spat ¸iul funct ¸iilor reale de m ori continuu diferent ¸iabile pe [a, b]. Avem
urm˘ atoarea teorem˘ a referitoare la estimarea erorii ˆın interpolarea Hermite.
Teorema 5.3.15. Presupunem c˘ a f ∈ C
n
[α, β] s¸i exist˘ a f
(n+1)
pe (α, β), unde α =
min¦x, x
0
, . . . , x
m
¦ s¸i β = max¦x, x
0
, . . . , x
m
¦; atunci, pentru orice x ∈ [α, β], exist˘ a
un ξ
x
∈ (α, β) astfel ˆıncˆ at
(R
n
f)(x) =
1
(n + 1)!
u
n
(x)f
(n+1)

x
), (5.3.22)
unde
u
n
(x) =
m
¸
i=0
(x −x
i
)
ri+1
.
Demonstrat ¸ie. Dac˘ a x = x
i
, (R
n
f)(x) = 0 s¸i (5.3.22) se verific˘ a trivial. Presupunem c˘ a x
este distinct de x
i
s¸i consider˘ am, pentru x fixat, funct ¸ia auxiliar˘ a
F(z) =

u
n
(z) (R
n
f)(z)
u
n
(x) (R
n
f)(x)

.
Se observ˘ a c˘ a F ∈ C
n
[α, β], ∃ F
(n+1)
pe (α, β), F(x) = 0 s¸i F
(j)
(x
k
) = 0 pentru k = 0, m,
j = 0, r
k
. Deci, F are (n + 2) zerouri, luˆ and ˆın considerare s¸i ordinele de multiplicitate.
Aplicˆ and succesiv teorema lui Rolle generalizat˘ a, rezult˘ a c˘ a exist˘ a cel put ¸in un ξ ∈ (α, β)
astfel ˆıncˆ at F
(n+1)
(ξ) = 0, adic˘ a
F
(m+1)
(ξ) =

(n + 1)! f
(n+1)
(ξ)
u
n
(x) (R
n
f)(x)

= 0, (5.3.23)
unde s-a t ¸inut cont c˘ a (R
n
f)
(n+1)
= f
(n+1)
−(H
n
f)
(n+1)
= f
(n+1)
. Exprimˆ and (R
n
f)(x)
din (5.3.23) se obt ¸ine (5.3.22).
5.3. Interpolare polinomial˘ a 199
Corolarul 5.3.16. Punem M
n+1
= max
x∈[a,b]
[f
(n+1)
(x)[; o margine superioar˘ a a erorii de
interpolare (R
n
f)(x) = f(x) −(H
n
f)(x) este dat˘ a prin
[(R
n
f)(x)[ ≤
M
n+1
(n + 1)!
[u
n
(x)[.
Deoarece H
n
este proiector, rezult˘ a c˘ a R
n
este de asemenea proiector; ˆın plus KerR
n
=
P
n
, deoarece R
n
f = f − H
n
f = f − f = 0, ∀f ∈ P
n
. Deci, putem aplica lui R
n
teorema
lui Peano.
Teorema 5.3.17. Dac˘ a f ∈ C
n+1
[a, b], atunci
(R
n
f) (x) =

b
a
K
n
(x; t)f
(n+1)
(t)dt, (5.3.24)
unde
K
n
(x; t) =
1
n!

(x −t)
n
+

m
¸
k=0
r
k
¸
j=0
h
kj
(x)

(x
k
−t)
n
+

(j)

. (5.3.25)
Demonstrat ¸ie. Aplicˆ and teorema lui Peano, avem
(R
n
f) (x) =

b
a
K
n
(x; t)f
(n+1)
(t)dt
s¸i t ¸inˆ and cont c˘ a
K
n
(x; t) = R
n
¸
(x −t)
n
+
n!

=
(x −t)
n
+
n!
−H
n
¸
(x −t)
n
+
n!

,
teorema rezult˘ a imediat.
Deoarece interpolarea Lagrange este un caz particular al interpol˘ arii Hermite pentru r
i
=
0, i = 0, 1, . . . , m din teorema 5.3.15 se obt ¸ine:
Corolarul 5.3.18. Presupunem c˘ a f ∈ C
m
[α, β] s¸i exist˘ a f
(m+1)
pe (α, β), unde α =
min¦x, x
0
, . . . , x
m
¦ s¸i β = max¦x, x
0
, . . . , x
m
¦; atunci, pentru orice x ∈ [α, β], exist˘ a
un ξ
x
∈ (α, β) astfel ˆıncˆ at
(R
m
f)(x) =
1
(n + 1)!
u
m
(x)f
(m+1)

x
), (5.3.26)
unde
u
m
(x) =
m
¸
i=0
(x −x
i
).
De asemenea, din teorema 5.3.17 avem:
200 Aproximarea funct ¸iilor
Corolarul 5.3.19. Dac˘ a f ∈ C
m+1
[a, b], atunci
(R
m
f) (x) =

b
a
K
m
(x; t)f
(m+1)
(t)dt (5.3.27)
unde
K
m
(x; t) =
1
m!
¸
(x −t)
m
+

m
¸
k=0

k
(x)(x
k
−t)
m
+
¸
. (5.3.28)
Exemplul 5.3.20. Pentru polinoamele de interpolare din exemplul 5.3.9 resturile core-
spunz˘ atoare sunt
(R
1
f)(x) =
(x −x
0
)(x −x
1
)
2
f
′′
(ξ)
s¸i respectiv
(R
2
f)(x) =
(x −x
0
)(x −x
1
)(x −x
2
)
6
f
′′′
(ξ).

Exemplul 5.3.21. Restul din formula de interpolare Hermite cu nodurile duble 0 s¸i 1 pentru
f ∈ C
4
[α, β] este
(R
3
f)(x) =
x
2
(x −1)
2
6!
f
(4)
(ξ).

Exemplul 5.3.22. Lu˘ amf(x) = e
x
. Avem pentru x ∈ [a, b], M
n+1
= e
b
s¸i oricum am alege
punctele x
i
, [u
n
(x)[ ≤ (b −a)
n+1
, de unde
max
x∈[a,b]
[(R
n
f)(x)[ ≤
(b −a)
n+1
(n + 1)!
e
b
.
Se deduce c˘ a
lim
n→∞

max
x∈[a,b]
[(R
n
f)(x)[

= lim
n→∞
|(R
n
f)(x)| = 0,
adic˘ a H
n
f converge uniform c˘ atre f pe [a, b] cˆ and n tinde la ∞. De fapt se poate demonstra
un rezultat analog pentru orice funct ¸ie dezvoltabil˘ a ˆın serie ˆıntreag˘ a ˆın jurul punctului x =
a+b
2
cu raza de convergent ¸˘ a r >
3
2
(b −a). ♦
5.3.5. Convergent¸a interpol˘ arii Lagrange
S˘ a definim ce ˆınt ¸elegem prin convergent ¸˘ a. Presupunem c˘ a se d˘ a un tablou triunghiular
de noduri de interpolare x
i
= x
(m)
i
, avˆ and exact m + 1 noduri distincte pentru orice m =
0, 1, 2, . . . .
x
(0)
0
x
(1)
0
x
(1)
1
x
(2)
0
x
(2)
1
x
(2)
2
.
.
.
.
.
.
.
.
.
.
.
.
x
(m)
0
x
(m)
1
x
(m)
2
. . . x
(m)
m
.
.
.
.
.
.
.
.
.
.
.
.
(5.3.29)
5.3. Interpolare polinomial˘ a 201
Presupunem c˘ a toate nodurile sunt cont ¸inute ˆıntr-un interval finit [a, b]. Atunci pentru
orice m definim
P
m
(x) = L
m
(f; x
(m)
0
, x
(m)
1
, . . . , x
(m)
m
; x), x ∈ [a, b]. (5.3.30)
Spunem c˘ a interpolarea Lagrange bazat˘ a pe tabelul de noduri (5.3.29) converge dac˘ a
p
m
(x) ⇉f(x), cˆ and n →∞pe [a, b]. (5.3.31)
Convergent ¸a depinde evident de comportarea derivatei de ordinul k f
(k)
a lui f cˆ and
k →∞. Presupunem c˘ a f ∈ C

[a, b] s¸i c˘ a
[f
(k)
(x)[ ≤ M
k
pentru a ≤ x ≤ b, k = 0, 1, 2, . . . (5.3.32)
Deoarece [x
i
−x
(m)
i
[ ≤ b −a cˆ and x ∈ [a, b] s¸i x
(n)
i
∈ [a, b] avem

(x −x
(m)
0
) . . . (x −x
(m)
m
)

< (b −a)
m+1
, (5.3.33)
deci
[f(x) −(L
m
f)(x)[ ≤ (b −a)
m+1
M
m+1
(m + 1)!
, x ∈ [a, b]. (5.3.34)
Deci avem convergent ¸˘ a dac˘ a
lim
k→∞
(b −a)
k
k!
M
k
= 0. (5.3.35)
S˘ a ar˘ at˘ am c˘ a (5.3.35) este adev˘ arat˘ a dac˘ a f este analitic˘ a ˆıntr-o vecin˘ atate suficient de
mare din C ce cont ¸ine intervalul [a, b]. Mai concret fie C
r
discul circular (ˆınchis) cu centrul
ˆın mijlocul intervalului [a, b] s¸i de raz˘ a r s¸i presupunemc˘ a r >
1
2
(b−a), astfel c˘ a [a, b] ⊂ C
r
.
Presupunem c˘ a f este analitic˘ a ˆın C
r
. Atunci putem estima derivata ˆın (5.3.32) cu formula
lui Cauchy
f
(k)
(x) =
k!
2πi

Cr
f(z)
(z −x)
k+1
dz, x ∈ [a, b]. (5.3.36)
Observˆ and c˘ a [z −x[ ≥ r −
1
2
(b −a) (vezi figura 5.11) obt ¸inem
[f
(k)
(x)[ ≤
k!

max
z∈∂Cr
[f(z)[

r −
1
2
(b −a)

k+1
2πr;
putem lua pentru M
k
ˆın (5.3.32)
M
k
=
r
r −
1
2
(b −a)
max
z∈∂Cr
[f(z)[
k!

r −
1
2
(b −a)

k
(5.3.37)
s¸i (5.3.35) are loc dac˘ a

b −a
r −
1
2
(b −a)

k
→0 cˆ and k →∞,
202 Aproximarea funct ¸iilor
a (a+b)/2 x b
r
Figura 5.11: Discul circular C
r
adic˘ a, dac˘ a b −a < r −
1
2
(b −a) sau echivalent
r >
3
2
(b −a). (5.3.38)
Am ar˘ atat c˘ a interpolarea Lagrange converge (uniform pe [a, b]) pentru o mult ¸ime arbi-
trar˘ a de noduri (5.3.29) (toate cont ¸inute ˆın [a, b]) dac˘ a f este analitic˘ a ˆın discul circular C
r
centrat ˆın (a +b)/2 s¸i avˆ and raza suficient de mare astfel ca (5.3.29) s˘ a aib˘ a loc.
Deoarece acest rezultat utilizeaz˘ a o estimare grosier˘ a (ˆın particular (5.3.33)), domeniul
cerut de analiticitate pentru f nu este prea ˆıngust. Utilizˆ and metode mai rafinate, se poate
ar˘ ata urm˘ atorul lucru. Fie dµ(t) distribut ¸ia limit˘ a a nodurilor de interpolare, adic˘ a

x
a
dµ(t), a < x ≤ b,
raportul dintre num˘ arul de noduri x
(m)
i
din [a, x] s¸i num˘ arul total de noduri, asimptotic cˆ and
n → ∞. (Cˆ and nodurile sunt uniform distribuite pe intervalul [a, b], atunci dµ(t) =
dt
b−a
). O
curb˘ a cu potent ¸ial logaritmic constant este locul geometric al punctelor z ∈ C cu proprietatea
u(z) =

b
a
ln
1
[z −t[
dµ(t) = γ,
unde γ este o constant˘ a. Pentru γ negativ, foarte mare ˆın modul, aceste curbe arat˘ a ca nis¸te cer-
curi cu raza foarte mare s¸i centrul ˆın (a+b)/2. Pe m˘ asur˘ a ce γ cres¸te, curbele se ,,comprim˘ a”
5.3. Interpolare polinomial˘ a 203
spre intervalul [a, b]. Fie Γ = supγ, unde supremumul se ia pentru toate curbele u(z) = γ
ce cont ¸in pe [a, b] ˆın interior. Domeniul important (ce ˆınlocuies¸te C
r
) este domeniul
C
Γ
= ¦z ∈ C : u(z) ≥ Γ¦,
ˆın sensul c˘ a dac˘ a f este analitic˘ a ˆın orice domeniu C ce cont ¸ine C
Γ
ˆın interiorul s˘ au (nu
conteaz˘ a cˆ at de strˆ ans C acoper˘ a pe C
Γ
), atunci
[f(z) −(L
m
f)(z)[ →0, cˆ and n →∞, (5.3.39)
uniform pentru z ∈ C
Γ
.
Exemplul 5.3.23. Noduri echidistante: dµ(t) = dt/(b −a), a ≤ t ≤ b.
ˆ
In acest caz C
Γ
este
un domeniu ˆın form˘ a de lentil˘ a, as¸a cum se arat˘ a ˆın figura 5.12. Astfel, avem convergent ¸a
uniform˘ a ˆın C
Γ
(nu doar pe [a, b] ca mai sus) cu condit ¸ia ca f s˘ a fie analitic˘ a ˆıntr-o regiune
put ¸in mai larg˘ a decˆ at C
Γ
.
C
Γ
a b
Figura 5.12: Domeniul C
Γ
pentru noduri uniform distribuite
Exemplul 5.3.24. Distribut ¸ia arcsin pe [−1, 1] :
dµ(t) =
1
π
dt

1 −t
2
.
Nodurile sunt ˆın acest caz r˘ ad˘ acinile polinomului Cebˆıs¸ev de spet ¸a I. Ele sunt mai dens dis-
tribuite ˆın apropierea capetelor intervalului [−1, 1].
ˆ
In acest caz C
Γ
= [−1, 1], as¸a c˘ a inter-
polarea Lagrange converge uniform pe [−1, 1], dac˘ a f este analitic˘ a ˆıntr-o regiune al c˘ arei
interior cont ¸ine intervalul [−1, 1]. ♦
Care este semnificat ¸ia polinoamelor Cebˆıs¸ev pentru interpolare?
Reamintim c˘ a eroarea de interpolare (pe [-1,1], pentru o funct ¸ie de clas˘ a C
m+1
[−1, 1])
este dat˘ a de
f(x) −(L
m
f)(x) =
f
(m+1)
(ξ(x))
(m + 1)!
m
¸
i=0
(x −x
i
). (5.3.40)
204 Aproximarea funct ¸iilor
Primul factor este independent de alegerea nodurilor x
i
. Punctul intermediar ξ(x) depinde de
x
i
, dar de obicei major˘ am [f
(m+1)
[ prin [[f
(m+1)
[[

, ceea ce ˆınl˘ atur˘ a aceast˘ a dependent ¸˘ a.
Pe de alt˘ a parte, produsul din al doilea factor, inclusiv norma sa

m
¸
i=0
(. −x
i
)


, (5.3.41)
depinde puternic de x
i
. Are sens, deci, s˘ a ˆıncerc˘ am s˘ a minimiz˘ am (5.3.41) dup˘ a tot ¸i x
i

[−1, 1]. Deoarece produsul din (5.3.41) este un polinom monic de grad m + 1, din teorema
5.1.2 rezult˘ a c˘ a nodurile optimale x
i
= ´ x
i
(m)
din (5.3.40) sunt r˘ ad˘ acinile lui T
m+1
, adic˘ a
´ x
i
(m)
= cos
2i + 1
2m+ 2
π, i = 0, m. (5.3.42)
Pentru aceste noduri, avem conform lui (5.1.44)
|f(.) −(L
m
f) (.)|


[[f
(m+1)
[[

(m + 1)!

1
2
m
. (5.3.43)
Se cuvine a compara acest factor cu marginea mai brut˘ a dat˘ a ˆın (5.3.34) care ˆın acest caz pe
intervalul [−1, 1] este 2
m+1
/(m+ 1)!.
Deoarece, conform (5.3.40), curba de eroare y = f − L
m
f pentru punctele Cebˆıs¸ev
(5.3.42) este ˆın esent ¸˘ a echilibrat˘ a (modulo variat ¸ia factorului f
(m+1)
) s¸i astfel liber˘ a de
oscilat ¸iile violente pe care le-am v˘ azut pentru puncte echidistante, ne vom as¸tepta la pro-
priet˘ at ¸i mai favorabile pentru tablouri triunghiulare (5.3.29) formate din noduri Cebˆıs¸ev. Se
poate ar˘ ata c˘ a dac˘ a f ∈ C
1
[−1, 1], atunci
(L
m
f)

x; ˆ x
(m)
0
, ˆ x
(m)
1
, . . . , ˆ x
(m)
m

⇉f(x), n →∞, (5.3.44)
pe [−1, 1]. Astfel, nu avem nevoie de analiticitatea luif pentru ca (5.3.44) s˘ a aib˘ a loc.
Exemplul 5.3.25 (Exemplul lui Runge). Consider˘ am funct ¸ia
f(x) =
1
1 +x
2
, x ∈ [−5, 5],
s¸i nodurile
x
(m)
k
= −5 + 10
k
m
, k = 0, m. (5.3.45)
Nodurile sunt echidistante pe [−5, 5], deci asimptotic uniform distribuite. Observ˘ am c˘ a f are
doi poli ˆın z = ±i. Aces¸ti poli sunt as¸ezat ¸i ˆın interiorul regiunii C
Γ
din figura 5.12 pentru
intervalul [−5, 5], deci f nu este analitic˘ a ˆın C
Γ
. Din acest motiv nu ne as¸tept˘ am s˘ a avem
convergent ¸˘ a pe ˆıntreg intervalul [−5, 5]. Se poate demonstra c˘ a
lim
m→∞
[f(x) −p
m
(f; x)[ =

0 dac˘ a [x[ < 3.633 . . .
∞ dac˘ a [x[ > 3.633 . . .
(5.3.46)
5.3. Interpolare polinomial˘ a 205
Avˆ and ˆın minte figura 5.12 acest rezultat nu este surprinz˘ ator. Graficul pentru m = 10, 13, 16
apare ˆın figura 5.13. El a fost generat cu sursa MATLAB 5.13, cu comanda
>>runge3([10,13,17],[-5,5,-2,2])
folosind facilit˘ at ¸ile de adnotare ale editorului de figuri din MATLAB. ♦
Sursa MATLAB 5.13 Contraexemplul lui Runge
function runge3(n,w)
%N- vector al gradelor, W- fereastra
clf
xg=-5:0.1:5; yg=1./(1+xg.ˆ2);
plot(xg,yg,’k-’,’Linewidth’,2);
hold on
nl=length(n);
ta=5
*
[-1:0.001:-0.36,-0.35:0.01:0.35, 0.36:0.001:1]’;
ya=zeros(length(ta),nl);
leg=cell(1,nl+1); leg{1}=’f’;
for l=1:nl
xn=5
*
[-1:2/n(l):1]; yn=1./(1+xn.ˆ2);
ya(:,l)=lagr(xn,yn,ta);
leg{l+1}=strcat(’L_{’,int2str(n(l)),’}’);
end
plot(ta,ya); axis(w)
legend(leg,-1)
Exemplul 5.3.26 (Exemplul lui Bernstein). Lu˘ am
f(x) = [x[, x ∈ [−1, 1]
x
(m)
k
= −1 +
2k
m
, k = 0, 1, 2, . . . , m (5.3.47)
Problema analiticit˘ at ¸ii nu se pune, deoarece f nu este derivabil˘ a ˆın x = 0. Se obt ¸ine c˘ a
lim
m→∞
[f(x) −L
m
(f; x)[ = ∞ ∀x ∈ [−1, 1]
exceptˆ and punctele x = −1, x = 0 s¸i x = 1. Vezi figura 5.14(a), pentru m = 20. Convergent ¸a
ˆın x = ±1 este trivial˘ a deoarece acestea sunt noduri de interpolare s¸i deci eroarea ˆın aceste
puncte este 0. Acelas¸i lucru este adev˘ arat pentru x = 0, cˆ and n este impar, dar nu s¸i cˆ and
n este par. Es¸ecul convergent ¸ei pentru aceste noduri se explic˘ a doar part ¸ial prin insuficient ¸a
regularit˘ at ¸ii a lui f. Un alt motiv este distribut ¸ia uniform˘ a a nodurilor. Exist˘ a exemple mai
bune de distribut ¸ii ale nodurilor, cum ar fi distribut ¸ia arcsin din exemplul 5.3.24.
ˆ
In figura
5.14(b) se d˘ a graficul pentru m = 17. ♦
Problema convergent ¸ei a fost rezolvat˘ a ˆın cazul general de Faber s¸i Bernstein ˆıntre 1914
s¸i 1916. Faber a demonstrat c˘ a pentru orice tabel triunghiular de noduri din [a, b], de tipul
206 Aproximarea funct ¸iilor
−5 −4 −3 −2 −1 0 1 2 3 4 5
−2
−1.5
−1
−0.5
0
0.5
1
1.5
2
m=10
m=13
m=16
Figura 5.13: O ilustrare grafic˘ a a contraexemplului lui Runge
−1 −0.8 −0.6 −0.4 −0.2 0 0.2 0.4 0.6 0.8 1
0
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
2
(a) Noduri echidistante, m = 20
−1 −0.8 −0.6 −0.4 −0.2 0 0.2 0.4 0.6 0.8 1
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
(b) Noduri Cebˆıs¸ev, m = 17
Figura 5.14: Comportarea interpol˘ arii Lagrange pentru f : [−1, 1] →R, f(x) = [x[.
5.4. Calculul eficient al polinoamelor de interpolare 207
5.3.29, exist˘ a o funct ¸ie f ∈ C[a, b] astfel ˆıncˆ at s¸irul polinoamelor de interpolare Lagrange
L
m
f pentru nodurile x
(m)
i
(pe linii) s˘ a nu converag˘ a uniform c˘ atre f pe [a, b].
Bernstein
11
a demonstrat c˘ a pentru orice tablou triunghiular de noduri ca mai sus exist˘ a
o funct ¸ie f ∈ C[a, b] astfel ˆıncˆ at s¸irul corespunz˘ ator (L
m
f) s˘ a fie divergent.
Situat ¸ia se poate remedia ˆın dou˘ a moduri:
• abordarea local˘ a – intervalul [a, b] se ia foarte mic – utilizat˘ a la rezolvarea numeric˘ a a
ecuat ¸iilor diferent ¸iale;
• interpolare spline – interpolantul este polinomial pe port ¸iuni.
5.4. Calculul eficient al polinoamelor de interpolare
5.4.1. Metode de tip Aitken
ˆ
In multe situat ¸ii gradul necesar pentru a atinge precizia dorit˘ a ˆın interpolarea polinomial˘ a
este necunoscut. El se poate determina din expresia restului, dar pentru aceasta este necesar
s˘ a cunoas¸tem |f
(m+1)
|

. Vom nota cu P
m1,m2,...,m
k
polinomul de interpolare Lagrange
avˆ and nodurile x
m1
, . . . , x
m
k
.
Propozit¸ia 5.4.1. Dac˘ a f este definit˘ a ˆın x
0
, . . . , x
k
, x
j
= x
i
, 0 ≤ i, j ≤ k, atunci
P
0,1,...,k
=
(x −x
j
)P
0,1,...,j−1,j+1,...,k
(x) −(x −x
i
)P
0,1,...,i−1,i+1,...,k
(x)
x
i
−x
j
=
=
1
x
i
−x
j

x −x
j
P
0,1,...,i−1,i+1,...,k
(x)
x −x
i
P
0,1,...,j−1,j+1,...,k
(x)

(5.4.1)
Demonstrat ¸ie. Fie Q = P
0,1,...,i−1,i+1,...,k
,
ˆ
Q = P
0,1,...,j−1,j+1,k
s¸i
P(x) =
(x −x
j
)
ˆ
Q(x) −(x −x
i
)Q(x)
x
i
−x
j
.
Se observ˘ a c˘ a, deoarece Q(x
r
) =
ˆ
Q(x
r
) = f(x
r
), pentru r = i s¸i r = j,
P(x
r
) =
(x
r
−x
j
)
ˆ
Q(x
r
) −(x
r
−x
i
)Q(x
r
)
x
i
−x
j
=
x
i
−x
j
x
i
−x
j
f(x
r
) = f(x
r
).
11
Sergi Natanovici Bernstein (1880-1968) a adus un aport major ˆın
domeniul aproxim˘ arii polinomiale, continuˆ and tradit ¸ia lui Cebˆıs¸ev.
A dat o demonstrat ¸ie constructiv˘ a a teoremei de aproximare a lui
Weierstrass cu ajutorul polinoamelor care ˆıi poart˘ a numele. A avut
contribut ¸ii importante s¸i ˆın domeniul ecuat ¸iilor diferent ¸iale s¸i al teoriei
probabilit˘ at ¸ilor.
208 Aproximarea funct ¸iilor
Dar
P(x
i
) =
(x
i
−x
j
)
ˆ
Q(x
i
) −(x
i
−x
j
)Q(x
i
)
x
i
−x
j
= f(x
i
)
s¸i
P(x
j
) =
(x
j
−x
i
)
ˆ
Q(x
j
) −(x
j
−x
i
)Q(x
j
)
x
i
−x
j
= f(x
j
),
deci P = P
0,1,...,k
.
ˆ
In acest mod am stabilit o relat ¸ie de recurent ¸˘ a ˆıntre un polinomde interpolare Lagrange de
gradul k s¸i dou˘ a polinoame de interpolare Lagrange de gradul k −1. Calculele pot fi as¸ezate
ˆın form˘ a tabelar˘ a
x
0
P
0
x
1
P
1
P
0,1
x
2
P
2
P
1,2
P
0,1,2
x
3
P
3
P
2,3
P
1,2,3
P
0,1,2,3
x
4
P
4
P
3,4
P
2,3,4
P
1,2,3,4
P
0,1,2,3,4
S˘ a presupunem c˘ a ˆın acest moment P
0,1,2,3,4
nu ne asigur˘ a precizia dorit˘ a. Se poate se-
lecta un nou nod s¸i ad˘ auga o nou˘ a linie tabelei
x
5
P
5
P
4,5
P
3,4,5
P
2,3,4,5
P
1,2,3,4,5
P
0,1,2,3,4,5
iar elementele vecine de pe linie, coloan˘ a sau diagonal˘ a se pot compara pentru a vedea dac˘ a
s-a obt ¸inut precizia dorit˘ a.
Metoda de mai sus se numes¸te metoda lui Neville .
Notat ¸iile pot fi simplificate
Q
i,j
:= P
i−j,i−j+1,...,i−1,i
,
Q
i,j−1
= P
i−j+1,...,i−1,i
,
Q
i−1,j−1
:= P
i−j,i−j+1,...,i−1
.
Din (5.4.1) rezult˘ a
Q
i,j
=
(x −x
i−j
)Q
i,j−1
−(x −x
i
)Q
i−1,j−1
x
i
−x
i−j
,
pentru j = 1, 2, 3, . . . , i = j + 1, j + 2, . . .
ˆ
In plus, Q
i,0
= f(x
i
). Obt ¸inem tabelul
x
0
Q
0,0
x
1
Q
1,0
Q
1,1
x
2
Q
2,0
Q
2,1
Q
2,2
x
3
Q
3,0
Q
3,1
Q
3,2
Q
3,3
5.4. Calculul eficient al polinoamelor de interpolare 209
Dac˘ a procedeul de interpolare converge, atunci s¸irul Q
i,i
converge s¸i el s¸i s-ar putea lua
drept criteriu de oprire
[Q
i,i
−Q
i−1,i−1
[ < ε.
Pentru a rapidiza algoritmul nodurile se vor ordona cresc˘ ator dup˘ a valorile [x
i
−x[.
Metoda lui Aitken este similar˘ a cu metoda lui Neville. Ea construies¸te tabelul
x
0
P
0
x
1
P
1
P
0,1
x
2
P
2
P
0,2
P
0,1,2
x
3
P
3
P
0,3
P
0,1,3
P
0,1,2,3
x
4
P
4
P
0,4
P
0,1,4
P
0,1,2,4
P
0,1,2,3,4
Pentru a calcula o nou˘ a valoare se utilizeaz˘ a valoarea din vˆ arful coloanei precedente s¸i
valoarea din aceeas¸i linie, coloana precedent˘ a.
5.4.2. Metoda diferent¸elor divizate
Vom nota cu L
k
f polinomul de interpolare Lagrange cu nodurile x
0
, x
1
, . . . , x
k
pentru
k = 0, 1, . . . , n. Vom construi L
m
prin recurent ¸˘ a. Avem
(L
0
f)(x) = f(x
0
).
Pentru k ≥ 1 polinomul L
k
−L
k−1
este de grad k, se anuleaz˘ a ˆın punctele x
0
, x
1
, . . . , x
k
s¸i
deci este de forma:
(L
k
f)(x) = (L
k−1
f)(x) +f[x
0
, x
1
, . . . , x
k
](x −x
0
)(x −x
1
) . . . (x − x
k−1
), (5.4.2)
unde f[x
0
, x
1
, . . . , x
k
] desemneaz˘ a coeficientul lui x
k
din (L
k
f)(x). Se deduce expresia
polinomului de interpolare L
m
f cu nodurile x
0
, x
1
, . . . , x
n
(L
m
f)(x) = f(x
0
) +
m
¸
k=1
f[x
0
, x
1
, . . . , x
k
](x −x
0
)(x −x
1
) . . . (x −x
k−1
), (5.4.3)
numit˘ a forma Newton
12
a polinomului de interpolare Lagrange.
Formula (5.4.3) reduce calculul prin recurent ¸˘ a al lui L
m
f la cel al coeficient ¸ilor
f[x
0
, x
1
, . . . , x
k
], k = 0, m.
Are loc
12
Sir Isaac Newton (1643 - 1727) a fost una dintre cele mai remarcabile
figuri ale matematicii s¸i fizicii din vremea sa. Nu numai c˘ a dat legile
fundamentale ale fizicii moderne, dar a fost s¸i unul dintre inventatorii
calculului diferent ¸ial s¸i integral (al˘ aturi de Leibniz, cu care a intrat
ˆıntr-o polemic˘ a de o viat˘ a privind prioritatea). Lucrarea sa care a avut
cea mai mare influent ¸˘ a a fost Principia, care cont ¸ine ideile sale asupra
interpol˘ arii s¸i utiliz˘ arii ei la integrare.
210 Aproximarea funct ¸iilor
Lema 5.4.2.
∀ k ≥ 1 f[x
0
, x
1
, . . . , x
k
] =
f[x
1
, x
2
, . . . , x
k
] −f[x
0
, x
1
, . . . , x
k−1
]
x
k
−x
0
(5.4.4)
s¸i
f[x
i
] = f(x
i
), i = 0, 1, . . . , k.
Demonstrat ¸ie. Not˘ am, pentru k ≥ 1 cu L

k−1
f polinomul de interpolare pentru f de grad
k − 1 s¸i cu nodurile x
1
, x
2
, . . . , x
k
; coeficientul lui x
k−1
este f[x
1
, x
2
, . . . , x
k
]. Polinomul
q
k
de grad k definit prin
q
k
(x) =
(x −x
0
)(L

k−1
f)(x) −(x −x
k
)(L
k−1
f)(x)
x
k
−x
0
coincide cu f ˆın punctele x
0
, x
1
, . . . , x
k
s¸i deci q
k
(x) ≡ (L
k
f)(x). Formula (5.4.4) se obt ¸ine
identificˆ and coeficientul lui x
k
din cei doi membri.
Definit ¸ia 5.4.3. Cantitatea f[x
0
, x
1
, . . . , x
k
] se numes¸te diferent ¸˘ a divizat˘ a de ordinul k a lui
f ˆın punctele x
0
, x
1
, . . . , x
k
.
Alt˘ a notat ¸ie utilizat˘ a este [x
0
, . . . , x
k
; f].
Din definit ¸ie rezult˘ a c˘ a f[x
0
, x
1
, . . . , x
k
] este independent˘ a de ordinea punctelor x
i
s¸i ea
poate fi calculat˘ a ˆın funct ¸ie de f(x
0
), . . . , f(x
m
).
ˆ
Intr-adev˘ ar PIL de grad ≤ m relativ la
punctele x
0
, . . . , x
m
se scrie
(L
m
f)(x) =
m
¸
i=0

i
f(x
i
)
s¸i coeficientul lui x
m
este
f[x
0
, . . . , x
m
] =
m
¸
i=0
f(x
i
)
m
¸
j=0
j=i
(x
i
−x
j
)
. (5.4.5)
Diferent ¸ele divizate se pot obt ¸ine prin algoritmul tabelar urm˘ ator, bazat pe formula (5.4.4),
5.4. Calculul eficient al polinoamelor de interpolare 211
care este mai flexibil s¸i mai put ¸in costisitor decˆ at aplicarea formulei (5.4.5)
x
0
f[x
0
] f[x
0
, x
1
] f[x
0
, x
1
, x
2
] f[x
0
, x
1
, x
2
, x
3
]
x
1
f[x
1
] f[x
1
, x
2
] f[x
1
, x
2
, x
3
]
x
2
f[x
2
] f[x
2
, x
3
]
x
3
f[x
3
]
E E E
¨
¨
¨
¨
¨
¨B
E
¨
¨
¨
¨
¨
¨B
E
¨
¨
¨
¨
¨
¨B
¨
¨
¨
¨
¨
¨B
E
¨
¨
¨
¨
¨
¨B
¨
¨
¨
¨
¨
¨B
Prima coloan˘ a cont ¸ine valorile lui f, a doua valorile diferent ¸elor divizate de ordinul I s¸.a.m.d;
se trece de la o coloan˘ a la urm˘ atoarea utilizˆ and formula (5.4.4): fiecare element este diferent ¸a
dintre elementul situat ˆın stˆ anga s¸i dedesubtul lui s¸i elementul situat imediat ˆın stˆ anga lui,
ˆımp˘ art ¸it˘ a la diferent ¸a dintre valoarea lui x determinat˘ a mergˆ and pe diagonal˘ a ˆın jos s¸i valoarea
lui x situat˘ a la stˆ anga pe orizontal˘ a. Diferent ¸ele divizate care apar ˆın formula lui Newton
(5.4.3) sunt cele m+1 elemente de pe prima linie a tabelei diferent ¸elor divizate. Calculul lor
necesit˘ a n(n+1) adun˘ ari s¸i
1
2
n(n+1) ˆımp˘ art ¸iri. Ad˘ augarea unui nou punct (x
m+1
, f[x
m+1
])
necesit˘ a generarea diagonalei urm˘ atoare. L
m+1
f poate fi obt ¸inut din L
m
f ad˘ augˆ and termenul
f[x
0
, . . . , x
m+1
](x −x
0
) . . . (x −x
m+1
).
Sursa MATLAB 5.14 calculeaz˘ a tabela diferent ¸elor divizate, iar 5.15 forma Newton a
polinomului de interpolare Lagrange.
Sursa MATLAB 5.14 Generarea tabelei diferent ¸elor divizate
function td=difdiv(x,f);
%DIFDIV - obtine tabela diferentelor divizate
%apel td=difdiv(x,f);
%x - nodurile
%f- valorile functiei
%td - tabela diferentelor divizate
lx=length(x);
td=zeros(lx,lx);
td(:,1)=f’;
for j=2:lx
td(1:lx-j+1,j)=diff(td(1:lx-j+2,j-1))./...
(x(j:lx)-x(1:lx-j+1))’;
end
Observat ¸ia 5.4.4. Eroarea de interpolare este dat˘ a de
f(x) −(L
m
f)(x) = u
m
(x)f[x
0
, x
1
, . . . , x
m
, x]. (5.4.6)
212 Aproximarea funct ¸iilor
Sursa MATLAB 5.15 Calculul formei Newton a polinomului de interpolare Lagrange
function z=pNewton(td,x,t)
%PNEWTON - calculeaza PIL in forma Newton
%apel z=pNewton(td,x,t)
%td - tabela diferentelor divizate
%x - nodurile de interpolare
%t - punctele in care se calculeaza valoarea
% polinomului de interpolare
%z - valorile polinomului de interpolare
lt=length(t); lx=length(x);
for j=1:lt
d=t(j)-x;
z(j)=[1,cumprod(d(1:lx-1))]
*
td(1,:)’;
end
ˆ
Intr-adev˘ ar, este suficient s˘ a observ˘ am c˘ a
(L
m
f)(t) +u
m
(t)f[x
0
, . . . , x
m
; x]
este conformlui (5.4.3) polinomul de interpolare (ˆın t) al lui f ˆın punctele x
0
, x
1
, . . . , x
m
, x.
Se deduce din teorema referitoare la restul formulei de interpolare Lagrange (5.3.22) c˘ a exist˘ a
ξ ∈ (a, b) astfel ˆıncˆ at
f[x
0
, x
1
, . . . , x
m
] =
1
m!
f
(m)
(ξ) (5.4.7)
(formula de medie pentru diferent ¸e divizate). ♦
Diferent ¸a divizat˘ a se poate scrie sub forma unui cˆ at a doi determinant ¸i.
Teorema 5.4.5. Are loc
f[x
0
, . . . , x
m
] =
(Wf)(x
0
, . . . , x
m
)
V (x
0
, . . . , x
m
)
(5.4.8)
unde
(Wf)(x
0
, . . . , x
n
) =

1 x
0
x
2
0
. . . x
m−1
0
f(x
0
)
1 x
1
x
2
1
. . . x
m−1
1
f(x
1
)
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1 x
m
x
2
m
. . . x
m−1
m
f(x
m
)

, (5.4.9)
iar V (x
0
, . . . , x
m
) este determinantul Vandermonde.
Demonstrat ¸ie. Se dezvolt˘ a (Wf)(x
0
, . . . , x
m
) dup˘ a elementele ultimei coloane s¸i t ¸inˆ and
cont c˘ a fiecare complement algebric este un determinant Vandermonde, se obt ¸ine
f[x
0
, . . . , x
m
] =
1
V (x
0
, . . . , x
m
)
m
¸
i=0
V (x
0
, . . . , x
i−1
, x
i+1
, . . . , x
m
)f(x
i
) =
5.4. Calculul eficient al polinoamelor de interpolare 213
=
m
¸
i=0
(−1)
m−i
f(x
i
)
(x
i
− x
0
) . . . (x
i
−x
i−1
)(x
i
−x
i+1
) . . . (x
n
−x
i
)
,
din care dup˘ a schimbarea semnelor ultimilor m−i termeni rezult˘ a (5.4.5).
5.4.3. Diferent¸e finite: formula lui Newton progresiv˘ a s¸i regresiv˘ a
ˆ
In cazul cˆ and punctele de interpolare x
i
nu sunt echidistante se utilizeaz˘ a algoritmul lui
Newton descris anterior; ˆın cazul cˆ and punctele sunt echidistante se poate construi un algo-
ritm mai simplu s¸i mai put ¸in costisitor. Istoric aces¸ti algoritmi au avut o mare important ¸˘ a
pentru interpolarea funct ¸iilor ale c˘ aror valori erau tabelate; aparit ¸ia calculatoarelor moderne
a diminuat acest interes, dar noile (co)procesoare flotante i-au readus ˆın actualitate.
Presupunem c˘ a funct ¸ia f este cunoscut˘ a ˆın punctele x
i
cu pasul h
x
i
= x
0
+ih, i = 0, 1, . . .
Se definesc diferent ¸ele progresive prin

0
f
i
= f(x
i
) = f
i
,
s¸i ∀ k ≥ 0

k+1
f
i
= ∆(∆
k
f
i
) = ∆
k
f
i+1
−∆
k
f
i
.
Cu ajutorul formulei (5.4.5) se verific˘ a imediat c˘ a

k
f
i
= f[x
i
, x
i+1
, . . . , x
i+k
]k!h
k
.
Forma polinomului Newton L
m
f de gradul m a lui f ˆın punctele x
0
, x
1
, . . . , x
m
se
simplific˘ a. Dac˘ a s = (x −x
0
)/h,
(x−x
0
)(x−x
1
) . . . (x−x
k−1
)f[x
0
, x
1
, . . . , x
k
] =
s(s−1) . . . (s−k+1)
k!

k
f
0
s¸i deci
(L
m
f)(x) = f
0
+
s
1!
∆f
0
+
s(s −1)
2!

2
f
0
+. . .
+
s(s −1) . . . (s −m + 1)
m!

m
f
0
.
Utilizˆ and pentru s ∈ R, k ∈ N notat ¸ia

s
k

=
s(s −1) . . . (s −k + 1)
k!
(coeficient binomial generalizat), se obt ¸ine formula lui Newton progresiv˘ a
(L
m
f)(x) = f
0
+

s
1

∆f
0
+

s
2


2
f
0
+ +

s
n


n
f
0
, (5.4.10)
214 Aproximarea funct ¸iilor
unde s = (x −x
0
)/h.
ˆ
In practic˘ a aceast˘ a formul˘ a serves¸te la calculul lui (L
m
f)(x) ˆın puncte apropiate de
ˆınceputul tabelei. Diferent ¸ele finite succesive se obt ¸in din tabloul triunghiular
x
0
f
0
ց
∆f
0
ր ց
x
1
f
1

2
f
0
ց ր ց
∆f
1

3
f
0
ր ց ր
.
.
.
x
2
f
2

2
f
1
.
.
.
ց ր
.
.
.
.
.
.
∆f
2
.
.
.
.
.
.
ր
.
.
.
.
.
.
.
.
.
x
3
f
3
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
unde
a
ց
c
ր
b
ˆınseamn˘ a c = b −a.
Eroarea comis˘ a dup˘ a m pas¸i, se scrie pentru x = x
0
+sh
f(x) −(L
m
f)(x) = h
m+1

s
m+ 1

f
(m+1)

x
), (5.4.11)
unde ξ
x
apart ¸ine celui mai mic interval ce cont ¸ine x
0
, x
m
s¸i x.
Analog se introduce operatorul de diferent ¸˘ a finit˘ a regresiv˘ a ∇ prin

0
f
i
= f
i

1
f
i
= f
i
−f
i−1

k+1
f
i
= ∇(∇
k
f
i
) = ∇
k
f
i
−∇
k
f
i−1
Efectuˆ and schimbarea de variabil˘ a s =
x −x
n
m
se obt ¸ine
(L
m
f)(x) = f
m
+
s
1!
∇f
m
+
s(s + 1)
2!

2
f
m
+. . .
+
s(s + 1) . . . (s +n −1)
m!

m
f
m
,
5.4. Calculul eficient al polinoamelor de interpolare 215
care se mai poate scrie
(L
m
f)(x) = f
m
+

s
1

∇f
m
+

s + 1
2


2
f
m
+ +

s +m−1
m


m
f
m
, (5.4.12)
numit˘ a formula lui Newton regresiv˘ a .
Eroarea de interpolare se scrie sub forma
f(x) −(L
m
f)(x) = h
m+1

s +m
m+ 1

f
(m+1)

x
).
unde ξ
x
apart ¸ine celui mai mic interval ce cont ¸ine x
0
, x
m
s¸i x. Formula (5.4.12) serves¸te
pentru calculul polinomului de interpolare ˆın valori apropiate de cap˘ atul tabelei. Diferent ¸ele
regresive se pot calcula cu tabela
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
x
m−3
f
m−3
.
.
.
.
.
.
.
.
.
ց
.
.
.
.
.
.
.
.
.
∇f
m−2
.
.
.
.
.
.
ր ց
.
.
.
.
.
.
x
m−2
f
m−2

2
f
m−1
.
.
.
ց ր ց
.
.
.
∇f
m−1

3
f
m
ր ց ր
x
m−1
f
m−1

2
f
m
ց ր
∇f
m
ր
x
m
f
m
unde
a
ց
c
ր
b
ˆınseamn˘ a c = b −a.
5.4.4. Diferent¸e divizate cu noduri multiple
Formula (5.4.8) serves¸te ca baz˘ a pentru introducerea diferent ¸ei divizate cu noduri multi-
ple: dac˘ a f ∈ C
m
[a, b] s¸i α ∈ [a, b], atunci
lim
x0,...,xn→α
[x
0
, . . . , x
n
; f] = lim
ξ→α
f
m
(ξ)
m!
=
f
(m)
(α)
m!
216 Aproximarea funct ¸iilor
Aceasta justific˘ a relat ¸ia
[α, . . . , α
. .. .
m+1
; f] =
1
m!
f
(m)
(α).
Reprezentˆ and aceasta ca pe un cˆ at de doi determinant ¸i se obt ¸ine
(Wf)

¸
α, . . . , α
. .. .
m+1
¸

=

1 α α
2
. . . α
m−1
f(α)
0 1 2α . . . (m−1)α
m−2
f

(α)
. . . . . . . . . . . . . . . . . .
0 0 0 . . . (m−1)! f
(m−1)
(α)

s¸i
V

¸
α, . . . , α
. .. .
m+1
¸

=

1 α α
2
. . . α
m
0 1 2α . . . mα
m−1
. . . . . . . . . . . . . . .
0 0 0 . . . m!

,
adic˘ a cei doi determinant ¸i sunt constituit ¸i din linia relativ˘ a la nodul α s¸i derivatele succesive
ale acesteia pˆ an˘ a la ordinul mˆın raport cu α.
Generalizarea pentru mai multe noduri este urm˘ atoarea:
Definit ¸ia 5.4.6. Fie r
k
∈ N, k = 0, m, n = r
0
+ +r
m
. Presupunem c˘ a exist˘ a f
(j)
(x
k
),
k = 0, m, j = 0, r
k
−1. M˘ arimea
[x
0
, . . . , x
0
. .. .
r0
, x
1
, . . . , x
1
. .. .
r1
, . . . , x
m
, . . . , x
m
. .. .
rm
;f] =
(Wf)(x
0
, . . . , x
0
, . . . , x
m
, . . . , x
m
)
V (x
0
, . . . , x
0
, . . . , x
m
, . . . , x
m
)
unde
(Wf)(x
0
, . . . , x
0
, . . . , x
m
, . . . , x
m
) =
=

1 x
0
. . . x
r0−1
0
. . . x
n−1
0
f(x
0
)
0 1 . . . (r
0
−1)x
r0−2
0
. . . (n −1)x
n−2
0
f

(x
0
)
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
0 0 . . . (r
0
−1)! . . .
¸
r0−1
p=1
(n −p)x
n−r0
0
f
(r0−1)
(x
0
)
1 x
m
. . . x
rm−1
m
. . . x
n−1
m
f(x
m
)
0 1 . . . (r
m
−1)x
rm−2
m
. . . (n −1)x
n−2
m
f

(x
m
)
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
0 0 . . . (r
m
−1)! . . .
¸
rm−1
p=1
(n −p)x
n−rm
m
f
(rn−1)
(x
n
)

iar V (x
0
, . . . , x
0
, . . . , x
m
, . . . , x
m
) este ca mai sus, exceptˆ and ultima coloan˘ a care este
(x
n
0
, nx
n−1
0
, . . . ,
r0−2
¸
p=0
(n − p)x
n−r0+1
0
, . . . , x
n
m
, nx
n−1
m
, . . . ,
rm−2
¸
p=0
x
n−rm+1
m
)
T
se numes¸te diferent ¸˘ a divizat˘ a cu nodurile multiple x
k
, k = 0, m s¸i ordinele de multiplicitate
r
k
, k = 0, m.
5.5. Interpolare spline 217
z
0
= x
0
f[z
0
] f[z
0
, z
1
] = f

(x
0
) f[z
0
, z
1
, z
2
] =
f[z1,z2]−f[z0,z1]
z2−z0
z
1
= x
0
f[z
1
] f[z
1
, z
2
] =
f(z2)−f(z1)
z2−z1
f[z
1
, z
2
, z
3
] =
f[z3,z2]−f[z2,z1]
z3−z1
z
2
= x
1
f[z
2
] f[z
2
, z
3
] = f

(x
1
) f[z
2
, z
3
, z
4
] =
f[z4,z3]−f[z3,z2]
z4−z2
z
3
= x
1
f[z
3
] f[z
3
, z
4
] =
f(z4)−f(z3)
z4−z3
z
4
= x
2
f[z
4
] f[z
4
, z
5
] = f

(x
2
)
z
5
= x
2
f[z
5
]
Tabela 5.2: Tabel˘ a de diferent ¸e divizate pentru noduri duble
Generalizˆ and forma Newton a polinomului de interpolare Lagrange se obt ¸ine o metod˘ a
pentru calculul polinomului de interpolare Hermite bazat˘ a pe diferent ¸ele divizate cu noduri
multiple.
Presupunem c˘ a se dau nodurile x
i
, i = 0, m s¸i valorile f(x
i
), f

(x
i
). Definim secvent ¸a
de noduri z
0
, z
1
, . . . , z
2n+1
prin z
2i
= z
2i+1
= x
i
, i = 0, m. Construim acum tabela
diferent ¸elor divizate utilizˆ and nodurile z
i
, i = 0, 2m+ 1. Deoarece z
2i
= z
2i+1
= x
i
pentru
orice i, f[x
2i
, x
2i+1
] este o diferent ¸˘ a divizat˘ a cu nod dublu s¸i este egal˘ a cu f

(x
i
), deci vom
utiliza f

(x
0
), f

(x
1
), . . . , f

(x
m
) ˆın locul diferent ¸elor divizate de ordinul I
f[z
0
, z
1
], f[z
2
, z
3
], . . . , f[z
2m
, z
2m+1
].
Restul diferent ¸elor se obt ¸in ˆın manier˘ a obis¸nuit˘ a, as¸a cum se arat˘ a ˆın tabelul 5.2. Ideea
poate fi extins˘ a s¸i pentru alte interpol˘ ari Hermite. Se pare c˘ a metoda este datorat˘ a lui Powell.
Sursa MATLAB 5.16 cont ¸ine o funct ¸ie pentru calculul diferent ¸elor divizate cu noduri
duble, difdivnd. Ea returneaz˘ a vectorul nodurilor dublate s¸i tabela de diferent ¸e. Pentru
a calcula polinomul de interpolare Hermite se poate utiliza funct ¸ia pNewton cu tabela s¸i
nodurile returnate de difdivnd.
5.5. Interpolare spline
Fie ∆ o diviziune a lui [a, b]
∆ : a = x
1
< x
2
< < x
n−1
< x
n
= b. (5.5.1)
Vom utiliza un polinom de grad mic pe subintervalul [x
i
, x
i+1
], i = 1, n −1. Motivul
este acela c˘ a pe intervale suficient de mici funct ¸iile pot fi aproximate arbitrar de bine prin
polinoame de grad mic, chiar 0 sau 1.
Am introdus ˆın exemplul 5.0.12 spat ¸iul
S
k
m
(∆) = ¦s : s ∈ C
k
[a, b], s[
[xi,xi+1]
∈ P
m
, i = 1, 2, . . . , n −1¦ (5.5.2)
m ≥ 0, k ∈ N ∪ ¦−1¦, numit spat ¸iul funct ¸iilor spline polinomiale de grad m s¸i clas˘ a de
netezime k. Dac˘ a k = m, atunci funct ¸iile s ∈ S
m
m
(∆) sunt polinoame.
218 Aproximarea funct ¸iilor
Sursa MATLAB 5.16 Generarea tabelei de diferent ¸e divizate cu noduri duble
function [z,td]=difdivnd(x,f,fd);
%DIFDIVND - tabela diferentelor divizate cu noduri duble
%apel td=difdivnd(x,f,fd)
%x -nodurile
%f - valorile functiei in noduri
%fd - valorile derivatei in noduri
%z - nodurile dublate
%td - tabela de diferente
z=zeros(1,2
*
length(x));
lz=length(z);
z(1:2:lz-1)=x;
z(2:2:lz)=x;
td=zeros(lz,lz);
td(1:2:lz-1,1)=f’;
td(2:2:lz,1)=f’;
td(1:2:lz-1,2)=fd’;
td(2:2:lz-2,2)=(diff(f)./diff(x))’;
for j=3:lz
td(1:lz-j+1,j)=diff(td(1:lz-j+2,j-1))./...
(z(j:lz)-z(1:lz-j+1))’;
end
5.5.1. Spline liniare
Pentru m = 1 s¸i k = 0 se obt ¸in spline liniare. Dorim s˘ a g˘ asim s ∈ S
0
1
(∆) astfel ˆıncˆ at
s(x
i
) = f
i
, unde f
i
= f(x
i
), i = 1, 2, . . . , n.
Solut ¸ia este trivial˘ a, vezi figura 5.15. Pe intervalul [x
i
, x
i+1
]
s(f; x) = f
i
+ (x −x
i
)f[x
i
, x
i+1
], (5.5.3)
iar
[f(x) −s(f(x))[ ≤
(∆x
i
)
2
8
max
x∈[xi,xi+1]
[f
′′
(x)[. (5.5.4)
Rezult˘ a c˘ a
|f() −s(f, )|


1
8
[∆[
2
|f
′′
|

. (5.5.5)
Dimensiunea lui S
0
1
(∆) se calculeaz˘ a astfel: deoarece avem n −1 port ¸iuni s¸i pe fiecare 2
coeficient ¸i (2 grade de libertate) s¸i fiecare condit ¸ie reduce num˘ arul de grade de libertate cu 1,
avem ˆın final
dimS
0
1
(∆) = 2n −2 −(n −2) = n.
5.5. Interpolare spline 219
x
2
x
3
x
4
x
n−1
a=x
1
x
n
=b
… … …
… … …
Figura 5.15: Spline liniare
O baz˘ a a spat ¸iului este dat˘ a de as¸a-numitele funct ¸ii B-spline. Punem x
0
= x
1
, x
n+1
=
x
n
, pentru i = 1, n
B
i
(x) =

x −x
i−1
x
i
−x
i−1
, pentru x
i−1
≤ x ≤ x
i
x
i+1
−x
x
i+1
−x
i
, pentru x
i
≤ x ≤ x
i+1
0, ˆın rest
(5.5.6)
Pentru i = 1 prima s¸i pentru i = n a doua ecuat ¸ie se ignor˘ a. Funct ¸ia B
i
se numes¸te p˘ al˘ arie
chinezeasc˘ a.
Graficul funct ¸iilor B
i
apare ˆın figura 5.16. Ele au proprietatea
B
i
(x
j
) = δ
ij
,
sunt liniar independente, deoarece
s(x) =
n
¸
i=1
c
i
B
i
(x) = 0 ∧ x = x
j
⇒c
j
= 0.
s¸i
'B
i
`
i=1,n
= S
0
1
(∆),
B
i
joac˘ a acelas¸i rol ca polinoamele fundamentale Lagrange ℓ
i
.
220 Aproximarea funct ¸iilor
x
2
x
3
x
4
a=x
0
=x
1
x
n
=x
n+1
=b x
n−1
B
1
B
2
B
3
B
n−1
B
n
Figura 5.16: Funct ¸ii B-spline de grad 1
5.5.2. Interpolarea cu spline cubice
Funct ¸iile spline cubice sunt cele mai utilizate.
Vom discuta ˆıntˆ ai problema interpol˘ arii pentru s ∈ S
1
3
(∆). Continuitatea derivatei de
ordinul I pentru s
3
(f; ) se poate realiza impunˆ and valorile primei derivate ˆın fiecare punct
x
i
, i = 1, 2, . . . , n. Astfel fie m
1
, m
2
, . . . , m
n
numere arbitrare date s¸i not˘ am
s
3
(f; )[
[xi,xi+1]
= p
i
(x), i = 1, 2, . . . , n −1 (5.5.7)
Realiz˘ am s
3
(f; x
i
) = m
i
, i = 1, n, luˆ and fiecare bucat˘ a ca solut ¸ie unic˘ a a problemei de
interpolare Hermite, s¸i anume
p
i
(x
i
) = f
i
, p
i
(x
i+1
) = f
i+1
, i = 1, n −1, (5.5.8)
p

i
(x
i
) = m
i
, p

i
(x
i+1
) = m
i+1
Vom rezolva problema folosind interpolarea Newton. Diferent ¸ele divizate sunt
x
i
f
i
m
i
f[xi,xi+1]−mi
∆xi
mi+1+mi−2f[xi,xi+1]
(∆xi)
2
x
i
f
i
f[x
i
, x
i+1
]
mi+1−f[xi,xi+1]
∆xi
x
i+1
f
i+1
m
i+1
x
i+1
f
i+1
5.5. Interpolare spline 221
s¸i deci forma Newton a polinomului de interpolare Hermite este
p
i
(x) = f
i
+ (x −x
i
)m
i
+ (x −x
i
)
2
f[x
i
, x
i+1
] −m
i
∆x
i
+
+ (x −x
i
)
2
(x − x
i+1
)
m
i+1
+m
i
−2f[x
i
, x
i+1
]
(∆x
i
)
2
.
Forma Taylor a lui p
i
pentru x
i
≤ x ≤ x
i+1
este
p
i
(x) = c
i,0
+c
i,1
(x −x
i
) +c
i,2
(x −x
i
)
2
+c
i,3
(x −x
i
)
3
(5.5.9)
s¸i deoarece x −x
i+1
= x −x
i
−∆x
i
, prin identificare avem
c
i,0
= f
i
c
i,1
= m
i
c
i,2
=
f[x
i
, x
i+1
] −m
i
∆x
i
−c
i,3
∆x
i
(5.5.10)
c
i,3
=
m
i+1
+m
i
−2f[x
i
, x
i+1
]
(∆x
i
)
2
Deci, pentru a calcula s
3
(f; x) ˆıntr-un punct care nu este nod, trebuie ˆın prealabil s˘ a localiz˘ am
intervalul [x
i
, x
i+1
] ∋ x, apoi s˘ a calcul˘ am coeficient ¸ii cu (5.5.10) s¸i s˘ a evalu˘ am spline-ul cu
(5.5.9).
Vom discuta cˆ ateva alegeri posibile pentru m
1
, m
2
, . . . , m
n
.
Interpolare Hermite cubic˘ a pe port¸iuni
Se alege m
i
= f

(x
i
) (presupunˆ and c˘ a aceste derivate sunt cunoscute). Se ajunge la o
schem˘ a strict local˘ a, ˆın care fiecare bucat˘ a poate fi determinat˘ a independent de cealalt˘ a. Mai
mult, eroarea este
[f(x) −p
i
(x)[ ≤

1
2
∆x
i

4
max
x∈[xi,xi+1]
[f
(4)
(x)[
4!
, x
i
≤ x ≤ x
i+1
. (5.5.11)
Deci
|f() −s
3
(f; )|


1
384
[∆[
4
|f
(4)
|

. (5.5.12)
Pentru puncte echidistante
[∆[ = (b −a)/(n −1)
s¸i deci
|f() −s
3
(f; )|

= O(n
−4
), n →∞. (5.5.13)
222 Aproximarea funct ¸iilor
Interpolare cu spline cubice
Cerem ca s
3
(f; ) ∈ S
2
3
(∆), adic˘ a continuitatea derivatelor de ordinul al II-lea. Aceasta
ˆınseamn˘ a cu notat ¸ia (5.5.7)
p
′′
i−1
(x
i
) = p
′′
i
(x
i
), i = 2, n −1, (5.5.14)
care convertit˘ a ˆın coeficient ¸i Taylor (5.5.9) d˘ a
2c
i−1,2
+ 6c
i−1,3
∆x
i−1
= 2c
i,2
, i = 2, n −1.
ˆ
Inlocuind cu valorile explicite (5.5.10) pentru coeficient ¸i, se ajunge la sistemul liniar
∆x
i
m
i−1
+ 2(∆x
i−1
+ ∆x
i
)m
i
+ ∆x
i−1
m
i+1
= b
i
, i = 2, n −1, (5.5.15)
unde
b
i
= 3¦∆x
i
f[x
i−1
, x
i
] + ∆x
i−1
f[x
i
, x
i+1
]¦. (5.5.16)
Avem un sistem de n − 2 ecuat ¸ii liniare cu n necunoscute m
1
, m
2
, . . . , m
n
. Odat˘ a alese
m
1
s¸i m
n
, sistemul devine tridiagonal s¸i se poate rezolva eficient prin eliminare gaussian˘ a,
prin factorizare sau cu o metod˘ a iterativ˘ a.
Se dau ˆın continuare cˆ ateva alegeri posibile pentru m
1
s¸i m
n
.
Spline complete(racordate, limitate). Lu˘ am m
1
= f

(a), m
n
= f

(b). Se s¸tie c˘ a pentru
acest tip de spline, dac˘ a f ∈ C
4
[a, b]
|f
(r)
() −s
(r)
(f; )|

≤ c
r
[∆[
4−r
|f
(n)
|

, r = 0, 1, 2, 3 (5.5.17)
unde c
0
=
5
384
, c
1
=
1
24
, c
2
=
3
8
, iar c
3
depinde de raportul
|∆|
mini ∆xi
.
Spline care utilizeaz˘ a derivatele secunde. Impunem condit ¸iile s
′′
3
(f; a) =
f
′′
(a); s
′′
3
(f; b) = f
′′
(b). Aceste condit ¸ii conduc la dou˘ a ecuat ¸ii suplimentare
2m
1
+m
2
= 3f[x
1
, x
2
] −
1
2
f
′′
(a)∆x
1
m
n−1
+ 2m
n
= 3f[x
n−1
, x
n
] +
1
2
f
′′
(b)∆x
n−1
(5.5.18)
Prima ecuat ¸ie se pune la ˆınceputul sistemului (5.5.15), iar a doua la sfˆ ars¸itul lui, p˘ astrˆ andu-se
astfel structura tridiagonal˘ a a sistemului.
Spline cubice naturale. Impunˆ and s
′′
(f; a) = s
′′
(f; b) = 0, se obt ¸in dou˘ a ecuat ¸ii noi din
(5.5.18) luˆ and f
′′
(a) = f
′′
(b) = 0.
Avantajul – este nevoie numai de valori ale lui f, nu s¸i ale derivatelor, dar pret ¸ul pl˘ atit
este degradarea preciziei la O([∆[
2
) ˆın vecin˘ atatea capetelor (ˆın afar˘ a de cazul cˆ and f
′′
(a) =
f
′′
(b) = 0).
5.5. Interpolare spline 223
”Not-a-knot spline”. (C. deBoor). Cerem ca p
1
(x) ≡ p
2
(x) s¸i p
n−2
(x) ≡ p
n−1
(x); adic˘ a
primele dou˘ a p˘ art ¸i s¸i respectiv ultimele dou˘ a trebuie s˘ a coincid˘ a. Aceasta ˆınseamn˘ a c˘ a primul
punct interior x
2
s¸i ultimul x
n−1
sunt ambele inactive. Se obt ¸in ˆınc˘ a dou˘ a ecuat ¸ii suplimentare
exprimˆ and continuitatea lui s
′′′
3
(f; x) ˆın x = x
2
s¸i x = x
n−1
. Condit ¸ia de continuitate a lui
s
3
(f, .) ˆın x
2
s¸i x
n−1
revine la egalitatea coeficient ¸ilor dominant ¸i c
1,3
= c
2,3
s¸i c
n−2,3
=
c
n−1,3
. De aici se obt ¸in ecuat ¸iile
(∆x
2
)
2
m
1
+ [(∆x
2
)
2
−(∆x
1
)
2
]m
2
−(∆x
1
)
2
m
3
= β
1
(∆x
2
)
2
m
n−2
+ [(∆x
2
)
2
−(∆x
1
)
2
]m
n−1
−(∆x
1
)
2
m
n
= β
2
,
unde
β
1
= 2¦(∆x
2
)
2
f[x
1
, x
2
] −(∆x
1
)
2
f[x
2
, x
3

β
2
= 2¦(∆x
n−1
)
2
f[x
n−2
, x
n−1
] −(∆x
n−2
)
2
f[x
n−1
, x
n
]¦.
Prima ecuat ¸ie se adaug˘ a pe prima pozit ¸ie iar a doua pe ultima pozit ¸ie a sistemului format din
cele n −2 ecuat ¸ii date de (5.5.15) s¸i (5.5.16). Sistemul obt ¸inut nu mai este tridiagonal, dar el
se poate transforma ˆın unul tridiagonal combinˆ and ecuat ¸iile 1 cu 2 s¸i n−1 cu n. Dup˘ a aceste
transform˘ ari prima s¸i ultima ecuat ¸ie devin
∆x
2
m
1
+ (∆x
2
+ ∆x
1
)m
2
= γ
1
(5.5.19)
(∆x
n−1
+ ∆x
n−2
)m
n−1
+ ∆x
n−2
m
n
= γ
2
, (5.5.20)
unde
γ
1
=
1
∆x
2
+ ∆x
1
¸
f[x
1
, x
2
]∆x
2
[∆x
1
+ 2(∆x
1
+ ∆x
2
)] + (∆x
1
)
2
f[x
2
, x
3
]
¸
γ
2
=
1
∆x
n−1
+ ∆x
n−2
¸
∆x
2
n−1
f[x
n−2
, x
n−1
] +
[2(∆x
n−1
+ ∆x
n−2
) + ∆x
n−1
]∆x
n−2
f[x
n−1
, x
n
]
¸
.
Funct ¸ia Splinecubic calculeaz˘ a coeficient ¸ii celor patru tipuri de spline cubice prezen-
tate. Ea construies¸te sistemul tridiagonal corespunz˘ ator cu matrice rar˘ a s¸i ˆıl rezolv˘ a cu op-
eratorul `. Diferent ¸ele ˆıntre tipurile de spline apar la prima s¸i la ultima ecuat ¸ie, care sunt
determinate ˆıntr-o instruct ¸iune switch.
function [a,b,c,d]=Splinecubic(x,f,tip,der)
%SPLINECUBIC - determina coeficientii spline-ului cubic
%x - abscisele
%f - ordonatele
%tip - 0 complet
% 1 cu derivate secunde
% 2 natural
% 3 not a knot (deBoor)
%der - informatii despre derivate
% [f’(a),f’(b)] pentru tipul 0
% [f’’(a), f’’(b)] pentru tipul 1
224 Aproximarea funct ¸iilor
if (nargin<4) | (tip==2), der=[0,0]; end
n=length(x);
%sortare noduri
if any(diff(x)<0), [x,ind]=sort(x); else, ind=1:n; end
y=f(ind); x=x(:); y=y(:);
%obtin ecuatiile 2 ... n-1
dx=diff(x); ddiv=diff(y)./dx;
ds=dx(1:end-1); dd=dx(2:end);
dp=2
*
(ds+dd);
md=3
*
(dd.
*
ddiv(1:end-1)+ds.
*
ddiv(2:end));
%tratare diferentiata tip - ecuatiile 1,n
switch tip
case 0 %complet
dp1=1; dpn=1; vd1=0; vdn=0;
md1=der(1); mdn=der(2);
case 1,2 %d2 si natural
dp1=2; dpn=2; vd1=1; vdn=1;
md1=3
*
ddiv(1)-0.5
*
dx(1)
*
der(1);
mdn=3
*
ddiv(end)+0.5
*
dx(end)
*
der(2);
case 3 %deBoor
x31=x(3)-x(1);xn=x(n)-x(n-2);
dp1=dx(2); dpn=dx(end-1);
vd1=x31; vdn=xn;
md1=((dx(1)+2
*
x31)
*
dx(2)
*
ddiv(1)+dx(1)ˆ2
*
ddiv(2))/x31;
mdn=(dx(end)ˆ2
*
ddiv(end-1)+(2
*
xn+dx(end))
*
dx(end-1)
*
...
ddiv(end))/xn;
end
%construiesc sistemul rar
dp=[dp1;dp;dpn]; dp1=[0;vd1;dd];
dm1=[ds;vdn;0]; md=[md1;md;mdn];
A=spdiags([dm1,dp,dp1],-1:1,n,n);
m=A \ md;
d=y(1:end-1);
c=m(1:end-1);
a=[(m(2:end)+m(1:end-1)-2
*
ddiv)./(dx.ˆ2)];
b=[(ddiv-m(1:end-1))./dx-dx.
*
a];
Calculul valorilor funct ¸iilor spline se poate face cu o singur˘ a funct ¸ie de evaluare pentru
toate tipurile:
function z=valspline(x,a,b,c,d,t)
%evaluare spline
%apel z=valspline(x,a,b,c,d,t)
%z - valorile
%t - punctele in care se face evaluare
%x - nodurile
%a,b,c,d - coeficientii
n=length(x);
5.5. Interpolare spline 225
x=x(:); t=t(:);
k = ones(size(t));
for j = 2:n-1
k(x(j) <= t) = j;
end
% Evaluare interpolant
s = t - x(k);
z = d(k) + s.
*
(c(k) + s.
*
(b(k) + s.
*
a(k)));
5.5.3. Propriet˘ at¸i de minimalitate ale funct ¸iilor spline cubice
Funct ¸iile spline cubice complete s¸i naturale au propriet˘ at ¸i interesante de optimalitate.
Pentru a le formula, este convenabil s˘ a consider˘ am nu numai subdiviziunea ∆ ci s¸i


: a = x
0
= x
1
< x
2
< x
3
< < x
n−1
< x
n
= x
n+1
= b, (5.5.21)
ˆın care capetele sunt noduri duble. Aceasta ˆınseamn˘ a c˘ a ori de cˆ ate ori interpol˘ am pe ∆

, in-
terpol˘ am valorile funct ¸iei pe punctele interioare, iar la capete valorile funct ¸iei s¸i ale derivatei.
Prima teorem˘ a se refer˘ a la funct ¸ii spline cubice complete s
compl
(f; ).
Teorema 5.5.1. Pentru orice funct ¸ie g ∈ C
2
[a, b] care interpoleaz˘ a f pe ∆

, are loc

b
a
[g
′′
(x)]
2
dx ≥

b
a
[s
′′
compl
(f; x)]
2
dx, (5.5.22)
cu egalitate dac˘ a s¸i numai dac˘ a g() = s
compl
(f; ).
Observat ¸ia 5.5.2. s
compl
(f; ) din teorema 5.5.1 interpoleaz˘ a f pe ∆

s¸i dintre tot ¸i
interpolant ¸ii de acest tip, derivata sa de ordinul II are norma minim˘ a. ♦
Demonstrat ¸ie. Folosim notat ¸ia prescurtat˘ a s
compl
= s. Teorema rezult˘ a imediat, dac˘ a ar˘ at˘ am
c˘ a

b
a
[g
′′
(x)]
2
dx =

b
a
[g
′′
(x) −s
′′
(x)]
2
dx +

b
a
[s
′′
(x)]
2
dx. (5.5.23)
Aceasta implic˘ a imediat (5.5.22) s¸i faptul c˘ a egalitatea ˆın (5.5.22) are loc dac˘ a s¸i numai dac˘ a
g
′′
(x) − s
′′
(x) ≡ 0, din care integrˆ and de dou˘ a ori de la a la x s¸i utilizˆ and propriet˘ at ¸ile de
interpolare ale lui s s¸i g ˆın x = a se obt ¸ine g(x) = s(x). Relat ¸ia (5.5.23) este echivalent˘ a cu

b
a
s
′′
(x)[g
′′
(x) −s
′′
(x)]dx = 0. (5.5.24)
Integrˆ and prin p˘ art ¸i s¸i t ¸inˆ and cont c˘ a s

(b) = g

(b) = f

(b) s¸i s

(a) = g

(a) = f

(a) se
obt ¸ine

b
a
s
′′
(x)[g
′′
(x) −s
′′
(x)]dx =
= s
′′
(x)[g

(x) −s

(x)]

b
a

b
a
s
′′′
(x)[g

(x) −s

(x)]dx =
= −

b
a
s
′′′
(x)[g

(x) −s

(x)]dx.
(5.5.25)
226 Aproximarea funct ¸iilor
Deoarece s
′′′
este constant˘ a pe port ¸iuni

b
a
s
′′′
(x)[g

(x) −s

(x)]dx =
n−1
¸
ν−1
s
′′′
(x
ν
+ 0)

xν+1

[g

(x) −s

(x)]dx =
=
n−1
¸
ν=1
s
′′′
(x
ν+0
)[g(x
ν+1
) −s(x
ν+1
) −(g(x
ν
) −s(x
ν
))] = 0,
c˘ aci atˆ at s cˆ at s¸i g interpoleaz˘ a f pe ∆. Aceasta demonstreaz˘ a (5.5.24) s¸i deci s¸i teorema.
Pentru interpolarea pe ∆ calitatea de a fi optimal revine funct ¸iilor spline naturale de in-
terpolare s
nat
(f; ).
Teorema 5.5.3. Pentru orice funct ¸ie g ∈ C
2
[a, b] ce interpoleaz˘ a f pe ∆, are loc

b
a
[g
′′
(x)]
2
dx ≥

b
a
[s
′′
nat
(f; x)]
2
dx (5.5.26)
cu egalitate dac˘ a s¸i numai dac˘ a g() = s
nat
(f; ).
Demonstrat ¸ia este analoag˘ a cu a teoremei 5.5.1, deoarece (5.5.25) are loc din nou c˘ aci
s
′′
(b) = s
′′
(a) = 0.
Punˆ and g() = s
compl
(f; ) ˆın teorema 5.5.3 se obt ¸ine

b
a
[s
′′
compl
(f; x)]
2
dx ≥

b
a
[s
′′
nat
(f; x)]
2
dx. (5.5.27)
Deci, ˆıntr-un anumit sens, spline-ul cubic natural este cel mai neted interpolant.
Proprietatea exprimat˘ a ˆın teorema 5.5.3 st˘ a la originea numelui de spline. Un spline este o
vergea flexibil˘ a folosit˘ a pentru a desena curbe. Dac˘ a forma sa este dat˘ a de ecuat ¸ia y = g(x),
x ∈ [a, b] s¸i dac˘ a spline-ul trebuie s˘ a treac˘ a prin punctele (x
i
, g
i
), atunci se presupune c˘ a
spline-ul are o form˘ a ce minimizeaz˘ a energia potent ¸ial˘ a

b
a
[g
′′
(x)]
2
dx
(1 + [g

(x)]
2
)
3
,
pentru toate funct ¸iile g supuse aceloras¸i restrict ¸ii. Pentru variat ¸ii lente ale lui g (|g

|

≪1)
aceasta aproximeaz˘ a bine proprietatea de minim din teorema 5.5.3.
5.6. Interpolare ˆın MATLAB
MATLAB are funct ¸ii pentru interpolare ˆın una, dou˘ a sau mai multe dimensiuni. Funct ¸ia
polyfit returneaz˘ a coeficient ¸ii polinomului de interpolare Lagrange dac˘ a gradul n este
egal cu num˘ arul de observat ¸ii minus 1.
Funct ¸ia interp1 accept˘ a perechi de date x(i), y(i) s¸i un vector xi al punctelor ˆın
care se face evaluarea. Ea construies¸te interpolantul corespunz˘ ator datelor x s¸i y s¸i returneaz˘ a
valorile interpolantului ˆın punctele din xi:
5.6. Interpolare ˆın MATLAB 227
yi = interp1(x,y,xi,metoda)
Elementele vectorului x trebuie s˘ a fie ordonate cresc˘ ator. Se admit patru tipuri de
interpolant ¸i, precizate de parametrul metoda, care poate avea una din urm˘ atoarele valori
• ’nearest’ - interpolare bazat˘ a pe vecinul cel mai apropiat;
• ’linear’ - interpolare liniar˘ a pe port ¸iuni (metoda implicit˘ a);
• ’spline’ - interpolare cu spline cubice;
• ’cubic’ sau ’pchip’ - interpolare Hermite cubic˘ a pe port ¸iuni.
Exemplul de mai jos ilustreaz˘ a funct ¸ionarea lui interp1 (fis¸ierul exinterp1.m).
x=[-1,-3/4, -1/3, 0, 1/2, 1]; y=x+sin(pi
*
x.ˆ2);
xi=linspace(-1,1,60); yi=xi+sin(pi
*
xi.ˆ2);
yn=interp1(x,y,xi,’nearest’);
yl=interp1(x,y,xi,’linear’);
ys=interp1(x,y,xi,’spline’);
%yc=interp1(x,y,xi,’pchip’);
plot(xi,yi,’:’,x,y,’o’,’MarkerSize’,12); hold on
plot(xi,yl,’--’,xi,ys,’-’)
stairs(xi,yn,’-.’)
set(gca,’XTick’,x);
set(gca,’XTickLabel’,’-1|-3/4|-1/3|0|1/2|1’)
set(gca,’XGrid’,’on’)
axis([-1.1, 1.1, -1.1, 2.1])
legend(’f’,’data’,’linear’, ’spline’, ’nearest’,4)
hold off
Exemplul alege s¸ase puncte de pe graficul lui f(x) = x + sin πx
2
s¸i calculeaz˘ a interpolant ¸ii
nearest, linear s¸i spline. Nu am inclus ˆın acest exemplu cubic deoarece graficul
obt ¸inut este foarte apropiat de cel obt ¸inut cu spline s¸i s-ar fi ˆınc˘ arcat figura. Graficul apare
ˆın figura 5.17.
Interpolarea spline este cea mai neted˘ a, dar interpolarea Hermite pe port ¸iuni p˘ astreaz˘ a
alura. Vom ˆıncerca s˘ a ilustram diferent ¸a dintre interpolarea spline s¸i interpolarea Hermite pe
port ¸iuni prin exemplul urm˘ ator (expsli cub.m).
x =[-0.99, -0.76, -0.48, -0.18, 0.07, 0.2, ...
0.46, 0.7, 0.84, 1.09, 1.45];
y = [0.39, 1.1, 0.61, -0.02, -0.33, 0.65, ...
1.13, 1.46, 1.07, 1.2, 0.3];
plot(x,y,’o’); hold on
xi=linspace(min(x),max(x),100);
ys=interp1(x,y,xi,’spline’);
yc=interp1(x,y,xi,’cubic’);
h=plot(xi,ys,’-’,xi,yc,’-.’);
legend(h,’spline’,’cubic’,4)
axis([-1.1,1.6,-0.8,1.6])
228 Aproximarea funct ¸iilor
−1 −3/4 −1/3 0 1/2 1
−1
−0.5
0
0.5
1
1.5
2
f
data
linear
spline
nearest
Figura 5.17: Exemplu de interpolare cu interp1
−1 −0.5 0 0.5 1 1.5
−0.5
0
0.5
1
1.5
spline
cubic
Figura 5.18: Interpolare cubic˘ a spline s¸i Hermite pe port ¸iuni
5.6. Interpolare ˆın MATLAB 229
Figura 5.18 d˘ a graficul astfel obt ¸inut.
Interpolarea spline s¸i Hermite cubic˘ a pe port ¸iuni se pot realiza s¸i direct, apelˆ and funct ¸ia
spline s¸i respectiv pchip..
Dˆ andu-se vectorii x s¸i y, comanda yy = spline(x,y,xx) returneaz˘ a ˆın vectorul
yy valorile spline-ului ˆın punctele din xx. Dac˘ a y este o matrice, se consider˘ a c˘ a avem
de-a face cu valori vectoriale s¸i interpolarea se face dup˘ a coloanele lui y; dimensiunea lui
yy este length(xx) pe size(y,2). Funct ¸ia spline calculeaz˘ a interpolantul spline de
tip deBoor. Dac˘ a y cont ¸ine cu dou˘ a valori mai multe decˆ at x, se calculeaz˘ a interpolantul
spline complet, iar prima s¸i ultima valoare din y se consider˘ a a fi derivatele ˆın capete. (Pentru
terminologia privind tipurile de spline vezi sect ¸iunea 5.5.2).
Exemplul pe care ˆıl d˘ am ˆın continuare ia s¸ase puncte de pe graficul lui y = sin(x),
calculeaz˘ a s¸i reprezint˘ a grafic spline-ul deBoor s¸i cel complet (vezi figura 5.19).
x = 0:2:10;
y = sin(x); yc=[cos(0),y,cos(10)];
xx = 0:.01:10;
yy = spline(x,y,xx);
yc = spline(x,yc,xx);
plot(x,y,’o’,xx,sin(xx),’-’,xx,yy,’--’,xx,yc,’-.’)
axis([-0.5,10.5,-1.3,1.3])
legend(’noduri’,’sin’,’deBoor’,’complet’,4)
0 1 2 3 4 5 6 7 8 9 10
−1
−0.5
0
0.5
1
noduri
sin
deBoor
complet
Figura 5.19: Spline deBoor s¸i complet
Sunt situat ¸ii ˆın care este convenabil s˘ a se lucreze cu coeficient ¸ii funct ¸iei spline (de ex-
emplu dac˘ a nodurile se p˘ astreaz˘ a s¸i xx se modific˘ a). Comanda pp=spline(x,y) mem-
oreaz˘ a coeficient ¸ii ˆıntr-o structur˘ a pp (piecewise polynomial) care cont ¸ine forma, nodurile,
matricea coeficient ¸ilor (cu 4 coloane pentru spline cubice), num˘ arul de subintervale, ordinul
230 Aproximarea funct ¸iilor
(gradul plus 1) s¸i dimensiunea. Funct ¸ia ppval evalueaz˘ a spline-ul folosind o astfel de struc-
tur˘ a. Alte prelucr˘ ari de nivel inferior se pot realiza cu mkpp (construct ¸ia unei structuri pp)
s¸i unmkpp (detalii despre componentele unei structuri pp). De exemplu, comanda yy =
spline(x,y,xx) se poate ˆınlocui cu scvent ¸a
pp = spline(x,y);
yy = ppval(pp,xx);
Vom da acum un exemplu de interpolare spline cu date vectoriale s¸i utilizare ppval.
Dorim s˘ a citim interactiv mai multe puncte de pe ecran s¸i s˘ a reprezent˘ am grafic spline-ul
parametric care trece prin aceste puncte, cu dou˘ a rezolut ¸ii diferite (s˘ a zicem cu 20 s¸i 150 de
puncte intermediare pe curb˘ a). Sursa este cont ¸inut˘ a ˆın script-ul splinevect.m s¸i o d˘ amˆın
continuare:
axis([0,1,0,1]);
hold on
[x,y]=ginput;
data=[x’;y’];
t=linspace(0,1,length(x));
tt1=linspace(0,1,20);
tt2=linspace(0,1,150);
pp=spline(t,data);
yy1=ppval(pp,tt1);
yy2=ppval(pp,tt2);
plot(x,y,’o’,yy1(1,:),yy1(2,:),yy2(1,:),yy2(2,:));
hold off
Citirea punctelor se face interactiv cu ginput. Coeficient ¸ii spline-ului se calculeaz˘ a o
singur˘ a dat˘ a, iar pentru evaluarea spline-ului se foloses¸te ppval. Propunem cititorului s˘ a
ˆıncerce acest exemplu.
Funct ¸ia pchip se poate apela ˆın una din formele:
yi = pchip(x,y,xx)
pp = pchip(x,y)
Prima form˘ a returneaz˘ a valori ale interpolantului ˆın xx, iar a doua o structur˘ a pp.
Semnificat ¸ia parametrilor este acceas¸i ca ˆın cazul funct ¸iei spline. Exemplul urm˘ ator cal-
culeaz˘ a interpolantul spline deBoor s¸i Hermite cubic pe port ¸iuni pentru un acelas¸i set de date
(script-ul expchip.m):
x = -3:3;
y = [-1 -1 -1 0 1 1 1];
t = -3:.01:3;
p = pchip(x,y,t);
s = spline(x,y,t);
plot(x,y,’o’,t,p,’-’,t,s,’-.’)
legend({’data’,’pchip’,’spline’},4)
Graficul apare ˆın figura 5.20. Se observ˘ a din nou c˘ a interpolantul spline este mai neted, dar
interpolantul Hermite cubic pe port ¸iuni p˘ astreaz˘ a alura.
5.6. Interpolare ˆın MATLAB 231
−3 −2 −1 0 1 2 3
−1.5
−1
−0.5
0
0.5
1
1.5
data
pchip
spline
Figura 5.20: Exemplu de utilizare pchip s¸i spline
Probleme
Problema 5.1. (a) Dˆ andu-se o funct ¸ie f ∈ C[a, b], s˘ a se determine ˆ s
1
(f; ) ∈ S
0
1
(∆)
astfel ˆıncˆ at

b
a
[f(x) − ˆ s
1
(f; x)]
2
dx
s˘ a fie minim˘ a.
(b) Scriet ¸i o funct ¸ie MATLAB care construies¸te s¸i rezolv˘ a sistemul de ecuat ¸ii normale de
la punctul (a).
(c) Testat ¸i funct ¸ia de mai sus pentru o funct ¸ie s¸i o diviziune alese de dumneavoastr˘ a.
Problema 5.2. Calculat ¸i aproximat ¸iile discrete ˆın sensul celor mai mici p˘ atrate ale funct ¸iei
f(t) = sin

π
2
t

pe 0 ≤ t ≤ 1 de forma
ϕ
n
(t) = t +t(1 −t)
n
¸
j=1
c
j
t
j−1
, n = 1(1)5,
utilizˆ and N abscise t
k
= k/(N + 1), k = 1, N. De notat c˘ a ϕ
n
(0) = 0 s¸i ϕ
n
(1) = 1 sunt
valorile exacte ale lui f ˆın t = 0 s¸i respectiv t = 1.
(Indicat ¸ie: Aproximat ¸i f(t) −t printr-o combinat ¸ie liniar˘ a a polinoamelor π
j
(t) = t(1 −
t)t
j−1
, j = 1, n.) Sistemul de ecuat ¸ii normale are forma Ac = b, A = [(π
i
, π
j
)], b =
[(π
i
, f −t)], c = [c
j
].
Ies¸ire (pentru n = 1, 2, . . . , 5) :
232 Aproximarea funct ¸iilor
• num˘ arul de condit ¸ionare al sistemului;
• valorile coeficient ¸ilor;
• eroarea maxim˘ a s¸i minim˘ a:
e
min
= min
1≤k≤N

n
(t
k
) −f(t
k
)[, e
max
= max
1≤k≤N

n
(t
k
) −f(t
k
)[.
Executat ¸i de dou˘ a ori pentru
(a) N = 5, 10, 20,
(b) N = 4.
Comentat ¸i rezultatele. Reprezentat ¸i pe acelas¸i grafic funct ¸ia s¸i aproximantele.
Problema 5.3. S˘ a se reprezinte pe acelas¸i grafic pentru [a, b] = [0, 1], n = 11, funct ¸ia,
interpolantul Lagrange s¸i cel Hermite cu noduri duble ˆın cazurile:
(a) x
i
=
i−1
n−1
, i = 1, n, f(x) = e
−x
s¸i f(x) = x
5/2
;
(b) x
i
=

i−1
n−1

2
, i = 1, n, f(x) = x
5/2
.
Problema 5.4. Aceeas¸i problem˘ a, dar pentru cele patru tipuri de interpolant ¸i spline cubici.
Problema 5.5. Alegˆ and diverse valori ale lui n, pentru fiecare n astfel ales reprezentat ¸i grafic
funct ¸ia lui Lebesgue pentru n noduri echidistante s¸i respectiv n noduri Cebˆıs¸ev din intervalul
[0, 1].
Problema 5.6. Fie punctele P
i
∈ R
2
, i = 0, n. S˘ a se scrie:
(a) o funct ¸ie MATLAB care determin˘ a o curb˘ a parametric˘ a polinomial˘ a de grad n ce trece
prin punctele date;
(b) o funct ¸ie MATLAB care determin˘ a o curb˘ a parametric˘ a spline cubic ce trece prin
punctele date, folosind funct ¸ia pentru spline-ul natural sau cea pentru spline-ul deBoor
date ˆın acest capitol.
Testat ¸i cele dou˘ a funct ¸ii citind interactiv punctele cu ginput s¸i reprezentˆ and apoi grafic
punctele s¸i cele dou˘ a curbe astfel determinate.
Problema 5.7. S˘ a se determine o cubic˘ a parametric˘ a care trece prin dou˘ a puncte date s¸i are
ˆın acele puncte vectori tangent ¸i dat ¸i.
Problema 5.8. Scriet ¸i o funct ¸ie MATLAB care calculeaz˘ a coeficient ¸ii s¸i valoarea splinelor
cubice de tip Hermite, adic˘ a spline cubice de clas˘ a C
1
[a, b] care verific˘ a
s
3
(f, x
i
) = f(x
i
), s

3
(f, xi) = f

(x
i
), i = 1, n.
Reprezentat ¸i pe acelas¸i grafic funct ¸ia f(x) = e
−x
2
s¸i interpolantul corespunz˘ ator pentru 5
noduri echidistandte s¸i 5 noduri Cebˆıs¸ev pe [0,1].
5.6. Interpolare ˆın MATLAB 233
Problema 5.9. Implementat ¸i o funct ¸ie MATLAB care calculeaz˘ a inversa matricei Vander-
mode, folosind rezultatele de la paginile 189–192.
Problema 5.10. [44] Scriet ¸i o funct ¸ie MATLAB pentru calculul coeficient ¸ilor unui spline
periodic de clas˘ a C
2
[a, b]. Aceasta ˆınseamn˘ a c˘ a datele trebuie s˘ a verifice f
n
= f
1
s¸i c˘ a
interpolantul rezultat trebuie s˘ a fie periodic, de perioad˘ a x
n
− x
1
. Condit ¸iile de periodicitate
de la capete se pot impune mai us¸or considerˆ and dou˘ a puncte suplimentare x
0
= x
1
−∆x
n−1
s¸i x
n+1
= x
n
+ ∆x
1
, ˆın care funct ¸ia s˘ a ia valorile f
0
= f
n−1
s¸i respectiv f
n+1
= f
2
.
Problema 5.11. Consider˘ am datele
x = -5:5;
y = [0,0,0,1,1,1,0,0,0,0,0];
S˘ a se determine coeficient ¸ii aproximantei polinomiale de grad 7 ˆın sensul celor mai mici
p˘ atrate corespunz˘ atoare s¸i s˘ a se reprezinte pe acelas¸i grafic aproximanta s¸i polinomul de
interpolare Lagrange.
Problema 5.12. Densitatea sodiului sodiului (ˆın kg/m
3
) pentru trei temperaturi (ˆın

C) este
dat˘ a ˆın tabela
Temperatura T
i
94 205 371
Densitatea ρ
i
929 902 860
(a) Obt ¸inet ¸i polinomul de interpolare Lagrange corespunz˘ ator acestor date, folosind
toolbox-ul Symbolic.
(b) Determinat ¸i densitatea pentru T = 251

prin interpolare Lagrange.
Problema 5.13. Aproximat ¸i
y =
1 +x
1 + 2x + 3x
2
pentru x ∈ [0, 5] folosind interpolarea Lagrange, Hermite s¸i spline. Aleget ¸i cinci noduri s¸i
reprezentat ¸i pe acelas¸i grafic funct ¸ia s¸i interpolant ¸ii. Reprezentat ¸i apoi erorile de aproximare.
Problema 5.14. Tabela 5.3 d˘ a valorile pentru o proprietate a titanului ca funct ¸ie de temper-
atura T. Determinat ¸i s¸i reprezentat ¸i grafic o funct ¸ie spline cubic˘ a pentru aceste date utilizˆ and
T 605 645 685 725 765 795 825
C(T) 0.622 0.639 0.655 0.668 0.679 0.694 0.730
T 845 855 865 875 885 895 905
C(T) 0.812 0.907 1.044 1.336 1.181 2.169 2.075
T 915 925 935 955 975 1015 1065
C(T) 1.598 1.211 0.916 0.672 0.615 0.603 0.601
Tabela 5.3: O proprietate a titanului ˆın funct ¸ie de temperatur˘ a
15 noduri. Cˆ at de bine aproximeaz˘ a spline-ul datele ˆın celelalte 6 puncte?
234 Aproximarea funct ¸iilor
Problema 5.15. Determinat ¸i o aproximare discret˘ a ˆın sensul celor mai mici p˘ atrate de forma
y = αexp(βx)
pentru datele
x y
0.0129 9.5600
0.0247 8.1845
0.0530 5.2616
0.1550 2.7917
0.3010 2.2611
0.4710 1.7340
0.8020 1.2370
1.2700 1.0674
1.4300 1.1171
2.4600 0.7620
Reprezentat ¸i grafic punctele s¸i aproximanta.
Indicat ¸ie: logaritmat ¸i.
Problema 5.16. Implementat ¸i ˆın MATLAB aproximanta discret˘ a cu polinoame Cebˆıs¸ev de
spet ¸a I bazat˘ a pe produsul scalar (5.1.43).
Problema 5.17. Determinat ¸i o aproximare discret˘ a ˆın sensul celor mai mici p˘ atrate de forma
y = c
1
+c
2
x +c
3
sin(πx) +c
4
sin(2πx)
pentru datele
i x
i
y
i
1 0.1 0.0000
2 0.2 2.1220
3 0.3 3.0244
4 0.4 3.2568
5 0.5 3.1399
6 0.6 2.8579
7 0.7 2.5140
8 0.8 2.1639
9 0.9 1.8358
Reprezentat ¸i grafic datele s¸i aproximanta.
CAPITOLUL 6
Aproximare uniform˘ a
Cuprins
6.1. Polinoamele lui Bernstein . . . . . . . . . . . . . . . . . . . . . . . . . 236
6.2. B-spline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
6.2.1. Not ¸iuni s¸i rezultate de baz˘ a . . . . . . . . . . . . . . . . . . . . 241
6.2.2. Algoritmul de evaluare a unui B-spline . . . . . . . . . . . . . . 243
6.2.3. Aplicat ¸ii ˆın grafica pe calculator . . . . . . . . . . . . . . . . . 244
6.2.4. Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
6.3. Funct ¸ii spline cu variat ¸ie diminuat˘ a . . . . . . . . . . . . . . . . . . . . 251
6.4. Operatori liniari s¸i pozitivi . . . . . . . . . . . . . . . . . . . . . . . . . 255
6.5. Cea mai bun˘ a aproximare uniform˘ a . . . . . . . . . . . . . . . . . . . . 260
Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
Aproximarea uniform˘ a a funct ¸iilor are dou˘ a aspecte fundamentale:
- aproximarea unei funct ¸ii f prin funct ¸ii ce converg uniform c˘ atre f pe domeniul con-
siderat;
- cea mai bun˘ a aproximare uniform˘ a a lui f prin funct ¸ii dintr-o mult ¸ime dat˘ a.
Vom pune accentul pe studiul primei probleme.
Fie B o clas˘ a de funct ¸ii definite pe un interval [a, b] ⊂ R s¸i / ⊂ B. Pentru f ∈ B s¸i
ε ∈ R
+
date, se pune problema determin˘ arii unei funct ¸ii g ∈ / astfel ˆıncˆ at
[f(x) −g(x)[ < ε, x ∈ [a, b].
235
236 Aproximare uniform˘ a
Aceast˘ a problem˘ a is¸i are originea ˆın binecunoscuta teorem˘ a de aproximare uniform˘ a a lui
Weierstrass
1
.
Teorema 6.0.1 (Weierstrass 1885). Fie (C[a, b], | |). Subspat ¸iul P ≤ C[a, b] al poli-
noamelor de grad arbitrar este dens ˆın C[a, b] (
¯
P = C[a, b]), adic˘ a ∀f ∈ C[a, b] ∀ε ∈ R
+
∃p ∈ P astfel ˆıncˆ at [f(x) − p(x)[ < ε, ∀x ∈ [a, b]. (Echivalent ∃(p
n
) ⊂ P astfel ˆıncˆ at
p
n
⇉f.)
O important ¸˘ a deosebit˘ a ˆın studiul aproxim˘ arii uniforme a funct ¸iilor a avut problema pus˘ a de
E. Borel ˆın 1905. Deoarece s¸irul polinoamelor de interpolare Lagrange (L
m
f) nu converge
c˘ atre f, el nu poate fi folosit la demonstrat ¸ia teoremei lui Weierstrass. Din acest motiv Borel
a propus c˘ autarea unor procedee de interpolare mai generale, care s˘ a permit˘ a contruirea unor
s¸iruri de polinoame (P
n
f) ce converg uniform c˘ atre f, dac˘ a f ∈ C[a, b]. Astfel de procedee
ar permite s˘ a se dea demonstrat ¸ii constructive ale teoremei lui Weierstrass. Una dintre primele
solut ¸ii pentru problema lui Borel a fost dat˘ a de Sergi N. Bernstein ˆın 1912 prin introducerea
polinoamelor care ˆın poart˘ a numele.
6.1. Polinoamele lui Bernstein
Definit ¸ia 6.1.1. Fie f : [0, 1] →R. Operatorul B
m
definit prin relat ¸ia
(B
m
f)(x) =
m
¸
k=0
p
mk
(x)f

k
m

, (6.1.1)
unde
p
m,k
(x) =

m
k

x
k
(1 −x)
m−k
(6.1.2)
se numes¸te operatorul lui Bernstein, iar polinomul B
m
f se numes¸te polinomul lui Bernstein.
ˆ
In figura 6.1 apar polinoamele de baz˘ a Bernstein pentru k = 3, iar ˆın figura 6.2 polinoamele
Bernstein pentru funct ¸ia f(x) = sin2πx s¸i m = 10, 15, 100.
Polinomul lui Bernstein poate fi obt ¸inut s¸i pe cale probabilistic˘ a astfel: dac˘ a f este
m˘ arginit˘ a pe [0, 1], se consider˘ a variabila aleatoare X cu distribut ¸ia
X :

f(
k
m
)
p
m,k
(x)

,
1
Karl Theodor Wilhelm Weierstrass (1813-1897), matematician ger-
man, considerat a fi unul dintre p˘ arint ¸ii analizei moderne. A avut
contribut ¸ii importante ˆın teoria funct ¸iilor de variabile reale, funct ¸ii
eliptice, calcul variat ¸ional, studiul formelor biliniare s¸i p˘ atratice.
6.1. Polinoamele lui Bernstein 237
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
p
30
p
31
p
32
p
33
Figura 6.1: Polinoamele de baz˘ a Bernstein pentru k = 3
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
−1
−0.8
−0.6
−0.4
−0.2
0
0.2
0.4
0.6
0.8
1
m=10
m=15
m=100
Figura 6.2: Polinoamele Bernstein (linie ˆıntrerupt˘ a) pentru funct ¸ia f(x) = sin2πx (linie
continu˘ a) s¸i m = 10, 15, 100
238 Aproximare uniform˘ a
a c˘ arei valoare medie M(X) =
¸
m
k=0
p
m,k
(x)f(
k
m
) este chiar (B
m
f)(x).
Propriet˘ at¸i
Teorema 6.1.2. 1. B
m
este un operator liniar.
2. B
m
este un operator pozitiv, adic˘ a
f(x) ≥ 0 ⇒(B
m
f)(x) ≥ 0, ∀x ∈ [0, 1].
3. B
m
reproduce polinoamele pˆ an˘ a la gradul 1 inclusiv, adic˘ a
(B
m
e
k
)(x) = e
k
(x), k = 0, 1
s¸i ˆın plus
(B
m
e
2
)(x) = e
2
(x) +
x(1 −x)
m
.
4. Dac˘ a m ≤ f ≤ M pe [0, 1], atunci m ≤ B
m
f ≤ M pe [0,1].
5. Dac˘ a f ∈ C[0, 1], atunci B
m
f ⇉f pe [0,1] cˆ and m →∞.
Demonstrat ¸ie. 1. Rezult˘ a imediat din definit ¸ie.
2. Imediat˘ a, t ¸inˆ and cont c˘ a ∀x ∈ [0, 1] p
m
(x) ≥ 0.
3. Se foloses¸te binomul lui Newton
(u +v)
m
=
m
¸
k=0

m
k

u
k
v
m−k
. (6.1.3)
Diferent ¸iem succesiv ˆın raport cu u egalitatea de mai sus
u(u +v)
m−1
=
m
¸
k=0
k
m
u
k
v
m−k

m
k

(6.1.4)

1 −
1
m

u
2
(u +v)
m−2
=
m
¸
k=0
¸
k
2
m
2

k
m
2

m
k

u
k
v
m−k
. (6.1.5)
Punˆ anˆ and ˆın ultimele trei relat ¸ii u = x s¸i v = 1 −x vom obt ¸ine
m
¸
k=0
p
mk
(x) = 1,
m
¸
k=0
k
m
p
mk
(x) = x,
m
¸
k=0

k
m

2
p
mk
(x) = x
2
+
x(1 −x)
m
.
6.1. Polinoamele lui Bernstein 239
4. Din f−m ≥ 0, prin pozitivitate, rezult˘ a B
m
(f−m) ≥ 0. Analog s¸i cealalt˘ a inegalitate.
5. f ∈ C[0, 1] ⇒ f uniform continu˘ a pe [0, 1], adic˘ a ∀ε > 0 ∃δ = δ
ε
astfel ˆıncˆ at
∀x, x

∈ [0, 1] cu [x−x

[ < δ s˘ a avem[f(x) −f(x

)[ <
ε
2
. Folosind a treia proprietate
putem scrie
f(x) − (B
m
f)(x) =
m
¸
k=0
p
mk
(x)
¸
f(x) −f

k
m

s¸i
[f(x) −(B
m
f)(x)[ ≤
m
¸
k=0
p
mk
(x)

f(x) −f

k
m

=
=
¸
k∈Im
p
mk
(x)

f(x) −f

k
m

+
¸
k∈Jm
p
mk
(x)

f(x) −f

k
m

,
unde
I
m
=

k :

k
m
−x

< δ

iar J
m
=

k :

k
m
−x

≥ δ

.
Dac˘ a M = max
x∈[0,1]
[f(x)[ obt ¸inem ˆın continuare
[f(x) −(B
m
f)(x)[ ≤
ε
2
m
¸
k=0
p
mk
(x) + 2M
¸
k∈Jm
p
mk
(x)

ε
2
+ 2M
¸
k∈Jm
p
mk
(x).
Deoarece

k
m
−x

≥ δ ⇒

k
m
−x

2
δ
2
≥ 1,
obt ¸inem succesiv, folosind proprietatea 3
¸
k∈Jm
p
mk
(x) ≤
1
δ
2
¸
k∈Jm

k
m
−x

2
p
mk
(x) ≤
1
δ
2
m
¸
k=0

k
m
−x

2
p
mk
(x)
=
1
δ
2

¸
¸
¸
¸
¸
¸
m
¸
k=0
k
2
m
2
p
mk
(x)
. .. .
x
2
+
x(1−x)
m
−2x
m
¸
k=0
k
m
p
mk
(x)
. .. .
x
+x
2
m
¸
k=0
p
mk
(x)
. .. .
1
¸

=
1
δ
2
x(1 −x)
m

1
4mδ
2
, x ∈ [0, 1].
240 Aproximare uniform˘ a
Deci, [f(x) −(B
m
f)(x)[ ≤
ε
2
+
M
2mδ
2
, adic˘ a
[f(x) −(B
m
f)(x)[ ≤ ε, dac˘ a m >
M
εδ
2
, x ∈ [0, 1].
Aceast˘ a proprietate este o demonstrat ¸ie constructiv˘ a a teoremei lui Weierstrass.

Definit ¸ia 6.1.3. Formula
f = B
m
f +R
m
f (6.1.6)
se numes¸te formula de aproximare a lui Bernstein, iar R
m
f termenul rest.
Teorema 6.1.4. Dac˘ a f ∈ C
2
[0, 1], atunci
(Rmf)(x) = −
x(1 −x)
2m
f
′′
(ξ), ξ ∈ [0, 1] (6.1.7)
s¸i
[(R
m
f)(x)[ ≤
1
8m
|f
′′
|

. (6.1.8)
Demonstrat ¸ie. Conform teoremei 6.1.2, propriet˘ at ¸ile 1 s¸i 2, B
m
f reproduce polinoamele de
grad 1, adic˘ a B
m
f = f, pentru orice f ∈ P
1
. Aplicˆ and teorema lui Peano se obt ¸ine
(R
m
f)(x) =

1
0
K(x; t)f
′′
(t) dt,
unde
K(x; t) = (x −t)
+

m
¸
k=0
p
m,k
(x)

k
m
−t

+
.
Cum K(x; t) ≤ 0 pentru x, t ∈ [0, 1] corolarul la teorema lui Peano ne conduce la
(R
m
f)(x) = −
x(1 −x)
2m
f
′′
(ξ), ξ ∈ [0, 1].
Inegalitatea (6.1.8) rezult˘ a din faptul c˘ a x(1 −x) ≤
1
4
pe [0, 1].
Important ¸˘ a teoremei lui Weierstass a f˘ acut ca ea s˘ a fie mereu ˆın atent ¸ia matematicienilor.
S-au dat numeroase demonstrat ¸ii constructive s¸i generaliz˘ ari. Una dintre ele este teorema lui
Stone s¸i Weierstrass.
Fie D un compact, C(D) spat ¸iul funct ¸iilor definite pe compactul D ˆınzestrat cu norma
|f| = max
D
[f(x)[. C(D) este o algebr˘ a.
Teorema 6.1.5 (Stone-Weierstrass, 1948). Dac˘ a A este o subalgebr˘ a a lui C(D) care
separ˘ a punctele lui D, atunci ˆınchiderea
¯
A a lui A este fie C(D), fie mult ¸imea funct ¸iilor
continue care se anuleaz˘ a ˆıntr-un punct al lui D.
6.2. B-spline 241
Observat ¸ia 6.1.6. 1. Dac˘ a A cont ¸ine funct ¸iile constante, atunci
¯
A = C(D).
2. O familie S de funct ¸ii definite pe E separ˘ a punctele lui E dac˘ a ∀u, v ∈ E, u = v, ∃h ∈
S astfel ˆıncˆ at h(u) = h(v). ♦
Pentru detalii asupra demonstrat ¸iilor teoremei lui Weierstrass s¸i asupra teoremei Stone-
Weierstrass a se vedea [63].
6.2. B-spline
6.2.1. Not ¸iuni s¸i rezultate de baz˘ a
Fie m,n ∈ N s¸i punctele t
0
, t
1
, . . . , t
m
, cu t
i
≤ t
i+1
. Fie [a, b] ⊂ R astfel ˆıncˆ at t
k
≤ a
s¸i t
n−k
≥ b. Pentru j = 1, m−i punem
ω
i,j
(x) =

x −t
i
t
i+j
−t
i
, dac˘ a t
i
< t
i+j
0, altfel.
(6.2.1)
Definit ¸ia 6.2.1. Pentru i = 0, m−k −1 funct ¸iile B-spline de rang i s¸i grad k se definesc
prin recurent ¸˘ a astfel
B
i,0
(x) =

1, dac˘ a x ∈ [t
i
, t
i+1
],
0, ˆın caz contrar.
(6.2.2)
B
i,k
(x) = ω
i,k
(x)B
i,k−1
(x) + (1 −ω
i+1,k
(x))B
i+1,k−1
(x), pentru k ≥ 1. (6.2.3)
Propozit¸ia 6.2.2. Au loc urm˘ atoarele propriet˘ at ¸i:
(a) B
i,k
este un polinom de grad k pe port ¸iuni;
(b) B
i,k
(x) = 0 pentru x / ∈ [t
i
, t
i+k+1
);
(c) B
i,k
(x) > 0 pentru x ∈ (t
i
, t
i+k+1
); B
i,k
(t
i
) = 0, ˆınafara cazului t
i
= t
i+1
= =
t
i+k
< t
i+k+1
(nod de ordin k + 1) cˆ and avem B
i,k
(t
i
) = 1.
(d)
m−k−1
¸
i=0
B
i,k
(x) = 1, ∀x ∈ [a, b).
(e) Fie x ∈ (t
i
, t
i+k+1
); B
i,k
(x) = 1 ⇐⇒t
i+1
= = t
i+k
= x;
(f) B
i,k
este continu˘ a (s¸i indefinit derivabil˘ a) la dreapta ∀x ∈ R (preciz˘ am c˘ a B
i,k
(x) =
0, ∀x / ∈ [t
0
, t
m
]).
242 Aproximare uniform˘ a
Demonstrat ¸ie. (a), (b), (c), (d) s¸i (f) sunt evidente pentru k = 0; (a), (b), (c) s¸i (f) pentru B
i,k
se deduc prin recurent ¸˘ a dup˘ a k. S˘ a demonstr˘ am (d). Fie x ∈ [a, b]; exist˘ a un j, k ≤ j ≤
m−k − 1 astfel ˆıncˆ at x ∈ [t
j
, t
j+1
). Dac˘ a x = t
j
s¸i B
j,k
(x) = 1 proprietatea este evident˘ a
(conform (c)).
ˆ
In celelalte cazuri avem
m−k−1
¸
i=0
B
i,k
(x) =
j
¸
i=j−k
B
i,k
(x)
=
j
¸
i=j−k

i,k
(x)B
i,k−1
(x) + (1 −ω
i+1,k
(x)) B
i+1,k−1
(x)]
= ω
j−k,k
(x)B
j−k,k−1
(x) +
j
¸
i=j+1−k
B
i,k−1
(x)
+ (1 −ω
j+1,k
(x)) B
j+1,k−1
(x).
Dar B
j−k,k−1
(x) = 0 s¸i B
j+1,k−1
(x) = 0, ˆıntrucˆ at x ∈ [t
j
, t
j+1
) (conform lui (b)) s¸i
j
¸
i=j+1−k
B
i,k−1
(x) = 1
(din ipoteza induct ¸iei).
(e) este o consecint ¸˘ a imediat˘ a a lui (d) s¸i (c).
Observat ¸ia 6.2.3. 1. Deoarece B-splinele sunt nenegative ((b) s¸i (c)) s¸i suma lor este 1,
spunem c˘ a ele formeaz˘ a o partit ¸ie a unit˘ at ¸ii.
2. Fiecare B
i,k
are un suport compact unic.
3.
ˆ
In cazul cˆ and t
m−k
= = t
m
= b, pentru ca (d) s¸i (e) s˘ a fie adev˘ arate pe ˆıntreg [a, b]
punemB
m−k−1,k
(b) = 1.
4. B-splinele se pot defini s¸i pentru un s¸ir infinit de noduri t
i
, ˆın definit ¸ia fiec˘ arui B
i,k
intervenind doar un num˘ ar finit de noduri.
5. Dac˘ a t
i
este un nod de multiplicitate ≥ k +2(t
i
= t
i+k+1
) are loc B
i,k
≡ 0; reciproca
este de asemenea adev˘ arat˘ a. ♦
Propozit¸ia 6.2.4 (Identitatea lui Marsden). Fie n = m−k s¸i
Ψ
i,k
(t) =

(t
i+1
−t) . . . (t
i+k
−t) , pentru k ≥ 1;
1, pentru k = 0.
(6.2.4)
Are loc relat ¸ia
(x −t)
k
=
n−1
¸
i=0
Ψ
i,k
(t)B
i,k
(x). (6.2.5)
6.2. B-spline 243
Demonstrat ¸ie. Se face prin induct ¸ie dup˘ a k. Cazul k = 0 este trivial (propozit ¸ia 6.2.2 (d)).
Presupunem c˘ a
n−1
¸
i=0
Ψ
i,k
(t)B
i,k
(x) = (x −t)
k−1
este adev˘ arat˘ a. Avem B
0,k−1
(x) = 0 pentru x ∈ [a, b].
n−1
¸
i=0
Ψ
i,k
(t)B
i,k
(x) =
=
n−1
¸
i=0
Ψ
i,k
(t) [ω
i,k
(x)B
i,k−1
(x) + (1 −ω
i+1,k
(x))B
i+1,k−1
(x)]
= Ψ
0,k
(t)ω
0,k
(x)B
0,k−1
(x)
+
n−1
¸
i=1
B
i,k−1
(x) [Ψ
i,k
(t)ω
i,k
(x) + Ψ
i−1,k
(t)(1 −ω
i,k
(x))] .
Dac˘ a t
i
= t
i+k
, atunci B
i,k−1
≡ 0 s¸i dac˘ a t
i
< t
i+k
avem
Ψ
i,k
(t)(t)ω
i,k
(x) + Ψ
i−1,k
(t)(1 −ω
i,k
(x)) =
= Ψ
i,k−1
(t) [(t
i+k
−t)ω
i,k
(x) + (t
i
−t)(1 −ω
i,k
(x))]
= Ψ
i,k−1
(t) (ω
i,k
(x)(t
i+k
−t
i
) +t
i
−t) = Ψ
i,k−1
(t)(x −t).
Deci
n−1
¸
i=0
Ψ
i,k
(t)B
i,k
(x) = (x −t)
n−1
¸
i=1
Ψ
i,k−1
(t)B
i,k−1
(x) = (x −t)
k
,
ultima egalitate avˆ an loc pe baza ipotezei induct ¸iei.
Observat ¸ia 6.2.5. Fie t = (t
0
, . . . , t
m
) s¸i P
k,t
([a, b]) = P
k,t
spat ¸iul funct ¸iilor polinomiale
pe port ¸iuni pe [a, b] de grad ≤ k s¸i cu racord de clas˘ a C
k−pj
ˆın t
j
dac˘ a t
j
este un nod de
multiplicitate p
j
. Prin convent ¸ie, un racord de clas˘ a C
k−pj
, cu k −p
j
< 0 nu impune nici un
fel de condit ¸ii asupra lui t
j
.
Dac˘ a toate nodurile sunt de multiplicitate ≤ k + 1, atunci funct ¸iile B
i,k
, i = 0, n −1
formeaz˘ a o baz˘ a a lui P
k,t
s¸i dimP
k,t
= n = m − k. Dac˘ a anumite noduri au multiplic-
itate ≥ k + 2, atunci P
k,t
=

B
i,k
[i = 0, n −1

, dar ¦B
i,k
¦ nu formeaz˘ a o baz˘ a. ♦
6.2.2. Algoritmul de evaluare a unui B-spline
Fie x ≥ t
k
s¸i S(x) =
¸
n−1
i=0
a
i
B
i,k
(x). Aplicˆ and direct definit ¸ia inductiv˘ a a B-splinelor
se obt ¸ine:
Propozit¸ia 6.2.6. Are loc
S(x) =
¸
a
(0)
i
(x)B
i,k
(x) =
¸
a
(1)
i
(x)B
i,k−1
(x) = =
¸
a
(k)
i
(x)B
i,0
(x)
244 Aproximare uniform˘ a
cu
a
(0)
i
(x) = a
i
a
(r+1)
i
(x) = ω
i,k−r
(x)a
(r)
i
(x) + (1 −ω
i,k−r
(x))a
(r)
i−1
(x).
Observat ¸ia 6.2.7. 1. Algoritmul este valabil s¸i pentru x < t
k
, considerˆ and c˘ a B
i,k
≡ 0
pentru i ≤ 0.
2. Dac˘ a evalu˘ am S(x) pentru x ∈ [t
j
, t
j+1
), avem S(x) = a
k
j
(x), deoarece B
j,0
(x) este
funct ¸ia caracteristic˘ a a intervalului [t
j
, t
j+1
) s¸i pentru a calcula a
(k)
j
(x) este suficient
s˘ a evalu˘ am a
(r)
i
numai pentru j − k + r − 1 < i ≤ j, celelalte B
i,k−r
(x) fiind nule
pentru x ∈ [t
j
, t
j+1
). Avem as¸adar
S(x) =
j
¸
i=j−k
a
(0)
i
(x)B
i,k
(x) =
j
¸
i=j−k+1
a
(1)
i
(x)B
i,k−1
(x) = = a
(k)
j
(x).

Algoritmul se prezint˘ a, as¸adar, sub form˘ a triunghiular˘ a, fiecare element obt ¸inˆ andu-se prin
combinat ¸ia convex˘ a a dou˘ a elemente din linia anterioar˘ a:
a
j−k
a
j−k+1
. . . a
j−1
a
j
a
(1)
j−k+1
. . . . . . a
(1)
j
.
.
. .
.
.
a
(k−1)
j−1
a
(k−1)
j−1
a
(k)
j
(Algoritmul Cox-DeBoor)
Nodurile t formeaz˘ a o diviziune
∆ : t
0
≤ t
1
≤ t
k
≤ a ≤ ≤ b ≤ t
n
≤ t
n+1
≤ t
n+k
.
Vom presupune c˘ a multiplicitatea oric˘ arui nod ≤ k + 1. O alegere frecvent˘ a este
t
0
= t
1
= = t
k
= a < t
k+1
≤ ≤ t
n−1
< b = t
n
= = t
n+k
.
ˆ
In cazul particular t
0
= = t
k
= a < b = t
k+1
= = t
2k+1
, funct ¸iile B-spline se reduc
la polinoamele fundamentale Bernstein
p
i,k
(x) =

k
i

x
i
(1 − x)
k−i
.
6.2.3. Aplicat¸ii ˆın grafica pe calculator
Curbe B-spline s¸i B´ ezier
Fie P
0
, . . . , P
n−1
∈ R
s
, s ∈ N

.
6.2. B-spline 245
Definit ¸ia 6.2.8. (a) Se numes¸te curb˘ a B-spline asociat˘ a poligonului de control
(P
0
, . . . , P
n−1
) curba parametric˘ a (γ) definit˘ a prin
(γ) S(t) =
n−1
¸
i=0
P
i
B
i,k
(t), a ≤ t ≤ b.
(b) Se numes¸te curb˘ a B´ ezier
2
asociat˘ a poligonului de control (P
0
, . . . , P
k−1
) curba para-
metric˘ a
B(t) =
k
¸
i=0
P
i
p
i,k
(t), p
i,k
(x) =

k
i

x
i
(1 −x)
k−i
.
Propozit¸ia 6.2.9. Curbele B-spline au urm˘ atoarele propriet˘ at ¸i:
1. γ nu trece ˆın general prin punctele P
i
; dac˘ a t
0
= = t
k
s¸i t
n
= = t
n+k
= b
avem S(a) = P
0
s¸i S(b) = P
n−1
; ˆın acest caz γ este tangent˘ a ˆın P
0
s¸i P
n−1
la laturile
poligonului de control.
2. γ este ˆın ˆınvelitoarea convex˘ a a punctelor P
0
, . . . , P
n−1
. Mai exact dac˘ a t
i
≤ t ≤ t
i+1
,
S(t) este ˆın ˆınvelitoarea convex˘ a a punctelor P
i−k
, . . . , P
i
. Curba B´ ezier este situat˘ a
ˆın ˆınvelitoarea convex˘ a a punctelor P
0
, . . . , P
n−1
.
3.
ˆ
In cazul cˆ and nodurile t
i
(k + 1 ≤ i ≤ n − 1) sunt simple, γ ∈ C
k−1
s¸i este format˘ a
din n arce parametrice polinomiale, de grad ≤ k.
4. γ este invariant˘ a la deplas˘ arile lui R
s
: dac˘ a h este o deplasare a lui R
s
, atunci punctele
h(P
i
) sunt punctele de control ale curbei h(S(t)).
5. S(t) este regularizant˘ a: dac˘ a P este poligonul de control al lui γ s¸i dac˘ a H este un
hiperplan, avem card(H ∩ γ) ≤ card(H ∩ P).
Observat ¸ia 6.2.10. Curbele B-spline au un caracter local ˆın sensul c˘ a:
(a) Dac˘ a X este un punct al curbei corespunzˆ and unei valori t
0
a parametrului, atunci
pozit ¸ia lui X nu depinde decˆ at de cel mult k + 1 puncte P
i
, deoarece dac˘ a t
j
≤ t
0
<
t
j+1
avem
X = S(t
0
) =
n−1
¸
i=0
P
i
B
i,k
(t
0
) =
k
¸
i=j−k
P
i
B
i,k
(t
0
).
2
Pi´ erre Bezier(1910-1999) Fiu s¸i nepot de ingineri, a studiat ingineria
mecanic˘ a la Universitatea din Paris, unde ˆın 1977 a obt ¸inut doctoratul
ˆın Matematic˘ a . Timp de 42 de ani (1933-1975) a lucrat la Uzinele
Renault. A introdus curbele care ˆıi poart˘ a numele. Este considerat
fondator al domeniului CADCAM, realizˆ and primul sistem de acest
tip (UNISURF - incepˆ and cu 1960). Laureat al mai multor premii pre-
sigioase, printre care ,,Steven Anson Coons” al ACM (Association for
Computing Machinery).
246 Aproximare uniform˘ a
(b) Fiecare P
j
nu influent ¸eaz˘ a curba S(t) decˆ at pentru valorile lui t pentru care B
j,k
(t) =
0, adic˘ a t
j
≤ t < t
j+k+1
(ˆın particular dac˘ a modific˘ am P
j
numai o port ¸iune a curbei
se modific˘ a.
(c) Caracterul local nu are loc ˆın cazul curbelor B´ ezier: modificarea unui punct de control
atrage modificarea ˆıntregii curbe. ♦
Algoritmi pentru curbe B-spline
Algoritmul 6.1 de evaluare a curbelor B-spline este o simpl˘ a traducere a algoritmului de
evaluare pentru funct ¸ii B-spline. Implementarea MATLAB apare ˆın sursa 6.1.
Algoritmul 6.1 Algoritmul Cox-deBoor pentru evaluarea unei curbe B-spline
Intrare: Poligonul de contrul P
i
, i = 0, n −1, punctul t ˆın care se face evaluarea s¸i diviz-
iunea t
i
Ies¸ire: Valoarea S(t)
1: Fie S(t) =
¸
n−1
i=0
P
i
B
i,k
(t) s¸i s˘ a presupunem c˘ a t
j
≤ t < t
j+1
.
2: for i := j −k to j do
3: P
0
i
(t) := P
i
;
4: end for
5: for r := 0 to k −1 do
6: for i := j −k +r + 1 to j do
7: P
r+1
i
:= ω
i,k−r
(t)P
r
i
+ (1 −ω
i,k−r
(t)P
r
i−1
8: =
(t −t
i
)P
r
i
(t) + (t
i+k−r
−t)P
r
i−1
t
i+k−r
−t
i
;
9: end for
10: end for
11: S
j
(t) := P
k
k
(t);
ˆ
In cazul particular al unei curbe B´ ezier se obt ¸ine un algoritmmult mai simplu, care nu de-
pinde de j (vezi algoritmul 6.2). El este datorat lui Paul de Faget de Casteljau. Implementarea
MATLAB apare ˆın sursa 6.2.
D˘ am s¸i dou˘ a posibilit˘ at ¸i de alegere a punctelor diviziunii.
Varianta 1: t
j
= j;
Varianta 2:
t
j
=

0, 0 ≤ j ≤ k;
j −k, k + 1 ≤ j ≤ n;
n −k, j > n.
6.2.4. Exemple
S˘ a desen˘ am curba cuadratic˘ a corespunzˆ and nodurilor t
0
= t
1
= t
2
= 1, t
3
= 2, t
4
= 3,
t
5
= 4 s¸i t
6
= t
7
= t
8
= 5 s¸i al c˘ arei poligon de control este dat ˆın figura 6.3. Graficul curbei
apare de asemenea ˆın figura 6.3.
6.2. B-spline 247
Sursa MATLAB 6.1 Implementarea algoritmului Cox-deBoor pentru calculul B-splinelor
function q=Cox deBoor(grad,pc,knots,t)
%algoritmul Cox-DeBoor pentru B-spline
%apel q=Cox_deBoor(grad,pc,knots,t)
%grad- gradul spline-ului
%pc - poligonul de control
%knots - nodurile
%t - abscisele punctelor in care calculam spline-ul
n=length(knots);
knots=knots(:); t=t(:);
lt=length(t);
[lin,n]=size(pc);
% determin pozitie puncte in raport cu nodurile
j = ones(size(t));
for ll = grad+1:n
j(knots(ll) <= t) = ll;
end
%aplicare efectiva algoritm
for l=1:lt
qn=pc;
for r=0:grad-1
i=j(l)-grad+r+1:j(l);
w=repmat(omegav(i,grad-r,knots,t(l)),lin,1);
qn(:,i)=w.
*
qn(:,i)+(1-w).
*
qn(:,i-1);
end
q(:,l)=qn(:,j(l));
end
%------------
function u=omegav(i,k,knots,t)
u=zeros(size(i));
v1=find(knots(i+k) ˜= knots(i));
u(v1)=(t-knots(i))./(knots(i+k)-knots(i));
Algoritmul 6.2 Algoritmul de Casteljau pentru evaluarea unei curbe B´ ezier
Intrare: Poligonul de contrul P
i
, i = 0, k s¸i punctul t ˆın care se face evaluarea
Ies¸ire: Valoarea B(t)
1: Fie B(t) =
¸
k
i=0
P
i
p
i,k
(t).
2: for i := 0 to k do
3: P
0
i
(t) := P
i
;
4: end for
5: for r := 0 to k −1 do
6: for i := r + 1 to k do
7: P
r+1
i
:= (1 −t)P
r
i−1
(t) +tP
r
i
(t);
8: end for
9: end for
10: B(t) := P
k
k
(t);
248 Aproximare uniform˘ a
Sursa MATLAB 6.2 Implementarea algoritmului de Casteljau pentru curbe B´ ezier
function q=deCasteljau(pc,t)
%algoritmul de Casteljau
%apel q=deCasteljau(pc,t)
%pc - punctele de control
%t punctele in care se evalueaza
[mp,k]=size(pc);
lt=length(t);
for l=1:lt
qn=pc;
for r=1:k
i=r+1:k;
qn(:,i)=(1-t(l))
*
qn(:,i-1)+t(l)
*
qn(:,i);
end
q(:,l)=qn(:,k);
end;
P
0
P
1 P
2
P
3
P
4
P
5
S(t
3
)
S(t
4
)
S(t
5
)
Figura 6.3: Curba B-spline cuadratic˘ a s¸i poligonul ei de control
6.2. B-spline 249
Dac˘ a se alege o repartit ¸ie uniform˘ a a nodurilor s¸i dorim o curb˘ a de clas˘ a C
1
, putem
alege t
i
= i, i ∈ Z. Avem B
i
(t) = B
i+r
(t + r), ∀r ∈ Z (figura 6.4), adic˘ a ele-
mentele bazei B-spline se deduc una din alta printr-o translat ¸ie ˆıntreag˘ a. S˘ a consider˘ am
S(t) =
¸

i=−∞
P
i
B
i,r
(t) s¸i s˘ a punem P
6+i
= P
i
; avem S(t − 6) = S(t), iar curba este
definit˘ a pe un interval arbitrar de lungime 6. Se obt ¸ine ˆın acest mod o curb˘ a ˆınchis˘ a (figura
6.5).
−1 0 1 2 3 4 5 6
−0.2
0
0.2
0.4
0.6
0.8
Figura 6.4: Baz˘ a pentru noduri din Z
ˆ
In figura 6.6 se dau dou˘ a curbe B´ ezier de grad 3 pentru dou˘ a forme diferite ale poligonului
de control.
Urmeaz˘ a acum un exemplu mai detaliat de aplicare a algoritmului Cox-deBoor. Fie
nodurile a = 0 = t
0
= t
1
= t
2
= t
3
, t
4
= 1, t
5
= 2, b = 3 = t
6
= t
7
= t
8
= t
9
.
Gradul curbei va fi k = 3. Poligonul de control are 6 puncte s¸i este dat ˆın figura 6.7. Avem
S(t) =
¸
5
i=0
P
i
B
i,3
(t); s˘ a calcul˘ am S(τ) pentru τ =
3
2
. Deoarece t
4
< τ < t
5
, calculele se
organizeaz˘ a tabelar sub forma
P
1
P
2
P
3
P
4
P
1
2
P
1
3
P
1
4
P
2
3
P
2
4
P
3
4
unde P
3
4
= S

3
2

, iar
P
1
2
=
3
4
P
2
+
1
4
P
1
P
1
3
=
1
2
P
1
+
1
2
P
2
P
1
4
=
1
4
P
4
+
3
4
P
3
P
2
3
=
3
4
P
1
3
+
1
4
P
1
2
P
2
4
=
1
4
P
1
4
+
3
4
P
1
3
P
3
4
=
1
2
P
2
4
+
1
2
P
2
3
250 Aproximare uniform˘ a
P
2
P
3
P
4
P
5
P
1
= P
7
P
0
= P
6
Figura 6.5: Curb˘ a B-spline ˆınchis˘ a, periodic˘ a
P
0
P
1
P
2
P
3
(a)
P
0
P
1
P
2
P
3
(b)
Figura 6.6: Dou˘ a curbe B´ ezier de grad 3
6.3. Funct ¸ii spline cu variat ¸ie diminuat˘ a 251
Graficul curbei apare ˆın figura 6.7. Se observ˘ a c˘ a S(t) este tangent˘ a ˆın punctul P
k
j
(t) la seg-
mentul P
k−1
k
P
k−1
j
. S˘ a ilustr˘ am acum caracterul local al curbelor B-spline.
ˆ
In figura 6.8 este
P
3
4
P
2
3
P
2
4
P
1
2
P
1
3
P
1
4 P
0
P
1
P
2
P
3
P
4
P
5
Figura 6.7: Un exemplu de aplicare a algoritmului Cox-deBoor
reprezentat˘ a o curb˘ a B-spline de gradul 3 corespunz˘ atoare unui poligon de control cu 9 puncte
(linie continu˘ a). Se modific˘ a coordonatele punctului P
3
, iar poligonul de control modificat s¸i
B-spline-ul corespunz˘ ator apar cu linie ˆıntrerupt˘ a.
Pentru detalii asupra curbelor s¸i suprafet ¸elor B´ ezier s¸i B-spline s¸i pentru aplicat ¸ii ale
acestora ˆın CAGD (Computer Aided Geometric Desingn) a se vedea [17, 28, 49].
6.3. Funct¸ii spline cu variat ¸ie diminuat˘ a
Funct ¸iile spline cu variat ¸ie diminuat˘ a au fost introduse ˆın 1964 de Isaac J. Schoenberg
3
ca o generalizare a polinoamelor Bernstein.
Fie diviziunea
∆ : t
0
≤ t
1
≤ t
k
≤ a ≤ ≤ b ≤ t
n
≤ t
n+1
≤ t
n+k
.
Vom presupune c˘ a multiplicitatea oric˘ arui nod nu dep˘ as¸es¸te k + 1.
3
Isaac J. Schoenberg (1893-1990) - matematician n˘ ascut la Galat ¸i. A
studiat la universit˘ at ¸ile din Ias¸i, Berlin s¸i G¨ otingen.
ˆ
In 1926 ˆıs¸i sust ¸ine
doctoratul la Universitatea din Ias¸i. Din 1930 a activat ˆın Statele
Unite (1941-1966 University of Pennsylvania, 1966-1973 University
of Wisconsin). Contribut ¸ii ˆın domeniul Teoriei aproxim˘ arii. Rezul-
tatele sale ˆın domeniul funct ¸iilor spline l-au f˘ acut celebru (de fapt el
a introdus termenul de funct ¸ie spline). A fost s¸i un om sensibil, de
aleas˘ a cultur˘ a.
252 Aproximare uniform˘ a
P
0
P
1
P
2
P
3
P
4
P
5
P
6
P
7
P
8
P

3
Figura 6.8: Caracterul local al curbelor B-spline. Se ilustreaz˘ a efectul modific˘ arii coordo-
natelor unui punct (P
3
)
Definit ¸ia 6.3.1. Fie f : [t
0
, t
n+k
] →R s¸i diviziunea ∆ = (t
i
)
i=0,n+k
ca mai sus. Punem
ξ
i
=
t
i+1
+ +t
i+k
k
, i = 0, n −1 (6.3.1)
s¸i definim operatorul S

(S

f)(x) =
n−1
¸
i=0
f(ξ
i
)B
i,k
(x). (6.3.2)
Acest operator se numes¸te operator spline cu variat ¸ie diminuat˘ a sau operatorul lui Schoen-
berg, iar S

f se numes¸te funct ¸ie spline cu variat ¸ie diminuat˘ a.
S

f este un spline de gradul k, fiind o combinat ¸ie liniar˘ a de funct ¸ii B-spline de grad k. Pentru
punctele ξ avem
a = ξ
1
< < ξ
n−1
= b.
Propozit¸ia 6.3.2. S

este un operator liniar s¸i pozitiv s¸i ∀f ∈ P
1
avem S

f = f.
Demonstrat ¸ie. Liniaritatea s¸i pozitivitatea rezult˘ a din definit ¸ie folosind propriet˘ at ¸ile B-
splinelor. Trebuie s˘ a ar˘ at˘ am c˘ a S

reproduce pe 1 s¸i pe x. S

1 = 1 rezult˘ a din partit ¸ia
unit˘ at ¸ii. Din identitatea lui Marsden (6.2.4) egalˆ and coeficient ¸ii lui t
k−1
obt ¸inem
n−1
¸
i=0
ξ
i
B
i,k
(x) = x,
de unde S

x = x.
6.3. Funct ¸ii spline cu variat ¸ie diminuat˘ a 253
Propozit¸ia 6.3.3. S

f are urm˘ atoarea proprietate
V (S

f −ℓ) ≤ V (f −ℓ), pe [a, b], ∀ℓ ∈ P
1
,
unde V (g) este num˘ arul variat ¸iilor de semn ale lui g.
Numele de spline cu variat ¸ie diminuat˘ a vine tocmai de la aceast˘ a proprietate.
Teorema 6.3.4. Are loc inegalitatea
|g −S

g|


k
2
2
|∆|
2
|g
′′
|

. (6.3.3)
Demonstrat ¸ie. Fie x
0
∈ (a, b); trebuie estimat˘ a cantitatea [g(x
0
) − S

f(x
0
)[. Presupunem
c˘ a x
0
∈ [t
i
, t
i+1
), ceea ce implc˘ a ξ
i−k
≤ x
0
< ξ
i
s¸i atrage B
j,k
(x
0
) = 0 pentru j / ∈ [i−k, i].
Fie P(x) = g(x
0
) +g

(x
0
)(x −x0) ecuat ¸ia tangentei la g ˆın x
0
. Avem S

P = P s¸i deci
S

(g −P) = S

g −S

P = S

g −P = (S

g −g) +g −P
s¸i pentru x = x
0
g(x
0
) −S

g(x
0
) = −S

(g −P)(x
0
) = −
i
¸
j=i−k
(g −P)(ξ
j
)B
j,k
(x
0
),
de unde
[g(x
0
) −S

g(x
0
)[ ≤ sup¦[(g −P)(x) : x ∈ (ξ
i−k
, ξ
i
)¦.
Dar din formula lui Taylor (g − P)(x) =
(x−x0)
2
2
g
′′
(ξ) cu ξ ∈ (x
0
, x) s¸i [x − x
0
[ ≤ k|∆|
pentru ξ ∈ (ξ
i−k
, ξ
i
), de unde
[g(x
0
) −S

g(x
0
)[ ≤
k
2
2
|∆|
2
|g
′′
|

.

Corolarul 6.3.5.
|x
2
−S

e
2
|

≤ k
2
|∆|
2
.
Definit ¸ia 6.3.6. Fie f : [a, b] →R. Formula
F = S

f +R

f (6.3.4)
se numes¸te formula de aproximare spline cu variat ¸ie diminuat˘ a, iar R

f este termenul rest.
Teorema 6.3.7. Dac˘ a f ∈ C
2
[a, b] atunci
(R

f)(x) =

b
a
ϕ(x; t)f
′′
(t)dt (6.3.5)
254 Aproximare uniform˘ a
unde
ϕ(x; t) = (x −t)
+

n−1
¸
i=0
B
i,k
(x)(ξ
i
−t)
+
respectiv
(R

f)(x) = −
1
2
[S

e
2
(x) −x
2
]f
′′
(ξ).
Demonstrat ¸ie. Se aplic˘ a teorema lui Peano s¸i se t ¸ine cont c˘ a ϕ(x; t) are semn constant pentru
t, x ∈ [a, b].
Observat ¸ia 6.3.8.
ˆ
In cazul particular cˆ and t
0
= = t
k
= a < b = t
k+1
= t
2k+1
se
obt ¸ine operatorul Bernstein (S

f = B
k
f). ♦
ˆ
In sursa MATLAB 6.3 se d˘ a o funct ¸ie care calculeaz˘ a aproximanta spline cu variat ¸ie dimin-
uat˘ a. Deoarece (conform formulei 6.3.2) spline-ul cu variat ¸ie diminuat˘ a este o combinat ¸ie
liniar˘ a de B-spline cu coeficient ¸ii f(ξ
i
), i = 0, n −1, s-a folosit algoritmul Cox-deBoor cu
punctele de control date de vectorul (f(ξ
i
)).
Sursa MATLAB 6.3 Calculul funct ¸iei spline cu variat ¸ie diminuat˘ a
function [q,xi,t]=spline_vd(grad,d,f)
%SPLINE_VD Spline cu variatie diminuata
%apel [t,xi,q]=spline_vd(grad,d,f)
%grad - gradul
%d - diviziunea
%f - functia
%q - ordonatele
%xi - punctele in care se evalueaza f
%t - abscisele
n=length(d)-grad-1;
xi=calcxi(d,n,grad);
pc=feval(f,xi);
t=min(d):(max(d)-min(d))/150:max(d);
q=Cox_deBoor(grad,pc,d,t);
%-----
function xi=calcxi(d,n,k)
%calculeaza mediile
for i=0:n-1
xi(i+1)=sum(d(i+2:i+k+1))/k;
end
Figura 6.9(a) d˘ a graficul funct ¸iei spline cu variat ¸ie diminuat˘ a de gradul 3 pentru funct ¸ia
f(x) = sin x s¸i diviziunea
∆ =

0, 0, 0, 0,
π
3
,

3
, π, π, π, π

.
Ea a fost obt ¸inut˘ a cu comenzile:
6.4. Operatori liniari s¸i pozitivi 255
0 0.5 1 1.5 2 2.5 3
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
ξ
f
S

f
0 0.5 1 1.5 2 2.5 3
−1
−0.8
−0.6
−0.4
−0.2
0
0.2
0.4
0.6
0.8
1
ξ
f
S

f
Figura 6.9: Graficul funct ¸iei spline cu variat ¸ie diminuat˘ a de gradul 3 pentru funct ¸ia f(x) =
sinx s¸i diviziunea ∆ = (0, 0, 0, 0,
π
3
,

3
, π, π, π, π) (stˆ anga) s¸i ilustrarea propriet˘ at ¸ii variat ¸iei
diminuate
kn=[0, 0, 0, 0:3, 3, 3, 3];
d=kn/max(kn)
*
pi;
[q,xi,t]=spline_vd(3,d,@sin);
plot(xi,sin(xi),’o’,t,sin(t),’--’,t,q,’-’)
legend(’\it\xi’,’\itf’,’\itS_{\Delta}f’)
axis([-0.1,pi+0.1,-0.05,1.05])
Figura 6.9(b) ilustreaz˘ a proprietatea variat ¸iei diminuate pentru funct ¸ia f(x) = sin6x s¸i
diviziunea
∆ =

0, 0, 0, 0,
π
4
,
π
2
,

4
, π, π, π, π

.
6.4. Operatori liniari s¸i pozitivi
Definit ¸ia 6.4.1. Operatorul L : X →Y se numes¸te liniar s¸i pozitiv dac˘ a pentru orice f, g ∈
X s¸i orice scalari α, β
L(αf +βg) = αLf +βLg
f ≥ 0 ⇒Lf ≥ 0.
Observat ¸ia 6.4.2. X s¸i Y sunt spat ¸ii liniare ordonate. De obicei X = ¦f : E
1
⊂ R → R¦,
Y = ¦g = Lf : E
2
⊂ R →R¦. ♦
Teorema 6.4.3. Dac˘ a L : X →Y este un operator liniar s¸i pozitiv s¸i f, g ∈ X, atunci
(i) f ≤ g ⇒Lf ≤ Lg (monotonie);
(ii) [Lf[ ≤ L[f[.
256 Aproximare uniform˘ a
Observat ¸ia 6.4.4. Pentru a pune ˆın evident ¸˘ a faptul c˘ a un operator liniar L se aplic˘ a unei
funct ¸ii f, ca funct ¸ie de variabila independent˘ a t, iar valoarea funct ¸iei obt ¸inute se consider˘ a pe
punctul x vom scrie L(f(t); x) ˆın loc de (Lf)(x). ♦
Teorema care urmeaz˘ a, numit˘ a prima teorem˘ a a lui Korovkin sau teorema Bohman-
Popoviciu
4
-Korovkin, este un criteriu de convergent ¸˘ a uniform˘ a pentru s¸irurile construite cu
ajutorul operatorilor liniari s¸i pozitivi.
Teorema 6.4.5. Fie (L
m
), L
m
: C[a, b] → C[a, b], un s¸ir de operatori liniari s¸i pozitivi.
Dac˘ a
(L
m
e
0
)(x) = 1 +u
m
(x);
(L
m
e
1
)(x) = x +v
m
(x);
(L
m
e
2
)(x) = x
2
+w
m
(x)
(6.4.1)
s¸i lim
m→∞
u
m
(x) = 0, lim
m→∞
v
m
(x) = 0 s¸i lim
m→∞
w
m
(x) = 0, uniform pe [a, b],
atunci pentru orice f ∈ C[a, b]
lim
m→∞
(L
m
f)(x) = f(x),
uniform pe [a, b].
Demonstrat ¸ie. Fie M = max
a≤x≤b
[f(x)[ s¸i t un punct oarecare, dar fix, din intervalul [a, b].
Funct ¸ia f fiind uniform continu˘ a pe [a, b], ∀ε > 0, ∃δ > 0, astfel ˆıncˆ at pentru x ∈ [a, b] s¸i
[t − x[ < δ s˘ a avem [f(t) − f(x)[ <
ε
2
. Fie J = ¦x ∈ [a, b] : [t − x[ ≥ δ¦. Pentru x ∈ J
avem
[f(t) −f(x)[ ≤ 2M ≤
2M
δ
2
(t −x)
2
;
prin urmare
[f(t) −f(x)[ ≤
ε
2
+
2M
δ
2
(t −x)
2
, x, t ∈ [a, b]. (6.4.2)
Cu notat ¸ia din observat ¸ia 6.4.4 (L
m
(f(t); x) ˆın loc de (L
m
f)(x)) pentru t = x avem
L
m
(f(x); x) = f(x) L
m
(1; x) = f(x)(L
m
e
0
)(x). Din enunt ¸ (egalit˘ at ¸ile (6.4.1)) se ob-
serv˘ a c˘ a putem scrie
(L
m
f)(x) −f(x) = L
m
(f(t); x) −f(x)L
m
(1; x) +f(x)u
m
(x)
= L
m
(f(t) −f(x); x) +f(x)u
m
(x).
4
Tiberiu Popoviciu (1906-1975) mare matematician romˆ an, membru al
Academiei romˆ ane, fondatorul s¸colii de Analiz˘ a numeric˘ a s¸i Teoria
aproxim˘ arii din Cluj-Napoca. Doctorat ˆın Frant ¸a, la
´
Ecole Normale
Sup´ erieure (1933). Contribut ¸ii importante s¸i de pionierat ˆın domeniul
Analizei matematice, Teoriei funct ¸iilor, Teoriei aproxim˘ arii s¸i Anal-
izei numerice. A contribuit de asemenea la ˆınceputurile s¸i dezvoltarea
informaticii romˆ anes¸ti s¸i clujene.
6.4. Operatori liniari s¸i pozitivi 257
astfel c˘ a avem
[(L
m
f)(x) −f(x)[ ≤ [L
m
(f(t) −f(x); x)[ +[f(x)[[u
m
(x)[. (6.4.3)
Folosind liniaritatea, teorema 6.4.3 s¸i inegalitatea (6.4.2) deducem c˘ a
[L
m
(f(t) −f(x); x)[ ≤ L
m
([f(t) −f(x)[; x) < L
m

ε
2
+
2M
δ
2
(t −x)
2
; x

=
ε
2
L
m
(1; x) +
2M
δ
2
L
m
((t −x)
2
; x).
Ultima inegalitate s¸i (6.4.3) ne dau
[(L
m
f)(x) −f(x)[ <
ε
2
L
m
(1; x) +
2M
δ
2
L
m
((t −x)
2
; x) +[f(x)[[u
m
(x)[
<
ε
2
+

[f(x) +
ε
2

[u
m
(x)[ +
2M
δ
2
L
m
((t −x)
2
; x).
(6.4.4)
Din enunt ¸ mai rezult˘ a c˘ a
L
m
((t −x)
2
; x) = x
2
u
m
(x) −2xv
m
(x) +w
m
(x). (6.4.5)
Deoarece u
m
⇉0, v
m
⇉0, w
m
⇉0,

[f(x) +
ε
2

[u
m
(x)[ +
2M
δ
2
L
m
((t −x)
2
; x) <
ε
2
, pentru m > N
ε
din (6.4.4) se obt ¸ine
[(L
m
f)(x) −f(x)[ <
ε
2
.

Corolarul 6.4.6. Dac˘ a (L
m
), L
m
: C[a, b] → C[a, b], m ∈ N

este un s¸ir de operatori
liniari s¸i pozitivi s¸i
lim
m→∞
(L
m
)(1; x) = 1, lim
m→∞
(L
m
)((t −x)
2
; x) = 0 (6.4.6)
pentru orice f ∈ C[a, b] s¸irul (L
m
f) converge uniform la f pe [a, b].
Concluzia rezult˘ a (6.4.4) s¸i (6.4.5).
Observat ¸ia 6.4.7. Funct ¸iile e
0
, e
1
, e
2
din teorema 6.4.5 se numesc funct ¸ii de prob˘ a. Num˘ arul
de funct ¸ii de prob˘ a nu poate fi modificat. ♦
Un rezultat asem˘ an˘ ator cu cel din teorema 6.4.5 are loc s¸i pentru funct ¸iile 2π-periodice cu
funct ¸iile de prob˘ a 1, cos x, sin x, iar corolarul corespunz˘ ator se aplic˘ a pentru 1 s¸i sin
2 t−x
2
.
Fie C

spat ¸iul funct ¸iilor continue 2π-periodice.
258 Aproximare uniform˘ a
Teorema 6.4.8 (teorema a doua a lui Korovkin). Fie (L
m
) un s¸ir de operatori liniari poz-
itivi L
m
: C

→C

. Dac˘ a ∀x ∈ R
L
m
(1; x) = 1 +u
m
(x);
L
m
(sin t; x) = sin x +v
m
(x);
L
m
(cos t; x) = cos x +w
m
(x)
s¸i
lim
m→∞
u
m
(x) = lim
m→∞
u
m
(x) = lim
m→∞
u
m
(x) = 0
uniform pe R
+
, atunci ∀f ∈ C

L
m
f ⇉f pe R.
Demonstrat ¸ie. Este analoag˘ a cu a teoremei 6.4.5, analoaga inegalit˘ at ¸ii (6.4.2) fiind
[f(t) −f(x)[ <
ε
2
+ 2M sin
−2
δ
2
sin
2
t −x
2
.

Exemple
Exemplul 6.4.9 (Operatorul lui Bernstein). Fie (B
m
) s¸irul operatorilor Bernstein. Avem
B
m
(1; x) = 1, B
m
(t, x) = x, B
m
(t
2
; x) = x
2
+
x(1 −x)
m
, x ∈ [0, 1].
Deci u
m
(x) = 0, v
m
(x) = 0, w
m
(x) =
x(1−x)
m
. Deoarece lim
m→∞
x(1−x)
m
= 0 uniform pe
[a, b], B
m
f ⇉f pe [0, 1], rezultat echivalent cu teorema 6.1.2. ♦
Exemplul 6.4.10 (Operatorul lui Schoenberg). Operatorul spline cu variat ¸ie diminuat˘ a S

este liniar s¸i pozitiv. De asemenea
S

(1; x) = 1;
S

(t; x) = x;
S

(t
2
; x) = x
2
+E(x).
Deoarece E(x) ⇉0 cˆ and |∆| →0, S

f ⇉f. ♦
Exemplul 6.4.11 (Operatorul Hermite-Fej´ er). Pornind de la operatorul de interpolare Her-
mite cu noduri duble r˘ ad˘ acini ale polinomului Cebˆ as¸ev de spet ¸a I, T
m+1
x
k
= cos
2k + 1
2(m + 1)
π, k = 0, m,
(H
2m+1
f)(x) =
m
¸
k=0
h
k0
(x)f(x
k
) +
m
¸
k=0
h
k1
(x)f(x
k
)
6.4. Operatori liniari s¸i pozitivi 259
s¸i omit ¸ˆ and a doua sum˘ a, Fej´ er
5
a obt ¸inut operatorul
(F
2m+1
f)(x) =
m
¸
k=0
h
k
(x)f(x
k
),
unde
h
k
(x) = h
k0
(x) = (1 −x
k
x)
¸
T
m+1
(x)
(m + 1)(x −x
k
)

2
.
Propozit¸ia 6.4.12. Operatorul lui Fej´ er are urm˘ atoatele propriet˘ at ¸i:
1. (F
2m+1
f)(x
k
) = f(x
k
), (F
2m+1
f)

(x
k
) = 0
¸
m
k=0
h
k
(x) = 1.
2. F
2m+1
este un operator liniar s¸i pozitiv.
3. Dac˘ a f ∈ C[−1, 1], atunci F
2m+1
f ⇉f pe [−1, 1], cˆ and m →∞.
Demonstrat ¸ie. 1. Rezult˘ a din propriet˘ at ¸ile polinoamelor de interpolare Hermite.
2. Liniaritatea rezult˘ a din definit ¸ie, iar pozitivitatea din
1 −x
k
x ≥ 1 −[x
k
[ > 0, x ∈ [−1, 1].
3. Din proprietatea 1 rezult˘ a c˘ a F
2m+1
(1; x) = 1, pentru x ∈ [−1, 1],
F
2m+1
((t −x)
2
; x) =
m
¸
k=0
(1 −x
k
x)
¸
T
m+1
(x)
(m + 1)(x −x
k
)

2
(x
k
−x)
2
=
1
(m+ 1)
2
T
2
m+1
(x)
m
¸
k=0
(1 −x
k
x).
Datorit˘ a simetriei nodurilor x
k
fat ¸˘ a de origine,
¸
m
k=0
x
k
= 0 s¸i se obt ¸ine
F
2m+1
((t −x)
2
; x) =
1
m+ 1
T
2
m+1
(x) ≤
1
m + 1
;
adic˘ a
lim
m→∞
F
2m+1
((t −x)
2
; x) = 0, uniform pe [−1, 1].
Se aplic˘ a apoi corolarul 6.4.6 la teorema 6.4.5.

Fiind un operator polinomial, operatorul lui Fej´ er poate da o demonstrat ¸ie constructiv˘ a a
teoremei lui Weierstrass. ♦
5
Leopold Fej´ er (1880-1959) matematian maghiar, lider al generat ¸iei
sale. A avut contribut ¸ii importante ˆın domeniul aproxim˘ arii s¸i inter-
pol˘ arii ˆın real s¸i complex s¸i teoriei seriilor Fourier. Rezultatul s˘ au
privind convergent ¸a seriilor Fourier a fost obt ¸inut cˆ and era ˆınc˘ a stu-
dent. A funct ¸ionat ca profesor s¸i la Universitatea din Cluj.
260 Aproximare uniform˘ a
6.5. Cea mai bun˘ a aproximare uniform˘ a
Fie f ∈ C[a, b] s¸i presupunem c˘ a un polinom de grad cel mult n minimizeaz˘ a norma
|f−p
n
|

. Un astfel de polinomse numes¸te polinomul de cea mai bun˘ a aproximare uniform˘ a
a lui f.
ˆ
In teoria aproxim˘ arii uniforme rolul central este jucat de punctele de alternant ¸˘ a Cebˆıs¸ev
pentru funct ¸ia R(x) = f(x) − p
n
(x). Punctele de alternant ¸˘ a de grad m sunt nodurile unei
grile (diviziuni)
a ≤ x
1
≤ ≤ x
m
≤ b
avˆ and urm˘ atoarele propriet˘ at ¸i:
(1) [R(x
i
)[ = max
a≤x≤b
[R(x)[, i = 1, m.
(2) R(x
i
)R(x
i+1
) < 0, = i = 1, m−1.
Vom nota mult ¸imea tuturor diviziunilor de acest tip pe [a, b] prin /(m, a, b, R).
Teorema 6.5.1 (Cebˆıs¸ev). Pentru ca un polinom p
n
de grad cel mult n s˘ a fie cea mai bun˘ a
aproximant˘ a uniform˘ a a lui f ∈ C[a, b], este necesar s¸i suficient ca /(n + 2, a, b, R) s˘ a fie
nevid˘ a.
Demonstrat ¸ia suficient ¸ei. Presupunem c˘ a exist˘ a un polinomq
n
∈ P
n
astfel ˆıncˆ at
|f −q
n
|

≤ |f −p
n
|

.
Atunci ˆın punctele de alternant ¸˘ a Cebˆıs¸ev avem
[f(x
i
) −q
n
(x
i
)[ < [f(x
i
) −p
n
(x
i
)[,
ceea ce implic˘ a faptul c˘ a funct ¸ia g(x) ≡ (f(x) − p
n
(x)) − (f(x) − q
n
(x)) are ˆın punctele
x
i
acelas¸i semn ca R(x) = f(x) − p
n
(x). Deoarece semnele lui R(x
i
) alterneaz˘ a, exist˘ a un
zero ˆın interiorul fiec˘ arui subinterval [x
i
, x
i+1
]. Deci, g are n + 1 zerori pe [a, b]. Aceasta nu
se poate ˆıntˆ ampla dac˘ a g nu este identic nul.
Exemplul 6.5.2. Vom determina polinomul de cea mai bun˘ a aproximare uniform˘ a de grad
ˆıntˆ ai pentru funct ¸ia f(x) =

x pe [a, b] ⊂ R
+
.
Polinomul c˘ autat are forma P

1
= c
0
+ c
1
x. Eroarea de aproximare este e
1
(x) = c
0
+
c
1
x −

x. Derivata ei, e

1
(x) = c
1

1
2

x
se anuleaz˘ a ˆın x
1
=
1
4c
2
1
. Conform teoremei lui
Cebˆıs¸ev abaterea maxim˘ a se realizeaz˘ a ˆın trei puncte din [a, b] s¸i obt ¸inem sistemul neliniar

c
0
+c
1
a −

a = E
1
c
0
+
1
4c1

2
c1
= −E
1
c
0
+c
1
b −

3 = E
1
,
cu solut ¸iile
c
0
=
1
2


a −
a

a +

b
+

a +

b
4

,
c
1
=
1

a +

b
,
E
1
= c
0
+c
1
a −

a. ♦
6.5. Cea mai bun˘ a aproximare uniform˘ a 261
Probleme
Problema 6.1. (a) Determinat ¸i matricea A = [a
ij
] de dimensiune (m + 1) (m + 1),
a
ij
= (p
m,i
, p
m,j
) a ecuat ¸iilor normale relativ la baza Bernstein
p
m,j
(t) =

m
j

t
j
(1 −t)
m−j
, j = 0, m,
s¸i funct ¸ia pondere w(t) ≡ 1 pe [0, 1].
(Indicat ¸ie: utilizat ¸i funct ¸ia beta a lui Euler)
(b) Rezolvat ¸i sistemul de ecuat ¸ii normale pentru m = 3(3)12, cˆ and funct ¸ia care urmeaz˘ a
s˘ a fie aproximat˘ a este f(t) = 1. Care este solut ¸ia exact˘ a? Afis¸at ¸i, pentru fiecare m, o
estimat ¸ie a num˘ arului de condit ¸ionare, vectorul coeficient ¸ilor s¸i eroarea asociat˘ a (mod-
ulul diferent ¸ei dintre valoarea calculat˘ a s¸i cea exact˘ a). Comentat ¸i rezultatul.
Problema 6.2. Generat ¸i o liter˘ a β s¸i o liter˘ a ω folosind puncte de control adecvate s¸i seg-
mente de curbe B-spline de grad 2 s¸i 3.
Problema 6.3. Determinat ¸i aproximanta B-spline continu˘ a ˆın sensul celor mai mici p˘ atrate.
Scriet ¸i o rutin˘ a MATLAB care construies¸te s¸i rezolv˘ a sistemul de ecuat ¸ii normale. Exploatat ¸i
structura de band˘ a a matricei.
Problema 6.4. Consider˘ am curba B´ ezier cu punctele de control (1, 0), (−1, 1), (1, 1) s¸i
(−1, 0).
ˆ
In t = 1/2 aceast˘ a curb˘ a are un punct cuspidal: prima sa derivat˘ a se anuleaz˘ a s¸i
are un colt ¸. Verificat ¸i aceasta ˆın MATLAB. Perturbat ¸i coodonata x a punctelor de control 2 s¸i
3 cu cantit˘ at ¸i opuse, p˘ astrˆ and astfel simetria poligonului de control. Ce se ˆıntˆ ampl˘ a cu curba?
Problema 6.5. Investigat ¸i efectul alegerii diferitelor secvent ¸e de noduri t asupra funct ¸iilor
B-spline cubice (de exemplu, noduri uniforme, neuniforme, simple, multiple s¸.a.m.d.).
Problema 6.6. Aleget ¸i n puncte de control pe curba
x(t) = r cos t,
y(t) = r sin t,
z(t) = t,
t ∈ [0, 6π] s¸i reprezentat ¸i curba B-spline cubic˘ a corespunz˘ atoare.
Problema 6.7 (Operatorul lui Baskakov). Not˘ am cu C
N
([0, ∞)) spat ¸iul de funct ¸ii:
C
N
([0, ∞)) :=

f ∈ C[0, ∞) : ∃ lim
x→∞
f(x)
1 +x
N
finit˘ a

,
unde N ∈ N. Fie f : R →R m˘ arginit˘ a s¸i operatorul
(L
m
f)(x) =

¸
k=0

m +k −1
k

x
k
(1 +x)
m+k
f

k
m

.
S˘ a se arate c˘ a dac˘ a f ∈ C
2
([0, ∞)), avem lim
m→∞
L
m
f = f uniformpe [0, a], 0 < a < ∞.
Implementat ¸i o funct ¸ie MATLAB care s˘ a aproximeze acest operator.
262 Aproximare uniform˘ a
Problema 6.8 (Operatorul Favard-Sz´ asz). Fie f : [0, ∞) →R astfel ˆıncˆ at lim
x→∞
f(x) = 0
s¸i a > 0 fixat. S˘ a se arate c˘ a dac˘ a f ∈ C[0, a], operatorul Favard-Szasz definit prin
(L
m
f)(x) =

¸
k=0
(mx)
k
k!
e
−mx
f

k
m

are proprietatea
lim
m→∞
L
m
f = f,
uniform pe [0, a]. Scriet ¸i o funct ¸ie MATLAB care aproximeaz˘ a acest operator p˘ astrˆ and un
num˘ ar finit de termeni din sum˘ a.
Problema 6.9. Demonstrat ¸i c˘ a polinomul de cea mai bun˘ a aproximare de gradul al doilea
pentru funct ¸ia cosht ˆın [−1, 1] este a + bx
2
, unde b = cosh 1 − 1, iar a se obt ¸ine rezolvˆ and
sistemul neliniar ˆın a s¸i t:
a = 1 + cosht −t
2
b
sinh t = 2tb.
CAPITOLUL 7
Aproximarea funct ¸ionalelor liniare
Cuprins
7.1. Introducere . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
7.2. Derivare numeric˘ a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
7.3. Integrare numeric˘ a . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
7.3.1. Formula trapezului s¸i formula lui Simpson . . . . . . . . . . . . 269
7.3.2. Formule Newton-Cotes cu ponderi s¸i formule de tip Gauss . . . . 274
7.3.3. Propriet˘ at ¸i ale cuadraturilor gaussiene . . . . . . . . . . . . . . 277
7.4. Cuadraturi adaptive . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
7.5. Cuadraturi iterate. Metoda lui Romberg . . . . . . . . . . . . . . . . . 286
7.6. Cuadraturi adaptive II . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
7.7. Integrare numeric˘ a ˆın MATLAB . . . . . . . . . . . . . . . . . . . . . . 291
Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
7.1. Introducere
Fie X un spat ¸iu liniar, L
1
, . . . , L
m
funct ¸ionale liniare reale, liniar independente, definite
pe X s¸i L : X → R o funct ¸ional˘ a liniar˘ a real˘ a astfel ˆıncˆ at L, L
1
, . . . , L
m
s˘ a fie liniar
independente.
Definit ¸ia 7.1.1. O formul ˘ a de aproximare a funct ¸ionalei L ˆın raport cu funct ¸ionalele
L
1
, . . . , L
m
este o formul˘ a de forma
L(f) =
m
¸
i=1
A
i
L
i
(f) +R(f), f ∈ X. (7.1.1)
263
264 Aproximarea funct ¸ionalelor liniare
Parametrii reali A
i
se numesc coeficient ¸ii formulei, iar R(f) termenul rest.
Pentru o formul˘ a de aproximare de forma (7.1.1), dˆ andu-se funct ¸ionalele L
i
, se pune
problema determin˘ arii coeficient ¸ilor A
i
s¸i a studiului termenului rest corespunz˘ ator valorilor
obt ¸inute pentru coeficient ¸i.
Observat ¸ia 7.1.2. Forma funct ¸ionalelor L
i
depinde de informat ¸iile det ¸inute asupra lui f (ele
exprimˆ and de fapt aceste informat ¸ii), dar s¸i de natura problemei de aproximare, adic˘ a de
forma lui L. ♦
Exemplul 7.1.3. Dac˘ a X = ¦f[ f : [a, b] → R¦, L
i
(f) = f(x
i
), i = 0, m, x
i
∈ [a, b] s¸i
L(f) = f(α), α ∈ [a, b], formula de interpolare Lagrange
f(α) =
m
¸
i=0

i
(α)f(x
i
) + (Rf)α
este o formul˘ a de tip (7.1.1), cu coeficient ¸ii A
i
= ℓ
i
(α), iar una din reprezent˘ arile posibile
pentru rest este
(Rf)(α) =
u(α)
(m + 1)!
f
(m+1)
(ξ), ξ ∈ [a, b]
dac˘ a exist˘ a f
(m+1)
pe [a, b]. ♦
Exemplul 7.1.4. Dac˘ a X s¸i L
i
sunt ca ˆın exemplul 7.1.3 s¸i exist˘ a f
(k)
(α), α ∈ [a, b], k ∈ N

,
iar L(f) = f
(k)
(α), se obt ¸ine o formul˘ a de aproximare a valorii derivatei de ordinul k a lui
f ˆın punctul α
f
(k)
(α) =
m
¸
i=0
A
i
f(x
i
) +R(f),
numit˘ a s¸i formul˘ a de derivare numeric˘ a . ♦
Exemplul 7.1.5. Dac˘ a X este un spat ¸iu de funct ¸ii definite pe [a, b], integrabile pe [a, b] s¸i
pentru care exist˘ a f
(j)
(x
k
), k = 0, m, j ∈ I
k
, cu x ∈ [a, b] s¸i I
k
mult ¸imi de indici date
L
kj
(f) = f
(j)
(x
k
), k = 0, m, j ∈ I
k
,
iar
L(f) =

b
a
f(x)dx,
se obt ¸ine formula

b
a
f(x)dx =
m
¸
k=0
¸
j∈I
k
A
kj
f
(j)
(x
k
) +R(f),
numit˘ a formul˘ a de integrare numeric˘ a. ♦
Definit ¸ia 7.1.6. Dac˘ a P
r
⊂ X, num˘ arul r ∈ N cu proprietatea c˘ a Ker(R) = P
r
se numes¸te
grad de exactitate al formulei de aproximare (7.1.1).
7.1. Introducere 265
Observat ¸ia 7.1.7. Deoarece R este o funct ¸ional˘ a liniar˘ a proprietatea Ker(R) = P
r
este
echivalent˘ a cu R(e
k
) = 0, k = 0, r s¸i R(e
r+1
) = 0, unde e
k
(x) = x
k
. ♦
Putem acum s˘ a formul˘ amproblema general˘ a de aproximare: dˆ andu-se o funct ¸ional˘ a lini-
ar˘ a L pe X, m funct ¸ionale liniare L
1
, L
2
, . . . , L
m
pe X s¸i valorile lor (,,datele”) ℓ
i
= L
i
f,
i = 1, m aplicate unei anumite funct ¸ii f s¸i un subspat ¸iu liniar Φ ⊂ X cu dimΦ = m, dorim
s˘ a g˘ asim o formul˘ a de aproximare de tipul
Lf ≈
m
¸
i=1
a
i
L
i
f (7.1.2)
care s˘ a fie exact˘ a (adic˘ a s˘ a aib˘ a loc egalitate), pentru orice f ∈ Φ.
Este natural (deoarece dorim s˘ a interpol˘ am) s˘ a facem urm˘ atoarea
Ipotez˘ a: ,,problema de interpolare“
S˘ a se g˘ aseasc˘ a ϕ ∈ Φ astfel ˆıncˆ at
L
i
ϕ = s
i
, i = 1, m (7.1.3)
are o solut ¸ie unic˘ a ϕ() = ϕ(s, ), pentru s = [s
1
, . . . , s
m
]
T
, arbitrar.
Putem exprima ipoteza noastr˘ a mai explicit ˆın termenii unei baze date ϕ
1
, ϕ
2
, . . . , ϕ
m
a
lui Φ s¸i a matricei Gram
1
asociate
G = [L
i
ϕ
j
] =

L
1
ϕ
1
L
1
ϕ
2
. . . L
1
ϕ
m
L
2
ϕ
1
L
2
ϕ
2
. . . L
2
ϕ
m
. . . . . . . . . . . .
L
m
ϕ
1
L
m
ϕ
2
. . . L
m
ϕ
m

∈ R
m×m
. (7.1.4)
Cerem ca
det G = 0. (7.1.5)
Este us¸or de v˘ azut c˘ a aceast˘ a condit ¸ie este independent˘ a de alegerea particular˘ a a bazei.
Pentru a ar˘ ata c˘ a solvabilitatea unic˘ a a lui (7.1.3) s¸i condit ¸ia (7.1.5) sunt echivalente, ex-
prim˘ am ϕ din (7.1.3) ca o combinat ¸ie liniar˘ a a funct ¸iilor de baz˘ a
ϕ =
nm
¸
j=1
c
j
ϕ
j
(7.1.6)
1
J´ orgen Pedersen Gram (1850-1916), matematician danez, a studiat la
Universitatea din Copenhaga. Dup˘ a absolvire a intrat la o companie
de asigur˘ ari ca asistent calculator s¸i apoi a promovat treptat pˆ an˘ a a
ajuns director. A avut contribut ¸ii ˆın domeniul dezvolt˘ arii ˆın serie a
funct ¸iilor s¸i aproxim˘ arii Cebˆıs¸ev s¸i ˆın sensul celor mai mici p˘ atrate.
,,Determinantul Gram” a fost introdus de el ˆın leg˘ atur˘ a cu studiile sale
asupra liniar independent ¸ei.
266 Aproximarea funct ¸ionalelor liniare
s¸i observ˘ am c˘ a condit ¸iile de interpolare
L
i

¸
m
¸
j=1
c
j
ϕ
j
¸

= s
i
, i = 1, m
pot fi scrise (t ¸inˆ and cont de liniaritatea lui L
i
) sub forma
m
¸
j=1
c
j
L
i
ϕ
j
= s
i
, i = 1, m,
adic˘ a
Gc = s, c = [c
1
, c
2
, . . . , c
m
]
T
, s = [s
1
, s
2
, . . . , s
m
]
T
. (7.1.7)
Aceasta are o solut ¸ie unic˘ a pentru s arbitrar dac˘ a s¸i numai dac˘ a are loc (7.1.5).
Avem dou˘ a abord˘ ari pentru rezolvarea acestei probleme.
Metoda interpol˘ arii. Rezolv˘ am problema general˘ a de aproximare prin interpolare
Lf ≈ Lϕ(ℓ; ), ℓ = [ℓ
1
, ℓ
2
, . . . , ℓ
m
]
T
, ℓ
i
= L
i
f (7.1.8)
Cu alte cuvinte aplic˘ am L nu lui f, ci solut ¸iei ϕ(ℓ; ) a problemei de aproximare (7.1.3)
ˆın care s = ℓ. Ipoteza noastr˘ a ne garanteaz˘ a c˘ a ϕ(ℓ; ) este unic determinat.
ˆ
In particular,
dac˘ a f ∈ Φ, atunci (7.1.8) are loc cu egalitate, deoarece ϕ(ℓ; ) = f(), ˆın mod trivial. Astfel,
aproximanta noastr˘ a (7.1.8) satisface condit ¸iile de exactitate cerute pentru (7.1.2). R˘ amˆ ane
doar s˘ a ar˘ at˘ am c˘ a (7.1.8) produce o aproximare de forma (7.1.2). Pentru aceasta s˘ a observ˘ am
c˘ a interpolantul ˆın (7.1.8) este
ϕ(ℓ; ) =
m
¸
j=1
c
j
ϕ
j
()
unde vectorul c = [c
1
, c
2
, . . . , c
m
]
T
satisface (7.1.7) cu s = ℓ
Gc = ℓ, ℓ = [L
1
f, L
2
f, . . . , L
m
f]
T
.
Scriind
λ
j
= Lϕ
j
, j = 1, m, λ = [λ
1
, λ
2
, . . . , λ
m
]
T
, (7.1.9)
avem din liniaritatea lui L
Lϕ(ℓ; ) =
m
¸
j=1
c
j

j
= λ
T
c = λ
T
G
−1
ℓ = [(G
T
)
−1
λ]
T
ℓ,
adic˘ a
Lϕ(ℓ; ) =
m
¸
i=1
a
i
L
i
f, a = [a
1
, a
2
, . . . , a
m
]
T
= (G
T
)
−1
λ. (7.1.10)
Metoda coeficient¸ilor nedeterminat¸i. Aici determin˘ am coeficient ¸ii din (7.1.3) astfel
ˆıncˆ at egalitatea s˘ a aib˘ a loc ∀ f ∈ Φ, care, conform liniarit˘ at ¸ii lui L s¸i L
i
este echivalent˘ a
cu egalitatea pentru f = ϕ
1
, f = ϕ
2
, . . . , f = ϕ
m
, adic˘ a

¸
m
¸
j=1
a
j
L
j
¸

ϕ
i
= Lϕ
i
, i = 1, m,
7.2. Derivare numeric˘ a 267
sau conform (7.1.8)
m
¸
j=1
a
j
L
j
ϕ
i
= λ
i
, i = 1, m.
Evident, matricea sistemului este G
T
, deci
a = [a
1
, a
2
, . . . , a
m
]
T
= (G
T
)
−1
λ,
ˆın concordant ¸˘ a cu (7.1.10). Astfel, metoda interpol˘ arii s¸i cea a coeficient ¸ilor nedeterminat ¸i
sunt matematic echivalente – ele conduc la exact aceeas¸i aproximare.
S-ar p˘ area c˘ a, cel put ¸in ˆın cazul polinoamelor (adic˘ a Φ = P
d
), prima metod˘ a este mai
puternic˘ a, deoarece poate conduce la o expresie a erorii de interpolare (aplicˆ and funct ¸ionala
formulei de interpolare f = a
n
f +r
n
f). Dar s¸i ˆın cazul metodei coeficient ¸ilor nedeterminat ¸i,
din condit ¸ia de exactitate, se poate exprima restul cu ajutorul teoremei lui Peano (teorema
5.3.2).
7.2. Derivare numeric˘ a
Pentru simplitate vom considera doar derivata de ordinul I. Se pot aplica tehnici analoage
s¸i pentru alte derivate. Vom rezolva problema prin interpolare: ˆın loc s˘ a deriv˘ am f ∈
C
m+1
[a, b], vom deriva polinomul s˘ au de interpolare:
f(x) = (L
m
f)(x) + (R
m
f)(x). (7.2.1)
Scriem polinomul de interpolare ˆın forma Newton
(L
m
f)(x) = (N
m
f)(x) = f
0
+ (x −x
0
)f[x
0
, x
1
] +. . .
+ (x − x
0
) . . . (x −x
m−1
)f[x
0
, x
1
, . . . , x
m
] (7.2.2)
s¸i restul sub forma
(R
m
f)(x) = (x −x
0
) . . . (x −x
m
)
f
(m+1)
(ξ(x))
(m+ 1)!
. (7.2.3)
Derivˆ and (7.2.2) ˆın raport cu x s¸i punˆ and x = x
0
obt ¸inem
(L
m
f)(x
0
) = f[x
0
, x
1
] + (x
0
−x
1
)f[x
0
, x
1
, x
2
] +. . .
+ (x
0
−x
1
)(x
0
−x
2
) . . . (x
0
−x
m−1
)f[x
0
, x
1
, . . . , x
m
]. (7.2.4)
Presupunˆ and c˘ a f este continuu derivabil˘ a pe un interval convenabil se obt ¸ine pentru rest
(R
m
f)

(x
0
) = (x
0
−x
1
) . . . (x
0
−x
m
)
f
(m+1)
(ξ(x
0
))
(m + 1)!
. (7.2.5)
Deci, derivˆ and (7.2.4) obt ¸inem
f

(x
0
) = (L
m
f)

(x
0
) + (R
m
f)

(x
0
)
. .. .
em
. (7.2.6)
268 Aproximarea funct ¸ionalelor liniare
Dac˘ a H = max
i
[x
0
−x
i
[, eroarea are forma e
m
= O(H
m
), cˆ and H →0.
Putem obt ¸ine formule de aproximare de grad arbitrar, dar ele sunt de utilitate practic˘ a
limitat˘ a.
Observat ¸ia 7.2.1. Derivarea numeric˘ a este o operat ¸ie critic˘ a s¸i de aceea este bine s˘ a fie evi-
tat˘ a pe cˆ at posibil, deoarece chiar dac˘ a aproximanta este bun˘ a, nu rezult˘ a c˘ a derivata aproxi-
mantei este o aproximat ¸ie bun˘ a a derivatei (vezi figura 7.1). Aceasta rezult˘ a s¸i din exemplul
7.2.2 ♦
f
a
n
f′
a
n

Figura 7.1: Neajunsurile deriv˘ arii numerice
Exemplul 7.2.2. Fie funct ¸ia
f(x) = g(x) +
1
n
sin n
2
(x −a), g ∈ C
1
[a, b].
Se constat˘ a c˘ a d(f, g) →0 (n →∞), dar d(f

, g

) = n 0. ♦
Formulele de derivare numeric˘ a sunt utile pentru deducerea unor metode numerice, ˆın
special pentru ecuat ¸ii diferent ¸iale ordinare s¸i ecuat ¸ii cu derivate part ¸iale.
Se pot folosi s¸i alte procedee de aproximare: Taylor, Hermite, spline, metoda celor mai
mici p˘ atrate.
7.3. Integrare numeric˘ a
Problema este de a calcula integrala definit˘ a a unei funct ¸ii date pe un interval m˘ arginit
[a, b]. Dac˘ a f are o comportare bun˘ a, aceasta este o problem˘ a de rutin˘ a, pentru care metodele
7.3. Integrare numeric˘ a 269
cele mai simple de integrare cum ar fi regula trapezelor sau regula repetat˘ a a lui Simpson
sunt satisf˘ ac˘ atoare, prima avˆ and anumite avantaje asupra celei de-a doua ˆın cazul cˆ and f este
periodic˘ a, cu perioada b − a. Complicat ¸iile apar atunci cˆ and f are singularit˘ at ¸i (dar r˘ amˆ ane
integrabil˘ a), sau cˆ and intervalul de integrare este nem˘ arginit (care este o alt˘ a manifestare a
comport˘ arii singulare). Descompunˆ and integrala pe subintervale, dac˘ a este necesar, ˆın mai
multe integrale, se poate presupune c˘ a singularitatea, dac˘ a locul ei este cunoscut, este la unul
sau la ambele capete ale intervalului [a, b]. Astfel de integrale improprii pot fi tratate ca s¸i
cuadraturi cu ponderi, adic˘ a s˘ a ˆıncorpor˘ amsingularitatea ˆıntr-o pondere, care devine un factor
al integrandului, l˘ asˆ and cel˘ alalt factor s˘ a aib˘ a o comportare bun˘ a. Cel mai important exemplu
este formula lui Gauss relativ˘ a la o astfel de pondere.
ˆ
In fine, este posibil s˘ a se accelereze
convergent ¸a unei scheme de cuadratur˘ a prin recombin˘ ari convenabile. Un astfel de exemplu
este metoda lui Romberg.
Fie f : [a, b] → R integrabil˘ a pe [a, b], F
k
(f), k = 0, m informat ¸ii despre f (de regul˘ a
funct ¸ionale liniare) s¸i w : [a, b] →R
+
o funct ¸ie pondere integrabil˘ a pe [a, b].
Definit ¸ia 7.3.1. O formul ˘ a de forma

b
a
w(x)f(x)dx = Q(f) +R(f), (7.3.1)
unde
Q(f) =
m
¸
j=0
A
j
F
j
(f),
se numes¸te formul˘ a de integrare numeric˘ a a funct ¸iei f sau formul˘ a de cuadratur˘ a. Parametrii
A
j
, j = 0, m se numesc coeficient ¸ii formulei, iar R(f) termenul rest al ei. Q se numes¸te
funct ¸ional˘ a de cuadratur˘ a.
Definit ¸ia 7.3.2. Num˘ arul natural d = d(Q) cu proprietatea c˘ a ∀ f ∈ Pd, R(f) = 0 s¸i
∃ g ∈ Pd +1 astfel ˆıncˆ at R(g) = 0 se numes¸te grad de exactitate al formulei de cuadratur˘ a .
Deoarece R este liniar, rezult˘ a c˘ a o formul˘ a de cuadratur˘ a are gradul de exactitate d dac˘ a
s¸i numai dac˘ a R(e
j
) = 0, j = 0, d s¸i R(e
d+1
) = 0.
Dac˘ a gradul de exactitate al unei formule de cuadratur˘ a este cunoscut, restul se poate
determina cu ajutorul teoremei lui Peano.
7.3.1. Formula trapezului s¸i formula lui Simpson
Aceste formule au fost denumite de Gautschi ˆın [22] ,,caii de b˘ ataie” ai integr˘ arii nu-
merice. Ele ˆıs¸i fac bine munca cˆ and intervalul de integrare este m˘ arginit s¸i integrandul este
neproblematic. Formula trapezelor este surprinz˘ ator de eficient˘ a chiar s¸i pentru intervale in-
finite.
Ambele reguli se obt ¸in aplicˆ and cele mai simple tipuri de interpolare subintervalelor di-
viziunii
a = x
0
< x
1
< x
2
< < x
n−1
< x
n
= b, x
k
= a +kh, h =
b −a
n
. (7.3.2)
270 Aproximarea funct ¸ionalelor liniare
ˆ
In cazul formulei trapezelor se interpoleaz˘ a liniar pe fiecare subinterval [x
k
, x
k+1
] s¸i se
obt ¸ine

x
k+1
x
k
f(x)dx =

x
k+1
x
k
(L
1
f)(x)dx +

x
k+1
x
k
(R
1
f)(x)dx, f ∈ C
2
[a, b], (7.3.3)
cu
(L
1
f)(x) = f
k
+ (x −x
k
)f[x
k
, x
k+1
].
Integrˆ and avem

x
k+1
x
k
f(x)dx =
h
2
(f
k
+f
k+1
) +R
1
(f),
unde
R
1
(f) =

x
k+1
x
k
K
1
(t)f
′′
(t)dt,
iar
K
1
(t) =
(x
k+1
−t)
2
2

h
2
[(x
k
−t)
+
+ (x
k+1
−t)
+
] =
=
(x
k
−t)
2
2

h(x
k+1
−t)
2
=
=
1
2
(x
k+1
−t)(x
k
−t) ≤ 0.
Deci
R
1
(f) = −
h
3
12
f
′′

k
), ξ
k
∈ (x
k
, x
k+1
)
s¸i

x
k+1
x
k
f(x)dx =
h
2
(f
k
+f
k+1
) −
1
12
h
3
f
′′

k
). (7.3.4)
Aceast˘ a formul˘ a se numes¸te regula (elementar˘ a a) trapezului.
ˆ
Insumˆ and pentru toate subintervalele se obt ¸ine regula trapezelor sau formula compus˘ a a
trapezului sau formula repetat˘ a a trapezului.

b
a
f(x)dx = h

1
2
f
0
+f
1
+ +f
n−1
+
1
2
f
n


1
12
h
3
n−1
¸
k=0
f
′′

k
).
Deoarece f
′′
este continu˘ a pe [a, b], restul se poate scrie sub forma
R
1,n
(f) = −
(b −a)h
2
12
f
′′
(ξ) = −
(b −a)
3
12n
2
f
′′
(ξ). (7.3.5)
Cum f
′′
este m˘ arginit˘ a ˆın modul pe [a, b] avem
R
1,n
(f) = O(h
2
),
7.3. Integrare numeric˘ a 271
Sursa MATLAB 7.1 Aproximarea unei integrale prin formula repetat˘ a a trapezului
function I=trapez(f,a,b,n);
%TRAPEZ formula trapezelor
%apel I=trapez(f,a,b,n);
h=(b-a)/n;
I=(f(a)+f(b)+2
*
sum(f([1:n-1]
*
h+a)))
*
h/2;
cˆ and h → 0 s¸i deci regula trapezelor converge cˆ and h → 0 (sau echivalent, n → ∞), atunci
cˆ and f ∈ C
2
[a, b].
ˆ
In sursa MATLAB 7.1 se d˘ a o implementare a formulei trapezelor.
Dac˘ a ˆın locul interpol˘ arii liniare se utilizeaz˘ a interpolarea p˘ atratic˘ a pe dou˘ a intervale con-
secutive se obt ¸ine regula lui Simpson repetat˘ a . Varianta ei elementar˘ a, numit˘ a regula lui
Simpson
2
sau formula lui Simpson este

x
k+2
x
k
f(x)dx =
h
3
(f
k
+ 4f
k+1
+f
k+2
) −
1
90
h
5
f
(4)

k
), x
k
≤ ξ
k
≤ x
k+2
, (7.3.6)
unde s-a presupus c˘ a f ∈ C
4
[a, b].
S˘ a demonstr˘ amformula pentru restul formulei lui Simpson. Deoarece gradul de exactitate
este 3, conform teoremei lui Peano avem
R
2
(f) =

x
k+2
x
k
K
2
(t)f
(4)
(t) dt.
unde
K
2
(t) =
1
3!

(x
k+2
−t)
4
4

h
3

(x
k
−t)
3
+
+ 4 (x
k+1
−t)
3
+
+ (x
k+2
−t)
3
+

,
adic˘ a
K
2
(t) =
1
6

(x
k+2
−t)
4
4

h
3

4 (x
k+1
−t)
3
+ (x
k+2
−t)
3

, t ∈ [x
k
, x
k+1
]
9(x
k+2
−t)
4
4

h
3
(x
k+2
−t)
3
, t ∈ [x
k+1
, x
k+2
] .
Se verific˘ a c˘ a pentru t ∈ [a, b], K
2
(t) ≤ 0 s¸i deci putemaplica corolarul la teorema lui Peano.
2
Thomas Simpson (1710-1761), matematician englez autodidact, au-
tor al mai multor texte, populare la vremea respectiv˘ a. Simpson s¸i-a
publicat formula ˆın 1743, dar ea a fost cunoscut˘ a deja, printre alt ¸ii, de
Cavalieri (1639), Gregory (1668) s¸i Cotes (1722).
272 Aproximarea funct ¸ionalelor liniare
R
2
(f) =
1
4!
f
(4)

k
)R
2
(e
4
),
R
2
(e
4
) =
x
5
k+2
−x
5
k
5

x
k+2
−xk
6
¸
x
4
k
+ 4

x
k+2
+x
k
2

4
+x
4
k+2
¸
= (x
k+2
−x
k
)
¸
x
4
k+2
+x
3
k+2
x
k
+x
2
k+2
x
2
k
+x
k+2
x
3
k
+x
4
k
5

5x
4
k
+ 4x
3
k
x
k+2
+ 6x
2
k
x
2
k+2
+ 4x
k
x
3
k+2
+ +5x
4
k+2
24

= −
x
k+2
−x
k
120

−x
4
k
+ 4x
3
k
x
k+2
+ 6x
2
k
x
2
k+2
+ 4x
k
x
3
k+2
−x
4
k+2

= −
4
15
h
5
.
Deci,
R
2
(f) = −
h
5
90
f
(4)

k
).
Pentru regula repetat˘ a a lui Simpson obt ¸inem

b
a
f(x)dx =
h
3
(f
0
+ 4f
1
+ 2f
2
+ 4f
3
+ 2f
4
+ + 4f
n−1
+f
n
) +R
2,n
(f) (7.3.7)
cu
R
2,n
(f) = −
1
180
(b −a)h
4
f
(4)
(ξ) = −
(b −a)
5
2880n
4
f
(4)
(ξ), ξ ∈ (a, b). (7.3.8)
Se observ˘ a c˘ a R
2,n
(f) = O(h
4
), de unde rezult˘ a convergent ¸a cˆ and n → ∞. Se observ˘ a
s¸i cres¸terea ordinului cu 1, ceea ce face ca regula repetat˘ a a lui Simpson s˘ a fie foarte popular˘ a
s¸i larg utilizat˘ a. Pentru o implementare a ei a se vedea sursa MATLAB 7.2.
Sursa MATLAB 7.2 Aproximarea unei integrale prin formula repetat˘ a a lui Simpson
function I=Simpson(f,a,b,n);
%SIMPSON formula lui Simpson
%apel I=Simpson(f,a,b,n);
h=(b-a)/n;
x2=[1:n-1]
*
h+a;
x4=[0:n-1]
*
h+a+h/2;
I=h/6
*
(f(a)+f(b)+2
*
sum(f(x2))+4
*
sum(f(x4)));
Regula trapezelor lucreaz˘ a foarte bine pentru polinoame trigonometrice. Presupunemf˘ ar˘ a
a restrˆ ange generalitatea c˘ a [a, b] = [0, 2π] s¸i fie
T
m
[0, 2π] = ¦t(x) : t(x) = a
0
+a
1
cos x +a
2
cos 2x + +a
m
cos mx+
7.3. Integrare numeric˘ a 273
+b
1
sinx +b
2
sin 2x + +b
m
sin mx¦
Atunci
R
n,1
(f) = 0, ∀ f ∈ T
n−1
[0, 2π] (7.3.9)
Aceasta se verific˘ a luˆ and
f(x) = e
ν
(x) := e
iνx
= cos νx +i sin νx, ν = 0, 1, 2, . . .
R
n,1
(e
ν
) =


0
e
ν
(x)dx −

n
¸
1
2
e
ν
(0) +
n−1
¸
k=1
e
ν

2kπ
n

+
1
2
e
ν
(2π)
¸
=
=


0
e
iνx
dx −

n
n−1
¸
k=0
e
2πikν
n
.
Cˆ and ν = 0, aceasta este evident 0 s¸i ˆın caz contrar, deoarece


0
e
iνx
dx = (iν)
−1
e
iνx


0
= 0,
R
n,1
(e
ν
) =

−2π dac˘ a ν = 0 (mod n), ν > 0


n
1 −e
iνn·2π/n
1 −e
iν·2π/n
= 0 dac˘ a ν = 0 (mod n)
(7.3.10)
ˆ
In particular, R
n,1
(e
ν
) = 0 pentru ν = 0, 1, . . . , n −1, ceea ce demonstreaz˘ a (7.3.9). Luˆ and
partea real˘ a s¸i imaginar˘ a ˆın (7.3.10) se obt ¸ine
R
n,1
(cos ν) =

−2π, ν = 0(modn), ν = 0
0, ˆın caz contrar
R
n,1
(sin ν) = 0.
De aceea, dac˘ a f este 2π-periodic˘ a s¸i are o dezvoltare Fourier uniform convergent˘ a
f(x) =

¸
ν=0
[a
ν
(f) cos νx +b
ν
(f) sinνx], (7.3.11)
unde a
ν
(f), b
ν
(f) sunt coeficient ¸ii Fourier ai lui f, atunci
R
n,1
(f) =

¸
ν=0
[a
ν
(f)R
n,1
(cos ν) +b
ν
(f)R
n,1
(sin ν)] =
= −2π

¸
l=1
a
ln
(f) (7.3.12)
Din teoria seriilor Fourier se s¸tie c˘ a coeficient ¸ii Fourier ai lui f tind c˘ atre zero cu atˆ at mai
repede cu cˆ at f este mai neted˘ a. Mai exact, dac˘ a f ∈ C
r
[R], atunci a
ν
(f) = O(ν
−r
) cˆ and
ν →∞(s¸i similar pentru b
ν
(f)). Deoarece conform (7.3.12)
R
n,1
(f) ≃ −2πa
n
(f),
274 Aproximarea funct ¸ionalelor liniare
rezult˘ a c˘ a
R
n,1
(f) = O(n
−r
) cˆ and n →∞ (7.3.13)
(f ∈ C
r
[R], 2π periodic˘ a), care dac˘ a r > 2 este mai bun˘ a decˆ at R
n,1
(f) = O(n
−2
), valabil˘ a
pentru funct ¸ii f neperiodice.
ˆ
In particular, dac˘ a r = ∞, atunci regula trapezului converge
mai repede decˆ at orice putere a lui n
−1
. Trebuie observat totus¸i c˘ a f trebuie s˘ a fie neted˘ a pe
ˆıntreg R. Pornind de la o funct ¸ie f ∈ C
r
[0, 2π] s¸i prelungind-o pe ˆıntreaga ax˘ a real˘ a prin
periodicitate, ˆın general nu se obt ¸ine o funct ¸ie f ∈ C
r
[R].
O alt˘ a ˆımprejurare ˆın care regula trapezelor exceleaz˘ a este pentru funct ¸ii definite pe R s¸i
care au proprietatea urm˘ atoare: pentru un anumit r ≥ 1
f ∈ C
2r+1
[R],

R

f
(2r+1)
(x)

dx < ∞,
lim
x→−∞
f
(2ρ−1)
(x) = lim
x→+∞
f
(2ρ−1)
(x) = 0, ρ = 1, 2, . . . , r. (7.3.14)
ˆ
In acest caz se poate ar˘ ata c˘ a

R
f(x)dx = h

¸
k=−∞
f(kh) +R(f; h) (7.3.15)
are o eroare R(f, h) ce satisface R(f; h) = O(h
2r+1
), h → 0. Deci, dac˘ a (7.3.14) are loc
pentru orice r ∈ N, atunci eroarea tinde la zero mai repede decˆ at orice putere a lui h.
7.3.2. Formule Newton-Cotes cu ponderi s¸i formule de tip Gauss
O formul˘ a de cuadratur˘ a cu ponderi este o formul˘ a de tipul

b
a
f(t)w(t)dt =
n
¸
k=1
A
k
f(t
k
) +R
n
(f) (7.3.16)
unde w este nenegativ˘ a, integrabil˘ a pe (a, b).
Intervalul (a, b) poate fi m˘ arginit sau nem˘ arginit. Dac˘ a este nem˘ arginit trebuie s˘ a ne
asigur˘ am c˘ a integrala din (7.3.16) este bine definit˘ a, cel put ¸in ˆın cazul cˆ and f este polinom.
Realiz˘ am aceasta cerˆ and ca toate momentele funct ¸iei pondere
µ
s
=

b
a
t
s
w(t)dt, s = 0, 1, 2, . . . (7.3.17)
s˘ a existe s¸i s˘ a fie finite.
Spunem c˘ a (7.3.16) este de tip interpolator, dac˘ a are gradul de exactitate d = n − 1.
Formulele de tip interpolator sunt chiar formulele obt ¸inute prin interpolare, adic˘ a pentru care
n
¸
k=1
A
k
f(t
k
) =

b
a
L
n−1
(f; t
1
, . . . , t
n
, t)w(t)dt (7.3.18)
7.3. Integrare numeric˘ a 275
sau echivalent
A
k
=

b
a

k
(t)w(t)dt, k = 1, 2, . . . , n, (7.3.19)
unde

k
(t) =
n
¸
l=1
l=k
t −t
l
t
k
−t
l
(7.3.20)
sunt polinoamele fundamentale Lagrange asociate nodurilor t
1
, t
2
, . . . , t
n
. Faptul c˘ a (7.3.16)
are gradul de exactitate d = n − 1 este evident, deoarece pentru orice f ∈ P
n−1
avem
L
n−1
(f; ) ≡ f() ˆın (7.3.18). Reciproc, dac˘ a (7.3.16) are gradul de exactitate d = n − 1,
atunci luˆ and f(t) = ℓ
r
(t) ˆın (7.3.17) obt ¸inem

b
a

r
(t)w(t)dt =
n
¸
k=1
A
k

r
(t
k
) = A
r
, r = 1, 2, . . . , n,
adic˘ a (7.3.19).
Observ˘ am c˘ a dac˘ a se dau n noduri distincte t
1
, . . . , t
n
este posibil ˆıntotdeauna s˘ a con-
struim o formul˘ a de tip (7.3.16) care este exact˘ a pentru orice polinom de grad ≤ n − 1.
ˆ
In
cazul w(t) ≡ 1 pe [−1, 1] s¸i t
k
sunt echidistante pe [−1, 1] problema a fost intuit˘ a de New-
ton ˆın 1687 s¸i rezolvat˘ a ˆın detaliu de Cotes
3
ˆın jurul anului 1712. Prin extensie, vom numi
formula (7.3.16) cu t
k
prescrise s¸i A
k
date de (7.3.19) formul˘ a de tip Newton-Cotes .
Chestiunea care se pune ˆın mod natural este dac˘ a nu am putea face aceasta mai bine, adic˘ a
dac˘ a nu am putea obt ¸ine gradul de exactitate d > n−1 printr-o alegere judicioas˘ a a nodurilor
t
k
(coeficient ¸ii A
k
fiind dat ¸i ˆın mod necesar de (7.3.19)). R˘ aspunsul este surprinz˘ ator de
simplu s¸i de direct. Pentru a-l formula, consider˘ am polinomul nodurilor
u
n
(t) =
n
¸
k=1
(t −t
k
). (7.3.21)
Teorema 7.3.3. Dˆ andu-se un ˆıntreg k, 0 ≤ k ≤ n, formula de cuadratur˘ a (7.3.16) are gradul
de exactitate d = n −1 +k dac˘ a s¸i numai dac˘ a sunt satisf˘ acute urm˘ atoarele condit ¸ii:
(a) formula (7.3.16) este de tip interpolator ;
3
Roger Cotes (1682-1716), fiul precoce al unui pastor de t ¸ar˘ a englez, a
fost ˆıns˘ arcinat cu preg˘ atirea celei de-a doua edit ¸ii a lucr˘ arii lui New-
ton Principia. El a dezvoltat idea lui Newton referitoare la integrarea
numeric˘ a s¸i a publicat coeficient ¸ii pentru formulele de integrare nu-
meric˘ a cu n-puncte, pentru n < 11 (numere Cotes). La moartea sa
prematur˘ a la vˆ arsta de 33 de ani, Newton a spus despre el: ,,Dac˘ a ar fi
tr˘ ait, am fi putut s¸ti ceva.”
276 Aproximarea funct ¸ionalelor liniare
(b) polinomul nodurilor u
n
din (7.3.21) satisface

b
a
u
n
(t)p(t)w(t) dt = 0, ∀ p ∈ P
k−1
.
Condit ¸ia din (b) impune k restrict ¸ii asupra nodurilor t
1
, t
2
, . . . , t
n
din (7.3.16). (Dac˘ a
k = 0, nu avem nici o restrict ¸ie, deoarece as¸a cum s¸tim putem atinge gradul de exactitate
d = n − 1).
ˆ
Intr-adev˘ ar, u
n
trebuie s˘ a fie ortogonale pe P
k−1
relativ la funct ¸ia pondere w.
Deoarece w(t) ≥ 0, avem ˆın mod necesar k ≤ n. Altfel, u
n
trebuie s˘ a fie ortogonal pe P
n
,
ˆın particular pe el ˆınsus¸i, ceea ce este imposibil. Astfel k = n este optimal, obt ¸inˆ andu-se o
formul˘ a de cuadratur˘ a cu gradul maxim de exactitate d
max
= 2n − 1. Condit ¸ia (b) impune
ortogonalitatea lui u
n
pe toate polinoamele de grad mai mic, adic˘ a u
n
() = π
n
(, w) este
polinomul ortogonal ˆın raport cu ponderea w. Aceast˘ a formul˘ a optimal˘ a se numes¸te formul˘ a
de cuadratur˘ a de tip Gauss asociat˘ a cu funct ¸ia pondere w. Deci nodurile ei sunt zerourile lui
π
n
(, w), iar ponderile (coeficient ¸ii) A
k
sunt dat ¸i de (7.3.19), adic˘ a
π
n
(t
k
; w) = 0,
A
k
=

b
a
π
n
(t, w)
(t −t
k


n
(t
k
, w)
w(t) dt,
k = 1, 2, . . . , n (7.3.22)
Formula a fost dezvoltat˘ a de Gauss ˆın 1814 ˆın cazul special w(t) ≡ 1 pe [−1, 1] s¸i extins˘ a
la funct ¸ii pondere mai generale de c˘ atre Christoffel
4
ˆın 1877. De aceea se mai numes¸te
formul˘ a de cuadratur˘ a Gauss-Christoffel .
Demonstrat ¸ia teoremei 7.3.3. Vom demonstra ˆıntˆ ai necesitatea lui (a) s¸i (b). Deoarece gradul
de exactitate este d = n − 1 + k ≥ n − 1, condit ¸ia (a) este trivial˘ a. Condit ¸ia (b) rezult˘ a de
asemenea imediat, deoarece pentru orice p ∈ P
k−1
, u
n
p ∈ P
n−1+k
. Deci

b
a
u
n
(t)p(t)w(t) =
n
¸
k=1
A
k
u
k
(t
k
)p(t
k
),
care se anuleaz˘ a, c˘ aci u
n
(t
k
) = 0 pentru k = 1, 2, . . . , n.
Pentru a demonstra suficient ¸a lui (a) s¸i (b) trebuie s˘ a ar˘ at˘ am c˘ a pentru orice p ∈ P
n−1+k
avem R
n
(p) = 0 ˆın (7.3.16). Dˆ andu-se orice astfel de p, ˆıl ˆımp˘ art ¸im cu u
n
, astfel ˆıncˆ at
p = qu
n
+r, q ∈ P
k−1
, r ∈ P
n−1
4
Elvin Bruno Christoffel (1829-1900), a activat pentru perioade scurte
la Berlin s¸i Z¨ urich s¸i cea mai mare parte a viet ¸ii la Strasbourg. Este
cunoscut pentru lucr˘ arile sale de geometrie, ˆın particular de analiza
tensorilor, care a jucat un rol important ˆın teoria relativit˘ at ¸ii a lui Ein-
stein.
7.3. Integrare numeric˘ a 277
unde q este cˆ atul s¸i r restul. Rezult˘ a c˘ a

b
a
p(t)w(t)dt =

b
a
q(t)u
n
(t)w(t)dt +

b
a
r(t)w(t)dt.
Prima integral˘ a din dreapta este 0, conform lui (b), deoarece q ∈ P
k−1
, ˆın timp ce a doua,
conform lui (a), deoarece r ∈ P
n−1
este egal˘ a cu
n
¸
k=1
A
k
r(t
k
) =
n
¸
k=1
A
k
[p(t
k
) −q(t
k
)u
n
(t
k
)] =
n
¸
k=1
A
k
p(t
k
),
ceea ce ˆıncheie demonstrat ¸ia.
Cazul k = n va fi discutat ˆın sect ¸iunea 7.3.3. Vom ment ¸iona dou˘ a cazuri importante cˆ and
k < n, care sunt de interes practic. Primul este formula de cuadratur˘ a Gauss-Radau ˆın care o
extremitate de interval, de exemplu a, este finit˘ a s¸i serves¸te ca nod, s˘ a zicem t
1
= a. Gradul
maxim de exactitate care se poate obt ¸ine este d = 2n − 2 s¸i corespunde lui k = n − 1 ˆın
teorema (7.3.3). Partea (b) a teoremei ne spune c˘ a nodurile r˘ amase t
2
, . . . , t
n
trebuie s˘ a fie
r˘ ad˘ acinile polinomului π
n−1
(, w
a
), unde w
a
(t) = (t − a)w(t). La fel, ˆın formulele Gauss-
Lobatto, ambele capete sunt finite s¸i servesc ca noduri, s˘ a zicem t
1
= a, t
n
= b, iar nodurile
r˘ amase t
2
, . . . , t
n−1
sunt zerourile lui π
n−2
(; w
a,b
), w
a,b
(t) = (t−a)(b−t)w(t), obt ¸inˆ andu-
se astfel gradul de exactitate d = 2n −3.
7.3.3. Propriet˘ at¸i ale cuadraturilor gaussiene
Regula de cuadratur˘ a a lui Gauss, dat˘ a de (7.3.16) s¸i (7.3.22), pe lˆ ang˘ a faptul c˘ a este
optimal˘ a (adic˘ a are grad maxim de exactitate) are s¸i unele propriet˘ at ¸i interesante.
(i) Toate nodurile sunt reale, distincte s¸i situate ˆın intervalul deschis (a, b). Aceasta este o
proprietate cunoscut˘ a satisf˘ acut˘ a de zerourile polinoamelor ortogonale.
(ii) Tot ¸i coeficient ¸ii (ponderile) A
k
sunt pozitivi. Demonstrat ¸ia se bazeaz˘ a pe o observat ¸ie
ingenioas˘ a a lui Stieltjes
0 <

b
a

2
j
(t)w(t)dt =
n
¸
k=1
A
k

2
j
(t
k
) = A
j
, j = 1, 2, . . . , n,
prima egalitate rezultˆ and din faptul c˘ a gradul de exactitate este d = 2n −1.
(iii) Dac˘ a [a, b] este m˘ arginit, atunci formula lui Gauss converge pentru orice funct ¸ie con-
tinu˘ a. Adic˘ a R
n
(f) →0, cˆ and n →∞, pentru orice f ∈ C[a, b]. Aceasta este o consecint ¸˘ a a
teoremei de aproximare a lui Weierstrass, din care rezult˘ a c˘ a dac˘ a ´ p
2n−1
(f; ) este polinomul
de cea mai bun˘ a aproximare a lui f pe [a, b] ˆın sensul normei uniforme atunci
lim
n→∞
|f() − ´ p
2k−1
(f; )|

= 0.
278 Aproximarea funct ¸ionalelor liniare
Deoarece R
n
(´ p
2n−1
) = 0 (c˘ aci d = 2n −1), avem succesiv
[R
n
(f)[ = [R
n
(f − ´ p
2n−1
)[ =
=

b
a
[f(t) − ´ p
2n−1
(f; t)]w(t)dt −
n
¸
k=1
A
k
[f(t
k
) − ´ p
2n−1
(f; t
k
)]


b
a
[f(t) − ´ p
2n−1
(f; t)[w(t)dt +
n
¸
k=1
A
k
[f(t
k
) − ´ p
2n−1
(f; t
k
)[ ≤
≤ |f() − ´ p
2n−1
(f; )|

¸

b
a
w(t)dt +
n
¸
k=1
A
k
¸
.
Aici pozitivitatea ponderilor A
k
a intervenit crucial. Observˆ and c˘ a
n
¸
k=1
A
k
=

b
a
w(t)dt = µ
0
,
concluzion˘ am c˘ a
[R
n
(f)[ ≤ 2µ
0
|f − ´ p
2n−1
|

→0, cˆ and n →∞.
Proprietatea care urmeaz˘ a este baza unui algoritm eficient de obt ¸inere a unor formule de
cuadratur˘ a gaussian˘ a.
(iv) Fie α
k
= α
k
(w) s¸i β
k
= β
k
(w) coeficient ¸ii din formula de recurent ¸˘ a pentru poli-
noamele ortogonale
π
k+1
(t) = (t −α
k

k
(t) −β
k
π
k−1
(t), k = 0, 1, 2, . . .
π
0
(t) = 1, π
−1
(t) = 0,
(7.3.23)
unde
α
k
=
(tπ
k
, π
k
)

k
, π
k
)
β
k
=

k
, π
k
)

k−1
, π
k−1
)
,
(7.3.24)
cu β
0
definit prin
β
0
=

b
a
w(t)dt (= µ
0
).
Matricea Jacobi de ordinul n pentru funct ¸ia pondere w este o matrice simetric˘ a tridiago-
nal˘ a definit˘ a prin
J
n
(w) =

α
0

β
1
0

β
1
α
1

β
2

β
2
.
.
.
.
.
.
.
.
.

β
n−1
0

β
n−1
α
n−1
¸
¸
¸
¸
¸
¸
¸
¸
. (7.3.25)
7.3. Integrare numeric˘ a 279
Teorema 7.3.4. Nodurile t
k
ale unei formule de tip Gausss sunt valorile proprii ale lui J
n
J
n
v
k
= t
k
v
k
, v
T
k
v
k
= 1, k = 1, 2, . . . , n, (7.3.26)
iar ponderile A
k
sunt exprimabile cu ajutorul componentelor v
k
ale vectorilor proprii
normalizat ¸i corespunz˘ atori prin
A
k
= β
0
v
2
k,1
, k = 1, 2, . . . , n. (7.3.27)
Astfel, pentru a obt ¸ine o formul˘ a de cuadratur˘ a Gaussian˘ a trebuie rezolvat˘ a o problem˘ a
de vectori s¸i valori proprii pentru o matrice tridiagonal˘ a simetric˘ a. Pentru aceast˘ a problem˘ a
exist˘ a metode foarte eficiente. Deci, abordarea bazat˘ a pe valori s¸i vectori proprii este mai
eficient˘ a decˆ at cea clasic˘ a.
ˆ
In plus, abordarea clasic˘ a se bazeaz˘ a pe dou˘ a probleme prost
condit ¸ionate: rezolvarea ecuat ¸iilor polinomiale (coeficient ¸ii sunt obt ¸inut ¸i prin aplicarea de
relat ¸ii de recurent ¸˘ a, deci sunt deja perturbat ¸i) s¸i rezolvarea unui sistem de ecuat ¸ii avˆ and ma-
tricea Vandermonde.
Demonstrat ¸ia teoremei 7.3.4. Fie ˜ π
k
() = ˜ π
k
(, w) polinomul ortogonal normalizat, deci
π
k
=


k
, π
k
)

˜ π
k
. Inserˆ and aceasta ˆın (7.3.23), ˆımp˘ art ¸ind cu


k
, π
k
)

s¸i utilizˆ and
(7.3.24), se obt ¸ine
˜ π
k+1
(t) = (t −α
k
)
˜ π
k

β
k+1
−β
k
˜ π
k−1

β
k+1
β
k
,
sau ˆınmult ¸ind cu

β
k+1
s¸i reordonˆ and,
t˜ π
k
(t) = α
k
˜ π
k
(t) +

β
k
˜ π
k−1
(t) +

β
k+1
˜ π
k+1
(t), k = 0, 1, . . . n −1. (7.3.28)
Cu ajutorul matricei lui Jacobi, J
n
, putem scrie aceast˘ a relat ¸ie sub forma vectorial˘ a
t˜ π(t) = J
n
˜ π(t) +

β
n
˜ π
n
(t)e
n
, (7.3.29)
unde ˜ π(t) = [˜ π
0
(t), ˜ π
1
(t), . . . , ˜ π
n−1
(t)]
T
s¸i e
n
(t) = [0, 0, . . . , 0, 1]
T
sunt vectori din R
n
.
Deoarece t
k
sunt zerouri ale lui ˜ π
n
rezult˘ a din (7.3.29) c˘ a
t
k
˜ π(t
k
) = J
n
˜ π(t
k
), k = 1, 2, . . . , n. (7.3.30)
Aceasta demonstreaz˘ a prima relat ¸ie a teoremei 7.3.4, deoarece ˜ π este un vector nenul cu
prima component˘ a
˜ π
0
= β
−1/2
0
. (7.3.31)
Pentru a demonstra a doua relat ¸ie, observ˘ am din (7.3.30) c˘ a vectorul propriu normalizat
v
k
este
v
k
=
1
[˜ π(t
k
)
T
˜ π(t
k
)]
˜ π(t
k
) =

n
¸
µ=1
˜ π
2
µ−1
(t
k
)

−1/2
˜ π(t
k
).
Comparˆ and prima component˘ a din ambi membrii s¸i ridicˆ and la p˘ atrat pe baza formulei
(7.3.31) avem
1
n
¸
µ=1
˜ π
2
µ−1
(t
k
)
= β
0
v
2
k,1
, k = 1, 2, . . . , n. (7.3.32)
280 Aproximarea funct ¸ionalelor liniare
Pe de alt˘ a parte, luˆ and f(t) = ˜ π
µ−1
(t) ˆın formula de cuadratur˘ a de tip Gauss (7.3.16), uti-
lizˆ and ortogonalitatea s¸i din nou (7.3.31) se obt ¸ine c˘ a
β
1/2
0
δ
µ−1,0
=
n
¸
k=0
A
k
˜ π
µ−1
(t
k
)
sau ˆın form˘ a matricial˘ a
Pa = β
1/2
0
e
1
, (7.3.33)
unde δ
µ−1,0
este simbolul lui Kronecker, P ∈ R
n×n
este matricea vectorilor proprii, a ∈ R
n
este vectorul coeficient ¸ilor gaussieni s¸i e
1
= [1, 0, . . . , 0]
T
∈ R
n
. Deoarece coloanele lui P
sunt ortogonale, avem
P
T
P = D, D = diag(d
1
, d
2
, . . . , d
n
), d
k
=
n
¸
µ=1
˜ π
2
µ−1
(t
k
).
ˆ
Inmult ¸im acum (7.3.33) la stˆ anga cu P
T
s¸i obt ¸inem
Da = β
1/2
0
P
T
e
1
= β
1/2
0
β
−1/2
0
e = e, e = [1, 1, . . . , 1]
T
.
Deci, a = D
−1
e, adic˘ a,
A
k
=
1
n
¸
µ=1
˜ π
2
µ−1
(t
k
)
, k = 1, 2, . . . , n.
Comparˆ and cu (7.3.32) se obt ¸ine rezultatul dorit.
Pentru detalii privind aspectele algoritmice legate de polinoame ortogonale s¸i cuadraturi
gaussiene a se vedea [23].
D˘ am acum o tabel˘ a cu funct ¸iile pondere clasice, polinoamele lor ortogonale core-
spunz˘ atoare s¸i coeficient ¸ii din formula de recurent ¸˘ a α
k
, β
k
(vezi tabela 7.1).
Observat ¸ia 7.3.5. Pentru polinoamele Jacobi avem
α
k
=
β
2
−α
2
(2k +α +β)(2k +α +β + 2)
s¸i
β
0
=2
α+β+1
B(α + 1, β + 1),
β
k
=
4k(k +α)(k +α +β)(k +β)
(2k +α +β − 1)(2k +α +β)
2
(2k +α +β + 1)
, k > 0. ♦
Sursa MATLAB 7.3 calculeaz˘ a nodurile s¸i coeficient ¸ii unei formule de cuadratur˘ a de tip
Gauss cu ajutorul vectorilor s¸i valorilor proprii ale matricei lui Jacobi. Parametrii de intrare
sunt coeficient ¸ii α s¸i β ai relat ¸iei de recurent ¸˘ a. Se foloses¸te funct ¸ia MATLAB eig. Deoarece
7.3. Integrare numeric˘ a 281
polinoamele notat ¸ia ponderea intervalul α
k
β
k
Legendre Pn(ln) 1 [-1,1] 0 2 (k=0)
(4−k
−2
)
−1
(k>0)
Cebˆıs¸ev #1 Tn (1−t
2
)

1
2
[−1,1] 0 π (k=0)
1
2
π (k=1)
1
4
(k>0)
Cebˆıs¸ev #2 un(Qn) (1−t
2
)
1
2 [−1,1] 0
1
2
π (k=0)
1
4
(k>0)
Jacobi P
(α,β)
n
(1−t)
α
(1−t)
β
[−1,1]
α>−1, β>−1 vezi observat ¸ia 7.3.5 vezi observat ¸ia 7.3.5
Laguerre L
(α)
n
t
α
e
−t
α>−1 [0,∞) 2k+α+1 Γ(1+α) (k=0)
k(k+α) (k>0)
Hermite Hn e
−t
2
R 0

π (k=0)
k/2(k>0)
Tabela 7.1: Polinoame ortogonale
Sursa MATLAB 7.3 Calculul nodurilor s¸i coeficient ¸ilor unei formule de cuadratur˘ a
gaussiene
function [g_nodes,g_coeff]=Gaussquad(alpha,beta)
%GAUSSQUAD - generare cuadratura Gauss
%calculeaza noduri si coeficienti pentru
%cuadraturi Gauss cu alpha si beta cunoscuti
%metoda - matrice Jacobi
n=length(alpha); rb=sqrt(beta(2:n));
J=diag(alpha)+diag(rb,-1)+diag(rb,1);
[v,d]=eig(J);
g_nodes=diag(d);
g_coeff=beta(1)
*
v(1,:).ˆ2;
Sursa MATLAB 7.4 Aproximarea unei integrale cu o formul˘ a de tip Gauss
function I=vquad(g_nodes,g_coeff,f)
I=g_coeff
*
f(g_nodes);
282 Aproximarea funct ¸ionalelor liniare
ˆın cazul unei matrice hermitiene, matricea vectorilor proprii este unitar˘ a ˆın limita preciziei de
lucru nu s-au mai normalizat vectorii proprii.
Calculul valorii aproximative a unei integrale folosind o formul˘ a de cuadratur˘ a cu
coeficient ¸ii s¸i nodurile calculate de Gaussquad se poate realiza ˆıntr-o singur˘ a linie de cod –
vezi sursa 7.4. D˘ am acum funct ¸iile MATLAB care calculeaz˘ a nodurile s¸i coeficient ¸ii pentru
formule de tip Gauss de diverse tipuri, apelˆ and funct ¸ia Gaussquad. Sursa 7.5 calculeaz˘ a
nodurile s¸i coeficient ¸ii Gauss-Legendre.
Sursa MATLAB 7.5 Generare formul˘ a Gauss-Legendre
function [g_nodes,g_coeff]=Gauss_Legendre(n)
%GAUSS-LEGENDRE - noduri si coeficienti Gauss-Legendre
beta=[2,(4-([1:n-1]).ˆ(-2)).ˆ(-1)];
alpha=zeros(n,1);
[g_nodes,g_coeff]=Gaussquad(alpha,beta);
Deoarece la o formul˘ a de tip Gauss-Cebˆıs¸ev de spet ¸a I coeficient ¸ii sunt egali, iar nodurile
sunt r˘ ad˘ acinile polinomului Cebˆıs¸ev de spet ¸a I, ˆın sursa 7.6 nu am mai folosit matricea Ja-
cobi. Se mai dau funct ¸iile pentru formule Gauss-Cebˆıs¸ev de spet ¸a a doua (sursa 7.7), Gauss-
Hermite (sursa 7.8), Gauss-Laguerre (sursa 7.9) s¸i Gauss-Jacobi (sursa 7.10).
Sursa MATLAB 7.6 Generare formul˘ a Gauss-Cebˆıs¸ev de spet ¸a I
function [g_nodes,g_coeff]=Gauss_Ceb1(n)
%GAUSS_CEB1 - noduri si coeficienti Gauss-Cebisev #1
g_coeff=pi/n
*
ones(1,n);
g_nodes=cos(pi
*
([1:n]’-0.5)/n);
Sursa MATLAB 7.7 Generare formul˘ a Gauss-Cebˆıs¸ev de spet ¸a a II-a
function [g_nodes,g_coeff]=Gauss_Ceb2(n)
%GAUSS_CEB1 - noduri si coeficienti Gauss-Cebisev #2
beta=[pi/2,1/4
*
ones(1,n-1)]; alpha=zeros(n,1);
[g_nodes,g_coeff]=Gaussquad(alpha,beta);
7.3. Integrare numeric˘ a 283
Sursa MATLAB 7.8 Generare formul˘ a Gauss-Hermite
function [g_nodes,g_coeff]=Gauss_Hermite(n)
%GAUSS_HERMITE - noduri si coeficienti Gauss-Hermite
beta=[sqrt(pi),[1:n-1]/2]; alpha=zeros(n,1);
[g_nodes,g_coeff]=Gaussquad(alpha,beta);
Sursa MATLAB 7.9 Generare formul˘ a Gauss-Laguerre
function [g_nodes,g_coeff]=Gauss_Laguerre(n,a)
%GAUSS_HERMITE - noduri si coeficienti Gauss-Laguerre
k=1:n-1;
alpha=[a+1, 2
*
k+a+1];
beta=[gamma(1+a),k.
*
(k+a)];
[g_nodes,g_coeff]=Gaussquad(alpha,beta);
Sursa MATLAB 7.10 Generare formul˘ a Gauss-Jacobi
function [g_nodes,g_coeff]=Gauss_Jacobi(n,a,b)
%Gauss-Jacobi - noduri si coeficienti Gauss-Jacobi
k=0:n-1;
k2=2:n-1;
%rec. relation coeffs
bet1=4
*
(1+a)
*
(1+b)/((2+a+b)ˆ2)/(3+a+b);
bet=[2ˆ(a+b+1)
*
beta(a+1,b+1), bet1, 4
*
k2.
*
(k2+a+b).
*
(k2+a).
*
...
(k2+b)./(2
*
k2+a+b-1)./(2
*
k2+a+b).ˆ2./(2
*
k2+a+b+1)];
if a==b
alpha=zeros(1,n);
else
alpha=(bˆ2-aˆ2)./(2
*
k+a+b)./(2
*
k+a+b+2);
end
[g_nodes,g_coeff]=Gaussquad(alpha,bet);
284 Aproximarea funct ¸ionalelor liniare
(v) Markov
5
a observat c˘ a formula de cuadratur˘ a a lui Gauss poate fi obt ¸inut˘ a cu ajutorul
formulei de interpolare a lui Hermite cu noduri duble:
f(x) = (H
2n−1
f)(x) +u
2
n
(x)f[x, x
1
, x
1
, . . . , x
n
, x
n
],

b
a
w(x)f(x)dx =

b
a
w(x)(H
2n−1
f)(x)dx+
+

b
a
w(x)u
2
n
(x)f[x, x
1
, x
1
, . . . , x
n
, x
n
]dx.
Dar gradul de exactitate 2n −1 implic˘ a

b
a
w(x)(H
2n−1
f)(x)dx =
n
¸
i=1
A
i
(H
2n−1
f)(x
i
) =
n
¸
i=1
A
i
f(x
i
),

b
a
w(x)f(x)dx =
n
¸
i=1
A
i
f(x
i
) +

b
a
w(x)u
2
(x)f[x, x
1
, x
1
, . . . , x
n
, x
n
]dx,
deci
R
n
(f) =

b
a
w(x)u
2
n
(x)f[x, x
1
, x
1
, . . . , x
n
, x
n
]dx.
Cumw(x)u
2
(x) ≥ 0, aplicˆ and teorema de medie pentru integrale s¸i teorema de medie pentru
diferent ¸e divizate avem
R
n
(f) = f[η, x
1
, x
1
, . . . , x
n
, x
n
]

b
a
w(x)u
2
(x)dx =
=
f
(2n)
(ξ)
(2n)!

b
a
w(x)[π
n
(x, w)]
2
dx, ξ ∈ [a, b].
7.4. Cuadraturi adaptive
La metodele de integrare numeric˘ a erorile nu depind numai de dimensiunea intervalului
utilizat, ci s¸i de valoarea derivatelor de un anumit ordin ale funct ¸iei care urmeaz˘ a a fi inte-
grat˘ a. Aceasta implic˘ a faptul c˘ a metodele nu vor lucra bine pentru funct ¸ii cu derivatele de
5
Andrei Andreievici Markov (1856-1922), matematician rus, activ
ˆın Sankt Petersburg. A avut contribut ¸ii importante ˆın teoria proba-
bilit˘ at ¸ilor, teoria numerelor s¸i teoria constructiv˘ a a aproxim˘ arii.
7.4. Cuadraturi adaptive 285
un anumit ordin mari – ˆın special funct ¸ii care au fluctuat ¸ii mari pe unele subintervale sau pe
tot intervalul. Este rezonabil s˘ a utiliz˘ am subintervale mici acolo unde derivatele sunt mari s¸i
subintervale mari acolo unde derivatele sunt mici. O metod˘ a care face aceasta ˆıntr-o manier˘ a
sistematic˘ a se numes¸te cuadratur˘ a adaptiv˘ a.
Abordarea general˘ a ˆıntr-o cuadratur˘ a adaptiv˘ a este de a utiliza dou˘ a metode diferite pe
fiecare subinterval, de a compara rezultatul s¸i de a subdiviza intervalul dac˘ a diferent ¸ele sunt
mari. Exist˘ a situat ¸ia nefericit˘ a ˆın care se utilizeaz˘ a dou˘ a metode proaste, rezultatele sunt
proaste, dar diferent ¸a dintre ele este mic˘ a. Un mod de a evita o astfel de situat ¸ie este de a
ne asigura c˘ a o metod˘ a supraestimeaz˘ a rezultatul, iar alta ˆıl subestimeaz˘ a. Sursa MATLAB
7.11 d˘ a un exemplu de structur˘ a general˘ a de cuadratur˘ a adaptiv recursiv˘ a. Parametrul g este o
Sursa MATLAB 7.11 Cuadratur˘ a adaptiv˘ a
function I=adaptquad(f,a,b,eps,g)
%ADAPTQUAD cuadratura adaptiva
%apel I=adaptquad(f,a,b,eps,g)
%f - functia
%a,b - limitele
%eps -eroarea
%g - cuadratura repetata utilizata
m=4;
I1=g(f,a,b,m);
I2=g(f,a,b,2
*
m);
if abs(I1-I2) < eps %succes
I=I2;
return
else %sudivizare recursiva
I=adaptquad(f,a,(a+b)/2,eps,g)+adaptquad(f,(a+b)/2,b,eps,g);
end
funct ¸ie care implementeaz˘ a o formul˘ a de cuadratur˘ a repetat˘ a, de exemplu formula trapezelor
sau formula lui Simpson repetat˘ a. Structura algoritmului: divide et impera.
Spre deosebire de alte metode, la care se decide cˆ at de mult se munces¸te pentru a asigura
precizia dorit˘ a, la o cuadratur˘ a adaptiv˘ a se calculeaz˘ a doar atˆ at cˆ at este necesar. Aceasta
ˆınseamn˘ a c˘ a eroarea absolut˘ a eps trebuie aleas˘ a astfel ˆıncˆ at s˘ a nu se intre ˆıntr-un ciclu infinit
pentru a atinge o precizie imposibil de atins. Num˘ arul de pas¸i depinde de natura funct ¸iei de
integrat. Posibilit˘ at ¸i de ˆımbun˘ at˘ at ¸ire: precizia poate fi scalat˘ a cu raportul dintre dimensiunea
intervalului curent s¸i dimensiunea ˆıntregului interval.
Exemplul 7.4.1. Dorim s˘ a aproxim˘ am lungimea unui arc de sinusoid˘ a pe un interval egal cu
o perioad˘ a. Avem de aproximat
I =


0

1 + cos
2
(x) dx.
Funct ¸ia de integrat arat˘ a ˆın MATLAB astfel
function y=lsin(x)
y=sqrt(1+cos(x).ˆ2);
286 Aproximarea funct ¸ionalelor liniare
Iat˘ a s¸i dou˘ a exemple de apel al lui adaptquad
>> format long
>> I=adaptquad(@lsin,0,2
*
pi,1e-8,@Simpson)
I =
7.64039557805542
>> I=adaptquad(@lsin,0,2
*
pi,1e-8,@trapez)
I =
7.64039557011458
Recomand˘ am cititorului s˘ a compare timpii de execut ¸ie. ♦
Pentru detalii suplimentare asupra cuadraturilor adaptive recomand˘ am [21].
7.5. Cuadraturi iterate. Metoda lui Romberg
Un dezavantaj al cuadraturilor adaptive este acela c˘ a calculeaz˘ a repetat valorile funct ¸iei
ˆın noduri, iar atunci cˆ and este rulat un astfel de program apare un consum suplimentar de
timp de calcul datorit˘ a recursivit˘ at ¸ii sau gestiunii stivei ˆıntr-o implementare iterativ˘ a. Cuadra-
turile iterative ˆınl˘ atur˘ a aceste inconveniente. Ele aplic˘ a la primul pas o cuadratur˘ a repetat˘ a s¸i
apoi subdivid intervalele ˆın p˘ art ¸i egale folosind la fiecare pas aproximantele calculate ante-
rior. Vom exemplifica aceast˘ a tehnic˘ a printr-o metod˘ a care pornes¸te de la formula repetat˘ a a
trapezului s¸i ˆımbun˘ at˘ at ¸es¸te convergent ¸a utilizˆ and extrapolarea Richardson.
Primul pas al procesului presupune aplicarea formulei repetate a trapezului cu n
1
= 1,
n
2
= 2, . . . , n
p
= 2
p−1
, unde p ∈ N

. Valoarea pasului h
k
corespunz˘ atoare lui n
k
va fi
h
k
=
b −a
n
k
=
b −a
2
k−1
.
Cu aceste notat ¸ii regula trapezului devine

b
a
f(x)dx =
h
k
2

f(a) +f(b) + 2
2
n−1
−1
¸
i=1
f(a +ih
k
)
¸
¸

b −a
12
h
2
k
f
′′

k
) (7.5.1)
µ
k
∈ (a, b).
Not˘ am cu R
k,1
rezultatul aproxim˘ arii conform (7.5.1).
R
1,1
=
h
1
2
[f(a) +f(b)] =
b −a
2
[f(a) +f(b)], (7.5.2)
R
2,1
=
h
2
2
[f(a) +f(b) + 2f(a +h
2
)] =
=
b −a
4
¸
f(a) +f(b) + 2f

a +
b −a
2

=
=
1
2
¸
R
1,1
+h
1
f

a +
1
2
h
1

7.5. Cuadraturi iterate. Metoda lui Romberg 287
s¸i, ˆın general,
R
k,1
=
1
2

R
k−1,1
+h
k−1
2
k−2
¸
i=1
f

a +

i −
1
2

h
k−1

¸
¸
, k = 2, n (7.5.3)
Urmeaz˘ a ˆımbun˘ at˘ at ¸irea prin extrapolare Richardson
6
(des¸i a fost introdus˘ a de Richardson
s¸i Gaunt se pare c˘ a este datorat˘ a lui Arhimede
7
)
I =

b
a
f(x)dx = R
k−1,1

(b −a)
12
h
2
k
f
′′
(a) +O(h
4
k
).
Vom elimina termenul ˆın h
2
k
combinˆ and dou˘ a ecuat ¸ii
I =R
k−1,1

(b −a)
12
h
2
k
f
′′
(a) +O(h
4
k
),
I =R
k,1

b −a
48
h
2
k
f
′′
(a) +O(h
4
k
).
Obt ¸inem
I =
4R
k,1
−R
k−1,1
3
+O(h
4
).
Definim
R
k,2
=
4R
k,1
−R
k−1,1
3
. (7.5.4)
Se aplic˘ a extrapolarea Richardson s¸i acestor valori.
ˆ
In general dac˘ a f ∈ C
2n+2
[a, b],
atunci pentru k = 1, n putem scrie

b
a
f(x)dx =
h
k
2

f(a) +f(b) + 2
2
k−1
−1
¸
i=1
f(a +ih
k
)
¸
¸
+ (7.5.5)
6
Lewis Fry Richardson (1881-1953), matematician englez. A avut
contribut ¸ii la predict ¸ia numeric˘ a a vremii, propunˆ and rezolvarea
ecuat ¸iilor hidro s¸i termodinamice ale meteorologiei cu metode bazate
pe diferent ¸e finite. A realizat un studiu de referint ¸˘ a asupra turbulent ¸ei
atmosferice, introducˆ and cantit˘ at ¸ile numite ast˘ azi ,,numerele Richard-
son”. La 50 de ani s¸i-a luat licent ¸a ˆın psihologie s¸i a dezvoltat o teorie
s¸tiint ¸ific˘ a a relat ¸iilor internat ¸ionale. A fost ales membru al Royal So-
ciety ˆın 1926.
7
Arhimede (287 ˆı.e.n. - 212 ˆı.e.n.), matematician grec din Siracuza,
unul dintre cei mai important ¸i ai ˆıntregii antichit˘ at ¸i. A pus la punct
o metod˘ a de integrare care i-a permis s˘ a determine arii, volume s¸i
suprafet ¸e ale multor corpuri. A dat o aproximare precis˘ a a lui π,
metode de aproximare precis˘ a a r˘ ad˘ acinii p˘ atrate s¸i un sistem de
reprezentare a numerelor mari.
ˆ
In mecanic˘ a, Arhimede a descoperit
teoremele fundamentale referitoare la centrul de greutate al figurilor
plane s¸i solidelor s¸i principiul care ˆıi poart˘ a numele, referitor la un
corp scufundat ˆıntr-un lichid. Mas¸inile sale de r˘ azboi au contribuit la
ap˘ ararea oras¸ului s˘ au ˆın timpul asediului romanilor, care a durat trei
ani. A murit ucis de un soldat roman la sfˆ ars¸itul asediului.
288 Aproximarea funct ¸ionalelor liniare
+
k
¸
i=1
K
i
h
2i
k
+O(h
2k+2
k
),
unde K
i
nu depinde de h
k
.
Formula (7.5.5) se justific˘ a ˆın modul urm˘ ator. Fie a
0
=

b
a
f(x)dx s¸i
A(h) =
h
2
¸
f(a) + 2
n−1
¸
k=1
f(a +kh) +f(b)
¸
, h =
b −a
k
.
Dac˘ a f ∈ C
2k+1
[a, b], k ∈ N

are loc urm˘ atorul rezultat datorat lui Euler
8
s¸i MacLaurin
9
A(h) = a
0
+a
1
h
2
+a
2
h
4
+ +a
k
h
2k
+O(h
2k+1
), h →0 (7.5.6)
unde
a
k
=
B
2k
(2k)!
[f
(2k−1)
(b) −f
(2k−1)
(a)], k = 1, 2, . . . , K.
8
Leonhard Euler (1707-1783), matematician elvet ¸ian, a urmat cursurile
lui Jakob Bernoulli la Universitea din Basel, luˆ and s¸i lect ¸ii particulare
de la Johann Bernoulli. Dup˘ a ce la 20 de ani nu a reus¸it s˘ a obt ¸in˘ a o
catedr˘ a de fizic˘ a la Basel, a emigrat la Sankt Petersburg; mai tˆ arziu
s-a mutat la Berlin s¸i apoi din nou la Sankt Petersburg. Indiscutabil,
Euler a fost cel mai prolific matematician al secolului al XVIII-lea,
lucrˆ and ˆın aproape toate ramurile calculului diferent ¸ial s¸i integral s¸i
fiind unul dintre fondatorii calculului variat ¸ional. A elaborat lucr˘ ari de
pionierat ˆın s¸tiint ¸ele aplicate: hidrodinamic˘ a, mecanica materialelor
deformabile s¸i solidului rigid, optic˘ a, astronomie. Nici chiar orbirea
sa la vˆ arsta de 59 de ani nu i-a afectat productivitatea fenomenal˘ a. Se
pare c˘ a opera sa nu a fost ˆınc˘ a editat˘ a ˆın ˆıntregime, ap˘ arˆ and pˆ an˘ a ˆın
1998 71 de volume.
9
Colin Maclaurin (1698-1768), matematician scot ¸ian. A aplicat calcu-
lul infinitezimal la probleme de geometrie. Este cunoscut pentru dez-
voltarea ˆın serie ˆın jurul originii, dar a avut s¸i contribut ¸ii la teoria
ecuat ¸iilor.
7.6. Cuadraturi adaptive II 289
Cantit˘ at ¸ile B
k
sunt numerele lui Bernoulli
10
, adic˘ a coeficient ¸ii dezvolt˘ arii
z
e
z
−1
=

¸
k=0
B
k
k!
z
k
, [z[ < 2π.
Formula (7.5.6) se numes¸te formula Euler-MacLaurin .
Eliminˆ and succesiv puterile lui h din (7.5.5) se obt ¸ine
R
k,j
=
4
j−1
R
k,j−1
−R
k−1,j−1
4
j−1
−1
, k = 2, n, j = 2, i.
Calculele se pot aranja tabelar, astfel:
R
1,1
R
2,1
R
2,2
R
3,1
R
3,2
R
3,3
.
.
.
.
.
.
.
.
.
.
.
.
R
n,1
R
n,2
R
n,3
. . . R
n,n
Deoarece (R
n,1
) este convergent s¸i (R
n,n
) converge, mai rapid decˆ at (R
n,1
). Drept cri-
teriu de oprire se poate folosi [R
n−1,n−1
−R
n,n
[ ≤ ε.
D˘ am o implementare ˆın MATLAB a metodei lui Romberg (sursa MATLAB 7.12, fis¸ierul
Romberg.m).
Exemplul 7.5.1. Problema din exemplul 7.4.1 se poate rezolva s¸i ˆın modul urm˘ ator:
>> I=Romberg(@lsin,0,2
*
pi,1e-8)
I =
7.64039557805609
7.6. Cuadraturi adaptive II
Coloana a doua din metoda lui Romberg corespunde aproxim˘ arii prin metoda lui Simp-
son. Not˘ am
S
k,1
= R
k,2
.
10
Jacob Bernoulli (1654-1705), fratele mai mare al lui Johann Bernoulli,
activ ˆın Basel. A fost unul dintre primii matematicieni care a apre-
ciat important ¸a introducerii de c˘ atre Leibniz s¸i Newton a calculului
diferent ¸ial s¸i integral, pe care l-a ˆımbog˘ at ¸it cu contribut ¸ii originale,
ˆın competit ¸ie (nu ˆıntotdeauna amical˘ a) cu fratele s˘ au mai mic. Este
unul dintre fondatorii Teoriei probabilit˘ at ¸ilor, prin lucrarea sa Ars con-
jectandi s¸i prin ,,legea numerelor mari”.
290 Aproximarea funct ¸ionalelor liniare
Sursa MATLAB 7.12 Metoda lui Romberg
function I=romberg(f,a,b,epsi,nmax)
%ROMBERG - calculul aproximativ al unei integrale
%prin metoda lui Romberg
%apel I=romberg(f,a,b,epsi,nmax)
%f -functia
%a,b - limitele de integrare
%epsi - eroarea
%nmax - numar maxim de iteratii
if nargin < 5
nmax=10;
end
if nargin < 4
epsi=1e-3;
end
R=zeros(nmax,nmax);
h=b-a;
% prima iteratie
R(1,1)=h/2
*
(sum(f([a,b])));
for k=2:nmax
%formula trapezelor;
x=a+([1:2ˆ(k-2)]-0.5)
*
h;
R(k,1)=0.5
*
(R(k-1,1)+h
*
sum(f(x)));
%extrapolare
plj=4;
for j=2:k
R(k,j)=(plj
*
R(k,j-1)-R(k-1,j-1))/(plj-1);
plj=plj
*
4;
end
if (abs(R(k,k)-R(k-1,k-1))<epsi)&(k>3)
I=R(k,k);
return
end
%dublare noduri
h=h/2;
end
error(’prea multe iteratii’)
7.7. Integrare numeric˘ a ˆın MATLAB 291
Coloana a treia este deci o combinat ¸ie a dou˘ a aproximante de tip Simpson:
S
k,2
= S
k,1
+
S
k,1
−S
k−1,1
15
= R
k,2
+
R
k,2
−R
k−1,2
15
.
Relat ¸ia
S
k,2
= S
k,1
+
S
k,1
−S
k−1,1
15
, (7.6.1)
va fi folosit˘ a la elaborarea unui algoritm de quadratur˘ a adaptiv˘ a. Fie c = (a +b)/2. Formula
elementar˘ a a lui Simpson este
S =
h
6
(f(a) + 4f(c) +f(b)) .
Pentru dou˘ a subintervale se obt ¸ine
S
2
=
h
12
(f(a) + 4f(d) + 2f(c) + 4f(e) +f(b)) ,
unde d = (a + c)/2 s¸i e = (c + b)/2. Cantitatea Q se obt ¸ine aplicˆ and (7.6.1) celor dou˘ a
aproximante:
Q = S
2
+ (S
2
−S)/15.
Putem s˘ a dam acum un algoritm recursiv pentru aproximarea integralei. Funct ¸ia adquad
evalueaz˘ a integrandul aplicˆ and regula lui Simpson. Ea apeleaz˘ a recursiv quadstep s¸i aplic˘ a
extrapolarea. Implementarea se d˘ a ˆın sursa MATLAB 7.13.
Exemplul 7.6.1. Problema din exemplul 7.4.1 se poate rezolva s¸i cu ajutorul funct ¸iei
adquad:
>> I=adquad(@lsin,0,2
*
pi,1e-8)
I =
7.64039557801944
7.7. Integrare numeric˘ a ˆın MATLAB
MATLAB are dou˘ a funct ¸ii de baz˘ a pentru integrare numeric˘ a, quad s¸i quadl. Ambele
necesit˘ a ca intervalul de integrare [a, b] s˘ a fie finit s¸i integrandul s˘ a nu aib˘ a nici o singularitate
pe acest interval. Pentru tratarea limitelor infinite sau singularit˘ at ¸ilor se pot ˆıncerca diverse
trucuri cunoscute ˆın analiza numeric˘ a cum ar fi schimbarea de variabil˘ a, integrare prin p˘ art ¸i,
cuadraturi gaussiene, s¸.a.m.d. (vezi [62, 22, 70, 13]).
Cea mai frecvent˘ a form˘ a de apel este q = quad(fun,a,b,tol) (s¸i similar pentru
quadl), unde fun este funct ¸ia de integrat. Ea poate fi dat˘ a sub form˘ a de s¸ir de caractere,
obiect inline sau function handle. Important este s˘ a accepte la intrare vectori s¸i s˘ a returneze
vectori. Argumentul tol este eroarea absolut˘ a (implicit 10
−6
).
Forma q = quad(fun,a,b,tol,trace) cu trace nenul traseaz˘ a (urm˘ ares¸te)
valorile [fcount a b-a Q] calculate ˆın timpul aplic˘ arii recursive.
292 Aproximarea funct ¸ionalelor liniare
Sursa MATLAB 7.13 Cuadratura adaptiv˘ a, variant˘ a
function [Q,fcount] = adquad(F,a,b,tol,varargin)
%ADQUAD Cuadratura adaptiva
%apel [Q,fcount] = adquad(F,a,b,tol,varargin)
% F - functia
% a,b - intervalul
% tol precizia, inplicit 1.e-6.
% restul argumentelor se transmit integrandului,F(x,p1,p2,...)
% Face F apelabila prin feval.
if ischar(F) & exist(F)˜=2
F = inline(F);
elseif isa(F,’sym’)
F = inline(char(F));
end
if nargin < 4 | isempty(tol), tol = 1.e-6; end
% Initializare
c = (a + b)/2;
fa = F(a,varargin{:}); fc = F(c,varargin{:});
fb = F(b,varargin{:});
% Apel recursiv
[Q,k] = quadstep(F, a, b, tol, fa, fc, fb, varargin{:});
fcount = k + 3;
% ---------------------------------------------------------
function [Q,fcount] = quadstep(F,a,b,tol,fa,fc,fb,varargin)
% Subfunctie recursiva utilizata de adquad.
h = b - a;
c = (a + b)/2;
fd = F((a+c)/2,varargin{:});
fe = F((c+b)/2,varargin{:});
Q1 = h/6
*
(fa + 4
*
fc + fb);
Q2 = h/12
*
(fa + 4
*
fd + 2
*
fc + 4
*
fe + fb);
if abs(Q2 - Q1) <= tol
Q = Q2 + (Q2 - Q1)/15;
fcount = 2;
else
[Qa,ka] = quadstep(F, a, c, tol, fa, fd, fc, varargin{:});
[Qb,kb] = quadstep(F, c, b, tol, fc, fe, fb, varargin{:});
Q = Qa + Qb;
fcount = ka + kb + 2;
end
7.7. Integrare numeric˘ a ˆın MATLAB 293
Forma q = quad(fun,a,b,tol,trace,p1,p2,...)transmite argumentele su-
plimentare p1, p2, . . . , direct lui fun, fun(x,p1,p2,...).
ˆ
In acest caz, pentru a utiliza
valori implicite ale lui tol sau trace ˆın locul lor pe lista de parametri se vor trece matrice
vide.
Forma [q,fcount] = quad(...) returneaz˘ a num˘ arul de evalu˘ ari de funct ¸ii.
S˘ a presupunem c˘ a dorim s˘ a aproxim˘ am

π
0
xsin xdx. Integrandul ˆıl putem p˘ astra ˆın
fis¸ierul xsin.m:
function y=xsin(x)
y=x.
*
sin(x);
Aproximanta se obt ¸ine astfel:
>> quad(@xsin,0,pi)
ans =
3.1416
Rutina quad este o implementare a unei cuadraturi adaptive de tip Simpson, as¸a cum se
descrie ˆın sect ¸iunea 7.6 sau ˆın [44]. quadl este mai precis˘ a s¸i se bazeaz˘ a pe o cuadratur˘ a de
tip Gauss-Lobatto cu 4 puncte (s¸i grad de exactitate 5) s¸i o extensie a ei de tip Kronrod cu
7 puncte (s¸i grad de exactitate 9), ambele descrise ˆın [21]. Cuadratura este adaptiv˘ a. Ambele
funct ¸ii dau mesaje de avertisment dac˘ a subintervalele devin prea mici sau dac˘ a s-au f˘ acut
excesiv de multe evalu˘ ari. Astfel de mesaje indic˘ a posibile singularit˘ at ¸i.
Pentru a ilustra modul de lucru al lui quad s¸i quadl vom aproxima integrala

1
0

1
(x −0.3)
2
+ 0.01
+
1
(x − 0.09)
2
+ 0.04
−6

dx.
Integrandul este funct ¸ia MATLAB humps, folosit˘ a la testarea rutinelor de integrare numeric˘ a
sau de demo-urile din MATLAB. Vom aplica quad acestei funct ¸ii cu tol=1e-4. Figura 7.2
reprezint˘ a integrandul s¸i marcheaz˘ a punctele de pe axa xˆın care se evalueaz˘ a integrandul; cer-
curile corespund valorilor integrandului. Figura arat˘ a c˘ a subintervalele sunt mai mici acolo
unde integrandul variaz˘ a mai rapid. Ea a fost obt ¸inut˘ a modificˆ and funct ¸ia quad din MAT-
LAB. Urm˘ atorul exemplu aproximeaz˘ a integralele lui Fresnel
x(t) =

t
0
cos(u
2
) du, y(t) =

t
0
sin(u
2
) du.
Acestea sunt ecuat ¸iile parametrice ale unei curbe, numit˘ a spirala lui Fresnel. Ea a fost
reprezentat˘ a ˆın figura 7.3, considerˆ and 1000 de puncte t echidistante din intervalul [−4π, 4π].
Din motive de eficient ¸˘ a, vom exploata simetria s¸i vom evita integrarea repetat˘ a pe [0, t], in-
tegrˆ and pe fiecare subinterval s¸i evaluˆ and integralele cu cumsum:
n = 1000; x = zeros(1,n); y = x;
i1 = inline(’cos(x.ˆ2)’); i2 = inline(’sin(x.ˆ2)’);
t=linspace(0,4
*
pi,n);
for i=1:n-1
x(i) = quadl(i1,t(i),t(i+1),1e-3);
y(i) = quadl(i2,t(i),t(i+1),1e-3);
294 Aproximarea funct ¸ionalelor liniare
0
10
20
30
40
50
60
70
80
90
100
Value of integral = 29.8583
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Figura 7.2: Integrarea numeric˘ a a lui humps prin quad
end
x = cumsum(x); y = cumsum(y);
plot([-x(end:-1:1),0,x], [-y(end:-1:1),0,y])
axis equal
Pentru a integra funct ¸ii date prin valori, nu prin expresia lor analitic˘ a, se foloses¸te funct ¸ia
trapz. Ea implementeaz˘ a regula trapezelor (nodurile nu trebuie s˘ a fie echidistante). As¸a
cum am v˘ azut ˆın sect ¸iunea 7.3.1, aceasta d˘ a rezultate bune la integrarea funct ¸iilor periodice
pe intervale a c˘ aror lungime este un multiplu ˆıntreg al perioadei. Exemplu:
>> x=linspace(0,2
*
pi,10);
>> y=1./(2+sin(x));
>> trapz(x,y)
ans =
3.62759872810065
>> 2
*
pi
*
sqrt(3)/3-ans
ans =
3.677835813675756e-010
Valoarea exact˘ a a integralei fiind
2
3

3π, eroarea este mai mic˘ a decˆ at 10
−9
.
Probleme
Problema 7.1. S˘ a se aproximeze

1
0
sin x
x
dx,
7.7. Integrare numeric˘ a ˆın MATLAB 295
−1 −0.5 0 0.5 1
−0.8
−0.6
−0.4
−0.2
0
0.2
0.4
0.6
0.8
Figura 7.3: Spirala lui Fresnel
folosind o cuadratur˘ a adaptiv˘ a s¸i metoda lui Romberg. Ce probleme pot s˘ a apar˘ a? S˘ a se
compare rezultatul cu cel furnizat de quad sau quadl.
Problema 7.2. Pornind de la o integral˘ a convenabil˘ a, s˘ a se aproximeze π cu 8 zecimale ex-
acte, folosind metoda lui Romberg s¸i o cuadratur˘ a adaptiv˘ a.
Problema 7.3. Aproximat ¸i

1
−1
2
1 +x
2
dx
folosind formula trapezelor s¸i formula repetat˘ a a lui Simpson, pentru diverse valori ale lui n.
Cum variaz˘ a precizia odat˘ a cu n? Reprezentat ¸i grafic.
Problema 7.4. Funct ¸ia eroare, erf, se defines¸te prin
erf(x) =
2

π

x
0
e
−t
2
dt.
Tabelat ¸i valorile acestei funct ¸ii pentru x = 0.1, 0.2, . . . , 1, utilizˆ and funct ¸ia adquad. S˘ a se
compare rezultatele cu cele furnizate de funct ¸iile MATLAB quad s¸i erf.
Problema 7.5. (a) Utilizat ¸i adquad s¸i funct ¸ia quad din MATLAB pentru a aproxima

2
−1
1
sin

[t[
dt.
(b) De ce nu apar probleme de tip ˆımp˘ art ¸ire la zero ˆın t = 0?
296 Aproximarea funct ¸ionalelor liniare
Problema 7.6. Pentru un num˘ ar p ∈ N consider˘ am integrala
I
p
=

1
0
(1 −t)
p
f(t) dt.
S˘ a se compare formula trapezelor pentru n subintervale cu formula Gauss-Jacobi cu n noduri
s¸i parametrii α = p s¸i β = 0. Luat ¸i, de exemplu, f(t) = tgt, p = 5(5)20 s¸i n = 10(10)50 ˆın
cazul formulei trapezelor s¸i n = 1(1)5 pentru formula Gauss-Jacobi.
Problema 7.7. Fie
f(x) = ln(1 + x) ln(1 −x).
(a) Utilizat ¸i ezplot pentru a reprezenta grafic f(x) pentru x ∈ [−1, 1].
(b) Utilizat ¸i Maple sau toolbox-ul Symbolic pentru a obt ¸ine valoarea exact˘ a a integralei

1
−1
f(x) dx.
(c) G˘ asit ¸i valoarea numeric˘ a a expresiei de la (b).
(d) Ce se ˆıntˆ ampl˘ a dac˘ a ˆıncerc˘ am s˘ a utiliz˘ am
adquad(

log(1 + x). ∗ log(1 −x)

, −1, 1).
la aproximarea valorii integralei?
(e) Cum evitat ¸i dificultatea? Justificat ¸i solut ¸ia.
(f) Utilizat ¸i adquad cu diverse precizii (tolerant ¸e). Reprezentat ¸i grafic eroarea s¸i num˘ arul
de evalu˘ ari ˆın funct ¸ie de tolerant ¸˘ a.
CAPITOLUL 8
Rezolvarea numeric˘ a a ecuat ¸iilor neliniare
Cuprins
8.1. Ecuat ¸ii neliniare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
8.2. Iterat ¸ii, convergent ¸˘ a s¸i eficient ¸˘ a . . . . . . . . . . . . . . . . . . . . . . 298
8.3. Metoda s¸irurilor Sturm . . . . . . . . . . . . . . . . . . . . . . . . . . 300
8.4. Metoda falsei pozit ¸ii . . . . . . . . . . . . . . . . . . . . . . . . . . . 302
8.5. Metoda secantei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
8.6. Metoda lui Newton . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307
8.7. Metoda aproximat ¸iilor succesive . . . . . . . . . . . . . . . . . . . . . 310
8.8. Metoda lui Newton pentru r˘ ad˘ acini multiple . . . . . . . . . . . . . . . 311
8.9. Ecuat ¸ii algebrice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
8.10. Metoda lui Newton ˆın R
n
. . . . . . . . . . . . . . . . . . . . . . . . . 313
8.11. Metode quasi-Newton . . . . . . . . . . . . . . . . . . . . . . . . . . . 316
8.11.1. Interpolare liniar˘ a . . . . . . . . . . . . . . . . . . . . . . . . . 317
8.11.2. Metode de modificare . . . . . . . . . . . . . . . . . . . . . . . 318
8.12. Ecuat ¸ii neliniare ˆın MATLAB . . . . . . . . . . . . . . . . . . . . . . . 321
Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
8.1. Ecuat¸ii neliniare
Problema discutat˘ a ˆın acest capitol se poate scrie generic sub forma
f(x) = 0, (8.1.1)
297
298 Rezolvarea numeric˘ a a ecuat ¸iilor neliniare
dar admite diverse interpret˘ ari, depinzˆ and de semnificat ¸ia lui x s¸i f. Cel mai simplu caz este
cel al unei singure ecuat ¸ii cu o singur˘ a necunoscut˘ a, caz ˆın care f este o funct ¸ie dat˘ a de o
variabil˘ a real˘ a sau complex˘ a s¸i ˆıncerc˘ am s˘ a g˘ asim valorile acestei variabile pentru care f se
anuleaz˘ a. Astfel de valori se numesc r˘ ad˘ acini ale ecuat ¸iei (8.1.1) sau zerouri ale funct ¸iei f.
Dac˘ a x din (8.1.1) este un vector, s˘ a zicem x = [x
1
, x
2
, . . . , x
d
]
T
∈ R
d
s¸i f este de
asemenea un vector ale c˘ arui componente sunt funct ¸ii de cele d variabile x
1
, x
2
, . . . , x
d
,
atunci (8.1.1) reprezint˘ a un sistem de ecuat ¸ii.
Se spune c˘ a sistemul este neliniar dac˘ a cel put ¸in una dintre componentele lui f depinde
neliniar de cel put ¸in una din variabilele x
1
, x
2
, . . . , x
d
. Dac˘ a toate componentele lui f sunt
funct ¸ii liniare de x
1
, . . . , x
d
avem de-a face cu un sistem de ecuat ¸ii algebrice liniare. Mai
general (8.1.1) ar putea reprezenta o ecuat ¸ie funct ¸ional˘ a, dac˘ a x este un element al unui spat ¸iu
de funct ¸ii s¸i f este un operator (liniar sau neliniar) ce act ¸ioneaz˘ a pe acest spat ¸iu.
ˆ
In fiecare
din aceste situat ¸ii zeroul din dreapta lui (8.1.1) poate avea diverse interpret˘ ari: num˘ arul zero
ˆın primul caz, vectorul nul ˆın al doilea s¸i funct ¸ia identic nul˘ a ˆın cel de-al treilea.
Mare parte din acest capitol este consacrat˘ a unei ecuat ¸ii neliniare scalare. Astfel de ecuat ¸ii
apar frecvent ˆın analiza sistemelor ˆın vibrat ¸ie, unde r˘ ad˘ acinile corespund frecvent ¸elor critice
(rezonant ¸˘ a). Cazul special al ecuat ¸iilor algebrice, unde f din (8.1.1) este un polinom, este de
important ¸˘ a considerabil˘ a s¸i merit˘ a un tratament special.
8.2. Iterat¸ii, convergent¸˘ a s¸i eficient¸˘ a
Nici chiar cele mai simple ecuat ¸ii - de exemplu cele algebrice - nu admit solut ¸ii care s˘ a fie
exprimabile prin expresii rat ¸ionale sau radicali. Din acest motiv, este imposibil, ˆın general,
s˘ a calcul˘ am r˘ ad˘ acinile ecuat ¸iilor neliniare printr-un num˘ ar finit de operat ¸ii aritmetice. Este
nevoie de o metod˘ a iterativ˘ a, adic˘ a de o procedur˘ a care genereaz˘ a o secvent ¸˘ a infinit˘ a de
aproximat ¸ii ¦x
n
¦
n∈N
astfel ˆıncˆ at
lim
n→∞
x
n
= α, (8.2.1)
unde α este o r˘ ad˘ acin˘ a a ecuat ¸iei.
ˆ
In cazul unui sistem, x
k
s¸i α sunt vectori de dimensiune
adecvat˘ a, iar convergent ¸a trebuie ˆınt ¸eleas˘ a ˆın sensul convergent ¸ei pe componente.
Des¸i convergent ¸a unui proces iterativ este de dorit, pentru a putea fi practic˘ a, este necesar
ceva mai mult decˆ at convergent ¸a. Ceea ce se dores¸te este o convergent ¸˘ a rapid˘ a. Conceptul de
baz˘ a pentru m˘ asurarea vitezei de convergent ¸˘ a este ordinul de convergent ¸˘ a.
Definit ¸ia 8.2.1. Spunem c˘ a x
n
converge c˘ atre α (cel put ¸in) liniar dac˘ a
[x
n
−α[ ≤ e
n
, (8.2.2)
unde ¦e
n
¦ este un s¸ir pozitiv ce satisface
lim
n→∞
e
n+1
e
n
= c, 0 < c < 1. (8.2.3)
Dac˘ a (8.2.2) s¸i (8.2.3) au loc cu egalitate ˆın (8.2.2), atunci c se numes¸te eroare asimptotic˘ a .
ˆ
In aceast˘ a definit ¸ie, expresia ,,cel put ¸in“ se leag˘ a de faptul c˘ a avem doar inegalitate
ˆın (8.2.2), ceea ce dorim ˆın practic˘ a. De fapt, strict vorbind, marginea e
n
converge liniar,
8.2. Iterat ¸ii, convergent ¸˘ a s¸i eficient ¸˘ a 299
ˆınsemnˆ and c˘ a ˆın cele din urm˘ a (pentru n suficient de mare) fiecare din aceste margini ale
erorii este aproximativ o fract ¸ie constant˘ a din precedenta.
Definit ¸ia 8.2.2. Se spune c˘ a x
n
converge c˘ atre α (cel put ¸in) cu ordinul p ≥ 1 dac˘ a (8.2.2)
are loc cu
lim
n→∞
e
n+1
e
p
n
= c, c > 0. (8.2.4)
Astfel convergent ¸a de ordinul 1 coincide cu convergent ¸a liniar˘ a, ˆın timp ce convergent ¸a de
ordinul p > 1 este mai rapid˘ a. De notat c˘ a ˆın acest ultimcaz nu se pune nici o restrict ¸ie asupra
constantei c: odat˘ a ce e
n
este suficient de mic, exponentul p va avea grij˘ a de convergent ¸˘ a. S¸ i
ˆın acest caz, dac˘ a avem egalitate ˆın (8.2.2), c se numes¸te eroare asimptotic˘ a.
Aceleas¸i definit ¸ii se aplic˘ a s¸i s¸irurilor vectoriale, cu modulul ˆınlocuit cu orice norm˘ a vec-
torial˘ a.
Clasificarea convergent ¸ei ˆın raport cu ordinul este destul de rudimentar˘ a, deoarece sunt
tipuri de convergent ¸˘ a la care definit ¸iile (8.2.1) s¸i (8.2.2) nu se aplic˘ a. Astfel, un s¸ir ¦e
n
¦
poate converge c˘ atre zero mai ˆıncet decˆ at liniar, de exemplu dac˘ a c = 1 ˆın (8.2.3). Acest
tip de convergent ¸˘ a se numes¸te subliniar˘ a. La fel, c = 0 ˆın (8.2.3) conduce la convergent ¸˘ a
superliniar˘ a, dac˘ a (8.2.4) nu are loc pentru nici un p > 1.
Este instructiv s˘ a examin˘ am comportarea lui e
n
, dac˘ a ˆın loc de relat ¸ia la limit˘ a avem
egalitate pentru un anumit n, s˘ a zicem
e
n+1
e
p
n
= c, n = n
0
, n
0
+ 1, n
0
+ 2, . . . (8.2.5)
Pentru n
0
suficient de mare, relat ¸ia este aproape adev˘ arat˘ a. Printr-o simpl˘ a induct ¸ie se
obt ¸ine c˘ a
e
n0+k
= c
p
k
−1
p−1
e
p
k
n0
, k = 0, 1, 2, . . . , (8.2.6)
care desigur are loc pentru p > 1, dar s¸i pentru p = 1 cˆ and p ↓ 1:
e
n0+k
= c
k
e
n0
, k = 0, 1, 2, . . . , (p = 1). (8.2.7)
Presupunˆ and c˘ a e
n0
este suficient de mare astfel ˆıncˆ at aproximarea x
n0
are un num˘ ar de
zecimale corecte, scrieme
n0+k
= 10
−δ
k
e
n0
. Atunci δ
k
, ˆın conformitate cu (8.2.2), reprezint˘ a
num˘ arul suplimentar de cifre zecimale corecte din aproximat ¸ia x
n0+k
(ˆın contrast cu x
n0
).
Logaritmˆ and (8.2.6) s¸i (8.2.7) obt ¸inem
δ
k
=

k log
1
c
, dac˘ a p = 1
p
k

1−p
−k
p−1
log
1
c
+ (1 −p
−k
) log
1
en
0

, dac˘ a p > 1
deci cˆ and k →∞
δ
k
∼ c
1
k (p = 1), δ
k
∼ c
p
p
k
(p > 1), (8.2.8)
unde c
1
= log
1
c
> 0, dac˘ a p = 1 s¸i
c
p
=
1
p −1
log
1
c
+ log
1
e
n0
300 Rezolvarea numeric˘ a a ecuat ¸iilor neliniare
(presupunem c˘ a n
0
este suficient de mare s¸i deci e
n0
suficient de mic, pentru a avea c
p
> 0).
Aceasta ne arat˘ a c˘ a num˘ arul de cifre zecimale corecte cres¸te liniar odat˘ a cu k cˆ and p = 1 s¸i
exponent ¸ial cˆ and p > 1.
ˆ
In ultimul caz δ
k+1

k
∼ p, ˆınsemnˆ and c˘ a (pentru k mare) num˘ arul
de cifre zecimale corecte cres¸te, pe iterat ¸ie, cu un factor p.
Dac˘ a fiecare iterat ¸ie necesit˘ a m unit˘ at ¸i de lucru (o ,,unitate de lucru” este efortul necesar
pentru a calcula o valoare a funct ¸iei sau a unei anumite derivate a sa), atunci indicele de
eficient ¸˘ a al iterat ¸iei poate fi definit prin
lim
k→∞

k+1

k
]
1/m
= p
1/m
.
Aceasta ne d˘ a o baz˘ a comun˘ a de comparare ˆıntre diversele metode iterative. Metodele liniare
au indicele de eficient ¸˘ a 1.
Calculele practice necesit˘ a o regul˘ a de oprire care s˘ a termine iterat ¸ia atunci cˆ and s-a
obt ¸inut (sau se crede c˘ a s-a obt ¸inut) precizia dorit˘ a. Ideal, ne oprim atunci cˆ and |x
n
−α| <
tol, tol dat. Deoarece α nu este cunoscut se obis¸nuies¸te s˘ a se ˆınlocuiasc˘ a x
n
−α cu x
n
−x
n−1
s¸i se impune cerint ¸a ca
|x
n
−x
n−1
| ≤ tol, (8.2.9)
unde
tol = |x
n

r

a
(8.2.10)
cu ε
r
, ε
a
valori date ale erorii. Ca o m˘ asur˘ a de sigurant ¸˘ a, am putea cere ca (8.2.9) s˘ a aib˘ a loc
pentru mai multe valori consecutive ale lui n, nu doar pentru una singur˘ a. Alegˆ and ε
r
= 0
sau ε
a
= 0 se obt ¸ine un test de eroare absolut˘ a sau relativ˘ a. Este totus¸i prudent s˘ a utiliz˘ am un
test mixt, cum ar fi, s˘ a zicem ε
e
= ε
a
= ε. Atunci, dac˘ a |x
n
| este mic sau moderat de mare,
se controleaz˘ a efectiv eroarea absolut˘ a, ˆın timp ce pentru |x
n
| foarte mare se controleaz˘ a
eroarea relativ˘ a. Testele de mai sus se pot combina cu un test de tipul [[f(x)[[ ≤ ε.
8.3. Metoda s¸irurilor Sturm
Exist˘ a situat ¸ii ˆın care este de dorit s˘ a select˘ amo r˘ ad˘ acin˘ a particular˘ a dintre mai multe s¸i s˘ a
avemscheme iterative care converg c˘ atre ea. Acesta este cazul, de exemplu, pentru polinoame
ortogonale, ale c˘ aror r˘ ad˘ acini sunt reale s¸i distincte. De asemenea, am putea dori s˘ a facem
o select ¸ie a unei anumite r˘ ad˘ acini: cea mai mare, a doua ca m˘ arime, a treia s¸.a.m.d. s¸i s˘ a o
calcul˘ am f˘ ar˘ a a mai calcula s¸i altele. Aceasta este posibil dac˘ a combin˘ am ˆınjum˘ at˘ at ¸irea cu
teorema lui Sturm
1
.
1
Jaques Charles Franc¸ois Sturm (1803-1855), matematician s¸i fizician
elvet ¸ian, cunoscut pentru teorema sa asupra s¸irurilor Sturm, de-
scoperit˘ a ˆın 1829 s¸i pentru teoria sa asupra ecuat ¸iei diferent ¸iale Sturm-
Liouville. A avut contribut ¸ii semnificative s¸i ˆın domeniul geometriei
proiective s¸i diferent ¸iale.
8.3. Metoda s¸irurilor Sturm 301
S˘ a consider˘ am ecuat ¸ia
f(x) := π
d
(x) = 0, (8.3.1)
unde π
d
este un polinom de grad d, ortonormal ˆın raport cu o anumit˘ a m˘ asur˘ a. S¸ tim c˘ a π
d
este polinomul caracteristic al unei matrice simetrice tridiagonale s¸i poate fi calculat recursiv
printr-o relat ¸ie de recurent ¸˘ a de forma
π
0
(x) = 1, π
1
(x) = x −α
0
π
k+1
(x) = (x −α
k

k
(x) −β
k
π
k−1
(x), k = 1, 2, . . . , d −1,
(8.3.2)
cu β
k
pozitiv. Recurent ¸a (8.3.2) este util˘ a nu numai pentru calculul lui π
d
(x), dar s¸i pentru c˘ a
are urm˘ atoarea proprietate util˘ a, datorat˘ a lui Sturm.
Teorema 8.3.1 (Sturm). Fie σ(x) num˘ arul de schimb˘ ari de semn (zerourile nu conteaz˘ a) ˆın
secvent ¸a de numere
π
d
(x), π
d−1
(x), . . . , π
1
(x), π
0
(x). (8.3.3)
Atunci, pentru orice dou˘ a numere a, b cu a < b, num˘ arul de zerouri ale lui π
d
pe intervalul
a < x ≤ b este egal cu σ(a) −σ(b).
Deoarece π
k
(x) = x
k
+ . . . , este evident c˘ a σ(−∞) = d, σ(+∞) = 0, astfel ˆıncˆ at
num˘ arul de r˘ ad˘ acini reale ale lui π
d
este σ(−∞) − σ(∞) = d. Mai mult dac˘ a ξ
1
> ξ
2
>
> ξ
d
desemneaz˘ a zerourile lui π
d
ˆın ordine descresc˘ atoare, avem comportarea lui σ ca ˆın
figura 8.1.
ξ
d
d d−1
∫∫
ξ
r
r r−1
∫∫
ξ
x
σ(x) ℓ

ℓ −1
Figura 8.1: Ilustrarea metodei lui Sturm
Este us¸or de v˘ azut c˘ a:
σ(x) ≤ r −1 ⇐⇒x ≥ ξ
r
. (8.3.4)
ˆ
Intr-adev˘ ar, presupunem c˘ a x ≥ ξ
r
. Atunci ¦# zerouri ≤ x¦ ≥ d +1 −r. Deci conform
teoremei lui Sturm, σ(−∞) − σ(x) = d − σ(x) = ¦# zerouri ≤ x¦ ≤ d
1
− r, adic˘ a
σ(x) ≤ r − 1. Reciproc, dac˘ a σ(x) ≤ r − 1, atunci, din teorema lui Sturm, ¦# zerouri ≤
x¦ = d −σ(x) ≥ d + 1 −r, ceea ce implic˘ a x ≥ ξ
r
(vezi figura 8.1).
Ideea de baz˘ a este de a controla procesul de ˆınjum˘ at˘ at ¸ire nu ca mai sus, ci mai degrab˘ a
verificˆ and inegalitatea (8.3.4) pentru a vedea dac˘ a suntem ˆın stˆ anga sau ˆın dreapta lui ξ
r
.
Pentru a init ¸ializa procedura, avem nevoie de valorile a
1
= a, b
1
= b astfel ˆıncˆ at a < ξ
d
s¸i b > ξ
1
. Acestea se obt ¸in trivial ca s¸i capete ale intervalului de ortogonalitate al lui π
d
,
dac˘ a acesta este finit. Mai general putem aplica teorema lui Gershgorin matricei lui Jacobi J
d
302 Rezolvarea numeric˘ a a ecuat ¸iilor neliniare
(7.3.25) asociate polinomului (8.3.2),
J
n
=

α
0

β
1
0

β
1
α
1

β
2

β
2
α
2
.
.
.
.
.
.
.
.
.

β
n−1
0

β
n−1
α
n−1
¸
¸
¸
¸
¸
¸
¸
¸
,
t ¸inˆ and cont c˘ a zerourile lui π
d
sunt valori proprii ale lui J
d
.
Teorema lui Gershgorin afirm˘ a c˘ a valorile proprii ale matricei A = [a
ij
] de ordin d sunt
localizate ˆın reuniunea discurilor

z ∈ C : [z −a
ii
[ ≤ r
i
, r
i
=
¸
j=i
[a
ij
[

, i = 1, d.
ˆ
In acest mod, a poate fi ales ca fiind cel mai mic s¸i b cel mai mare dintre cele d numere
α
0
+

β
1
, α
1
+

β
1
+

β
2
, . . . , α
d−2
+

β
d−2
+

β
d−1
, α
d−1
+

β
d−1
. Metoda s¸irurilor
lui Sturm continu˘ a dup˘ a cum urmeaz˘ a, pentru orice r cu 1 ≤ r ≤ d:
for n := 1, 2, 3, . . . do
x
n
:=
1
2
(a
n
+b
n
);
if σ(x
n
) > r −1 then
a
n+1
:= x
n
; b
n+1
:= b
n
;
else
a
n+1
:= a
n
; b
n+1
= x
n
;
end if
end for
Deoarece init ¸ial σ(a) = d > r −1, σ(b) = 0 ≤ r −1, rezult˘ a din construct ¸ie c˘ a
σ(a
n
) > r −1, σ(b
n
) ≤ r −1, n = 1, 2, 3, . . .
ˆınsemnˆ and c˘ a ξ
r
∈ [a
n
, b
n
], pentru orice n = 1, 2, 3, . . . . Mai mult, deoarece ˆın metoda
ˆınjum˘ at˘ at ¸irii, b
n
−a
n
=
b −a
2
n−1
, metoda converge cel put ¸in liniar c˘ atre r˘ ad˘ acina ξ
r
.
8.4. Metoda falsei pozit ¸ii
Ca ˆın metoda ˆınjum˘ at˘ at ¸irii, presupunem c˘ a avem dou˘ a numere a < b astfel ˆıncˆ at
f ∈ C[a, b], f(a)f(b) < 0 (8.4.1)
s¸i gener˘ am un s¸ir descendent de intervale [a
n
, b
n
], n = 1, 2, 3, . . . , cu a
1
= a, b
1
= b astfel
ˆıncˆ at f(a
n
)f(b
n
) < 0. Spre deosebire de metoda ˆınjum˘ at˘ at ¸irii, pentru a determina urm˘ atorul
interval nu lu˘ am mijlocul lui [a
n
, b
n
], ci solut ¸ia x = x
n
a ecuat ¸iei liniare
(L
1
f)(x; a
n
, b
n
) = 0.
8.4. Metoda falsei pozit ¸ii 303
Aceasta pare s˘ a fie o alegere mai flexibil˘ a decˆ at ˆın metoda ˆınjum˘ at˘ at ¸irii deoarece x
n
va fi mai
apropiat de cap˘ atul de care [f[ este mai mic.
Procedura decurge dup˘ a cum urmeaz˘ a:
for n := 1, 2, . . . do
x
n
:= a
n

a
n
−b
n
f(a
n
) −f(b
n
)
f(a
n
);
if f(a
n
)f(x
n
) > 0 then
a
n+1
:= x
n
; b
n+1
:= b
n
;
else
a
n+1
:= a
n
; b
n+1
:= x
n
;
end if
end for
Iterat ¸ia se poate termina cˆ and min(x
n
−a
n
, b
n
−x
n
) ≤ tol, unde tol este o valoare dat˘ a.
Convergent ¸a se analizeaz˘ a mai us¸or dac˘ a presupunem c˘ a f este convex˘ a sau concav˘ a pe
[a, b]. Presupunem c˘ a avem
f
′′
(x) > 0, x ∈ [a, b] (f convex˘ a), f(a) < 0, f(b) > 0. (8.4.2)
S¸ irul
x
n+1
= x
n

x
n
−b
f(x
n
) −f(b)
f(x
n
), n ∈ N

, x
1
= a (8.4.3)
este monoton cresc˘ ator s¸i m˘ arginit superior de α, deci convergent c˘ atre o limit˘ a x, iar f(x) =
0 (vezi figura 8.2).
a b
x
n−1
x
n
α
Figura 8.2: Metoda falsei pozit ¸ii
Viteza de convergent ¸˘ a se determin˘ a sc˘ azˆ and α din ambii membri ai lui (8.4.3) s¸i utilizˆ and
304 Rezolvarea numeric˘ a a ecuat ¸iilor neliniare
faptul c˘ a f(α) = 0:
x
n+1
−α = x
n
−α −
x
n
−b
f(x
n
) −f(b)
[f(x
n
) −f(α)].
ˆ
Imp˘ art ¸ind cu x
n
−α avem
x
n+1
−α
x
n
−α
= 1 −
x
n
−b
f(x
n
) −f(b)
f(x
n
) −f(α)
x
n
−α
.
F˘ acˆ and n →∞s¸i utilizˆ and faptul c˘ a x
n
→α, obt ¸inem
lim
n→∞
x
n+1
−α
x
n
−α
= 1 −(b −α)
f

(α)
f(b)
. (8.4.4)
Deci metoda converge liniar, cu eroarea asimptotic˘ a
c = 1 −(b −a)
f

(α)
f(b)
.
Datorit˘ a ipotezei convexit˘ at ¸ii avem c ∈ (0, 1). Analog se face demonstrat ¸ia ˆın cazul cˆ and f
este concav˘ a. Dac˘ a f nu este nici convex˘ a nici concav˘ a pe [a, b], ci f ∈ C
2
[a, b] s¸i f
′′
(α) = 0,
f
′′
are semn constant pe o vecin˘ atate a lui α s¸i pentru un n suficient de mare x
n
ajunge ˆın
acea vecin˘ atate s¸i se poate proceda ca mai sus.
Dezavantaje: (i) convergent ¸a lent˘ a; (ii) faptul c˘ a unul din capete poate r˘ amˆ ane fix. Dac˘ a
f este turtit˘ a ˆın vecin˘ atatea r˘ ad˘ acinii s¸i a este apropiat de α s¸i b dep˘ artat convergent ¸a poate fi
foarte lent˘ a.
8.5. Metoda secantei
Este o variant˘ a a metodei falsei pozit ¸ii, ˆın care nu se mai cere ca f s˘ a aib˘ a valori de semne
contrare, nici m˘ acar la capetele intervalului init ¸ial.
Se aleg dou˘ a valori arbitrare de pornire x
0
, x
1
s¸i se continu˘ a cu
x
n+1
= x
n

x
n
−x
n−1
f(x
n
) −f(x
n−1
)
f(x
n
), n ∈ N

. (8.5.1)
Aceasta preˆıntˆ ampin˘ a aparit ¸ia unei false pozit ¸ii s¸i sugereaz˘ a o convergent ¸˘ a mai rapid˘ a. Din
p˘ acate, nu mai are loc convergent ¸a ,,global˘ a“ pe [a, b] ci doar convergent ¸a ,,local˘ a“, adic˘ a
numai dac˘ a x
0
s¸i x
1
sunt suficient de apropiate de r˘ ad˘ acin˘ a.
Vom avea ˆın continuare nevoie de o relat ¸ie ˆıntre trei erori consecutive
x
n+1
−α = x
n
−α −
f(x
n
)
f[x
n−1
, x
n
]
= (x
n
−α)

1 −
f(x
n
) −f(α)
(x
n
−α)f[x
n−1
, x
n
]

= (x
n
−α)

1 −
f[x
n
, α]
f[x
n−1
, x
n
]

= (x
n
−α)
f[x
n−1
, x
n
] −f[x
n
, α]
f[x
n−1
, x
n
]
= (x
n
−α)(x
n−1
−α)
f[x
n
, x
n−1
, α]
f[x
n−1
, x
n
]
.
8.5. Metoda secantei 305
Deci
(x
n+1
−α) = (x
n
−α)(x
n−1
− α)
f[x
n
, x
n−1
, α]
f[x
n−1
, x
n
]
, n ∈ N

. (8.5.2)
Din (8.5.2) rezult˘ a imediat c˘ a dac˘ a α este o r˘ ad˘ acin˘ a simpl˘ a (f(α) = 0, f

(α) = 0) s¸i
x
n
→α s¸i dac˘ a f ∈ C
2
pe o vecin˘ atate a lui α, convergent ¸a este superliniar˘ a. Cˆ at este ordinul
de convergent ¸˘ a?
ˆ
Inlocuim raportul diferent ¸elor divizate din (8.5.2) cu o constant˘ a, ceea ce este aproape
adev˘ arat cˆ and n este mare. Punˆ and c
k
= [x
k
−α[, avem
e
n+1
= e
n
e
n−1
C, C > 0
ˆ
Inmult ¸ind ambii membri cu C s¸i punˆ and E
n
= Ce
n
obt ¸inem
E
n+1
= E
n
E
n−1
, E
n
→0.
Logaritmˆ and s¸i punˆ and y
n
=
1
En
, se obt ¸ine
y
n+1
= y
n
+y
n−1
, (8.5.3)
care este recurent ¸a pentru s¸irul lui Fibonacci. Solut ¸ia este
y
n
= c
1
t
n
1
+c
2
t
n
2
,
unde c
1
, c
2
sunt constante s¸i
t
1
=
1
2
(1 +

5), t
2
=
1
2
(1 −

5).
Deoarece y
n
→ ∞, avem c
1
= 0 s¸i y
n
∼ c
1
t
n
1
, c˘ aci [t
2
[ < 1. Revenind la substitut ¸ie
1
En
∼ e
c1t
n
1
,
1
en
∼ Ce
c1t
n
1
s¸i deci
e
n+1
e
t1
n

C
t1
e
c1t
n
1
t1
Ce
c1t
n+1
1
= C
t1−1
, n →∞.
Deci ordinul de convergent ¸˘ a este t
1
=
1 +

5
2
≈ 1.61803 . . . (sect ¸iunea de aur).
Teorema 8.5.1. Fie α un zero simplu al lui f s¸i fie I
ε
= ¦x ∈ R : [x − α[ < ε¦ s¸i
presupunem c˘ a f ∈ C
2
[I
ε
]. Definim pentru ε suficient de mic
M(ε) = max
s∈Iε
t∈Iε

f
′′
(s)
2f

(t)

. (8.5.4)
Presupunem c˘ a
εM(ε) < 1 (8.5.5)
Atunci metoda secantei converge c˘ atre r˘ ad˘ acina unic˘ a α ∈ I
ε
pentru orice valori de pornire
x
0
= x
1
cu x
0
∈ I
ε
, x
1
∈ I
ε
.
306 Rezolvarea numeric˘ a a ecuat ¸iilor neliniare
Observat ¸ia 8.5.2. Se observ˘ a c˘ a lim
ε→0
M(ε) =

f
′′
(α)
2f

(α)

< ∞, deci (8.5.5) poate fi sat-
isf˘ acut˘ a pentru ε suficient de mic. Natura local˘ a a convergent ¸ei este cuantificat˘ a prin cerint ¸a
ca x
0
, x
1
∈ I
ε
. ♦
Demonstrat ¸ie. Se observ˘ a c˘ a α este singurul zero al lui f ˆın I
ε
. Aceasta rezult˘ a din formula
lui Taylor pentru x = α:
f(x) = f(α) + (x −α)f

(α) +
(x −α)
2
2
f
′′
(ξ),
unde f(α) = 0 s¸i ξ ∈ (x, α) (sau (α, x)). Astfel dac˘ a x ∈ I
ε
, atunci s¸i ξ ∈ I
ε
s¸i avem
f(x) = (x −α)f

(α)
¸
1 +
x −α
2
f
′′
(ξ)
f

(α)

.
Aici, dac˘ a x = α, tot ¸i trei factorii sunt diferit ¸i de 0, c˘ aci

x −α
2
f
′′
(ξ)
f

(α)

≤ εM(ε) < 1.
Deci f se poate anula pe I
ε
numai ˆın x = α. S˘ a ar˘ at˘ am c˘ a x
n
∈ I
ε
pentru orice n, ˆın afar˘ a de
cazul cˆ and f(x
n
) = 0, ˆın care x
n
= α s¸i metoda converge ˆıntr-un num˘ ar finit de pas¸i. Vom
demonstra aceasta prin induct ¸ie: presupunem c˘ a x
n−1
, x
n
∈ I
ε
s¸i x
n
= x
n−1
. Acest lucru
este adev˘ arat pentru n = 1 din ipotez˘ a. Deoarece f ∈ C
2
[I
ε
]
f[x
n−1
, x
n
] = f


1
), f[x
n−1
, x
n
, α] =
1
2
f
′′

2
), ξ
i
∈ I
ε
, i = 1, 2,
din (8.5.2) rezult˘ a
[x
n+1
−α[ ≤ ε
2

f
′′

n
)
2f


1
)

≤ εεM(ε) < ε,
adic˘ a x
n+1
∈ I
ε
. Mai mult, din relat ¸ia ˆıntre trei erori consecutive, (8.5.2), rezult˘ a x
n+1
= x
n
ˆın afar˘ a de cazul cˆ and f(x
n
) = 0 (s¸i atunci x
n
= α). Utilizˆ and (8.5.2) avem
[x
n+1
−α[ ≤ [x
n
−α[εM(ε)
care aplicat˘ a repetat ne d˘ a
[x
n+1
−α[ ≤ [x
n
−α[εM(ε) ≤ ≤ [εM(ε)]
n−1
[x
1
−α[.
Cum εM(ε) < 1, rezult˘ a c˘ a metoda este convergent˘ a s¸i x
n
→α cˆ and n →∞.
Deoarece este nevoie de o singur˘ a evaluare a lui f pe pas, indicele de eficient ¸˘ a este p =
1+

5
2
≈ 1.61803 . . . . O implementare a metodei este dat˘ a ˆın funct ¸ia MATLAB 8.1.
8.6. Metoda lui Newton 307
Sursa MATLAB 8.1 Metoda secantei pentru ecuat ¸ii neliniare ˆın R
function [z,ni]=secant(f,x0,x1,ea,er,Nmax)
%SECANT - metoda secantei pentru ecuatii in R
%intrare
%f - functia
%x0,x1 - valori de pornire
%ea,er - eroarea absoluta, resp eroarea relativa
%Nmax - numarul maxim de iteratii
%iesire
%z - aproximatia radacinii
%ni - numar de iteratii
if nargin<6, Nmax=50; end
if nargin<5, er=0; end
if nargin<4, ea=1e-3; end
xv=x0; fv=f(xv); xc=x1; fc=f(xc);
for k=1:Nmax
xn=xc-fc
*
(xc-xv)/(fc-fv);
if abs(xn-xc)<ea+er
*
xn %succes
z=xn;
ni=k;
return
end
%pregatesc iteratia urmatoare
xv=xc; fv=fc; xc=xn; fc=feval(f,xn);
end
%esec
error(’numarul maxim de iteratii depasit’)
8.6. Metoda lui Newton
Poate fi privit˘ a ca un caz la limit˘ a al metodei secantei, cˆ and x
n−1
→x
n
. Obt ¸inem iterat ¸ia
x
n+1
= x
n

f(x
n
)
f

(x
n
)
. (8.6.1)
O alt˘ a interpretare mult mai fructuoas˘ a este liniarizarea ecuat ¸iei f(x) = 0 ˆın x = x
n
:
f(x) ≈ f(x
n
) + (x −x
n
)f

(x
n
) = 0.
Privit˘ a ˆın acest mod metoda lui Newton se poate generaliza la ecuat ¸ii neliniare de toate tipurile
(sisteme neliniare, ecuat ¸ii funct ¸ionale, caz ˆın care f

trebuie ˆınt ¸eleas˘ a ca derivat˘ a Fr´ echet), iar
iterat ¸ia este
x
n+1
= x
n
−[f

(x
n
)]
−1
f(x
n
). (8.6.2)
308 Rezolvarea numeric˘ a a ecuat ¸iilor neliniare
Studiul erorii ˆın metoda lui Newton se face la fel ca la metoda secantei.
x
n+1
−α = x
n
−α −
f(x
n
)
f

(x
n
)
= (x
n
−α)
¸
1 −
f(x
n
) −f(α)
(x
n
−α)f

(x
n
)

= (x
n
−α)

1 −
f[x
n
, α]
f[x
n
, x
n
]

= (x
n
−α)
2
f[x
n
, x
n
, α]
f[x
n
, x
n
]
.
(8.6.3)
De aceea, dac˘ a x
n
→α, atunci
lim
n→∞
x
n+1
−α
(x
n
−α)
2
=
f
′′
(α)
2f

(α)
s¸i ordinul de convergent ¸˘ a al metodei lui Newton este 2, dac˘ a f
′′
(α) = 0. Referitor la
convergent ¸a local˘ a a metodei lui Newton avem:
Teorema 8.6.1. Fie α o r˘ ad˘ acin˘ a simpl˘ a a ecuat ¸iei f(x) = 0 s¸i I
ε
= ¦x ∈ R : [x−α[ ≤ ε¦.
Presupunem c˘ a f ∈ C
2
[I
ε
]. Definim
M(ε) = max
s∈Iε
t∈Iε

f
′′
(s)
2f

(t)

. (8.6.4)
Dac˘ a ε este suficient de mic astfel ˆıncˆ at
2εM(ε) < 1, (8.6.5)
atunci pentru orice x
0
∈ I
ε
, metoda lui Newton este bine definit˘ a s¸i converge p˘ atratic c˘ atre
singura r˘ ad˘ acin˘ a α ∈ I
ε
.
Criteriul de oprire pentru metoda lui Newton
[x
n
−x
n−1
[ < ε
se bazeaz˘ a pe urm˘ atoarea propozit ¸ie:
Propozit¸ia 8.6.2. Fie (x
n
) s¸irul de aproximante generat prin metoda lui Newton. Dac˘ a α
este o r˘ ad˘ acin˘ a simpl˘ a din [a, b], f ∈ C
2
[a, b] s¸i metoda este convergent˘ a, atunci exist˘ a un
n
0
∈ N astfel ˆıncˆ at
[x
n
−α[ ≤ [x
n
−x
n−1
[, n > n
0
.
Demonstrat ¸ie. Vom ar˘ ata ˆıntˆ ai c˘ a
[x
n
−α[ ≤
1
m
1
[f(x
n
)[, unde m
1
:= inf
x∈[a,b]
[f

(x)[. (8.6.6)
Utilizˆ and teorema lui Lagrange, f(α)−f(x
n
) = f

(ξ)(α−x
n
), cu ξ ∈ (α, x
n
) (sau (x
n
, α)).
Din relat ¸iile f(α) = 0 s¸i [f

(x)[ ≥ m
1
pentru x ∈ (a, b) rezult˘ a c˘ a [f(x
n
)[ ≥ m
1
[α − x
n
[,
adic˘ a chiar (8.6.6).
8.6. Metoda lui Newton 309
Pe baza formulei lui Taylor avem
f(x
n
) = f(x
n−1
) + (x
n
−x
n−1
)f

(x
n−1
) +
1
2
(x
n
−x
n−1
)
2
f
′′
(µ), (8.6.7)
cu µ ∈ (x
n−1
, x
n
) sau µ ∈ (x
n
, x
n−1
). T¸ inˆ and cont de modul de obt ¸inere a unei aproximat ¸ii
ˆın metoda lui Newton, avem f(x
n−1
) + (x
n
−x
n−1
)f

(x
n−1
) = 0 s¸i din (8.6.7) se obt ¸ine
[f(x
n
)[ =
1
2
(x
n
−x
n−1
)
2
[f
′′
(µ)[ ≤
1
2
(x
n
−x
n−1
)
2
|f
′′
|

,
iar pe baza formulei (8.6.6) rezult˘ a c˘ a
[α −x
n
[ ≤
|f
′′
|

2m
1
(x
n
−x
n−1
)
2
.
Cum am presupus c˘ a metoda este convergent˘ a, exist˘ a un n
0
natural cu proprietatea c˘ a
|f
′′
|

2m
1
(x
n
−x
n−1
) < 1, n > n
0
s¸i deci
[x
n
−α[ ≤ [x
n
−x
n−1
[, n > n
0
.

Interpretarea geometric˘ a a metodei lui Newton apare ˆın figura 8.3, iar o implementare ˆın
sursa MATLAB 8.2.
x
n−1 x
n
α
Figura 8.3: Metoda lui Newton
Alegerea valorii de pornire este, ˆın general, o problem˘ a dificil˘ a.
ˆ
In practic˘ a, se alege o
valoare, iar dac˘ a dup˘ a un num˘ ar maxim fixat de iterat ¸ii nu s-a obt ¸inut precizia dorit˘ a, tes-
tat˘ a prin unul din criteriile uzuale, se ˆıncearc˘ a cu alt˘ a valoare de pornire. De exemplu, dac˘ a
r˘ ad˘ acina este izolat˘ a ˆıntr-un interval [a, b] s¸i f
′′
(x) = 0, x ∈ (a, b), un criteriu de alegere este
f(x
0
)f
′′
(x
0
) > 0.
310 Rezolvarea numeric˘ a a ecuat ¸iilor neliniare
Sursa MATLAB 8.2 Metoda lui Newton pentru ecuat ¸ii neliniare ˆın R
function [z,ni]=Newtons(f,fd,x0,ea,er,Nmax)
%NEWTONS - metoda lui Newton pentru ecuatii in R
%Intrare
%f - functia
%fd - derivata
%x0 - valoarea de pornire
%ea,er - eroarea absoluta, respectiv relativa
%Nmax - numar maxim de iteratii
%Iesire
%z - aproximatia solutiei
%ni - numar de iteratii
if nargin<6, Nmax=50; end
if nargin<5, er=0; end
if nargin<4, ea=1e-3; end
xv=x0;
for k=1:Nmax
xc=xv-f(xv)/fd(xv);
if abs(xc-xv)<ea+er
*
xc %succes
z=xc; ni=k;
return
end
xv=xc; %pregatesc iteratia urmatoare
end
%esec
error(’s-a depasit numarul maxim de iteratii’)
8.7. Metoda aproximat¸iilor succesive
Adesea, ˆın aplicat ¸ii, ecuat ¸iile neliniare apar sub forma unei probleme de punct fix: s˘ a se
determine x astfel ˆıncˆ at
x = ϕ(x). (8.7.1)
Un num˘ ar α ce satisface aceast˘ a ecuat ¸ie se numes¸te punct fix al lui ϕ. Orice ecuat ¸ie
f(x) = 0 se poate scrie (ˆın multe moduri diferite) ˆın forma echivalent˘ a (8.7.1). De exemplu,
dac˘ a f

(x) = 0 ˆın intervalul de interes, putem lua
ϕ(x) = x −
f(x)
f

(x)
. (8.7.2)
Dac˘ a x
0
este o aproximat ¸ie init ¸ial˘ a a unui punct fix α a lui (8.7.1), atunci metoda
aproximat ¸iilor succesive genereaz˘ a un s¸ir de aproximat ¸ii
x
n+1
= ϕ(x
n
). (8.7.3)
Dac˘ a acest s¸ir converge s¸i ϕ este continu˘ a, atunci s¸irul converge c˘ atre un punct fix a lui ϕ.
De notat c˘ a (8.7.3) este chiar metoda lui Newton dac˘ a ϕ este dat˘ a de (8.7.2). Astfel, metoda
8.8. Metoda lui Newton pentru r˘ ad˘ acini multiple 311
lui Newton poate fi privit˘ a ca o iterat ¸ie de tip punct fix, dar nu s¸i metoda secantei. Pentru o
iterat ¸ie de forma (8.7.3), presupunˆ and c˘ a x
n
→ α cˆ and n →∞, ordinul de convergent ¸˘ a este
us¸or de determinat. S˘ a presupunem c˘ a ˆın punctul fix α avem
ϕ

(α) = ϕ
′′
(α) = = ϕ
(p−1)
(α) = 0, ϕ
p
(α) = 0. (8.7.4)
Presupunemc˘ a ϕ ∈ C
p
pe o vecin˘ atate a lui α. Avem atunci, conformteoremei lui Taylor
ϕ(x
n
) = ϕ(α) + (x
n
−α)ϕ

(α) + +
(x
n
−α)
p−1
(p −1)!
ϕ
(p−1)
(α)
+
(x
n
−α)
p
p!
ϕ
(p)

n
) = ϕ(α) +
(x
n
−α)
p
p!
ϕ
(p)

n
),
unde ξ
n
∈ (α, x
n
) (sau (x
n
, α)). Deoarece ϕ(x
n
) = x
n+1
s¸i ϕ(α) = α obt ¸inem
x
n+1
−α
(x
n
− α)
p
=
1
p!
ϕ
(p)

n
).
Cˆ and x
n
→α, deoarece ξ
n
este ˆıntre x
n
s¸i α, deducem pe baza continuit˘ at ¸ii c˘ a
lim
n→∞
x
n+1
−α
(x
n
−α)
p
=
1
p!
ϕ
(p)
(α) = 0. (8.7.5)
Aceasta ne arat˘ a c˘ a ordinul de convergent ¸˘ a este exact p s¸i eroarea asimptotic˘ a este
c =
1
p!
ϕ
(p)
(α). (8.7.6)
Combinˆ and aceasta cu condit ¸ia uzual˘ a de convergent ¸˘ a local˘ a se obt ¸ine:
Teorema 8.7.1. Fie α un punct fix al lui ϕ s¸i I
ε
= ¦x ∈ R : [x − α[ ≤ ε¦. Presupunem c˘ a
ϕ ∈ C
p
[I
ε
] s¸i satisface (8.7.4). Dac˘ a
M(ε) := max
t∈Iε


(t)[ < 1 (8.7.7)
atunci iterat ¸ia (8.7.3) converge c˘ atre α, ∀ x
0
∈ I
ε
. Ordinul de convergent ¸˘ a este p, iar eroarea
asimptotic˘ a este dat˘ a de (8.7.6).
8.8. Metoda lui Newton pentru r˘ ad˘ acini multiple
Dac˘ a α este o r˘ ad˘ acin˘ a multipl˘ a de ordinul m, atunci ordinul de convergent ¸˘ a a metodei
lui Newton este doar 1.
ˆ
Intr-adev˘ ar, fie
ϕ(x) = x −
f(x)
f

(x)
.
Deoarece
ϕ

(x) =
f(x)f
′′
(x)
[f

(x)]
2
,
312 Rezolvarea numeric˘ a a ecuat ¸iilor neliniare
procesul va fi convergent dac˘ a ϕ

(α) = 1 −1/m < 1.
O modalitate de a evita aceasta este s˘ a rezolv˘ am ecuat ¸ia
u(x) :=
f(x)
f

(x)
= 0
care are aceleas¸i r˘ ad˘ acini ca s¸i f, dar simple. Metoda lui Newton pentru problema modificat˘ a
are forma
x
k+1
= x
k

u(x
k
)
u

(x
k
)
=
f(x
k
)f

(x
k
)
[f

(x
k
)]
2
−f(x
k
)f
′′
(x
k
)
. (8.8.1)
Deoarece α este o r˘ ad˘ acin˘ a simpl˘ a a lui u, convergent ¸a lui (8.8.1) este p˘ atratic˘ a. Singurul
dezavantaj teoretic al lui (8.8.1) este derivata a doua necesar˘ a suplimentar s¸i complexitatea
mai mare a calculului lui x
k+1
din x
k
.
ˆ
In practic˘ a aceasta este o sl˘ abiciune, deoarece numi-
torul lui (8.8.1) poate lua valori foarte mici ˆın vecin˘ atatea lui α cˆ and x
k
→α.
Convergent ¸a p˘ atratic˘ a a metodei lui Newton se poate realiza nu numai prin modificarea
problemei, ci s¸i prin modificarea metodei.
ˆ
In vecin˘ atatea unei solut ¸ii multiple de ordinul m,
α, avem
f(x) = (x −α)
m
ϕ(x) ≈ (x −α)
m
c, (8.8.2)
de unde rezult˘ a
f(x)
f

(x)

x −α
m
⇒α ≈ x −m
f(x)
f

(x)
.
Metoda modificat˘ a corespunz˘ atoare
x
k+1
:= x
k
−m
f(x
k
)
f

(x
k
)
, k = 0, 1, 2, . . . (8.8.3)
converge p˘ atratic c˘ atre r˘ ad˘ acina multipl˘ a de ordinul m cˆ and se ˆıntrebuint ¸eaz˘ a o valoare
corect˘ a a lui m ˆın (8.8.3). Eficient ¸a variantei (8.8.3) a metodei lui Newton depinde de uti-
lizarea unei valori de aproximare bune pentru m, dac˘ a aceast˘ a valoare nu este cunoscut˘ a din
alte surse.
ˆ
In ipoteza
[x
k
−α[ < [x
k−1
−α[ ∧ [x
k
−α[ < [x
k−2
−α[
putem ˆınlocui ˆın (8.8.2) α prin x
k
f(x
k−1
) ≈ (x
k−1
−x
k
)
m
c,
f(x
k−2
) ≈ (x
k−2
−x
k
)
m
c.
ˆ
In continuare se obt ¸ine m:
m ≈
log [f(x
k−1
)/f(x
k−2
)]
log [(x
k−1
−x
k
)/(x
k−2
−x
k
)]
.
Aceast˘ a valoare poate fi utilizat˘ a ˆın (8.8.3).
8.9. Ecuat ¸ii algebrice 313
8.9. Ecuat¸ii algebrice
Exist˘ a multe metode special concepute pentru a rezolva ecuat ¸ii algebrice. Aici vom de-
scrie numai metoda lui Newton aplicat˘ a ˆın acest context, concentrˆ andu-ne asupra unui mod
eficient de a evalua simultan valoarea polinomului s¸i a primei derivate.
Metoda lui Newton aplicat˘ a ecuat ¸iilor algebrice. Consider˘ am o ecuat ¸ie algebric˘ a de
grad d
f(x) = 0, f(x) = x
d
+a
d−1
x
d−1
+ +a
0
, (8.9.1)
ˆın care coeficientul dominant se presupune (f˘ ar˘ a a restrˆ ange generalitatea) a fi egal cu 1 s¸i
unde putem presupune, f˘ ar˘ a a restrˆ ange generalitatea c˘ a a
0
= 0. Pentru simplitate, vom
presupune c˘ a tot ¸i coeficient ¸ii sunt reali. Pentru a aplica metoda lui Newton ecuat ¸iei (8.9.1)
este nevoie de a metod˘ a bun˘ a de evaluare a polinomului s¸i derivatei.
Schema lui Horner este bun˘ a pentru as¸a ceva:
bd := 1; cd := 1;
for k = d −1 downto 1 do
b
k
:= tb
k+1
+a
k
;
c
k
:= tc
k+1
+b
k
;
end for
b
0
:= tb
1
+a
0
;
Atunci f(t) = b
0
, f

(t) = c
1
.
Deci proced˘ am astfel:
Se aplic˘ a metoda lui Newton, calculˆ and simultan f(x
n
) s¸i f

(x
n
)
x
n+1
= x
n

f(x
n
)
f

(x
n
)
.
Se aplic˘ a apoi metoda lui Newton polinomului
f(x)
x −α
. Pentru r˘ ad˘ acini complexe se
ˆıncepe cu x
0
complex s¸i toate calculele se fac ˆın aritmetic˘ a complex˘ a. Este posibil s˘ a se
ˆımpart˘ a cu factori p˘ atratici s¸i s˘ a se foloseasc˘ a aritmetica real˘ a – se ajunge astfel la metoda
lui Bairstow. Folosind metoda aceasta de sc˘ adere a gradului erorile pot fi mari. O modalitate
de ˆımbun˘ at˘ at ¸ire este de a utiliza r˘ ad˘ acinile astfel calculate ca aproximat ¸ii init ¸iale s¸i a aplica
metoda lui Newton polinomului original.
8.10. Metoda lui Newton ˆın R
n
Metoda lui Newton este us¸or de generalizat la sisteme neliniare
F(x) = 0, (8.10.1)
unde F : Ω ⊂ R
n
→R
n
, iar x, F(x) ∈ R
n
. Sistemul (8.10.1) se scrie pe componente

F
1
(x
1
, . . . , x
n
) = 0
.
.
.
F
n
(x
1
, . . . , x
n
) = 0
314 Rezolvarea numeric˘ a a ecuat ¸iilor neliniare
Fie F

(x
(k)
) jacobianul lui F ˆın x
(k)
:
J := F

(x
(k)
) =

∂F1
∂x1
(x
(k)
) . . .
∂F1
∂xn
(x
(k)
)
.
.
.
.
.
.
.
.
.
∂Fn
∂x1
(x
(k)
) . . .
∂Fn
∂xn
(x
(k)
)
¸
¸
¸. (8.10.2)
Cantitatea 1/f

(x) se ˆınlocuies¸te ˆın acest caz cu inversa jacobianului ˆın x
(k)
:
x
(k+1)
= x
(k)
−[F

(x
(k)
)]
−1
F(x
(k)
). (8.10.3)
Scriem iterat ¸ia sub forma
x
(k+1)
= x
(k)
+w
(k)
. (8.10.4)
Se observ˘ a c˘ a w
k
este solut ¸ia sistemului de n ecuat ¸ii liniare cu n necunoscute
F

(x
(k)
)w
(k)
= −F(x
(k)
). (8.10.5)
Este mai eficient s¸i mai convenabil ca, ˆın loc s˘ a invers˘ amjacobianul la fiecare pas, s˘ a rezolv˘ am
sistemul (8.10.5) s¸i s˘ a folosim iterat ¸ia ˆın forma (8.10.4).
Teorema 8.10.1. Fie α o solut ¸ie a ecuat ¸iei F(x) = 0 s¸i presupunem c˘ a ˆın bila ˆınchis˘ a
B(δ) ≡ ¦x : |x − α| ≤ δ¦ matricea Jacobi a lui F : R
n
→ R
n
exist˘ a, este nesingu-
lar˘ a s¸i satisface condit ¸ia Lipschitz
|F

(x) −F

(y)|

≤ c|x −y|

, ∀ x, y ∈ B(δ), c > 0.
Punem γ = c max
¸
|[F

(x)]
−1
|

: |α −x|

≤ δ
¸
s¸i 0 < ε < min¦δ, γ
−1
¦. Atunci pen-
tru orice aproximat ¸ie init ¸ial˘ a x
(0)
∈ B(ε) := ¦x : |x −α|

≤ ε¦ metoda lui Newton este
convergent˘ a, iar vectorii e
(k)
:= α −x
(k)
satisfac urm˘ atoarele inegalit˘ at ¸i:
(a) |e
(k+1)
|

≤ γ|e
(k)
|
2

(b) |e
(k)
|

≤ γ
−1
(γ|e
(0)
|

)
2
k
.
Demonstrat ¸ie. Dac˘ a F

este continu˘ a pe segmentul ce unes¸te punctele x, y ∈ R
n
, conform
teoremei lui Lagrange
F(x) −F(y) = J
k
(x −y),
unde
J
k
=

∂F1
∂x1

1
) . . .
∂F1
∂xn

1
)
.
.
.
.
.
.
.
.
.
∂Fn
∂x1

n
) . . .
∂Fn
∂xn

n
)
¸
¸
¸ ⇒
e
(k+1)
= e
(k)
−[F

(x
(k)
)]
−1
(F(α) −F(x
(k)
)) = e
(k)
−[F

(x
(k)
)]
−1
J
k
e
(k)
= [F

(x
(k)
)]
−1
(F

(x
(k)
) −J
k
)e
(k)
8.10. Metoda lui Newton ˆın R
n
315
s¸i de aici rezult˘ a imediat (a). Din condit ¸ia Lipschitz
|F

(x
(k)
) −J
k
|

≤ c max
j=1,n
|x
(k)
−ξ
(j)
| ≤ c|x
(k)
−α|.
Deci, dac˘ a |α−x
(k)
|

≤ ε, atunci |α−x
(k+1)
|

≤ (γε)ε ≤ ε. Deoarece (a) este adev˘ arat˘ a
pentru orice k, se obt ¸ine (b) imediat.
Funct ¸ia MATLAB 8.3 d˘ a o implementare a metodei lui Newton care funct ¸ioneaz˘ a s¸i pen-
tru ecuat ¸ii scalare s¸i pentru sisteme.
Sursa MATLAB 8.3 Metoda lui Newton ˆın R s¸i R
n
function [z,ni]=Newton(f,fd,x0,ea,er,nmax)
%NEWTON - metoda lui Newton pentru ecuatii neliniare
% in R si Rˆn
%apel [z,ni]=Newton(f,fd,x0,ea,er,nmax)
%Intrare
%f - functia
%fd - derivata
%x0 - aproximatia initiala
%ea - eroarea absoluta (implicit 1e-3)
%er - eroarea relativa (implicit 0)
%nmax - numarul maxim de iteratii (implicit 50)
%Iesire
%z - aproximatia radacinii
%ni - numarul de iteratii
if nargin < 6, nmax=50; end
if nargin < 5, er=0; end
if nargin < 4, ea=1e-3; end
xp=x0(:); %x precedent
for k=1:nmax
xc=xp-feval(fd,xp)\ feval(f,xp);
if norm(xc-xp,inf)<ea+er
*
norm(xc,inf)
z=xc; %succes
ni=k;
return
end
xp=xc;
end
error(’S-a depasit numarul maxim de iteratii’);
316 Rezolvarea numeric˘ a a ecuat ¸iilor neliniare
Exemplul 8.10.2. S˘ a consider˘ am sistemul neliniar:
3x
1
−cos(x
1
x
2
) −
1
2
= 0,
x
2
1
−81(x
2
+ 0.1)
2
+ sin x
3
+ 1.06 = 0,
e
−x1x2
+ 20x
3
+
10π −3
3
= 0
Funct ¸ia s¸i jacobianul ˆın MATLAB se dau ˆın continuare :
function y=fs3(x)
y=[3
*
x(1)-cos(x(2)
*
x(3))-1/2;...
x(1)ˆ2-81
*
(x(2)+0.1)ˆ2+sin(x(3))+1.06;...
exp(-x(1)
*
x(2))+20
*
x(3)+(10
*
pi-3)/3];
function y=fs3d(x)
y=[3,x(3)
*
sin(x(2)
*
x(3)), x(2)
*
sin(x(2)
*
x(3));...
2
*
x(1), -162
*
(x(2)+0.1), cos(x(3));...
-x(2)
*
exp(-x(1)
*
x(2)), -x(1)
*
exp(-x(1)
*
x(2)), 20];
Iat˘ a s¸i un exemplu de apel:
>> [z,ni]=Newton(@fs3,@fs3d,x0,1e-9);
Aplicˆ and metoda lui Newton acestui sistem cu valoarea de pornire x
(0)
= [0.1, 0.1, −0.1]
T
se obt ¸in rezultatele din tabela 8.1. Precizia 10
−9
se atinge dup˘ a 5 iterat ¸ii. ♦
k x
(k)
1
x
(k)
2
x
(k)
3
|x
(k)
−x
(k−1)
|

0 0.1000000000 0.1000000000 -0.1000000000 —
1 0.4998696729 0.0194668485 -0.5215204719 0.42152
2 0.5000142402 0.0015885914 -0.5235569643 0.0178783
3 0.5000001135 0.0000124448 -0.5235984501 0.00157615
4 0.5000000000 0.0000000008 -0.5235987756 1.2444e-005
5 0.5000000000 0.0000000000 -0.5235987756 7.75786e-010
6 0.5000000000 -0.0000000000 -0.5235987756 1.11022e-016
Tabela 8.1: Rezultatele din exemplul 8.10.2
8.11. Metode quasi-Newton
O sl˘ abiciune semnificativ˘ a a metodei lui Newton pentru rezolvarea sistemelor de ecuat ¸ii
neliniare este necesitatea ca la fiecare pas s˘ a calcul˘ am matricea jacobian˘ a s¸i s˘ a rezolv˘ am un
sistem n n cu aceast˘ a matrice. Pentru a ilustra dimensiunile unei astfel de slabiciuni, s˘ a
evalu˘ am volumul de calcule asociat cu o iterat ¸ie a metodei lui Newton. Matricea jacobian˘ a
asociat˘ a unui sistem de n ecuat ¸ii neliniare scris ˆın forma F(x) = 0 necesit˘ a evaluarea celor n
2
derivate part ¸iale ale celor n funct ¸ii componente ale lui F.
ˆ
In cele mai multe situat ¸ii, evaluarea
exact˘ a a derivatelor part ¸iale este neconvenabil˘ a s¸i de multe ori imposibil˘ a. Efortul total pentru
8.11. Metode quasi-Newton 317
o iterat ¸ie a metodei lui Newton va fi de cel put ¸in n
2
+n evalu˘ ari de funct ¸ii scalare (n
2
pentru
evaluarea jacobianului s¸i n pentru evaluarea lui F) s¸i O(n
3
) operat ¸ii aritmetice pentru a
rezolva sistemul liniar. Acest volum de calcule este prohibitiv, exceptˆ and valori mici ale lui
n s¸i funct ¸ii scalare us¸or de evaluat. Este firesc ca atent ¸ia s˘ a fie ˆındreptat˘ a spre reducerea
num˘ arului de evalu˘ ari s¸i evitarea rezolv˘ arii unui sistem liniar la fiecare pas.
La metoda secantei aproximat ¸ia urm˘ atoare x
(k+1)
se obt ¸ine ca solut ¸ie a ecuat ¸iei liniare
¯
l
k
= f(x
(k)
) + (x −x
(k)
)
f(x
(k)
+h
k
) −f(x
(k)
)
h
k
= 0.
Aici funct ¸ia
¯
l
k
poate fi interpretat˘ a ˆın dou˘ a moduri:
1. ca aproximare a ecuat ¸iei tangentei
l
k
(x) = f(x
(k)
) + (x −x
(k)
)f

(x
(k)
);
2. ca interpolare liniar˘ a ˆıntre punctele x
(k)
s¸i x
(k+1)
.
Se pot obt ¸ine diverse generaliz˘ ari ale metodei secantei la sisteme de ecuat ¸ii neliniare ˆın
funct ¸ie de modul ˆın care se interpreteaz˘ a
¯
l
k
. Prima interpretare conduce la metode de tip
Newton discretizate, iar a doua la metode bazate pe interpolare.
Metodele de tip Newton discretizate se obt ¸in dac˘ a ˆın metoda lui Newton (8.10.3) F

(x)
se ˆınlocuies¸te cu cu o aproximare discret˘ a A(x, h). Derivatele part ¸iale din matricea jacobian˘ a
(8.10.2) se vor ˆınlocui prin diferent ¸ele divizate
A(x, h)e
i
:= [F(x +h
i
e
i
) −F(x)]/h
i
, i = 1, n, (8.11.1)
unde e
i
∈ R
n
este al i-lea vector al bazei canonice s¸i h
i
= h
i
(x) este m˘ arimea pasului de
discretizare. O alegere posibil˘ a a pasului este de exemplu
h
i
:=

ε[x
i
[, dac˘ a x
i
= 0;
ε, altfel,
cu ε :=

eps, unde eps este epsilon-ul mas¸inii.
8.11.1. Interpolare liniar˘ a
La interpolare fiecare dintre planele tangente se ˆınlocuies¸te cu un (hiper)plan care inter-
poleaz˘ a funct ¸iile componente F
i
ale lui F ˆın n+1 puncte date x
k,j
, j = 0, n, ˆıntr-o vecin˘ atate
a lui x
(k)
, adic˘ a se determin˘ a vectorii a
(i)
s¸i scalarii α
i
, astfel ˆıncˆ at pentru
L
i
(x) = α
i
+a
(i)T
x, i = 1, n (8.11.2)
are loc
L
i
(x
k,j
) = F
i
(x
k,j
), i = 1, n, j = 0, n.
Urm˘ atoarea aproximat ¸ie x
(k+1)
se obt ¸ine ca punct de intersect ¸ie ˆıntre cele n hiperplane
(8.11.2) din R
n+1
cu hiperplanul y = 0. Aproximanta x
(k+1)
rezult˘ a ca solut ¸ie a sistemului
de ecuat ¸ii liniare
L
i
(x) = 0, i = 1, n. (8.11.3)
318 Rezolvarea numeric˘ a a ecuat ¸iilor neliniare
ˆ
In funct ¸ie de alegerea punctelor de interpolare se obt ¸in diferite metode, dintre care cele mai
cunoscute sunt metoda lui Brown s¸i metoda lui Brent. Metoda lui Brown combin˘ a aprox-
imarea lui F

s¸i rezolvarea sistemului prin eliminare gaussian˘ a.
ˆ
In metoda lui Brent se
ˆıntrebuint ¸eaz˘ a la rezolvarea sistemului metoda QR. Ambele metode apart ¸in unei clase de
metode, care, la fel ca metoda lui Newton, converg p˘ atratic, dar au nevoie doar de (n
2
+3n)/2
evalu˘ ari de funct ¸ii pe iterat ¸ie.
ˆ
Intr-un studiu comparativ, Mor´ e s¸i Cosnard [45] au ajuns la concluzia c˘ a metoda lui Brent
este adeseori de preferat metodei lui Brown s¸i c˘ a pentru sisteme de ecuat ¸ii neliniare, la care
evaluarea lui F necesit˘ a un efort mai mic, metoda lui Newton discretizat˘ a este cea mai efi-
cient˘ a metod˘ a de rezolvare.
8.11.2. Metode de modificare
Din punct de vedere al efortului de calcul, sunt deosebit de convenabile metodele ˆın care
la fiecare pas se ˆıntrebuint ¸eaz˘ a o aproximare A
k
a lui F

(x
(k)
), care se obt ¸ine din A
k−1
printr-o modificare de rang 1, adic˘ a prin ad˘ augarea unei matrice de rang 1:
A
k+1
:= A
k
+ u
(k)

v
(k)

T
, u
(k)
, v
(k)
∈ R
n
, k = 0, 1, 2, . . .
Pe baza formulei Sherman-Morrison (vezi [15])

A+uv
T

−1
= A
−1

1
1 +v
T
A
−1
u
A
−1
uv
T
A
−1
,
pentru B
k+1
:= A
−1
k+1
are loc relat ¸ia de recurent ¸˘ a
B
k+1
= B
k

B
k
u
(k)

v
(k)

T
B
k
1 +

v
(k)

T
B
k
u
(k)
, k = 0, 1, 2, . . . ,
atˆ at timp cˆ at 1 +

v
(k)

T
B
k
u
(k)
= 0. Astfel, nu mai este necesar˘ a rezolvarea unui sistem
liniar la fiecare pas; ea se ˆınlocuies¸te cu ˆınmult ¸iri matrice-vector, ceea ce corespunde unei
reduceri a efortului de calcul de la O(n
3
) la O(n
2
). Acest avantaj va fi pl˘ atit prin aceea c˘ a nu
vom mai avea o convergent˘ a p˘ atratic˘ a ca la metoda lui Newton, ci doar una superliniar˘ a:
lim
k→∞
|x
(k+1)
− α|
|x
(k)
−α|
= 0. (8.11.4)
ˆ
In metoda lui Broyden alegerea vectorilor u
(k)
s¸i v
(k)
are loc dup˘ a principiul aproximat ¸iei
secantei.
ˆ
In cazul scalar aproximarea a
k
≈ f

(x
(k)
) se face unic prin
a
k+1
(x
(k+1)
−x
(k)
) = f(x
(k+1)
−f(x
(k)
).
Pentru n > 1, din contr˘ a, aproximarea
A
k+1
(x
(k+1)
−x
(k)
) = F(x
(k+1)
) −F(x
(k)
) (8.11.5)
8.11. Metode quasi-Newton 319
(as¸a numita ecuat ¸ie quasi-Newton) nu mai este unic determinat˘ a; orice alt˘ a matrice de forma
¯
A
k+1
:= A
k+1
+pq
T
cu p, q ∈ R
n
s¸i q
T
(x
(k+1)
−x
(k)
) = 0 verific˘ a de asemenea ecuat ¸ia (8.11.5). Pe de alt˘ a parte,
y
k
:= F(x
(k)
) −F(x
(k−1)
) s¸i s
k
:= x
(k)
−x
(k−1)
cont ¸in numai informat ¸ii despre derivata part ¸ial˘ a a lui F ˆın direct ¸ia s
k
, dar nici o informat ¸ie ˆın
direct ¸ii ortogonale pe s
k
. Pe aceast˘ a direct ¸ie trebuie ca efectul lui A
k+1
s¸i A
k
s˘ a coincid˘ a
A
k+1
q = A
k
q, ∀q ∈ ¦v : v = 0, v
T
s
k
= 0¦. (8.11.6)
Pornind de la prima aproximare A
0
≈ F

(x
(0)
), se genereaz˘ a s¸irul A
1
, A
2
, . . . utilizˆ and
formulele (8.11.5) s¸i (8.11.6) (Broyden [8], Dennis s¸i Mor´ e [15]).
Pentru s¸irul B
0
= A
−1
0
≈ [F(x
(0)
)]
−1
, B
1
, B
2
, . . . cu ajutorul formulei Sherman-
Morisson se obt ¸ine relat ¸ia de recurent ¸˘ a
B
k+1
:= B
k
+
(s
k+1
−B
k
y
k+1
)s
T
k+1
B
k
s
T
k+1
B
k
y
k+1
, k = 0, 1, 2, . . .
care necesit˘ a doar ˆınmult ¸iri matrice vector s¸i a c˘ arei complexitate este doar O(n
2
). Cu aju-
torul matricelor B
k
se poate defini metoda lui Broyden prin
x
(k+1)
:= x
(k)
−B
k
F(x
(k)
), k = 0, 1, 2, . . .
Aceast˘ a metod˘ a converge superliniar ˆın sensul lui (8.11.4), dac˘ a pas¸ii s
k
se apropie asimp-
totic (cˆ and k → ∞) de vectorii de actualizare (corect ¸ie) ai metodei lui Newton. Se poate
recunoas¸te ˆın aceasta semnificat ¸ia central˘ a a principiului lineariz˘ arii locale la rezolvarea
ecuat ¸iilor neliniare.
Funct ¸ia MATLAB 8.4 d˘ a o implementare a metodei lui Broyden.
Exemplul 8.11.1. Sistemul neliniar:
3x
1
−cos(x
1
x
2
) −
1
2
= 0,
x
2
1
−81(x
2
+ 0.1)
2
+ sin x
3
+ 1.06 = 0,
e
−x1x2
+ 20x
3
+
10π −3
3
= 0
a fost rezolvat ˆın exemplul 8.10.2 prin metoda lui Newton. Aplicˆ and acestui sistem metoda lui
Broyden cu aceeas¸i funct ¸ie s¸i acelas¸i jacobian ca ˆın exemplul 8.10.2 s¸i cu valoarea de pornire
x
(0)
= [0.1, 0.1, −0.1]
T
se obt ¸in rezultatele din tabela 8.2. Iat˘ a s¸i un exemplu de apel:
>> [z,ni]=Broyden1(@fs3,@fs3d,x0,1e-9);
Precizia 10
−9
se atinge dup˘ a 8 iterat ¸ii. ♦
320 Rezolvarea numeric˘ a a ecuat ¸iilor neliniare
Sursa MATLAB 8.4 Metoda lui Broyden pentru sisteme neliniare
function [z,ni]=Broyden1(f,fd,x0,ea,er,nmax)
%BROYDEN1 - metoda lui Broyden pentru sisteme neliniare
%apel [z,ni]=Broyden1(f,x0,ea,er,nmax)
%Intrare
%f - functia
%fd - derivata
%x0 - aproximatia initiala
%ea - eroarea absoluta
%er - eroarea relativa
%nmax - numarul maxim de iteratii
%Iesire
%z - aproximatia radacinii
%ni - numarul de iteratii
if nargin < 6, nmax=50; end
if nargin < 5, er=0; end
if nargin < 4, ea=1e-3; end
x=zeros(length(x0),nmax+1);
F=x;
x(:,1)=x0(:);
F(:,1)=f(x(:,1));
B=inv(fd(x));
x(:,2)=x(:,1)+B
*
F(:,1);
for k=2:nmax
F(:,k)=f(x(:,k));
y=F(:,k)-F(:,k-1); s=x(:,k)-x(:,k-1);
B=B+((s-B
*
y)
*
s’
*
B)/(s’
*
B
*
y);
x(:,k+1)=x(:,k)-B
*
F(:,k);
if norm(x(:,k+1)-x(:,k),inf)<ea+er
*
norm(x(:,k+1),inf)
z=x(:,k+1); %succes
ni=k;
return
end
end
error(’S-a depasit numarul maxim de iteratii’);
8.12. Ecuat ¸ii neliniare ˆın MATLAB 321
k x
(k)
1
x
(k)
2
x
(k)
3
|x
(k)
−x
(k−1)
|

0 0.1000000000 0.1000000000 -0.1000000000 —
1 -0.2998696729 0.1805331515 0.3215204719 0.42152
2 0.5005221618 0.0308676159 -0.5197695490 0.84129
3 0.4999648231 0.0130913099 -0.5229213211 0.0177763
4 0.5000140840 0.0018065260 -0.5235454326 0.0112848
5 0.5000009766 0.0001164840 -0.5235956998 0.00169004
6 0.5000000094 0.0000011019 -0.5235987460 0.000115382
7 0.5000000000 0.0000000006 -0.5235987756 1.10133e-006
8 0.5000000000 0.0000000000 -0.5235987756 5.69232e-010
9 0.5000000000 -0.0000000000 -0.5235987756 4.29834e-013
Tabela 8.2: Rezultatele din exemplul 8.11.1
8.12. Ecuat¸ii neliniare ˆın MATLAB
MATLAB are put ¸ine rutine pentru determinarea r˘ ad˘ acinilor unei funct ¸ii de o variabil˘ a.
Dac˘ a funct ¸ia este polinomial˘ a, am v˘ azut c˘ a roots(p) returneaz˘ a r˘ ad˘ acinile lui p, unde p
este vectorul coeficient ¸ilor ordonat ¸i descresc˘ ator dup˘ a puterile variabilei.
Funct ¸ia fzero determin˘ a o r˘ ad˘ acin˘ a a unei funct ¸ii de o variabil˘ a. Algoritmul folosit de
fzero este o combinat ¸ie de metode: ˆınjum˘ at˘ at ¸ire, secant˘ a s¸i interpolare invers˘ a p˘ atratic˘ a
[44]. Cea mai simpl˘ a variant˘ a de apel a ei este x = fzero(f,x0), cu x0 scalar, care
ˆıncearc˘ a s˘ a g˘ aseasc˘ a un zero al lui f ˆın vecin˘ atatea lui x0. De exemplu,
>> fzero(’cos(x)-x’,0)
ans =
0.7391
Precizia s¸i modul de afis¸are a rezultatelor sunt controlate de un al treilea argument de intrare,
structura options, care se poate seta cu ajutorul funct ¸iei optimset. Funct ¸ia fzero uti-
lizeaz˘ a dou˘ a cˆ ampuri ale lui options: TolX care d˘ a precizia (tolerant ¸a) s¸i Display care
specific˘ a nivelul de raportare, cu valorile off pentru nici o ies¸ire, iter pentru ies¸ire la
fiecare iterat ¸ie, final pentru a afis¸a doar rezultatul final s¸i notify pentru a afis¸a rezultatul
numai dac˘ a funct ¸ia nu converge (implicit). Pentru exemplul precedent, utilizˆ and Display
cu final obt ¸inem:
>> fzero(’cos(x)-x’,0,optimset(’Display’,’final’))
Zero found in the interval [-0.905097, 0.905097]
ans =
0.7391
Argumentul de intrare x0 poate fi s¸i un interval la ale c˘ arui capete funct ¸ia s˘ a aib˘ a valori de
semne contrare. Un astfel de argument este util dac˘ a funct ¸ia are singularit˘ at ¸i. Vom seta ˆın
continuare Display pe final cu comanda
os=optimset(’Display’,’final’);
Consider˘ am exemplul (mesajul nu apare):
>> [x,fval]=fzero(’tan(x)-x’,1,os)
322 Rezolvarea numeric˘ a a ecuat ¸iilor neliniare
...
x =
1.5708
fval =
-1.2093e+015
Cel de-al doilea argument de ies¸ire este valoarea funct ¸iei ˆın zeroul calculat. Deoarece funct ¸ia
f(x) = tan x −x are o singularitate ˆın π/2 (vezi figura 8.4) vom da ca argument de pornire
un interval ce cont ¸ine un zero, dar f˘ ar˘ a singularit˘ at ¸i:
>> [x,fval]=fzero(’tan(x)-x’,[-1,1],os)
Zero found in the interval: [-1, 1].
x =
0
fval =
0
−3 −2 −1 0 1 2 3
−10
−8
−6
−4
−2
0
2
4
6
8
10
x
tan(x)−x
Figura 8.4: Singularitate a funct ¸iei f(x) = tan x − x, evident ¸iat˘ a cu
ezplot(’tan(x)-x’,[-pi,pi]),grid
Se pot transmite parametrii suplimentari p1,p2,... funct ¸iei f cu apeluri de forma
x = fzero(f,x0,options,p1,p2,...)
Dac˘ a se dores¸te ca options s˘ a aib˘ a valori implicite se poate folosi pe pozit ¸ia respectiv˘ a
matricea vid˘ a [].
MATLABnu are nici o funct ¸ie pentru rezolvarea sistemelor de ecuat ¸ii neliniare. Totus¸i, se
poate ˆıncerca rezolvarea unor astfel de sisteme prin minimizarea sumei p˘ atratelor reziduurilor.
Toolbox-ul Optimization cont ¸ine un rezolvitor de ecuat ¸ii neliniare.
Funct ¸ia fminsearch caut˘ a un minim local al unei funct ¸ii reale de n variabile reale.
O form˘ a posibil˘ a de apel este x=fminsearch(f,x0,options). Structura options
8.12. Ecuat ¸ii neliniare ˆın MATLAB 323
este organizat˘ a la fel ca ˆın cazul lui fzero, dar sunt folosite mai multe cˆ ampuri. Am-
intim MaxFunEvals (num˘ arul maxim de evalu˘ ari de funct ¸ii permise), MaxIter (num˘ arul
maxim de iterat ¸ii permise), TolFun (precizia de terminare pentru valoarea funct ¸iei). Val-
oarea implicit˘ a pentru TolX s¸i TolFun este 1e-4.
Exemplul 8.12.1. Sistemul neliniar din exemplele 8.10.2 s¸i 8.11.1, adic˘ a
f
1
(x
1
, x
2
, x
3
) := 3x
1
−cos(x
1
x
2
) −
1
2
= 0,
f
2
(x
1
, x
2
, x
3
) := x
2
1
−81(x
2
+ 0.1)
2
+ sin x
3
+ 1.06 = 0,
f
3
(x
1
, x
2
, x
3
) := e
−x1x2
+ 20x
3
+
10π −3
3
= 0
ar putea fi rezolvat ˆıncercˆ and minimizarea sumei p˘ atratelor membrilor stˆ angi:
F(x
1
, x
2
, x
3
) = [f
1
(x
1
, x
2
, x
3
)]
2
+ [f
1
(x
1
, x
2
, x
3
)]
2
+ [f
1
(x
1
, x
2
, x
3
)]
2
.
Funct ¸ia de minimizat este dat˘ a ˆın fis¸ierul fminob.m:
function y = fminob(x)
y=(3
*
x(1)-cos(x(2)
*
x(3))-1/2)ˆ2+(x(1)ˆ2-81
*
(x(2)+0.1)ˆ2+...
sin(x(3))+1.06)ˆ2+(exp(-x(1)
*
x(2))+20
*
x(3)+(10
*
pi-3)/3)ˆ2;
Vomalege vectorul de pornire x
(0)
= [0.5, 0.5, 0.5]
T
s¸i precizia 10
−9
s¸i pentru x. Comen-
zile MATLAB s¸i rezultatul lor se dau mai jos
>> os=optimset(’Display’,’final’,’TolX’,1e-9,’TolFun’,1e-9);
>> [xm,fval]=fminsearch(@fminob,[0.5,0.5,0.5]’,os)
Optimization terminated:
the current x satisfies the termination criteria using
OPTIONS.TolX of 1.000000e-009 and F(X) satisfies the
convergence criteria using OPTIONS.TolFun of 1.000000e-009
xm =
0.49999999959246
0.00000000001815
-0.52359877559440
fval =
1.987081116616629e-018
Comparativ cu rezolv˘ arile bazate pe metoda lui Newton sau metoda lui Broyden, se constat˘ a
c˘ a timpul de execut ¸ie este mai lung s¸i precizia nu este la fel de bun˘ a (s¸i datorit˘ a aspectului
mai complicat al funct ¸iei obiectiv). Aproximanta obt ¸inut˘ a astfel poate fi folosit˘ a ca vector de
pornire pentru metoda lui Newton. ♦
Funct ¸ia fminsearch se bazeaz˘ a pe varianta Nelder-Mead a algoritmului simplex. Al-
goritmul este lent, dar are avantajul c˘ a nu utilizeaz˘ a derivate s¸i este insensibil la discontinuit˘ at ¸i
ale funct ¸iei. Toolbox-ul Optimization cont ¸ine metode mai sofisticate de minimizare.
324 Rezolvarea numeric˘ a a ecuat ¸iilor neliniare
Probleme
Problema 8.1. G˘ asit ¸i primele 10 valori pozitive pentru care x = tgx.
Problema 8.2. Investigat ¸i comportarea metodei lui Newton s¸i a secantei pentru funct ¸ia
f(x) = sign(x −a)

[x −a[.
Problema 8.3 (Adaptat˘ a dup˘ a [44]). Consider˘ am polinomul
x
3
−2x −5.
Wallis a folosit acest exemplu pentru a prezenta metoda lui Newton ˆın fat ¸a academiei
franceze. El are o r˘ ad˘ acin˘ a reale ˆın intervalul (2, 3) s¸i o pereche de r˘ ad˘ acini complexe conju-
gate.
(a) Utilizat ¸i Maple sau toolbox-ul Symbolic pentru a calcula r˘ ad˘ acinile. Rezultatele sunt
urˆ ate. Convertit ¸i-le ˆın valori numerice.
(b) Determinat ¸i toate r˘ ad˘ acinile cu funct ¸ia roots.
(c) Determinat ¸i r˘ ad˘ acina real˘ a cu fzero.
(d) Determinat ¸i toate r˘ ad˘ acinile cu metoda lui Newton (pentru cele complexe folosit ¸i valori
de pornire complexe).
(e) Se poate utiliza metoda ˆınjum˘ at˘ at ¸irii sau a falsei pozit ¸ii la determinarea unei r˘ ad˘ acini
complexe? De ce sau de ce nu?
Problema 8.4. S˘ a se rezolve numeric sistemele
f
1
(x, y) = 1 −4x + 2x
2
−2y
3
= 0
f
2
(x, y) = −4 +x
4
+ 4y + 4y
4
= 0,
f
1
(x
1
, x
2
) = x
2
1
− x
2
+ 0.25 = 0
f
2
(x
1
, x
2
) = −x
1
+x
2
2
+ 0.25 = 0,
f
1
(x
1
, x
2
) = 2x
1
+x
2
−x
1
x
2
/2 −2 = 0
f
2
(x
1
, x
2
) = x
1
+ 2x
2
2
−cos(x
2
)/2 −
3
2
= 0.
Problema 8.5. S˘ a se rezolve numeric sistemul
9x
2
+ 36y
2
+ 4z
2
−36 = 0,
x
2
−2y
2
−20z = 0,
x
2
−y
2
+z
2
= 0
Indicat ¸ie. Sunt patru solut ¸ii. Valori bune de pornire [±1, ±1, 0]
T
.
8.12. Ecuat ¸ii neliniare ˆın MATLAB 325
Problema 8.6. S˘ a consider˘ am sistemul, inspirat dintr-un exemplu din industria chimic˘ a
f
i
:= βa
2
i
+a
i
−a
i−1
= 0.
Sistemul are n ecuat ¸ii s¸i n + 2 necunoscute. Vom lua a
0
= 5, a
n
= 0.5 mol/litru. S˘ a se
rezolve sistemul pentru n = 10 s¸i valoarea de pornire x=[1:-0.1:0.1]’.
326 Rezolvarea numeric˘ a a ecuat ¸iilor neliniare
CAPITOLUL 9
Valori s¸i vectori proprii
Cuprins
9.1. Valori proprii s¸i r˘ ad˘ acini ale polinoamelor . . . . . . . . . . . . . . . . . 328
9.2. Terminologie s¸i descompunere Schur . . . . . . . . . . . . . . . . . . . 329
9.3. Iterat ¸ia vectorial˘ a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332
9.4. Metoda QR – teoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335
9.5. Metoda QR – practica . . . . . . . . . . . . . . . . . . . . . . . . . . . 338
9.5.1. Metoda QR clasic˘ a . . . . . . . . . . . . . . . . . . . . . . . . 338
9.5.2. Deplasare spectral˘ a . . . . . . . . . . . . . . . . . . . . . . . . 344
9.5.3. Metoda QR cu pas dublu . . . . . . . . . . . . . . . . . . . . . 346
9.6. Valori s¸i vectori proprii ˆın MATLAB . . . . . . . . . . . . . . . . . . . 351
Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
ˆ
In acest capitol ne ocup˘ am de determinarea valorilor proprii ale unei matrice p˘ atratice
A ∈ R
n×n
s¸i vectorilor proprii corespunz˘ atori, adic˘ a a valorilor λ ∈ C s¸i vectorilor x ∈
C
n
` ¦0¦ pentru care
Ax = λx. (9.0.1)
Definit ¸ia 9.0.2. Num˘ arul λ ∈ C se numes¸te valoare proprie a matricei A ∈ R
n×n
, dac˘ a
exist˘ a un vector x ∈ C
n
` ¦0¦ numit vector propriu astfel ˆıncˆ at Ax = λx.
Observat ¸ia 9.0.3. 1. Cerint ¸a x = 0 este important˘ a, c˘ aci vectorul nul este un vector
propriu corespunz˘ ator oric˘ arei valori proprii.
2. Chiar dac˘ a A este real˘ a, ea poate avea valori proprii complexe.
ˆ
In acest caz ele apar
ˆıntotdeauna ˆın perechi conjugate.
3. Problemele de vectori s¸i valori proprii se numesc uneori prescurtat probleme proprii.♦
327
328 Valori s¸i vectori proprii
9.1. Valori proprii s¸i r˘ ad˘ acini ale polinoamelor
Orice problem˘ a de calcul al valorilor proprii se poate reduce la calculul zerourilor unui
polinom: valorile proprii ale unei matrice A ∈ R
n×n
sunt r˘ ad˘ acinile polinomului caracteris-
tic
p
A
λ = det(A −λI), λ ∈ C,
c˘ aci determinatul este nul exact atunci cˆ and sistemul (A − λI)x = 0 are o solut ¸ie nebanal˘ a,
adic˘ a atunci cˆ and λ este o valoare proprie.
O metod˘ a de rezolvare a problemelor proprii ar putea fi calculul polinomului caracteristic
s¸i apoi determinarea r˘ ad˘ acinilor. Natural, calculul unui determinant ˆın general fiind o prob-
lem˘ a complex˘ a s¸i instabil˘ a, transformarea matricei ar fi mai potrivit˘ a. Reciproc, problema
g˘ asirii r˘ ad˘ acinilor unui polinom poate fi formulat˘ a ca o problem˘ a de determinare a valo-
rilor proprii. Fie p ∈ P
n
un polinom cu coeficient ¸i reali, pe care ˆıl putem scrie (cu ajutorul
r˘ ad˘ acinilor sale, z
1
, . . . , z
n
, eventual complexe) sub forma
p(x) = a
n
x
n
+ +a
0
= a
n
(x −z
1
) . . . (x −z
n
), a
n
∈ R, a
n
= 0.
Pe spat ¸iul vectorial P
n−1
,,ˆınmult ¸irea modulo p”
P
n−1
q →r xq(x) = αp(x) +r(x), r ∈ P
n
(9.1.1)
este o transformare liniar˘ a s¸i deoarece
x
n
=
1
a
n
p(x) −
n−1
¸
j=0
a
j
a
n
x
j
, x ∈ R,
vom reprezenta p relativ la baza 1, x, . . . , x
n−1
prin as¸a-numita matrice companion a lui
Frobenius (de dimensiune n n)
M =

0 −
a0
an
1 0 −
a1
an
.
.
.
.
.
.
.
.
.
1 0 −
an−2
an
1 −
an−1
an
¸
¸
¸
¸
¸
¸
¸
. (9.1.2)
Fie v
j
= (v
jk
: k = 1, n) ∈ C
n
, j = 1, n ales¸i astfel ca

j
(x) =
p(x)
x −z
j
= a
n
¸
k=j
(x −z
k
) =
n
¸
k=1
v
jk
x
k−1
, j = 1, n;
atunci
n
¸
k=1
(Mv
j
−z
j
v
j
)
k
x
k−1
= xℓ
j
(x) −z
j

j
(x) = (x −z
j
)ℓ
j
(x) = p(x) ≈ 0,
9.2. Terminologie s¸i descompunere Schur 329
s¸i cu aceasta Mv
j
= z
j
v
j
, j = 1, n.
Valorile proprii ale lui M sunt deci r˘ ad˘ acini ale lui p.
Matricea Frobenius dat˘ a de (9.1.2) este doar o modalitate dintre multe altele prin care
se poate reprezenta ,,ˆınmult ¸irea” din (9.1.1); orice alt˘ a baz˘ a a lui P
n−1
furnizeaz˘ a o matrice
M ale c˘ arei valori proprii s˘ a fie r˘ ad˘ acini ale lui p. Singurul mijloc auxiliar de manipulare a
polinoamelor de care avem nevoie este realizarea unei ,,ˆımp˘ art ¸iri cu rest”.
9.2. Terminologie s¸i descompunere Schur
As¸a cum ne arat˘ a exemplul
A =
¸
0 1
−1 0

, p
A
(λ) = λ
2
+ 1 = (λ +i)(λ −i),
o matrice real˘ a poate avea valori proprii complexe. De aceea (cel put ¸in ˆın teorie) este avanta-
jos s˘ a ne ocup˘ am de matrice complexe A ∈ C
n×n
.
Definit ¸ia 9.2.1. Dou˘ a matrice A, B ∈ C
n×n
se numesc similare dac˘ a exist˘ a o matrice T ∈
C
n×n
, astfel ˆıncˆ at
A = TBT
−1
.
Lema 9.2.2. Dac˘ a A, B ∈ C
n×n
sunt similare, ele au aceleas¸i valori proprii.
Demonstrat ¸ie. Fie λ ∈ C o valoare proprie a lui A = TBT
−1
s¸i x ∈ C
n
vectorul propriu
corespunz˘ ator. Atunci avem
B(T
−1
x) = T
−1
ATT
−1
x = T
−1
Ax = λT
−1
x
s¸i deci, λ este, de asemenea, valoare proprie a lui B.
Din algebra liniar˘ a se cunoas¸te urm˘ atorul rezultat important.
Teorema 9.2.3 (Forma normal ˘ a Jordan). Orice matrice A ∈ C
n×n
este similar˘ a cu o ma-
trice
J =

J
1
.
.
.
J
k
¸
¸
¸, J

=

λ

1
.
.
.
.
.
.
.
.
. 1
λ

¸
¸
¸
¸
¸
¸
∈ C
n

×n

,
k
¸
ℓ=1
n

= n,
numit˘ a forma normal˘ a Jordan a lui A.
Pentru demonstrat ¸ie vezi [29].
Definit ¸ia 9.2.4. O matrice se numes¸te diagonalizabil˘ a, dac˘ a toate blocurile sale Jordan J

au dimensiunea 1, adic˘ a n

= 1, ℓ = 1, n. O matrice se numes¸te nederogatorie dac˘ a pentru
fiecare valoare proprie λ

exist˘ a exact un bloc Jordan ˆın care ea apare pe diagonal˘ a.
330 Valori s¸i vectori proprii
Observat ¸ia 9.2.5. Dac˘ a o matrice A ∈ R
n×n
are n valori proprii simple, atunci ea este
diagonalizabil˘ a s¸i de asemenea nederogatorie s¸i potrivit˘ a pentru a fi tratat˘ a numeric. ♦
Teorema 9.2.6 (Descompunere Schur). Pentru orice matrice A ∈ C
n×n
exist˘ a o matrice
unitar˘ a U ∈ C
n×n
s¸i o matrice triunghiular˘ a superior
R =

λ
1
∗ . . . ∗
.
.
.
.
.
.
.
.
.
.
.
. ∗
λ
n
¸
¸
¸
¸
¸
¸
∈ C
n×n
,
astfel ˆıncˆ at A = URU

.
Observat ¸ia 9.2.7. 1. Elementele diagonale ale lui R sunt, natural, valorile proprii ale lui
A. Deoarece A s¸i R sunt similare, ele au aceleas¸i valori proprii.
2.
ˆ
Intre A s¸i R are loc o form˘ a mai puternic˘ a de similaritate: ele sunt unitar-similare. ♦
Demonstrat ¸ia teoremei 9.2.6. Demonstrat ¸ia se face prin induct ¸ie. Cazul n = 1 este trivial.
Presupunem teorema adev˘ arat˘ a pentru n ∈ N s¸i fie A ∈ C
(n+1)×(n+1)
. Fie λ ∈ C o valoare
proprie a lui A s¸i x ∈ C
n+1
, |x|
2
= 1, vectorul propriu corespunz˘ ator. Lu˘ am vectorul
u
1
= x s¸i alegem u
2
, . . . , u
n+1
astfel ˆıncˆ at u
1
, . . . , u
n+1
s˘ a formeze o baz˘ a ortonormal˘ a a
lui C
n+1
, sau echivalent, matricea U = [u
1
, . . . , u
n+1
] s˘ a fie unitar˘ a. As¸adar,
U

AUe
1
= U

Au
1
= U

Ax = λU

x = λe
1
,
adic˘ a
U

AU =
¸
λ ∗
0 B

, B ∈ C
n×n
.
Conform ipotezei induct ¸iei exist˘ a o matrice unitar˘ a V ∈ C
n×n
, astfel ˆıncˆ at B = V SV

,
unde S ∈ C
n×n
este o matrice triunghiular˘ a superior. De aceea
A = U
¸
λ
1

0 V SV

U

= U
¸
1 0
0 V

. .. .
=:U
¸
λ
1

0 S

. .. .
=:R
¸
1 0
0 V

U

. .. .
=U

s¸i demonstrat ¸ia este complet˘ a.
S˘ a d˘ am acum dou˘ a consecint ¸e nemijlocite ale descompunerii Schur.
Corolarul 9.2.8. Oric˘ arei matrice hermitiene A ∈ C
n×n
ˆıi corespunde o matrice ortogonal˘ a
U ∈ C
n×n
astfel ˆıncˆ at
A = U

λ
1
.
.
.
λ
n
¸
¸
¸U

, λ
j
∈ R, j = 1, n.
9.2. Terminologie s¸i descompunere Schur 331
Demonstrat ¸ie. Matricea R din teorema 9.2.6 verific˘ a R = U

AU. Deoarece
R

= (U

AU) = U

A

U = U

AU = R,
R trebuie s˘ a fie diagonal˘ a, cu elemente reale pe diagonal˘ a (fiind hermitian˘ a).
Altfel spus, corolarul 9.2.8 ne asigur˘ a c˘ a orice matrice hermitian˘ a este unitar similar˘ a cu o
matrice diagonal˘ a s¸i posed˘ a o baz˘ a format˘ a din vectori proprii ortonormali.
ˆ
In plus, toate
valorile proprii ale unei matrice hermitiene sunt reale. Este interesant, nu numai din punct de
vedere teoretic, ce matrice sunt unitar diagonalizabile.
Teorema 9.2.9. O matrice A ∈ C
n×n
este unitar diagonalizabil˘ a, adic˘ a exist˘ a o matrice
unitar˘ a U ∈ C
n×n
astfel ˆıncˆ at
A = U

λ
1
.
.
.
λ
n
¸
¸
¸U

, λ
j
∈ R, j = 1, . . . , n, (9.2.1)
dac˘ a s¸i numai dac˘ a A este normal˘ a, adic˘ a
AA

= A

A. (9.2.2)
Demonstrat ¸ie. Punem Λ = diag(λ
1
, . . . , λ
n
). Conformlui (9.2.1), Aare forma A = UΛU

,
deci
AA

= UΛU



U

= U[Λ[
2
U

s¸i A

A = U

Λ

U

UΛU

= U[Λ[
2
U

,
adic˘ a (9.2.2). Pentru reciproc˘ a, folosim descompunerea Schur a lui A sub forma R = U

AU.
Atunci

1
[
2
= (R

R)
11
= (RR

)
11
= [λ
1
[
2
+
n
¸
k=2
[r
1k
[
2
,
de unde rezult˘ a r
12
= = r
1n
= 0. Prin induct ¸ie, se vede c˘ a pentru j = 2, n
(R

R)
jj
= [λ
j
[
2
+
j−1
¸
k=1
[r
kj
[
2
= (RR

jj
= [λ
j
[
2
+
n
¸
k=j+1
[r
jk
[
2
,
din care cauz˘ a R trebuie s˘ a fie diagonal˘ a.
Pentru matrice reale descompunerea Schur real˘ a este un pic mai complicat˘ a.
Teorema 9.2.10. Pentru orice matrice A ∈ R
n×n
exist˘ a o matrice ortogonal˘ a U ∈ R
n×n
astfel ˆıncˆ at
A = U

R
1
∗ . . . ∗
.
.
.
.
.
.
.
.
.
.
.
. ∗
R
k
¸
¸
¸
¸
¸
¸
U

, (9.2.3)
ˆın care fie R
j
∈ R
1×1
, fie R
j
∈ R
2×2
, cu dou˘ a valori proprii complexe conjugate, j = 1, k.
332 Valori s¸i vectori proprii
Descompunerea Schur real˘ a transform˘ a Aˆıntr-o matrice Hessenberg superioar˘ a
U
T
AU =

∗ . . . . . . ∗

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
∗ ∗
¸
¸
¸
¸
¸
¸
.
Demonstrat ¸ie. Dac˘ a A are doar valori proprii reale, atunci se procedeaz˘ a ca la descom-
punerea Schur complex˘ a. Altfel, fie λ = α + iβ, β = 0, o valoare proprie complex˘ a a
lui A s¸i x +iy vectorul propriu corespunz˘ ator. Atunci
A(x +iy) = λ(x +iy) = (α +iβ)(x +iy) = (αx −βy) +i(βx +αy)
sau matricial
A [x y]
....
∈R
n×2
= [x y]
¸
α β
−β α

. .. .
:=R
.
Deoarece R = α
2
+ β
2
> 0, c˘ aci β = 0, span¦x, y¦ este un subspat ¸iu bidimensional
A-invariant al lui R
n
. Atunci alegem u
1
, u
2
astfel ˆıncˆ at s˘ a formeze o baz˘ a a acestui spat ¸iu,
completat˘ a cu u
3
, . . . , u
n
la o baz˘ a ortonormal˘ a a lui R
n
s¸i rat ¸ionˆ and analog cu cazul complex
obt ¸inem
U
T
AU =
¸
R ∗
0 B

s¸i induct ¸ia se deruleaz˘ a ca la descompunerea Schur complex˘ a.
9.3. Iterat¸ia vectorial˘ a
Iterat ¸ia vectorial˘ a (numit˘ a s¸i metoda puterii) este cea mai simpl˘ a metod˘ a atunci cˆ and
dorim o valoare proprie s¸i vectorul propriu corespunz˘ ator.
Pornind de la un vector y
(0)
∈ C
n
se construies¸te s¸irul y
(k)
, k ∈ N prin intermediul
iterat ¸iei
z
(k)
= Ay
(k−1)
,
y
(k)
=
z
(k)
z
(k)
j∗
[z
(k)
j∗
[
|z
(k)
|

, j

= min

1 ≤ j ≤ n :

z
(k)
j

1 −
1
k

|z
(k)
|

(9.3.1)
s¸i se afirm˘ a c˘ a, ˆın condit ¸ii determinate, acest s¸ir converge c˘ atre vectorul propriu dominant.
Propozit¸ia 9.3.1. Fie A ∈ C
n×n
o matrice diagonalizabil˘ a ale c˘ arei valori proprii λ
1
, . . . λ
n
verific˘ a condit ¸ia

1
[ > [λ
2
[ ≥ . . . [λ
n
[.
Atunci s¸irul y
(k)
, k ∈ N, converge c˘ atre un multiplu al vectorului normat x
1
corespunz˘ ator
valorii proprii λ
1
, pentru aproape orice y
(0)
.
9.3. Iterat ¸ia vectorial˘ a 333
Demonstrat ¸ie. Fie x
1
, . . . , x
n
vectorii proprii ortonormali ai lui A corespunz˘ atori valorilor
proprii λ
1
, . . . , λ
n
– existent ¸a lor rezult˘ a din diagonalizabilitatea lui A. Scriem
y
(0)
=
n
¸
j=1
α
j
x
j
, α
j
∈ C, j = 1, n,
s¸i afirm˘ am c˘ a
A
k
y
(0)
=
n
¸
j=1
α
j
A
k
x
j
=
n
¸
j=1
α
j
λ
k
x
j
= λ
k
1
n
¸
j=1
α
j

λ
j
λ
1

k
x
j
.
De aici rezult˘ a, deoarece [λ
1
[ > [λ
j
[, j = 2, n c˘ a
lim
k→∞
λ
−k
1
A
k
y
(0)
= α
1
x
1
+ lim
k→∞
n
¸
j=2
α
j

λ
j
λ
1

k
x
k
= α
1
x
1
,
precum s¸i
lim
k→∞

1
[
−k

A
k
y
(0)


=

n
¸
j=1
α
j

λ
j
λ
1

k
α
j
x
j

= [α
1
[ |x
1
|

.
Dac˘ a α
1
= 0 s¸i deci y
(0)
apart ¸ine hiperplanului
x
+
1
= ¦x ∈ C
n
, x

x
1
= 0¦,
atunci ambele limite sunt nule s¸i nu se poate spune nimic despre convergent ¸a s¸irului y
k
,
k ∈ N; acest hiperplan este o mult ¸ime de m˘ asur˘ a nul˘ a, as¸a c˘ a ˆın continuare vom presupune
c˘ a α
1
= 0.
Datorit˘ a lui (9.3.1), y
k
= γ
k
A
k
y
(0)
, γ
k
∈ C s¸i pe lˆ ang˘ a aceasta |y
k
|

= 1, as¸adar
lim
k→∞

1
[
k

k
[ = lim
k→∞
1

1
[
−1
|A
(k)
y
(0)
|
=
1

1
[|x
1
|

.
Astfel
y
(k)
= γ
k
A
k
y
(0)
=
γ
k
λ
k
1

k
λ
k
1
[
. .. .
=:e
−2πiθ
k
α
1
x
1

1
[|x
1
|

. .. .
=:αx1
+O


2
[
k

1
[
k

, k ∈ N, (9.3.2)
unde θ
k
∈ [0, 1]. Aici intervine normarea mai ciudat˘ a din (9.3.1): fie j indicele minim pentru
care [(αx
1
)
j
[ = |αx
1
|

|; atunci conform lui (9.3.2) pentru un k suficient de mare de
asemenea ˆın (9.3.1) j

= j. Deci are loc
lim
k→∞
y
(k)
j
= 1 ⇒ lim
k→∞
e
2πiθ
k
= lim
k→∞
y
(k)
j
(αx
1
)
j
=
1
(αx
1
)
j
.
ˆ
Inlocuid aceasta ˆın (9.3.2) obt ¸inem convergent ¸a s¸irului y
(k)
, k ∈ N.
334 Valori s¸i vectori proprii
Se poate aplica de asemenea iterat ¸ia vectorial˘ a pentru a g˘ asi toate valorile proprii s¸i tot ¸i
vectorii proprii, ˆın m˘ asura ˆın care valorile proprii ale lui A sunt diferite ˆın modul. Pentru
aceasta se determin˘ a cea mai mare ˆın modul valoare proprie λ
1
a lui A s¸i vectorul propriu
corespunz˘ ator x
1
s¸i se continu˘ a cu
A
(1)
= A −λ
1
x
1
x
T
1
.
Matricea diagonalizabil˘ a A
(1)
are aceeas¸i vectori proprii ortonormali ca s¸i A, doar c˘ a x
1
este vectorul propriu corespunz˘ ator valorii proprii 0 s¸i nu mai joac˘ a nici un rol ˆın iterat ¸ie,
atˆ at timp cˆ at nu se pornes¸te chiar cu un multiplu al lui x
1
. Aplicˆ and ˆınc˘ a o dat˘ a iterat ¸ia
vectorial˘ a lui A
(1)
se obt ¸ine a doua valoare proprie ca m˘ arime ˆın modul λ
2
s¸i vectorul propriu
corespunz˘ ator; iterat ¸ia
A
(j)
= A
(j−1)
−λ
j
x
j
x
T
j
, j = 1, n, A
(0)
= A
calculeaz˘ a succesiv toate valorile proprii s¸i tot ¸i vectorii proprii ai lui A, presupunˆ and c˘ a val-
orile proprii sunt diferite ˆın modul.
Observat ¸ia 9.3.2 (Dezavantajele iterat ¸iei vectoriale). 1. Metoda funct ¸ioneaz˘ a ˆın gen-
eral doar cˆ and exist˘ a un vector propriu dominant, adic˘ a cˆ and exist˘ a pentru o valoare
proprie dominant˘ a exact un vector propriu. Dac˘ a se consider˘ a, de exemplu, matricea
A =
¸
0 1
0 1

,
ea transform˘ a vectorul [x
1
x
2
]
T
ˆın vectorul [x
2
x
1
]
T
s¸i convergent ¸a are loc exact atunci
cˆ and iterat ¸ia pornes¸te cu unul din vectorii proprii.
2. Metoda d˘ a rezultate numai pentru vectori de pornire ,,potrivit ¸i”. Sun˘ a nemaipomenit
c˘ a tot ¸i vectorii de pornire cu except ¸ia celor dintr-un hiperplan sunt potrivit ¸i, dar nu este
chiar as¸a de simplu. Dac˘ a valoarea proprie cea mai mare ˆın modul a unei matrice reale
este complex˘ a, atunci se poate itera la nesfˆ ars¸it cu valori de pornire reale, c˘ aci oricum
nu se va g˘ asi vectorul propriu.
3. Ar trebui f˘ acute tot timpul calcule ˆın complex, ceea ce ar ridica serios complexitatea
(la adunare un num˘ ar dublu de calcule, la ˆınmult ¸ire de s¸ase ori mai multe).
4. Viteza de convergent ¸˘ a depinde de raportul

2
[

1
[
< 1,
care poate fi oricˆ at de aproape de 1. Dac˘ a dominant ¸a vectorului propriu dominant nu
este bine reliefat˘ a, atunci convergent ¸a poate fi extrem de lent˘ a. ♦
T¸ inˆ and cont de toate acestea, conchidem c˘ a iterat ¸ia vectorial˘ a nu este o metod˘ a prea bun˘ a
pentru problemele de valori proprii.
9.4. Metoda QR – teoria 335
9.4. Metoda QR – teoria
Metoda practic˘ a actual˘ a pentru tratarea problemelor de valori proprii este metoda QR,
descoperit˘ a de Francis [20] s¸i Kublanovskaya [37], o extensie unitar˘ a a metodei LR a lui
Rutishauser [52]. Vom ˆıncepe cu cazul complex.
Metoda este una iterativ˘ a extrem de simpl˘ a: se pornes¸te cu A
(0)
= A s¸i se calculeaz˘ a
iterativ cu ajutorul descompunerii QR,
A
(k)
= Q
k
R
k
, A
(k+1)
= R
k
Q
k
, k ∈ N
0
. (9.4.1)
ˆ
In anumite ipoteze, acest s¸ir va converge c˘ atre o matrice ale c˘ arei elemente diagonale sunt
valorile proprii ale lui A.
Lema 9.4.1. Matricele A
(k)
construite prin (9.4.1), k ∈ N, sunt unitar similare cu A s¸i au
aceleas¸i valori proprii ca A.
Demonstrat ¸ie. Are loc
A
(k+1)
= Q

k
Q
k
R
k
Q
k
= Q

k
A
(k)
Q
k
= = Q

k
. . . Q

0
. .. .
=:U

k
AQ
0
. . . Q
k
. .. .
=:U
k
.

Pentru a ar˘ ata convergent ¸a, vom interpreta iterat ¸ia QR ca o generalizare a iterat ¸iei vectori-
ale (9.3.1) (f˘ ara normarea ciudat˘ a) la spat ¸ii vectoriale. Pentru aceasta vom scrie baza ortonor-
mal˘ a u
1
, . . . , u
m
∈ C
n
a unui subspat ¸iu m-dimensional U ⊂ C
n
, m ≤ n, ca vectori coloane
ai unei matrice unitare U ∈ R
n×m
s¸i iter˘ am subspat ¸iul vectorial (respectiv matricele) peste
descompunerea QR
U
k+1
R
k
= AU
k
, k ∈ N
0
, U
0
∈ C
n
. (9.4.2)
De aici rezult˘ a imediat c˘ a
U
k+1
(R
k
. . .R
0
) = AU
k
(R
k−1
. . .R
0
) = A
2
U
k−1
(R
k−2
. . .R
0
) =. . . = A
k+1
U
0
. (9.4.3)
Dac˘ a definim acum, pentru m = n, A
(k)
= U

k
AU
k
, atunci conform lui (9.4.2) au loc
relat ¸iile
A
(k)
= U

k
AU
k
= U

k
U
k+1
R
k
A
(k+1)
= U

k+1
AU
k+1
= U

k+1
AU
k
U

k
U
k+1
s¸i punˆ and Q
k
:= U

k
U
k+1
, obt ¸inem regula de iterare (9.4.1). Ca matrice de pornire putem
alege U
0
= I.
Pentru a obt ¸ine rezultate despre metoda QR mai avem nevoie de un tip de matrice.
Definit ¸ia 9.4.2. O matrice de faz˘ a Θ ∈ C
n×n
este o matrice diagonal˘ a de forma
Θ =

e
−iθ1
.
.
.
e
−iθn
¸
¸
¸, θ
j
∈ [0, 2π), j = 1, n.
336 Valori s¸i vectori proprii
Propozit¸ia 9.4.3. Presupunem c˘ a matricea A ∈ C
n×n
are valori proprii distincte ˆın modul,

1
[ > [λ
2
[ > > [λ
n
[ > 0. Dac˘ a matricea X
−1
din forma normal˘ a Jordan A = XΛX
−1
a lui A are o descompunere LU
X
−1
= ST, S =

1
∗ 1
.
.
.
.
.
.
.
.
.
∗ . . . ∗ 1
¸
¸
¸
¸
¸
, T =

∗ . . . ∗
.
.
.
.
.
.

¸
¸
¸,
atunci exist˘ a matricele de faz˘ a Θ
k
, k ∈ N
0
, astfel ˆıncˆ at s¸irul de matrice (Θ
k
U
k
), k ∈ N s˘ a
convearg˘ a.
Observat ¸ia 9.4.4 (La propozit¸ia 9.4.3). 1. Convergent ¸a s¸irului (Θ
k
U
k
), ˆınseamn˘ a, mai
ales, c˘ a dac˘ a bazele ortonormale apart ¸in˘ atoare converg c˘ atre o baz˘ a ortonormal˘ a a lui
C
n
, avem de asemenea convergent ¸a spat ¸iilor vectoriale.
2. Existent ¸a descompunerii LU a lui X
−1
este f˘ ar˘ a nici o limitare: deoarece X
−1
este
inversabil˘ a ˆın mod trivial, exist˘ a ˆıntotdeauna o permutare P, astfel ˆıncˆ at X
−1
P
T
=
(PX)
−1
= LU s¸i PX este ˆıntr-adev˘ ar o matrice inversabil˘ a. Aceasta ˆınseamn˘ a c˘ a
matricea
´
A = P
T
AP, ˆın care A se transform˘ a prin permutarea liniilor s¸i coloanelor s¸i
care are aceleas¸i valori proprii ca s¸i A, verific˘ a ipoteza propozit ¸iei 9.4.3.
3. Demonstrat ¸ia propozit ¸iei 9.4.3 este o modificare a demonstrat ¸iei din [64, pag. 54–56]
pentru convergent ¸a metodei LR, care ˆıs¸i are originea ˆın lucrarea lui Wilkinson
1
[71].
Ce este de fapt metoda LR? Se procedeaz˘ a ca la metoda QR, dar lui A i se aplic˘ a elim-
inarea gausian˘ a, A
(k)
= L
k
R
k
s¸i apoi se construies¸te A
(k+1)
= R
k
L
k
. De asemenea,
aceast˘ a metod˘ a converge ˆın anumite condit ¸ii c˘ atre o matrice triunghiular˘ a superior. ♦
ˆ
Inainte de a demonstra propozit ¸ia 9.4.3 s˘ a vedem ˆıntˆ ai de ce convergent ¸a s¸irului (U
k
)
atrage convergent ¸a metodei QR. S¸ i anume, dac˘ a avem |U
k+1
−U
k
| ≤ ε sau echivalent
U
k+1
= U
k
+E, |E|
2
≤ ε,
atunci
Q
k
= U

k+1
U
k
= (U
k
+E)

U
k
= I +E

U
k
= I +F, |F|
2
≤ |E|
2
|U
k
|
2
. .. .
=1
≤ ε,
1
James Hardy Wilkinson (1919-1986), matematician englez.
Contribut ¸ii importante ˆın domeniul Analizei numerice, Algebrei
liniare numerice s¸i Informaticii. Membru al Royal Society, laureat
al premiului Turing al ACM. Pe lˆ ang˘ a numeroasele sale lucr˘ ari ˆın
domeniul Analizei numerice, a lucrat s¸i la dezvoltarea de biblioteci
de rutine numerice. Grupul NAG (Numerical Algorithms Group) s¸i-a
ˆınceput activitatea ˆın 1970 s¸i multe dintre rutinele de algebr˘ a liniar˘ a
numeric˘ a s-au datorat lui Wilkinson.
9.4. Metoda QR – teoria 337
s¸i cu aceasta
A
(k+1)
= R
k
Q
k
= R
k
(I +F) = R
k
+G, |G|
2
≤ ε|R
k
|
2
,
deci s¸irul A
(k)
, k ∈ N, converge, de asemenea, c˘ atre o matrice triunghiular˘ a superior, numai
dac˘ a normele lui R
k
, k ∈ N sunt uniform m˘ arginite. Chiar as¸a se ˆıntˆ ampl˘ a, c˘ aci
|R
k
|
2
= |Q

k
A
(k)
|
2
= |A
(k)
|
2
= |Q

k−1
. . . Q

0
AQ
0
. . . Q
k−1
| = |A|
2
.
Mai avem nevoie de un rezultat ajut˘ ator despre ,,unicitatea” descompunerii QR.
Lema 9.4.5. Fie U, V ∈ C
n×n
matrice unitare s¸i fie R, S ∈ C
n×n
matrice triunghiulare
superior inversabile. Atunci are loc UR = V S dac˘ a s¸i numai dac˘ a exist˘ a o matrice de faz˘ a
Θ =

e
−iθ1
.
.
.
e
−iθn
¸
¸
¸, θ
j
∈ [0, 2π), j = 1, n,
astfel ˆıncˆ at U = V Θ

, R = ΘS.
Demonstrat ¸ie. Deoarece UR = V Θ

ΘS = V S, ”⇐” este trivial˘ a. Pentru necesitate, din
UR = V S rezult˘ a c˘ a V

U = SR
−1
trebuie s˘ a fie o matrice triunghiular˘ a superior astfel
ˆıncˆ at (V

U)

= U

V = RS
−1
. As¸adar Θ = V

U este o matrice diagonal˘ a unitar˘ a s¸i are
loc U = V V

U = V Θ.
Demonstrat ¸ia propozit ¸iei 9.4.3. Fie A = XΛX
−1
forma normal˘ a Jordan a lui A, unde Λ =
diag(λ
1
, . . . , λ
n
). Pentru U
0
= I s¸i k ∈ N
0
U
k

¸
0
¸
j=k−1
R
j
¸

=

X
−1
ΛX

k
= XΛ
k
X
−1
= XΛ
k
ST = X (Λ
k

−k
)
. .. .
=:L
k
Λ
k
T,
ˆın care L
k
este o matrice triunghiular˘ a inferior cu elementele
(L
k
)
jm
=

λ
j
λ
m

k
, 1 ≤ m ≤ j ≤ n, (9.4.4)
astfel ˆıncˆ at pentru k ∈ N
[L
k
−I[ ≤

max
1≤m<j≤n
[s
jm
[

max
1≤m<j≤n

λ
j
λ
m

k

0
1
.
.
.
.
.
.
.
.
.
.
.
.
1 . . . 1 0
¸
¸
¸
¸
¸
¸
, (k ∈ N). (9.4.5)
Fie
´
U
k
´
R
k
= XL
k
descompunerea QR a lui XL
k
, care datorit˘ a lui (9.4.5) s¸i lemei 9.4.5
converge pˆ an˘ a la o matrice de faz˘ a c˘ atre descompunera QR X = UR a lui X. Dac˘ a aplic˘ am
acum lema 9.4.5 identit˘ at ¸ii
U
k

¸
0
¸
j=k−1
R
j
¸

=
´
Q
k
´
R
k
Λ
k
T,
338 Valori s¸i vectori proprii
atunci exist˘ a matricele de faz˘ a Θ
k
, astfel ˆıncˆ at
U
k
=
´
Q
k
Θ

k
s¸i

¸
0
¸
j=k−1
R
j
¸

= Θ
k
´
R
k
Λ
k
T,
deci exist˘ a matricele de faz˘ a
´
Θ
k
, astfel ˆıncˆ at U
k
´
Θ
k
→U, cˆ and k →∞.
Merit˘ a s˘ a arunc˘ am o scurt˘ a privire asupra ,,termenului de eroare” din (9.4.4), ale c˘ arui
elemente subdiagonale verific˘ a relat ¸ia
[L
k
[
jm


j
[

m
[

[s
jm
[, 1 ≤ m < j ≤ n.
As¸adar are loc
Convergent ¸a unui element subdiagonal c˘ atre 0 este cu atˆ at mai rapid˘ a cu cˆ at
elementul este mai ˆındep˘ artat de diagonal˘ a.
9.5. Metoda QR – practica
9.5.1. Metoda QR clasic˘ a
Am v˘ azut c˘ a metoda QR genereaz˘ a un s¸ir de matrice A
(k)
care ˆın condit ¸ii determinate
trebuie s˘ a convearg˘ a c˘ atre o matrice triunghiular˘ a superior care are pe diagonal˘ a valorile
proprii. Putem ˆıntrebuint ¸a aceast˘ a metod˘ a pentru matrice reale.
Exemplul 9.5.1. Fie
A =

1 1 1
1 2 3
1 2 1
¸
¸
.
Aceast˘ a matrice are valorile proprii
λ
1
≈ 4.56155, λ
2
= −1, λ
3
≈ 0.43845.
Iterˆ and prin metoda QR se obt ¸in pentru elementele subdiagonale rezultatele din tabela 9.1
(o implementare MATLAB brut˘ a). Se poate vedea c˘ a, dup˘ a k iterat ¸ii, elementele a
(k)
mℓ
, ℓ < m,
#iterat ¸ii a
21
a
31
a
32
10 6.64251e-007 -2.26011e-009 0.00339953
20 1.70342e-013 -1.52207e-019 8.9354e-007
30 4.36711e-020 -1.02443e-029 2.34578e-010
40 1.11961e-026 -6.89489e-040 6.15829e-014
Tabela 9.1: Rezultate pentru exemplul 9.5.1
se apropie de 0 la fel ca [λ


k
[. ♦
9.5. Metoda QR – practica 339
Exemplul 9.5.2. Matricea

1 5 7
3 0 6
4 3 1
¸
¸
are valorile proprii
λ
1
≈ 9.7407, λ
2
≈ −3.8703 + 0.6480i, λ
2
≈ −3.8703 −0.6480i.
ˆ
In acest caz nu ne putem as¸tepta ca metoda QR s˘ a convearg˘ a c˘ atre o matrice triunghiular˘ a
superioar˘ a, c˘ aci atunci toate valorile proprii ale lui A ar fi reale. De fapt, dup˘ a 100 de iterat ¸ii
se obt ¸ine matricea
A
(100)

9.7407 −4.3355 0.94726
8.552e −039 −4.2645 0.7236
3.3746e −039 −0.79491 −3.4762
¸
¸
,
care ne furnizeaz˘ a corect valoarea proprie real˘ a. Pe lˆ ang˘ a aceasta, matricea 2 2 din colt ¸ul
din dreapta jos ne furnizeaz˘ a valorile proprii complexe −3.8703 ±0.6480i. ♦
Al doilea exemplu recomand˘ a urm˘ atoarea strategie: dac˘ a elementele situate sub diagonal˘ a nu
vor s˘ a dispar˘ a, ar fi indicat s˘ a privim mai atent matricea 2 2 corespunz˘ atoare.
Definit ¸ia 9.5.3. Dac˘ a A ∈ R
n×n
are descompunerea QR A = QR, atunci transformarea
RQ a lui A se defines¸te prin A

= RQ.
Ce probleme apar la realizarea practic˘ a a metodei QR? Deoarece complexitatea descom-
punerii QR este O(n
3
), nu este prea ˆınt ¸elept s˘ a utiliz˘ am o metod˘ a care se bazeaz˘ a pe un astfel
de pas iterativ. Pentru a evita problema, vom converti matricele init ¸iale ˆın matrice similare a
c˘ aror descompunere QR poate fi calculat˘ a mai repede. Astfel de matrice sunt matricele Hes-
senberg superioare a c˘ aror descompunere QR se poate calcula cu n iterat ¸ii Givens, deci un
total de O(n
2
) operat ¸ii: de vreme ce numai elementele h
j−1,j
, j = 2, n trebuie eliminate,
vom determina unghiurile φ
2
, . . . φ
n
, astfel ca
G(n −1, n; φ
n
) . . . G(1, 2; φ
2
)H = R
s¸i are loc
H

= RG
T
(1, 2; φ
2
) . . . G
T
(n −1, n; φ
n
). (9.5.1)
Aceast˘ a idee este implementat˘ a ˆın fis¸ierul HessenRQ.m (vezi funct ¸ia MATLAB 9.1).
Lema 9.5.4. Dac˘ a H ∈ R
n×n
este o matrice Hessenberg superioar˘ a, atunci H

este de
asemenea matrice Hessenberg superioar˘ a.
Demonstrat ¸ie. Rezult˘ a direct din reprezentarea (9.5.1).
ˆ
Inmult ¸irea la dreapta cu o matrice
Givens G
T
(j, j + 1, φ
j+1
), j = 1, n −1 ˆınseamn˘ a o combinat ¸ie a coloanelor j s¸i j + 1 s¸i
creaz˘ a valori diferite de zero doar ˆın prima subdiagonal˘ a – R este triunghiular˘ a superior.
340 Valori s¸i vectori proprii
Sursa MATLAB 9.1 Tranformarea RQ a unei matrice Hessenberg
function HH=HessenRQ(H)
%HESSENRQ - transformarea RQ a unei matrice Hessenberg
%utilizand rotatii Givens
%intrare H -matrice Hesenberg
%iesire HH - transformarea RQ a lui H
[m,n]=size(H);
Q=eye(m,n);
for k=2:n
a=H(k-1:k,k-1);
an=sqrt(a’
*
a); %norma euclidiana
c=sign(a(2))
*
abs(a(1))/an; %sinus
s=sign(a(1))
*
abs(a(2))/an; %cosinus
Jm=eye(n);
Jm(k-1,k-1)=c; Jm(k,k)=c;
Jm(k-1,k)=s; Jm(k,k-1)=-s;
H=Jm
*
H;
Q=Q
*
Jm’;
end
HH=H
*
Q;
S˘ a vedem cum aducem matricea init ¸ial˘ a la forma Hessenberg.
ˆ
In acest scop vom utiliza
pentru variat ¸ie transform˘ arile Householder. S˘ a presupunem c˘ a am g˘ asit deja o matrice Q
k
,
astfel ˆıncˆ at primele k coloane ale matricei transformate s˘ a aib˘ a deja forma Hessenberg, adic˘ a
Q
k
AQ
T
k
=

∗ . . . ∗ ∗ ∗ . . . ∗
∗ . . . ∗ ∗ ∗ . . . ∗
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
∗ ∗ ∗ . . . ∗
a
(k)
1
∗ . . . ∗
.
.
.
.
.
.
.
.
.
.
.
.
a
(k)
n−k−1
∗ . . . ∗
¸
¸
¸
¸
¸
¸
¸
¸
¸
¸
¸
¸
¸
.
Apoi determin˘ am ´ y ∈ R
n−k−1
s¸i α ∈ R (care rezult˘ a automat), astfel ca
H(´ y)

a
(k)
1
.
.
.
.
.
.
a
(k)
n−k−1
¸
¸
¸
¸
¸
¸
¸
=

α
0
.
.
.
0
¸
¸
¸
¸
¸
⇒U
k+1
:=
¸
I
k+1
H(´ y)

9.5. Metoda QR – practica 341
ε #iterat ¸ii λ
1
λ
2
λ
3
10
−3
11 4.56155 -0.999834 0.438281
10
−4
14 4.56155 -1.00001 0.438461
10
−5
17 4.56155 -0.999999 0.438446
10
−10
31 4.56155 -1 0.438447
Tabela 9.2: Rezultatele pentru exemplul 9.5.5
s¸i obt ¸inem c˘ a
U
k+1
Q
k
. .. .
=:Q
k+1
AQ
k
U
k+1
. .. .
=Q
T
k+1
=

∗ . . . ∗ ∗ ∗ . . . ∗
∗ . . . ∗ ∗ ∗ . . . ∗
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
∗ ∗ ∗ . . . ∗
α ∗ . . . ∗
0 ∗ . . . ∗
.
.
.
.
.
.
.
.
.
0 ∗ . . . ∗
¸
¸
¸
¸
¸
¸
¸
¸
¸
¸
¸
¸
¸
¸
U
k+1
;
matricea unitate I
k+1
din stˆ anga sus ˆın matricea U
k+1
are grij˘ a s˘ a avem ˆın primele k + 1
coloane o structur˘ a Hessenberg. Versiunea MATLAB a aceste metode este implementat˘ a ˆın
fis¸ierul hessen h.m (sursa MATLAB 9.2).
ˆ
In concluzie, metoda noastr˘ a QR va fi o metod˘ a
ˆın dou˘ a faze:
1. Transform˘ a pe A ˆın forma Hessenberg utilizˆ and o transformare ortogonal˘ a:
H
(0)
= QAQ
T
, Q
T
Q = QQ
T
= I.
2. Execut˘ a iterat ¸iile QR
H
(k+1)
= H
(k)

, k ∈ N
0
,
ˆın sperant ¸a c˘ a elementele de pe prima subdiagonal˘ a converg toate c˘ atre zero.
Deoarece elementele subdiagonale converg cel mai ˆıncet, putem folosi drept criteriu de
oprire maximul modulului. Aceasta ne conduce la metoda QR simpl˘ a, vezi QRMethod1.m,
sursa MATLAB 9.3. Desigur, la aparit ¸ia unor valori proprii complexe aceast˘ a metod˘ a itereaz˘ a
la nesfˆ ars¸it.
Exemplul 9.5.5. Aplic˘ am noua metod˘ a matricei din exemplul 9.5.1. Pentru diverse tolerant ¸e
ε date obt ¸inem rezultatele din tabela 9.2. Se observ˘ a c˘ a la fiecare trei iterat ¸ii se cˆ as¸tig˘ a o
zecimal˘ a la elementele vecine cu diagonala. ♦
342 Valori s¸i vectori proprii
Sursa MATLAB 9.2 Trecerea la forma Hessenberg
function [A,Q]=hessen h(A)
%HESSEN H - reducere Householder la forma Hessenberg
%intrare
%A - matrice
%rezultate
%A - forma Hessenberg (se rescrie peste A)
%Q - matricea de transformare (optional)
[m,n]=size(A);
%obtine transformare
v=zeros(m,m);
Q=eye(m,m);
for k=1:m-2
x=A(k+1:m,k);
vk=mysign(x(1))
*
norm(x,2)
*
[1;zeros(length(x)-1,1)]+x;
vk=vk/norm(vk);
A(k+1:m,k:m)=A(k+1:m,k:m)-2
*
vk
*
(vk’
*
A(k+1:m,k:m));
A(1:m,k+1:m)=A(1:m,k+1:m)-2
*
(A(1:m,k+1:m)
*
vk)
*
vk’;
v(k+1:m,k)=vk;
end
%obtine matricea Q cu care se transforma
if nargout==2
Q=eye(m,m);
for j=1:m
for k=m:-1:1
Q(k:m,j)=Q(k:m,j)-2
*
v(k:m,k)
*
(v(k:m,k)’
*
Q(k:m,j));
end
end
end
Putem ˆıncerca s˘ a acceler˘ am metoda descompunˆ and problema ˆın subprobleme. Dac˘ a
avem o matrice Hessenberg de forma
H =

∗ . . . . . . ∗

.
.
.
.
.
. ∗
.
.
.
.
.
.
.
.
.
∗ ∗
∗ . . . . . . ∗

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
∗ ∗
¸
¸
¸
¸
¸
¸
¸
¸
¸
¸
¸
¸
¸
¸
¸
¸
=
¸
H
1

H
2

,
atunci problema de valori proprii referitoare la H se poate descompune ˆıntr-o problem˘ a de
valori proprii referitoare la H
1
s¸i una referitoare la H
2
.
9.5. Metoda QR – practica 343
Sursa MATLAB 9.3 Metoda QR simpl˘ a
function [lambda,it]=QRMethod1(A,t)
%QRMETHOD1 - Calcululeaza valorile proprii ale unei matrice
%reale, implementarea naiva
%intrare
% A - matricea
% t - toleranta
%iesire
% lambda - valorile proprii - diagonala lui R
% it - numar de iteratii
H=hessen h(A); %forma Hessenberg
it=0;
while norm(diag(H,-1),inf) > t %crit. de oprire
H=HessenRQ(H);
it=it+1;
end
lambda=diag(H);
Conform lui [27], un element subdiagonal h
j+1,j
este considerat ,,suficient de mic” dac˘ a
[h
j+1,j
[ ≤ eps ([h
jj
[ +[h
j+1,j+1
[) . (9.5.2)
Aici vom proceda mai simplu s¸i vom descompune o matrice dac˘ a cel mai mic element
ˆın modul situat pe prima subdiagonal˘ a devine mai mic decˆ at o tolerant ¸˘ a dat˘ a. Procedeul este
dup˘ a cum urmeaz˘ a: funct ¸ia de determinare a valorilor proprii determin˘ a cu ajutorul unei
iterat ¸ii QR o descompunere ˆın matricele H
1
s¸i H
2
s¸i se apeleaz˘ a recursiv pe sine pentru
fiecare din aceste matrice.
Dac˘ a una dintre matrice este 1 1, valoarea proprie este automat determinat˘ a, iar dac˘ a
este 2 2, atunci polinomul s˘ au caracteristic este
p
A
(x) = det(A −xI) = x
2
−tr(A)x + det(A)
= x
2
(a
11
+a
22
)
. .. .
=:b
x + (a
11
a
22
−a
12
a
21
)
. .. .
=:c
.
Dac˘ a discriminantul b
2
−4c este pozitiv, A are dou˘ a valori proprii reale s¸i distincte
x
1
=
1
2

−b − sgn(b)

b
2
−4c

s¸i x
2
=
c
x
1
,
altfel valorile proprii sunt complexe s¸i anume
1
2

−b ±i

4c −b
2

.
Astfel, avem sub control s¸i cazul valorilor proprii complexe. Ideea este implementat˘ a ˆın
fis¸ierul QRSplit1a.m, sursa MATLAB 9.4. Iterat ¸iile QR se execut˘ a efectiv ˆın fis¸ierul
QRIter.m, iar cazul complex ˆın Eigen2x2.m.
344 Valori s¸i vectori proprii
Sursa MATLAB 9.4 Metoda QR cu partit ¸ionare s¸i tratarea cazurilor 2 2
function [lambda,It]=QRSplit1a(A,t)
%QRSPLIT1 calculul valorilor proprii: metoda QR, partitionare
%si tratare speciala a matricelor 2x2
%Intrare
%A - matricea
%t - toleranta
%Rezultate
%lambda - valorile proprii
%It - numar de iteratii
[m,n]=size(A);
if n==1
It=0;
lambda=A;
return
elseif n==2
It=0;
lambda=Eigen2x2(A);
return
else
H=hessen_h(A); %aducere la forma Hessenberg
[H1,H2,It]=QRIter(H,t); %descompunere H->H1,H2
%apel recursiv
[l1,It1]=QRSplit1a(H1,t);
[l2,It2]=QRSplit1a(H2,t);
It=It+It1+It2;
lambda=[l1;l2];
end
Exemplul 9.5.6. S˘ a consider˘ am din nou matricea din exemplul 9.5.2 c˘ areia ˆıi aplic˘ am rutina
QRSplit1a. Rezultatele apar ˆın tabela 9.3. ♦
9.5.2. Deplasare spectral˘ a
Utilizarea matricelor Hessenberg ne permite, ˆıntr-adev˘ ar, s˘ a execut˘ am fiecare pas de
iterat ¸ie ˆıntr-un timp mai scurt. Vom ˆıncerca acum s˘ a mics¸or˘ am num˘ arul de iterat ¸ii, as¸adar
s˘ a cres¸tem viteza de convergent ¸˘ a deoarece
Rata de convergent ¸˘ a a elementelor subdiagonale h
j+1,j
are ordinul de m˘ arime

λ
j+1
λ
j

k
, j = 1, n −1.
Cuvˆ antul de ordine este aici deplasare (translat ¸ie) spectral˘ a. Se observ˘ a c˘ a, pentru µ ∈ R,
matricea A−µI are valorile proprii λ
1
−µ, . . . , λ
n
−µ. Pentru o matrice oarecare inversabil˘ a,
9.5. Metoda QR – practica 345
Sursa MATLAB 9.5 Calculul valorilor proprii ale unei matrice 2 2
function lambda=Eigen2x2(A)
%EIGEN2X2 - Calculeaza valorile proprii ale unei matrice 2x2
%A - matricea 2x2
%lambda - valorile proprii
b=trace(A); c=det(A);
d=bˆ2/4-c;
if d > 0
if b == 0
lambda = [sqrt(c); -sqrt(c)];
else
x = (b/2+sign(b)
*
sqrt(d));
lambda=[x; c/x];
end
else
lambda=[b/2+i
*
sqrt(-d); b/2-i
*
sqrt(-d)];
end
Sursa MATLAB 9.6 Iterat ¸ia QR
function [H1,H2,It]=QRIter(H,t)
%QRITER - executa iteratia QR pe matricea HouseHolder
%pana cand cel mai mic element subdiagonal este < t
%Intrare
% H - matricea Hessenberg
% t - toleranta
%Rezultate
%H1, H2 - descompunerea dupa elementul minim
%It - numar de iteratii
It=0; [m,n]=size(H);
[m,j]=min(abs(diag(H,-1)));
while m>t
It=It+1;
H=HessenRQ(H);
[m,j]=min(abs(diag(H,-1)));
end
H1=H(1:j,1:j);
H2=H(j+1:n,j+1:n);
346 Valori s¸i vectori proprii
ε #iterat ¸ii λ
1
λ
2
λ
3
10
−3
12 9.7406 −3.8703 + 0.6479i −3.8703 −0.6479i
10
−4
14 9.7407 −3.8703 + 0.6479i −3.8703 −0.6479i
10
−5
17 9.7407 −3.8703 + 0.6480i −3.8703 −0.6480i
10
−5
19 9.7407 −3.8703 + 0.6480i −3.8703 −0.6480i
10
−5
22 9.7407 −3.8703 + 0.6480i −3.8703 −0.6480i
Tabela 9.3: Rezultate pentru exemplul 9.5.6
B, matricea B(A − µI)B
−1
+ µI are valorile proprii λ
1
, . . . , λ
n
– se poate as¸adar deplasa
spectrul matricei ˆınainte s¸i ˆınapoi printr-o transformare de similaritate. Se ordoneaz˘ a valorile
proprii µ
1
, . . . , µ
n
astfel ca

1
−µ[ > [µ
2
−µ[ > > [µ
n
−µ[, ¦µ
1
, . . . , µ
1
¦ = ¦λ
1
, . . . , λ
n
¦
s¸i dac˘ a µ este apropiat de µ
n
, atunci dac˘ a metoda QR ˆıncepe cu H
0
= A − µI, elementul
subdiagonal h
(n)
n−1,n
converge foarte repede c˘ atre zero. Mai bine este dac˘ a deplasarea spectral˘ a
se realizeaz˘ a la fiecare pas individual. Pe lˆ ang˘ a aceasta, putem lua ca aproximat ¸ie pentru µ
(ˆın mod euristic) valoarea h
(k)
nn
. Se obt ¸ine astfel urm˘ atoarea schem˘ a iterativ˘ a
H
(k+1)
=

H
(k)
−µ
k
I



k
I, µ
k
:= h
(k)
nn
, k ∈ N
0
,
cu matricea de pornire H
0
= QAQ
T
. Aceast˘ a metod˘ a este implementat˘ a ˆın QRMethod2.m.
ˆ
In fis¸ierul QRsplit2.m se d˘ a o implementare care trateaz˘ a s¸i valorile proprii complexe.
Aceast˘ a funct ¸ie apeleaz˘ a QRIter2.
Observat ¸ia 9.5.7. Dac˘ a valoarea de deplasare µ este suficient de apropiat˘ a de o valoare pro-
prie λ, atunci matricea se descompune ˆıntr-un singur pas iterativ. ♦
Exemplul 9.5.8. S˘ a consider˘ amdin nou matricea din exemplul 9.5.1. D˘ am numai tolerant ¸ele
s¸i compar˘ am num˘ arul de iterat ¸ii necesare pentru atingerea lor (tabela 9.4). Deplasarea spec-
tral˘ a accelereaz˘ a metoda, ˆın special ˆın leg˘ atur˘ a cu descompunerea matricei. ♦
9.5.3. Metoda QR cu pas dublu
Se poate ar˘ ata c˘ a metoda QRcu deplasare spectral˘ a converge p˘ atratic, eroarea fiind pentru
un ρ < 1 doar
O(ρ
2k
) ˆın loc de O(ρ
k
).
Oricˆ at de frumoas˘ a ar fi aceast˘ a idee, ea funct ¸ioneaz˘ a bine doar pentru valori proprii reale, ˆın
cazul valorilor proprii complexe fiind problematic˘ a. Cu toate acestea, putem exploata faptul
c˘ a valorile proprii apar ˆın perechi. Aceasta ne conduce la ideea de ,,metode cu pas dublu”:
9.5. Metoda QR – practica 347
Sursa MATLAB 9.7 Metoda QR cu deplasare spectral˘ a s¸i partit ¸ionare
function [lambda,it]=QRMethod2(A,t)
%QRMETHOD2 - Calcululeaza valorile proprii ale unei matrice
%reale cu metoda QR si deplasare
%intrare
% A - matricea
% t - toleranta
%iesire
% lambda - valorile proprii - diagonala lui R
% it - numar de iteratii
[m,n]=size(A); II=eye(n); H=hessen_h(A); it=0;
while norm(diag(H,-1),inf) > t
m = H(n,n);
H = HessenRQ(H - m
*
II) + m
*
II;
it=it+1;
end
lambda=diag(H);
#iterat ¸ii
ε QRMethod1 QrMethod2 QRSplit1 QRSplit2
10
−5
17 11 17 1
10
−6
19 12 19 1
10
−7
22 14 22 1
10
−8
25 16 25 1
10
−9
28 18 28 1
10
−10
31 19 31 1
10
−20
58 36 58 9
Tabela 9.4: Comparat ¸ii pentru exemplul 9.5.8
348 Valori s¸i vectori proprii
Sursa MATLAB 9.8 Metoda QR cu deplasare spectral˘ a, partit ¸ionare s¸i tratarea valorilor
proprii complexe
function [lambda,It]=QRSplit2(A,t)
%QRSPLIT2 - calculul valorilor proprii metoda QR,
%partitionare, deplasare si tratare
%speciala a matricelor 2x2
%Intrare
%A - matricea
%t - toleranta
%Rezultate
%lambda - valorile proprii
%It - numar de iteratii
[m,n]=size(A);
if n==1
It=0;
lambda=A;
return
elseif n==2
It=0;
lambda=Eigen2x2(A);
return
else
H=hessen_h(A); %aducere la forma Hessenberg
[H1,H2,It]=QRIter2(H,t); %descompunere H->H1,H2
%apel recursiv
[l1,It1]=QRSplit2(H1,t);
[l2,It2]=QRSplit2(H2,t);
It=It+It1+It2;
lambda=[l1;l2];
end
ˆın loc s˘ a deplas˘ am spectrul cu o valoare proprie, aproximat˘ a ˆın mod euristic cu
h
(k)
n,n
, se execut˘ a dou˘ a deplas˘ ari ˆıntr-un pas, s¸i anume cu valorile proprii ale lui
B =
¸
h
(k)
n−1,n−1
h
(k)
n−1,n
h
(k)
n−1,n
h
(k)
n,n
¸
.
Exist˘ a dou˘ a posibilit˘ at ¸i: fie ambele valori µ s¸i µ

ale lui B sunt reale s¸i atunci se procedeaz˘ a
ca mai sus, fie sunt complexe conjugate s¸i avem valorile proprii µ s¸i ¯ µ. As¸a cum vom vedea,
al doilea caz se poate de asemenea trata ˆın aritmetica real˘ a. Fie Q
k
, Q

k
∈ C
n×n
s¸i R
k
,
R

k
∈ C
n×n
matricele descompunerii QR complexe
Q
k
R
k
= H
(k)
−µI,
Q

k
R

k
= R
k
Q
k
+ (µ − ¯ µ)I.
9.5. Metoda QR – practica 349
Sursa MATLAB 9.9 Iterat ¸ie QR s¸i partit ¸ionare
function [H1,H2,It]=QRIter2(H,t)
%QRITER - executa iteratia QR pe matricea HouseHolder
%pana cand cel mai mic element subdiagonal este < t
%Parametrii - ca la QRIter
It=0; [m,n]=size(H);
II=eye(n);
[m,j]=min(abs(diag(H,-1)));
while m>t
It=It+1;
H=HessenRQ(H-H(n,n)
*
II)+H(n,n)
*
II;
[m,j]=min(abs(diag(H,-1)));
end
H1=H(1:j,1:j);
H2=H(j+1:n,j+1:n);
Atunci are loc
H
(k+1)
:= R

k
Q

k
+µI = (Q

k
)

(R
k
Q
k
+ (µ − ¯ µ)I)Q

k
+ ¯ µI
= Q

k
R
k
Q
k
Q

k
+µI = (Q

k
)

Q

k
(H
(k)
−µI)Q
k
Q

k
+µI
= (Q
k
Q

k
)

. .. .
=U

H
(k)
Q
k
Q

k
. .. .
=U
.
Utilizˆ and matricea S = R

k
R
k
avem
US = Q
k
Q

k
R

k
R
k
= Q
k
(R
k
Q
k
+ (µ − ¯ µ)I)R
k
= Q
k
R
k
Q
k
R
k
+ (µ − ¯ µ)Q
k
R
k
= (H
(k)
−µI)
2
+ (µ − ¯ µ)(H
(k)
−µI)
= (H
(k)
)
2
−2µH
(k)

2
I + (µ − ¯ µ)H
(k)
−(µ
2
−µ¯ µ)I
= (H
(k)
)
2
−(µ + ¯ µ)H
(k)
+µ¯ µI =: X
(9.5.3)
Dac˘ a µ = α + iβ, atunci µ + ¯ µ = 2α s¸i µ¯ µ = [µ[
2
= α
2
+ β
2
, as¸adar matricea X din
membrul drept al lui (9.5.3), deci are o descompunere QR X = QR real˘ a s¸i conform lemei
9.4.5 exist˘ a o matrice de faz˘ a Θ ∈ C
n×n
astfel ˆıncˆ at U = ΘQ. Dac˘ a vom itera ˆın real mai
departe, vom obt ¸ine metoda QR cu pas dublu
Q
k
R
k
= (H
(k)
)
2
−(h
(k)
n−1,n−1
+h
(k)
n,n
)H
(k)
+

(h
(k)
n−1,n−1
h
(k)
n,n
−h
(k)
n−1,n
H
(k)
n,n−1

I,
H
(k+1)
= Q
T
k
H
(k)
Q
k
.
(9.5.4)
Observat ¸ia 9.5.9 (Metoda QR cu pas dublu). 1. Matricea X din (9.5.3) nu mai este o
matrice Hessenberg, ea avˆ and o diagonal˘ a suplimentar˘ a. Cu toate acestea se poate cal-
cula descompunerea QR a lui X destul de simplu, cu doar 2n −3 rotat ¸ii Jacobi, ˆın loc
de n −1, cˆ at este necesar pentru o matrice Hessenberg.
350 Valori s¸i vectori proprii
2. Datorit˘ a complexit˘ at ¸ii sale ridicate, ˆınmult ¸irea Q
T
k
H
(k)
Q
k
nu mai este o metod˘ a efec-
tiv˘ a de iterat ¸ie; acest lucru se poate remedia, a se vedea de exemplu [20] sau [57, pag.
272–278].
3. Natural, H
(k+1)
poate fi adus˘ a la forma Hessenberg.
4. Metoda cu dublu pas se aplic˘ a numai atunci cˆ and matricea A are valori proprii com-
plexe; din contr˘ a, la matrice simetrice nu este avantajoas˘ a. ♦
Metoda QR cu pas dublu, partit ¸ionare s¸i tratarea matricelor 22 este dat˘ a ˆın sursa MATLAB
9.10, fis¸ierul QRSplit3. Ea apeleaz˘ a QRDouble.
Sursa MATLAB 9.10 Metoda QR cu dublu pas, partit ¸ionare s¸i tratarea matricelor 2 2
function [lambda,It]=QRSplit3(A,t)
%QRSPLIT3 - calculul val. proprii cu metoda QR partitionare,
%deplasare si tratare speciala a matricelor 2x2
%Intrare
%A - matricea
%t - toleranta
%Rezultate
%lambda - valorile proprii
%It - numar de iteratii
[m,n]=size(A);
if n==1
It=0;
lambda=A;
return
elseif n==2
It=0;
lambda=Eigen2x2(A);
return
else
H=hessen_h(A); %aducere la forma Hessenberg
[H1,H2,It]=QRDouble(H,t); %descompunere H->H1,H2
%apel recursiv
[l1,It1]=QRSplit3(H1,t);
[l2,It2]=QRSplit3(H2,t);
It=It+It1+It2;
lambda=[l1;l2];
end
Exemplul 9.5.10. Aplic˘ am metodele QRSplit2s¸i QRSplit3 matricelor din exemplele
9.5.1 s¸i 9.5.2. Se obt ¸in rezultatele din tabela 9.5. Buna comportare a metodei pasului dublu
se justific˘ a prin aceea c˘ a obt ¸ine dou˘ a valori proprii dintr-o dat˘ a. ♦
9.6. Valori s¸i vectori proprii ˆın MATLAB 351
#iterat ¸ii ˆın real #iterat ¸ii ˆın complex
ε QRSplit2 QRSplit3 QRSplit2 QRSplit3
1e-010 1 1 9 4
1e-020 9 2 17 5
1e-030 26 3 45 5
Tabela 9.5: Comparat ¸iile din exemplul 9.5.10
Sursa MATLAB 9.11 Iterat ¸ie QR cu dublu pas s¸i transformare Hessenberg
function [H1,H2,It]=QRDouble(H,t)
%QRDOUBLE - executa iteratia QR cu dublu pas si transformare
%inversa pe matricea HouseHolder pana cand cel mai
%mic element subdiagonal este < t
It=0; [m,n]=size(H);
II=eye(n);
[m,j]=min(abs(diag(H,-1)));
while m>t
It=It+1;
X = H
*
H ... %Matricea X
- (H(n-1,n-1) + H(n,n))
*
H ...
+ (H(n-1,n-1)
*
H(n,n) - H(n,n-1)
*
H(n-1,n))
*
II;
[Q,R]=qr(X);
H=hessen_h(Q’
*
H
*
Q);
[m,j]=min(abs(diag(H,-1)));
end
H1=H(1:j,1:j);
H2=H(j+1:n,j+1:n);
9.6. Valori s¸i vectori proprii ˆın MATLAB
MATLAB utilizeaz˘ a rutine LAPACK pentru a calcula valori s¸i vectori proprii. Valorile
proprii ale unei matrice se calculeaz˘ a cu funct ¸ia eig: e=eig(A) pune valorile proprii ale
lui A ˆın vectorul e. Forma [V,D]=eig(A), unde A este matrice p˘ atratic˘ a de ordinul n,
returneaz˘ a ˆın coloanele lui V n vectori proprii ai lui A s¸i ˆın matricea diagonal˘ a D valorile
proprii ale lui A. Are loc relat ¸ia A
*
V=V
*
D. Nu orice matrice are n vectori proprii liniari
independent ¸i, deci matricea V returnat˘ a de eig poate fi singular˘ a (sau datorit˘ a erorilor de
rotunjire nesingular˘ a, dar foarte prost condit ¸ionat˘ a). Matricea din exemplul urm˘ ator are o
valoare proprie dubl˘ a 1, dar numai un vector propriu liniar independent:
>> [V,D]=eig([2, -1; 1,0])
V =
0.7071 0.7071
0.7071 0.7071
D =
1 0
0 1
352 Valori s¸i vectori proprii
Vectorii proprii sunt scalat ¸i astfel ca norma lor euclidian˘ a s˘ a fie egal˘ a cu unu (lucru posibil,
c˘ aci dac˘ a x este un vector propriu, atunci orice multiplu al s˘ au este de asemenea vector
propriu).
Dac˘ a A este hermitian˘ a, atunci MATLAB returneaz˘ a valorile proprii sortate cresc˘ ator s¸i
matricea vectorilor proprii unitar˘ a (ˆın limita preciziei de lucru):
>> [V,D]=eig([2,-1;-1,1])
V =
-0.5257 -0.8507
-0.8507 0.5257
D =
0.3820 0
0 2.6180
>> norm(V’
*
V-eye(2))
ans =
2.2204e-016
ˆ
In exemplul urm˘ ator vom calcula valorile proprii ale matricei lui Frank (nehermitian˘ a):
>> F = gallery(’frank’,5)
F =
5 4 3 2 1
4 4 3 2 1
0 3 3 2 1
0 0 2 2 1
0 0 0 1 1
>> e = eig(F)’
e =
10.0629 3.5566 1.0000 0.0994 0.2812
Dac˘ a λ este valoare proprie a matricei F, atunci 1/λ este de asemenea valoare proprie:
>> 1./e
ans =
0.0994 0.2812 1.0000 10.0629 3.5566
Motivul este acela c˘ a polinomul caracteristic este anti-palindromic, adic˘ a termenii egal
dep˘ artat ¸i de extrem sunt numere opuse:
>> poly(F)
ans =
1.0000 -15.0000 55.0000 -55.0000 15.0000 -1.0000
Astfel, det(F −λI) = −λ
5
det(F −λ
−1
I).
Funct ¸ia condeig calculeaz˘ a num˘ arul de condit ¸ionare pentru valori proprii. Acesta se
defines¸te prin
Γ(A) = inf¦cond(X) : X
−1
AX = diag(λ
i
)¦.
Forma c=condeig(A) returneaz˘ a un vector al numerelor de condit ¸ionare ale valo-
rilor proprii ale lui A. Forma [V,D,s] = condeig(A) este echivalent˘ a cu: [V,D] =
eig(A), s = condeig(A). Un num˘ ar de condit ¸ionare mare indic˘ a o valoare proprie
sensibil˘ a la perturbat ¸ii ale matricei. Exemplul urm˘ ator afis¸eaz˘ a ˆın prima linie valorile proprii
ale matricei lui Frank de ordinul 6 s¸i ˆın a doua linie numerele lor de condit ¸ionare:
9.6. Valori s¸i vectori proprii ˆın MATLAB 353
>> A = gallery(’frank’,6);
>> [V,D,s] = condeig(A);
>> [diag(D)’; s’]
ans =
12.9736 5.3832 1.8355 0.5448 0.0771 0.1858
1.3059 1.3561 2.0412 15.3255 43.5212 56.6954
D˘ am ˆın continuare cˆ ateva informat ¸ii despre modul de lucru al funct ¸iei eig. Ea lucreaz˘ a
ˆın mai multe stadii.
ˆ
Intˆ ai, dac˘ a A este nesimetric˘ a, ea echilibreaz˘ a matricea, adic˘ a, real-
izeaz˘ a transform˘ ari de similaritate A ← Y
−1
AY , unde Y este o permutare a unei ma-
trice diagonale aleas˘ a astfel ˆıncˆ at s˘ a fac˘ a liniile s¸i coloanele lui A de norme aproximativ
egale. Motivarea echilibr˘ arii este aceea c˘ a poate conduce la un calcul mai precis al vecto-
rilor s¸i valorilor proprii. Totus¸i, uneori echilibrarea nu este necesar˘ a s¸i poate fi inhibat˘ a cu
eig(A,’nobalance’) (a se vedea doc eig pentru un exemplu).
Dup˘ a echilibrare, eig reduce A la forma Hessenberg superioar˘ a (sau tridiagonal˘ a dac˘ a
A este hermitian˘ a). Forma Hessenberg se poate calcula cu H = hess(A) sau [Q,H] =
hess(A). Ultima form˘ a d˘ a s¸i matricea unitar˘ a prin care se face transformarea. Comanda T
= schur(A) sau [Q,T] = schur(A) produce descompunerea Schur a lui A real˘ a sau
complex˘ a, dup˘ a cum A este o matrice real˘ a sau complex˘ a. Descompunerea Schur complex˘ a a
unei matrice reale se poate obt ¸ine cu schur(A, ’complex’).
MATLAB poate rezolva s¸i probleme de valori proprii generalizate, adic˘ a probleme de
forma: fiind date dou˘ a matrice p˘ atratice de ordinul n, A s¸i B, s˘ a se g˘ aseasc˘ a scalarii λ s¸i
vectorii x = 0 astfel ˆıncˆ at Ax = λBx. Valorile proprii generalizate se pot calcula cu e =
eig(A,B), iar [V,D] = eig(A,B) returneaz˘ a o matrice diagonal˘ a D a valorilor proprii
s¸i o matrice p˘ atratic˘ a de ordinul n a vectorilor proprii V astfel ˆıncˆ at A
*
V=B
*
V
*
D. Teoria
corespunz˘ atoare este mai complicat˘ a decˆ at cea a valorilor proprii standard: putem s˘ a nu avem
nici o valoare proprie, putem avea un num˘ ar finit de valori proprii sau o infinitate, sau valori
proprii infinit de mari. Dac˘ a B este singular˘ a, se pot obt ¸ine valori proprii NaN. D˘ am un
exemplu de rezolvare a unei probleme proprii generalizate:
>> A = gallery(’triw’,3), B = magic(3)
A =
1 -1 -1
0 1 -1
0 0 1
B =
8 1 6
3 5 7
4 9 2
>> [V,D]=eig(A,B); V, eigvals = diag(D)’
V =
-1.0000 -1.0000 0.3526
0.4844 -0.4574 0.3867
0.2199 -0.2516 -1.0000
eigvals =
0.2751 0.0292 -0.3459
354 Valori s¸i vectori proprii
Se numes¸te descompunere cu valori singulare (singular value decomposition – SVD)
descompunerea
A = UΣV

, (9.6.1)
unde Σ este o matrice diagonal˘ a real˘ a, iar U s¸i V sunt matrice unitare (ortogonale ˆın cazul
real).
Exist˘ a dou˘ a variante de SVD: una complet˘ a, care se aplic˘ a unei matrice dreptunghiulare
m n s¸i care returneaz˘ a matricele U de dimensiune m m, Σ de dimensiune m n s¸i V
de dimensiune n n s¸i una economic˘ a sau redus˘ a ˆın care U are dimensiunea m n, Σ are
dimensiunea n n s¸i V are dimensiunea n n.
SVD este un instrument util de analiz˘ a a aplicat ¸iilor dintr-un spat ¸iu vectorial cu valori ˆın
alt spat ¸iu, posibil de dimensiune diferit˘ a. Dac˘ a A este p˘ atratic˘ a, simetric˘ a s¸i pozitiv definit˘ a
SVD (9.6.1) s¸i descompunerea cu valori proprii coincid. Spre deosebire de descompunerea
cu valori proprii, SVD exist˘ a ˆıntotdeauna.
Fie matricea
A =
9 4
6 8
2 7
Descompunerea sa SVD complet˘ a este
>> [U,S,V]=svd(A)
U =
-0.6105 0.7174 0.3355
-0.6646 -0.2336 -0.7098
-0.4308 -0.6563 0.6194
S =
14.9359 0
0 5.1883
0 0
V =
-0.6925 0.7214
-0.7214 -0.6925
iar cea redus˘ a
>> [U,S,V]=svd(A,0)
U =
-0.6105 0.7174
-0.6646 -0.2336
-0.4308 -0.6563
S =
14.9359 0
0 5.1883
9.6. Valori s¸i vectori proprii ˆın MATLAB 355
V =
-0.6925 0.7214
-0.7214 -0.6925
ˆ
In ambele cazuri se poate verifica c˘ a U
*
S
*
V’ este egal˘ a cu A, ˆın limita erorilor de rotunjire.
Probleme
Problema 9.1. Calculat ¸i valorile proprii ale matricei Hilbert pentru n = 10, 11, . . . , 20 s¸i
numerele de condit ¸ionare corespunz˘ atoare.
Problema 9.2. Matricele
P=gallery(’pascal’,12)
F=galery(’frank’,12)
au proprietatea c˘ a dac˘ a λ este valoare proprie, atunci s¸i 1/λ este de asemenea valoare proprie.
Cˆ at de bine conserv˘ a valorile proprii aceast˘ a proprietate? Utilizat ¸i condeig pentru a explica
comportarea diferit˘ a a celor dou˘ a matrice.
Problema 9.3. Care este cea mai mare valoare proprie a lui magic(n)? De ce?
Problema 9.4.
ˆ
Incercat ¸i secvent ¸a de comenzi:
n=100;
d=ones(n,1);
A=diag(d,1)+diag(d,-1);
e=eig(A);
plot(-n/2:n/2,e,’.’)
Recunoas¸tet ¸i curba rezultat˘ a? At ¸i putea g˘ asi o formul˘ a pentru valorile proprii ale acestei
matrice?
Problema 9.5. Studiat ¸i valorile s¸i vectorii proprii corespunz˘ atori ai matricei la care se ajunge
la problema 4.7. Reprezentat ¸i grafic valorile s¸i vectorii proprii pentru un N dat.
Problema 9.6. Fie T
N
matricea la care se ajunge la discretizarea cu diferent ¸e a ecuat ¸iei lui
Poisson (problema 4.8). Valorile ei proprii sunt
λ
j
= 2

1 −cos
πj
N + 1

,
iar vectorii proprii z
j
au componentele
z
j
(k) =

2
N + 1
sin
jkπ
N + 1
.
S˘ a se reprezinte grafic valorile s¸i vectorii proprii ai lui T
21
.
356 Valori s¸i vectori proprii
Problema 9.7. (a) Implementat ¸i metoda puterii (iterat ¸ia vectorial˘ a).
(b) Testat ¸i funct ¸ia de la punctul precedent pentru matricea s¸i vectorul init ¸ial
A =

¸
6 5 −5
2 6 −2
2 5 −1
¸

, x =

¸
−1
1
1
¸

.
(r) Aproximat ¸i raza spectral˘ a ρ(A) a matricei
A =

¸
2 0 −1
−2 −10 0
−1 −1 4
¸

,
utilizˆ and metoda puterii s¸i vectorul init ¸ial (1, 1, 1)
T
.
Problema 9.8. Determinat ¸i valorile proprii ale matricei

¸
¸
¸
190 66 −84 30
66 303 42 −36
336 −168 147 −112
30 −36 28 291
¸

folosind metoda QR cu dublu pas. S˘ a se compare rezultatul cu cel furnizat de eig.
Problema 9.9. Determinat ¸i descompunerile cu valori singulare ale urm˘ atoarelor matrice:

4 0 0
0 0 0
0 0 7
0 0 0
¸
¸
¸
¸

2 1

¸
5
4

.
CAPITOLUL 10
Rezolvarea numeric˘ a a ecuat ¸iilor diferent ¸iale ordinare
Cuprins
10.1. Ecuat ¸ii diferent ¸iale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358
10.2. Metode numerice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359
10.3. Descrierea local˘ a a metodelor cu un pas . . . . . . . . . . . . . . . . . 360
10.4. Exemple de metode cu un pas . . . . . . . . . . . . . . . . . . . . . . . 361
10.4.1. Metoda lui Euler . . . . . . . . . . . . . . . . . . . . . . . . . 361
10.4.2. Metoda dezvolt˘ arii Taylor . . . . . . . . . . . . . . . . . . . . 363
10.4.3. Metode de tip Euler ˆımbun˘ at˘ at ¸ite . . . . . . . . . . . . . . . . . 364
10.5. Metode Runge-Kutta . . . . . . . . . . . . . . . . . . . . . . . . . . . 365
10.6. Descrierea global˘ a a metodelor cu un pas . . . . . . . . . . . . . . . . . 370
10.6.1. Stabilitatea . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372
10.6.2. Convergent ¸a . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375
10.6.3. Asimptotica erorii globale . . . . . . . . . . . . . . . . . . . . . 376
10.7. Monitorizarea erorilor s¸i controlul pasului . . . . . . . . . . . . . . . . 379
10.7.1. Estimarea erorii globale . . . . . . . . . . . . . . . . . . . . . . 379
10.7.2. Estimarea erorii de trunchiere . . . . . . . . . . . . . . . . . . . 381
10.7.3. Controlul pasului . . . . . . . . . . . . . . . . . . . . . . . . . 384
10.8. Ecuat ¸ii diferent ¸iale ordinare ˆın MATLAB . . . . . . . . . . . . . . . . . 393
10.8.1. Rezolvitori . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393
10.8.2. Exemple non-stiff . . . . . . . . . . . . . . . . . . . . . . . . . 394
10.8.3. Opt ¸iuni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397
10.8.4. Ecuat ¸ii stiff . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399
10.8.5. Tratarea evenimentelor . . . . . . . . . . . . . . . . . . . . . . 406
357
358 Rezolvarea numeric˘ a a ecuat ¸iilor diferent ¸iale ordinare
10.8.6. Ecuat ¸ii implicite . . . . . . . . . . . . . . . . . . . . . . . . . . 414
Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415
10.1. Ecuat¸ii diferent¸iale
Consider˘ am problema cu valori init ¸iale (problema Cauchy
1
): s˘ a se determine o funct ¸ie
cu valori vectoriale y ∈ C
1
[a, b], y : [a, b] →R
d
, astfel ˆıncˆ at

dy
dx
= f(x, y), x ∈ [a, b]
y(a) = y
0
(10.1.1)
Vom evident ¸ia dou˘ a clase importante de astfel de probleme:
(i) pentru d = 1 avem o singur˘ a ecut ¸ie diferent ¸ial˘ a scalar˘ a de ordinul I

y

= f(x, y)
y(a) = y
0
(ii) pentru d > 1 avem un sistem de ecuat ¸ii diferent ¸iale ordinare de ordinul I

dy
i
dx
= f
i
(x, y
1
, y
2
, . . . , y
d
), i = 1, d
y
i
(a) = y
i
0
, i = 1, d
Reamintim urm˘ atoarea teorem˘ a clasic˘ a referitoare la existent ¸˘ a s¸i unicitate.
Teorema 10.1.1. Presupunem c˘ a f(x, y) este continu˘ a ˆın prima variabil˘ a pentru x ∈ [a, b]
s¸i ˆın raport cu cea de-a doua variabil˘ a satisface o condit ¸ie Lipschitz uniform˘ a
|f(x, y) −f(x, y

)| ≤ L|y −y

|, y, y

∈ R
d
, (10.1.2)
unde | | este o anumit˘ a norm˘ a vectorial˘ a. Atunci problema Cauchy (10.1.1) are o solut ¸ie
unic˘ a y(x), a ≤ x ≤ b, ∀ y
0
∈ R
d
. Mai mult, y(x) depinde continuu de a s¸i y
0
.
1
Augustin Louis Cauchy (1789-1857), matematician francez, consid-
erat p˘ arintele analizei moderne. A fundamentat solid analiza pe baza
conceptului riguros de limit˘ a. Este de asemenea creatorul analizei
complexe, ˆın care ,,formula lui Cauchy” ocup˘ a un loc central. Nu-
mele s˘ au este legat s¸i de contribut ¸ii de pionierat ˆın domeniul ecuat ¸iilor
diferent ¸iale s¸i cu derivate part ¸iale, ˆın particular legate de problema
existent ¸ei s¸i unicit˘ at ¸ii. La fel ca ˆın cazul multor mari matematicieni
din secolelele al optsprezecelea s¸i al nou˘ asprezecelea, lucr˘ arile sale
au tratat probleme din geometrie, algebr˘ a, teoria numerelor, mecanic˘ a,
dar s¸i fizic˘ a teoretic˘ a.
10.2. Metode numerice 359
Condit ¸ia Lipschitz (10.1.2) are singur loc dac˘ a toate funct ¸iile
∂f
i
∂y
j
(x, y), i, j = 1, d sunt
continue ˆın raport cu variabilele y s¸i sunt m˘ arginite pe [a, b] R
d
. Aceasta este situat ¸ia ˆın
cazul sistemelor de ecuat ¸ii diferent ¸iale ordinare liniare, unde
f
i
(x, y) =
d
¸
j=1
a
ij
(x)y
j
+b
i
(x), i = 1, d
s¸i a
ij
(x), b
i
(x) sunt funct ¸ii continue pe [a, b].
De multe ori condit ¸ia Lipschitz (10.1.2) are loc ˆıntr-o vecin˘ atate a lui x
0
astfel ˆıncˆ at y(x)
s˘ a r˘ amˆ an˘ a ˆıntr-un compact D.
10.2. Metode numerice
Se face distinct ¸ie ˆıntre metode de aproximare analitice s¸i metode discrete.
ˆ
In cadrul primei
categorii se ˆıncearc˘ a s˘ a se g˘ aseasc˘ a aproximat ¸ii y
a
(x) ≈ y(x) ale solut ¸iei exacte, valabile
pentru orice x ∈ [a, b]. Acestea de obicei au forma unei dezvolt˘ ari ˆıntr-o serie trunchiat˘ a, fie
dup˘ a puterile lui x, fie ˆın polinoame Cebˆ as¸ev, fie ˆıntr-un alt sistem de funct ¸ii de baz˘ a.
ˆ
In cazul
metodelor discrete, se ˆıncearc˘ a s˘ a se g˘ aseasc˘ a aproximat ¸ii u
n
∈ R
d
ale lui y(x
n
) pe o gril˘ a
de puncte x
n
∈ [a, b]. Abscisele x
n
pot fi predeterminate (de exemplu puncte echidistante pe
[a, b]), sau mai convenabil sunt generate dinamic ca parte a procesului de integrare.
Dac˘ a se dores¸te, se pot obt ¸ine din aceste aproximante discrete ¦u
n
¦ aproximante y
n
(x)
definite pe ˆıntreg intervalul [a, b], fie prin interpolare, sau mai natural, printr-un mecanism de
continuare cont ¸inut ˆın metoda de aproximare ˆıns˘ as¸i. Ne vom ocupa numai de metode discrete
cu un pas, adic˘ a metode ˆın care u
n+1
este determinat cunoscˆ and numai x
n
, u
n
s¸i pasul h
pentru a trece de la x
n
la x
n+1
= x
n
+ h.
ˆ
Intr-o metod˘ a cu k pas¸i (k > 1) este necesar˘ a
cunoas¸terea a k − 1 puncte adit ¸ionale (x
n−j
, u
n−j
), j = 1, 2, . . . , k − 1 pentru a obt ¸ine o
nou˘ a component˘ a a solut ¸iei.
Cˆ and se descrie o metod˘ a cu un pas este suficient s˘ a ar˘ at˘ am cum se trece de la un punct
generic (x, y), x ∈ [a, b], y ∈ R
d
la punctul urm˘ ator (x +h, y
next
). Ne vom referi la aceasta
ca fiind descrierea local˘ a a unei metode cu un pas. Aceasta include de asemenea o discut ¸ie a
preciziei locale, adic˘ a cˆ at de apropiat este y
next
de solut ¸ie ˆın x +h. O metod˘ a cu un pas pen-
tru rezolvarea problemei Cauchy (10.1.1) genereaz˘ a efectiv o funct ¸ie gril˘ a ¦u
n
¦, u
n
∈ R
d
,
pe o gril˘ a a = x
0
< x
1
< x
2
< < x
N−1
< x
N
= b ce acoper˘ a intervalul [a, b],
prin care se intent ¸ioneaz˘ a ca u
n
s˘ a aproximeze solut ¸ia exact˘ a y(x) ˆın x = x
n
. Punctul
(x
n+1
, u
n+1
) se obt ¸ine din punctul (x
n
, u
n
) aplicˆ and o metod˘ a cu un pas, avˆ and un pas
h
n
= x
n+1
− x
n
adecvat ales. Ne vom referi la aceasta ca descrierea global˘ a a unei metode
cu un pas. Chestiunile de interes aici sunt comportarea erorii globale u
n
− y(x
n
), ˆın partic-
ular stabilitatea, convergent ¸a s¸i alegerea lui h
n
pentru a trece de la un punct x
n
al grilei la
urm˘ atorul, x
n+1
= x
n
+h
n
.
360 Rezolvarea numeric˘ a a ecuat ¸iilor diferent ¸iale ordinare
10.3. Descrierea local˘ a a metodelor cu un pas
Dˆ andu-se un punct generic x ∈ [a, b], y ∈ R
d
, definim un pas al metodei cu un pas prin
y
next
= y +hΦ(x, y; h), h > 0. (10.3.1)
Funct ¸ia Φ : [a, b] R
d
R
+
→R
d
poate fi gˆ andit˘ a ca un increment aproximativ pe unitatea
de pas sau ca o aproximare a diferent ¸ei divizate s¸i ea defines¸te metoda.
ˆ
Impreun˘ a cu (10.3.1)
consider˘ am solut ¸ia u(t) a ecuat ¸iei diferent ¸iale (10.1.1) ce trece prin punctul (x, y), adic˘ a
problema local˘ a cu valoarea init ¸ial˘ a

du
dt
= f(t, u)
u(x) = y t ∈ [x, x +h]
(10.3.2)
Vom numi u(t) solut ¸ie de referint ¸˘ a. Se intent ¸ioneaz˘ a ca vectorul y
next
din (10.3.1) s˘ a aprox-
imeze u(x + h). Cu cˆ at succes se realizeaz˘ a aceasta se m˘ asoar˘ a prin eroarea local˘ a de
trunchiere, definit˘ a dup˘ a cum urmeaz˘ a.
Definit ¸ia 10.3.1. Eroarea de trunchiere a metodei Φ ˆın punctul (x, y) este definit˘ a prin
T(x, y; h) =
1
h
[y
next
−u(x +h)]. (10.3.3)
Eroarea de trunchiere este o funct ¸ie cu valori vectoriale de d + 2 variabile. Utilizˆ and
(10.3.1) s¸i (10.3.2) o putem scrie sub forma
T(x, y; h) = Φ(x, y; h) −
1
h
[u(x +h) −u(x)], (10.3.4)
ceea ce arat˘ a c˘ a T este diferent ¸a ˆıntre incrementul aproximativ s¸i cel exact pe unitatea de pas.
Definit ¸ia 10.3.2. Metoda Φ se numes¸te consistent˘ a dac˘ a
T(x, y; h) →0 cˆ and h →0, (10.3.5)
uniform pentru (x, y) ∈ [a, b] R
d
.
Conform lui (10.3.4) s¸i (10.3.3) avem consistent ¸˘ a dac˘ a s¸i numai dac˘ a
Φ(x, y; 0) = f(x, y), x ∈ [a, b], y ∈ R
d
. (10.3.6)
O descriere mai fin˘ a a preciziei locale este furnizat˘ a de definit ¸ia urm˘ atoare, bazat˘ a pe
conceptul de eroare de trunchiere.
Definit ¸ia 10.3.3. Spunemc˘ a metoda Φare ordinul p dac˘ a pentru o anumit˘ a norm˘ a vectorial˘ a
| |
|T(x, y; h)| ≤ Ch
p
, (10.3.7)
uniform pe [a, b] R
d
, cu constanta C independent˘ a de x, y s¸i h.
10.4. Exemple de metode cu un pas 361
Aceast˘ a proprietate se mai poate exprima sub forma
T(x, y; h) = O(h
p
), h →0. (10.3.8)
De notat c˘ a p > 0 implic˘ a consistent ¸a. De obicei p ∈ N

. El se numes¸te ordin exact, dac˘ a
(10.3.7) nu are loc pentru nici un p mai mare.
Definit ¸ia 10.3.4. O funct ¸ie τ : [a, b] R
d
→R
d
care satisface τ(x, y) ≡ 0 s¸i
T(x, y; h) = τ(x, y)h
p
+O(h
p+1
), h →0 (10.3.9)
se numes¸te funct ¸ie de eroare principal˘ a .
Funct ¸ia de eroare principal˘ a determin˘ a termenul principal (dominant) al erorii de
trunchiere. Num˘ arul p din (10.3.9) este ordinul exact al metodei deoarece τ ≡ 0.
Toate definit ¸iile precedente sunt formulate ˆın ideea c˘ a h > 0 este un num˘ ar mic. Cu cˆ at p
este mai mare, cu atˆ at metoda este mai precis˘ a.
10.4. Exemple de metode cu un pas
Unele dintre metodele cele mai vechi sunt motivate prin considerat ¸ii geometrice simple
asupra pantei definite de membrul drept al ecuat ¸iei diferent ¸iale.
ˆ
In aceast˘ a categorie intr˘ a
metoda lui Euler s¸i metoda lui Euler modificat˘ a. Alte metode mai precise s¸i mai sofisticate se
bazeaz˘ a pe dezvoltarea Taylor.
10.4.1. Metoda lui Euler
Euler a propus metoda sa ˆın 1768, la ˆınceputul istoriei calculului diferent ¸ial s¸i integral.
Ea const˘ a pur s¸i simplu ˆın a urma panta ˆın punctul generic (x, y) pe un interval de lungime h
y
next
= y +hf(x, y). (10.4.1)
(vezi figura 10.1).
Astfel Φ(x, y; h) = f(x, y) nu depinde de h s¸i conform lui (10.3.6) metoda este consis-
tent˘ a. Pentru eroarea de trunchiere avem conform lui (10.3.3)
T(x, y; h) = f(x, y) −
1
h
[u(x +h) −u(x)], (10.4.2)
unde u(t) este solut ¸ia de referint ¸˘ a definit˘ a de (10.3.2). Deoarece u

= f(x, u(x)) = f(x, y),
putem scrie, utilizˆ and formula lui Taylor
T(x, y; h) = u

(x) −
1
h
[u(x +h) −u(x)] = (10.4.3)
= u

(x) −
1
h
[u(x) +hu

(x) +
1
2
h
2
u
′′
(ξ) −u(x)] =
= −
1
2
hu
′′
(ξ), ξ ∈ (x, x +h),
362 Rezolvarea numeric˘ a a ecuat ¸iilor diferent ¸iale ordinare
x
0
x
1
x
2
x
3
x
4
Figura 10.1: Metoda lui Euler – solut ¸ia exact˘ a (linie continu˘ a) s¸i solut ¸ia aproximativ˘ a (linie
punctat˘ a)
presupunˆ and c˘ a u ∈ C
2
[x, x + h]. Aceasta este adev˘ arat˘ a dac˘ a f ∈ C
1
([a, b] R
d
).
Diferent ¸iind acum total (10.3.2) ˆın raport cu t s¸i f˘ acˆ and t = ξ, suntem condus¸i la
T(x, y; h) = −
1
2
h[f
x
+f
y
f](ξ, u(ξ)), (10.4.4)
unde f
x
este derivata part ¸ial˘ a a lui f ˆın raport cu x s¸i f
y
este jacobianul lui f ˆın raport cu
variabila y. Dac˘ a ˆın spiritul teoremei 10.1.1, presupunem c˘ a f s¸i toate derivatele sale part ¸iale
de ordinul I sunt uniform m˘ arginite ˆın [a, b] R
d
, exist˘ a o constant˘ a C, independent˘ a de x, y
s¸i h astfel ˆıncˆ at
|T(x, y; h)| ≤ Ch. (10.4.5)
Astfel, metoda lui Euler are ordinul p = 1. Dac˘ a facem aceeas¸i presupunere s¸i despre
derivatele part ¸iale de ordinul doi ale lui f avem
u
′′
(ξ) = u
′′
(x) +O(h)
s¸i de aceea din (10.4.3) rezult˘ a
T(x, y; h) = −
1
2
h[f
x
+f
y
f](x, y) +O(h
2
), h →0, (10.4.6)
ar˘ atˆ and c˘ a funct ¸ia eroare principal˘ a este dat˘ a de
τ(x, y) = −
1
2
[f
x
+f
y
f](x, y). (10.4.7)
Exceptˆ and situat ¸ia cˆ and f
x
+f
y
f ≡ 0, ordinul exact al metodei lui Euler este p = 1.
10.4. Exemple de metode cu un pas 363
10.4.2. Metoda dezvolt˘ arii Taylor
Am v˘ azut c˘ a metoda lui Euler se bazeaz˘ a pe trunchierea dezvolt˘ arii Taylor a solut ¸iei de
referint ¸˘ a dup˘ a cel de-al doilea termen. Este o idee natural˘ a, propus˘ a ˆınc˘ a de Euler, de a utiliza
mai mult ¸i termeni din dezvoltarea Taylor. Aceasta necesit˘ a calculul succesiv al ,,derivatelor
totale“ ale lui f,
f
[0]
(x, y) = f(x, y)
f
[k+1]
(x, y) = f
[k]
x
(x, y) +f
[k]
y
(x, y)f(x, y), k = 0, 1, 2, . . .
(10.4.8)
care determin˘ a derivatele succesive ale solut ¸iei de referint ¸˘ a u(t) a lui (10.3.2) ˆın virtutea
relat ¸iei
u
(k+1)
(t) = f
[k]
(t, u(t)), k = 0, 1, 2, . . . (10.4.9)
Acestea, pentru t = x devin
u
(k+1)
(x) = f
[k]
(x, y), k = 0, 1, 2, . . . (10.4.10)
s¸i sunt utilizate pentru a scrie dezvoltarea Taylor conform cu
y
next
= y +h
¸
f
[0]
(x, y) +
1
2
hf
[1]
(x, y) + +
1
p!
h
p−1
f
[p−1]
(x, y)

, (10.4.11)
adic˘ a
Φ(x, y; h) = f
[0]
(x, y) +
1
2
hf
[1]
(x, y) + +
1
p!
h
p−1
f
[p−1]
(x, y). (10.4.12)
Pentru eroarea de trunchiere, utilizˆ and (10.4.10) s¸i (10.4.12) s¸i presupunˆ and c˘ a f ∈
C
p
([a, b] R
d
) se obt ¸ine din teorema lui Taylor
T(x, y; h) = Φ(x, y; h) −
1
h
[u(x +h) −u(x)] =
= Φ(x, y; h) −
p−1
¸
k=0
u
(k+1)
(x)
h
k
(k + 1)!
− u
(p+1)
(ξ)
h
p
(p + 1)!
=
= −u
(p+1)
(ξ)
h
p
(p + 1)!
, ξ ∈ (x, x +h),
as¸a c˘ a
|T(x, y; h)| ≤
C
p
(p + 1)!
h
p
,
unde C
p
este o margine a derivatei totale de ordin p a lui f. Astfel metoda are ordinul exact
p (ˆın afar˘ a de cazul cˆ and f
[p]
(x, y) ≡ 0) s¸i funct ¸ia eroare principal˘ a este
τ(x, y) = −
1
(p + 1)!
f
[p]
(x, y). (10.4.13)
Necesitatea calculului multor derivate part ¸iale ˆın (10.4.8) a fost un factor descurajant ˆın
trecut, cˆ and se f˘ acea cu mˆ ana. Dar ˆın zilele noastre aceast˘ a sarcin˘ a poate c˘ adea ˆın seama
calculatorului, astfel ˆıncˆ at metoda a devenit din nou o opt ¸iune viabil˘ a.
364 Rezolvarea numeric˘ a a ecuat ¸iilor diferent ¸iale ordinare
10.4.3. Metode de tip Euler ˆımbun˘ at˘ at¸ite
Exist˘ a prea mult˘ a inert ¸ie ˆın metoda lui Euler: nu ar trebui urmat˘ a aceeas¸i pant˘ a pe ˆıntreg
intervalul de lungime h, deoarece de-a lungul acestui segment de dreapt˘ a panta definit˘ a de
ecuat ¸ia diferent ¸ial˘ a se schimb˘ a. Aceasta sugereaz˘ a mai multe alternative. De exemplu am
putea s˘ a reevalu˘ am panta la mijlocul segmentului – s˘ a lu˘ am pulsul ecuat ¸iei diferent ¸iale – s¸i
apoi s˘ a urm˘ am panta actualizat˘ a pe ˆıntreg intervalul (vezi figura 10.2). Formula este
f
y
next
x x+h
Figura 10.2: Metoda lui Euler modificat˘ a
y
next
= y +hf

x +
1
2
h, y +
1
2
hf(x, y)

(10.4.14)
sau
Φ(x, y; h) = f

x +
1
2
h, y +
1
2
hf(x, y)

. (10.4.15)
Observat ¸i ,,imbricarea” necesar˘ a aici. Pentru programarea acestei metode este indicat s˘ a se
scrie
K
1
(x, y) = f(x, y)
K
2
(x, y; h) = f

x +
1
2
h, u +
1
2
hK
1

y
next
= y +hK
2
(10.4.16)
Cu alte cuvinte, ˆıncerc˘ am s˘ a lu˘ am dou˘ a pante de test K
1
s¸i K
2
, una ˆın punctul init ¸ial s¸i a
doua ˆın apropiere s¸i apoi s-o alegem pe ultima ca pant˘ a final˘ a. Metoda se numes¸te metoda lui
Euler modificat˘ a.
Putem la fel de bine s˘ a lu˘ am o a doua pant˘ a de ˆıncercare (x+h, y +hf(x, y)), dar atunci,
deoarece trebuie s˘ a as¸tept˘ amprea mult ˆınainte de a reevalua panta, lu˘ am ca pant˘ a final˘ a media
10.5. Metode Runge-Kutta 365
celor dou˘ a pante
K
1
(x, y) = f(x, y)
K
2
(x, y; h) = f(x +h, y +hK
1
) (10.4.17)
y
next
= y +
1
2
h(K
1
+K
2
).
Aceast˘ a metod˘ a se numes¸te metoda lui Heun. Efectul ambelor modific˘ ari este cres¸terea or-
dinului cu 1, as¸a cum se va vedea ˆın continuare.
10.5. Metode Runge-Kutta
Se caut˘ a Φ de forma:
Φ(x, y; h) =
r
¸
s=1
α
s
K
s
K
1
(x, y) = f(x, y)
K
s
(x, y) = f

¸
x +µ
s
h, y +h
s−1
¸
j=1
λ
sj
K
j
¸

, s = 2, 3, . . . , r
(10.5.1)
Este natural s˘ a impunem ˆın (10.5.1) condit ¸iile
µ
s
=
s−1
¸
j=1
λ
sj
, s = 2, 3, . . . , r,
r
¸
s=1
α
s
= 1, (10.5.2)
unde primul set de condit ¸ii este echivalent cu
K
s
(x, y; h) = u

(x +µ
s
h) +O(h
2
), s ≥ 2,
iar a doua este condit ¸ia de consistent ¸˘ a (10.3.6) (adic˘ a Φ(x, y; h) = f(x, y)).
Vom numi metoda (10.5.1) metod˘ a Runge-Kutta explicit˘ a ˆın r stadii deoarece necesit˘ a r
evalu˘ ari ale funct ¸iei f din membrul drept al ecuat ¸iei diferent ¸iale. Condit ¸iile (10.5.2) conduc
la un sistem neliniar. Fie p

(r) ordinul maxim pentru o metod˘ a Runge-Kutta explicit˘ a ˆın r
stadii. Kutta
2
a ar˘ atat ˆın 1901 c˘ a
p

(r) = r, r = 1, 4.
2
Wilhelm Martin Kutta (1867-1944), matematician german, cu pre-
ocup˘ ari ˆın domeniul matematicilor aplicate. Cunoscut pentru lucr˘ arile
sale ˆın domeniul rezolv˘ arii numerice a ecuat ¸iilor diferent ¸iale ordinare,
a avut s¸i contribut ¸ii al aplicarea transform˘ arilor conforme la probleme
de hidro s¸i aerodinamic˘ a (formula Kutta-Jukovski).
366 Rezolvarea numeric˘ a a ecuat ¸iilor diferent ¸iale ordinare
Se pot considera metode Runge-Kutta implicite cu r stadii
Φ(x, y; h) =
r
¸
s=1
α
s
K
s
(x, y; h),
K
s
= f

¸
x +µ
s
h, y +
r
¸
j=1
λ
sj
K
j
¸

, s = 1, r,
(10.5.3)
ˆın care ultimele r ecuat ¸ii formeaz˘ a un sistem de ecuat ¸ii (ˆın general neliniar) cu necunos-
cutele K
1
, K
2
, . . . , K
r
. Deoarece fiecare dintre necunoscute este un vector din R
d
, ˆınainte
de construirea incrementului aproximativ Φ trebuie s˘ a rezolv˘ am un sistem de rd ecuat ¸ii cu
rd necunoscute. Metodele Runge-Kutta semiimplicite, la care limitele de sumare merg de la
j = 1 la j = s necesit˘ a un efort mai mic. Se ajunge la un sistem de r ecuat ¸ii, fiecare avˆ and
d necunoscute, componentele lui K
s
. Volumul considerabil de calcule necesar ˆın metodele
implicite s¸i semiimplicite se justific˘ a numai ˆın ˆımprejur˘ ari speciale, de exemplu la rezolvarea
problemelor stiff. Motivul este acela c˘ a metodele implicite pot avea ordin mai mare s¸i pro-
priet˘ at ¸i de stabilitate mai bune.
Parametrii se aleg astfel ca ordinul s˘ a fie cˆ at mai mare posibil.
Exemplul 10.5.1. Fie
Φ(x, y; h) = α
1
K
1

2
K
2
,
unde
K
1
(x, y) = f(x, y),
K
2
(x, y; h) = f(x +µ
2
h, y +λ
21
hK
1
),
λ
21
= µ
2
.
Avem deci 3 parametri, α
1
, α
2
, µ. Un mod sistematic de a determina ordinul maxim p este
de a dezvolta atˆ at Φ(x, y; h) cˆ at s¸i h
−1
[u(x + h) − u(x)] dup˘ a puterile lui h s¸i s˘ a impunem
coincident ¸a a cˆ at mai multor termeni posibili, f˘ ar˘ a a impune restrict ¸ii asupra lui f. Pentru a
dezvolta Φ avem nevoie de dezvoltarea Taylor a unei funct ¸ii vectoriale de mai multe variabile
f(x + ∆x, y + ∆y) = f +f
x
∆x + f
y
∆y+
+
1
2
[f
xx
(∆x)
2
+ 2f
xy
∆x∆y + (∆y)
T
f
yy
(∆y)] + ,
(10.5.4)
unde f
y
este jacobianul lui f, iar f
yy
= [f
i
yy
] este vectorul matricelor hessiene ale lui f.
ˆ
In formula de mai sus toate funct ¸iile s¸i derivatele part ¸iale se evalueaz˘ a ˆın (x, y). Punˆ and
∆x = µh, ∆y = µhf obt ¸inem
K
2
(x, y; h) = f +µh(f
x
+f
y
f)
+
1
2
µ
2
h
2
(f
xx
+ 2f
xy
f +f
T
f
yy
f) +O(h
3
)
(10.5.5)
1
h
[u(x +h) −u(x)] = u

(x) +
1
2
hu
′′
(x) +
1
6
u
′′′
(x) +O(h
3
), (10.5.6)
10.5. Metode Runge-Kutta 367
unde
u

(x) = f
u
′′
(x) = f
[1]
= f
x
+f
y
f
u
′′′
(x) = f
[2]
= f
[1]
x
+f
[1]
y
f = f
xx
+f
x
f
y
f +f
y
f
x
+ (f
xy
+ (f
y
f)
y
)f =
= f
xx
+ 2f
xy
f +f
T
f
yy
f +f
y
(f
x
+f
y
)f
s¸i unde ˆın ultima ecuat ¸ie s-a utilizat
(f
y
f)
y
f = f
T
f
yy
f +f
2
y
f.
Avem
T(x, y; h) = α
1
K
1

2
K
2

1
h
[u(x +h) −u(x)]
ˆın care ˆınlocuim (10.5.5) s¸i (10.5.6). G˘ asim
T(x, y; h) = (α
1

2
−1)f +

α
2
µ −
1
2

h(f
x
+f
y
f)+
+
1
2
h
2
¸
α
2
µ
2

1
3

(f
xx
+ 2f
xy
f +f
T
f
yy
f) −
1
3
f
y
(f
x
+ f
y
f)

+O(h
3
) (10.5.7)
Nu putem impune asupra coeficientul lui h
2
condit ¸ia ca el s˘ a fie zero decˆ at dac˘ a impunem
restrict ¸ii severe asupra lui f. Astfel ordinul maxim este 2 s¸i el se obt ¸ine pentru

α
1

2
= 1
α
2
µ =
1
2
Solut ¸ia
α
1
= 1 −α
2
µ =
1

2
depinde de un parametru, α
2
= 0, arbitrar. Pentru α
2
= 1 avem metoda lui Euler modificat˘ a,
iar pentru α
2
=
1
2
metoda lui Heun. ♦
Vom ment ¸iona formula Runge-Kutta clasic˘ a de ordin p = 4.
Φ(x, y; h) =
1
6
(K
1
+ 2K
2
+ 2K
3
+K
4
)
K
1
(x, y; h) = f(x, y)
K
2
(x, y; h) = f

x +
1
2
h, y +
1
2
hK
1

K
3
(x, y; h) = f

x +
1
2
h, y +
1
2
hK
2

K
4
(x, y; h) = f(x + h, y +hK
3
)
(10.5.8)
368 Rezolvarea numeric˘ a a ecuat ¸iilor diferent ¸iale ordinare
Dac˘ a f nu depinde de y, atunci metoda (10.5.8) coincide cu formula lui Simpson. Runge
3
a avut ideea de a generaliza formula lui Simpson la ecuat ¸ii diferent ¸iale ordinare. El a reus¸it
doar part ¸ial, formula sa avˆ and r = 4 s¸i p = 3. Metoda (10.5.8) a fost descoperit˘ a de Kutta ˆın
1901 printr-o c˘ autare sistematic˘ a.
ˆ
In cazul cˆ and f nu depinde de y, atunci (10.5.8) se reduce la formula lui Simpson. Metoda
Runge-Kutta clasic˘ a de ordinul 4 pentru o gril˘ a de N + 1 puncte echidistante este dat˘ a de
funct ¸ia MATLAB 10.1.
Sursa MATLAB 10.1 Metoda Runge-Kutta de ordinul 4
function [t,w]=RK4(f,tspan,alfa,N)
%RK4 metoda Runge-Kutta clasica cu noduri echidistante
%apel [t,w]=RK4(f,tspan,alfa,N)
%f - functia din membrul drept
%tspan - intervalul
%alfa - valoarea de pornire
%N - numarul de subintervale
%t - abscisele solutiei
%w - ordonatele
tc=tspan(1); wc=alfa(:);
h=(tspan(end)-tspan(1))/N;
t=tc; w=wc’;
for k=1:N
K1=f(tc,wc);
K2=f(tc+1/2
*
h,wc+1/2
*
h
*
K1);
K3=f(tc+1/2
*
h,wc+1/2
*
h
*
K2);
K4=f(tc+h, wc+h
*
K3);
wc=wc+h/6
*
(K1+2
*
K2+2
*
K3+K4);
tc=tc+h;
t=[t;tc]; w=[w;wc’];
end
Exemplul 10.5.2. Utilizˆ and metoda Runge-Kutta de ordinul 4 pentru a aproxima solut ¸ia
3
Carle David Tolm´ e Runge (1856-1927), matematician german, mem-
bru al s¸colii matematice de la G¨ otingen s¸i unul dintre pionierii
matematicii numerice. Este cunoscut pentru metodele Runge-Kutta
din domeniul rezolv˘ arii numerice a ecuat ¸iilor diferent ¸iale ordinare,
ale c˘ aror idei de baz˘ a i se datoreaz˘ a. A avut contribut ¸ii notabile s¸i ˆın
domeniul aproxim˘ arilor ˆın planul complex.
10.5. Metode Runge-Kutta 369
t
i
Aproximante Valori exacte Eroarea
0.0 1 1 0
0.1 1.00483750000 1.00483741804 8.19640e-008
0.2 1.01873090141 1.01873075308 1.48328e-007
0.3 1.04081842200 1.04081822068 2.01319e-007
0.4 1.07032028892 1.07032004604 2.42882e-007
0.5 1.10653093442 1.10653065971 2.74711e-007
0.6 1.14881193438 1.14881163609 2.98282e-007
0.7 1.19658561867 1.19658530379 3.14880e-007
0.8 1.24932928973 1.24932896412 3.25617e-007
0.9 1.30656999120 1.30656965974 3.31459e-007
1.0 1.36787977441 1.36787944117 3.33241e-007
Tabela 10.1: Rezultate numerice pentru exemplul 10.5.2
problemei Cauchy
y

= −y +t + 1, t ∈ [0, 1]
y(0) = 1,
cu h = 0.1, N = 10 s¸i t
i
= 0.1i se obt ¸in rezultatele din tabelul 10.1. Solut ¸ia exact˘ a este
y(t) = e
−t
+t, iar secvent ¸a de apel
[t,w]=rk4(@edex1,[0,1],1,10);
Funct ¸ia MATLAB
function df=edex1(t,y)
df=-y+t+1;
defines¸te membrul drept. ♦
Se obis¸nuies¸te s˘ a se asocieze unei metode Runge-Kutta cu r stadii (10.5.3) tabloul
µ
1
λ
11
λ
12
. . . λ
1r
µ
2
λ
21
λ
22
. . . λ
2r
.
.
.
.
.
.
.
.
. . . .
.
.
.
µ
r
λ
r1
λ
r2
. . . λ
rr
α
1
α
2
. . . α
r

ˆın form˘ a matricial˘ a
µ Λ
α
T

numit tabel˘ a Butcher. Pentru o metod˘ a explicit˘ a µ
1
= 0 s¸i Λ este triunghiular˘ a inferior,
cu zerouri pe diagonal˘ a. Putem asocia primelor r linii ale tabelei Butcher o formul˘ a de
cuadratur˘ a

µs
0
u(t) dt ≈
¸
r
j=1
λ
sj
u(µ
j
), s = 1, r s¸i ultimei linii formula de cuadratur˘ a

1
0
u(t) dt ≈
¸
r
s=1
α
s
u(µ
j
). Dac˘ a gradele de exactitate respective sunt d
s
= q
s
− 1,
1 ≤ s ≤ r + 1 (d
s
= ∞ dac˘ a µ
s
= 0 s¸i tot ¸i λ
sj
= 0) atunci din teorema lui Peano
rezult˘ a c˘ a ˆın reprezentarea restului apar derivatele de ordinul q
s
ale lui u s¸i deci punˆ and
370 Rezolvarea numeric˘ a a ecuat ¸iilor diferent ¸iale ordinare
u(t) = y

(x +th) se obt ¸ine
y(x +µ
s
h) −y(x)
h

r
¸
j=1
λ
sj
y

(x +µ
j
h) = O(h
qs
) , s = 1, r
s¸i
y(x +h) −y(x)
h

r
¸
s=1
α
s
y

(x +µ
s
h) = O(h
qr+1
) .
Pentru metoda Runge-Kutta clasic˘ a de ordinul patru (10.5.8) tabela Butcher este:
0 0
1
2
1
2
0
1
2
0
1
2
0
1 0 0 1 0
1
6
2
6
2
6
1
6
Sursa MATLAB 10.2 este un exemplu de implementare a unei metode Runge-Kutta cu pas
constant cˆ and se cunoas¸te tabela Butcher. Ultimul parametru al funct ¸iei Runge Kutta este
o procedur˘ a de int ¸ializare a tabelei Butcher care returneaz˘ a elementele µ, λ s¸i α ale tabelei
s¸i num˘ arul de stadii r al metodei. Pentru metoda Runge-Kutta clasic˘ a de ordinul 4 procedura
de init ¸ializare a tabelei Butcher este dat˘ a ˆın sursa 10.3.
Problema din exemplul 10.5.2 se poate rezolva cu secvent ¸a de apel
>>[t2,w2]=Runge_Kutta(@edex1,[0,1],1,10,@RK4tab);
De remarcat c˘ a funct ¸iile RK4 s¸i Runge Kutta funct ¸ioneaz˘ a atˆ at pentru ecuat ¸ii
diferent ¸iale scalare cˆ at s¸i pentru sisteme.
10.6. Descrierea global˘ a a metodelor cu un pas
Descrierea metodelor se face cel mai bine ˆın termeni de grile s¸i funct ¸ii gril˘ a.
O gril˘ a pe intervalul [a, b] este o mult ¸ime de puncte ¦x
n
¦
N
n=0
astfel ˆıncˆ at
a = x
0
< x
1
< x
2
< < x
N−1
< x
N
= b, (10.6.1)
cu lungimile grilei definite prin
h
n
= x
n+1
−x
n
, n = 0, 1, . . . , N −1. (10.6.2)
Finet ¸ea grilei este m˘ asurat˘ a prin
[h[ = max
0≤n≤N−1
h
n
. (10.6.3)
Vom utiliza litera h pentru a desemna colect ¸ia de lungimi h = ¦h
n
¦. Dac˘ a h
1
= h
2
= =
h
N
= (b−a)/N, grila se numes¸te uniform˘ a, iar ˆın caz contrar neuniform˘ a. Ofunct ¸ie cu valori
10.6. Descrierea global˘ a a metodelor cu un pas 371
Sursa MATLAB 10.2 Implementarea unei metode Runge-Kutta cu pas constant cu tabel˘ a
Butcher
function [x,y,nfev]=Runge_Kutta(f,tspan,y0,N,BT)
%RUNGE-KUTTA metoda Runge-Kutta cu pas constant
%apel [t,y,nfev]=Runge_Kutta(f,tspan,y0,N,BT)
%f -functia din membrul drept
%tspan - intervalul [a,b]
%y0 - valoarea de pornire
%N - numarul de pasi
%BT - procedura care furnizeaza tabela Butcher sub forma
% [lambda,alfa,mu,s] - s numarul de stadii
%t -abscisele
%y ordonatele componentelor
%nfev - numarul de evaluari de functii
[lambda,alfa,mu,r]=BT(); %initializare tabela Butcher
h=(tspan(end)-tspan(1))/N; %lungime pas
xc=tspan(1); yc=y0(:); x=xc; y=yc’; K=zeros(length(y0),r);
for k=1:N %iteratia RK
K(:,1)=f(xc,yc);
for i=2:r
K(:,i)=f(xc+mu(i)
*
h,yc+h
*
(K(:,1:i-1)
*
lambda(i,1:i-1)’));
end
yc=yc+h
*
(K
*
alfa);
xc=xc+h; %pregatesc iteratia urmatoare
x=[x;xc]; y=[y;yc’];
end if nargout==3
nfev=r
*
N;
end
Sursa MATLAB 10.3 Init ¸ializare tabel˘ a Butcher RK4
function [a,b,c,s]=RK4tab
%RK4 - tabela Butcher pentru metoda RK4 clasica
s=4;
a=zeros(s,s-1);
a(2:s,1:s-1)=[1/2,0,0; 0, 1/2,0;0,0,1];
b=[1,2,2,1]’/6;
c=sum(a’);
372 Rezolvarea numeric˘ a a ecuat ¸iilor diferent ¸iale ordinare
vectoriale v = ¦v
n
¦, v
n
∈ R
d
, definit˘ a pe grila (10.6.1) se numes¸te funct ¸ie gril˘ a. Astfel, v
n
este valoarea funct ¸iei v ˆın punctul x
n
al grilei. Orice funct ¸ie v(x) definit˘ a pe [a, b] induce o
funct ¸ie gril˘ a prin restrict ¸ie. Vom desemna mult ¸imea funct ¸iilor gril˘ a pe [a, b] prin Γ
h
[a, b] s¸i
pentru fiecare funct ¸ie gril˘ a v = ¦v
n
¦ definim norma sa prin
|v|

= max
0≤n≤N
|v
n
|, v ∈ Γ
h
[a, b]. (10.6.4)
O metod˘ a cu un pas – de fapt orice metod˘ a discret˘ a – este o metod˘ a care produce o funct ¸ie
gril˘ a u = ¦u
n
¦ astfel ˆıncˆ at u ≈ y, unde y = ¦y
n
¦ este funct ¸ia gril˘ a indus˘ a de solut ¸ia exact˘ a
a problemei Cauchy. Fie metoda
x
n+1
= x
n
+h
n
u
n+1
= u
n
+h
n
Φ(x
n
, u
n
; h
n
)
(10.6.5)
unde x
0
= a, u
0
= y
0
.
Pentru a clarifica analogia dintre (10.1.1) s¸i (10.6.5) vom introduce operatorii R s¸i R
h
care act ¸ioneaz˘ a pe C
1
[a, b] s¸i respectiv pe Γ
h
[a, b]. Aces¸tia sunt operatorii reziduali
(Rv)(x) := v

(x) −f(x, v(x)), v ∈ C
1
[a, b] (10.6.6)
(R
h
v)
n
:=
1
h
n
(v
n+1
−v
n
) −Φ(x
n
, v
n
; h
n
), n = 0, 1, . . . , N −1, (10.6.7)
unde v = ¦v
n
¦ ∈ Γ
h
[a, b]. (Funct ¸ia gril˘ a ¦(R
h
v)
n
¦ nu este definit˘ a pentru n = N, dar putem
lua arbitrar (R
h
v)
N
= (R
h
v)
N−1
). Atunci problema Cauchy s¸i analogul s˘ au discret (10.6.5)
se pot scrie transparent ca
Ry = 0 pe [a, b], y(a) = y
0
, (10.6.8)
R
h
u = 0 pe [a, b], u
0
= y
0
. (10.6.9)
De notat c˘ a operatorul rezidual (10.6.7) este strˆ ans ˆınrudit cu eroarea local˘ a de trunchiere
(10.3.3) cˆ and aplic˘ am operatorul ˆıntr-un punct (x
n
, y(x
n
)) pe traiectoria solut ¸iei exacte.
Atunci, ˆıntr-adev˘ ar, solut ¸ia de referint ¸˘ a u(t) coincide cu solut ¸ia y(t) s¸i
(R
h
y)
n
=
1
h
n
[y(x
n+1
) −y(x
n
)] −Φ(x
n
, y(x
n
); h
n
) =
= −T(x
n
, y(x
n
); h
n
). (10.6.10)
10.6.1. Stabilitatea
Stabilitatea este o proprietate numai a schemei numerice (10.6.5) s¸i nu are nimic de-a face
apriori cu puterea de aproximare. Ea caracterizeaz˘ a robustet ¸ea schemei ˆın raport cu perturbat ¸ii
mici. Totus¸i stabilitatea combinat˘ a cu consistent ¸a conduce la convergent ¸a solut ¸iei numerice
c˘ atre solut ¸ia adev˘ arat˘ a. Definim stabilitatea ˆın termeni de operatori reziduali discret ¸i R
h
ˆın
(10.6.7). Ca de obicei, presupunem c˘ a Φ(x, y; h) este definit˘ a pe [a, b] R
d
[0, h
0
], unde
h
0
> 0 este un num˘ ar pozitiv adecvat.
10.6. Descrierea global˘ a a metodelor cu un pas 373
Definit ¸ia 10.6.1. Metoda (10.6.5) se numes¸te stabil˘ a pe [a, b] dac˘ a exist˘ a o constant˘ a K > 0
care nu depinde de h astfel ˆıncˆ at pentru o gril˘ a arbitrar˘ a h pe [a, b] s¸i pentru dou˘ a funct ¸ii
gril˘ a arbitrare v, w ∈ Γ
h
[a, b] are loc
|v −w|

≤ K (|v
0
−w
0
|

+|R
h
v −R
h
w|

) , v, w ∈ Γ
h
[a, b] (10.6.11)
pentru orice h cu [h[ suficient de mic˘ a.
ˆ
In (10.6.11) norma este definit˘ a prin (10.6.4).
Vomnumi ˆın continuare (10.6.11) inegalitatea de stabilitate. Motivat ¸ia ei este urm˘ atoarea.
S˘ a presupunem c˘ a avem dou˘ a funct ¸ii gril˘ a u, w ce satisfac
R
h
u = 0, u
0
= y
0
(10.6.12)
R
h
w = ε, w
0
= y
0

0
, (10.6.13)
unde ε = ¦ε
n
¦ ∈ Γ
h
[a, b] este o funct ¸ie gril˘ a cu |ε
n
| mic s¸i |η
0
| este de asemenea mic.
Putem interpreta u ∈ Γ
h
[a, b] ca fiind rezultatul aplic˘ arii schemei numerice (10.6.5) cu pre-
cizie infinit˘ a, ˆın timp ce w ∈ Γ
h
[a, b] ar putea fi solut ¸ia lui (10.6.5) ˆın aritmetica ˆın virgul˘ a
flotant˘ a. Atunci, dac˘ a stabilitatea are loc, avem
|u −w|

≤ K(|η
0
|

+|ε|

), (10.6.14)
adic˘ a, schimbarea local˘ a ˆın u este de acelas¸i ordin de m˘ arime ca s¸i eroarea rezidual˘ a local˘ a
¦ε
n
¦ s¸i eroarea init ¸ial˘ a η
0
. Trebuie apreciat, totus¸i, c˘ a prima ecuat ¸ie ˆın (10.6.13) spune
w
n+1
−w
n
−h
n
Φ(x
n
, w
n
, h
n
) = h
n
ε
n
,
ˆınsemnˆ and c˘ a erorile de rotunjire trebuie s˘ a tind˘ a c˘ atre zero atunci cˆ and [h[ →∞.
Interesant, pentru stabilitate este necesar˘ a doar o condit ¸ie Lipschitz asupra lui Φ.
Teorema 10.6.2. Dac˘ a Φ(x, y; h) satisface o condit ¸ie Lipschitz ˆın raport cu variabila y,
|Φ(x, y; h) −Φ(x, y

; h)| ≤ M|y −y

| pe [a, b] R
d
[0, h
0
], (10.6.15)
atunci metoda (10.6.5) este stabil˘ a.
Vom preg˘ ati demonstrat ¸ia prin urm˘ atoarea lem˘ a util˘ a.
Lema 10.6.3. Fie ¦e
n
¦ o secvent ¸˘ a de numere, e
n
∈ R, ce satisface
e
n+1
≤ a
n
e
n
+b
n
, n = 0, 1, . . . , N −1 (10.6.16)
unde a
n
> 0 s¸i b
n
∈ R. Atunci
e
n
≤ E
n
, E
n
=

n−1
¸
k=0
a
k

e
0
+
n−1
¸
k=0

n−1
¸
ℓ=k+1
a

b
k
, n = 0, 1, . . . , N (10.6.17)
Adopt˘ amaici convent ¸ia uzual˘ a c˘ a un produs vid are valoarea 1 s¸i o sum˘ a vid˘ a are valoarea
0.
374 Rezolvarea numeric˘ a a ecuat ¸iilor diferent ¸iale ordinare
Demonstrat ¸ia lemei 10.6.3. Se verific˘ a c˘ a
E
n+1
= a
n
E
n
+b
n
, n = 0, 1, . . . , N −1, E
0
= e
0
.
Sc˘ azˆ and aceasta din (10.6.16) se obt ¸ine
e
n+1
−E
n+1
≤ a
n
(e
n
−E
n
), n = 0, 1, . . . , N −1.
Acum, e
0
−E
0
= 0, as¸a c˘ a e
1
−E
1
≤ 0, c˘ aci a
0
> 0. Prin induct ¸ie, mai general, e
n
−E
n
≤ 0,
deoarece a
n−1
> 0.
Demonstrat ¸ia teoremei 10.6.2. Fie h = ¦h
n
¦ o gril˘ a arbitrar˘ a pe [a, b] s¸i v, w ∈ Γ
h
[a, b]
dou˘ a funct ¸ii gril˘ a cu valori vectoriale arbitrare. Din definit ¸ia lui R
h
putem scrie
v
n+1
= v
n
+h
n
Φ(x
n
, v
n
; h
n
) +h
n
(R
h
v)
n
, n = 0, 1, . . . , N −1
s¸i similar pentru w
n+1
. Sc˘ azˆ andu-le obt ¸inem
v
n+1
−w
n+1
= v
n
−w
n
+h
n
[Φ(x
n
, v
n
; h
n
) −Φ(x
n
, w
n
; h
n
)]+
+h
n
[(R
h
v)
n
−(R
h
w)
n
], n = 0, 1, . . . , N −1. (10.6.18)
Definim acum
e
n
= |v
n
−w
n
|, d
n
= |(R
h
v)
n
−(R
h
w)
n
|, δ = |d
n
|

. (10.6.19)
Utilizˆ and inegalitatea triunghiului ˆın (10.6.18) s¸i condit ¸ia Lipschitz (10.6.19) pentru Φ
obt ¸inem
e
n+1
≤ (1 +h
n
M)e
n
+h
n
δ, n = 0, 1, . . . , N −1 (10.6.20)
Aceasta este inegalitatea (10.6.16) cu a
n
= 1+h
n
M, b
n
= h
n
δ. Deoarece k = 0, 1, . . . , n−
1, n ≤ N avem
n−1
¸
ℓ=k+1
a


n−1
¸
ℓ=0
a

=
N−1
¸
ℓ=0
(1 +h

M) ≤
N−1
¸
ℓ=0
e
h

M
= e
(h0+h1+···+hN−1)M
= e
(b−a)M
,
unde ˆın a doua inegalitate a fost utilizat˘ a inegalitatea clasic˘ a 1 + x ≤ e
x
, din lema 10.6.3 se
obt ¸ine c˘ a
e
n
≤ e
(b−a)M
e
0
+e
(b−a)M
n−1
¸
k=0
h
k
δ ≤
≤ e
(b−a)M
(e
0
+ (b −a)δ), n = 0, 1, . . . , N −1.
De aceea
|e|

= |v −w|

≤ e
(b−a)M
(|v
0
−w
0
| + (b −a)|R
h
v −R
h
w|

),
care este (10.6.11) cu K = e
(b−a)M
max¦1, b −a¦.
10.6. Descrierea global˘ a a metodelor cu un pas 375
Am demonstrat de fapt stabilitatea pentru orice [h[ ≤ h
0
, nu numai pentru h suficient de
mic.
Toate metodele cu un pas utilizate ˆın practic˘ a satisfac o condit ¸ie Lipschitz dac˘ a f satisface
o astfel de condit ¸ie s¸i constanta M pentru Φ poate fi aproximat˘ a cu ajutorul constantei L
pentru f. Este evident pentru metoda lui Euler s¸i nu este dificil de demonstrat pentru celelalte.
Este util de observat c˘ a Φ nu este nevoie s˘ a fie continu˘ a ˆın x; continuitatea pe port ¸iuni fiind
suficient˘ a atˆ at timp cˆ at (10.6.15) are loc pentru orice x ∈ [a, b], luˆ and limitele laterale ˆın
punctele de discontinuitate.
Vom folosi urm˘ atoarea aplicat ¸ie a lemei 10.6.3, relativ˘ a la o funct ¸ie gril˘ a v ∈ Γ
h
[a, b] ce
satisface
v
n+1
= v
n
+h
n
(A
n
v
n
+ b
n
), n = 0, 1, ..., N −1, (10.6.21)
unde A
n
∈ R
d×d
, b
n
∈ R
d
, s¸i h
n
este o grila arbitrar˘ a pe [a, b].
Lema 10.6.4. Presupunem c˘ a ˆın (10.6.21)
|A
n
| ≤ M, |b
n
| ≤ δ, n = 0, 1, . . . , N −1, (10.6.22)
unde constantele M s¸i δ nu depind de h. Atunci, exist ˘ a o constant˘ a K > 0, independent˘ a de
h, dar depinzˆ and de |v
0
|, astfel ˆıncˆ at
|v|

≤ K. (10.6.23)
Demonstrat ¸ie. Lemma rezult˘ a observˆ and c˘ a
|v
n+1
|| ≤ (1 +h
n
M)|v
n
| +h
n
δ, n = 0, 1, . . . , N −1,
care este chiar inegalitatea (10.6.19) din demonstrat ¸ia teoremei 10.6.2, deci
|v
n
| ≤ e
(b−a)M
[|v
0
| + (b −a)δ]. (10.6.24)

10.6.2. Convergent¸a
Stabilitatea este un concept puternic. Ea implic˘ a aproape imediat convergent ¸a s¸i este un
instrument de deducere a estim˘ arii erorii globale. Vomˆıncepe prin a defini precis ce ˆınseamn˘ a
convergent ¸a.
Definit ¸ia 10.6.5. Fie a = x
0
< x
1
< x
2
< < x
N
= b o gril˘ a pe [a, b] cu lungimea grilei
[h[ = max
1≤n≤N
(x
n
−x
n−1
). Fie u = ¦u
n
¦ o funct ¸ie gril˘ a definit˘ a aplicˆ and metoda (10.6.5) pe
[a, b] s¸i y = ¦y
n
¦ funct ¸ia gril˘ a indus˘ a de solut ¸ia exact˘ a a problemei Cauchy. Metoda (10.6.5)
se numes¸te convergent˘ a pe [a, b] dac˘ a are loc
|u −y|

→0, cˆ and [h[ →0 (10.6.25)
376 Rezolvarea numeric˘ a a ecuat ¸iilor diferent ¸iale ordinare
Teorema 10.6.6. Dac˘ a metoda (10.6.5) este consistent˘ a s¸i stabil˘ a pe [a, b], atunci ea con-
verge. Mai mult, dac˘ a Φ are ordinul p, atunci
|u −y|

= O([h[
p
) cˆ and [h[ →0. (10.6.26)
Demonstrat ¸ie. Din inegalitatea de stabilitate (10.6.11) aplicat˘ a funct ¸iilor gril˘ a v = u s¸i w =
y din definit ¸ia 10.6.5 avem pentru [h[ suficient de mic
|u −y|

≤ K(|u
0
−y(x
0
)| +|R
h
u −R
h
y|

) = K|R
h
y| (10.6.27)
deoarece u
0
= y(x
0
) s¸i R
h
u = 0 conform (10.6.5). Dar, conform lui (10.6.10)
|R
h
y|

= |T(, y; h)|

, (10.6.28)
unde T este eroare de trunchiere a metodei Φ. Din definit ¸ia consistent ¸ei
|T(, y; h)|

→0, cˆ and [h[ →0,
ceea ce demonstreaz˘ a prima parte a teoremei. Partea a doua rezult˘ a imediat din (10.6.27) s¸i
(10.6.28), deoarece ordinul p, prin definit ¸ie, ˆınseamn˘ a c˘ a
|T(, y; h)|

= O([h[
p
), cˆ and [h[ →0. (10.6.29)

10.6.3. Asimptotica erorii globale
Deoarece funct ¸ia eroare principal˘ a descrie contribut ¸ia termenului principal al erorii locale
de trunchiere este de interes s˘ a identific˘ am termenul dominant ˆın eroarea global˘ a u
n
−y(x
n
).
Pentru a simplifica lucrurile, vom presupune c˘ a avem o gril˘ a de lungime constant˘ a h, des¸i nu
este dificil s˘ a lucr˘ am cu o gril˘ a de lungime variabil˘ a de forma h
n
= ϑ(x
n
)h, unde ϑ(x) este
o funct ¸ie continu˘ a pe port ¸iuni s¸i 0 < ϑ(x) < θ pentru a ≤ x ≤ b. Astfel, consider˘ am c˘ a
metoda cu un pas avˆ and forma
x
n+1
= x
n
+h
u
n+1
= u
n
+hΦ(x
n
, u
n
; h); n = 0, 1, . . . , N −1
x
0
= a, u
0
= y
0
,
(10.6.30)
defines¸te o funct ¸ie gril˘ a u = ¦u
n
¦ pe o gril˘ a uniform˘ a pe [a, b]. Suntem interesat ¸i ˆın com-
portarea asimptotic˘ a a lui u
n
−y(x
n
) cˆ and h →0, unde y(x) este solut ¸ia exact˘ a a problemei
Cauchy

dy
dx
= f(x, y) x ∈ [a, b]
y(a) = y
0
(10.6.31)
Teorema 10.6.7. Presupunem c˘ a
(1) Φ(x, y, h) ∈ C
2

[a, b] R
d
[0, h
0
]

;
10.6. Descrierea global˘ a a metodelor cu un pas 377
(2) Φ este o metod˘ a de ordin p ≥ 1 ce admite o funct ¸ie de eroare principal˘ a τ(x, y) ∈
C

[a, b] R
d

;
(3) e(x) este solut ¸ia problemei Cauchy liniare

de
dx
= f
y
(x, y(x))e +τ(x, y(x)), a ≤ x ≤ b
e(a) = 0
(10.6.32)
Atunci, pentru n = 0, N,
u
n
−y(x
n
) = e(x
n
)h
p
+O(h
p+1
), cˆ and h →0. (10.6.33)
ˆ
Inainte de a demonstra teorema, facem urm˘ atoarele observat ¸ii:
1. Semnificat ¸ia precis˘ a a lui (10.6.33) este
|u −y −h
p
e|

= O(h
p+1
), cˆ and h →0,
unde u, y, e sunt funct ¸iile gril˘ a u = ¦u
n
¦, y = ¦y(x
n
)¦ s¸i e = ¦e(x
n
)¦.
2. Datorit˘ a consistent ¸ei Φ(x, y; 0) = f(x, y), condit ¸ia (1) din enunt ¸ implic˘ a f ∈
C
2
([a, b] R
d
), ceea ce este mai mult decˆ at suficient pentru a garanta existent ¸a s¸i
unicitatea solut ¸iei e(x) a lui (10.6.32) pe ˆıntreg intervalul [a, b].
3. Faptul c˘ a anumite componente, dar nu toate ale lui τ(x, y) ar putea s˘ a fie identic nule
nu implic˘ a faptul c˘ a e(x) se anuleaz˘ a de asemenea, deoarece (10.6.32) este un sistem
cuplat de ecuat ¸ii diferent ¸iale.
Demonstrat ¸ia teoremei 10.6.7. Vom ˆıncepe cu un calcul ajut˘ ator, estimarea lui
Φ(x
n
, u
n
; h) −Φ(x
n
, y(x
n
); h). (10.6.34)
Conform teoremei lui Taylor (pentru funct ¸ii de mai multe variabile), aplicat˘ a celei de-a i-a
componente a lui (10.6.34), avem
Φ
i
(x
n
, u
n
; h)−Φ
i
(x
n
, y(x
n
); h) =
d
¸
j=1
Φ
i
y
j (x
n
, y(x
n
); h)

u
j
n
−y
j
(x
n
)

+
1
2
d
¸
j,k=1
Φ
i
y
j
y
k (x
n
, u
n
; h)

u
j
n
−y
j
(x
n
)

u
k
n
−y
k
(x
n
)

,
(10.6.35)
unde u
n
este pe segmentul ce unes¸te u
n
s¸i y(x
n
). Utilizˆ and teorema lui Taylor ˆınc˘ a o dat˘ a, ˆın
variabila h, putem scrie
Φ
i
y
j (x
n
, y(x
n
); h) = Φ
i
y
j (x
n
, y(x
n
); 0) +hΦ
i
y
j
h

x
n
, y(x
n
);
¯
h

,
unde 0 <
¯
h < h. Deoarece, conform consistent ¸ei, Φ(x, y; 0) ≡ f(x, y) pe [a, b] R
d
, avem
Φ
i
y
j (x, y; 0) = f
i
y
j (x, y), x ∈ [a, b], y ∈ R
d
,
378 Rezolvarea numeric˘ a a ecuat ¸iilor diferent ¸iale ordinare
s¸i condit ¸ia (1) din ipotez˘ a ne permite s˘ a scriem
Φ
i
y
j (x
n
, y(x
n
); h) = f
i
y
j (x
n
, y(x
n
)) +O(h), h →0. (10.6.36)
Observˆ and acum c˘ a u
n
− y(x
n
) = O(h
p
), ˆın virtutea teoremei 10.6.6 s¸i utilizˆ and (10.6.36)
ˆın (10.6.35), obt ¸inem conform ipotezei (1),
Φ
i
(x
n
, u
n
; h) −Φ
i
(x
n
, y(x
n
); h) =
d
¸
j=1
f
i
y
j (x
n
, y(x
n
))

u
j
n
−y
j
(x
n
)

+
O(h
p+1
) +O(h
2p
).
Dar O(h
2p
) este de ordinul O(h
p+1
), c˘ aci p ≥ 1. Astfel, ˆın notat ¸ie vectorial˘ a,
Φ(x
n
, u
n
; h) −Φ(x
n
, y(x
n
); h) = f
y
(x
n
, y(x
n
)) [u
n
−y(x
n
)] +O(h
p+1
). (10.6.37)
Acum, pentru a evident ¸ia termenul dominant ˆın eroarea global˘ a, definim funct ¸ia gril˘ a r =
¦r
n
¦ prin
r = h
−p
(u −y). (10.6.38)
Atunci
1
h
(r
n+1
−r
n
) =
1
h

h
−p
(u
n+1
−y(x
n+1
)) −h
−p
(u
n
−y(x
n
))

=
= h
p
¸
1
h
(u
n+1
−u
n
) −
1
h
(y(x
n+1
) −y(x
n
))

=
= h
−p
¦Φ(x
n
, u
n
; h) −[Φ(x
n
, y(x
n
); h) −T(x
n
, y(x
n
); h)]¦ ,
unde amutilizat (10.6.30) s¸i relat ¸ia (10.6.10) pentru eroarea de trunchiere T. Deci, exprimˆ and
T cu ajutorul funct ¸iei eroare principal˘ a τ, obt ¸inem
1
h
(r
n+1
−r
n
) = h
−p

Φ(x
n
, u
n
; h) −Φ(x
n
, y(x
n
); h) +τ(x
n
, y(x
n
))h
p
+O(h
p+1
)

Pentru primii doi termeni din parantez˘ a utiliz˘ am (10.6.37) s¸i definit ¸ia lui r (10.6.38) pentru a
obt ¸ine
1
h
(r
n+1
− r
n
) = f
y
(x
n
, y(x
n
)) r
n
+τ(x
n
, y(x
n
)) +O(h), n = 0, N −1
r
0
= 0.
(10.6.39)
Acum punˆ and
g(x, y) := f
y
(x, y(x))y +τ(x, y(x)) (10.6.40)
putem interpreta (10.6.39) scriind

R
Euler,g
h
r

n
= ε
n
, n = 0, N −1, ε
n
= O(h),
10.7. Monitorizarea erorilor s¸i controlul pasului 379
unde R
Euler,g
h
este operatorul rezidual discret (10.6.7) corespunz˘ ator metodei lui Euler apli-
cat˘ a lui e

= g(x, e), e(a) = 0. Deoarece metoda lui Euler este stabil˘ a pe [a, b] s¸i g fiind
liniar˘ a ˆın y satisface o condit ¸ie Lipschitz uniform˘ a, avem conform inegalit˘ at ¸ii de stabilitate
(10.6.11)
|r −e|

= O(h),
s¸i conform lui (10.6.38)
|u −y −h
p
e|

= O(h
p+1
),
as¸a cum trebuia ar˘ atat.
10.7. Monitorizarea erorilor s¸i controlul pasului
Vom ˆıncerca s˘ a realiz˘ am monitorizarea erorilor globale, cel put ¸in asimptotic, im-
plementˆ and rezultatul din teorema 10.6.7. Aceasta necesit˘ a evaluarea matricei jacobiene
f
y
(x, y) de-a lungul sau ˆın apropierea traiectoriei solut ¸iei; acest lucru este natural, deoarece
f
y
(x, y) guverneaz˘ a, ˆıntr-o prim˘ a aproximare, efectul perturbat ¸iilor prin ecuat ¸ia diferent ¸ial˘ a
variat ¸ional˘ a (10.6.32).
ˆ
In aceast˘ a ecuat ¸ie tonul este dat de funct ¸ia de eroare principal˘ a, eval-
uat˘ a de-a lungul traiectoriei, as¸a c˘ a estimarea erorii locale de trunchiere (mai exact a funct ¸iei
de eroare principal˘ a) este de asemenea necesar˘ a ˆın aceast˘ a abordare. Pentru simplitate vom
presupune c˘ a grila are o lungime constant˘ a.
10.7.1. Estimarea erorii globale
Ideea estim˘ arii este de a integra ,,ecuat ¸ia variat ¸ional˘ a“ (10.6.32) ˆımpreun˘ a cu ecuat ¸ia prin-
cipal˘ a (10.6.31). Deoarece avem nevoie de e(x) ˆın (10.6.31) numai ˆın limita unei erori de
O(h) (orice termen de eroare O(h) din e(x
n
), ˆınmult ¸it cu h
p
, fiind absorbit de termenul
O(h
p−1
)), putem utiliza ˆın acest scop metoda lui Euler, care va furniza aproximat ¸ia dorit˘ a
v
n
≈ e(x
n
).
Teorema 10.7.1. Presupunem c˘ a
(1) Φ(x, y; h) ∈ C
2

[a, b] R
d
[0, h
0
]

;
(2) Φ este o metod˘ a de ordin p ≥ 1 ce admite o funct ¸ie de eroare principal˘ a τ(x, y) ∈
C
1

[a, b] R
d

;
(3) este disponibil˘ a o estimat ¸ie r(x, y; h) pentru funct ¸ia de eroare principal˘ a ce satisface
r(x, y; h) = τ(x, y) +O(h), h →0, (10.7.1)
uniform pe [a, b] R
d
;
(4) odat˘ a cu funct ¸ia gril˘ a u = ¦u
n
¦ gener˘ am funct ¸ia gril˘ a v = ¦v
n
¦ ˆın modul urm˘ ator
x
n+1
= x
n
+h;
u
n+1
= u
n
+hΦ(x
n
, u
n
; h)
v
n+1
= v
n
+h[f
y
(x
n
, v
n
)v
n
+r(x
n
, u
n
; h)]
x
0
= a, u
0
= y
0
, v
0
= 0.
(10.7.2)
380 Rezolvarea numeric˘ a a ecuat ¸iilor diferent ¸iale ordinare
Atunci pentru orice n = 0, N −1,
u
n
−y(x
n
) = v
n
h
p
+O(h
p+1
), cˆ and h →0. (10.7.3)
Demonstrat ¸ie. Demonstat ¸ia ˆıncepe cu stabilirea urm˘ atoarelor estim˘ ari
f
y
(x
n
, u
n
) = f
y
(x
n
, y(x
n
)) + O(h), (10.7.4)
r(x
n
, u
n
; h) = τ(x
n
, y(x
n
)) +O(h). (10.7.5)
Din ipoteza (1) observ˘ am pe baza consistent ¸ei f(x, y) = Φ(x, y; 0) c˘ a f(x, y) ∈
C
2

[a, b] R
d

. T¸ inˆ and cont de teorema 10.6.6, avem u
n
= y(x
n
) +O(h
p
), s¸i deci
f
y
(x
n
, u
n
) = f
y
(x
n
, y
n
) +O(h
p
),
relat ¸ie ce implic˘ a (10.7.4), deoarece p ≥ 1.
ˆ
In continuare, deoarece τ(x, y) ∈
C
1

[a, b] R
d

, conform ipotezei (2) avem
τ(x
n
, u
n
) = τ(x
n
, y(x
n
)) +τ
y
(x
n
, ¯ u
n
)(u
n
−y(x
n
))
= τ(x
n
, y(x
n
)) +O(h
p
)
s¸i aplicˆ and apoi ipoteza (3) obt ¸inem
r(x
n
, u
n
; h) = τ(x
n
, u
n
) +O(h) = τ(x
n
, y(x
n
)) + O(h
p
) +O(h),
din care rezult˘ a imediat (10.7.5).
Fie (a se compara cu (10.6.40))
g(x, y) = f
y
(x, y(x))y +τ(x, y(x)). (10.7.6)
Ecuat ¸ia pentru v
n+1
ˆın (10.7.2) are forma
v
n+1
= v
n
+h(A
n
v
n
+b
n
),
unde A
n
sunt matrice m˘ arginite s¸i b
n
sunt vectori m˘ arginit ¸i. Conform lemei 10.6.6, avem
m˘ arginirea lui v
n
,
v
n
= O(1), h →0. (10.7.7)
ˆ
Inlocuind (10.7.4) s¸i (10.7.5) ˆın ecuat ¸ia lui v
n+1
s¸i t ¸inˆ and cont de (10.7.7) obt ¸inem
v
n+1
= v
n
+h[f
y
(x
n
, y(x
n
))v
n
+τ(x
n
, y(x
n
)) +O(h)]
= v
n
+hg(x
n
, v
n
) +O(h
2
).
Astfel, cu notat ¸ia utilizat˘ a ˆın demonstrat ¸ia teoremei 10.6.7

R
Euler,g
h
v

n
= O(h), v
0
= 0.
Deoarece metoda lui Euler este stabil˘ a,
v
n
−e(x
n
) = O(h),
10.7. Monitorizarea erorilor s¸i controlul pasului 381
unde e(x) este, ca mai ˆınainte, solut ¸ia ecuat ¸iei
e

= g(x, e)
e(a) = 0
Deci, conform lui (10.6.33)
u
n
−y(x
n
) = e(x
n
)h
p
+O(h
p+1
).

10.7.2. Estimarea erorii de trunchiere
Pentru a aplica teorema 10.7.1 avem nevoie de estim˘ ari r(x, y; h) ale funct ¸iei de eroare
principal˘ a τ(x, y) care s˘ a aib˘ a precizia O(h). Vom descrie dou˘ a dintre ele, ˆın ordinea
cresc˘ atoare a eficient ¸ei.
Extrapolare Richardson la zero
Aceasta funct ¸ioneaz˘ a pentru orice metod˘ a cu un pas Φ, dar de obicei este considerat˘ a prea
costisitoare. Dac˘ a Φ are ordinul p, procedura este urm˘ atoarea
y
h
= y +hΦ(x, y; h),
y
h/2
= y +
1
2

x, y;
1
2
h

,
y

h
= y
h/2
+
1
2

x +
1
2
h, y
h/2
;
1
2
h

,
r(x, y; h) =
1
1 −2
−p
1
h
p+1
(y
h
−y

h
) .
(10.7.8)
De notat c˘ a y

h
este rezultatul aplic˘ arii lui Φ pentru doi pas¸i consecutivi, fiecare de lungime
h/2, pe cˆ at˘ a vreme y
h
este rezultatul aplic˘ arii lui Φ pentru un pas de lungime h.
S˘ a verific˘ am acum c˘ a r(x, y; h) dat˘ a de grupul de formule (10.7.8) este o estimat ¸ie ac-
ceptabil˘ a. Pentru aceasta trebuie s˘ a presupunem c˘ a τ(x, y) ∈ C
1

[a, b] R
d

. Conform lui
(10.3.4) s¸i (10.3.8), utilizˆ and solut ¸ia de referint ¸˘ a u(t) ce trece prin (x, y) avem
Φ(x, y; h) =
1
h
[u(x +h) −u(x)] +τ(x, y)h
p
+O(h
p+1
). (10.7.9)
Mai mult,
1
h
(y
h
−y

h
) =
1
h
(y
h
−y
h/2
) + Φ(x, y; h) −
1
2

x +
1
2
h, y
h/2
;
1
2
h

= Φ(x, y; h) −
1
2
Φ

x, y;
1
2
h


1
2

x +
1
2
h, y
h/2
;
1
2
h

.
382 Rezolvarea numeric˘ a a ecuat ¸iilor diferent ¸iale ordinare
Aplicˆ and (10.7.9) fiec˘ arui termen din membrul drept g˘ asim
1
h
(y
h
−y

h
) =
1
h
[u(x +h) −u(x)] +τ(x, y)h
p
+O(h
p+1
)

1
2
1
h/2
¸
u

x +
1
2
h

−u(x)


1
2
τ(x, y)

1
2
h
p

+O(h
p+1
)

1
2
1
h/2
¸
u (x +h) −u

x +
1
2
h


1
2
τ

x +
1
2
h, y +O(h)

1
2
h
p

+O(h
p+1
) = τ(x, y)(1 −2
−p
)h
p
+O(h
p+1
).
ˆ
In consecint ¸˘ a
1
1 −2
−p
1
h
(y
h
−y

h
) = τ(x, y)h
p
+O(h
p+1
), (10.7.10)
as¸a cum s-a dorit.
Sc˘ azˆ and (10.7.10) din (10.7.9), rezult˘ a incidental c˘ a
Φ

(x, y; h) := Φ(x, y; h) −
1
1 − 2
−p
1
h
(y
h
−y

h
) (10.7.11)
defines¸te o metod˘ a cu un pas de ordin p + 1.
Procedura (10.7.8) este costisitoare. Pentru un proces Runge-Kutta de ordinul 4 sunt nece-
sare ˆın total 11 evalu˘ ari ale lui f pe pas, aproape de trei ori mai mult decˆ at pentru un pas
Runge-Kutta. De aceea, extrapolarea Richardson este utilizat˘ a numai dup˘ a fiecare doi pas¸i ai
lui Φ, adic˘ a se continu˘ a ˆın conformitate cu formulele
y
h
= y +hΦ(x, y; h), (10.7.12)
y

2h
= y
h
+hΦ(x +h, y
h
; h)
y
2h
= y + 2hΦ(x, y; 2h).
Atunci (10.7.10) ne d˘ a
1
2(2
p
−1)
1
h
p+1
(y
2h
−y

2h
) = τ(x, y) +O(h), (10.7.13)
as¸a c˘ a expresia din membrul drept este un estimator acceptabil al lui r(x, y; h). Dac˘ a cei doi
pas¸i din (10.7.12) conduc la o precizie acceptabil˘ a (a se vedea subsect ¸iunea 10.7.3), atunci
pentru un proces Runge-Kutta de ordinul 4 procedura necesit˘ a numai trei evalu˘ ari adit ¸ionale
ale lui f, deoarece y
h
s¸i y

2h
trebuie calculat oricum. Vom vedea c˘ a exist˘ a scheme mai efi-
ciente.
Metode scufundate (imbricate)
Ideea de baz˘ a a aceste abord˘ ari este urm˘ atoarea: se consider˘ a o metod˘ a Φ de ordinul p s¸i
o metod˘ a Φ

de ordinul p

= p + 1 s¸i se defines¸te
r(x, y; h) =
1
h
p
[Φ(x, y; h) −Φ

(x, y; h)]. (10.7.14)
10.7. Monitorizarea erorilor s¸i controlul pasului 383
Acesta este un estimator acceptabil, as¸a cum rezult˘ a sc˘ azˆ and relat ¸iile
Φ(x, y; h) −
1
h
[u(x +h) −u(x)] = τ(x, y)h
p
+O(h
p+1
)
Φ

(x, y; h) −
1
h
[u(x +h) −u(x)] = O(h
p+1
)
s¸i ˆımp˘ art ¸ind rezultatul cu h
p
.
Cheia problemei este de a face aceast˘ a procedur˘ a eficient˘ a. Urmˆ and o idee a lui Fehlberg,
putem ˆıncerca s˘ a facem aceasta incluzˆ and un proces Runge-Kutta de ordinul p ˆın altul de
ordin p + 1. Mai concret, fie Φ o metod˘ a Runge-Kutta explicit˘ a ˆın r stadii
K
1
(x, y) = f(x, y)
K
s
(x, y; h) = f

¸
x +µ
s
h; y +h
s−1
¸
j=1
λ
sj
K
j
¸

, s = 2, 3, . . . , r
Φ(x, y; h) =
r
¸
s=1
α
s
K
s
Atunci pentru Φ

alegem un proces similar ˆın r

-stadii, cu r

> r, astfel ˆıncˆ at
µ

s
= µ
s
, λ

sj
= λ
sj
, pentru s = 2, 3, . . . , r.
Estimarea (10.7.14) cost˘ a atunci din r

−r evalu˘ ari suplimentare ale lui f. Dac˘ a r

= r + 1
putem ˆınc˘ a s˘ a mai facem economii de evalu˘ ari suplimentare, selectˆ and (dac˘ a este posibil)
µ

r
= 1, λ
r

j
= α
j
pentru j = 1, r

−1 (r

= r + 1) (10.7.15)
Atunci, ˆıntr-adev˘ ar, K

r
va fi identic cu K
1
pentru pasul urm˘ ator.
Perechi de astfel de formule Runge-Kutta imbricate (p, p+1) au fost dezvoltate la sfˆ ars¸itul
anilor ’60 de E. Fehlberg[18, 19]. Este un grad considerabil de libertate ˆın alegerea aces-
tor parametri. Alegerile lui Fehlberg au fost ghidate de ˆıncercarea de a reduce m˘ arimea
coeficient ¸ilor tututor derivatelor part ¸iale care intervin ˆın funct ¸ia de eroare principal˘ a τ(x, y)
a lui Φ. El a reus¸it s˘ a obt ¸in˘ a pentru parametrii p, r, r

valorile date ˆın tabela 10.2
p 3 4 5 6 7 8
r 4 5 6 8 11 15
r

5 6 8 10 13 17
Tabela 10.2: Formule Runge-Kutta imbricate
Pentru procesul de ordinul 3 (s¸i numai pentru acesta) se pot alege parametrii astfel ca s˘ a
aib˘ a loc s¸i (10.7.15).
384 Rezolvarea numeric˘ a a ecuat ¸iilor diferent ¸iale ordinare
10.7.3. Controlul pasului
Orice estimare r(x, y; h) a funct ¸iei de eroare principal˘ a τ(x, y) implic˘ a o estimare
h
p
r(x, y; h) = T(x, y; h) +O(h
p+1
) (10.7.16)
a erorii de trunchiere, care poate fi utilizat˘ a pentru a monitoriza eroarea local˘ a de trunchiere
ˆın timpul procesului de integrare. Totus¸i, trebuie avut ˆın vedere faptul c˘ a eroarea local˘ a de
trunchiere este chiar diferit˘ a de eroarea global˘ a, eroare pe care vrem de fapt s˘ a o control˘ am.
Pentru a obt ¸ine o mai bun˘ a cunoas¸tere a relat ¸iei dintre aceste dou˘ a erori reamintim teo-
rema urm˘ atoare, care cuantific˘ a continuitatea solut ¸iei problemei Cauchy ˆın raport cu valorile
init ¸iale.
Teorema 10.7.2. Fie f(x, y) continu˘ a ˆın x ∈ [a, b] s¸i care satisface o condit ¸ie Lipschitz cu
constanta L, uniform pe [a, b] R, adic˘ a
|f(x, y) −f(x, y

)| ≤ L|y −y

| .
Atunci problema Cauchy
dy
dx
= f(x, y), x ∈ [a, b],
y(c) = y
c
(10.7.17)
are o solut ¸ie unic˘ a pentru orice c ∈ [a, b] s¸i orice y
c
∈ R
d
. Fie y(x, s) s¸i y(x; s

) solut ¸iile lui
(10.7.17) ce corespund lui y
c
= s s¸i respectiv y
c
= s

. Atunci, pentru orice norm˘ a vectorial˘ a
||,
|y(x; s) −y(x; s

)| ≤ e
L|x−c|
|s −s

| . (10.7.18)
Rezolvarea numeric˘ a a problemei (10.6.31) printr-o metod˘ a cu un pas (nu neap˘ arat con-
stant) ˆınseamn˘ a ˆın realitate c˘ a se urm˘ ares¸te o secvent ¸˘ a de ,,piste ale solut ¸iei“ (expresia este
din [22]) prin care ˆın fiecare punct al grilei se sare de la o pist˘ a la urm˘ atoarea cu o can-
titate egal˘ a cu eroarea de trunchiere ˆın x
n
(vezi figura 10.3). Aceasta rezult˘ a din definit ¸ia
erorii de trunchiere, solut ¸ia de referint ¸˘ a fiind una din pistele solut ¸iei. Mai concret, a n-a pist˘ a,
n = 0, N, este dat˘ a de solut ¸ia problemei Cauchy
dv
n
dx
= f(x, v
n
), x ∈ [x
n
, b], (10.7.19)
v
n
(x
n
) = u
n
,
s¸i
u
n+1
= v(x
n+1
) +h
n
T(x
n
, u
n
; h
n
), n = 0, N −1. (10.7.20)
Deoarece conform lui (10.7.19) avem u
n+1
= v
n+1
(x
n+1
), putem aplica teorema 10.7.2
solut ¸iilor v
n+1
s¸i v
n
, luˆ and c = x
n+1
, s = u
n+1
, s

= u
n+1
− h
n
T(x
n
, u
n
; h
n
) (conform
lui (10.7.20)) s¸i astfel obt ¸inem
|v
n+1
(x) −v
n
(x)| ≤ h
n
e
L|x−xn|
|T(x
n
, u
n
; h
n
)| , n = 0, N −1. (10.7.21)
10.7. Monitorizarea erorilor s¸i controlul pasului 385
a=x
0
x
1
x
2
x
3
x
N−1
x
N
=b
∫ ∫
∫ ∫
h
0
T
0
h
1
T
1
h
2
T
2
Figura 10.3: Acumularea erorilor ˆıntr-o metod˘ a cu un pas
Acum
N−1
¸
n=0
[v
n+1
(x) −v
n
(x)] = v
N
(x) −v
0
(x) = v
N
(x) −y(x), (10.7.22)
s¸i deoarece v
N
(x
N
) = u
N
, luˆ and x = x
N
, obt ¸inem din (10.7.21) s¸i (10.7.22) c˘ a
|u
N
−y(x
N
)| ≤
N−1
¸
n=0
|v
n+1
(x
N
) −v
n
(x
N
)|

N−1
¸
n=0
h
n
e
L|xN−xn+1|
|T(x
n
, u
n
; h
n
)| .
De aceeea, dac˘ a ne asigur˘ am c˘ a
|T(x
n
, u
n
; h
n
)| ≤ ε
T
, n = 0, N −1, (10.7.23)
atunci
|u
N
−y(x
N
)| ≤ ε
T
N−1
¸
n=0
(x
n+1
−x
n
)e
L|xN−xn+1|
.
Interpretˆ and suma din dreapta ca o sum˘ a Riemann pentru o integral˘ a definit˘ a, obt ¸inemˆın final
aproximarea
|u
N
−y(x
N
)| ≤ ε
T
b

a
e
L(b−x)
dx =
ε
T
L

e
L(b−a)
−1

.
386 Rezolvarea numeric˘ a a ecuat ¸iilor diferent ¸iale ordinare
Astfel, cunoas¸terea unei estim˘ ari pentru L ne va permite s˘ a g˘ asim un ε
T
ε
T
=
L
e
L(b−a)
−1
ε, (10.7.24)
care s˘ a ne garanteze o eroare |u
N
−y(x
N
)| ≤ ε. Ceea ce are loc pentru ˆıntreaga gril˘ a pe
[a, b] are loc, desigur, pentru orice gril˘ a pe subintervalul [a, x], a ≤ x ≤ b. Astfel, ˆın principiu,
dˆ andu-se precizia dorit˘ a ε pentru solut ¸ia y(x), putem determina un ,,nivel de tolerant ¸˘ a“ ε
T
(din (10.7.24)) s¸i putem asigura precizia dorit˘ a p˘ astrˆ and eroarea local˘ a de trunchiere sub
limita ε
T
(a se compara cu (10.7.23)). De notat c˘ a dac˘ a L → 0, avem ε
T
→ ε/(b − a).
Aceast˘ a valoare limit˘ a pentru ε
T
ar fi adecvat˘ a pentru o problem˘ a de cuadratur˘ a, dar nu
pentru o ecuat ¸ie diferent ¸ial˘ a veritabil˘ a, unde ε
T
, ˆın general, trebuie ales mult mai mic decˆ at
eroarea final˘ a ε.
Considerat ¸ii ca acestea motiveaz˘ a urm˘ atorul mecanism de control al pasului: fiecare pas
de integrare (de la x
n
la x
n+1
= x
n
+h
n
) const˘ a din urm˘ atoarele p˘ art ¸i:
1. Estim˘ am h
n
.
2. Se calculeaz˘ a u
n+1
= u
n
+h
n
Φ(x
n
, u
n
; h
n
) s¸i r(x
n
, u
n
; h
n
).
3. Se testeaz˘ a dac˘ a h
p
n
|r(x
n
, u
n
; h
n
)| ≤ ε
T
. Dac˘ a testul este satisf˘ acut se trece la pasul
urm˘ ator. Dac˘ a nu, repet˘ am pasul cu un h
n
mai mic, pˆ an˘ a cˆ and testul este satisf˘ acut.
Pentru a estima h
n
, presupunemˆıntˆ ai c˘ a n ≥ 1, astfel ca estimatorul din pasul precedent,
r(x
n−1
, u
n−1
; h
n−1
) (sau cel put ¸in norma sa) s˘ a fie disponibil. Atunci, neglijˆ and termenul
O(h),
|τ(x
n−1
, u
n−1
| ≈ |r(x
n−1
, u
n−1
; h
n−1
)|,
s¸i deoarece τ(x
n
, u
n
) ≈ τ(x
n−1
, u
n−1
), ˆın plus.
|τ(x
n
, u
n
)| ≈ |r(x
n−1
, u
n−1
; h
n−1
)|.
Ceea ce dorim este
|τ(x
n
, u
n
)|h
p
n
≈ θε
T
,
unde θ este un factor de sigurant ¸˘ a (s˘ a zicem θ = 0.8). Eliminˆ and τ(x
n
, u
n
) g˘ asim
h
n

θε
T
|r(x
n−1
, u
n−1
, h
n−1
)|

1/p
.
De notat c˘ a din pasul precedent avem
h
p
n−1
|r(x
n−1
, u
n−1
; h
n−1
)| ≤ ε
T
,
as¸a c˘ a
h
n
≥ θ
1/p
h
n−1
s¸i tendint ¸a este de cres¸tere a pasului.
10.7. Monitorizarea erorilor s¸i controlul pasului 387
Dac˘ a n = 0, proced˘ am la fel, alegˆ and o valoare init ¸ial˘ a h
(0)
0
a lui h
0
s¸i calcul˘ am
r(x
0
, y
0
; h
(0)
0
) pentru a obt ¸ine
h
(1)
0
=

θε
T
r(x
0
, y
0
; h
(0)
0
)
¸
1/p
.
Procesul se poate repeta odat˘ a sau de dou˘ a ori pentru a obt ¸ine estimarea final˘ a a lui h
0
s¸i
r(x
0
, y
0
; h
(0)
0
).
Pentru o descriere sintetic˘ a a metodelor Runge-Kutta cu pas variabil tabela Butcher se
completeaz˘ a cu o linie suplimentar˘ a care serves¸te la calculul lui Φ

(s¸i deci a lui r(x, y; h)):
µ
1
λ
11
λ
12
. . . λ
1r
µ
2
λ
21
λ
22
. . . λ
2r
.
.
.
.
.
.
.
.
. . . .
.
.
.
µ
r
λ
r1
λ
r2
. . . λ
rr
α
1
α
2
. . . α
r
α

1
α

2
α

r
α

r+1
Ca exemplu, ˆın tabela 10.3 d˘ am tabela Butcher pentru o metod˘ a de ordinul 2-3. Pentru
deducerea elementelor tabelei a se consulta [65, paginile 451–452].
µ
j
λ
ij
0 0
1
4
1
4
0
27
40

189
800
729
800
0
1
214
891
1
33
650
891
0
α
i
214
891
1
33
650
891
0
α

i
533
2106
0
800
1053

1
78
Tabela 10.3: O pereche 2-3
Tabela 10.4 este tabela Butcher pentru metoda Bogacki-Shampine [7]. Ea st˘ a la baza
rezolvitorului ode23 din MATLAB.
Un alt exemplu important este DOPRI5 sau RK5(4)7FM, o pereche cu ordinele 4-5 s¸i cu
7 stadii (tabela 10.5). Aceasta este o pereche foarte eficient˘ a, ea stˆ and la baza rezolvitorului
ode45 din MATLAB, dar s¸i a altor rezolvitori important ¸i.
Vom da ˆın continuare un exemplu de implementare pentru o metod˘ a Runge-Kutta cu pas
variabil.
ˆ
In spiritul lucr˘ arii [16] am implementat o funct ¸ie MATLAB mai general˘ a, oderk,
care utilizeaz˘ a tabela Butcher. Modul de tratare al erorilor s¸i organizarea general˘ a se inspir˘ a
din ode23 s¸i ode45 din MATLAB, dar s¸i din rutina ode23tx din [44].
Primul argument al funct ¸iei oderk specific˘ a funct ¸ia din membrul drept f(t, y). El poate
fi un handler de funct ¸ie, un s¸ir de caractere sau o funct ¸ie inline. Al doilea argument este
388 Rezolvarea numeric˘ a a ecuat ¸iilor diferent ¸iale ordinare
µ
j
λ
ij
0 0
1
2
1
2
0
3
4
0
3
4
0
1
2
9
3
9
4
9
0
α
i
2
9
3
9
4
9
0
α

i
7
24
1
4
1
3
1
8
Tabela 10.4: Tabela Butcher pentru metoda Bogacki-Shampine
µ
j
λ
ij
0 0
1
5
1
5
0
3
10
3
40
9
40
0
4
5
44
45

56
15
32
9
0
8
9
19372
6561

25360
2187
64448
6561

212
729
0
1
9017
3168

355
33
46732
5247
49
176

5103
18656
0
1
35
384
0
500
1113
125
192

2187
6784
11
84
0
α
i
35
384
0
500
1113
125
192

2187
6784
11
84
0
α

i
5179
57600
0
7571
16695
393
640

92097
339200
187
2100
1
40
Tabela 10.5: Perechea inclus˘ a RK5(4)7FM (DOPRI5)
un vector tspan, cu dou˘ a componente t0 s¸i tfinal. Ele dau capetele intervalului pe
care se face rezolvarea (integrarea). Al treilea argument y0 furnizeaz˘ a valorile de pornire
y
0
= y(t
0
). Lungimea lui y0 spune rutinei num˘ arul de ecuat ¸ii diferent ¸iale din sistem. Al
treilea argument este un handler de funct ¸ie care init ¸ializeaz˘ a tabela Butcher. Dac˘ a lipses¸te,
metoda implicit˘ a folosit˘ a este metoda Bogacki-Shampine (tabela 10.4, funct ¸ia BS23). Al pa-
trulea argument opts cont ¸ine opt ¸iunile rezolvitorului. Ele se pot init ¸ializa cu funct ¸ia folosit˘ a
de MATLAB, odeset.
ˆ
In oderk se iau ˆın considerare numai opt ¸iunile RelTol (eroarea
relativ˘ a, implicit 1e-3), AbsTol (eroarea absolut˘ a, implicit 1e-6), OutputFcn (funct ¸ia
de ies¸ire, implicit odeplot) s¸i Stats (specific˘ a dac˘ a se doresc statistici s¸i are valoarea on
sau off). Instruct ¸iunea
opts=odeset(’RelTol’, 1e-5, ’AbsTol’, 1e-8, ’OutputFcn’,...
myodeplot)
init ¸ializeaz˘ a eroarea relativ˘ a pe 10
−5
, cea absolut˘ a pe 10
−8
s¸i declar˘ a myodeplot ca funct ¸ie
de ies¸ire.
Ies¸irea lui oderk poate fi numeric˘ a sau grafic˘ a. F˘ ar˘ a nici un argument de ies¸ire
se genereaz˘ a un grafic al tuturor componentelor solut ¸iei. Cu dou˘ a argumente de ies¸ire,
instruct ¸iunea
10.7. Monitorizarea erorilor s¸i controlul pasului 389
[tout,yout] = oderk(F,tspan,y0)
genereaz˘ a o tabel˘ a a absciselor s¸i ordonatelor solut ¸iei.
S˘ a examin˘ am codul acestei funct ¸ii.
function [tout,yout] = oderk(F,tspan,y0,BT,opts,varargin)
%ODERK rezolva ecuatii diferentiale nonstiff
% ODERK utilizeaza doua metode continute date
% prin tabela Butcher
%
% ODERK(F,TSPAN,Y0) cu TSPAN = [T0 TFINAL] integreaza
% sistemul de ecuatii diferentiale y’ = f(t,y) de la
% t = T0 la t = TFINAL. Conditia initiala este y(T0) = Y0.
% F este numele unui fisier M, sau o functie
% inline sau un sir de caractere ce defineste f(t,y).
% Aceasta functie trebuie sa aiba doua argumente, t si y
% si trebuie sa returneze un vector coloana al
% derivatelor, y’.
%
% Cu doua argumente de iesire, [T,Y] = ODERK(...)
% returneaza un vector coloana T si un tablou Y unde
% Y(:,k) este solutia in T(k).
%
% Fara argumente de iesire ODERK reprezinta grafic solutia.
%
% ODERK(F,TSPAN,Y0,RTOL) utilizeaza eroarea relativa RTOL,
% in locul celei implicite 1.e-3.
%
% ODERK(F,TSPAN,Y0,BT) utilizeaza tabela Butcher. Daca BT
% este vid, se utilizeaza BS23 (Bogacki-Shampine)
%
% ODERK(F,TSPAN,Y0,BT,OPTS) unde OPTS = ODESET(’reltol’,...
% RTOL,’abstol’,ATOL,’outputfcn’,@PLOTFUN) utilizeaza
% eroarea relativa RTOL in locul valorii implicite 1.e-3,
% eroarea absoluta ATOL in loc de 1.e-6 si apeleaza PLOTFUN
% in loc de ODEPLOT dupa fiecare pas terminat cu succes.
%
% Daca se apeleaza cu mai mult de 5 argumente de intrare,
% ODERK(F,TSPAN,Y0,BT,RTOL,P1,P2,...), argumentele
% suplimentare se transmit lui F, F(T,Y,P1,P2,...).
%
% Optiunea Stats pe on furnizeaza statistici
%
% Exemplu
% tspan = [0 2
*
pi];
% y0 = [1 0]’;
% F = ’[0 1; -1 0]
*
y’;
% oderk(F,tspan,y0);
Urmeaz˘ a acum init ¸ializarea variabilelor s¸i prelucrarea opt ¸iunilor.
390 Rezolvarea numeric˘ a a ecuat ¸iilor diferent ¸iale ordinare
% Initializare variabile
rtol = 1.e-3;
atol = 1.e-6;
plotfun = @odeplot;
statflag = 0;
statflag=strcmp(opts.Stats,’on’);
if (nargin >= 4) & ˜isempty(BT) %tabela Butcher
[lambda,alfa,alfas,mu,s,oop,fsal]=BT();
else
[lambda,alfa,alfas,mu,s,oop,fsal]=BS23();
end
if statflag %statistici
stat=struct(’ns’,0,’nrej’,0,’nfunc’,0);
end
if nargin >= 5 & isnumeric(opts)
rtol = opts;
elseif nargin >= 5 & isstruct(opts)
statflag=strcmp(opts.Stats,’on’);
if ˜isempty(opts.RelTol), rtol = opts.RelTol; end
if ˜isempty(opts.AbsTol), atol = opts.AbsTol; end
if ˜isempty(opts.OutputFcn),
plotfun = opts.OutputFcn;
end
end
if statflag %statistici
stat=struct(’ns’,0,’nrej’,0,’nfunc’,0);
end
t0 = tspan(1);
tfinal = tspan(2);
tdir = sign(tfinal - t0);
plotit = (nargout == 0);
threshold = atol / rtol;
hmax = abs(0.1
*
(tfinal-t0));
t = t0;
y = y0(:);
% Face F apelabila prin feval
if ischar(F) & exist(F)˜=2
F = inline(F,’t’,’y’);
elseif isa(F,’sym’)
F = inline(char(F),’t’,’y’);
end
% Initializeaza iesirile
10.7. Monitorizarea erorilor s¸i controlul pasului 391
if plotit
plotfun(tspan,y,’init’);
else
tout = t;
yout = y.’;
end
Calculul lungimii pasului init ¸ial este o chestiune delicat˘ a deoarece necesit˘ a unele cunos¸tint ¸e
despre scara global˘ a a problemei.
% Calculeaza pasul initial
K=zeros(length(y0),s);
K(:,1)=F(t,y,varargin:); %prima evaluare
if statflag, stat.nfunc=stat.nfunc+1; end
r = norm(K(:,1)./max(abs(y),threshold),inf) + realmin;
h = tdir
*
0.8
*
rtolˆ(oop)/r;
Urmeaz˘ a acum ciclul principal. Procesul de integrare ˆıncepe din t = t
0
s¸i t se incrementeaz˘ a
pˆ an˘ a cˆ and se atinge t
final
. Este posibil s˘ a se mearg˘ a s¸i ˆın sens invers dac˘ a t
final
< t
0
.
% ciclul principal
while t ˜= tfinal
hmin = 16
*
eps
*
abs(t);
if abs(h) > hmax, h = tdir
*
hmax; end
if abs(h) < hmin, h = tdir
*
hmin; end
% corectare pas final
if 1.1
*
abs(h) >= abs(tfinal - t)
h = tfinal - t;
end
Iat˘ a calculul efectiv. Prima pant˘ a K(:,1) a fost deja calculat˘ a. Urmeaz˘ a acum s-1 evalu˘ ari
ale pantei, unde s este de num˘ arul de stadii.
% tentativa calcul pas
for i=2:s
K(:,i)=F(t+mu(i)
*
h,y+h
*
K(:,1:i-1)
*
...
(lambda(i,1:i-1)’));
end
if statflag, stat.nfunc=stat.nfunc+s-1; end
392 Rezolvarea numeric˘ a a ecuat ¸iilor diferent ¸iale ordinare
tnew=t+h;
ynew=y+h
*
K
*
alfas;
Urmeaz˘ a estimarea erorii. Norma vectorului de eroare este scalat˘ a cu raportul dintre eroarea
absolut˘ a s¸i cea relativ˘ a. Utilizarea celui mai mic num˘ ar flotant, realmin, evit˘ a situat ¸ia cˆ and
err este zero.
% Estimeaza eroarea
e = h
*
K
*
(alfa-alfas);
err = norm(e./max(max(abs(y),abs(ynew)),threshold),...
inf) + realmin;
Acum se testeaz˘ a dac˘ a pasul s-a terminat cu succes. Dac˘ a da, rezultatul este afis¸at sau ad˘ augat
la vectorul de ies¸ire. Dac˘ a nu s¸i se cer statistici, pasul nereus¸it se contorizeaz˘ a. Dac˘ a metoda
este de tip FSAL (First Same As Last), adic˘ a ultimul stadiu alpasului precedent este la fel cu
primul stadiu al pasului urm˘ ator, atunci ultima valoare de funct ¸ie calculat˘ a se reutilizeaz˘ a.
% Accepta solutia daca eroarea estimata < toleranta
if err <= rtol %pas acceptat
t = tnew;
y = ynew;
if plotit
if plotfun(t,y,’’);
break
end
else
tout(end+1,1) = t;
yout(end+1,:) = y.’;
if statflag
stat.ns=stat.ns+1;
end
end
if fsal % Reutilizare valoare finala daca e cazul
K(:,1)=K(:,s);
else
K(:,1)=F(t,y);
if statflag, stat.nfunc=stat.nfunc+1; end
end
else %pas respins
if statflag, stat.nrej=stat.nrej+1; end
end
Estimarea erorii se utilizeaz˘ a pentru a calcula o nou˘ a lungime de pas. Raportul rtol/err
este supraunitar dac˘ a pasul curent este terminat cu succes s¸i subunitar dac˘ a pasul curent a
es¸uat. Factorii 0.8 s¸i 5 evit˘ a schimb˘ arile excesive ale lungimii pasului.
10.8. Ecuat ¸ii diferent ¸iale ordinare ˆın MATLAB 393
% Calcul pas nou
h = h
*
min(5,0.8
*
(rtol/err)ˆ(oop));
Aici este singurul loc unde s-ar putea detecta o eventul˘ a singularitate.
% Iesire daca pasul este prea mic
if abs(h) <= hmin
warning(sprintf(’...
dimensiune pas %e prea mica in t = %e.\ n’,h,t));
t = tfinal;
end
end
Aici se ˆıncheie ciclul principal. Funct ¸ia de afis¸are trebuie s˘ a-s¸i incheie munca.
if plotit
plotfun([],[],’done’);
end
if statflag %statistici
fprintf(’%d pasi cu succes\ n’,stat.ns)
fprintf(’%d pasi esuati\ n’, stat.nrej)
fprintf(’%d evaluari de functii\ n’, stat.nfunc)
end
10.8. Ecuat¸ii diferent¸iale ordinare ˆın MATLAB
10.8.1. Rezolvitori
MATLAB are facilit˘ at ¸i foarte puternice de rezolvare a problemelor cu valori init ¸iale pen-
tru ecuat ¸ii diferent ¸iale ordinare:
d
dt
y(t) = f(t, y(