Sunteți pe pagina 1din 469

Analiz a numeric a

O introducerere bazat a pe MATLAB


Radu Tiberiu Trmbit as
ii
Referent i:
Prof. univ. dr. Gheorghe Coman
Prof. univ. dr. Octavian Agratini
Prefat a
Lloyd N. Trefethen a propus urm atoarea denit ie a Analizei numerice:
Analiza numeric a este studiul algoritmilor pentru rezolvarea problemelor
matematicii continue.
Cuv antul cheie este acela de algoritmi. Desi foarte multe lucr ari nu evident iaz a acest lucru, n
centrul atent iei Analizei numerice st a proiectarea si 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 si complexe nu pot reprezentate exact n calculator,
ele trebuie s a e aproximate printr-o reprezentare nit a. Din acest moment intervin erorile
de rotunjire si iar este clar c a studiul lor este unul din obiectivele importante ale Analizei
numerice. Au existat si 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 eliminarea gaussian a.
Dar, cele mai multe probleme ale matematicii continue nu pot rezolvate prin algoritmi
asa-zisi nit 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 si vectori proprii, dar apar n orice prob-
lem a ce presupune termeni neliniari sau derivate determinarea zerourilor, cuadraturi, ecuat ii
diferent iale si 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 otant a, este un subiect dicil si 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 si m andria specialistilor 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 micsorat important a erorilor de rotunjire,
f ar a a micsora important a vitezei de convergent a a algoritmilor.
Denit ia de mai sus nu surprinde c ateva aspecte importante : c a acesti algoritmi sunt
implementat i pe calculatoare, a c aror arhitectur a poate o parte important a a problemei; c a
abilitatea si ecient a sunt obiective supreme; c a anumit i specialisti n analiza numeric a scriu
programe si alt ii demonstreaz a teoreme
1
; si 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 stiint a si ingineria sunt constru-
ite; f ar a metode numerice, stiint a si ingineria, asa 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 si cei ce se ocup a de matematica pur a, specialistii n
Analiza numeric a sunt mostenitorii marii tradit ii a lui Euler, Lagrange, Gauss si 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 si 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 si kit-ul de instalare.
Pentru a desc arca sursele din aceast a carte si solut iile problemelor trimitem cititorul la
pagina de web a autorului: http://www.math.ubbcluj.ro/

tradu.
Radu Tiberiu Trmbit as
Cluj-Napoca, februarie 2005
1
exist a mult i specialisti foarte buni care le fac pe am andou a
Cuprins
1. Introducere n MATLAB 1
1.1. Lansarea MATLAB si sistemul de help . . . . . . . . . . . . . . . . . . . . . 2
1.2. Modul calculator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3. Matrice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3.1. Generarea matricelor . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.3.2. Indexarea si notat ia ,,: . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.3.3. Operat ii n sens matricial si n sens tablou . . . . . . . . . . . . . . . 12
1.3.4. Analiza datelor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.3.5. Operatori relat ionali si logici . . . . . . . . . . . . . . . . . . . . . . 18
1.4. Programarea n MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
1.4.1. Fluxul de control . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
1.4.2. Fisiere 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. Grac a n MATLAB 49
2.1. Grace bidimensionale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
2.1.1. Grace de baz a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
2.1.2. Axe si adnotarea . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
2.1.3. Mai multe grace pe aceeasi gur a . . . . . . . . . . . . . . . . . . 58
2.2. Grace tridimensionale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
vii
viii Cuprins
2.3. Salvarea si imprimarea gracelor . . . . . . . . . . . . . . . . . . . . . . . . 68
2.4. Facilit at i grace noi n MATLAB 7 . . . . . . . . . . . . . . . . . . . . . . . 69
Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
3. Elemente de Teoria erorilor si aritmetic a n virgul a otant 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 otant a . . . . . . . . . . . . . . . . . . . . . . . . 76
3.4.1. Parametrii reprezent arii . . . . . . . . . . . . . . . . . . . . . . . . . 76
3.4.2. Anularea . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
3.5. Standardizarea reprezent arii n virgul a otant a . . . . . . . . . . . . . . . . . 79
3.5.1. Parametrii standardului . . . . . . . . . . . . . . . . . . . . . . . . . 79
3.5.2. Cantit at i speciale . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
3.6. Numere n virgul a otant 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 si probleme incorect puse . . . . . . . . . . . . 89
3.11. Stabilitatea . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
3.11.1. Notat ii asimptotice . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
3.11.2. Precizie si 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. Ranarea 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 si 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 si 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 ecient 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 nite: formula lui Newton progresiv a si 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 si rezultate de baz a . . . . . . . . . . . . . . . . . . . . . . . 241
6.2.2. Algoritmul de evaluare a unui B-spline . . . . . . . . . . . . . . . . 243
6.2.3. Aplicat ii n graca pe calculator . . . . . . . . . . . . . . . . . . . . 244
6.2.4. Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
6.3. Funct ii spline cu variat ie diminuat a . . . . . . . . . . . . . . . . . . . . . . . 251
6.4. Operatori liniari si 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 si formula lui Simpson . . . . . . . . . . . . . . 269
7.3.2. Formule Newton-Cotes cu ponderi si 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 si ecient a . . . . . . . . . . . . . . . . . . . . . . . . . 298
8.3. Metoda sirurilor 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 modicare . . . . . . . . . . . . . . . . . . . . . . . . . 318
8.12. Ecuat ii neliniare n MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . 321
Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
9. Valori si vectori proprii 327
9.1. Valori proprii si r ad acini ale polinoamelor . . . . . . . . . . . . . . . . . . . 328
9.2. Terminologie si 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 si vectori proprii n MATLAB . . . . . . . . . . . . . . . . . . . . . . 351
Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
10. Rezolvarea numeric a a ecuat iilor diferentiale 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 si 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
Bibliograe 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 grac 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 reexii 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 coecient 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 Cebsev de spet a I 174
5.5 Calculul polinoamelor Cebsev 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 Cebsev de spet a I
continuare: calculul coecient ilor Fourier . . . . . . . . . . . . . . . . . . 175
5.7 Aproximant a Cebsev discret a . . . . . . . . . . . . . . . . . . . . . . . . . 176
5.8 Coecient ii aproximantei Cebsev 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 si coecient 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-Cebsev de spet a I . . . . . . . . . . . . . . . . . . 282
7.7 Generare formul a Gauss-Cebsev 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 si 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 si 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 si partit ionare . . . . . . . . . . . . . . . 347
9.8 Metoda QR cu deplasare spectral a, partit ionare si tratarea valorilor proprii
complexe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
9.9 Iterat ie QR si partit ionare . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
9.10 Metoda QR cu dublu pas, partit ionare si tratarea matricelor 2 2 . . . . . . . 350
LISTA SURSELOR MATLAB xv
9.11 Iterat ie QR cu dublu pas si 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 si 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 si sistemul de help . . . . . . . . . . . . . . . . . . 2
1.2. Modul calculator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3. Matrice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3.1. Generarea matricelor . . . . . . . . . . . . . . . . . . . . . . . 6
1.3.2. Indexarea si notat ia ,,: . . . . . . . . . . . . . . . . . . . . . . 10
1.3.3. Operat ii n sens matricial si n sens tablou . . . . . . . . . . . . 12
1.3.4. Analiza datelor . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.3.5. Operatori relat ionali si logici . . . . . . . . . . . . . . . . . . . 18
1.4. Programarea n MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . 22
1.4.1. Fluxul de control . . . . . . . . . . . . . . . . . . . . . . . . . 22
1.4.2. Fisiere 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 usureaz 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 si ncurajeaz a experimentele. MATLAB utilizeaz a algoritmi cunoscut i si
testat i, n care utilizatorul poate avea ncredere. Operat iile puternice se pot realiza usor 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 grace excelente, iar
imaginile pot 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 si 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 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 si sub form a de rutine apelate dintr-un limbaj de programare, de
exemplu C.
Informat iile de help pot 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 sierele 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 si cei care predau MATLAB demonstrat iile sunt foarte utile. Un set
cuprinz ator se poate lansa prin comanda
>> demo
Atent ie, ea sterge 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 si exemple. El este disponibil prin comanda doc.
1.2. Modul calculator
Operat iile aritmetice de baz a sunt + -
*
/ si ridicarea la putere . Ordinea implicit a a
operat iilor se poate schimba cu ajutorul parantezelor.
MATLAB recunoste mai multe tipuri de numere:
ntregi, cum are 1362 sau -217897;
reale, de exemplu 1.234, 10.76;
complexe, cum ar 3.21 4.3i, unde i =

1;
Inf, desemneaz a innitul;
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 otant a. Formatul n care MATLABaseaz 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 iesiri
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 iesire si permite s a se aseze mai
mult a informat ie.
Numele de variabile n MATLAB sunt formate din secvent e de litere si cifre, prima ind
o liter a. Exemple: x, y, z525, TotalGeneral. Se face distinct ie ntre literele mari si cele
mici. Exist a si nume speciale, a c aror folosire trebuie evitat a, cum ar :
4 Introducere n MATLAB
- eps = 2.2204e-16 = 2
54
este epsilon-ul masinii (vezi capitolul 3) care
reprezint a cel mai mare num ar cu proprietatea c a 1+eps nu poate distins de 1;
- pi = .
Dac a se fac calcule cu numere complexe folosirea variabilelor i si j este contraindicat a,
deoarece ele desemneaz a unitatea imaginar a. D am c ateva exemple:
>>x = 3-24
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 utilizat a n
expresii, la fel ca orice alt a variabil a.
>>3-24
ans =
-13
>>ans
*
5
ans =
-65
Dac a dorim s a suprim am asarea ultimei expresii evaluate, vom pune caracterul ,,; la
sf arsitul expresiei. Pe o linie de comand a se pot introduce mai multe expresii. Ele pot
separate prin virgul a, caz n care valoarea expresiei terminat a cu virgul a va asat a, sau cu
,,;, caz n care valoarea expresiei nu va asat a.
>> x=-13; y = 5
*
x, z = x2+y, z2 = x2-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
sierul nume-fisier de tip .mat, n format binar, specic MATLAB. Variabilele salvate
pot nc arcate prin
>>load nume-fisier
Se pot face salv ari si nc arc ari si n format ascii, n dubl a precizie sau prin ad augare la un
sier existent. Pentru detalii a se vedea help save si 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 si 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 si rezultatele asate pe ecran (cu except ia celor ale comenzilor
grace) n sierul 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 si n coloane. Vectorii linie (m = 1) si 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 si punctul si 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 si 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 si matricele identice se obt in cu funct iile
zeros, ones si respectiv eye. Toate au aceeasi 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 si 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 alneste atunci c and se doreste 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 si randn genereaz a matrice de numere (pseudo-)aleatoare, utiliz and
aceeasi sintax a ca si 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 si experimentele cu numere aleatoare este important ca secvent ele de numere
aleatoare s a e 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 acelasi mod. Perioadele lui rand si
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 si n form a de bloc. Din matricea B, denit 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 deni utiliz and funct ia blkdiag, care este mai
usor 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 ecare bloc este o copie a
lui A. Dac a n lipseste, 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 si comenzi pentru manipularea matricelor; vezi tabela 1.3.
reshape Schimbarea dimensiunii
diag Matrice diagonale si 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 si 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 specic 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 aceasi 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 si dedesubtul ei si 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
si dedesubtul ei, n timp ce triu(A,k) d a elementele situate pe a k-a diagonal a a lui A si
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 (coecient 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 si testarea algorit-
milor. Ele sunt date n tabela 1.4. Vom exemplica funct iile hilb si 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 si notatia ,,:
Pentru a permite accesul si atribuirea la nivel de submatrice, MATLAB are o notat ie
puternic a bazat a pe caracterul ,,:. Ea este utilizat a pentru a deni vectori care act ioneaz a ca
indici. Pentru scalarii i si j, i:j desemneaz a vectorul linie cu elementele i, i+1, . . . j
(pasul este 1). Un pas diferit, s, se specic 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 si j 1
(indicii zero sau negativi nu sunt admisi n MATLAB). Notat ia A(p:q,r:s) desemneaz a
submatricea const and din intersect ia liniilor de la p la q si coloanelor de la r la s a lui
A. Ca un caz special, caracterul ,,: singur, ca specicator de linie si 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 specicat a; astfel A(end,:) selecteaz a ultima linie a lui A.

In ne, o subma-
trice arbitrar a poate selectat a specic and indicii de linie si coloan a individuali. De exemplu,
A([i,j,k],[p,q])produce submatricea dat a de intersect ia liniilor i, j si k si coloanelor
p si 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, asezate 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 deni 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 si b. Dac a n lipseste,
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 sterge o linie sau o coloan a a matricei:
>>A(2,:)=[]
A =
2 3 5
17 19 23
Acelasi 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, asa cum se va vedea n 1.3.4.
1.3.3. Operat ii n sens matricial si n sens tablou
Pentru scalarii a si b, operat iile +, -, / and produc rezultate evidente. Pe l ang a op-
eratorul uzual de mp art ire, cu semnicat ia
a
b
, MATLAB are operatorul de mp art ire st ang a
(backslash ), cu semnicat ia
b
a
. Pentru matrice, toate aceste operat ii pot 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 si 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 si sc adere sunt identice at at n sens matricial c at si n sens tablou.
Produsul A
*
B este nmult irea matricial a uzual a. Operatorii de mp art ire / si denesc solut ii
ale sistemelor liniare: AB 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 si mp art irea n sens tablou, sau pe elemente, se specic a preced and operatorul
cu un punct. Dac a A si B sunt matrice de aceeasi 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 si 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 denit 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 A2 este
A
*
A, dar A.2 se obt ine ridic and la p atrat ecare element al lui A:
>> A2, A.2
ans =
7 10
15 22
ans =
1 4
9 16
Operat ia . permite ca exponentul s a e un tablou c and dimensiunile bazei si 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 denit a pentru toate puterile, nu numai pentru ntregi
pozitivi. Dac a n<0 este un ntreg, atunci An este denit prin inv(A)(-n). Pentru p
nentreg, Ap este evaluat a utiliz and valorile proprii ale lui A; rezultatul poate 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 obisnuit a. Transpusa f ar a conjugare se obt ine cu A.. Alternativele funct ionale
ctranspose(A) si transpose(A) sunt uneori mai convenabile.

In cazul particular al vectorilor coloan a x si y, x


*
y este produsul scalar, care se poate
obt ine si 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 si 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
Totusi, dac a atribuirea are sens f ar a expandare, atunci va 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 e 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 complecsi, sort sorteaz a dup a valorile ab-
solute.
Dac a argumentele sunt matrice, aceste funct ii act ioneaz a pe coloane. Astfel, max si min
returneaz a un vector ce cont ine elementul maxim si respectiv cel minim al ec arei coloane,
sum returneaz a un vector ce cont ine sumele coloanelor, iar sort sorteaz a elementele din
ecare coloan a a unei matrice n ordine cresc atoare. Funct iile min si max pot returna un al
doilea argument care specic a n care componente sunt situate elementul minimsi 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
Asa 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 si min pot 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) specic 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 si sum pot si 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 sir 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 nite
isieee Testez a dac a masina 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 si logici
Operatorii relat ionali n MATLABsunt: == (egal), =(diferit), < (mai mic), > (mai mare),
<= (mai mic sau egal) si >= (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 si 0 n caz contrar.
Comparat iile sunt denite ntre matrice de aceeasi dimensiune si ntre o matrice si un scalar,
rezultatul ind n ambele cazuri o matrice de 0 si 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 ecare 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 si B sunt identice, se poate utiliza expresia
isequal(A,B):
>> isequal(A,B)
ans =
0
Mai exist a si alte funct ii logice nrudite cu isequalsi 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 denit ie diferit de orice si nu are o relat ie de ordine cu nimic, vezi sect iunea 3.4.)
Operatorii logici n MATLAB sunt: & (si), | (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 si 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
si cei relat ionali pot apelat i si 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
modica cu ajutorul parantezelor.
De notat c a versiunile MATLAB anterioare lui MATLAB 6 aveau aceeasi precedent a
pentru and si 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 ec arei
coloane. De aceea all(all(A=B)) este un alt mod de a testa egalitatea matricelor A si B.
Funct ia any lucreaz a analog; de exemplu, any(any(A==B)) returneaz a 1 dac a A si B au
20 Introducere n MATLAB
cel put in un element egal si 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 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 nite ale lui
x,
>> x(find(isfinite(x)))
ans =
-3 1 0 0
si 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 asezarea coloanelor una peste alta (adic a A(:)), si acest vector poate
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 si j ce cont in indicii de linie si coloan a ale elementelor nenule.
1.3. Matrice 21
Rezultatele operatorilor logici si ale funct iilor logice din MATLAB sunt tablouri de ele-
mente 0 si 1, care sunt exemple de tablouri logice. Astfel de tablouri pot create si prin apli-
carea funct iei logical unui tablou numeric. Tablourile logice pot 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 aceeasi dimen-
siune ca si A, extrage elementele lui A corespunz and elementelor lui M cu partea real a nenul a.
Chiar dac a i2 are aceleasi elemente ca i3 (si la comparat ie ele ies egale), doar tabloul logic
i2 poate utilizat la indexare.
Un apel la find poate uneori evitat dac a argumentul s au este un tablou logic.

In ex-
emplul precedent, x(find(isfinite(x)))poate 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 si 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 si 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 aceeasi 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 = piexp(1); c = exp(pi);
if a >= c
b = sqrt(a2-c2)
else
b = 0
end

In ne, se pot introduce teste suplimentare cu elseif (de notat c a nu este nici un spat iu
ntre else si if):
>> if a >= c
b = sqrt(a2-c2)
elseif ac > ca
b = ca/ac
else
b = ac/ca
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 (asa-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 nedenite sau a
unei dep asiri de indice.
Ciclul for este una dintre cele mai utile construct ii MATLAB, desi 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 ecare 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 deni 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 imbricate, indentarea ajut and n acest caz la cresterea lizibilit at ii.
Editorul-debuger-ul MATLAB poate realiza indentarea automat a. Codul urm ator construieste
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 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 ecare 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 otant 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 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 innit, 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 aseaz 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 si 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 si opreste execut ia curent a. Expresia ce urmez a
dup a case poate 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 si instruct iunile sale au fost executate, se d a
controlul primei instruct iuni de dup a switch, f ar a a nevoie de instruct iuni break.
1.4. Programarea n MATLAB 25
1.4.2. Fisiere M
Fisierele M din MATLAB sunt echivalentele programelor, funct iilor, subrutinelor si 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 utilizate repetat;
schimbul de siere M.
Multe siere M scrise de entuziasti pot obt inute de pe Internet, pornind de la pagina
de web http://www.mathworks.com. Exist a si grupul de stiri comp.soft-sys.
matlab, dedicat MATLAB. (Grupurile de stiri pot citite n mai multe moduri, inclusiv
printr-un web browser.) Se pot obt ine detalii tast and info la prompterul MATLAB.
Un sier M este un sier text cu extensia (tipul) .m ce cont ine comenzi MATLAB. Ele
sunt de dou a tipuri:
Fisiere M de tip script (sau siere de comenzi) nu au nici un argument de intrare sau
iesire si opereaz a asupra variabilelor din spat iul de lucru.
Fisiere M de tip funct ie cont in o linie de denit ie function si pot accepta argu-
mente de intrare si returna argumente de iesire, iar variabilele lor interne sunt locale funct iei
(nafar a de cazul c and sunt declarate global).
Un sier script permite memorarea unei secvent e de comenzi care sunt utilizate repetat
sau vor 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 si 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 ecare dat a generatorul la o stare diferit a.
Primele dou a linii ale acestui sier script ncep cu simbolul % si deci sunt linii de comen-
tariu. Ori de c ate ori MATLAB nt alneste un % va ignora restul liniei. Aceasta ne permite s a
inser am texte explicative care vor face sierele M mai usor 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 % si %. Ei trebuie s a e singuri pe linie, ca n exemplul:
%{
Comentariu bloc
pe doua linii
%}
Dac a script-ul de mai sus este memorat n sierul 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
>>
Fisierele M de tip funct ie permit extinderea limbajului MATLAB prin scrierea de funct ii
proprii care accept a si returneaz a argumente. Ele se pot utiliza n acelasi mod ca funct iile
MATLAB existente, cum ar 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 si 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 iesire, [med,abmp] si 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


si de iesire.) Numele de funct ie trebuie s a e la fel ca al sierului .m n care funct ia este
memorat a n cazul nostru stat.m.
1.4. Programarea n MATLAB 27
A doua linie a unui sier funct ie se numeste 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 si 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 si 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 asate pe ecran. Deci, aceste linii descriu funct ia si
argumentele sale. Se convine ca numele de funct ie si 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 .
Este util ca n liniile de comentariu din text sa apar a data scrierii funct iei si datele c and s-au
f acut modic ari. Comanda help lucreaz a similar si pe siere 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,
as and si 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 sier 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 arsitul 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 si permite atribuirea de valori implicite argumentelor nespecicate. Dac a apelul
lui sqrtn nu a furnizat o valoare pentru tol, atunci tol primeste valoarea eps. Num arul
de argumente la iesire este returnat de funct ia nargout.
Un sier 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 siere M, sau suprancarc a funct ii cu acelasi
nume (subfunct iile au prioritate mai mare). Help-ul pentru o subfunct ie se poate specica
pun and numele funct iei urmat de / si numele subfunct iei. Pentru exemple a se vedea sursele
MATLAB 5.3 si 5.6 din capitolul 5.
Pentru a crea si edita siere M avem dou a posibilit at i. Putem utiliza orice editor pentru
siere 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 indentarea automat a a ciclurilor si structurilor de control, evident ierea
sintaxei prin culori, vericarea perechilor de paranteze si apostrofuri.
Cele mai multe funct ii MATLAB sunt siere M p astrate pe disc, dar exist a si funct ii
predenite cont inute n interpretorul MATLAB. Calea MATLAB (MATLAB path) este o
list a de directori care specic a unde caut a MATLAB sierele M. Un sier M este disponibil
numai dac a este pe calea MATLAB. Drumul poate setat si modicat prin comenzile path
si 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 si 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 sierul M. Un sier
M se poate asa 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 apelate si sub forma nume,
urmat de argumente separate prin spat ii. MATLAB presupune n al doilea caz c a argumentele
sunt siruri de caractere. De exemplu apelurile format long si format(long) sunt
echivalente. Dar, n exemplul,
>> sqrt 2
ans =
7.0711
MATLAB interpreteaz a 2 ca un sir si sqrt se aplic a valorii ASCII a lui 2, si anume 50.
MATLAB 7 permite denirea 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 citit a si modicat a de o funct ie imbricat a la orice nivel n
funct ia exterioar a. Variabilele create ntr-o funct ie imbricat a pot citite sau modicate 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 integrarea numeric a, rezolvarea unor ecuat ii operatoriale,


minimizarea unei funct ii, este nevoie ca o funct ie s a e 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 grac 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 creat pun and
caracterul @ n fat a numelui de funct ie. Astfel, dac a fun este un sier M de tip funct ie de
forma cerut a de ezplot, atunci putem tasta
ezplot(@fun)
fun poate numele unei funct ii predenite:
ezplot(@sin)
Numele unei funct ii poate transmis ca un sir de caractere:
ezplot(exp)
Function handle a fost introdus ncep and cu MATLAB 6 si este de preferat utiliz arii sirurilor,
ind mai ecient si mai versatil. Totusi, ocazional se pot nt alni funct ii care s a accepte argu-
mente de tip funct ie sub form a de sir, dar nu sub form a de function handle. Conversia dintr-o
form a n alta se poate face cu func2str si str2func (vezi help function handle).
Mai exist a dou a moduri de a transmite o funct ie lui ezplot: ca expresie ntre apostrofuri,
ezplot(x2-1), ezplot(1/(1+x2))
sau ca obiect inline
ezplot(inline(exp(x)-1))
Un obiect inline este o funct ie denit a printr-un sir si care poate atribuit a unei variabile si
apoi evaluat a:
>> f=inline(exp(x)-1), f(2)
f =
Inline function:
f(x) = exp(x)-1
ans =
6.3891
MATLAB determin a si ordoneaz a argumentele unei funct ii inline. Dac a acest lucru nu este
satisf ac ator, argumentele se pot deni si ordona explicit, transmit and lui inline parametrii
suplimentari:
>> f = inline(log(a
*
x)/(1+y2))
f =
Inline function:
f(a,x,y) = log(a
*
x)/(1+y2)
>> f = inline(log(a
*
x)/(1+y2),x,y,a)
f =
Inline function:
f(x,y,a) = log(a
*
x)/(1+y2)

Incep and cu versiunea 7, MATLAB permite funct ii anonime. Ele pot denite n linii de
comand a, siere M de tip funct ie sau script si nu necesit a un sier 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 si 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 predenite 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 iesirii lui sqrtn se omite
ans =
1.5811
Putem transmite lui fd deriv un obiect inline, dar o expresie de tip sir nu funct ioneaz a:
>> f = inline(exp(-x)/(1+x2));
>> fd_deriv(f,pi)
32 Introducere n MATLAB
ans =
-0.0063
>>fd_deriv(exp(-x)/(1+x2),pi)
??Error using==>feval Invalid function name exp(-x)/(1+x2)
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 sir vom insera
f=fcnchk(f);
la nceputul funct iei (n acest mod lucreaz a ezplot si alte funct ii MATLAB, vezi [44] pentru
exemple).
Este uneori necesar s a se ,,vectorizeze un obiect inline sau o expresie de tip sir, adic a s a
se converteasc a nmult irile, ridic arile la putere si mp art irile n operat ii n sens tablou, astfel
ca s a se poat a utiliza argumente vectori si matrice. Acest lucru se poate realiza cu funct ia
vectorize:
>> f = inline(log(a
*
x)/(1+y2));
>> 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 sirul f.
MATLAB7 a simplicat 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 tratat ca si 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 putut 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 si
varargout. S a presupunem c a dorim s a scriem o funct ie companb ce construieste 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 asa 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 ecare element poate p astra date de tipuri si dimensiuni diferite. Elementele
unui tablou de celule pot 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 vararginj este a j-a matrice de intrare, A
j
. Nu este
necesar ca varargin s a e singurul argument de intrare, dar dac a apare el trebuie s a e
ultimul.
Analogul lui varargin pentru argumente de iesire 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 iesire se determin a cu nargout si apoi se creaz a tabloul de celule
varargout ce cont ine iesirea 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 si 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 sierului. Se convine ca numele de variabile globale s a e
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 si PR
% sunt extremitatea stanga si dreapta
% 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 e lungi si sugestive.
1.4.6. Recursivitate
Funct iile pot recursive, adic a ele se pot autoapela, direct sau indirect. Recursivitatea
este un instrument puternic, desi nu toate calculele descrise n manier a recursiv a pot imple-
mentate ecient n mod recursiv.
Funct ia koch din sursa MATLAB 1.6 utilizeaz a recursivitatea pentru a desena o curb a
Koch si 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 gurii 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
ecare din aceste linii este prelucrat a. Imaginile din st anga si dreapta jos ne arat a urm atoarele
dou a niveluri de recursivitate.
Funct ia koch are trei argumente de intrare. Primele dou a, pl si pr dau coordonatele
(x, y) ale capetelor segmentului curent si 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 si cu puncte care denesc 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 (Kochs snowake). Codul este dat n sursa 1.7.
Funct ia snowflake accept a la intrare num arul de laturi edges si nivelul de recursivitate
level. Valorile implicite ale acestor parametrii sunt 7 si respectiv 4.

In gura 1.2 se dau
dou a exemple.
Pentru alte exemple de recursivitate, a se vedea funct iile MATLAB quad si quadl si
sursele din sect iunile 7.4 si 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 si alte tipuri de date, av and scopul n principal de a realiza economie de memorie.
Acestea sunt
int8 si uint8 ntregi pe 8 bit i cu semn si 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 si uint16 ntregi pe 16 bit i cu semn si f ar a semn;
int32 si uint32 ntregi pe 32 bit i cu semn si f ar a semn;
single numere n virgul a otant a simpl a precizie (pe 32 de bit i).
Funct iile eye, ones, zeros pot returna date de iesire 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 denesc tipuri de date ntregi au acelasi nume ca si 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
vericarea 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 si intmin, av and ca argument un nume de tip ntreg, returneaz a cea
mai mare si 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 overow).
>> 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 acelasi 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 si B sunt tablouri de tip ntreg, mp art irile n sens tablou, A./B si A.B, se
realizeaz a n aritmetica n dubl a precizie, iar rezultatul se converteste 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 ind 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 si
converteste 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.8n dubl a precizie si apoi converteste
rezultatul n int8; al doilea si al treilea element din tablou dup a nmult irea n dubl a precizie
sunt 1.6 si 2.4, care sunt routunjite la cel mai apropiat ntreg, 2.
Tipul single va 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 si catch. Dac a apare o eroare se execut a instruct iunile
dintre catch si 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 identicator de mesaj
error(MATLAB:noSuchFile, File %s not found\n,...
filename)
Sursa ultimei erori se poate identica cu lasterr, care returneaz a ultimul mesaj de
eroare sau cu lasterror, care returneaz a o structur a ce cont ine mesajul de eroare si iden-
ticatorul acestuia.
Exemplul urm ator determin a cauza erorii la nmult irea a dou a matrice utiliz and
try-catch si 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 asaz 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 si [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 si la pachetul de algebr a
liniar a al Maple utiliz and o sintax a si 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 negrace Maple, facilit at ile de programare si proceduri
denite de utilizator.
Toolboxul Symbolic Math deneste 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 sir a simbolului. Toolbox-ul Symbolic Math utilizeaz a obiectele simbolice pen-
tru a reprezenta variabile simbolice, expresii si 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 = a2
*
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/(a2+c2)
*
exp(-a
*
x)
*
cos(c
*
x)-a/(a2+c2)
*
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
simplicare cu comanda simple(diff(int g,x)) se obt ine un sir de mesaje care in-
formeaz a utilizatorul asupra regulilor utilizate si n nal
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.
Substitutii si simplic ari.

Inlocuirea unui parametru cu o valoare sau cu un alt parametru
se realizeaz a cu subs. De exemplu, s a calcul am integrala denit a a lui g de mai sus pentru
a=2 si 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-x2)/(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 iesire are rolul de a inhiba mesajele lungi referitoare la
procesul de simplicare.
A se vedea help sym/simplify si help sym/simple sau doc
sym/simplify si 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
*
x2+1/6
*
x3+1/24
*
x4
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 si grac cele dou a aproximante cu ezplot (a se vedea capitolul 2 pentru
o descriere a facilit at ilor grace din MATLAB):
>> ezplot(Tay_expx,[-3,3]), hold on
>> ezplot(exp(x),[-3,3]), hold off
>> legend(Taylor,exp,Location,Best)
Gracul apare n gura 1.3. Funct ia ezplot este o modalitate convenabil a de a reprezenta
grac expresii simbolice.
Pentru detalii suplimentare a se vedea help sym/taylor sau doc sym/taylor.
Limite. Pentru sintaxa si 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
x0
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 si 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 si dezvoltarea sa Taylor
da c ateva exemple.

Inainte de rezolvarea unei ecuat ii vom sterge memoria, vom deni sim-
bolurile si ecuat iile. (Este o bun a practic a de a sterge 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
*
x2+b
*
x+c=0;
>> x=solve(eq,x)
x =
1/2/a
*
(-b+(b2-4
*
a
*
c)(1/2))
1/2/a
*
(-b-(b2-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 2x3y+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 iesire este important a.
1.5. Toolbox-urile Symbolic 45
Exemplul urm ator rezolv a sistemul neliniar y = 2e
x
si y = 3 x
2
.
>> clear, syms x y
>> eq1=y=2
*
exp(x); eq2=y=3-x2;
>> [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 innitate 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 sir de caractere, care poate 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 si 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 otant 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 aseaz 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 si phi2 se explic a prin aceea c a prima atribuire face calculele n
dubl a precizie si converteste rezultatul n vpa, iar a doua utilizeaz a sirul si 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 ecient 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 sier 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] si vericat i ce se nt ampl a c and x se apropie de -1 sau 1.
Problema 1.3. Scriet i un script MATLAB care citeste un ntreg si 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 si 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 coecient ilor binomiali, pentru puteri
merg and de la 1 la un n N dat.
Problema 1.10. Scriet i o funct ie MATLAB care primeste la intrare coordonatele v arfurilor
unui triunghi si 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 e diagonal a pe blocuri, unde blocurile sunt de dimensiune dat a, iar colt ul din st anga
sus al ec arui bloc este situat pe diagonala principal a.
CAPITOLUL 2
Grac a n MATLAB
Cuprins
2.1. Grace bidimensionale . . . . . . . . . . . . . . . . . . . . . . . . . . 49
2.1.1. Grace de baz a . . . . . . . . . . . . . . . . . . . . . . . . . . 49
2.1.2. Axe si adnotarea . . . . . . . . . . . . . . . . . . . . . . . . . . 55
2.1.3. Mai multe grace pe aceeasi gur a . . . . . . . . . . . . . . . . 58
2.2. Grace tridimensionale . . . . . . . . . . . . . . . . . . . . . . . . . . 60
2.3. Salvarea si imprimarea gracelor . . . . . . . . . . . . . . . . . . . . . 68
2.4. Facilit at i grace noi n MATLAB 7 . . . . . . . . . . . . . . . . . . . . 69
Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
MATLAB are facilit at i grace puternice si versatile. Se pot genera grace si guri relativ
usor, iar atributele lor se pot modica cu usurint a. Nu ne propunems a m exhaustivi, ci dorim
doar s a introducemcititorul n facilit at ile grace MATLAB care vor necesare n continuare.
Figurile existente pot modicate usor cu utilitarul Plot Editor. Pentru utilizarea sa a se vedea
help plotedit si meniul Tools sau bara din ferestrele gurilor. Celor care doresc detalii
sau s a aprofundeze subiectul le recomand am [30, 38, 43, 46].
2.1. Grace bidimensionale
2.1.1. Grace de baz a
Funct ia MATLAB plot realizeaz a grace bidimensionale simple unind punctele vecine.
Tast and
>>x=[1.5,2.2,3.1,4.6,5.7,6.3,9.4];
49
50 Grac 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: Grace 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 gurii 2.1(a), n care punctele x(i), y(i) sunt unite n
secvent a. MATLAB deschide o fereastr a pentru gur 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 domeniul pentru axele x si y, spat iile
dintre diviziunile de pe axe, culoarea si tipul liniei.
Mai general, n loc de plot(x,y), putem utiliza plot(x,y,sir), unde sir este
un sir de caractere ce controleaz a culoarea, marcajul si stilul de linie. De exemplu,
plot(x,y,r
*
--) ne spune c a n ecare punct x(i), y(i) se va plasa un asterisc
rosu, punctele ind unite cu o linie rosie 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 gurii 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 sir pot apare n orice ordine;
de exemplu, plot(x,y,ms--) si 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 aceeasi gur a gracele pentru x(i), y(i) si b(i), c(i) cu linie continu a
verde si respectiv cu linie ntrerupt a rosie.
Comanda plot accept a si argumente matriciale. Dac a x este un vector de dimensiune m
si Y este o matrice mn, plot(x,Y) suprapune gracele obt inute din x si ecare coloan a
a lui Y. Similar, dac a X si Y sunt matrice de aceeasi dimensiune, plot(X,Y) suprapune
gracele obt inute din coloanele corespunz atoare ale lui X si 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 gracul
obt inut lu and pe abscis a indicii punctelor si pe ordonat a Y.
Atributele se pot controla furniz and argumente suplimentare lui plot. Propriet at ile
2.1. Grace bidimensionale 51
Culoare
r rosu
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 grace x-y neimplicite
52 Grac a n MATLAB
Linewidth (implicit 0.5 puncte) si MarkerSize (implicit 6 puncte) pot specicate
n puncte, unde un punct este 1/72 inch. De exemplu, comanda
>>plot(x,y,m--,LineWidth,3,MarkerSize,5)
produce un grac cu linie cu l at imea 3 puncte si marcaje cu dimensiunea 5 puncte. Culoarea
laturilor marcajului si a interiorului marcajului se poate seta pe una din culorile din tabela 2.1
cu propriet at ile MarkerEdgeColor si MarkerFaceColor. Astfel, de exemplu
plot(x,y,o,MarkerEdgeColor,,m)
coloreaz a cercurile (nu si interiorul) n magenta. Gracul din st anga gurii 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 gracul 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
si deci pe o scar a log-log valorile vor situate pe o dreapt a cu panta
3. Vom verica aceasta reprezent and restul si dreapta de referint a cu panta prev azut a cu linie
punctat a. Gracul apare n gura 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 si ylabel. Aceste funct ii
aseaz a sirul parametru de intrare deasupra imaginii, axei x si respectiv axei y. Comanda
box off elimin a caseta de pe marginea gracului curent, l as and doar axele de coordonate.
Dac a loglog primeste si valori nepozitive, MATLAB va da un avertisment si va asa doar
datele pozitive. Funct iile nrudite semilogx si semilogy, scaleaz a doar una din axe.
Dac a o comand a de asare 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 ecare 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 si un parametru suplimentar s, cu
aceeasi semnicat ie ca la plot. Gracul unei curbe n coordonate polare, numit a cardioid a,
si care are ecuat ia
r = a(1 + cos t), t [0, 2],
unde a este o constant a real a dat a, apare n gura 2.4 si se obt ine cu secvent a:
2.1. Grace 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 si ultimul se uneste cu
primul. Culoarea c se poate da si sub forma unui triplet RGB, [r g b]. Elementele r, g si
b, care trebuie s a e scalari din [0,1], determin a nivelul de rosu, verde si 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 rosu, verde si 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 gura 2.5.
Comanda clf sterge gura curent a, iar close o nchide. Este posibil s a avem mai multe
ferestre guri pe ecran. Cel mai simplu mod de a crea o nou a gur a este comanda figure.
An-a fereastr a gur a (unde n apare n bara de titlu) poate f acut a gur a curent a cu comanda
figure(n). Comanda close all va nchide toate ferestrele guri.
De notat c a multe atribute ale unei guri pot modicate interactiv, dup a asarea gurii,
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 Grac a n MATLAB
1
2
3
4
30
210
60
240
90
270
120
300
150
330
180 0
cardioida
Figura 2.4: Grac 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. Grace bidimensionale 55
axis([xmin xmax ymin ymax]) Seteaz a limitele axelor x si 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 si adnotarea
Diversele aspecte ale unui grac pot controlate cu comanda axis. Unele opt iuni se
dau n tabela 2.2. Axele pot eliminate cu axis off. Raportul dintre unitatea pe x si cea
pe y (aspect ratio) poate 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.
Gracul din st anga gurii 2.6 a fost obt inut cu
plot(fft(eye(17))), axis equal, axis square
Deoarece gura este situat a n interiorul cercului unitate, axele sunt foarte necesare. Gracul
din dreapta gurii 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 si 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 reprezentate, se utilizeaz a axis auto. Dac a se doreste ca
una dintre limite s a e 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]) si ylim([ymin ymax]).
Exemplul urm ator reprezint a funct ia 1/(x 1)
2
+ 3/(x 2)
2
pe intervalul [0,3]:
56 Grac 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 si verticale care pornesc de la diviz-
iunile axelor. Rezultatul se poate vedea n gura 2.7(a). Datorit a singularit at ilor din x = 1, 2
gracul nu d a prea mult a informat ie. Totusi, execut and comanda
ylim([0,50])
se obt ine gura 2.7(b), care se focalizeaz a asupra p art ii interesante a primului grac.
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 si 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 gura 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. Grace 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 atasa
unui grac o legend a care pune stringi dup a informat ia culoare/marcaj/stil pen-
tru gracul corespunz ator. Parametrul opt ional pp indic a pozit ia legendei (vezi help
legend). Exemplul care urmeaz a adaug a o legend a unui grac al sinusului si cosinusului
(gura 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: Grac cu legend a
Textele se pot include n grace cu ajutorul comenzii text(x, y, s), unde x si y sunt
58 Grac 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 sir de caractere sau o variabil a de tip sir.

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 grecesti ( alpha, beta, gamma,
etc.). De asemenea, anumite atribute ale textului, cum ar tipul font-ului, dimensiunea si
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 sirul sin(). Rezultatul apare n gura 2.10. Aceste
facilit at i se pot utiliza si 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 numeste Interpreter si 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 grace pe aceeasi gur a
Funct ia MATLAB subplot permite plasarea mai multor imagini pe o gril a n aceeasi
gur a. Utiliz and subplot(mnp), sau echivalent, subplot(m,n,p), fereastra gurii se
mparte ntr-un tablou mn de regiuni, ecare 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 gurii ntr-o matrice 4 2 de regiuni si 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. Grace 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 si fplot
Pentru cei nefamiliarizat i cu graca MATLAB, comanda de reprezentare grac a a unei
funct ii, fplot, este foarte util a. Ea alege n mod adaptiv un num ar sucient de puncte pentru
a produce un grac sucient de precis. Exemplul urm ator genereaz a gracele din gura 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 gracul 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 si y la 0.01 x 1 si 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 semnicat ia:
fun este funct ia de reprezentat (function handle, obiect inline sau expresie);
lims d a limitele pe axele x si/sau y;
tol este eroarea relativ a (inplicit 2 10
3
);
60 Grac a n MATLAB
se folosesc cel put in N+1 puncte la generarea gracului;
LineSpec determin a tipul de linie;
p1, p2, ... sunt parametrii adit ionali transmisi 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 sabloane 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 un vector ce specic 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
grace 2D. Funct iile cu numele de forma ezfun sunt variante usor 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. Grace tridimensionale
Fuct ia plot3 este un analog tridimensional al lui plot. Figura 2.13 a fost obt inut a cu:
2.2. Grace tridimensionale 61
plot grac x-y simplu
loglog grac cu scar a logaritmic a pe ambele axe
semilogx grac cu scar a logaritmic a pe axa x
semilogy grac cu scar a logaritmic a pe axa x
plotyy grac x-y cu axe y si al st anga si la dreapta
polar grac polar
fplot reprezentare grac a automat a a unei funct ii
ezplot versiune usor de utilizat (easy-to-use) a lui fplot
ezpolar versiune usor de utilizat (easy-to-use) a lui polar
fill umplere poligon
area grac de tip arie plin a
bar grac de tip bar a
barh grac de tip bar a orizontal a
hist histogram a
pie grac cu sectoare de cerc
comet grac x-y animat
errorbar grac cu bare de eroare
quiver c amp de vectori bidimensional
scatter Grac dispersat (nor de puncte)
Tabela 2.3: Funct ii pentru grace 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: Grac 3D creat cu plot3
62 Grac 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 yx
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) si 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 si title, precum si analogul lor
zlabel. De notat si utilizarea notat iei T
E
X n titlu, pentru a produce text italic. Culoarea,
marcajul si 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 schimbate cu
axis([xmin, xmax, ymin, ymax, zmin, zmax])

Inafar a de xlim si ylim, exist a si zlim, prin care se pot schimba limitele pe axa z.
O facilitate usor 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 si 1 y 1; rezultatul se poate vedea n
jum atatea de sus a gurii 2.14.
subplot(211)
ezcontour(sin(3
*
y-x2+1)+cos(2
*
y2-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. Grace tridimensionale 63
Sursa MATLAB 2.1 Reprezentarea grac 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(y3+ey=tanh(x),FontSize,14)
De notat c a nivelurile de contur au fost alese automat. Pentru jum atatea de jos a gurii 2.14 s-
a utilizat funct ia contour.

Int ai se fac init ializ arile x = -2:.01:2 si 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 si Y astfel nc at ecare linie a lui X s a e o
copie a lui x si ecare coloan a a lui Y s a e o copie a vectorului y. (Funct ia meshgrid
este foarte util a la preg atirea datelor pentru multe funct ii MATLAB de grac a 3D.) Matricea
Z este apoi generat a prin operat ii de tip tablou din X si Y; Z(i,j) memoreaz a valoarea
funct iei corespunz and lui x(j) si y(i). Aceasta este forma cerut a de contour. Apelul
contour(x,y,Z,20) spune MATLAB s a priveasc a Z ca ind format a din cote deasupra
planului xOy cu spat ierea dat a de x si 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 si la reprezentarea funct iilor implicite cum ar
y
3
+ exp(y) = tanh(x).
Pentru a o reprezenta grac, rescriem ecuat ia sub forma
f(x, y) = y
3
+ exp(y) tanh(x)
si desen am conturul pentru f(x, y) = 0 (vezi script-ul 2.1 si gura 2.15).
Pentru aplicat ii n mecanic a ale funct iei contour vezi [36].
Funct ia mesh accept a date n aceeasi form a ca si contour si produce o reprezentare
de suprafat a de tip cadru de s arm a (wire-frame). Funct ia meshc se deosebeste de mesh
prin aceea c a adaug a un grac de tip contur dedesubtul suprafet ei. Exemplul de mai jos,
care produce gura 2.16, lucreaz a cu suprafat a denit a de sin(y
2
+x) cos(y x
2
) pentru
0 x, y . Primul grac este generat cu subplot si mesh(Z). Deoarece nu se d a
nici o informat ie pentru abscis a si ordonat a, mesh utilizeaz a n locul lor indicii de linie si
de coloan a. A doua imagine arat a efectul lui meshc(Z). Pentru cea de-a treia, s-a utilizat
mesh(x,y,Z), si deci gradat iile de pe axele x si y corespund valorilor x si y. Limitele pe
axe s-au specicat 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 asarea 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 Grac 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: Grace obt inute cu mesh si meshc
2.2. Grace 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 si 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 grac 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 gurii 2.17 arat a efectele lui surf si 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 Grac 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.
Gracele tridimensionale din gurile 2.13, 2.16 si 2.17 utilizeaz a unghiurile de
vizualizare implicite ale MATLAB. Acestea pot modicate 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 si 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 gurii fereastr a permite utilizarea
mouse-ului pentru schimbarea unghiurilor de vedere.
Este posibil sa vedem un grac 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 grace 3D. Asa cum indic a
tabela, unele funct ii au si variante easy to use al c aror nume ncepe cu ez.
O tr as atur a comun a tuturor funct iilor grace este aceea c a valorile NaN sunt interpretate
ca ,,date lips a si nu sunt reprezentate. De exemplu,
plot([1 2 NaN 3 4])
deseneaz a dou a linii disjuncte si nu uneste punctele 2 si 3, n timp ce
A=peaks(80); A(28:52,28:52)=NaN; surfc(A)
produce gracul surfc cu gaur a din gura 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)
si genereaz a o matrice de cote util a pentru a testa si demonstra facilit at ile grace 3D.)
2.2. Grace tridimensionale 67
plot3

grac 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 grace 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 grace 3D
0
20
40
60
80
0
20
40
60
80
10
5
0
5
10
Figura 2.19: Grac surfc al unei matrice ce cont ine NaN-uri.
68 Grac a n MATLAB
2.3. Salvarea si imprimarea gracelor
Comanda print permite listarea unui grac la imprimant a sau salvarea lui pe disc ntr-
un format grac sau sub form a de sier M. Formatul ei este:
print -dperiferic -optiuni numefisier
Ea are mai multe opt iuni, care pot 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 gurii curente spre ea. Comanda
print -deps2 myfig.eps
creaz a un sier Postscript ncapsulat alb si negru, nivelul 2, numit myfig.eps, care poate
listat pe o imprimant a PostScript sau inclus ntr-un document. Acest sier poate ncorporat
ntr-un document L
A
T
E
X, asa 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 si 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 guri si le salveaz a n sierele fig1.eps, . . . ,
fig5.eps:
2.4. Facilit at i grace 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 converteste un ntreg n sir. Astfel, de exemplu, pentru i=1, instruct iunea
print este echivalent a cu print(-deps2, fig1.eps).
Comanda saveas salveaz a o gur a ntr-un sier care apoi poate nc arcat de c atre
MATLAB. De exemplu,
saveas(gcf,myfig,fig)
salveaz a gura curent a n format binar FIG, care poate nc arcat n MATLAB cu comanda
open(myfig.fig).
Se pot salva si imprima guri din meniul File al ferestrei gurii.
2.4. Facilit ati grace noi n MATLAB 7

In MATLAB 7 s-au introdus instrumente grace noi si s-au perfect ionat unele facilit at i:
noi interfet e grace interactive pentru crearea si modicarea gracelor f ar a a introduce
cod M;
generare de cod M dintr-o gur a, permit and reutilizarea gracelor din program;
facilit at i mbun at at ite de adnotare a gracelor, inclusiv desenarea de guri geometrice,
aliniere, legare a adnot arilor de puncte;
Instrumente de explorare a datelor;
posibilitatea de a aplica transform ari cum ar rotat ii, translat ii si scal ari asupra
grupurilor de obiecte grace;
panouri de interfet e utilizator si controale ActiveX accesibile din GUIDE;
suport Handle Graphics
R
mbun at at it si suport pentru asarea 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 Grac a n MATLAB
Problema 2.2 (Curba uture). 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 grac curba tridimensional a denit 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 grac 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 grac 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 si aritmetic a n virgul a otant 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 otant a . . . . . . . . . . . . . . . . . . . . . 76
3.4.1. Parametrii reprezent arii . . . . . . . . . . . . . . . . . . . . . . 76
3.4.2. Anularea . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
3.5. Standardizarea reprezent arii n virgul a otant a . . . . . . . . . . . . . . 79
3.5.1. Parametrii standardului . . . . . . . . . . . . . . . . . . . . . . 79
3.5.2. Cantit at i speciale . . . . . . . . . . . . . . . . . . . . . . . . . 80
3.6. Numere n virgul a otant 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 si probleme incorect puse . . . . . . . . . . 89
3.11. Stabilitatea . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
3.11.1. Notat ii asimptotice . . . . . . . . . . . . . . . . . . . . . . . . 91
3.11.2. Precizie si 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 si aritmetic a n virgul a otant 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 zice.
Erorile de rotunjire apar dac a se fac calcule cu numere a c aror reprezentare se restr ange
la un num ar nit de cifre, asa 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 innite:
e = 1 +
1
1!
+
1
2!
+
1
3!
+
poate nlocuit a cu problema mai simpl a

P de a nsuma numai un num ar nit de termeni
ai seriei. Eroarea de aproximare astfel obt inut a se numeste eroare de trunchiere (totusi, acest
termen este de asemenea utilizat pentru erorile de rotunjire comise prin stergerea ultimelor
cifre ale reprezent arii). Multe probleme de aproximare se se obt in prin ,,discretizarea proble-
mei originale P: integralele denite se aproximeaz a prin sume nite, derivatele prin diferent e,
etc.

In astfel de cazuri, eroarea de aproximare se numeste eroare de discretizare. Unii autori
extind termenul de ,,eroare de trunchiere pentru a acoperi si eroarea de discretizare.

In acest capitol vom examina efectul general al erorilor de intrare si de rotunjire asupra
rezultatelor unui calcul. Erorile de aproximare vor 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) si specicat iile
de precizie ale rezultatului (SP) se numeste problem a numeric a.
Exemplul 3.1.1. Fie f : R R si 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 calculat a exact; vomnlocui f cu o aproximant a a
sa f
A
. Valoarea calculat a n calculator va f
A
(x

). Deci problema numeric a este urm atoarea:


PM. d andu-se x si 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 , de exemplu, calcularea valorii
unei funct ii f(x), a derivatelor f

(x), f

(x), . . . (derivare numeric a), a integralelor denite


_
b
a
f(t)dt (integrare numeric a) si a normelor |f|
p
, etc.
Rezolvarea ecuat iilor algebrice: determinarea valorilor unor necunoscute aate 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 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 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 identicare:
F x y
problem a direct a dat a dat dorit
problem a invers a dat a dorit dat
problem a de identicare dorit a dat dat
Exemplul 3.1.2 (Integrare). Evaluarea unei integrale denite
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 denit 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
nn
, x, b R
n
este o problem a invers a tipic a. Aplicat ia liniar a F este caracterizat a de n
2
coecient 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 xat a
din ecare 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 si 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 si aritmetic a n virgul a otant 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 si 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 identicare. 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)
si valorile date, care poate denit a prin
r
m
=
n

j=1
_
y
i

i=1
y
i0
e
kitj
_
2
. (3.1.2)
Aceasta este o problem a invers a extremde dicil 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 utilizat a pentru cea mai bun a adaptare
a modelului la datele de intrare. Totusi, 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
Denit ia 3.2.1. Fie X un spat iu liniar normat, A X si x X. Un element x

A se
numeste aproximant a a lui x din A (notat ie x

x).
Denit ia 3.2.2. Dac a x

este o aproximant a a lui x diferent a x = x x

se numeste
eroare, iar
|x| = |x

x| (3.2.1)
se numeste eroare absolut a.
Denit ia 3.2.3. Expresia
x =
|x|
|x|
, x ,= 0 (3.2.2)
se numeste eroare relativ a.
Observat ia 3.2.4.
1. Deoarece n practic a x este necunoscut, se foloseste 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
si x = x

x.
3.3. Eroarea propagat a 75
3.3. Eroarea propagat a
Fie f : R
n
R, x = (x
1
, . . . , x
n
) si x

= (x

1
, . . . , x

n
). Dorim s a evalu am
eroarea absolut a si relativ a f si 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 sucient de mici, atunci x
i
x
j
sunt neglijabile comparativ cu x
i
si
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

i
ln f(x

) =
=
n

i=1
x

i
x
i

i
ln f(x

).
Deci
f =
n

i=1
x

i
ln f(x

)x
i
. (3.3.2)
De o mare important a practic a este si 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 e
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
acelasi 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

i
ln f(x

. (3.3.4)
76 Elemente de Teoria erorilor si aritmetic a n virgul a otant a
3.4. Reprezentarea n virgul a otant a
3.4.1. Parametrii reprezent arii
Desi au fost propuse mai multe reprezent ari pentru numerele reale, reprezentarea n vir-
gul a otant a este cea mai r asp andit a. Parametrii reprezent arii n virgul a otant a sunt baza
(ntotdeauna par a), precizia p, exponentul maxim e
max
si cel minim e
min
, toate numere
naturale.

In general, un num ar n virgul a otant a se reprezint a sub forma
x = d
0
.d
1
d
2
. . . d
p1

e
, 0 d
i
< (3.4.1)
unde d
0
.d
1
d
2
. . . d
p1
se numeste semnicant sau mantis a, iar e exponent . Valoarea lui x
este
(d
0
+d
1

1
+d
2

2
+ +d
p1

(p1)
)
e
. (3.4.2)
Pentru ca reprezentarea n virgul a otant a s a e unic a, numerele otante se normalizeaz a,
adic a se modic a reprezentarea (nu valoarea) astfel nc at d
0
,= 0. Zero se reprezint a ca
1.0
emin1
.

In acest mod ordinea numeric a uzual a a numerelor reale nenegative corespunde


ordinii lexicograce a reprezent arii lor otante (cu exponentul n st anga semnicantului).
Termenul de num ar n virgul a otant a este utilizat pentru a desemna un num ar real care
poate reprezentat exact n virgul a otant a.
Distribut ia numerelor n virgul a otant a pe axa real a apare n gura 3.1.

e
min
e
min
+1

e
min
+2
0

e
min
+3
Figura 3.1: Distribut ia numerelor n virgul a otant a pe axa real a (f ar a denormalizare)
Fiecare interval de forma [
e
,
e+1
) din Rcont ine
p
numere n virgul a otant a (num arul
posibil de semnicant i). Intervalul (0,
emin
) este gol si din acest motiv se introduc nu-
merele denormalizate, adic a numere cu semnicantul de forma 0.d
1
d
2
. . . d
p1
si exponentul

emin1
. Faptul c a se admit numere denormalizate sau nu se consider a a un parametru su-
plimentar al reprezent arii. Mult imea numerelor n virgul a otant 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 otant a c and se admite denormalizarea apare n gura 3.2.
Aceast a mult ime nu coincide cu R din urm atoarele motive:
1. este o submult ime nit a a lui Q;
3.4. Reprezentarea n virgul a otant a 77
0

e
min
e
min
+1

e
min
+2

e
min
+3
Figura 3.2: Distribut ia numerelor n virgul a otant a pe axa real a (cu denormalizare)
2. pentru x R putem avea [x[ >
emax
(dep asire superioar a) sau [x[ < 1.0
emin
(dep asire 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 foloseste 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
p1

e
, atunci eroarea este
[d
0
.d
1
d
2
. . . d
p1
z/
e
[
p1
ulps.
Eroarea relativ a ce corespunde la
1
2
ulps este
1
2

1
2
ulps

2

p
,
c aci eroarea absolut a este 0.0 . . . 0
. .
p


e
, cu

=

2
. Valoarea eps =

2

p
se numeste
epsilon-ul masinii.
Rotunjirea implicit a se face dup a regula cifrei pare: dac a x = d
0
.d
1
. . . d
p1
d
p
. . . si
d
p
>

2
rotunjirea se face n sus, dac a d
p
<

2
rotunjirea se face n jos, iar dac a d
p
=

2
si
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 operat ia de rotunjire, operat iile aritmetice din F se
pot deni prin
x y = (x y). (3.4.3)
Se pot alege si 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 otant 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 otant a este exact a p an a la o eroare relativ a
de cel mult eps.
Formula (3.4.4) se numeste axioma fundamental a a aritmeticii n virgul a otant a.
78 Elemente de Teoria erorilor si aritmetic a n virgul a otant a
3.4.2. Anularea
Din formulele pentru eroarea relativ a (3.3.2), dac a x x(1 +
x
) si y y(1 +
y
), avem
urm atoarele expresii pentru erorile relative ale operat iilor n virgul a otant 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
xy
. Acest fenomen se numeste anulare si este reprezentat grac
n gura 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

g g g g e
= 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 si catastrofal a,
c and se scad dou a cantit at i deja rotunjite. Programatorul trebuie s a e constient de posi-
bilitatea aparit iei anul arii si 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 si 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 amplic 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 otant 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 amplic am cu conjugata
x
1
=
2c
b

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

b
2
4ac
(3.4.11)
si s a utiliz amn primul caz formulele (3.4.10) si (3.4.9), iar n al doilea caz (3.4.8) si (3.4.11).
S a consider am acum ecuat ia de gradul al doilea cu a = 1, b = 100000000 si c = 1.
Aplic and formulele 3.4.8 si 3.4.9 obt inem:
>>a=1; c=1; b=-100000000;
>>x1=(-b+sqrt(b2-4
*
a
*
c))/(2
*
a)
x1 =
100000000
>>x2=(-b-sqrt(b2-4
*
a
*
c))/(2
*
a)
x2 =
7.45058059692383e-009
Dac a se amplic a cu conjugata pentru a calcula x
2
avem:
>>x1=(-b+sqrt(b2-4
*
a
*
c))/(2
*
a)
x1 =
100000000
>> x2a=2
*
c/(-b+sqrt(b2-4
*
a
*
c))
x2a =
1e-008
Aceleasi rezultate se obt in si cu funct ia root.
3.5. Standardizarea reprezent arii n virgul a otant a
3.5.1. Parametrii standardului
Exist a dou a standarde diferite pentru calculul n virgul a otant a: IEEE 754 care prevede
= 2 si 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 si aritmetic a n virgul a otant 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 otante
Motivele pentru formatele extinse sunt:
1. o mai bun a precizie;
2. pentru conversia din binar n zecimal si invers este nevoie de 9 cifre n simpl a precizie
si 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 asire.
Operat iile , , , trebuie s a e exact rotunjite. Precizia aceasta se asigur a cu dou a
cifre de gard a si un bit suplimentar.
Reprezentarea exponentului se numeste reprezentare cu exponent deplasat, adic a n loc
de e se reprezint a e +D, unde D este xat la alegerea reprezent arii.

In cazul IEEE 754, D = 127.


3.5.2. Cantit ati speciale

In standardul IEEE 754 exist a urm atoarele cantit at i speciale:


Exponent Semnicant 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 tot NaN.
Innit. 1/0 = , 1/0 = . Valorile innite 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 si 0 < +sunt adev arate.
Avantaje: tratarea simpl a a dep asirilor inferioare si discontinuit at ilor. Se face distinct ie ntre
log 0 = si 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 asire superioar a si 0.
3.6. Numere n virgul a otant a n MATLAB 81
3.6. Numere n virgul a otant a n MATLAB
MATLAB utilizeaz a numere n virgul a otant 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 otant a. De exemplu, reprezent arile lui 1, -1, 0.1
si 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 otant a al MATLAB poate caracterizat de trei constante: realmin,
realmax si eps. Constanta realmin reprezint a cel mai mic num ar normalizat n virgul a
otant a. Orice cantitate mai mic a dec at ea este e un num ar denormalizat, e d a dep asire
inferioar a. Cel mai mare num ar reprezentabil n virgul a otant a se numeste realmax. Orice
cantitate mai mare dec at el d a dep asire superioar a. Epsilon-ul masinii 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 (2eps)2
1023
1.797693134862316e+308 7fefffffffffffff
Funct iile din sursele 3.1 si 3.2 calculeaz a eps. Este instructiv s a se tasteze individual, la
prompterul MATLAB, ecare 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 si aritmetic a n virgul a otant 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 si realmin. Nu-
merele denormalizate sunt reprezentate lu and e = 1023. Deplasamentul este D = 1023.
Innitul, Inf, se reprezint a lu and e = 1024 si f = 0, iar NaN cu e = 1024 si f ,= 0. De
exemplu
>> format short
>> Inf-Inf
ans =
NaN
>> Inf/Inf
ans =
NaN
Dou a funct ii care descompun n componente si recompun din componente numerele n
virgul a otant a sunt log2 si pow2. Expresia [F,E]=log2(X) returneaz a un tablou F de
numere reale, de aceeasi dimensiune ca si X, care veric a 0.5 <= abs(F) < 1 si un tablou
E de ntregi, de aceeasi dimensiune ca si X, astfel nc at X = F.
*
2E. Dac a un element al lui
X este zero, pe pozit ia respectiv a vom avea F=0 si E=0. Aceast a funct ie corespunde funct iei
ANSI C frexp() si funct iei logb() din standardul IEEE. Comanda X=pow2(F,E),
3.6. Numere n virgul a otant a n MATLAB 83
unde F este un tablou de reale si E un tablou de ntregi calculeaz a X=F.
*
(2.E). Intern,
se adun a E la exponent ii otant i ai elementelor lui F. Aceast a funct ie corespunde funct iei
ANSI C ldexp() si 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 si numere n virgul a otant a n simpl a pre-
cizie. De exemplu,
>> a = single(5);
atribuie lui a valoarea 5 reprezentat a n virgul a otant 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 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 si un double este de tip single, ca n exemplele:
>> x = single(2)
*
single(3)
x =
6
84 Elemente de Teoria erorilor si aritmetic a n virgul a otant a
>> class(x)
ans =
single
>> x = single(8)+3
x =
11
>> class(x)
ans =
single
Funct iile eps, realmin si realmax pot apelate si 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 otant a. Comanda


d=eps(x) unde x este un num ar n virgul a oatant a single sau double, d a distant a
de la abs(x) la cel mai apropiat num ar n virgul a otant a mai mare dec at x si de aceeasi
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 otant a simpl a precizie este mai mare dec at
cea ntre numerele n virgul a otant 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
innit a. Condit ionarea lui f este deci o proprietate inerent a a funct iei f si 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 specic si aritmetica n virgul a otant a) este (si acest lucru
se poate demonstra) solut ia unei probleme ,,apropiate
y

= f(x

) (3.7.2)
cu
x

= x + (3.7.3)
si, mai mult, distant a || = |x

x| poate estimat a n termeni de precizie a masinii. Deci,


dac a stim c at de tare sau c at de slab react ioneaz a aplicat ia la mici perturbat ii, cum ar n
(3.7.3), putem spune ceva despre eroarea y

y a solut iei cauzat a de aceast a perturbat ie.


Se poate considera si condit ionarea ntre aplicat ii mai generale, dar pentru implement ari
practice este sucient s a ne limit am la cazul nit 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 privit ca o funct ie de o singur a variabil a x

= (cond

f)(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)
si vom lua ca num ar de condit ionare
(cond f)(x) = |(x)|. (3.7.6)
86 Elemente de Teoria erorilor si aritmetic a n virgul a otant a
Alt a abordare. Consider am norma | |

=1
f

(= f

(x + x) f

(x))
[y

[
n

=1

max

[x

[
m

=1

max

[x

[ max

=1

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 si eroarea relativ a pentru y
(cond f)(x) =

(x)
f(x)

;
pentru y = 0 x ,= 0 se ia eroarea absolut a pentru y si 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
mn
si
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 si b, iar rezultatul este vectorul x. Pentru a
simplica lucrurile s a presupunem c a A este o matrice xat a care nu se schimb a si c a b ar
putea 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
si utiliz and (3.7.9) obt inem
(cond f)(b) =
|b||A
1
|
|A
1
b|
=
|Ax||A
1
|
|A
1
b|
,
max
bR
n
b=0
(cond f)(b) = max
xR
n
b=0
|Ax|
|x|
|A
1
| = |A||A
1
|.
(3.7.11)

Num arul |A||A


1
| se numeste num ar de condit ionare al matricei A si 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
otant 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 otant a, si 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.
Denim condit ionarea lui An x compar and eroarea relativ a la intrare cu eps:
(cond A)(x) = inf
xA
|x
A
x|
|x|
_
eps .
Justicare:

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 si aritmetic a n virgul a otant a
Inmumul 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
si se obt ine o margine superioar a a num arului de condit ionare
(cond A)(x)
xAx
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 otant a,
cu precizia eps, utiliz and un algoritm A, rotunjim la nceput toate datele si 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 si 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 si 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 si eps contribuie mpreun a la eroarea total a. Ambele sunt
amplicate de condit ionarea problemei, dar ultima este amplicat a si de condit ionarea algo-
ritmului.
3.10. Probleme prost conditionate si 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 astept am la erori foarte mari n datele de iesire.
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 si cele prost condit ionate. O catego-
rizare a unei probleme n prost condit ionat a sau bine condit ionat a depinde de specicat iile de
precizie. Dac a dorim ca
|y

A
|
|y|
<
si 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 crestem num arul de iterat ii, nu vom putea creste 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 perturbat substant ial, chiar dac a datele de intrare
sunt precise si 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 gura 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 innit.
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] si [44]). Vom compara valoarea obt inut a prin evaluarea
lui p(x) = (x 1)
7
prin expandare si utilizarea schemei lui Horner si 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 si aritmetic a n virgul a otant 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) si direct
3.11. Stabilitatea 91
3.11. Stabilitatea
3.11.1. Notatii asimptotice
Aceast a subsect iune introduce notat iile asimptotice de baz a si 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
.
Desi (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).
Denit ia mult imii (g(n)) necesit a ca ecare membru al ei s a e asimptotic nenegativ,
adic a f(n) 0 c and n este sucient de mare.

In consecint a g(n) trebuie s a e si ea asimptotic


negativ a, c aci altfel (g(n)) este vid a. Din acest motiv vom presupune c a ecare funct ie
utilizat a n interiorul notat iei este asimptotic nenegativ a. Aceast a presupunere are loc si
pentru celelate notat ii asimptotice care vor denite 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 denit 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 si 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 su-
cient de apropiat de o limit a subnt eleas a (de exemplu t sau t 0) avem
[f(t)[ Cg(t). (3.11.1)
92 Elemente de Teoria erorilor si aritmetic a n virgul a otant a
3.11.2. Precizie si stabilitate
Vom considera o problem a ca ind o aplicat ie f : X Y , unde X si Y sunt spat ii
liniare normate (pentru scopurile noastre ne vom limita la cazul nit 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 niste date prescrise x se va numi instant a
a problemei, dar se obisnuieste s a se utilizeze termenul de problem a pentru ambele not iuni.
Numerele complexe sunt reprezentate printr-o pereche de numere n virgul a otant a si
operat iile elementare se realizeaz a pe aceast a reprezentare. Rezultatul este acela c a axioma
(3.4.4) este valabil a si pentru numere complexe, except and faptul c a la operat iile si eps
trebuie m arit cu un factor de 2
3/2
si respectiv 2
5/2
.
Un algoritm va privit ca o aplicat ie f
A
: X Y , unde X si Y sunt ca mai sus. Fie f
o problem a, un calculator al c arui sistem de numere n virgul a otant a satisface (3.4.4), dar
nu neap arat (3.4.3), un algoritm f
A
pentru f si o implementare a acestui algoritm sub form a
de program pe calculator, A, toate xate. D andu-se o dat a x X, o vom rotunji la un num ar
n virgul a otant a si apoi o vom furniza programului. Rezultatul este o colect ie de numere n
virgul a otant 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 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 veric a
|f
A
(x) f(x)|
|f(x)|
= O(eps). (3.11.2)
Dac a problema f este prost condit ionat a, obiectivul preciziei, asa cum este denit de
(3.11.2), este nerezonabil de ambit ios. Erorile de rotunjire n datele de intrare sunt inevitabile
pe calculatoare numerice si chiar dac a toate calculele urm atoare se realizeaz a perfect, aceast a
perturbat ie ne conduce la o modicare semnicativ 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 si 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 denit 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. Semnicat 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 si 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 implicit a.
Pentru orice aritmetic a pe calculator particular a eps este o cantitate xat 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) si (3.4.4) pentru un sir de eps-uri descresc ator ce tinde
c atre zero, se garanteaz a c a [[cantitate calculat a[[ descreste proport ional cu eps sau mai
repede. Acestor calculatoare ideale li se cere s a satisfac a doar (3.4.3) si (3.4.4) si nimic
altceva.
Constanta implicit a din notat ia O poate depinde si de dimensiunile argumentelor (de
exemplu pentru rezolvarea unui sistem Ax = b de dimensiunile lui A si b).

In general,
n probleme practice, cresterea erorii datorat a dimensiunii este lent a, dar pot exista
situat ii n care s a apar a factori cum ar 2
m
, care fac astfel de margini inutile n prac-
tic a.
Datorit a echivalent ei normelor pe spat ii nit dimensionale, pentru problemele f si algo-
ritmii f
A
denite pe astfel de spat ii, propriet at ile de precizie, stabilitate si 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) si
(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 denit 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 si aritmetic a n virgul a otant a
astfel nc at f
A
(x) = f ( x). Din denit ia (3.7.5) si (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 pasi.
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 nal a reect a acel num ar de condit ionare.

In afar a de analiza regresiv a a erorilor, exist a si o analiz a direct a sau progresiv a. Aici se
estimeaz a erorile de rotunjire la ecare pas si apoi modul cum se compun si n nal 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 niste date usor 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 si 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 (si n general pentru x = 2k, k mare)? Explicat i fenomenul
si propunet i un remediu.
Problema 3.2. Fie
E
n
=
1
_
0
x
n
e
x1
dx.
3.11. Stabilitatea 95
Se observ a c a E
1
= 1/e si E
n
= 1 nE
n1
, n = 2, 3, . . . . Se poate ar at a c a
0 < E
n
<
1
n + 1
si dac a E
1
= c avem
lim
n
E
n
=
_
0, pentru c = 1/e
altfel.
Explicat i fenomenul, g asit i un remediu si calculat i e cu precizia eps.
Problema 3.3. S a se studieze teoretic si experimental condit ionarea problemei determin arii
r ad acinilor ecuat iei polinomiale
x
n
+a
1
x
n1
+a
2
x
n2
+ +a
n
= 0 (3.11.9)
cunosc andu-se coecient ii. Se va scrie o rutin a pentru calculul num arului de condit ionare
al ec arei r ad acini si se va studia grac efectul perturb arii ec arui coecient cu o variabil a
aleatoare normal a cu media 0 si dispersia 1e-10.
Aplicat ie pentru ecuat iile
(x 1)(x 2) . . . (x n) = 0
si (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 reprezentat
exact n MATLABn dubl a precizie? Care este indicele celui mai mare num ar Fibonacci care
poate reprezentat n MATLAB n dubl a precizie f ar a a da dep asire otant a superioar a?
Problema 3.5. Fie F mult imea tuturor numerelor n virgul a otant a IEEE, except and NaN
si Inf, care au exponentul deplasat 7ff (n hexazecimal) si 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 otant a
pentru care cu format hex se aseaz a urm atoarele valori:
4059000000000000
3f847ae147ae147b
3fe921fb54442d18
96 Elemente de Teoria erorilor si aritmetic a n virgul a otant a
Problema 3.7. Explicat i rezultatele asate de
t = 0.1
n = 1:10
e = n/10 - n
*
t
Problema 3.8. Ce face ecare din urm atoarele programe? C ate linii de iesire produce ecare
program? Care sunt ultimele dou a valori ale lui x asate?
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 si dat i o evaluare a erorii (vezi [25]).
Problema 3.10. Dispersia de select ie se deneste 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 si 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 justice
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. Ranarea 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 si 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 nit de pasi, n ipoteza c a toate calculele
se fac exact (Cramer, eliminarea gaussian a, Cholesky) si metode iterative, care aproximeaz a
solut ia gener and un sir 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 deneste prin
|x|
p
=
_
n

i=1
[x
i
[
p
_
1/p
1 p < .
Pentru p = norma este denit a prin
|x|

= max
i=1,n
[x
i
[.
Norma | |
2
se numeste norm a euclidian a, | |
1
se numeste norm a Minkowski, iar | |

se
numeste norm a Cebsev.
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
nn
. Polinomul p() = det(A I) se numeste 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 numeste 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 numeste raz a spectral a a matricei
A. Vom nota cu A
T
transpusa lui A si cu A

transpusa conjugat a a lui A.


Denit ia 4.1.1. O matrice A se numeste:
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.
Denit ia 4.1.2. O norm a matricial a este o aplicat ie | | : K
mn
R care pentru orice
A, B K
mn
si K veric 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
mn
, care este si spat iu vec-
torial de dimensiune mn, iar (NM4) este specic a normelor matriciale. Un mijloc simplu de
construire a normelor matriciale este urm atorul: ind dat a o norm a vectorial a | | pe C
n
,
aplicat ia | | : C
nn
R
|A| = sup
vC
n
v=0
|Av|
|v|
= sup
vC
n
v1
|Av| = sup
vC
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 veric 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
nn
(C). Atunci
|A|
1
:= sup
vC
n
\{0}
|Av|
1
|v|
1
= max
j

i
[a
ij
[,
|A|

:= sup
vC
n
\{0}
|Av|

|v|

= max
i

j
[a
ij
[,
|A|
2
:= sup
vC
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
=

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 veric 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 veric 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, veric a
|Au|

=
_
_
_
max
i

j
[a
ij
[
_
_
_
|u|

.
Deoarece AA

este hermitian a, exist a o descompunere proprie AA

= QQ

, unde Q
este o matrice unitar a (ale c arei coloane sunt vectori proprii) si este matricea diagonal a a
valorilor proprii, care trebuie s a e toate reale. Dac a ar exista o valoare proprie negativ a si
q ar 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

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

QQ

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

x)

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 si Ap ,= 0 ((A

A) > 0). Cum Ap ,= 0 si AA

(Ap) = (A

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

A) (AA

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

AU) = (A

UA) = (U

UU

AU).

In ne, 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 = (UU

UU = 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 si norma | |
2
veric a
|A|
2
= (A).
(4) Norma | |

se mai numeste norma Ceb asev 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 si || o norm a matricial a oarecare
(subordonat a sau nu). Atunci
(A) |A|. (4.1.1)
(2) Fiind dat a o matrice A si 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 veric a p ,= 0, Ap = p, [[ = (A) si 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
.
.
.
.
.
.

n1
t
n1,n

n
_
_
_
_
_
_
_
.
scalarii
i
ind 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
, . . . ,
n1
),
astfel ca
(UD

)
1
A(UD

) =
_
_
_
_
_
_
_

1
t
12

2
t
13
. . .
n1
t
1n

2
t
23
. . .
n2
t
2n
.
.
.
.
.
.

n1
t
n1n

n
_
_
_
_
_
_
_
.
Fiind dat > 0, x am astfel ca
n

j=i+1
[
ji
t
ij
[ , 1 i n 1.
4.1. Elemente de Analiz a matricial a 103
Atunci aplicat ia
| | : B K
nn
|B| = |(UD

)
1
B(UD

)|

,
care depinde de A si de r aspunde problemei.

Intr-adev ar, avem pe de o parte
|A| (A) +,
conformalegerii lui si denit iei normei | |

(|c
ij
|

= max
i

j
[c
ij
[) si 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
nn
R denit a prin
|A|
E
=
_
_
_

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
si care veric a
|A|
2
|A|
E

n|A|
2
, A K
nn
.
Demonstrat ie. | |
E
este norma euclidian a pe K
nn
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

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

UA) = |UA|
E
.

In ne, 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 numeste norm a Frobenius .
Teorema 4.1.8. Fie B o matrice p atratic a. Urm atoarele armat 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 sirul de
vectori (B
k
p)
kN
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 sucient s a aplic am inegalitatea |B
k
| |B|
k
.
Funct ia norm se poate aplica si 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
si consider am sistemul perturbat, n care membrul drept este foarte
put in modicat, 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) modic 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 si se compar a
solut iile exacte x si x +x ale sistemelor
Ax = b
A(x +x) = b +b.
Fie | | o norm a vectorial a oarecare si | | norma matricial a subordonat a. Din egalit at ile
x = A
1
b si 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 numeste 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 si
perturbat iile lui A si ale lui b. Consider am sistemul parametrizat, cu parametrul t
(A +tA)x(t) = b +tb, x(0) = x.
Matricea A ind 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 estimat a utiliz and
|x(t)| = |x(t) x| [t[ |x

(0)| +O(t
2
)
[t[
_
_
A
1
_
_
(|b| + |A| |x|) +O(t
2
)
si 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 si 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 si un algoritm recent al lui Higham
si 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) si un algoritm utilizat de LIN-
PACK si LAPACK. De interes mai mult istoric.
Exemplul 4.2.1 (Exemple de matrice prost conditionate). Matricea lui Hilbert
1
H
n
=
(h
ij
), cu h
ij
=
1
i+j1
, 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

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 veric am condit ionarea matricelor din exemplul 4.2.1. Pentru matricea Hilbert am folosit
secvent a (sierul testcondhilb.m):
1
David Hilbert (1862-1943) a fost cel mai important reprezentant al
scolii 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 si fundamentele matem-
aticii si 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 si 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 si 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
Vericarea pentru matrice Vandermonde cu elemente echidistante n [-1,1] s-a realizat cu
(sierul 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 si 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 (sierul
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
si 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 asarea
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
nn
, b K
n1
sunt date, iar x K
n1
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 si 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
construit cu rigla si 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 si neeuclidian a, funct ii eliptice si
hipergeometrice, mecanic a cereasc a si geodezie si diverse ramuri ale
zicii, n special magnetism si optic a. Eforturile sale de calcul n
mecanica cereasc a si 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 si metoda relax arii. Lucr arile lui Gauss n dome-
niul cuadraturilor numerice continu a munca predecesorilor s ai New-
ton si 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 nmult it a cu K

. Aceast a operat ie se va nota cu (E


i
) (E
i
).
2. Ecuat ia E
j
poate nmult it a cu K

si 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
si E
j
pot 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 coecient 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 coecient ii lui x
i
, pentru
i = 2, n 1, j = i + 1, n. Aceasta este posibil dac a a
ii
,= 0.
Procedura poate descris a astfel: se formeaz a o secvent a de matrice extinse

A
(1)
,

A
(2)
,
. . .,

A
(n)
, unde

A
(1)
= A si

A
(k)
are elementele a
(k)
ij
date de
_
E
i

a
(k1)
i,k1
a
(k1)
k1,k1
E
k1
_
(E
i
)
sau desf asurat
a
(k)
i,j
=
_

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

a
(k1)
i,k1
a
(k1)
k1,k1
a
(k1)
k1,j
, pentru i = k, n, j = k, n + 1
Observat ia 4.3.1. Notat ia a
(p)
ij
semnic 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,k1
a
(1)
1k
. . . a
(1)
1n
0 a
(2)
22
a
(2)
23
. . . a
(2)
2,k1
a
(2)
2,k
. . . a
(2)
2,n
.
.
.
.
.
. . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. a
(k1)
k1,k1
a
(k1)
k1,k
. . . a
(k1)
k1,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
(k1)
k1,n+1
a
(k)
k,n+1
.
.
.
a
(k)
n,n+1
_

_
reprezint a sistemul liniar echivalent n care variabila x
k1
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
si n general
x
i
=
1
a
(i)
ii
_
_
a
(i)
i,n+1

j=i+1
a
(i)
ij
x
j
_
_
, i = n 1, 1.
Pentru ca procedura s a e aplicabil a trebuie ca a
(i)
ii
,= 0, i = 1, n. Elementul a
(i)
ii
se
numeste 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 si 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 aceeasi coloan a duce la erori de rotunjire
substant iale. Aceasta se poate remedia aleg and ca pivot elementul din aceeasi coloan a care
este situat sub diagonal a si care are cea mai mare valoare absolut a, adic a determin and p astfel
nc at
[a
(k)
pk
[ = max
kin
[a
(k)
ik
[
si apoi f ac and (E
k
) (E
p
). Aceast a tehnic a se numeste 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 si prent ampin a anul arile n aritmetica otant a este
pivotarea scalat a pe coloan a. La primul pas se deneste un factor de scalare pentru ecare
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 pasii 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
1jn
[a
ji
[
s
j
si apoi (E
i
) (E
p
). Efectul scal arii este de a ne asigura c a elementul cel mai mare din
ecare 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, asa 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
si se realizeaz a si interschimb ari de linii si de coloane.
Pivotarea a fost introdus a de Goldstine si von Neumann n 1947 [26].
Dac a matricea A este singular a si are rangul p 1 atunci se obt ine

A
(p)
=
_

_
a
(1)
11
a
(1)
12
. . . a
(1)
1,p1
a
(1)
1p
. . . a
(1)
1n
a
(1)
1,n+1
0 a
(2)
22
. . . a
(2)
2,p1
a
(2)
2p
. . . a
(2)
2n
a
(2)
2,n+1
. . . . . . . . . . . . . . . . . . . . . . . .
0 0 . . . a
(p1)
p1,p1
a
(p1)
p1,p
. . . a
(p1)
p1,n
a
(p1)
p1,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 si 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 zic interschimbarea de linii
si/sau coloane, ci se pot p astra unul sau doi vectori de permut ari p(q) cu semnicat 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 e 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 numeste 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 otante, desemnate
prescurtat prin ops.

In corpul ciclului for interior avem 2n 2i + 3 ops, deci pentru ntreg ciclul (n
i)(2n 2i + 3) ops. Pentru ciclul exterior avem un total general de
n1

i=1
(n i)(2n 2i + 3)
2n
3
3
.
Pentru substitut ia invers a avem (n
2
) ops.
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 numeste 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, ecare 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 numeste 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 denit 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
n1
_ _
a
11
w

0 A

vw

/a
11
_
.
Matricea A

vw

/a
11
se numeste complement Schur al lui An raport cu a
11
. Se continu a
apoi cu descompunerea recursiv a a complementului Schur:
A

vw

/a
11
= L

.
A =
_
1 0
v/a
11
I
n1
_ _
a
11
w

0 A

vw

/a
11
_
=
=
_
1 0
v/a
11
I
n1
_ _
a
11
w

0 L

_
=
=
_
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 si 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
Vericare:
_
_
_
_
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
si 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 si 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
si
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
n1
_ _
a
k1
w

0 A

vw

/a
k1
_
.
Determin am mai departe descompunerea LUP a complementului Schur.
P

(A

vw

/a
k1
) = L

.
Denim
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
n1
_ _
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
n1
_ _
a
k1
w

0 P

(A

vw

/a
k1
)
_
=
=
_
1 0
P

v/a
k1
I
n1
_ _
a
k1
w

0 L

_
=
_
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 si 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 si 3 si 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
Vericare:
_
_
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, sierul


lup.m). Pentru completare, sursele MATLAB 4.3 si 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 si respectiv invers a.
4.4.3. Factorizarea Cholesky
Matricele hermitiene pozitiv denite pot 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 si la dreapta
matricei, p astr and si exploat and simetria.
4
Andre-Louis Cholesky (1875-1918) ot er francez, specialist n topograe si geodezie, a activat n Creta si Africa
de nord naintea nceperii primului r azboi mondial. A dezvoltat metoda care i poart a numele si 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 denite joac a un rol important n algebra liniar a
numeric a si n aplicat ii. Datorit a legilor fundamentale ale zicii, 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 denit a si X este o matrice de tip m n de rang maxim, cu m n,
atunci matricea X

AX este de asemenea hermitian a pozitiv denit a deoarece (X

AX)

=
X

X = X

AX si pentru orice vector x ,= 0 avem Xx ,= 0 si astfel x

(X

AX) x =
(Xx)

A(Xx) > 0. Aleg and pe post de X o matrice mn cu un 1 n ecare coloan a si 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 e pozitiv denit a.

In particular, orice element
diagonal al lui A este un num ar real pozitiv.
Valorile proprii ale unei matrice hermitiene pozitiv denite sunt de asemenea numere
reale pozitive, Dac a Ax = x pentru x ,= 0, avem x

Ax = x

x > 0 si deci > 0


si reciproc, dac a toate valorile proprii sunt pozitive, atunci A este pozitiv denit 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 Benot, 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
si 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 denit a A C
mm
are o factorizare
Cholesky (4.4.1) unic a.
Demonstrat ie. (Existent a) Deoarece A este hermitian a si pozitiv denit a a
11
> 0 si 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
ind o submatrice principal a de tip (m 1) (m 1) a matricei pozitiv denite
R

1
AR
1
1
este pozitiv denit a si 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
denite si procesul nu poate esua. Continu am cu factorizarea lui A
1
= R

2
A
2
R
2
si 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 stabileste si unicitatea. La ecare pas (4.4.2),
valoarea =

a
11
este determinat a din forma factoriz arii R

R si 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 ecare 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 simplicare 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 si jum atatea de deasupra diagonalei pricipale a matricei hermitiene si pozitiv denite
de tip m m ce urmeaz a a 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 iesire 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 si m j + 1 sc aderi, deci un total de 2(m j)
ops. Acest calcul este repetat pentru ecare j de la k + 1 la m si acest ciclu este repetat
pentru ecare k de la 1 la m. Suma se evalueaz a direct
m

k=1
m

j=k+1
2(mj) 2
m

k=1
k

j=1
j
m

k=1
k
2

1
3
m
3
ops,
deci jum atate din volumul de calcule necesar pentru eliminarea gaussian a.
4.4.4. Descompunerea QR
Teorema 4.4.6. Fie A R
mn
, cu m n. Atunci exist a o matrice ortogonal a unic a Q de
tip m n si 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 dat n aceast a sect iune.
Perechea (Q, R) din teorema 4.4.6 se numeste descompunere QR a lui A.
Matricele ortogonale si unitare sunt utile n calculele numerice, deoarece ele conserv a
lungimile, unghiurile si nu amplic a erorile.
122 Rezolvarea numeric a a sistemelor de ecuat ii algebrice liniare
Px=||x||e
1
u
x
H
Figura 4.2: Un reector Householder
Transform ari Householder
O transformare Householder
5
(sau reexie) este o matrice de forma P = I 2uu
T
,
unde |u|
2
= 1. Se veric a usor c a P = P
T
si 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 si ortogonal a. Ea se numeste
reexie deoarece Px este reexia lui x fat a de hiperplanul H ce trece prin origine si este
ortogonal pe u (gura 4.2).
D andu-se un vector x, este usor de g asit reexia 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 si e
1
. Deoarece |x|
2
= |Px|
2
= [c[, u trebuie s a e paralel cu
vectorul u = x|x|
2
e
1
, deci u = u/| u|
2
. Se poate verica 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 otant a la calculul componentelor lui u. Dac a
5
Alston S. Householder (1904-1993), matematician american.
Contribut ii importante n biologia matematic a si 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 si 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 si 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 usor 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 nal 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 reexii 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 QT
*
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
_
roteste vectorul x R
2
cu un unghi .
De asemenea, avem nevoie de rotat ia Givens cu un unghi n coordonatele i si j:
R(i, j, ) :=
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
i j
1
1
.
.
.
i cos sin
.
.
.
j sin cos
.
.
.
1
1
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
.
D andu-se x, i si j putem anula x
j
aleg and cos si 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 reexii Householder,
dar c and anul am coloana i se anuleaz a un element la un moment dat.
Exemplul 4.4.8. Vom ilustra doi pasi 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
_

_
si
_

_
1
1
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 reexii
Househoulder. Ele sunt utilizate n alte aplicat ii (de exemplu valori proprii).
Iat a c ateva detalii de implementare. Calculul sinusului si cosinusului din matricea Givens
este dat n algoritmul 4.1. El necesit a 5 ops si un radical. Nu necesit a funct ii trigonometrice
Algoritmul 4.1 D andu-se scalarii a si b, calculeaz a elementele c = cos() si 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 si nu d a dep asire 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) ops. De notat c a se pot utiliza si
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
mn
Iesire: R = Q
T
A, unde R este triunghiular a superior.
for j := 1 to n do
for i := m1 downto j + 1 do
[c, s] = givens(A
i1,j
, A
i,j
);
A
i1:i,j:n
=
_
c s
s c
_
T
A
i1: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 mini 1, n
Astfel, zerourile vor 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 si i ca n algoritmul 4.2, am putea roti liniile j si 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 := m1 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 si c = cos . Dac a [s[ < [c[ se memoreaz a s sign(c); altfel se memoreaz a
sign(s)
c
.
Pentru a recupera s si c din valoarea memorat a (s a o numim p) vom proceda astfel: dac a
[p[ < 1, atunci s := p si c =

1 s
2
; altfel c := 1/p si s :=

1 c
2
. Motivul pentru care
nu memor am s si nu calcul am c =

1 s
2
este acela c a dac a s este apropiat de 1, c va
imprecis (datorit a anul arii otante). Se poate recupera e s si c, e s si c; acest lucru este
convenabil n practic a.
Secvent a de rotat ii Givens se poate aplica n asa fel nc at s a e necesare mai put ine ops
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. Ranarea 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 Ax
1
= b Ax
Se rezolv a sistemul si 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
i1
| < 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 nmultirea matricelor
Fie A, B K
nn
. Dorim s a calcul am C = AB. Presupunem c a n = 2
k
. Partit ion am A
si 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 si 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
si c a
A, B R
mm
. 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 si 18 adun ari
sau sc aderi pe pas, timpul de execut ie veric 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 si 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 si c-urile.
Accelerarea teoretic a obt inut a pentru nmult irea matricelor se traduce printr-o accelerare
a invers arii matricelor, deci si 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 si cu I(n) timpul de inversare a
unei matrice de acelasi ordin, atunci M(n) = (I(n)). Vom demonstra aceasta n dou a
etape: ar at am c a M(n) = O(I(n)) si 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 Asi B dou a matrice nn. Vrem s a calcul amC = AB. Denim 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
_
_
,
si, 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 Dntr-un timp de ordinul (n
2
) = O(I(n)) si 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 denite.
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
) si M(n) satisface condit iile de
regularitate M(n) = O(M(n+k)) pentru orice k, 0 k n si 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

. Asadar, aleg and pe k astfel nc at n + k s a e o putere a lui 2, extin-


dem matricea la o dimensiune care este puterea urm atoare a lui 2 si 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 cresterea timpului dec at cu cel mult un factor constant.
Pentru moment, s a presupunem c a A este o matrice n n simetric a si pozitiv-denit 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 = DCB
1
C
T
(4.6.2)
4.7. Rezolvarea sistemelor de ecuat ii liniare n MATLAB 131
este complementul Schur al lui An 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 verica prin nmult ire. Matricele B
1
si S
1
exist a, deoarece A este
simetric a si pozitiv denit a, deoarece at at B c at si S sunt simetrice si pozitiv denite.

In
plus, B
1
C
T
= (CB
1
)
T
si B
1
C
T
S
1
= (S
1
CB
1
)
T
. Putem folosi ecuat iile (4.6.2)
si (4.6.3) pentru a specica 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-denite 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 si pozitiv denit a.
Deoarece A
T
A este simetric a si pozitiv denit 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
, si 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 si pozitiv denit a A
T
A prin algoritmul divide et impera prezentat,
si, n nal nmult ind rezultatul cu A
T
. Fiecare din acesti pasi necesit a un timp O(M(n)).
Astfel, orice matrice nesingular a cu elemente reale poate 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 areste num arul de condit ionare.
4.7. Rezolvarea sistemelor de ecuat ii liniare n MATLAB
Fie m num arul de ecuat ii si 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) si subdeterminate (m < n). Vom reveni asupra sistemelor supradeterminate vor
tratate n capitolul urm ator. Mai general, operatorul poate 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 coecient ilor. Di-
versele cazuri, care sunt diagnosticate automat prin examinarea matricei sistemului includ:
matrice triunghiulare sau permut ari de matrice triunghiulare;
matrice simetrice, pozitiv denite;
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 Ab 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) si tip areste 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
Ab 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 decient a de rang), Ab calculeaz a o solut ie de baz a cu cel mult k elemente nenule (k
este determinat si 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 si cu x min=pinv(A)
*
b, unde pinv(A) este pseudo-
inversa lui A. Dac a A este decient 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 si deciente 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 e s a nu avem nici o solut ie e s a avem o


innitate.

In ultimul caz, Ab 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 Ab 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 si 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 foloseste 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 si 4 necunoscute. Deoarece matricea coecient ilor cont ine ntregi mici,
este recomandabil s a as 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 caracterizat a prin ad augarea unui
vector arbitrar din spat iul nul al matricei sistemului, care poate 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 verica c a R
*
Z este zero si orice vector de forma x=p+Z
*
q, unde q este un vector
arbitrar, satisface R
*
x=b.
4.7.4. Factorizarea LU si Cholesky
Funct ia lu calculeaz a o factorizare LUP cu pivotare part ial a. Apelul [L,U,P]=lu(A)
returneaz a factorii triunghiulari si 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
Desi factorizarea LU este denit a si pentru matrice dreptunghiulare, lu accept a la intrare
numai matrice p atratice.
Rezolvarea sistemului Ax=b cu x=Ab cu A p atratic a este echivalent a cu secvent a MAT-
LAB:
[L,U] = lu(A); x = U\(L\b);
Determinantul si 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 si pozitiv denit 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 recunoaste sisteme triunghiulare, sistemul se poate rezolva rapid cu
x=R(RRb). 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 denit 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 esec p este un num ar natural nenul. Pentru detalii a se vedea
help chol sau doc chol.
Funct ia cholupdate modic 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 si 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 si o matrice superior triunghiular a R de dimensiune
mn. Forma de apel este [Q,R]=qr(C).

In multe cazuri ultimele mn 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
si 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 astigul de timp si memorie poate 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
veric a [r
11
[ [r
22
[ [r
nn
[. Pivotarea pe coloane este util a pentru detectarea sin-
gularit at ilor sau decient 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 iesire, 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, qrinsertsi qrupdatemodic a factorizarea QRc and se sterge 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, desi 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
specicarea 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 verica dac a A are
astfel de propriet at i. D am lista numelor de c ampuri si 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 denit a
RECT dreptunghiular a
TRANSA transpusa (conjugat a) a lui A specic a dac a se rezolv a
A
*
x=b sau Ax=b
Dac a opts lipseste, sistemul se rezolv a cu factorizare LUP, dac a A este p atratic a si cu fac-
torizare QR cu pivotare n caz contrar. Dac a A este prost condit ionat a n cazul p atratic sau
decient 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 si un vector c astfel nc at I T
s a e inversabil a si astfel nc at punctul x unic al ecuat iei
x = Tx +c (4.8.2)
s a e 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 deneste sirul (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
si
(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
(k1)
+c = T(Tu
(k2)
+c) +c = =
= T
k
x
(0)
+ (I +T + +T
n1
)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 x a lui Banach se obt ine:
Teorema 4.8.3. Dac a exist a | | astfel nc at |T| < 1, sirul (x
(k)
) denit de (4.8.3) este
convergent pentru orice x
(0)
R
n
si 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 porneste de la o
aproximat ie init ial a x
(0)
R
n
(C
n
) si genereaz a un sir 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
nn
, c K
n
. Se genereaz a un sir de forma x
(k)
= Tx
(k1)
+ c.
Un posibil criteriu de oprire este
|x
(k)
x
(k1)
|
1 |T|
|T|
. (4.8.5)
El are la baz a rezultatul urm ator:
Propozitia 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
(k1)
|. (4.8.6)
Demonstrat ie. Fie p N

. Avem
|x
(k+p)
x
(k)
| |x
(k+1)
x
(k)
| + +|x
(k+p)
x
(k+p1)
|. (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
(m1)
|
sau, pentru k < m
|x
(m+1)
x
(m)
| |T|
mk+1
|x
(k)
x
(k1)
|.
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
(k1)
|
(|T| + +|T|
p
+. . . )|x
(k)
x
(k1)
|.
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
(k1)
|,
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
(k1)
|,
iar criteriul de oprire
|x
(k)
x
(k1)
| .
Tehnicile iterative sunt rar utilizate pentru a rezolva sisteme de mici dimensiuni, deoarece
timpul necesar pentru a obt ine precizia dorit a dep aseste timpul necesar pentru eliminarea
gaussian a. Pentru sisteme rare (a c aror matrice are multe zerouri), de mari dimensiuni,
metodele iterative sunt eciente si din punct de vedere al spat iului si 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 usor 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 sirul
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 numeste metoda lui Jacobi
6
. (D
6
Carl Gustav Jacob Jacobi (1804-1851) a fost contemporan al lui
Gauss, si 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 si 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

j=1
j=i
a
ij
x
(k1)
j
_
_
_.
La calculul lui x
(k)
i
se utilizeaz a componentele lui x
(k1)
(substitut ia simultan a).
Deoarece pentru i > 1, x
(k)
1
, . . . , x
(k)
i1
au fost deja calculat i si se presupune c a sunt
aproximat ii mai bune ale componentelor solut iei dec at x
(k1)
1
, . . . , x
(k1)
i1
, 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

i1

j=1
a
ij
x
(k)
j

n

j=i+1
a
ij
x
(k1)
j
_
_
.
Se pot da condit ii necesare si suciente pentru convergent a metodei lui Jacobi si a metodei
Gauss-Seidel
(T
J
) < 1
(T
GS
) < 1
si condit ii suciente: 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 si 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 numeste 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 si

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

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 denit a si 0 < < 2,
SOR converge pentru orice alegere a aproximat iei init iale x
(0)
.
Demonstrat ie. Demonstrat ia se face n doi pasi. Fie M =
1
(D L). Atunci:
(1) denim Q = A
1
(2M A) si ar at am ca Re
i
(Q) > 0, pentru orice i.
(2) ar at am c a T

= (QI)(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 (2MA)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 si (
2

1)D sunt pozitiv


denite.
Pentru a demonstra (2), observ am c a
(QI)(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 si 4.8.6 ne dau o condit ie necesar a si sucient a pentru convergent a metodei
relax arii dac a matricea sistemului este simetric a si pozitiv denit 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 (si Gauss-Seidel) avem urm atoarele condit ii su-
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 ecient 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-rt2));
Teorema 4.8.8. Fie B o matrice p atratic a si | | o norm a matricial a oarecare. Atunci
lim
k
|B
k
|
1/k
= (B).
Demonstrat ie. Cum (B) |B| (teorema 4.1.6 si 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
veric 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 si B o matrice ce veric a
|B| < 1.
Atunci matricea I +B este inversabil a si |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 ind 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 aceluiasi
sistem liniar Au = b? Pentru a xa 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
si 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 si ((B))
k
, cum precizeaz a
rezultatul urm ator.
Teorema 4.8.10. (1) Fie | | o norm a vectorial a oarecare si 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
u0u=1
|u
k
u|
1/k
_
= (B).
(2) Fie | | o norm a vectorial a oarecare si e 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 num arul > 0 exist a un ntreg () astfel
nc at
k sup
u0u=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
si asert iunea (1) decurge din teorema 4.8.8. Conform aceleeasi teoreme, ind 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 si |

B
k
e
0
|
1/k
= |

B
k
|
1/k
(

B)
si (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
si -1 pe diagonalele -1 si 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 aseaz a si num arul de iterat ii necesare. Secvent a de vericare, cont inut a n
sierul 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 nlocuieste 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 si f ar a pivotare;
(b) descompunerea LU;
(c) descompunerea LUP;
(d) descompunerea Cholesky, dac a matricea este simetric a si pozitiv denit 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) si cu permutare efectiv a
a liniilor. Comparat i timpii de execut ie pentru diverse dimensiuni ale matricei sistemului.
Facet i acelasi lucru si pentru descompunerea LUP.
Problema 4.3. Modicat i descompunerea LUP astfel ca s a returneze si valoarea determinan-
tului matricei init iale.
Problema 4.4. Se consider a sistemul
2x
1
x
2
= 1
x
j1
+ 2x
j
x
j+1
= j, j = 2, n 1
x
n1
+ 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 aceluiasi 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 coecient ilor folosind condest.
Problema 4.5. Modicat i eliminarea gaussian a si 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 si care s a e diagonal dominante. Testat i metoda lui Jacobi si 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). Denim p
i
= p(x
i
), q
i
= q(x
i
), r
i
= r(x
i
)
si y
i
y(x
i
). Utiliz and aproximat iile
y

(x
i
)
y
i+1
y
i
2h
si
y

(x
i
)
y
i+1
2y
i
+y
i1
h
2
si t in and cont c a y
0
= si y
N+1
= , se ajunge la un sistem liniar tridiagonal.
(a) Scriet i sistemul la care se ajunge prin discretizare si 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 si
una iterativ a (dac a este posibil).
(c) Ar atat i c a sistemul poate transformat ntr-un sistem echivalent a c arui matrice este
simetric a si pozitiv denit a. S a se implementeze si 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 si 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 nit 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 si = 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 ecare linie cu maximul n modul din linia respectiv a si 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 si 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 ecient 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 nite: formula lui Newton progresiv a si 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 e denite
pe un continuu - de regul a un interval - sau pe o mult ime nit 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
nit 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 stiint ele zice, c and
m asur atorile unor cantit at i zice se fac n funct ie de alte cantit at i (cumar 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 descris a dup a cum urmeaz a.


Se d a o funct ie f X ce urmeaz a a aproximat a, mpreun a cu o clas a de aproximante
si 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 numeste problem a de cea mai bun a aproximare a lui f cu elemente
din , iar funct ia se numeste (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 nit 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 nite). Motivul
teorema lui Weierstrass orice funct ie din C[a, b] poate aproximat a oric at de bine printr-un
polinom de grad sucient de mare.
Exemplul 5.0.12. = S
k
m
() - spat iul funct iilor spline polinomiale de grad m si cu clasa
de netezime k pe diviziunea
: a = t
1
< t
2
< t
3
< < t
N1
< t
N
= b
a intervalului [a, b]. Acestea sunt funct ii polinomiale pe port iuni de grad m, racordate
n t
1
, . . . , t
N1
, astfel nc at toate derivatele p an a la ordinul k s a e 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+1k
(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 si pentru cele dis-
crete apar n tabelul 5.1. Cazul continuu presupune un interval [a, b] si o funct ie pondere
w(t) (posibil si w(t) 1) denit a pe intervalul [a, b] si 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 nem arginit, dac a
funct ia pondere w este astfel nc at integrala pe [a, b] care deneste norma s a aib a sens.
norm a continu a tip norm a discret a
|u|

= max
atb
[u(t)[ L

|u|

= max
1iN
[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 si 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 si funct iile
din clasa trebuie denite pe [a, b] si norma |f | trebuie s a aib a sens. La fel, f si
trebuie denite 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
si
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) si 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 si cel discret simultan. Denim 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] si d(t) = w(t)dt n interiorul lui. Vom numi d m asur a
(pozitiv a) continu a. M asura discret a (numit a si ,,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
si 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 denit ie mai precis a se poate da cu ajutorul integralei Stieltjes, dac a denim (t) ca ind
o funct ie n scar a cu saltul n t
i
egal cu w
i
.

In particular, denim norma lui L
2
prin
|u|
2,d

=
__
R
[u(t)[
2
d(t)
_1
2
(5.0.6)
si 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 si
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. Aproximatie 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 e o m asur a continu a (conform (5.0.3)) sau discret a (conform (5.0.5)) si 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 si 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 numeste 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 si 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 si u = f.
Solut ia problemei de cea mai bun a aproximare se exprim a mai usor cu ajutorul produselor
scalare.
5.1.1. Produse scalare
D andu-se o m asur a continu a sau discret a d si dou a funct ii u si v av and norma nit a
putem deni 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 denit 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 denirea (u, u) 0 si (u, u) = 0 u 0 pe suppd.
Omogenitatea si 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 nite. 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 si pen-
tru lucr arile sale de teoria numerelor si geometrie. Este considerat,
al aturi de Gauss, init iator (n 1805) al metodei celor mai mici p atrate,
desi Gauss a utilizat metoda nc a din 1794, dar a publicat-o doar n
1809.
158 Aproximarea funct iilor
Spunem c a u si 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 si membrul
drept se anuleaz a si deoarece |u
k
|
2
> 0, din ipotez a rezult a
1
=
2
= =
n
= 0.
5.1.2. Ecuatiile 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 coecient 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 si 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
denit 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 numeste form a p atratic a (deoarece este omogen a de grad 2). Pozitiv
denirea lui A ne spune c a forma p atratic a ai c arei coecient i sunt elementele lui A este
ntotdeauna nenegativ a si zero numai dac a variabilele x
i
se anuleaz a.
Pentru a demonstra (5.1.13) s a inser am denit ia lui a
ij
si 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 denit a este
nesingular a.

Intr-adev ar, determinantul s au, precum si 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 e pozitiv
denit a. Dar H = 2A, deoarece E
2
este o funct ie cuadratic a. De aceea, H, ca si A, este
ntr-adev ar pozitiv denit a si 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 si n
practic a. Referitor la o mult ime general a de funct ii de baz a liniar independente, pot ap area
urm atoarele dicult at i:
(1) Sistemul de ecuat ii normale (5.1.10) poate prost condit ionat. Un exemplu simplu
este urm atorul: suppd = [0, 1], d(t) = dt pe [0, 1] si
j
(t) = t
j1
, j = 1, 2, . . . , n.
Atunci
(
i
,
j
) =
_
1
0
t
i+j2
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 creste. 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
j1
se comport a pe [0, 1] ca o funct ie discon-
tinu a. Un polinom care oscileaz a mai rapid pe [0, 1] ar de preferat, c aci ar angaja mai
viguros funct ia f.
(2) Al doilea dezavantaj este faptul c a tot i coecient 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 si cu o
solut ie complet diferit a. Acest fenomen se numeste nepermanent a coecient ilor c
j
.
Am andou a neajunsurile (1) si (2) pot 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 si poate rezolvat imediat cu formula
c
j
=
(
j
, f)
(
j
,
j
)
, j = 1, 2, . . . , n. (5.1.16)
Evident, acesti coecient i c
j
sunt independent i de n si odat a calculat i r am an la fel pentru
orice n mai mare. Avem acum proprietatea de permanent a a coecient 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
creste odat a
cu j, n timp ce integrala de la num ar ator (sau termenii individuali n cazul discret) au acelasi
ordin de m arime ca si f. De aceea ne astept am ca valorile c
j
ale coecient 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 ocolite ntr-o oarecare m asur a calcul and c
j
n
forma alternativ a
c
j
=
1
(
j
,
j
)
_
f
j1

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 si numeric.
D am un algoritm care calculeaz a c
j
cu (5.1.17), dar n acelasi timp si
(t):
s
0
:= 0;
for j = 1, 2, . . . , n do
c
j
:=
1
|
j
|
2
(f s
j1
,
j
);
s
j
:= s
j1
+c
j

j
(t).
end for
Orice sistem
j
care este liniar independent pe suppd poate ortogonalizat (n raport
cu m asura d) prin procedeul Gram-Schmidt. Se ia

1
=
1
si apoi, pentru j = 2, 3, . . . se calculeaz a recursiv

j
=
j

j1

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 ecare
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
si de aceea mai multe moduri de a reprezenta solut ia, care conduc totusi la aceeasi
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 (desi calculul solut iei, asa 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 (ecare sistem liniar independent poate 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 amnt 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
sucient s a ar at am (5.1.20) pentru ecare =
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 si 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 gura 5.1.

In particular, aleg and =


n
n (5.1.20) obt inem
(f
n
,
n
) = 0
si de aceea, deoarece f = (f ) + , conform teoremei lui Pitagora si 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

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 e 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 masinii, 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 denit 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 sir 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 innitate de astfel de spat ii, atunci secvent a de erori din L
2
, ind monoton
descresc atoare, trebuie s a convearg a la o limit a. Este limita 0? Dac a este asa, 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 si sucient 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
d
si d andu-se un > 0 arbitrar de mic, exist a un ntreg n = n

si o funct ie


n
astfel nc at |f

| . O clas a de spat ii
n
av and aceast a proprietate se
numeste complet a n raport cu norma | | = | |
2,d
. Vom numi relat ia (5.1.22) relat ia
de completitudine. Pentru un interval nit [a, b] putem deni completitudinea lui
n
de
asemenea pentru norma uniform a | |

pe [a, b]. Se poate presupune c a f C[a, b] si

j
C[a, b] si numim
n
complet a n norma | |

dac a pentru orice f C[a, b] si


orice > 0 exist a n = n

si un


n
astfel nc at |f

. Este usor 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] si deci convergent a procesului de aproximare
prin metoda celor mai mici p atrate.

Intr-adev ar, e > 0 arbitrar si e n si


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
= ,
asa cum s-a armat.
Exemplul 5.1.1.
n
= P
n1
. Aici completitudinea lui
n
n norma | |

(pe un interval
nit [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 nit 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
_
2
0
sin kt sintdt =
_
0, pentru k ,=
, pentru k =
k, = 1, 2, 3, . . .
_
2
0
cos kt cos tdt =
_
_
_
0, k ,=
2, k = = 0
, k = > 0
k, = 0, 1, 2 . . .
_
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

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

_
2
0
f(t) sin ktdt, k = 1, 2, . . . (5.1.24)
numit i coecient i Fourier ai lui f. Ei sunt coecient ii (5.1.16) pentru sistemul trigonometric.
Prin extensie coecient ii (5.1.16) pentru orice sistem ortogonal (
j
) se vor numi coecient ii
Fourier ai lui f relativ la acest sistem.

In particular, recunoastem 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
=
__
2
0
[u(t)[
2
dt
_1/2
.
(2) Polinoame ortogonale. D andu-se o m asur a d, stim c a orice sistem nit de puteri
1, t, t
2
, . . . este liniar independent pe [a, b], dac a suppd = [a, b], iar 1, t, . . . , t
n1
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 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 innit a dac a suppd = [a, b] si const a din exact
N polinoame
0
,
1
, . . . ,
N1
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) si
k
=
k
(d) > 0 (depinz and de m asura d) astfel
nc at

k+1
(t) = (t
k
)
k
(t)
k

k1
(t), k = 0, 1, 2, . . .

1
(t) = 0,
0
(t) = 1.
(5.1.26)
(Se subnt elege c a (5.1.26) are loc pentru orice k N dac a suppd = [a, b] si numai pentru
k = 0, N 2 dac a suppd = t
1
, t
2
, . . . , t
N
).
Pentru a demonstra (5.1.26) si a obt ine expresiile coecient ilor s a observ am c a

k+1
(t) t
k
(t)
este un polinom de grad k, si deci poate 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

k1
(t) +
k2

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
si
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
k1
obt inem
(t
k
,
k1
) =
k
(
k1
,
k1
).
Deoarece (t
k
,
k1
) = (
k
, t
k1
) si t
k1
difer a de
k
printr-un polinom de grad < k se
obt ine prin ortogonalitate (t
k
,
k1
) = (
k
,
k
), deci

k
=
(
k
,
k
)
(
k1
,
k1
)
, 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 numeste monic dac a coecientul s au dominant este 1.
166 Aproximarea funct iilor
si (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 nite.

In cazul continuu, calculul produsului scalar
necesit a calcul de integrale, ceea ce complic a lucrurile. Din fericire, pentru multe m asuri
speciale importante, coecient ii se cunosc explicit. Cazul special c and m asura este simetric a
(adic a d(t) = w(t) cu w(t) = w(t) si 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 denesc prin asa-numita formul a a lui Rodrigues

k
(t) =
k!
(2k)!
d
k
dt
k
(t
2
1)
k
. (5.1.31)
Veric 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
km1
dt
km1
(t
2
1)
k

1
1
= 0, (5.1.32)
ultima relat ie av and loc deoarece 0 k m1 < k. Deci,
(
k
, p) = 0, p P
k1
,
demonstr andu-se astfel ortogonalitatea. Datorit a simetriei, putem scrie

k
(t) = t
k
+
k
t
k2
+. . . , k 2
3
Thomas Jan Stieltjes (1856-1894), matematician olandez, a studiat la
Institutul Tehnic din Delft, dar nu si-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 si 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
si observ and (din nou datorit a simetriei) c a relat ia de recurent a are forma

k+1
(t) = t
k
(t)
k

k1
(t),
obt inem

k
=
t
k
(t)
k+1
(t)

k1
(t)
,
care este valabil a pentru orice t. F ac and t ,

k
= lim
t
t
k
(t)
k+1
(t)

k1
(t)
= lim
t
(
k

k+1
)t
k1
+. . .
t
k1
+. . .
=
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
2k2
+. . .
_
=
k!
(2k)!
(2k(2k 1) . . . (k + 1)t
k
k(2k 2)(2k 3) . . . (k 1)t
k1
+. . . )
= t
k

k(k 1)
2(2k 1)
t
k2
+. . . ,
asa c a

k
=
k(k 1)
2(2k 1)
, k 2.
Deci,

k
=
k

k+1
=
k
2
(2k 1)(2k + 1)
si 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 coecient ii aproximantei Legendre cu formula (5.1.16) si n nal se
evalueaz a aproximanta astfel obt inut a. Funct ia vLegendre (sursa 5.1) calculeaz a valoarea
polinomului Legendre de grad dat pe niste puncte date. Pentru calculul produselor scalare s-a
utilizat funct ia quadl.

In gura 5.2 apar gracele 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
4k
2
L
k1
(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 coecient 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
*
k2/(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 Cebsev de speta I
Polinoamele lui Cebsev
4
de spet a I se pot deni 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
si din (5.1.34), pun and = arccos x se obt ine
T
k+1
(x) = 2xT
k
(x) T
k1
(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 coecientul dominant al lui T
n
valoarea 2
n1
(dac a
n 1), deci polinomul Cebsev de spet a I monic este

T
n
(x) =
1
2
n1
T
n
(x), n 0,

T
0
= T
0
. (5.1.36)
4
Pafnuti Levovici Cebsev (1821-1894), matematician rus, cel mai im-
portant reprezentant al scolii matematice din Sankt Petersburg. A avut
contribut ii de pionierat n domeniul teoriei numerelor, calculului prob-
abilit at ilor si teoriei aproxim arii. Este considerat fondatorul teoriei
constructive a funct iilor, dar a lucrat si n domeniul mecanicii si 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
; gura
5.3 ilustreaz a acest lucru pentru n=4.

4
Figura 5.3: Polinomul Cebsev T
4
si 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
=
k
n
, k = 0, n.

In gura 5.4 apar gracele unor polinoame Cebsev de spet a I.


Polinoamele Cebsev de spet a I sunt ortogonale n raport cu m asura
d(x) =
dx

1 x
2
, pe [1, 1].
Se veric a usor 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 Cebsev T
3
, T
4
, T
7
, T
8
pe [-1,1]
Dezvoltarea n serie Fourier de polinoame Cebsev 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 coecient ii din extremitatea dreapt a
tind mai repede c atre zero. Eroarea (5.1.41) oscileaz a n esent a ntre +c
n+1
si c
n+1
si 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
=
2k1
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)
, :=
ij
2(n+1)
si
S
1
:=
1
2
n+1

k=1
cos(2k 1),
S
2
:=
1
2
n+1

k=1
cos(2k 1).
Deoarece
2 sinS
1
= sin 2(n + 1),
2 sinS
2
= sin 2(n + 1),
se obt ine S
1
= 0 si S
2
= 0.

In raport cu produsul scalar


(f, g)
U
:=
1
2
f(
0
)g(
0
) +f(
1
)g(
1
) + +f(
n1
)g(
n1
) +
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 Cebsev de spet a I. Se procedeaz a la fel ca la aproximarea Legendre.
Pentru a evita la calculul coecient 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 Cebsev de spet a I de grad n n niste puncte date,
Sursa MATLAB 5.4 Aproximare n sensul celor mai mici p atrate cu polinoame Cebsev 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 coecient ii Fourier ai aproxim arii n serie Fourier de polinoame Cebsev.
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
nite 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 Cebsev 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 Cebsev de
spet a I continuare: calculul coecient 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 Cebsev 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 Coecient ii aproximantei Cebsev 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 (Cebsev). Pentru orice polinom monic

p
n
de grad n are loc
max
1x1


p
n
(x)

max
1x1

T
n
(x)

=
1
2
n1
, 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
1x1


p
n
(x)

<
1
2
n1
. (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) si astfel
(5.1.45) nu poate adev arat a.
Rezultatul (5.1.44) se poate interpreta n modul urm ator: cea mai bun a aproximare uni-
form a din P
n1
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 stie 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 Cebsev de speta a doua
Se denesc 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
n1
(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 denesc 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

n+1
(t) = (t
n
)

n
(t) (2n + + 1)

n1
(t),
cu
0
= (1 +) si
k
= k(k + ), pentru k > 0.
Polinoamele lui Hermite
Polinoamele lui Hermite sunt ortogonale pe (, ) n raport cu ponderea w(t) = e
t
2
si se denesc 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
n1
(t),
cu
0
=

si
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 si 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, Cebsev de spet a I continu a si Cebsev de
spet a I discret a. Pentru nceput vom ncerca s a determin am gradul aproximantei, astfel ca s a
e atins a o anumit a eroare. Ideea este urm atoarea: vom evalua funct ia si aproximanta pe un
num ar mare de puncte si 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 si 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 coecient ii si 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 si k=4 se obt in urm atoarele valori ale coecient 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
Gracele apar n gura 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 + sinx
2
5.2. Polinoame si potrivirea datelor n MATLAB
MATLAB reprezint a un polinom
p(x) = p
1
x
n
+p
2
x
n1
+p
n
x +p
n+1
printr-un vector linie p=[p(1) p(2) ...p(n+1)] al coecient ilor, ordonat i de-
scresc ator dup a puterile variabilei.
S a consider am trei probleme legate de polinoame:
evaluarea d andu-se coecient ii s a se calculeze valoarea polinomului n unul sau mai
multe puncte;
determinarea r ad acinilor d andu-se coecient ii s a se determine r ad acinile polinomu-
lui;
potrivirea datelor (data tting) 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 potriveste 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 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
n1
+p
n
X +p
n+1
,
5.2. Polinoame si 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 si complexe) ale polinomului p se pot obt ine cu z = roots(p).
Funct ia poly realizeaz a operat ia invers a, adic a construieste polinomul cunosc and r ad acinile.
Ea accept a ca argument si 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 coecient 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
Veric 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 veric a n limita erorilor de rotunjire:
>> polyvalm(cp, A)
ans =
1.0e-015
*
0.1110 0
0 0.1110

Inmult irea si mp art irea polinoamelor se realizeaz a cu conv si deconv. Sintaxa lui
deconv este [q,r]=deconv(g,h), unde g este demp art itul, h mp art itorul, q c atul si
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
si 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 specicate (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 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 si cele date de model
r
i
= y
i

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, zic a, a celei de-a doua alegeri ar aceea c a anumite observat ii sunt
mai importante dec at altele si 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 si 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 utilizat la rezolvarea unei probleme cu ponderi prin scalarea
observat iilor si 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 si avem mai multe observat ii dec at funct ii de baz a, suntem
condusi la rezolvarea sistemului supradeterminat (vezi sect iunea 4.7.2)
Ac y,
5.2. Polinoame si potrivirea datelor n MATLAB 183
pe care l vom rezolva n sensul celor mai mici p atrate
c = Ay.
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 si 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 si are rangul n,
atunci ecare din urm atoarele trei instruct iuni
x=A\b
x=pinv(A)
*
b
x=inv(A
*
A)
*
A
*
b
calculeaz a aceeasi solut ie n sensul celor mai mici p atrate, desi operatorul o face cel mai
repede.
Totusi, 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=Ab 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 esueaz 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 decient 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 esueaz 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 otant a, chiar dac a coloanele lui A sunt liniar independente,
(A
T
A)
1
ar putea aproape singular a.
MATLAB evit a ecuat iile normale. Operatorul foloseste 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 coecient ii polinomului de aproximare discret a
de grad n n sensul celor mai mici p atrate pentru datele x si y. Dac a n m, se returneaz a
coecient 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 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
.
Coecient ii necunoscut i se vor calcula prin metoda celor mai mici p atrate. Avem 6 ecuat ii si
dou a necunoscute, reprezentate printr-o matrice 6 2
6
Pentru o matrice dreptunghiular a X, num arul de condit ionare ar putea denit prin cond(X) = XX
+

5.2. Polinoame si 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 grac 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 (gura
5.6). Dac a matricea A este decient 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 si 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 19002000, 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 doreste modelarea cresterii populat iei printr-un polinom de gradul al treilea
y(t) = c
1
t
3
+c
2
t
2
+c
3
t +c
4
si predict ia populat iei din 2010.
Dac a ncerc am s a calcul am coecient ii cu c=polyfit(t,y,3), matricea sistemului
va prost condit ionat a, coloanele ei vor aproape liniar dependente si 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 bine condit ionat. Script-ul MAT-
LAB 5.10, census.m, calculeaz a coecient ii, reprezint a datele si polinomul si estimeaz a
populat ia n 2010. Estimat ia apare si n clar si marcat a cu un asterisc (vezi gura 5.7).
5.3. Interpolare polinomial a
5.3.1. Spatiul H
n
[a, b]
Pentru n N

, denim
H
n
[a, b] = f : [a, b] R : f C
n1
[a, b], f
(n1)
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) =
n1

k=0
(x a)
k
k!
f
(k)
(a) +
_
x
a
(x t)
n1
(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 numeste absolut continu a pe I dac a
> 0 > 0 astfel nc at oricare ar un sistem nit 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, denite pe H
n
[a, b].
Teorema 5.3.2 (Peano). Fie L o funct ional a real a, continu a, denit a pe H
n
[a, b]. Dac a
KerL = P
n1
atunci
Lf =
_
b
a
K(t)f
(n)
(t)dt, (5.3.3)
unde
K(t) =
1
(n 1)!
L[( t)
n1
+
] (nucleul lui Peano). (5.3.4)
Observat ia 5.3.3. Funct ia
z
+
=
_
z, z 0
0, z < 0
se numeste parte pozitiv a, iar z
n
+
se numeste putere trunchiat a.
Demonstrat ie. f admite o reprezentare de tip Taylor, cu restul n form a integral a
f(x) = T
n1
(x) +R
n1
(x),
unde
R
n1
(x) =
_
x
a
(x t)
n1
(n 1)!
f
(n)
(t)dt =
1
(n 1)!
_
b
a
(x t)
n1
+
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, si
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
n1
. .
0
+LR
n1
Lf =
1
(n 1)!
L
_
_
b
a
( t)
n1
+
f
(n)
(t)dt
_
=
cont
=
1
(n 1)!
_
b
a
L( t)
n1
+
f
(n)
(t)dt.

Observat ia 5.3.4. Concluzia teoremei r am ane valabil a si dac a L nu este continu a, ci are
forma
Lf =
n1

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] si 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 si o mult ime de m + 1 puncte distincte
x
0
, x
1
, . . . , x
m
[a, b].
Teorema 5.3.6. Exist a un polinom si 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
Denit ia 5.3.7. Polinomul L
m
f denit astfel se numeste 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 veric a imediat c a
i
P
i
si c a
i
(x
j
) =
ij
(simbolul lui Kronecker);
rezult a c a polinomul L
m
f denit de (5.3.6) este de grad cel mult m si veric a (5.3.7). Pre-
supunem c a exist a un alt polinom p

m
P
m
care veric a (5.3.7) si punem q
m
= L
m
p

m
;
avem q
m
P
m
si 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
.
Fisierul lagr.m (sursa MATLAB 5.11) cont ine codul pentru calculul polinomului de inter-
polare Lagrange folosind formulele (5.3.7) si (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 veric a

i
P
m
si 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 si
melancolic; nu cunoaste alt a pl acere dec at studiul. Lagrange a avut
contribut ii fundamentale n calculul variat ional, teoria numerelor si
analiz a matematic a. Este cunoscut si 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)
(xxi)u

(xi)
.

In gura 5.8 apare reprezentare grac 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

1
Figura 5.8: Polinoame fundamentale de interpolare pentru nodurile x = 0, 1, 2, 3
Fisierul pfl2b.m (sursa MATLAB 5.12) calculeaz a polinoamele fundamentale La-
grange pentru niste noduri date pe o mult ime de puncte date.
Demonstr and teorema 5.3.6 am demonstrat de fapt existent a si 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
(coecient ii lui p
m
).
Din teoria sistemelor liniare se stie 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
si 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 usor 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 si prin urmare si de rezolvare a sistemului
(5.3.9).
Exemplul 5.3.9. Polinomul de interpolare Lagrange corespunz ator unei funct ii f si nodurilor
x
0
si 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
)) si (x
1
, f(x
1
)). Analog, polinomul de inter-
polare Lagrange corespunz ator unei funct ii f si nodurilor x
0
, x
1
si 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
)) si (x
2
, f(x
2
)). Interpretarea
lor geometric a apare n gura 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 si polinomul de interpolare n punctele x


i
din [a, b], am
putea face ca f si 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] si (m + 1)
numere naturale r
0
, r
1
, . . . , r
m
, punem n = m + r
0
+ r
1
+ + r
m
. Atunci, ind dat a o
funct ie f, denit a pe [a, b] si admit and derivate de ordin r
i
n punctele x
i
, exist a un singur
polinom si 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
.
Denit ia 5.3.11. Polinomul denit n acest mod se numeste polinom de interpolare al lui
Hermite
9
al funct iei f relativ la punctele x
0
, x
1
, . . . , x
m
si 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 (coecient ii lui H
n
f), deci este sucient 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
si (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 si 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 si 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 si 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 si
0 r
i
, p
()
n
(x
i
) = b
i
(5.3.11)
admite o solut ie si numai una.

In particular, dac a alegem pentru o pereche (i, ) dat a
b
i
= 1 si 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
si la ntregii r
0
, r
1
, . . . , r
m
. Poli-
nomul de interpolare Hermite denit 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 veric a c a polinoamele de baz a h
i
sunt denite prin relat iile de recurent a
h
iri
(x) =
(x x
i
)
ri
r
i
!
q
i
(x)
si 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 numeste matrice Vandermonde ge-
neralizat a; ea este inversabil a, iar elementele matricei ei inverse sunt coecient 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 si 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 veric 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
si , k = 0, m. Introduc and notat iile
u(x) =
m

k=0
(x x
k
)
r
k
+1
si
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)
,
si 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) si (5.3.14) avem n nal
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
Propozitia 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 si
am ar atat idempotent a.
Exemplul 5.3.14. Polinomul de interpolare Hermite corespunz ator unei funct ii f si nodurilor
duble 0 si 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 creste (vezi gura 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) = sinx si nodurilor duble x
0
= 0 si x
1
= 1 ( )(st anga) si (H
5
f)
() corespunz ator funct iei f : [0, 1] R , f(x) = sinx ( ) si nodurilor duble x
0
= 0,
x
1
=
1
2
si 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 deni prin
|P
n
| = max
fC[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
axb

i=0
f(x
i
)
i
(x)

|f|

max
axb
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 si
care veric 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) si maximul s au
m
se numesc funct ia lui Lebesgue
10
si respectiv constanta
lui Lebesgue pentru interpolarea Lagrange. Ele furnizeaz a o prim a estimare a erorii de inter-
polare: e c
m
(f) eroarea n cea mai bun a aproximare a lui f prin polinoame de grad m,
c
m
(f) = min
pPm
|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 si formulele (5.3.17) si (5.3.19), se g aseste
|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, si n
special pentru introducerea m asurii si 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 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 .
Totusi, 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 stie 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 modica (H
n
f) (x). Tre-
buie deci s a facem ipoteze suplimentare, care vor 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
[, ] si exist a f
(n+1)
pe (, ), unde =
minx, x
0
, . . . , x
m
si = maxx, 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 si (5.3.22) se veric a trivial. Presupunem c a x
este distinct de x
i
si consider am, pentru x xat, 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 si F
(j)
(x
k
) = 0 pentru k = 0, m,
j = 0, r
k
. Deci, F are (n + 2) zerouri, lu and n considerare si 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
+

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
si 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
[, ] si exist a f
(m+1)
pe (, ), unde =
minx, x
0
, . . . , x
m
si = maxx, 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

()
si 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 si 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
si 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. Convergenta interpol arii Lagrange
S a denim 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 nit [a, b]. Atunci pentru
orice m denim
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] si 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] si 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 sucient de
mare din C ce cont ine intervalul [a, b]. Mai concret e C
r
discul circular (nchis) cu centrul
n mijlocul intervalului [a, b] si de raz a r si presupunemc a r >
1
2
(ba), 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!
2i
_
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 gura 5.11) obt inem
[f
(k)
(x)[
k!
2
max
zCr
[f(z)[
_
r
1
2
(b a)

k+1
2r;
putem lua pentru M
k
n (5.3.32)
M
k
=
r
r
1
2
(b a)
max
zCr
[f(z)[
k!
_
r
1
2
(b a)

k
(5.3.37)
si (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 si av and raza sucient 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 ranate, 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] si num arul total de noduri, asimptotic c and
n . (C and nodurile sunt uniform distribuite pe intervalul [a, b], atunci d(t) =
dt
ba
). 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 niste cer-
curi cu raza foarte mare si centrul n (a+b)/2. Pe m asur a ce creste, 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 nlocuieste 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, asa cum se arat a n gura 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 e 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 Cebsev de spet a I. Ele sunt mai dens dis-
tribuite n apropierea capetelor intervalului [1, 1].

In acest caz C

= [1, 1], asa 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 semnicat ia polinoamelor Cebsev 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 Cebsev
(5.3.42) este n esent a echilibrat a (modulo variat ia factorului f
(m+1)
) si astfel liber a de
oscilat iile violente pe care le-am v azut pentru puncte echidistante, ne vom astepta la pro-
priet at i mai favorabile pentru tablouri triunghiulare (5.3.29) formate din noduri Cebsev. 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],
si 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. Acesti poli sunt asezat i n interiorul regiunii C

din gura 5.12 pentru


intervalul [5, 5], deci f nu este analitic a n C

. Din acest motiv nu ne astept 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 gura 5.12 acest rezultat nu este surprinz ator. Gracul pentru m = 10, 13, 16
apare n gura 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 guri 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 si x = 1. Vezi gura 5.14(a), pentru m = 20. Convergent a
n x = 1 este trivial a deoarece acestea sunt noduri de interpolare si deci eroarea n aceste
puncte este 0. Acelasi lucru este adev arat pentru x = 0, c and n este impar, dar nu si c and
n este par. Esecul convergent ei pentru aceste noduri se explic a doar part ial prin insucient 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 distribut ia arcsin din exemplul 5.3.24.

In gura
5.14(b) se d a gracul pentru m = 17.
Problema convergent ei a fost rezolvat a n cazul general de Faber si Bernstein ntre 1914
si 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 grac 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 Cebsev, m = 17
Figura 5.14: Comportarea interpol arii Lagrange pentru f : [1, 1] R, f(x) = [x[.
5.4. Calculul ecient al polinoamelor de interpolare 207
5.3.29, exist a o funct ie f C[a, b] astfel nc at sirul 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 sirul corespunz ator (L
m
f) s a e 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 ecient 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 cunoastem |f
(m+1)
|

. Vom nota cu P
m1,m2,...,m
k
polinomul de interpolare Lagrange
av and nodurile x
m1
, . . . , x
m
k
.
Propozitia 5.4.1. Dac a f este denit 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,...,j1,j+1,...,k
(x) (x x
i
)P
0,1,...,i1,i+1,...,k
(x)
x
i
x
j
=
=
1
x
i
x
j

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

(5.4.1)
Demonstrat ie. Fie Q = P
0,1,...,i1,i+1,...,k
,

Q = P
0,1,...,j1,j+1,k
si
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 si 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 Cebsev.
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 si n domeniul ecuat iilor diferent iale si 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
)
si
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 si dou a polinoame de interpolare Lagrange de gradul k 1. Calculele pot asezate
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 si 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 numeste metoda lui Neville .
Notat iile pot simplicate
Q
i,j
:= P
ij,ij+1,...,i1,i
,
Q
i,j1
= P
ij+1,...,i1,i
,
Q
i1,j1
:= P
ij,ij+1,...,i1
.
Din (5.4.1) rezult a
Q
i,j
=
(x x
ij
)Q
i,j1
(x x
i
)Q
i1,j1
x
i
x
ij
,
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 ecient al polinoamelor de interpolare 209
Dac a procedeul de interpolare converge, atunci sirul Q
i,i
converge si el si s-ar putea lua
drept criteriu de oprire
[Q
i,i
Q
i1,i1
[ < .
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 construieste 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 si
valoarea din aceeasi linie, coloana precedent a.
5.4.2. Metoda diferentelor 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
k1
este de grad k, se anuleaz a n punctele x
0
, x
1
, . . . , x
k
si
deci este de forma:
(L
k
f)(x) = (L
k1
f)(x) +f[x
0
, x
1
, . . . , x
k
](x x
0
)(x x
1
) . . . (x x
k1
), (5.4.2)
unde f[x
0
, x
1
, . . . , x
k
] desemneaz a coecientul 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
k1
), (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 coecient 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
guri ale matematicii si zicii din vremea sa. Nu numai c a dat legile
fundamentale ale zicii moderne, dar a fost si unul dintre inventatorii
calculului diferent ial si 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 inuent a a fost Principia, care cont ine ideile sale asupra
interpol arii si 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
k1
]
x
k
x
0
(5.4.4)
si
f[x
i
] = f(x
i
), i = 0, 1, . . . , k.
Demonstrat ie. Not am, pentru k 1 cu L

k1
f polinomul de interpolare pentru f de grad
k 1 si cu nodurile x
1
, x
2
, . . . , x
k
; coecientul lui x
k1
este f[x
1
, x
2
, . . . , x
k
]. Polinomul
q
k
de grad k denit prin
q
k
(x) =
(x x
0
)(L

k1
f)(x) (x x
k
)(L
k1
f)(x)
x
k
x
0
coincide cu f n punctele x
0
, x
1
, . . . , x
k
si deci q
k
(x) (L
k
f)(x). Formula (5.4.4) se obt ine
identic and coecientul lui x
k
din cei doi membri.
Denit ia 5.4.3. Cantitatea f[x
0
, x
1
, . . . , x
k
] se numeste 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 denit ie rezult a c a f[x
0
, x
1
, . . . , x
k
] este independent a de ordinea punctelor x
i
si ea
poate 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
)
si coecientul 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 ecient al polinoamelor de interpolare 211
care este mai exibil si 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
E

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): ecare element este diferent a
dintre elementul situat n st anga si dedesubtul lui si 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 si 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 si
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 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 sucient 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
m1
0
f(x
0
)
1 x
1
x
2
1
. . . x
m1
1
f(x
1
)
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1 x
m
x
2
m
. . . x
m1
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 si t in and
cont c a ecare 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
i1
, x
i+1
, . . . , x
m
)f(x
i
) =
5.4. Calculul ecient al polinoamelor de interpolare 213
=
m

i=0
(1)
mi
f(x
i
)
(x
i
x
0
) . . . (x
i
x
i1
)(x
i
x
i+1
) . . . (x
n
x
i
)
,
din care dup a schimbarea semnelor ultimilor mi termeni rezult a (5.4.5).
5.4.3. Diferente nite: formula lui Newton progresiv a si 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 si mai put in costisitor. Istoric acesti 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 otante 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 denesc diferent ele progresive prin

0
f
i
= f(x
i
) = f
i
,
si k 0

k+1
f
i
= (
k
f
i
) =
k
f
i+1

k
f
i
.
Cu ajutorul formulei (5.4.5) se veric 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
simplic a. Dac a s = (x x
0
)/h,
(xx
0
)(xx
1
) . . . (xx
k1
)f[x
0
, x
1
, . . . , x
k
] =
s(s1) . . . (sk+1)
k!

k
f
0
si 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!
(coecient 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 serveste la calculul lui (L


m
f)(x) n puncte apropiate de
nceputul tabelei. Diferent ele nite 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

b
nseamn a c = b a.
Eroarea comis a dup a m pasi, 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
si x.
Analog se introduce operatorul de diferent a nit a regresiv a prin

0
f
i
= f
i

1
f
i
= f
i
f
i1

k+1
f
i
= (
k
f
i
) =
k
f
i

k
f
i1
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 ecient 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 +m1
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
si x. Formula (5.4.12) serveste
pentru calculul polinomului de interpolare n valori apropiate de cap atul tabelei. Diferent ele
regresive se pot calcula cu tabela
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
x
m3
f
m3
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
f
m2
.
.
.
.
.
.

.
.
.
.
.
.
x
m2
f
m2

2
f
m1
.
.
.

.
.
.
f
m1

3
f
m

x
m1
f
m1

2
f
m

f
m

x
m
f
m
unde
a

b
nseamn a c = b a.
5.4.4. Diferente divizate cu noduri multiple
Formula (5.4.8) serveste ca baz a pentru introducerea diferent ei divizate cu noduri multi-
ple: dac a f C
m
[a, b] si [a, b], atunci
lim
x0,...,xn
[x
0
, . . . , x
n
; f] = lim

f
m
()
m!
=
f
(m)
()
m!
216 Aproximarea funct iilor
Aceasta justic 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
. . .
m1
f()
0 1 2 . . . (m1)
m2
f

()
. . . . . . . . . . . . . . . . . .
0 0 0 . . . (m1)! f
(m1)
()

si
V
_
_
, . . . ,
. .
m+1
_
_
=

1
2
. . .
m
0 1 2 . . . m
m1
. . . . . . . . . . . . . . .
0 0 0 . . . m!

,
adic a cei doi determinant i sunt constituit i din linia relativ a la nodul si derivatele succesive
ale acesteia p an a la ordinul mn raport cu .
Generalizarea pentru mai multe noduri este urm atoarea:
Denit 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
r01
0
. . . x
n1
0
f(x
0
)
0 1 . . . (r
0
1)x
r02
0
. . . (n 1)x
n2
0
f

(x
0
)
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
0 0 . . . (r
0
1)! . . .

r01
p=1
(n p)x
nr0
0
f
(r01)
(x
0
)
1 x
m
. . . x
rm1
m
. . . x
n1
m
f(x
m
)
0 1 . . . (r
m
1)x
rm2
m
. . . (n 1)x
n2
m
f

(x
m
)
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
0 0 . . . (r
m
1)! . . .

rm1
p=1
(n p)x
nrm
m
f
(rn1)
(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
n1
0
, . . . ,
r02

p=0
(n p)x
nr0+1
0
, . . . , x
n
m
, nx
n1
m
, . . . ,
rm2

p=0
x
nrm+1
m
)
T
se numeste diferent a divizat a cu nodurile multiple x
k
, k = 0, m si 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]
z2z0
z
1
= x
0
f[z
1
] f[z
1
, z
2
] =
f(z2)f(z1)
z2z1
f[z
1
, z
2
, z
3
] =
f[z3,z2]f[z2,z1]
z3z1
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]
z4z2
z
3
= x
1
f[z
3
] f[z
3
, z
4
] =
f(z4)f(z3)
z4z3
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 si valorile f(x
i
), f

(x
i
). Denim 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 si 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 obisnuit a, asa cum se arat a n tabelul 5.2. Ideea
poate extins a si 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 si tabela de diferent e. Pentru
a calcula polinomul de interpolare Hermite se poate utiliza funct ia pNewton cu tabela si
nodurile returnate de difdivnd.
5.5. Interpolare spline
Fie o diviziune a lui [a, b]
: a = x
1
< x
2
< < x
n1
< 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 sucient de mici funct iile pot 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 si 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 si 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 gura 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 si pe ecare 2
coecient i (2 grade de libertate) si ecare condit ie reduce num arul de grade de libertate cu 1,
avem n nal
dimS
0
1
() = 2n 2 (n 2) = n.
5.5. Interpolare spline 219
x
2
x
3
x
4
x
n1
a=x
1
x
n
=b


Figura 5.15: Spline liniare
O baz a a spat iului este dat a de asa-numitele funct ii B-spline. Punem x
0
= x
1
, x
n+1
=
x
n
, pentru i = 1, n
B
i
(x) =
_

_
x x
i1
x
i
x
i1
, pentru x
i1
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 si pentru i = n a doua ecuat ie se ignor a. Funct ia B
i
se numeste p al arie
chinezeasc a.
Gracul funct iilor B
i
apare n gura 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.
si
B
i
)
i=1,n
= S
0
1
(),
B
i
joac a acelasi 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
n1
B
1
B
2
B
3
B
n1
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 ecare punct
x
i
, i = 1, 2, . . . , n. Astfel e m
1
, m
2
, . . . , m
n
numere arbitrare date si 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 ecare bucat a ca solut ie unic a a problemei de
interpolare Hermite, si 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+mi2f[xi,xi+1]
(xi)
2
x
i
f
i
f[x
i
, x
i+1
]
mi+1f[xi,xi+1]
xi
x
i+1
f
i+1
m
i+1
x
i+1
f
i+1
5.5. Interpolare spline 221
si 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)
si deoarece x x
i+1
= x x
i
x
i
, prin identicare 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 coecient ii cu (5.5.10) si 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 portiuni
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 ecare bucat a poate 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)
si 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

i1
(x
i
) = p

i
(x
i
), i = 2, n 1, (5.5.14)
care convertit a n coecient i Taylor (5.5.9) d a
2c
i1,2
+ 6c
i1,3
x
i1
= 2c
i,2
, i = 2, n 1.

Inlocuind cu valorile explicite (5.5.10) pentru coecient i, se ajunge la sistemul liniar


x
i
m
i1
+ 2(x
i1
+ x
i
)m
i
+ x
i1
m
i+1
= b
i
, i = 2, n 1, (5.5.15)
unde
b
i
= 3x
i
f[x
i1
, x
i
] + x
i1
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
si m
n
, sistemul devine tridiagonal si se poate rezolva ecient prin eliminare gaussian a,
prin factorizare sau cu o metod a iterativ a.
Se dau n continuare c ateva alegeri posibile pentru m
1
si m
n
.
Spline complete(racordate, limitate). Lu am m
1
= f

(a), m
n
= f

(b). Se stie c a pentru


acest tip de spline, dac a f C
4
[a, b]
|f
(r)
() s
(r)
(f; )|

c
r
[[
4r
|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
n1
+ 2m
n
= 3f[x
n1
, x
n
] +
1
2
f

(b)x
n1
(5.5.18)
Prima ecuat ie se pune la nceputul sistemului (5.5.15), iar a doua la sf arsitul 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 si 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) si p
n2
(x) p
n1
(x); adic a
primele dou a p art i si respectiv ultimele dou a trebuie s a coincid a. Aceasta nseamn a c a primul
punct interior x
2
si ultimul x
n1
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
si x = x
n1
. Condit ia de continuitate a lui
s
3
(f, .) n x
2
si x
n1
revine la egalitatea coecient ilor dominant i c
1,3
= c
2,3
si c
n2,3
=
c
n1,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
n2
+ [(x
2
)
2
(x
1
)
2
]m
n1
(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
n1
)
2
f[x
n2
, x
n1
] (x
n2
)
2
f[x
n1
, 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) si (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 si n1 cu n. Dup a aceste
transform ari prima si ultima ecuat ie devin
x
2
m
1
+ (x
2
+ x
1
)m
2
=
1
(5.5.19)
(x
n1
+ x
n2
)m
n1
+ x
n2
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
n1
+ x
n2
_
x
2
n1
f[x
n2
, x
n1
] +
[2(x
n1
+ x
n2
) + x
n1
]x
n2
f[x
n1
, x
n
]
_
.
Funct ia Splinecubic calculeaz a coecient ii celor patru tipuri de spline cubice prezen-
tate. Ea construieste sistemul tridiagonal corespunz ator cu matrice rar a si l rezolv a cu op-
eratorul . Diferent ele ntre tipurile de spline apar la prima si 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 ati de minimalitate ale funct iilor spline cubice
Funct iile spline cubice complete si naturale au propriet at i interesante de optimalitate.
Pentru a le formula, este convenabil s a consider am nu numai subdiviziunea ci si

: a = x
0
= x
1
< x
2
< x
3
< < x
n1
< 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 si 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 si numai dac a g() = s
compl
(f; ).
Observat ia 5.5.2. s
compl
(f; ) din teorema 5.5.1 interpoleaz a f pe

si 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) si faptul c a egalitatea n (5.5.22) are loc dac a si numai dac a
g

(x) s

(x) 0, din care integr and de dou a ori de la a la x si utiliz and propriet at ile de
interpolare ale lui s si 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 si t in and cont c a s

(b) = g

(b) = f

(b) si 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 =
n1

1
s

(x

+ 0)
_
x+1
x
[g

(x) s

(x)]dx =
=
n1

=1
s

(x
+0
)[g(x
+1
) s(x
+1
) (g(x

) s(x

))] = 0,
c aci at at s c at si g interpoleaz a f pe . Aceasta demonstreaz a (5.5.24) si deci si teorema.
Pentru interpolarea pe calitatea de a 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 si 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 exibil a folosit a pentru a desena curbe. Dac a forma sa este dat a de ecuat ia y = g(x),
x [a, b] si 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 acelorasi 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 coecient 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) si un vector xi al punctelor n
care se face evaluarea. Ea construieste interpolantul corespunz ator datelor x si y si 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 e 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 (sierul 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 sase puncte de pe gracul lui f(x) = x + sin x
2
si calculeaz a interpolant ii
nearest, linear si spline. Nu am inclus n acest exemplu cubic deoarece gracul
obt inut este foarte apropiat de cel obt inut cu spline si s-ar nc arcat gura. Gracul apare
n gura 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 si 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 si Hermite pe port iuni
5.6. Interpolare n MATLAB 229
Figura 5.18 d a gracul astfel obt inut.
Interpolarea spline si Hermite cubic a pe port iuni se pot realiza si direct, apel and funct ia
spline si respectiv pchip..
D andu-se vectorii x si 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 si 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 si ultima valoare din y se consider a a derivatele n capete. (Pentru
terminologia privind tipurile de spline vezi sect iunea 5.5.2).
Exemplul pe care l d am n continuare ia sase puncte de pe gracul lui y = sin(x),
calculeaz a si reprezint a grac spline-ul deBoor si cel complet (vezi gura 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 si complet
Sunt situat ii n care este convenabil s a se lucreze cu coecient ii funct iei spline (de ex-
emplu dac a nodurile se p astreaz a si xx se modic a). Comanda pp=spline(x,y) mem-
oreaz a coecient ii ntr-o structur a pp (piecewise polynomial) care cont ine forma, nodurile,
matricea coecient ilor (cu 4 coloane pentru spline cubice), num arul de subintervale, ordinul
230 Aproximarea funct iilor
(gradul plus 1) si 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)
si 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 si utilizare ppval.
Dorim s a citim interactiv mai multe puncte de pe ecran si s a reprezent am grac spline-ul
parametric care trece prin aceste puncte, cu dou a rezolut ii diferite (s a zicem cu 20 si 150 de
puncte intermediare pe curb a). Sursa este cont inut a n script-ul splinevect.m si o d amn
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. Coecient ii spline-ului se calculeaz a o
singur a dat a, iar pentru evaluarea spline-ului se foloseste 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.
Semnicat ia parametrilor este acceasi ca n cazul funct iei spline. Exemplul urm ator cal-
culeaz a interpolantul spline deBoor si Hermite cubic pe port iuni pentru un acelasi 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)
Gracul apare n gura 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 si 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 e minim a.
(b) Scriet i o funct ie MATLAB care construieste si rezolv a sistemul de ecuat ii normale de
la punctul (a).
(c) Testat i funct ia de mai sus pentru o funct ie si 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
j1
, n = 1(1)5,
utiliz and N abscise t
k
= k/(N + 1), k = 1, N. De notat c a
n
(0) = 0 si
n
(1) = 1 sunt
valorile exacte ale lui f n t = 0 si respectiv t = 1.
(Indicat ie: Aproximat i f(t) t printr-o combinat ie liniar a a polinoamelor
j
(t) = t(1
t)t
j1
, j = 1, n.) Sistemul de ecuat ii normale are forma Ac = b, A = [(
i
,
j
)], b =
[(
i
, f t)], c = [c
j
].
Iesire (pentru n = 1, 2, . . . , 5) :
232 Aproximarea funct iilor
num arul de condit ionare al sistemului;
valorile coecient ilor;
eroarea maxim a si minim a:
e
min
= min
1kN
[
n
(t
k
) f(t
k
)[, e
max
= max
1kN
[
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 acelasi grac funct ia si aproximantele.
Problema 5.3. S a se reprezinte pe acelasi grac pentru [a, b] = [0, 1], n = 11, funct ia,
interpolantul Lagrange si cel Hermite cu noduri duble n cazurile:
(a) x
i
=
i1
n1
, i = 1, n, f(x) = e
x
si f(x) = x
5/2
;
(b) x
i
=
_
i1
n1
_
2
, i = 1, n, f(x) = x
5/2
.
Problema 5.4. Aceeasi problem a, dar pentru cele patru tipuri de interpolant i spline cubici.
Problema 5.5. Aleg and diverse valori ale lui n, pentru ecare n astfel ales reprezentat i grac
funct ia lui Lebesgue pentru n noduri echidistante si respectiv n noduri Cebsev 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 si reprezent and apoi grac
punctele si 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 si are
n acele puncte vectori tangent i dat i.
Problema 5.8. Scriet i o funct ie MATLAB care calculeaz a coecient ii si valoarea splinelor
cubice de tip Hermite, adic a spline cubice de clas a C
1
[a, b] care veric a
s
3
(f, x
i
) = f(x
i
), s

3
(f, xi) = f

(x
i
), i = 1, n.
Reprezentat i pe acelasi grac funct ia f(x) = e
x
2
si interpolantul corespunz ator pentru 5
noduri echidistandte si 5 noduri Cebsev 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 189192.
Problema 5.10. [44] Scriet i o funct ie MATLAB pentru calculul coecient ilor unui spline
periodic de clas a C
2
[a, b]. Aceasta nseamn a c a datele trebuie s a verice f
n
= f
1
si c a
interpolantul rezultat trebuie s a e periodic, de perioad a x
n
x
1
. Condit iile de periodicitate
de la capete se pot impune mai usor consider and dou a puncte suplimentare x
0
= x
1
x
n1
si x
n+1
= x
n
+ x
1
, n care funct ia s a ia valorile f
0
= f
n1
si 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 coecient ii aproximantei polinomiale de grad 7 n sensul celor mai mici
p atrate corespunz atoare si s a se reprezinte pe acelasi grac aproximanta si 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 si spline. Aleget i cinci noduri si
reprezentat i pe acelasi grac funct ia si 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 si reprezentat i grac 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 grac punctele si aproximanta.
Indicat ie: logaritmat i.
Problema 5.16. Implementat i n MATLAB aproximanta discret a cu polinoame Cebsev 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(2x)
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 grac datele si aproximanta.
CAPITOLUL 6
Aproximare uniform a
Cuprins
6.1. Polinoamele lui Bernstein . . . . . . . . . . . . . . . . . . . . . . . . . 236
6.2. B-spline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
6.2.1. Not iuni si rezultate de baz a . . . . . . . . . . . . . . . . . . . . 241
6.2.2. Algoritmul de evaluare a unui B-spline . . . . . . . . . . . . . . 243
6.2.3. Aplicat ii n graca pe calculator . . . . . . . . . . . . . . . . . 244
6.2.4. Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
6.3. Funct ii spline cu variat ie diminuat a . . . . . . . . . . . . . . . . . . . . 251
6.4. Operatori liniari si 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 denite pe un interval [a, b] R si / B. Pentru f B si
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 isi 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 sirul polinoamelor de interpolare Lagrange (L
m
f) nu converge
c atre f, el nu poate 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
siruri 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
Denit ia 6.1.1. Fie f : [0, 1] R. Operatorul B
m
denit 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)
mk
(6.1.2)
se numeste operatorul lui Bernstein, iar polinomul B
m
f se numeste polinomul lui Bernstein.

In gura 6.1 apar polinoamele de baz a Bernstein pentru k = 3, iar n gura 6.2 polinoamele
Bernstein pentru funct ia f(x) = sin2x si m = 10, 15, 100.
Polinomul lui Bernstein poate obt inut si 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 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 si 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) = sin2x (linie
continu a) si 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 ati
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
si 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 denit ie.
2. Imediat a, t in and cont c a x [0, 1] p
m
(x) 0.
3. Se foloseste binomul lui Newton
(u +v)
m
=
m

k=0
_
m
k
_
u
k
v
mk
. (6.1.3)
Diferent iem succesiv n raport cu u egalitatea de mai sus
u(u +v)
m1
=
m

k=0
k
m
u
k
v
mk
_
m
k
_
(6.1.4)
_
1
1
m
_
u
2
(u +v)
m2
=
m

k=0
_
k
2
m
2

k
m
2
_ _
m
k
_
u
k
v
mk
. (6.1.5)
Pun an and n ultimele trei relat ii u = x si 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 fm 0, prin pozitivitate, rezult a B
m
(fm) 0. Analog si 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 [xx

[ < 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
__
si
[f(x) (B
m
f)(x)[
m

k=0
p
mk
(x)

f(x) f
_
k
m
_

=
=

kIm
p
mk
(x)

f(x) f
_
k
m
_

kJm
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

kJm
p
mk
(x)


2
+ 2M

kJm
p
mk
(x).
Deoarece

k
m
x


_
k
m
x
_
2

2
1,
obt inem succesiv, folosind proprietatea 3

kJm
p
mk
(x)
1

kJm
_
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(1x)
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.

Denit ia 6.1.3. Formula


f = B
m
f +R
m
f (6.1.6)
se numeste 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)


si
[(R
m
f)(x)[
1
8m
|f

. (6.1.8)
Demonstrat ie. Conform teoremei 6.1.2, propriet at ile 1 si 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)
+

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 e mereu n atent ia matematicienilor.
S-au dat numeroase demonstrat ii constructive si generaliz ari. Una dintre ele este teorema lui
Stone si Weierstrass.
Fie D un compact, C(D) spat iul funct iilor denite 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 e C(D), e 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 denite 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 si asupra teoremei Stone-
Weierstrass a se vedea [63].
6.2. B-spline
6.2.1. Not iuni si rezultate de baz a
Fie m,n N si punctele t
0
, t
1
, . . . , t
m
, cu t
i
t
i+1
. Fie [a, b] R astfel nc at t
k
a
si t
nk
b. Pentru j = 1, mi punem

i,j
(x) =
_
_
_
x t
i
t
i+j
t
i
, dac a t
i
< t
i+j
0, altfel.
(6.2.1)
Denit ia 6.2.1. Pentru i = 0, mk 1 funct iile B-spline de rang i si grad k se denesc
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,k1
(x) + (1
i+1,k
(x))B
i+1,k1
(x), pentru k 1. (6.2.3)
Propozitia 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)
mk1

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 (si indenit 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) si (f) sunt evidente pentru k = 0; (a), (b), (c) si (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
mk 1 astfel nc at x [t
j
, t
j+1
). Dac a x = t
j
si B
j,k
(x) = 1 proprietatea este evident a
(conform (c)).

In celelalte cazuri avem
mk1

i=0
B
i,k
(x) =
j

i=jk
B
i,k
(x)
=
j

i=jk
[
i,k
(x)B
i,k1
(x) + (1
i+1,k
(x)) B
i+1,k1
(x)]
=
jk,k
(x)B
jk,k1
(x) +
j

i=j+1k
B
i,k1
(x)
+ (1
j+1,k
(x)) B
j+1,k1
(x).
Dar B
jk,k1
(x) = 0 si B
j+1,k1
(x) = 0, ntruc at x [t
j
, t
j+1
) (conform lui (b)) si
j

i=j+1k
B
i,k1
(x) = 1
(din ipoteza induct iei).
(e) este o consecint a imediat a a lui (d) si (c).
Observat ia 6.2.3. 1. Deoarece B-splinele sunt nenegative ((b) si (c)) si 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
mk
= = t
m
= b, pentru ca (d) si (e) s a e adev arate pe ntreg [a, b]
punemB
mk1,k
(b) = 1.
4. B-splinele se pot deni si pentru un sir innit de noduri t
i
, n denit ia ec arui B
i,k
intervenind doar un num ar nit 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.
Propozitia 6.2.4 (Identitatea lui Marsden). Fie n = mk si

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

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
n1

i=0

i,k
(t)B
i,k
(x) = (x t)
k1
este adev arat a. Avem B
0,k1
(x) = 0 pentru x [a, b].
n1

i=0

i,k
(t)B
i,k
(x) =
=
n1

i=0

i,k
(t) [
i,k
(x)B
i,k1
(x) + (1
i+1,k
(x))B
i+1,k1
(x)]
=
0,k
(t)
0,k
(x)B
0,k1
(x)
+
n1

i=1
B
i,k1
(x) [
i,k
(t)
i,k
(x) +
i1,k
(t)(1
i,k
(x))] .
Dac a t
i
= t
i+k
, atunci B
i,k1
0 si dac a t
i
< t
i+k
avem

i,k
(t)(t)
i,k
(x) +
i1,k
(t)(1
i,k
(x)) =
=
i,k1
(t) [(t
i+k
t)
i,k
(x) + (t
i
t)(1
i,k
(x))]
=
i,k1
(t) (
i,k
(x)(t
i+k
t
i
) +t
i
t) =
i,k1
(t)(x t).
Deci
n1

i=0

i,k
(t)B
i,k
(x) = (x t)
n1

i=1

i,k1
(t)B
i,k1
(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
) si P
k,t
([a, b]) = P
k,t
spat iul funct iilor polinomiale
pe port iuni pe [a, b] de grad k si cu racord de clas a C
kpj
n t
j
dac a t
j
este un nod de
multiplicitate p
j
. Prin convent ie, un racord de clas a C
kpj
, 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
si 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
si S(x) =

n1
i=0
a
i
B
i,k
(x). Aplic and direct denit ia inductiv a a B-splinelor
se obt ine:
Propozitia 6.2.6. Are loc
S(x) =

a
(0)
i
(x)B
i,k
(x) =

a
(1)
i
(x)B
i,k1
(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,kr
(x)a
(r)
i
(x) + (1
i,kr
(x))a
(r)
i1
(x).
Observat ia 6.2.7. 1. Algoritmul este valabil si 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
) si pentru a calcula a
(k)
j
(x) este sucient
s a evalu am a
(r)
i
numai pentru j k + r 1 < i j, celelalte B
i,kr
(x) ind nule
pentru x [t
j
, t
j+1
). Avem asadar
S(x) =
j

i=jk
a
(0)
i
(x)B
i,k
(x) =
j

i=jk+1
a
(1)
i
(x)B
i,k1
(x) = = a
(k)
j
(x).

Algoritmul se prezint a, asadar, sub form a triunghiular a, ecare element obt in andu-se prin
combinat ia convex a a dou a elemente din linia anterioar a:
a
jk
a
jk+1
. . . a
j1
a
j
a
(1)
jk+1
. . . . . . a
(1)
j
.
.
. .
.
.
a
(k1)
j1
a
(k1)
j1
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
n1
< 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)
ki
.
6.2.3. Aplicatii n graca pe calculator
Curbe B-spline si B ezier
Fie P
0
, . . . , P
n1
R
s
, s N

.
6.2. B-spline 245
Denit ia 6.2.8. (a) Se numeste curb a B-spline asociat a poligonului de control
(P
0
, . . . , P
n1
) curba parametric a () denit a prin
() S(t) =
n1

i=0
P
i
B
i,k
(t), a t b.
(b) Se numeste curb a B ezier
2
asociat a poligonului de control (P
0
, . . . , P
k1
) 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)
ki
.
Propozitia 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
si t
n
= = t
n+k
= b
avem S(a) = P
0
si S(b) = P
n1
; n acest caz este tangent a n P
0
si P
n1
la laturile
poligonului de control.
2. este n nvelitoarea convex a a punctelor P
0
, . . . , P
n1
. Mai exact dac a t
i
t t
i+1
,
S(t) este n nvelitoarea convex a a punctelor P
ik
, . . . , P
i
. Curba B ezier este situat a
n nvelitoarea convex a a punctelor P
0
, . . . , P
n1
.
3.

In cazul c and nodurile t
i
(k + 1 i n 1) sunt simple, C
k1
si 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 si 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
) =
n1

i=0
P
i
B
i,k
(t
0
) =
k

i=jk
P
i
B
i,k
(t
0
).
2
Pi erre Bezier(1910-1999) Fiu si 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 inuent 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 modic am P
j
numai o port iune a curbei
se modic a.
(c) Caracterul local nu are loc n cazul curbelor B ezier: modicarea unui punct de control
atrage modicarea 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 si diviz-
iunea t
i
Iesire: Valoarea S(t)
1: Fie S(t) =

n1
i=0
P
i
B
i,k
(t) si 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,kr
(t)P
r
i
+ (1
i,kr
(t)P
r
i1
8: =
(t t
i
)P
r
i
(t) + (t
i+kr
t)P
r
i1
t
i+kr
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 si 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 si t
6
= t
7
= t
8
= 5 si al c arei poligon de control este dat n gura 6.3. Gracul curbei
apare de asemenea n gura 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 si punctul t n care se face evaluarea
Iesire: 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
i1
(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 si poligonul ei de control
6.2. B-spline 249
Dac a se alege o repartit ie uniform a a nodurilor si 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 (gura 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) si s a punem P
6+i
= P
i
; avem S(t 6) = S(t), iar curba este
denit a pe un interval arbitrar de lungime 6. Se obt ine n acest mod o curb a nchis a (gura
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 gura 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 k = 3. Poligonul de control are 6 puncte si este dat n gura 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
Gracul curbei apare n gura 6.7. Se observ a c a S(t) este tangent a n punctul P
k
j
(t) la seg-
mentul P
k1
k
P
k1
j
. S a ilustr am acum caracterul local al curbelor B-spline.

In gura 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 modic a coordonatele punctului P
3
, iar poligonul de control modicat si
B-spline-ul corespunz ator apar cu linie ntrerupt a.
Pentru detalii asupra curbelor si suprafet elor B ezier si B-spline si pentru aplicat ii ale
acestora n CAGD (Computer Aided Geometric Desingn) a se vedea [17, 28, 49].
6.3. Functii 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 aseste k + 1.
3
Isaac J. Schoenberg (1893-1990) - matematician n ascut la Galat i. A
studiat la universit at ile din Iasi, Berlin si G otingen.

In 1926 si sust ine
doctoratul la Universitatea din Iasi. 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 si 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 modic arii coordo-
natelor unui punct (P
3
)
Denit ia 6.3.1. Fie f : [t
0
, t
n+k
] R si 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)
si denim operatorul S

(S

f)(x) =
n1

i=0
f(
i
)B
i,k
(x). (6.3.2)
Acest operator se numeste operator spline cu variat ie diminuat a sau operatorul lui Schoen-
berg, iar S

f se numeste funct ie spline cu variat ie diminuat a.


S

f este un spline de gradul k, ind o combinat ie liniar a de funct ii B-spline de grad k. Pentru
punctele avem
a =
1
< <
n1
= b.
Propozitia 6.3.2. S

este un operator liniar si pozitiv si f P


1
avem S

f = f.
Demonstrat ie. Liniaritatea si pozitivitatea rezult a din denit ie folosind propriet at ile B-
splinelor. Trebuie s a ar at am c a S

reproduce pe 1 si pe x. S

1 = 1 rezult a din partit ia


unit at ii. Din identitatea lui Marsden (6.2.4) egal and coecient ii lui t
k1
obt inem
n1

i=0

i
B
i,k
(x) = x,
de unde S

x = x.
6.3. Funct ii spline cu variat ie diminuat a 253
Propozitia 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
ik
x
0
<
i
si atrage B
j,k
(x
0
) = 0 pentru j / [ik, i].
Fie P(x) = g(x
0
) +g

(x
0
)(x x0) ecuat ia tangentei la g n x
0
. Avem S

P = P si deci
S

(g P) = S

g S

P = S

g P = (S

g g) +g P
si pentru x = x
0
g(x
0
) S

g(x
0
) = S

(g P)(x
0
) =
i

j=ik
(g P)(
j
)B
j,k
(x
0
),
de unde
[g(x
0
) S

g(x
0
)[ sup[(g P)(x) : x (
ik
,
i
).
Dar din formula lui Taylor (g P)(x) =
(xx0)
2
2
g

() cu (x
0
, x) si [x x
0
[ k||
pentru (
ik
,
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
.
Denit ia 6.3.6. Fie f : [a, b] R. Formula
F = S

f +R

f (6.3.4)
se numeste 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)
+

n1

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 si 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 coecient 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 gracul funct iei spline cu variat ie diminuat a de gradul 3 pentru funct ia
f(x) = sin x si diviziunea
=
_
0, 0, 0, 0,

3
,
2
3
, , , ,
_
.
Ea a fost obt inut a cu comenzile:
6.4. Operatori liniari si 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: Gracul funct iei spline cu variat ie diminuat a de gradul 3 pentru funct ia f(x) =
sinx si diviziunea = (0, 0, 0, 0,

3
,
2
3
, , , , ) (st anga) si 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 si
diviziunea
=
_
0, 0, 0, 0,

4
,

2
,
3
4
, , , ,
_
.
6.4. Operatori liniari si pozitivi
Denit ia 6.4.1. Operatorul L : X Y se numeste liniar si pozitiv dac a pentru orice f, g
X si orice scalari ,
L(f +g) = Lf +Lg
f 0 Lf 0.
Observat ia 6.4.2. X si 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 si pozitiv si 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 sirurile construite cu
ajutorul operatorilor liniari si pozitivi.
Teorema 6.4.5. Fie (L
m
), L
m
: C[a, b] C[a, b], un sir de operatori liniari si 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)
si lim
m
u
m
(x) = 0, lim
m
v
m
(x) = 0 si 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
axb
[f(x)[ si t un punct oarecare, dar x, din intervalul [a, b].
Funct ia f ind uniform continu a pe [a, b], > 0, > 0, astfel nc at pentru x [a, b] si
[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 scolii de Analiz a numeric a si Teoria
aproxim arii din Cluj-Napoca. Doctorat n Frant a, la

Ecole Normale
Sup erieure (1933). Contribut ii importante si de pionierat n domeniul
Analizei matematice, Teoriei funct iilor, Teoriei aproxim arii si Anal-
izei numerice. A contribuit de asemenea la nceputurile si dezvoltarea
informaticii rom anesti si clujene.
6.4. Operatori liniari si 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 si 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 si (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 sir de operatori


liniari si pozitivi si
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] sirul (L
m
f) converge uniform la f pe [a, b].
Concluzia rezult a (6.4.4) si (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 modicat.
Un rezultat asem an ator cu cel din teorema 6.4.5 are loc si 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 si sin
2 tx
2
.
Fie C
2
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 sir de operatori liniari poz-
itivi L
m
: C
2
C
2
. 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)
si
lim
m
u
m
(x) = lim
m
u
m
(x) = lim
m
u
m
(x) = 0
uniform pe R
+
, atunci f C
2
L
m
f f pe R.
Demonstrat ie. Este analoag a cu a teoremei 6.4.5, analoaga inegalit at ii (6.4.2) ind
[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
) sirul 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(1x)
m
. Deoarece lim
m
x(1x)
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 si 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 asev 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 si pozitivi 259
si 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
.
Propozitia 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 si 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 denit 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 si 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 si inter-
pol arii n real si complex si 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 si la Universitatea din Cluj.
260 Aproximare uniform a
6.5. Cea mai bun a aproximare uniform a
Fie f C[a, b] si presupunem c a un polinom de grad cel mult n minimizeaz a norma
|fp
n
|

. Un astfel de polinomse numeste 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 Cebsev
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
axb
[R(x)[, i = 1, m.
(2) R(x
i
)R(x
i+1
) < 0, = i = 1, m1.
Vom nota mult imea tuturor diviziunilor de acest tip pe [a, b] prin /(m, a, b, R).
Teorema 6.5.1 (Cebsev). Pentru ca un polinom p
n
de grad cel mult n s a e cea mai bun a
aproximant a uniform a a lui f C[a, b], este necesar si sucient ca /(n + 2, a, b, R) s a e
nevid a.
Demonstrat ia sucient 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 Cebsev 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
acelasi semn ca R(x) = f(x) p
n
(x). Deoarece semnele lui R(x
i
) alterneaz a, exist a un
zero n interiorul ec 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
Cebsev abaterea maxim a se realizeaz a n trei puncte din [a, b] si 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)
mj
, j = 0, m,
si 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 e aproximat a este f(t) = 1. Care este solut ia exact a? Asat i, pentru ecare m, o
estimat ie a num arului de condit ionare, vectorul coecient ilor si eroarea asociat a (mod-
ulul diferent ei dintre valoarea calculat a si cea exact a). Comentat i rezultatul.
Problema 6.2. Generat i o liter a si o liter a folosind puncte de control adecvate si seg-
mente de curbe B-spline de grad 2 si 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 construieste si 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) si
(1, 0).

In t = 1/2 aceast a curb a are un punct cuspidal: prima sa derivat a se anuleaz a si
are un colt . Vericat i aceasta n MATLAB. Perturbat i coodonata x a punctelor de control 2 si
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] si 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
nit a
_
,
unde N N. Fie f : R R m arginit a si 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
si a > 0 xat. S a se arate c a dac a f C[0, a], operatorul Favard-Szasz denit 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 nit 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 si 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 si formula lui Simpson . . . . . . . . . . . . 269
7.3.2. Formule Newton-Cotes cu ponderi si 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, denite
pe X si L : X R o funct ional a liniar a real a astfel nc at L, L
1
, . . . , L
m
s a e liniar
independente.
Denit 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 coecient 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 coecient ilor A
i
si a studiului termenului rest corespunz ator valorilor
obt inute pentru coecient 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 si 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] si
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 coecient 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 si L
i
sunt ca n exemplul 7.1.3 si 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 si formul a de derivare numeric a .
Exemplul 7.1.5. Dac a X este un spat iu de funct ii denite pe [a, b], integrabile pe [a, b] si
pentru care exist a f
(j)
(x
k
), k = 0, m, j I
k
, cu x [a, b] si 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

jI
k
A
kj
f
(j)
(x
k
) +R(f),
numit a formul a de integrare numeric a.
Denit ia 7.1.6. Dac a P
r
X, num arul r N cu proprietatea c a Ker(R) = P
r
se numeste
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 si 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 si valorile lor (,,datele)
i
= L
i
f,
i = 1, m aplicate unei anumite funct ii f si 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 e 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 si 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

R
mm
. (7.1.4)
Cerem ca
det G ,= 0. (7.1.5)
Este usor 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) si 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 si apoi a promovat treptat p an a a
ajuns director. A avut contribut ii n domeniul dezvolt arii n serie a
funct iilor si aproxim arii Cebsev si 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
si observ am c a condit iile de interpolare
L
i
_
_
m

j=1
c
j

j
_
_
= s
i
, i = 1, m
pot 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 si 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
L
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 coecientilor nedeterminati. Aici determin am coecient ii din (7.1.3) astfel
nc at egalitatea s a aib a loc f , care, conform liniarit at ii lui L si 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 si cea a coecient ilor nedeterminat i
sunt matematic echivalente ele conduc la exact aceeasi 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 si n cazul metodei coecient 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
si 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
m1
)f[x
0
, x
1
, . . . , x
m
] (7.2.2)
si 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 si 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
m1
)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 si de aceea este bine s a e 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 gura 7.1). Aceasta rezult a si 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 si ecuat ii cu derivate part iale.
Se pot folosi si alte procedee de aproximare: Taylor, Hermite, spline, metoda celor mai
mici p atrate.
7.3. Integrare numeric a
Problema este de a calcula integrala denit 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 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 tratate ca si
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 ne, 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) si w : [a, b] R
+
o funct ie pondere integrabil a pe [a, b].
Denit 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 numeste formul a de integrare numeric a a funct iei f sau formul a de cuadratur a. Parametrii
A
j
, j = 0, m se numesc coecient ii formulei, iar R(f) termenul rest al ei. Q se numeste
funct ional a de cuadratur a.
Denit ia 7.3.2. Num arul natural d = d(Q) cu proprietatea c a f Pd, R(f) = 0 si
g Pd +1 astfel nc at R(g) ,= 0 se numeste 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
si numai dac a R(e
j
) = 0, j = 0, d si 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 si formula lui Simpson
Aceste formule au fost denumite de Gautschi n [22] ,,caii de b ataie ai integr arii nu-
merice. Ele si fac bine munca c and intervalul de integrare este m arginit si integrandul este
neproblematic. Formula trapezelor este surprinz ator de ecient a chiar si pentru intervale in-
nite.
Ambele reguli se obt in aplic and cele mai simple tipuri de interpolare subintervalelor di-
viziunii
a = x
0
< x
1
< x
2
< < x
n1
< 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 ecare subinterval [x


k
, x
k+1
] si 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
)
si
_
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 numeste 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
n1
+
1
2
f
n
_

1
12
h
3
n1

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 si 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 veric a c a pentru t [a, b], K
2
(t) 0 si 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 si-a
publicat formula n 1743, dar ea a fost cunoscut a deja, printre alt ii, de
Cavalieri (1639), Gregory (1668) si 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
n1
+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
si cresterea ordinului cu 1, ceea ce face ca regula repetat a a lui Simpson s a e foarte popular a
si 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] si e
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
n1
[0, 2] (7.3.9)
Aceasta se veric a lu and
f(x) = e

(x) := e
ix
= cos x +i sin x, = 0, 1, 2, . . .
R
n,1
(e

) =
_
2
0
e

(x)dx
2
n
_
1
2
e

(0) +
n1

k=1
e

_
2k
n
_
+
1
2
e

(2)
_
=
=
_
2
0
e
ix
dx
2
n
n1

k=0
e
2ik
n
.
C and = 0, aceasta este evident 0 si n caz contrar, deoarece
_
2
0
e
ix
dx = (i)
1
e
ix

2
0
= 0,
R
n,1
(e

) =
_
_
_
2 dac a = 0 (mod n), > 0

2
n
1 e
in2/n
1 e
i2/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 si 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 si are o dezvoltare Fourier uniform convergent a
f(x) =

=0
[a

(f) cos x +b

(f) sinx], (7.3.11)


unde a

(f), b

(f) sunt coecient 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 stie c a coecient 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
(si similar pentru b

(f)). Deoarece conform (7.3.12)


R
n,1
(f) 2a
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 totusi c a f trebuie s a e neted a pe
ntreg R. Pornind de la o funct ie f C
r
[0, 2] si 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 denite pe R si
care au proprietatea urm atoare: pentru un anumit r 1
f C
2r+1
[R],
_
R

f
(2r+1)
(x)

dx < ,
lim
x
f
(21)
(x) = lim
x+
f
(21)
(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 si 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 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 denit 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 si s a e nite.
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
n1
(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
n1
avem
L
n1
(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] si t
k
sunt echidistante pe [1, 1] problema a fost intuit a de New-
ton n 1687 si rezolvat a n detaliu de Cotes
3
n jurul anului 1712. Prin extensie, vom numi
formula (7.3.16) cu t
k
prescrise si 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 > n1 printr-o alegere judicioas a a nodurilor
t
k
(coecient ii A
k
ind dat i n mod necesar de (7.3.19)). R aspunsul este surprinz ator de
simplu si 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 si numai dac a sunt satisf acute urm atoarele condit ii:
(a) formula (7.3.16) este de tip interpolator ;
3
Roger Cotes (1682-1716), ul 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 si a publicat coecient 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
tr ait, am putut sti 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
k1
.
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 asa cum stim putem atinge gradul de exactitate
d = n 1).

Intr-adev ar, u
n
trebuie s a e ortogonale pe P
k1
relativ la funct ia pondere w.
Deoarece w(t) 0, avem n mod necesar k n. Altfel, u
n
trebuie s a e ortogonal pe P
n
,
n particular pe el nsusi, 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 numeste 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 (coecient 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] si extins a
la funct ii pondere mai generale de c atre Christoffel
4
n 1877. De aceea se mai numeste
formul a de cuadratur a Gauss-Christoffel .
Demonstrat ia teoremei 7.3.3. Vom demonstra nt ai necesitatea lui (a) si (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
k1
, u
n
p P
n1+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 sucient a lui (a) si (b) trebuie s a ar at am c a pentru orice p P
n1+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
k1
, r P
n1
4
Elvin Bruno Christoffel (1829-1900), a activat pentru perioade scurte
la Berlin si Z urich si 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 si 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
k1
, n timp ce a doua,
conform lui (a), deoarece r P
n1
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 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 nit a si serveste ca nod, s a zicem t
1
= a. Gradul
maxim de exactitate care se poate obt ine este d = 2n 2 si 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 e
r ad acinile polinomului
n1
(, w
a
), unde w
a
(t) = (t a)w(t). La fel, n formulele Gauss-
Lobatto, ambele capete sunt nite si servesc ca noduri, s a zicem t
1
= a, t
n
= b, iar nodurile
r amase t
2
, . . . , t
n1
sunt zerourile lui
n2
(; w
a,b
), w
a,b
(t) = (ta)(bt)w(t), obt in andu-
se astfel gradul de exactitate d = 2n 3.
7.3.3. Propriet ati ale cuadraturilor gaussiene
Regula de cuadratur a a lui Gauss, dat a de (7.3.16) si (7.3.22), pe l ang a faptul c a este
optimal a (adic a are grad maxim de exactitate) are si unele propriet at i interesante.
(i) Toate nodurile sunt reale, distincte si situate n intervalul deschis (a, b). Aceasta este o
proprietate cunoscut a satisf acut a de zerourile polinoamelor ortogonale.
(ii) Tot i coecient 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
2n1
(f; ) este polinomul
de cea mai bun a aproximare a lui f pe [a, b] n sensul normei uniforme atunci
lim
n
|f() p
2k1
(f; )|

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

_
b
a
[f(t) p
2n1
(f; t)]w(t)dt
n

k=1
A
k
[f(t
k
) p
2n1
(f; t
k
)]

_
b
a
[f(t) p
2n1
(f; t)[w(t)dt +
n

k=1
A
k
[f(t
k
) p
2n1
(f; t
k
)[
|f() p
2n1
(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
2n1
|

0, c and n .
Proprietatea care urmeaz a este baza unui algoritm ecient de obt inere a unor formule de
cuadratur a gaussian a.
(iv) Fie
k
=
k
(w) si
k
=
k
(w) coecient ii din formula de recurent a pentru poli-
noamele ortogonale

k+1
(t) = (t
k
)
k
(t)
k

k1
(t), k = 0, 1, 2, . . .

0
(t) = 1,
1
(t) = 0,
(7.3.23)
unde

k
=
(t
k
,
k
)
(
k
,
k
)

k
=
(
k
,
k
)
(
k1
,
k1
)
,
(7.3.24)
cu
0
denit 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 denit a prin
J
n
(w) =
_

1
0

1

1

2
.
.
.
.
.
.
.
.
.
_

n1
0
_

n1

n1
_

_
. (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 si valori proprii pentru o matrice tridiagonal a simetric a. Pentru aceast a problem a
exist a metode foarte eciente. Deci, abordarea bazat a pe valori si vectori proprii este mai
ecient 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 (coecient ii sunt obt inut i prin aplicarea de
relat ii de recurent a, deci sunt deja perturbat i) si 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
)
d

k
. Inser and aceasta n (7.3.23), mp art ind cu
_
(
k
,
k
)
d
si utiliz and
(7.3.24), se obt ine

k+1
(t) = (t
k
)

k
_

k+1

k

k1
_

k+1

k
,
sau nmult ind cu
_

k+1
si reordon and,
t
k
(t) =
k

k
(t) +
_

k

k1
(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), . . . ,
n1
(t)]
T
si 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 si 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 si 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
nn
este matricea vectorilor proprii, a R
n
este vectorul coecient ilor gaussieni si 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
si 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 si cuadraturi
gaussiene a se vedea [23].
D am acum o tabel a cu funct iile pondere clasice, polinoamele lor ortogonale core-
spunz atoare si coecient 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)
si

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 si coecient ii unei formule de cuadratur a de tip
Gauss cu ajutorul vectorilor si valorilor proprii ale matricei lui Jacobi. Parametrii de intrare
sunt coecient ii si ai relat iei de recurent a. Se foloseste 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)
(4k
2
)
1
(k>0)
Cebsev #1 Tn (1t
2
)

1
2
[1,1] 0 (k=0)
1
2
(k=1)
1
4
(k>0)
Cebsev #2 un(Qn) (1t
2
)
1
2 [1,1] 0
1
2
(k=0)
1
4
(k>0)
Jacobi P
(,)
n
(1t)

(1t)

[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 si coecient 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
coecient ii si 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 si coecient ii pentru
formule de tip Gauss de diverse tipuri, apel and funct ia Gaussquad. Sursa 7.5 calculeaz a
nodurile si coecient 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-Cebsev de spet a I coecient ii sunt egali, iar nodurile
sunt r ad acinile polinomului Cebsev de spet a I, n sursa 7.6 nu am mai folosit matricea Ja-
cobi. Se mai dau funct iile pentru formule Gauss-Cebsev de spet a a doua (sursa 7.7), Gauss-
Hermite (sursa 7.8), Gauss-Laguerre (sursa 7.9) si Gauss-Jacobi (sursa 7.10).
Sursa MATLAB 7.6 Generare formul a Gauss-Cebsev 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-Cebsev 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=(b2-a2)./(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 obt inut a cu ajutorul
formulei de interpolare a lui Hermite cu noduri duble:
f(x) = (H
2n1
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
2n1
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
2n1
f)(x)dx =
n

i=1
A
i
(H
2n1
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 si 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 si de valoarea derivatelor de un anumit ordin ale funct iei care urmeaz a a 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 si teoria constructiv a a aproxim arii.
7.4. Cuadraturi adaptive 285
un anumit ordin mari n special funct ii care au uctuat ii mari pe unele subintervale sau pe
tot intervalul. Este rezonabil s a utiliz am subintervale mici acolo unde derivatele sunt mari si
subintervale mari acolo unde derivatele sunt mici. O metod a care face aceasta ntr-o manier a
sistematic a se numeste cuadratur a adaptiv a.
Abordarea general a ntr-o cuadratur a adaptiv a este de a utiliza dou a metode diferite pe
ecare subinterval, de a compara rezultatul si 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 munceste 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 innit
pentru a atinge o precizie imposibil de atins. Num arul de pasi depinde de natura funct iei de
integrat. Posibilit at i de mbun at at ire: precizia poate scalat a cu raportul dintre dimensiunea
intervalului curent si 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 =
_
2
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 si 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 si
apoi subdivid intervalele n p art i egale folosind la ecare pas aproximantele calculate ante-
rior. Vom exemplica aceast a tehnic a printr-o metod a care porneste de la formula repetat a a
trapezului si mbun at at este 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
p1
, unde p N

. Valoarea pasului h
k
corespunz atoare lui n
k
va
h
k
=
b a
n
k
=
b a
2
k1
.
Cu aceste notat ii regula trapezului devine
_
b
a
f(x)dx =
h
k
2
_
_
f(a) +f(b) + 2
2
n1
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
si, n general,
R
k,1
=
1
2
_
_
R
k1,1
+h
k1
2
k2

i=1
f
_
a +
_
i
1
2
_
h
k1
_
_
_
, k = 2, n (7.5.3)
Urmeaz a mbun at at irea prin extrapolare Richardson
6
(desi a fost introdus a de Richardson
si Gaunt se pare c a este datorat a lui Arhimede
7
)
I =
_
b
a
f(x)dx = R
k1,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
k1,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
k1,1
3
+O(h
4
).
Denim
R
k,2
=
4R
k,1
R
k1,1
3
. (7.5.4)
Se aplic a extrapolarea Richardson si 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
k1
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 si termodinamice ale meteorologiei cu metode bazate
pe diferent e nite. 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 si-a luat licent a n psihologie si a dezvoltat o teorie
stiint ic 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 si
suprafet e ale multor corpuri. A dat o aproximare precis a a lui ,
metode de aproximare precis a a r ad acinii p atrate si un sistem de
reprezentare a numerelor mari.

In mecanic a, Arhimede a descoperit
teoremele fundamentale referitoare la centrul de greutate al gurilor
plane si solidelor si principiul care i poart a numele, referitor la un
corp scufundat ntr-un lichid. Masinile sale de r azboi au contribuit la
ap ararea orasului s au n timpul asediului romanilor, care a durat trei
ani. A murit ucis de un soldat roman la sf arsitul 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 justic a n modul urm ator. Fie a
0
=
_
b
a
f(x)dx si
A(h) =
h
2
_
f(a) + 2
n1

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
si 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
(2k1)
(b) f
(2k1)
(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 si lect ii particulare
de la Johann Bernoulli. Dup a ce la 20 de ani nu a reusit s a obt in a o
catedr a de zic a la Basel, a emigrat la Sankt Petersburg; mai t arziu
s-a mutat la Berlin si apoi din nou la Sankt Petersburg. Indiscutabil,
Euler a fost cel mai prolic matematician al secolului al XVIII-lea,
lucr and n aproape toate ramurile calculului diferent ial si integral si
ind unul dintre fondatorii calculului variat ional. A elaborat lucr ari de
pionierat n stiint ele aplicate: hidrodinamic a, mecanica materialelor
deformabile si 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 innitezimal la probleme de geometrie. Este cunoscut pentru dez-
voltarea n serie n jurul originii, dar a avut si contribut ii la teoria
ecuat iilor.
7.6. Cuadraturi adaptive II 289
Cantit at ile B
k
sunt numerele lui Bernoulli
10
, adic a coecient ii dezvolt arii
z
e
z
1
=

k=0
B
k
k!
z
k
, [z[ < 2.
Formula (7.5.6) se numeste formula Euler-MacLaurin .
Elimin and succesiv puterile lui h din (7.5.5) se obt ine
R
k,j
=
4
j1
R
k,j1
R
k1,j1
4
j1
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 si (R
n,n
) converge, mai rapid dec at (R
n,1
). Drept cri-
teriu de oprire se poate folosi [R
n1,n1
R
n,n
[ .
D am o implementare n MATLAB a metodei lui Romberg (sursa MATLAB 7.12, sierul
Romberg.m).
Exemplul 7.5.1. Problema din exemplul 7.4.1 se poate rezolva si 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 si Newton a calculului
diferent ial si 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 si 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
k1,1
15
= R
k,2
+
R
k,2
R
k1,2
15
.
Relat ia
S
k,2
= S
k,1
+
S
k,1
S
k1,1
15
, (7.6.1)
va 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 si 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 si 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 si 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 si quadl. Ambele
necesit a ca intervalul de integrare [a, b] s a e nit si integrandul s a nu aib a nici o singularitate
pe acest interval. Pentru tratarea limitelor innite sau singularit at ilor se pot ncerca diverse
trucuri cunoscute n analiza numeric a cum ar 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) (si similar pentru
quadl), unde fun este funct ia de integrat. Ea poate dat a sub form a de sir de caractere,
obiect inline sau function handle. Important este s a accepte la intrare vectori si 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 areste)
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
sierul 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, asa cum se
descrie n sect iunea 7.6 sau n [44]. quadl este mai precis a si se bazeaz a pe o cuadratur a de
tip Gauss-Lobatto cu 4 puncte (si grad de exactitate 5) si o extensie a ei de tip Kronrod cu
7 puncte (si 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 si 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 si marcheaz a punctele de pe axa xn 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 modic 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 gura 7.3, consider and 1000 de puncte t echidistante din intervalul [4, 4].
Din motive de ecient a, vom exploata simetria si vom evita integrarea repetat a pe [0, t], in-
tegr and pe ecare subinterval si 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 foloseste funct ia
trapz. Ea implementeaz a regula trapezelor (nodurile nu trebuie s a e echidistante). Asa
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 ind
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 si 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 si o cuadratur a adaptiv a.
Problema 7.3. Aproximat i
_
1
1
2
1 +x
2
dx
folosind formula trapezelor si formula repetat a a lui Simpson, pentru diverse valori ale lui n.
Cum variaz a precizia odat a cu n? Reprezentat i grac.
Problema 7.4. Funct ia eroare, erf, se deneste 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 si erf.
Problema 7.5. (a) Utilizat i adquad si 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
si parametrii = p si = 0. Luat i, de exemplu, f(t) = tgt, p = 5(5)20 si n = 10(10)50 n
cazul formulei trapezelor si 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 grac 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 dicultatea? Justicat i solut ia.
(f) Utilizat i adquad cu diverse precizii (tolerant e). Reprezentat i grac eroarea si 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 si ecient a . . . . . . . . . . . . . . . . . . . . . . 298
8.3. Metoda sirurilor 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 modicare . . . . . . . . . . . . . . . . . . . . . . . 318
8.12. Ecuat ii neliniare n MATLAB . . . . . . . . . . . . . . . . . . . . . . . 321
Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
8.1. Ecuatii 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 semnicat ia lui x si 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 si 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
si 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 si f este un operator (liniar sau neliniar) ce act ioneaz a pe acest spat iu.

In ecare
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 si 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 si merit a un tratament special.
8.2. Iteratii, convergent a si ecient a
Nici chiar cele mai simple ecuat ii - de exemplu cele algebrice - nu admit solut ii care s a e
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 nit de operat ii aritmetice. Este
nevoie de o metod a iterativ a, adic a de o procedur a care genereaz a o secvent a innit a de
aproximat ii x
n

nN
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
si sunt vectori de dimensiune
adecvat a, iar convergent a trebuie nt eleas a n sensul convergent ei pe componente.
Desi convergent a unui proces iterativ este de dorit, pentru a putea practic a, este necesar
ceva mai mult dec at convergent a. Ceea ce se doreste este o convergent a rapid a. Conceptul de
baz a pentru m asurarea vitezei de convergent a este ordinul de convergent a.
Denit 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 sir pozitiv ce satisface
lim
n
e
n+1
e
n
= c, 0 < c < 1. (8.2.3)
Dac a (8.2.2) si (8.2.3) au loc cu egalitate n (8.2.2), atunci c se numeste eroare asimptotic a .

In aceast a denit 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 si ecient a 299
nsemn and c a n cele din urm a (pentru n sucient de mare) ecare din aceste margini ale
erorii este aproximativ o fract ie constant a din precedenta.
Denit 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 sucient 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 numeste eroare asimptotic a.
Aceleasi denit ii se aplic a si sirurilor vectoriale, cu modulul nlocuit cu orice norm a vec-
torial a.
Clasicarea convergent ei n raport cu ordinul este destul de rudimentar a, deoarece sunt
tipuri de convergent a la care denit iile (8.2.1) si (8.2.2) nu se aplic a. Astfel, un sir 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 numeste 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
sucient 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
p1
e
p
k
n0
, k = 0, 1, 2, . . . , (8.2.6)
care desigur are loc pentru p > 1, dar si 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 sucient 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) si (8.2.7) obt inem

k
=
_
k log
1
c
, dac a p = 1
p
k
_
1p
k
p1
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 si
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 sucient de mare si deci e
n0
sucient de mic, pentru a avea c
p
> 0).
Aceasta ne arat a c a num arul de cifre zecimale corecte creste liniar odat a cu k c and p = 1 si
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 creste, pe iterat ie, cu un factor p.
Dac a ecare 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
ecient a al iterat iei poate denit 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 ecient 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 obisnuieste s a se nlocuiasc a x
n
cu x
n
x
n1
si se impune cerint a ca
|x
n
x
n1
| 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 totusi prudent s a utiliz am un
test mixt, cum ar , 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 sirurilor Sturm
Exist a situat ii n care este de dorit s a select amo r ad acin a particular a dintre mai multe si 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 si 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. si s a o
calcul am f ar a a mai calcula si altele. Aceasta este posibil dac a combin am njum at at irea cu
teorema lui Sturm
1
.
1
Jaques Charles Francois Sturm (1803-1855), matematician si zician
elvet ian, cunoscut pentru teorema sa asupra sirurilor Sturm, de-
scoperit a n 1829 si pentru teoria sa asupra ecuat iei diferent iale Sturm-
Liouville. A avut contribut ii semnicative si n domeniul geometriei
proiective si diferent iale.
8.3. Metoda sirurilor 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 si poate 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

k1
(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 si 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),
d1
(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
gura 8.1.

d
d d1

r
r r1

x
(x)

1
Figura 8.1: Ilustrarea metodei lui Sturm
Este usor 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 gura 8.1).
Ideea de baz a este de a controla procesul de njum at at ire nu ca mai sus, ci mai degrab a
veric 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
si b >
1
. Acestea se obt in trivial ca si capete ale intervalului de ortogonalitate al lui
d
,
dac a acesta este nit. 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
=
_

1
0

1

1

2

2
.
.
.
.
.
.
.
.
.
_

n1
0
_

n1

n1
_

_
,
t in and cont c a zerourile lui
d
sunt valori proprii ale lui J
d
.
Teorema lui Gershgorin arm 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 ales ca ind cel mai mic si b cel mai mare dintre cele d numere

0
+

1
,
1
+

1
+

2
, . . . ,
d2
+
_

d2
+
_

d1
,
d1
+
_

d1
. Metoda sirurilor
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
n1
, 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)
si gener am un sir 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 e o alegere mai exibil a dec at n metoda njum at at irii deoarece x
n
va 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 usor 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 si m arginit superior de , deci convergent c atre o limit a x, iar f(x) =
0 (vezi gura 8.2).
a b
x
n1
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) si 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 si 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] si f

() ,= 0,
f

are semn constant pe o vecin atate a lui si pentru un n sucient de mare x


n
ajunge n
acea vecin atate si se poate proceda ca mai sus.
Dezavantaje: (i) convergent a lent a; (ii) faptul c a unul din capete poate r am ane x. Dac a
f este turtit a n vecin atatea r ad acinii si a este apropiat de si b dep artat convergent a poate
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
si se continu a cu
x
n+1
= x
n

x
n
x
n1
f(x
n
) f(x
n1
)
f(x
n
), n N

. (8.5.1)
Aceasta prent ampin a aparit ia unei false pozit ii si 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
si x
1
sunt sucient 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
n1
, x
n
]
= (x
n
)
_
1
f(x
n
) f()
(x
n
)f[x
n1
, x
n
]
_
= (x
n
)
_
1
f[x
n
, ]
f[x
n1
, x
n
]
_
= (x
n
)
f[x
n1
, x
n
] f[x
n
, ]
f[x
n1
, x
n
]
= (x
n
)(x
n1
)
f[x
n
, x
n1
, ]
f[x
n1
, x
n
]
.
8.5. Metoda secantei 305
Deci
(x
n+1
) = (x
n
)(x
n1
)
f[x
n
, x
n1
, ]
f[x
n1
, 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) si
x
n
si 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
n1
C, C > 0

Inmult ind ambii membri cu C si pun and E


n
= Ce
n
obt inem
E
n+1
= E
n
E
n1
, E
n
0.
Logaritm and si pun and y
n
=
1
En
, se obt ine
y
n+1
= y
n
+y
n1
, (8.5.3)
care este recurent a pentru sirul lui Fibonacci. Solut ia este
y
n
= c
1
t
n
1
+c
2
t
n
2
,
unde c
1
, c
2
sunt constante si
t
1
=
1
2
(1 +

5), t
2
=
1
2
(1

5).
Deoarece y
n
, avem c
1
,= 0 si 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
si deci
e
n+1
e
t1
n

C
t1
e
c1t
n
1
t1
Ce
c1t
n+1
1
= C
t11
, 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 si e I

= x R : [x [ < si
presupunem c a f C
2
[I

]. Denim pentru sucient de mic


M() = max
sI
tI

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

()
2f

()

< , deci (8.5.5) poate sat-


isf acut a pentru sucient de mic. Natura local a a convergent ei este cuanticat 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 si (x, ) (sau (, x)). Astfel dac a x I

, atunci si I

si 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
= si metoda converge ntr-un num ar nit de pasi. Vom
demonstra aceasta prin induct ie: presupunem c a x
n1
, x
n
I

si x
n
,= x
n1
. Acest lucru
este adev arat pentru n = 1 din ipotez a. Deoarece f C
2
[I

]
f[x
n1
, x
n
] = f

(
1
), f[x
n1
, x
n
, ] =
1
2
f

(
2
),
i
I

, i = 1, 2,
din (8.5.2) rezult a
[x
n+1
[
2

(
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 (si 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()]
n1
[x
1
[.
Cum M() < 1, rezult a c a metoda este convergent a si x
n
c and n .
Deoarece este nevoie de o singur a evaluare a lui f pe pas, indicele de ecient 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 privit a ca un caz la limit a al metodei secantei, c and x
n1
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

()
si 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 si I

= x R : [x[ .
Presupunem c a f C
2
[I

]. Denim
M() = max
sI
tI

(s)
2f

(t)

. (8.6.4)
Dac a este sucient de mic astfel nc at
2M() < 1, (8.6.5)
atunci pentru orice x
0
I

, metoda lui Newton este bine denit a si converge p atratic c atre


singura r ad acin a I

.
Criteriul de oprire pentru metoda lui Newton
[x
n
x
n1
[ <
se bazeaz a pe urm atoarea propozit ie:
Propozitia 8.6.2. Fie (x
n
) sirul 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] si metoda este convergent a, atunci exist a un
n
0
N astfel nc at
[x
n
[ [x
n
x
n1
[, 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 si [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
n1
) + (x
n
x
n1
)f

(x
n1
) +
1
2
(x
n
x
n1
)
2
f

(), (8.6.7)
cu (x
n1
, x
n
) sau (x
n
, x
n1
). T in and cont de modul de obt inere a unei aproximat ii
n metoda lui Newton, avem f(x
n1
) + (x
n
x
n1
)f

(x
n1
) = 0 si din (8.6.7) se obt ine
[f(x
n
)[ =
1
2
(x
n
x
n1
)
2
[f

()[
1
2
(x
n
x
n1
)
2
|f

,
iar pe baza formulei (8.6.6) rezult a c a
[ x
n
[
|f

2m
1
(x
n
x
n1
)
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
n1
) < 1, n > n
0
si deci
[x
n
[ [x
n
x
n1
[, n > n
0
.

Interpretarea geometric a a metodei lui Newton apare n gura 8.3, iar o implementare n
sursa MATLAB 8.2.
x
n1 x
n

Figura 8.3: Metoda lui Newton


Alegerea valorii de pornire este, n general, o problem a dicil a.

In practic a, se alege o
valoare, iar dac a dup a un num ar maxim xat 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] si 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 aproximatiilor succesive
Adesea, n aplicat ii, ecuat iile neliniare apar sub forma unei probleme de punct x: s a se
determine x astfel nc at
x = (x). (8.7.1)
Un num ar ce satisface aceast a ecuat ie se numeste punct x 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 x a lui (8.7.1), atunci metoda
aproximat iilor succesive genereaz a un sir de aproximat ii
x
n+1
= (x
n
). (8.7.3)
Dac a acest sir converge si este continu a, atunci sirul converge c atre un punct x 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 privit a ca o iterat ie de tip punct x, dar nu si 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
usor de determinat. S a presupunem c a n punctul x avem

() =

() = =
(p1)
() = 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
)
p1
(p 1)!

(p1)
()
+
(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
si () = obt inem
x
n+1

(x
n
)
p
=
1
p!

(p)
(
n
).
C and x
n
, deoarece
n
este ntre x
n
si , 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 si 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 x al lui si I

= x R : [x [ . Presupunem c a
C
p
[I

] si satisface (8.7.4). Dac a


M() := max
tI
[

(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, e
(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 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 aceleasi r ad acini ca si f, dar simple. Metoda lui Newton pentru problema modicat 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 si 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 modicarea
problemei, ci si prin modicarea 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 modicat 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). Ecient 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
k1
[ [x
k
[ < [x
k2
[
putem nlocui n (8.8.2) prin x
k
f(x
k1
) (x
k1
x
k
)
m
c,
f(x
k2
) (x
k2
x
k
)
m
c.

In continuare se obt ine m:


m
log [f(x
k1
)/f(x
k2
)]
log [(x
k1
x
k
)/(x
k2
x
k
)]
.
Aceast a valoare poate utilizat a n (8.8.3).
8.9. Ecuat ii algebrice 313
8.9. Ecuatii 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
ecient de a evalua simultan valoarea polinomului si 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
d1
x
d1
+ +a
0
, (8.9.1)
n care coecientul dominant se presupune (f ar a a restr ange generalitatea) a egal cu 1 si
unde putem presupune, f ar a a restr ange generalitatea c a a
0
,= 0. Pentru simplitate, vom
presupune c a tot i coecient 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 si derivatei.
Schema lui Horner este bun a pentru asa 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
) si 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 si toate calculele se fac n aritmetic a complex a. Este posibil s a se
mpart a cu factori p atratici si 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 mari. O modalitate
de mbun at at ire este de a utiliza r ad acinile astfel calculate ca aproximat ii init iale si a aplica
metoda lui Newton polinomului original.
8.10. Metoda lui Newton n R
n
Metoda lui Newton este usor 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 nlocuieste 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 ecient si mai convenabil ca, n loc s a invers amjacobianul la ecare pas, s a rezolv am
sistemul (8.10.5) si s a folosim iterat ia n forma (8.10.4).
Teorema 8.10.1. Fie o solut ie a ecuat iei F(x) = 0 si 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 si satisface condit ia Lipschitz
|F

(x) F

(y)|

c|x y|

, x, y B(), c > 0.
Punem = c max
_
|[F

(x)]
1
|

: | x|


_
si 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 uneste 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
si 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 si pen-
tru ecuat ii scalare si pentru sisteme.
Sursa MATLAB 8.3 Metoda lui Newton n R si R
n
function [z,ni]=Newton(f,fd,x0,ea,er,nmax)
%NEWTON - metoda lui Newton pentru ecuatii neliniare
% in R si Rn
%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 si 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 si 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
(k1)
|

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 semnicativ a a metodei lui Newton pentru rezolvarea sistemelor de ecuat ii
neliniare este necesitatea ca la ecare pas s a calcul am matricea jacobian a si 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 si de multe ori imposibil a. Efortul total pentru
8.11. Metode quasi-Newton 317
o iterat ie a metodei lui Newton va de cel put in n
2
+n evalu ari de funct ii scalare (n
2
pentru
evaluarea jacobianului si n pentru evaluarea lui F) si O(n
3
) operat ii aritmetice pentru a
rezolva sistemul liniar. Acest volum de calcule este prohibitiv, except and valori mici ale lui
n si funct ii scalare usor de evaluat. Este resc ca atent ia s a e ndreptat a spre reducerea
num arului de evalu ari si evitarea rezolv arii unui sistem liniar la ecare 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 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)
si 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 nlocuieste 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 si 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 masinii.


8.11.1. Interpolare liniar a
La interpolare ecare dintre planele tangente se nlocuieste 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)
si 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 si metoda lui Brent. Metoda lui Brown combin a aprox-
imarea lui F

si 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 si Cosnard [45] au ajuns la concluzia c a metoda lui Brent
este adeseori de preferat metodei lui Brown si 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 e-
cient a metod a de rezolvare.
8.11.2. Metode de modicare
Din punct de vedere al efortului de calcul, sunt deosebit de convenabile metodele n care
la ecare pas se ntrebuint eaz a o aproximare A
k
a lui F

(x
(k)
), care se obt ine din A
k1
printr-o modicare 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 ecare pas; ea se nlocuieste 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 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)
si 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
(asa 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
si q
T
(x
(k+1)
x
(k)
) = 0 veric a de asemenea ecuat ia (8.11.5). Pe de alt a parte,
y
k
:= F(x
(k)
) F(x
(k1)
) si s
k
:= x
(k)
x
(k1)
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
si 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 sirul A
1
, A
2
, . . . utiliz and
formulele (8.11.5) si (8.11.6) (Broyden [8], Dennis si Mor e [15]).
Pentru sirul 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 si a c arei complexitate este doar O(n
2
). Cu aju-
torul matricelor B
k
se poate deni 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 pasii s
k
se apropie asimp-
totic (c and k ) de vectorii de actualizare (corect ie) ai metodei lui Newton. Se poate
recunoaste n aceasta semnicat 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 aceeasi funct ie si acelasi jacobian ca n exemplul 8.10.2 si cu valoarea de pornire
x
(0)
= [0.1, 0.1, 0.1]
T
se obt in rezultatele din tabela 8.2. Iat a si 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
(k1)
|

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. Ecuatii 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 coecient 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 si 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 si modul de asare 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) si Display care
specic a nivelul de raportare, cu valorile off pentru nici o iesire, iter pentru iesire la
ecare iterat ie, final pentru a asa doar rezultatul nal si notify pentru a asa 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 si 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 iesire este valoarea funct iei n zeroul calculat. Deoarece funct ia
f(x) = tan x x are o singularitate n /2 (vezi gura 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 doreste 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. Totusi, 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 si TolFun este 1e-4.
Exemplul 8.12.1. Sistemul neliniar din exemplele 8.10.2 si 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 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 sierul 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
si precizia 10
9
si pentru x. Comen-
zile MATLAB si 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 si precizia nu este la fel de bun a (si datorit a aspectului
mai complicat al funct iei obiectiv). Aproximanta obt inut a astfel poate 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 si este insensibil la discontinuit at i
ale funct iei. Toolbox-ul Optimization cont ine metode mai sosticate 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 si 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) si 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
i1
= 0.
Sistemul are n ecuat ii si n + 2 necunoscute. Vom lua a
0
= 5, a
n
= 0.5 mol/litru. S a se
rezolve sistemul pentru n = 10 si valoarea de pornire x=[1:-0.1:0.1].
326 Rezolvarea numeric a a ecuat iilor neliniare
CAPITOLUL 9
Valori si vectori proprii
Cuprins
9.1. Valori proprii si r ad acini ale polinoamelor . . . . . . . . . . . . . . . . . 328
9.2. Terminologie si 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 si vectori proprii n MATLAB . . . . . . . . . . . . . . . . . . . 351
Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355

In acest capitol ne ocup am de determinarea valorilor proprii ale unei matrice p atratice
A R
nn
si vectorilor proprii corespunz atori, adic a a valorilor C si vectorilor x
C
n
0 pentru care
Ax = x. (9.0.1)
Denit ia 9.0.2. Num arul C se numeste valoare proprie a matricei A R
nn
, 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 si valori proprii se numesc uneori prescurtat probleme proprii.
327
328 Valori si vectori proprii
9.1. Valori proprii si 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
nn
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 calculul polinomului caracteristic
si apoi determinarea r ad acinilor. Natural, calculul unui determinant n general ind o prob-
lem a complex a si instabil a, transformarea matricei ar mai potrivit a. Reciproc, problema
g asirii r ad acinilor unui polinom poate formulat a ca o problem a de determinare a valo-
rilor proprii. Fie p P
n
un polinom cu coecient 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
n1
,,nmult irea modulo p
P
n1
q r xq(x) = p(x) +r(x), r P
n
(9.1.1)
este o transformare liniar a si deoarece
x
n
=
1
a
n
p(x)
n1

j=0
a
j
a
n
x
j
, x R,
vom reprezenta p relativ la baza 1, x, . . . , x
n1
prin asa-numita matrice companion a lui
Frobenius (de dimensiune n n)
M =
_

_
0
a0
an
1 0
a1
an
.
.
.
.
.
.
.
.
.
1 0
an2
an
1
an1
an
_

_
. (9.1.2)
Fie v
j
= (v
jk
: k = 1, n) C
n
, j = 1, n alesi astfel ca

j
(x) =
p(x)
x z
j
= a
n

k=j
(x z
k
) =
n

k=1
v
jk
x
k1
, j = 1, n;
atunci
n

k=1
(Mv
j
z
j
v
j
)
k
x
k1
= x
j
(x) z
j

j
(x) = (x z
j
)
j
(x) = p(x) 0,
9.2. Terminologie si descompunere Schur 329
si 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
n1
furnizeaz a o matrice
M ale c arei valori proprii s a e 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 si descompunere Schur
Asa 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
nn
.
Denit ia 9.2.1. Dou a matrice A, B C
nn
se numesc similare dac a exist a o matrice T
C
nn
, astfel nc at
A = TBT
1
.
Lema 9.2.2. Dac a A, B C
nn
sunt similare, ele au aceleasi valori proprii.
Demonstrat ie. Fie C o valoare proprie a lui A = TBT
1
si x C
n
vectorul propriu
corespunz ator. Atunci avem
B(T
1
x) = T
1
ATT
1
x = T
1
Ax = T
1
x
si deci, este, de asemenea, valoare proprie a lui B.
Din algebra liniar a se cunoaste urm atorul rezultat important.
Teorema 9.2.3 (Forma normal a Jordan). Orice matrice A C
nn
este similar a cu o ma-
trice
J =
_

_
J
1
.
.
.
J
k
_

_, J

=
_

1
.
.
.
.
.
.
.
.
. 1

_
C
n

,
k

=1
n

= n,
numit a forma normal a Jordan a lui A.
Pentru demonstrat ie vezi [29].
Denit ia 9.2.4. O matrice se numeste diagonalizabil a, dac a toate blocurile sale Jordan J

au dimensiunea 1, adic a n

= 1, = 1, n. O matrice se numeste nederogatorie dac a pentru


ecare valoare proprie

exist a exact un bloc Jordan n care ea apare pe diagonal a.


330 Valori si vectori proprii
Observat ia 9.2.5. Dac a o matrice A R
nn
are n valori proprii simple, atunci ea este
diagonalizabil a si de asemenea nederogatorie si potrivit a pentru a tratat a numeric.
Teorema 9.2.6 (Descompunere Schur). Pentru orice matrice A C
nn
exist a o matrice
unitar a U C
nn
si o matrice triunghiular a superior
R =
_

1
. . .
.
.
.
.
.
.
.
.
.
.
.
.

n
_

_
C
nn
,
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 si R sunt similare, ele au aceleasi valori proprii.
2.

Intre A si 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 si e A C
(n+1)(n+1)
. Fie C o valoare
proprie a lui A si x C
n+1
, |x|
2
= 1, vectorul propriu corespunz ator. Lu am vectorul
u
1
= x si 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 e unitar a. Asadar,
U

AUe
1
= U

Au
1
= U

Ax = U

x = e
1
,
adic a
U

AU =
_

0 B
_
, B C
nn
.
Conform ipotezei induct iei exist a o matrice unitar a V C
nn
, astfel nc at B = V SV

,
unde S C
nn
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

si 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
nn
i corespunde o matrice ortogonal a
U C
nn
astfel nc at
A = U
_

1
.
.
.

n
_

_U

,
j
R, j = 1, n.
9.2. Terminologie si descompunere Schur 331
Demonstrat ie. Matricea R din teorema 9.2.6 veric a R = U

AU. Deoarece
R

= (U

AU) = U

U = U

AU = R,
R trebuie s a e diagonal a, cu elemente reale pe diagonal a (ind 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 si 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
nn
este unitar diagonalizabil a, adic a exist a o matrice
unitar a U C
nn
astfel nc at
A = U
_

1
.
.
.

n
_

_U

,
j
R, j = 1, . . . , n, (9.2.1)
dac a si 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 = UU

,
deci
AA

= UU

= U[[
2
U

si A

A = U

UU

= 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
+
j1

k=1
[r
kj
[
2
= (RR

jj
= [
j
[
2
+
n

k=j+1
[r
jk
[
2
,
din care cauz a R trebuie s a e diagonal a.
Pentru matrice reale descompunerea Schur real a este un pic mai complicat a.
Teorema 9.2.10. Pentru orice matrice A R
nn
exist a o matrice ortogonal a U R
nn
astfel nc at
A = U
_

_
R
1
. . .
.
.
.
.
.
.
.
.
.
.
.
.
R
k
_

_
U

, (9.2.3)
n care e R
j
R
11
, e R
j
R
22
, cu dou a valori proprii complexe conjugate, j = 1, k.
332 Valori si vectori proprii
Descompunerea Schur real a transform a Antr-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, e = + i, ,= 0, o valoare proprie complex a a
lui A si 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
n2
= [x y]
_


_
. .
:=R
.
Deoarece R =
2
+
2
> 0, c aci ,= 0, spanx, 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
si rat ion and analog cu cazul complex
obt inem
U
T
AU =
_
R
0 B
_
si induct ia se deruleaz a ca la descompunerea Schur complex a.
9.3. Iteratia vectorial a
Iterat ia vectorial a (numit a si metoda puterii) este cea mai simpl a metod a atunci c and
dorim o valoare proprie si vectorul propriu corespunz ator.
Pornind de la un vector y
(0)
C
n
se construieste sirul y
(k)
, k N prin intermediul
iterat iei
z
(k)
= Ay
(k1)
,
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)
si se arm a c a, n condit ii determinate, acest sir converge c atre vectorul propriu dominant.
Propozitia 9.3.1. Fie A C
nn
o matrice diagonalizabil a ale c arei valori proprii
1
, . . .
n
veric a condit ia
[
1
[ > [
2
[ . . . [
n
[.
Atunci sirul 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,
si arm am c a
A
k
y
(0)
=
n

j=1

j
A
k
x
j
=
n

j=1

k
x
j
=
k
1
n

j=1

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
_

1
_
k
x
k
=
1
x
1
,
precum si
lim
k
[
1
[
k
_
_
_A
k
y
(0)
_
_
_

=
_
_
_
_
_
_
n

j=1

j
_

1
_
k

j
x
j
_
_
_
_
_
_
= [
1
[ |x
1
|

.
Dac a
1
= 0 si deci y
(0)
apart ine hiperplanului
x
+
1
= x C
n
, x

x
1
= 0,
atunci ambele limite sunt nule si nu se poate spune nimic despre convergent a sirului y
k
,
k N; acest hiperplan este o mult ime de m asur a nul a, asa 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 si pe l ang a aceasta |y
k
|

= 1, asadar
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
2i
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): e j indicele minim pentru
care [(x
1
)
j
[ = |x
1
|

|; atunci conform lui (9.3.2) pentru un k sucient de mare de


asemenea n (9.3.1) j

= j. Deci are loc


lim
k
y
(k)
j
= 1 lim
k
e
2i
k
= lim
k
y
(k)
j
(x
1
)
j
=
1
(x
1
)
j
.

Inlocuid aceasta n (9.3.2) obt inem convergent a sirului y


(k)
, k N.
334 Valori si vectori proprii
Se poate aplica de asemenea iterat ia vectorial a pentru a g asi toate valorile proprii si 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 si vectorul propriu
corespunz ator x
1
si se continu a cu
A
(1)
= A
1
x
1
x
T
1
.
Matricea diagonalizabil a A
(1)
are aceeasi vectori proprii ortonormali ca si A, doar c a x
1
este vectorul propriu corespunz ator valorii proprii 0 si nu mai joac a nici un rol n iterat ie,
at at timp c at nu se porneste 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
si vectorul propriu
corespunz ator; iterat ia
A
(j)
= A
(j1)

j
x
j
x
T
j
, j = 1, n, A
(0)
= A
calculeaz a succesiv toate valorile proprii si 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
si convergent a are loc exact atunci
c and iterat ia porneste 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 asa de simplu. Dac a valoarea proprie cea mai mare n modul a unei matrice reale
este complex a, atunci se poate itera la nesf arsit 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 sase ori mai multe).
4. Viteza de convergent a depinde de raportul
[
2
[
[
1
[
< 1,
care poate oric at de aproape de 1. Dac a dominant a vectorului propriu dominant nu
este bine reliefat a, atunci convergent a poate 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] si 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 porneste cu A
(0)
= A si 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 sir 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 si au
aceleasi 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
nm
si 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
k1
. . .R
0
) = A
2
U
k1
(R
k2
. . .R
0
) =. . . = A
k+1
U
0
. (9.4.3)
Dac a denim 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
si 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.
Denit ia 9.4.2. O matrice de faz a C
nn
este o matrice diagonal a de forma
=
_

_
e
i1
.
.
.
e
in
_

_,
j
[0, 2), j = 1, n.
336 Valori si vectori proprii
Propozitia 9.4.3. Presupunem c a matricea A C
nn
are valori proprii distincte n modul,
[
1
[ > [
2
[ > > [
n
[ > 0. Dac a matricea X
1
din forma normal a Jordan A = XX
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 sirul de matrice (
k
U
k
), k N s a
convearg a.
Observat ia 9.4.4 (La propozitia 9.4.3). 1. Convergent a sirului (
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 si 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 si coloanelor si
care are aceleasi valori proprii ca si A, veric a ipoteza propozit iei 9.4.3.
3. Demonstrat ia propozit iei 9.4.3 este o modicare a demonstrat iei din [64, pag. 5456]
pentru convergent a metodei LR, care si 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
si apoi se construieste 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 sirului (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 si 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 si la dezvoltarea de biblioteci
de rutine numerice. Grupul NAG (Numerical Algorithms Group) si-a
nceput activitatea n 1970 si multe dintre rutinele de algebr a liniar a
numeric a s-au datorat lui Wilkinson.
9.4. Metoda QR teoria 337
si cu aceasta
A
(k+1)
= R
k
Q
k
= R
k
(I +F) = R
k
+G, |G|
2
|R
k
|
2
,
deci sirul 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 asa se nt ampl a, c aci
|R
k
|
2
= |Q

k
A
(k)
|
2
= |A
(k)
|
2
= |Q

k1
. . . Q

0
AQ
0
. . . Q
k1
| = |A|
2
.
Mai avem nevoie de un rezultat ajut ator despre ,,unicitatea descompunerii QR.
Lema 9.4.5. Fie U, V C
nn
matrice unitare si e R, S C
nn
matrice triunghiulare
superior inversabile. Atunci are loc UR = V S dac a si numai dac a exist a o matrice de faz a
=
_

_
e
i1
.
.
.
e
in
_

_,
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 e o matrice triunghiular a superior astfel
nc at (V

U)

= U

V = RS
1
. Asadar = V

U este o matrice diagonal a unitar a si are


loc U = V V

U = V .
Demonstrat ia propozit iei 9.4.3. Fie A = XX
1
forma normal a Jordan a lui A, unde =
diag(
1
, . . . ,
n
). Pentru U
0
= I si k N
0
U
k
_
_
0

j=k1
R
j
_
_
=
_
X
1
X
_
k
= X
k
X
1
= X
k
ST = X (
k
S
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
1m<jn
[s
jm
[
__
max
1m<jn

_
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) si 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=k1
R
j
_
_
=

Q
k

R
k

k
T,
338 Valori si vectori proprii
atunci exist a matricele de faz a
k
, astfel nc at
U
k
=

Q
k

k
si
_
_
0

j=k1
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 veric a relat ia
[L
k
[
jm

_
[
j
[
[
m
[
_
[s
jm
[, 1 m < j n.
Asadar 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 sir 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 astepta 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 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 indicat s a privim mai atent matricea 2 2 corespunz atoare.
Denit ia 9.5.3. Dac a A R
nn
are descompunerea QR A = QR, atunci transformarea
RQ a lui A se deneste 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 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
j1,j
, j = 2, n trebuie eliminate,
vom determina unghiurile
2
, . . .
n
, astfel ca
G(n 1, n;
n
) . . . G(1, 2;
2
)H = R
si are loc
H

= RG
T
(1, 2;
2
) . . . G
T
(n 1, n;
n
). (9.5.1)
Aceast a idee este implementat a n sierul HessenRQ.m (vezi funct ia MATLAB 9.1).
Lema 9.5.4. Dac a H R
nn
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 si j + 1 si
creaz a valori diferite de zero doar n prima subdiagonal a R este triunghiular a superior.
340 Valori si 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)
nk1
. . .
_

_
.
Apoi determin am y R
nk1
si R (care rezult a automat), astfel ca
H( y)
_

_
a
(k)
1
.
.
.
.
.
.
a
(k)
nk1
_

_
=
_

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
si 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
sierul hessen h.m (sursa MATLAB 9.2).

In concluzie, metoda noastr a QR va 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 arsit.
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 ecare trei iterat ii se c astig a o
zecimal a la elementele vecine cu diagonala.
342 Valori si 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
si 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 ,,sucient de mic dac a
[h
j+1,j
[ eps ([h
jj
[ +[h
j+1,j+1
[) . (9.5.2)
Aici vom proceda mai simplu si 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
si H
2
si se apeleaz a recursiv pe sine pentru
ecare 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 si distincte
x
1
=
1
2
_
b sgn(b)
_
b
2
4c
_
si x
2
=
c
x
1
,
altfel valorile proprii sunt complexe si anume
1
2
_
b i
_
4c b
2
_
.
Astfel, avem sub control si cazul valorilor proprii complexe. Ideea este implementat a n
sierul QRSplit1a.m, sursa MATLAB 9.4. Iterat iile QR se execut a efectiv n sierul
QRIter.m, iar cazul complex n Eigen2x2.m.
344 Valori si vectori proprii
Sursa MATLAB 9.4 Metoda QR cu partit ionare si 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 ecare pas de
iterat ie ntr-un timp mai scurt. Vom ncerca acum s a micsor am num arul de iterat ii, asadar
s a crestem 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 AI 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=b2/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 si 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 asadar deplasa
spectrul matricei nainte si napoi printr-o transformare de similaritate. Se ordoneaz a valorile
proprii
1
, . . . ,
n
astfel ca
[
1
[ > [
2
[ > > [
n
[,
1
, . . . ,
1
=
1
, . . . ,
n

si dac a este apropiat de


n
, atunci dac a metoda QR ncepe cu H
0
= A I, elementul
subdiagonal h
(n)
n1,n
converge foarte repede c atre zero. Mai bine este dac a deplasarea spectral a
se realizeaz a la ecare 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 sierul QRsplit2.m se d a o implementare care trateaz a si valorile proprii complexe.


Aceast a funct ie apeleaz a QRIter2.
Observat ia 9.5.7. Dac a valoarea de deplasare este sucient 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
si 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 ind pentru
un < 1 doar
O(
2k
) n loc de O(
k
).
Oric at de frumoas a ar aceast a idee, ea funct ioneaz a bine doar pentru valori proprii reale, n
cazul valorilor proprii complexe ind 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 si 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 si vectori proprii
Sursa MATLAB 9.8 Metoda QR cu deplasare spectral a, partit ionare si 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, si anume cu valorile proprii ale lui
B =
_
h
(k)
n1,n1
h
(k)
n1,n
h
(k)
n1,n
h
(k)
n,n
_
.
Exist a dou a posibilit at i: e ambele valori si

ale lui B sunt reale si atunci se procedeaz a


ca mai sus, e sunt complexe conjugate si avem valorile proprii si . Asa cum vom vedea,
al doilea caz se poate de asemenea trata n aritmetica real a. Fie Q
k
, Q

k
C
nn
si R
k
,
R

k
C
nn
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 si 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
)

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
2H
(k)
+
2
I + ( )H
(k)
(
2
)I
= (H
(k)
)
2
( + )H
(k)
+ I =: X
(9.5.3)
Dac a = + i, atunci + = 2 si = [[
2
=
2
+
2
, asadar matricea X din
membrul drept al lui (9.5.3), deci are o descompunere QR X = QR real a si conform lemei
9.4.5 exist a o matrice de faz a C
nn
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)
n1,n1
+h
(k)
n,n
)H
(k)
+
_
(h
(k)
n1,n1
h
(k)
n,n
h
(k)
n1,n
H
(k)
n,n1
_
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 si 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.
272278].
3. Natural, H
(k+1)
poate 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 si tratarea matricelor 22 este dat a n sursa MATLAB
9.10, sierul QRSplit3. Ea apeleaz a QRDouble.
Sursa MATLAB 9.10 Metoda QR cu dublu pas, partit ionare si 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 QRSplit2si QRSplit3 matricelor din exemplele
9.5.1 si 9.5.2. Se obt in rezultatele din tabela 9.5. Buna comportare a metodei pasului dublu
se justic a prin aceea c a obt ine dou a valori proprii dintr-o dat a.
9.6. Valori si 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 si 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 si vectori proprii n MATLAB
MATLAB utilizeaz a rutine LAPACK pentru a calcula valori si 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 si 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 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 si vectori proprii
Vectorii proprii sunt scalat i astfel ca norma lor euclidian a s a e 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 si
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
deneste prin
(A) = infcond(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 aseaz a n prima linie valorile proprii
ale matricei lui Frank de ordinul 6 si n a doua linie numerele lor de condit ionare:
9.6. Valori si 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 si coloanele lui A de norme aproximativ
egale. Motivarea echilibr arii este aceea c a poate conduce la un calcul mai precis al vecto-
rilor si valorilor proprii. Totusi, uneori echilibrarea nu este necesar a si poate 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 si 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 si probleme de valori proprii generalizate, adic a probleme de
forma: ind date dou a matrice p atratice de ordinul n, A si B, s a se g aseasc a scalarii si
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
si 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 nit de valori proprii sau o innitate, sau valori
proprii innit 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 si vectori proprii
Se numeste descompunere cu valori singulare (singular value decomposition SVD)
descompunerea
A = UV

, (9.6.1)
unde este o matrice diagonal a real a, iar U si 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 si care returneaz a matricele U de dimensiune m m, de dimensiune m n si V
de dimensiune n n si una economic a sau redus a n care U are dimensiunea m n, are
dimensiunea n n si 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 si pozitiv denit a
SVD (9.6.1) si 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 si vectori proprii n MATLAB 355
V =
-0.6925 0.7214
-0.7214 -0.6925

In ambele cazuri se poate verica 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 si
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 si 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,.)
Recunoastet i curba rezultat a? At i putea g asi o formul a pentru valorile proprii ale acestei
matrice?
Problema 9.5. Studiat i valorile si vectorii proprii corespunz atori ai matricei la care se ajunge
la problema 4.7. Reprezentat i grac valorile si 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 grac valorile si vectorii proprii ai lui T
21
.
356 Valori si 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 si 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 si 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 si 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. Ecuatii diferentiale
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 si unicitate.
Teorema 10.1.1. Presupunem c a f(x, y) este continu a n prima variabil a pentru x [a, b]
si 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 si 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 si de contribut ii de pionierat n domeniul ecuat iilor
diferent iale si cu derivate part iale, n particular legate de problema
existent ei si unicit at ii. La fel ca n cazul multor mari matematicieni
din secolelele al optsprezecelea si al nou asprezecelea, lucr arile sale
au tratat probleme din geometrie, algebr a, teoria numerelor, mecanic a,
dar si zic 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 si 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
si 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 si 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, e
dup a puterile lui x, e n polinoame Ceb asev, e 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 predeterminate (de exemplu puncte echidistante pe
[a, b]), sau mai convenabil sunt generate dinamic ca parte a procesului de integrare.
Dac a se doreste, se pot obt ine din aceste aproximante discrete u
n
aproximante y
n
(x)
denite pe ntreg intervalul [a, b], e prin interpolare, sau mai natural, printr-un mecanism de
continuare cont inut n metoda de aproximare ns asi. 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
si pasul h
pentru a trece de la x
n
la x
n+1
= x
n
+ h.

Intr-o metod a cu k pasi (k > 1) este necesar a
cunoasterea a k 1 puncte adit ionale (x
nj
, u
nj
), 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 sucient 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 ind 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
N1
< 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 si 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
, denim 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 g andit a ca un increment aproximativ pe unitatea
de pas sau ca o aproximare a diferent ei divizate si ea deneste 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, denit a dup a cum urmeaz a.
Denit ia 10.3.1. Eroarea de trunchiere a metodei n punctul (x, y) este denit 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) si (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 si cel exact pe unitatea de pas.
Denit ia 10.3.2. Metoda se numeste 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) si (10.3.3) avem consistent a dac a si numai dac a
(x, y; 0) = f(x, y), x [a, b], y R
d
. (10.3.6)
O descriere mai n a a preciziei locale este furnizat a de denit ia urm atoare, bazat a pe
conceptul de eroare de trunchiere.
Denit 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 si 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 numeste ordin exact, dac a


(10.3.7) nu are loc pentru nici un p mai mare.
Denit ia 10.3.4. O funct ie : [a, b] R
d
R
d
care satisface (x, y) , 0 si
T(x, y; h) = (x, y)h
p
+O(h
p+1
), h 0 (10.3.9)
se numeste 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 denit 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 denite de membrul drept al ecuat iei diferent iale.

In aceast a categorie intr a
metoda lui Euler si metoda lui Euler modicat a. Alte metode mai precise si mai sosticate 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 si integral.
Ea const a pur si 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 gura 10.1).
Astfel (x, y; h) = f(x, y) nu depinde de h si 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 denit 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) si 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 si f ac and t = , suntem condusi 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 si f
y
este jacobianul lui f n raport cu
variabila y. Dac a n spiritul teoremei 10.1.1, presupunem c a f si 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
si h astfel nc at
|T(x, y; h)| Ch. (10.4.5)
Astfel, metoda lui Euler are ordinul p = 1. Dac a facem aceeasi presupunere si despre
derivatele part iale de ordinul doi ale lui f avem
u

() = u

(x) +O(h)
si 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)
si 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
p1
f
[p1]
(x, y)
_
, (10.4.11)
adic a
(x, y; h) = f
[0]
(x, y) +
1
2
hf
[1]
(x, y) + +
1
p!
h
p1
f
[p1]
(x, y). (10.4.12)
Pentru eroarea de trunchiere, utiliz and (10.4.10) si (10.4.12) si 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)
p1

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),
asa 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) si 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 atite
Exist a prea mult a inert ie n metoda lui Euler: nu ar trebui urmat a aceeasi pant a pe ntreg
intervalul de lungime h, deoarece de-a lungul acestui segment de dreapt a panta denit 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 si
apoi s a urm am panta actualizat a pe ntreg intervalul (vezi gura 10.2). Formula este
f
y
next
x x+h
Figura 10.2: Metoda lui Euler modicat 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
si K
2
, una n punctul init ial si a
doua n apropiere si apoi s-o alegem pe ultima ca pant a nal a. Metoda se numeste metoda lui
Euler modicat 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 astept amprea mult nainte de a reevalua panta, lu am ca pant a nal 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 numeste metoda lui Heun. Efectul ambelor modic ari este cresterea or-
dinului cu 1, asa 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
s1

j=1

sj
K
j
_
_
, s = 2, 3, . . . , r
(10.5.1)
Este natural s a impunem n (10.5.1) condit iile

s
=
s1

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 si contribut ii al aplicarea transform arilor conforme la probleme
de hidro si 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 ecare 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, ecare av and
d necunoscute, componentele lui K
s
. Volumul considerabil de calcule necesar n metodele
implicite si semiimplicite se justic a numai n mprejur ari speciale, de exemplu la rezolvarea
problemelor stiff. Motivul este acela c a metodele implicite pot avea ordin mai mare si pro-
priet at i de stabilitate mai bune.
Parametrii se aleg astfel ca ordinul s a e 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 si h
1
[u(x + h) u(x)] dup a puterile lui h si 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
xy + (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 si 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
si 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) si (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
__

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 coecientul lui h
2
condit ia ca el s a e zero dec at dac a impunem
restrict ii severe asupra lui f. Astfel ordinul maxim este 2 si el se obt ine pentru
_

1
+
2
= 1

2
=
1
2
Solut ia

1
= 1
2
=
1
2
2
depinde de un parametru,
2
,= 0, arbitrar. Pentru
2
= 1 avem metoda lui Euler modicat 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 reusit
doar part ial, formula sa av and r = 4 si 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 scolii matematice de la G otingen si 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 si 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 si 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;
deneste membrul drept.
Se obisnuieste 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 si 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 si 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 si 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 si 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
si
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 cunoaste tabela Butcher. Ultimul parametru al funct iei Runge Kutta este
o procedur a de int ializare a tabelei Butcher care returneaz a elementele , si ale tabelei
si 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 si Runge Kutta funct ioneaz a at at pentru ecuat ii
diferent iale scalare c at si pentru sisteme.
10.6. Descrierea global a a metodelor cu un pas
Descrierea metodelor se face cel mai bine n termeni de grile si 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
N1
< x
N
= b, (10.6.1)
cu lungimile grilei denite 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
0nN1
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
= (ba)/N, grila se numeste 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
, denit a pe grila (10.6.1) se numeste funct ie gril a. Astfel, v
n
este valoarea funct iei v n punctul x
n
al grilei. Orice funct ie v(x) denit 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] si
pentru ecare funct ie gril a v = v
n
denim norma sa prin
|v|

= max
0nN
|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 clarica analogia dintre (10.1.1) si (10.6.5) vom introduce operatorii R si R
h
care act ioneaz a pe C
1
[a, b] si respectiv pe
h
[a, b]. Acestia 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 denit a pentru n = N, dar putem
lua arbitrar (R
h
v)
N
= (R
h
v)
N1
). Atunci problema Cauchy si 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) si
(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) si nu are nimic de-a face
apriori cu puterea de aproximare. Ea caracterizeaz a robustet ea schemei n raport cu perturbat ii
mici. Totusi stabilitatea combinat a cu consistent a conduce la convergent a solut iei numerice
c atre solut ia adev arat a. Denim stabilitatea n termeni de operatori reziduali discret i R
h
n
(10.6.7). Ca de obicei, presupunem c a (x, y; h) este denit 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
Denit ia 10.6.1. Metoda (10.6.5) se numeste 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] si 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[ sucient de mic a.

In (10.6.11) norma este denit 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 si |
0
| este de asemenea mic.
Putem interpreta u
h
[a, b] ca ind rezultatul aplic arii schemei numerice (10.6.5) cu pre-
cizie innit a, n timp ce w
h
[a, b] ar putea solut ia lui (10.6.5) n aritmetica n virgul a
otant a. Atunci, dac a stabilitatea are loc, avem
|u w|

K(|
0
|

+||

), (10.6.14)
adic a, schimbarea local a n u este de acelasi ordin de m arime ca si eroarea rezidual a local a

n
si eroarea init ial a
0
. Trebuie apreciat, totusi, 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 si b
n
R. Atunci
e
n
E
n
, E
n
=
_
n1

k=0
a
k
_
e
0
+
n1

k=0
_
n1

=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 si 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 veric 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, asa c a e
1
E
1
0, c aci a
0
> 0. Prin induct ie, mai general, e
n
E
n
0,
deoarece a
n1
> 0.
Demonstrat ia teoremei 10.6.2. Fie h = h
n
o gril a arbitrar a pe [a, b] si v, w
h
[a, b]
dou a funct ii gril a cu valori vectoriale arbitrare. Din denit 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
si 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)
Denim 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) si 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
n1

=k+1
a


n1

=0
a

=
N1

=0
(1 +h

M)
N1

=0
e
h

M
= e
(h0+h1++hN1)M
= e
(ba)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
(ba)M
e
0
+e
(ba)M
n1

k=0
h
k

e
(ba)M
(e
0
+ (b a)), n = 0, 1, . . . , N 1.
De aceea
|e|

= |v w|

e
(ba)M
(|v
0
w
0
| + (b a)|R
h
v R
h
w|

),
care este (10.6.11) cu K = e
(ba)M
max1, 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 sucient 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 si constanta M pentru poate aproximat a cu ajutorul constantei L
pentru f. Este evident pentru metoda lui Euler si nu este dicil de demonstrat pentru celelalte.
Este util de observat c a nu este nevoie s a e continu a n x; continuitatea pe port iuni ind
sucient 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
dd
, b
n
R
d
, si 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 si 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
(ba)M
[|v
0
| + (b a)]. (10.6.24)

10.6.2. Convergenta
Stabilitatea este un concept puternic. Ea implic a aproape imediat convergent a si este un
instrument de deducere a estim arii erorii globale. Vomncepe prin a deni precis ce nseamn a
convergent a.
Denit 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
1nN
(x
n
x
n1
). Fie u = u
n
o funct ie gril a denit a aplic and metoda (10.6.5) pe
[a, b] si y = y
n
funct ia gril a indus a de solut ia exact a a problemei Cauchy. Metoda (10.6.5)
se numeste 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 si 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 si w =
y din denit ia 10.6.5 avem pentru [h[ sucient 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
) si 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 denit 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) si
(10.6.28), deoarece ordinul p, prin denit 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 identic am termenul dominant n eroarea global a u
n
y(x
n
).
Pentru a simplica lucrurile, vom presupune c a avem o gril a de lungime constant a h, desi nu
este dicil 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 si 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)
deneste 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. Semnicat 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
) si 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 sucient pentru a garanta existent a si
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 e 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 uneste u
n
si 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
si 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 si 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, denim 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) si 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) si denit 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 si 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] si g ind
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),
si conform lui (10.6.38)
|u y h
p
e|

= O(h
p+1
),
asa cum trebuia ar atat.
10.7. Monitorizarea erorilor si 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, asa 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
, ind absorbit de termenul
O(h
p1
)), 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
), si 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
)
si 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 si 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) si (10.7.5) n ecuat ia lui v


n+1
si 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 si 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 ecient 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
h
_
x, y;
1
2
h
_
,
y

h
= y
h/2
+
1
2
h
_
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 pasi consecutivi, ecare de lungime
h/2, pe c at a vreme y
h
este rezultatul aplic arii lui pentru un pas de lungime h.
S a veric 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) si (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
h
_
x +
1
2
h, y
h/2
;
1
2
h
_
= (x, y; h)
1
2

_
x, y;
1
2
h
_

1
2
h
_
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) ec 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)
asa 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)
deneste 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 ecare doi pasi 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)
asa c a expresia din membrul drept este un estimator acceptabil al lui r(x, y; h). Dac a cei doi
pasi 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
si y

2h
trebuie calculat oricum. Vom vedea c a exist a scheme mai e-
ciente.
Metode scufundate (imbricate)
Ideea de baz a a aceste abord ari este urm atoarea: se consider a o metod a de ordinul p si
o metod a

de ordinul p

= p + 1 si se deneste
r(x, y; h) =
1
h
p
[(x, y; h)

(x, y; h)]. (10.7.14)


10.7. Monitorizarea erorilor si controlul pasului 383
Acesta este un estimator acceptabil, asa 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
)
si mp art ind rezultatul cu h
p
.
Cheia problemei este de a face aceast a procedur a ecient 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, e 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
s1

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 identic cu K
1
pentru pasul urm ator.
Perechi de astfel de formule Runge-Kutta imbricate (p, p+1) au fost dezvoltate la sf arsitul
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
coecient ilor tututor derivatelor part iale care intervin n funct ia de eroare principal a (x, y)
a lui . El a reusit 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 (si numai pentru acesta) se pot alege parametrii astfel ca s a
aib a loc si (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 utilizat a pentru a monitoriza eroarea local a de trunchiere
n timpul procesului de integrare. Totusi, 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 cunoastere a relat iei dintre aceste dou a erori reamintim teo-
rema urm atoare, care cuantic 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] si 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] si orice y
c
R
d
. Fie y(x, s) si y(x; s

) solut iile lui


(10.7.17) ce corespund lui y
c
= s si respectiv y
c
= s

. Atunci, pentru orice norm a vectorial a


||,
|y(x; s) y(x; s

)| e
L|xc|
|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 areste o secvent a de ,,piste ale solut iei (expresia este
din [22]) prin care n ecare 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 gura 10.3). Aceasta rezult a din denit ia
erorii de trunchiere, solut ia de referint a ind 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
,
si
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
si 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)) si astfel obt inem
|v
n+1
(x) v
n
(x)| h
n
e
L|xxn|
|T(x
n
, u
n
; h
n
)| , n = 0, N 1. (10.7.21)
10.7. Monitorizarea erorilor si controlul pasului 385
a=x
0
x
1
x
2
x
3
x
N1
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
N1

n=0
[v
n+1
(x) v
n
(x)] = v
N
(x) v
0
(x) = v
N
(x) y(x), (10.7.22)
si deoarece v
N
(x
N
) = u
N
, lu and x = x
N
, obt inem din (10.7.21) si (10.7.22) c a
|u
N
y(x
N
)|
N1

n=0
|v
n+1
(x
N
) v
n
(x
N
)|

N1

n=0
h
n
e
L|xNxn+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
N1

n=0
(x
n+1
x
n
)e
L|xNxn+1|
.
Interpret and suma din dreapta ca o sum a Riemann pentru o integral a denit a, obt inemn nal
aproximarea
|u
N
y(x
N
)|
T
b
_
a
e
L(bx)
dx =

T
L
_
e
L(ba)
1
_
.
386 Rezolvarea numeric a a ecuat iilor diferent iale ordinare
Astfel, cunoasterea unei estim ari pentru L ne va permite s a g asim un
T

T
=
L
e
L(ba)
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)) si 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 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 nal a .
Considerat ii ca acestea motiveaz a urm atorul mecanism de control al pasului: ecare 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
) si 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
, presupunemnt ai c a n 1, astfel ca estimatorul din pasul precedent,
r(x
n1
, u
n1
; h
n1
) (sau cel put in norma sa) s a e disponibil. Atunci, neglij and termenul
O(h),
|(x
n1
, u
n1
| |r(x
n1
, u
n1
; h
n1
)|,
si deoarece (x
n
, u
n
) (x
n1
, u
n1
), n plus.
|(x
n
, u
n
)| |r(x
n1
, u
n1
; h
n1
)|.
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
n1
, u
n1
, h
n1
)|
_
1/p
.
De notat c a din pasul precedent avem
h
p
n1
|r(x
n1
, u
n1
; h
n1
)|
T
,
asa c a
h
n

1/p
h
n1
si tendint a este de crestere a pasului.
10.7. Monitorizarea erorilor si 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
si 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 nal a a lui h
0
si
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 serveste la calculul lui

(si deci a lui r(x, y; h)):

1

11

12
. . .
1r

2

21

22
. . .
2r
.
.
.
.
.
.
.
.
. . . .
.
.
.

r

r1

r2
. . .
rr

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

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 si cu
7 stadii (tabela 10.5). Aceasta este o pereche foarte ecient a, ea st and la baza rezolvitorului
ode45 din MATLAB, dar si 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 si organizarea general a se inspir a
din ode23 si ode45 din MATLAB, dar si din rutina ode23tx din [44].
Primul argument al funct iei oderk specic a funct ia din membrul drept f(t, y). El poate
un handler de funct ie, un sir 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 si 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 lipseste,
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 iesire, implicit odeplot) si Stats (specic a dac a se doresc statistici si 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
si declar a myodeplot ca funct ie
de iesire.
Iesirea lui oderk poate numeric a sau grac a. F ar a nici un argument de iesire
se genereaz a un grac al tuturor componentelor solut iei. Cu dou a argumente de iesire,
instruct iunea
10.7. Monitorizarea erorilor si controlul pasului 389
[tout,yout] = oderk(F,tspan,y0)
genereaz a o tabel a a absciselor si 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 si 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 si 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 cunostint 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
si t se incrementeaz a
p an a c and se atinge t
final
. Este posibil s a se mearg a si 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 si cea relativ a. Utilizarea celui mai mic num ar otant, 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 asat sau ad augat
la vectorul de iesire. Dac a nu si se cer statistici, pasul nereusit 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 si subunitar dac a pasul curent a
esuat. Factorii 0.8 si 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 asare trebuie s a-si 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. Ecuatii diferentiale 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(t)), y(t
0
) = y
0
.
Cel mai simplu mod de a rezolva o astfel de problem a este de a scrie o funct ie care evalueaz a
f si de a apela unul dintre rezolvitorii MATLAB. Informat ia minim a pe care un rezolvitor
trebuie s a o primeasc a este numele funct iei, mult imea valorilor lui t pe care se cere solut ia
si valoarea init ial a y
0
. Rezolvitorii MATLAB accept a argumente de intrare si iesire opt ionale
care permit s a se specice mai mult despre problema matematic a si modul de rezolvare a ei.
Fiecare rezolvitor MATLAB este conceput s a e ecient n anumite situat ii, dar tot i sunt n
esent a interschimbabili. Tot i rezolvitorii au aceeasi sintax a, ceea ce ne permite s a ncerc am
diferite metode numerice atunci c and nu stim care ar cea mai potrivit a. Sintaxa este
[t,y]=rezolvitor(@fun,tspan,y0,optiuni,p1,p2,...)
unde rezolvitor este unul din rezolvitorii dat i n tabela 10.6.
Argumentele de intrare sunt
394 Rezolvarea numeric a a ecuat iilor diferent iale ordinare
Rezolvitor tip problem a Tip algoritm
ode45 Nonstiff Pereche Runge-Kutta explicit a, cu ordinele 4 si 5
ode23 Nonstiff Pereche Runge-Kutta explicit a, cu ordinele 2 si 3
ode113 Nonstiff Metod a cu mai mult i pasi explicit a, cu ordin vari-
abil, ordinele de la 1 la 13
ode15s Stiff Metod a cu mai mult i pasi implicit a, cu ordin vari-
abil, ordinele de la 1 la 15
ode23s Stiff Pereche Rosenbrock modicat a (cu un pas), cu or-
dinele 2 si 3
ode23t Stiff Regula implicit a a trapezului, cu ordinele 2 si 3
ode23tb Stiff Algoritm Runge-Kutta implicit, ordinele 2 si 3
Tabela 10.6: Rezolvitori MATLAB pentru ecuat ii diferent iale ordinare
fun specic a funct ia din membrul drept.

In versiunile 6.x este un handler de funct ie,
iar n versiunile 5.x este un nume de funct ie (n acest caz se scrie fun nu @fun);
tspan vector ce specic a intervalul de integrare. Dac a este un vector cu dou a el-
emente tspan=[t0 tfinal], rezolvitorul integreaz a de la t0 la tfinal. Dac a
tspan are mai mult de dou a elemente rezolvitorul returneaz a solut iile n acele puncte.
Abscisele trebuie ordonate cresc ator sau descresc ator. Rezolvitorul nu si alege pasii
dup a valorile din tspan, ci obt ine valorile n aceste puncte prin prelungiri continue ale
formulelor de baz a care au acelasi ordin de precizie ca si solut iile calculate n puncte.
optiuni opt iunile permit setarea unor parametrii ai rezolvitorului si se creaz a cu
odeset.
Parametrii de iesire sunt:
t vectorul coloan a al absciselor;
y tabloul solut iilor: o linie corespunde unei abscise, iar o coloan a unei componente a
solut iei.
Dup a optiuni pot s a apar a parametrii variabili, p1, p2, ... care sunt transmisi
funct iei fun la ecare apel. De exemplu
[t,y]=rezolvitor(@fun,tspan,y0,optiuni,p1,p2,...)
apeleaz a
fun(T,Y,flag,p1,p2,...).
10.8.2. Exemple non-stiff
S a consider am ecuat ia scalar a
y

(t) = y(t) + 5e
t
cos 5t, y(0) = 0,
pentru t [0, 3]. Membrul drept este cont inut n sierul f1scal.m:
10.8. Ecuat ii diferent iale ordinare n MATLAB 395
function yder=f1scal(t,y)
%F1SCAL Exemplu de EDO scalara
yder = -y+5
*
exp(-t).
*
cos(5
*
t);
Vom folosi rezolvitorul ode45. Secvent a de comenzi MATLAB
>> tspan = [0,3]; yzero=0;
>> [t,y]=ode45(@f1scal,tspan,yzero);
>> plot(t,y,k--
*
)
>> xlabel(t), ylabel(y(t))
produce gracul din gura 10.4. Solut ia exact a este y(t) = e
t
sin5t. Veric am aceasta cal-
0 0.5 1 1.5 2 2.5 3
0.4
0.2
0
0.2
0.4
0.6
0.8
1
t
y
(
t
)
Figura 10.4: Un exemplu de ecuat ie diferent ial a ordinar a scalar a
cul and maximul modulului diferent elor dintre valorile furnizate de ode45 si valorile solut iei
exacte calculate n abscisele furnizate de ode45:
>> norm(y-exp(-t).
*
sin(5
*
t),inf)
ans =
3.8416e-004
S a consider am acum ecuat ia pendulului simplu [16, sect iunea 1.4]:
d
2
dt
2
(t) =
g
L
sin (t),
unde g este accelerat ia gravitat ional a si L este lungimea pendulului. Aceast a ecuat ie de or-
dinul al doilea se poate transforma ntr-un sistem de ecuat ii de ordinul I, introduc and ne-
396 Rezolvarea numeric a a ecuat iilor diferent iale ordinare
cunoscutele y
1
(t) = (t) si y
2
(t) = d(t)/dt:
d
dt
y
1
(t) = y
2
(t),
d
dt
y
2
(t) =
g
L
sin y
1
(t).
Aceste ecuat ii sunt codicate n sierul pend.m, dat n continuare:
function yp=pend(t,y,g,L)
%PEND - pendul simplu
%g - acceleratia gravitationala, L - lungimea
yp=[y(2); -g/L
*
sin(y(1))];
Aici, g si L sunt parametrii suplimentari care vor furnizat i lui pend de c atre rezolvitor.
Vom calcula solut ia pentru t [0, 10] si trei condit ii init iale diferite.
g=10; L=10;
tspan = [0,10];
yazero = [1; 1]; ybzero = [-5; 2];
yczero = [5; -2];
[ta,ya] = ode45(@pend,tspan,yazero,[],g,L);
[tb,yb] = ode45(@pend,tspan,ybzero,[],g,L);
[tc,yc] = ode45(@pend,tspan,yczero,[],g,L);

In apelurile de forma
[ta,ya] = ode45(@pend,tspan,yazero,[],g,L);
[] reprezint a opt iunile, iar urm atorii sunt parametrii suplimentari care vor transmisi mem-
brului drept. Pentru a obt ine grace de faz a vom reprezenta pe y
2
(t) n funct ie de y
1
(t). Este
sugestiv s a reprezent am pe acelasi grac si c ampul de vectori cu quiver. S aget ile generate
de quiver au direct ia gradientului [y
2
, siny
1
] si lungimea proport ional a norma euclidian a
a acestui vector. Imaginea obt inut a apare n gura 10.5.
[y1,y2] = meshgrid(-5:0.5:5,-3:0.5:3);
Dy1Dt = y2; Dy2Dt = -sin(y1);
quiver(y1,y2,Dy1Dt,Dy2Dt)
hold on
plot(ya(:,1),ya(:,2),yb(:,1),yb(:,2),yc(:,1),yc(:,2))
axis equal, axis([-5,5,-3,3])
xlabel y_1(t), ylabel y_2(t), hold off
Orice solut ie a ecuat iei pendulului conserv a energia: cantitatea y
2
(t)
2
cos y
1
(t) este
constant a. Vom verica aceasta prin
>> Ec = 0.5
*
yc(:,2).2-cos(yc(:,1));
>> max(abs(Ec(1)-Ec))
ans =
0.0263
10.8. Ecuat ii diferent iale ordinare n MATLAB 397
5 4 3 2 1 0 1 2 3 4 5
3
2
1
0
1
2
3
y
1
(t)
y
2
(
t
)
Figura 10.5: Grac de faz a pentru ecuat ia pendulului
10.8.3. Optiuni
Funct ia odeset creaz a o structur a de opt iuni care poate transmis a unui rezolvitor.
Argumentele lui odeset sunt perechi nume proprietate/valoare proprietate. Sintaxa este
optiuni=odeset(nume1, valoare1, nume2, valoare2, ...)
Aceasta creaz a o structur a de opt iuni n care propriet at ile cu numele dat primesc o val-
oare specicat a. Propriet at ile nespecicate primesc valori implicite. Pentru toate propriet at ile
este sucient s a d am doar caracterele de la nceput care identic a unic numele propriet at ii.
odeset f ar a argumente aseaz a toate numele de propriet at i si valorile lor posibile; valorile
implicite apar ntre acolade:
>> odeset
AbsTol: [ positive scalar or vector {1e-6} ]
RelTol: [ positive scalar {1e-3} ]
NormControl: [ on | {off} ]
OutputFcn: [ function ]
OutputSel: [ vector of integers ]
Refine: [ positive integer ]
Stats: [ on | {off} ]
InitialStep: [ positive scalar ]
MaxStep: [ positive scalar ]
BDF: [ on | {off} ]
MaxOrder: [ 1 | 2 | 3 | 4 | {5} ]
Jacobian: [ matrix | function ]
JPattern: [ sparse matrix ]
Vectorized: [ on | {off} ]
Mass: [ matrix | function ]
MStateDependence: [ none | weak | strong ]
MvPattern: [ sparse matrix ]
MassSingular: [ yes | no | {maybe} ]
398 Rezolvarea numeric a a ecuat iilor diferent iale ordinare
Categoria Numele propriet at ii
Controlul erorii RelTol, AbsTol, NormControl
Iesire rezolvitor OutputFcn, OutputSel, Refine, Stats
Matrice jacobian a Jacobian, JPattern, Vectorized
Controlul pasului InitialStep, MaxStep
Matrice de mas a Mass, MStateDependence, MvPattern,
si DAE MassSingular, InitialSlope
Evenimente Events
specice ode15s MaxOrder, BDF
Tabela 10.7: Propriet at i ale rezolvitorilor
InitialSlope: [ vector ]
Events: [ function ]
Modicarea unei structuri de opt iuni se poate realiza cu
optiuni=odeset(optiune-veche,nume1, valoare1,...)
care pozit ioneaz a valorile lui opt iuni pe valorile existente in optiune-veche, iar pe cele
precizate de perechile nume/valoare le actualizeaz a sau cu
options=odeset(optiune-veche, optiune-noua)
care combin a structurile optiune-veche si optiune-noua. Valorile din
optiune-noua diferite de [] le nlocuiesc pe cele din optiune-veche. O struc-
tur a de opt iuni poate interogat a cu comanda:
o=odeget(optiuni,name)
Aceasta returneaz a valoarea propriet at ii specicate sau o matrice nul a dac a valoarea pro-
priet at ii nu este specicat a n structura optiuni. Tabela 10.7 d a tipurile de propriet at i si
numele propriet at ilor.
Exemplul urm ator rezolv a sistemul lui R ossler [30, sect iunea 12.2],
d
dt
y
1
(t) = y
2
(t) y
3
(t),
d
dt
y
2
(t) = y
1
(t) +y
2
(t),
d
dt
y
3
(t) = b +y
3
(t)(y
1
(t) c),
unde a, b si c sunt parametrii reali. Funct ia care deneste ecuat ia diferent ial a este:
function yd=Roessler(t,y,a,b,c)
%ROESSLER sistemul Roessler parametrizat
yd = [-y(2)-y(3); y(1)+a
*
y(2); b+y(3)
*
(y(1)-c)];
Vom modica eroarea absolut a si cea relativ a cu
options = odeset(AbsTol,1e-7,RelTol,1e-4);
Script-ul Roessler.m (sursa 10.4) rezolv a sistemul lui R ossler pe intervalul t [0, 100]
cu valoarea init ial a y(0) = [1, 1, 1]
T
si cu seturile de parametrii (a, b, c) = (0.2, 0.2, 2.5) si
10.8. Ecuat ii diferent iale ordinare n MATLAB 399
Sursa MATLAB 10.4 Sistemul lui R ossler
tspan = [0,100]; y0 = [1;1;1];
options = odeset(AbsTol,1e-7,RelTol,1e-4);
a=0.2; b=0.2; c1=2.5; c2=5;
[t,y] = ode45(@Roessler,tspan,y0,options,a,b,c1);
[t2,y2] = ode45(@Roessler,tspan,y0,options,a,b,c2);
subplot(2,2,1), plot3(y(:,1),y(:,2),y(:,3))
title(c=2.5), grid
xlabel(y_1(t)), ylabel(y_2(t)), zlabel(y_3(t));
subplot(2,2,2), plot3(y2(:,1),y2(:,2),y2(:,3))
title(c=5), grid
xlabel(y_1(t)), ylabel(y_2(t)), zlabel(y_3(t));
subplot(2,2,3); plot(y(:,1),y(:,2))
title(c=2.5)
xlabel(y_1(t)), ylabel(y_2(t))
subplot(2,2,4); plot(y2(:,1),y2(:,2))
title(c=5)
xlabel(y_1(t)), ylabel(y_2(t))
(a, b, c) = (0.2, 0.2, 5). Rezultatele apar n gura 10.6. Subplot-ul 221 d a gracul solut iei
n subspat iul tridimensional al fazelor pentru c = 2.5 si subplot-ul 223 d a proiect ia ei pe
planul y
1
y
2
. Subplot-urile 222 si 224 dau gracele corespunz atoare pentru c = 5. Vom mai
discuta si exemplica opt iunile si n subsect iunile urm atoare. Pentru detalii a se vedea help
odest sau doc odeset.
10.8.4. Ecuatii stiff
Stiff (t eap an, rigid, dicil, anevoios) este un concept subtil, dicil si important n
rezolvarea numeric a a ecuat iilor diferent iale ordinare. El depinde de ecuat ia diferent ial a,
de condit iile init iale si de metoda numeric a.

In [44] se d a urm atoarea caracterizare
computat ional a a acestui termen:
,,O problem a este stiff dac a solut ia c autat a variaz a lent, dar exist a solut ii apropi-
ate care variaz a rapid, astfel c a metoda numeric a trebuie s a utilizeze pasi foarte
mici pentru a obt ine rezultate satisf ac atoare.
Conceptul de stiffness este o chestiune de ecient a. Metodele nonstiff pot rezolva prob-
lemele stiff, dar ntr-un timp foarte lung.
Exemplul care urmeaz a provine din [44] si este un model al propag arii unei ac ari. C and
se aprinde un chibrit, mingea (sfera) de foc creste rapid p an a c and atinge dimensiunea critic a.
Apoi r am ane la aceast a dimensiune, deoarece volumul de oxigen consumat de combustie n
interiorul mingii echilibreaz a volumul disponibil la suprafat a. Un model simplu este dat de
problema cu valori init iale:
y

= y
2
y
3
,
y(0) = , 0 t 2/
(10.8.1)
400 Rezolvarea numeric a a ecuat iilor diferent iale ordinare
5
0
5
5
0
5
0
2
4
y
1
(t)
c=2.5
y
2
(t)
y
3
(
t
)
4 2 0 2 4 6
6
4
2
0
2
4
c=2.5
y
1
(t)
y
2
(
t
)
10
0
10
20
10
0
10
0
10
20
y
1
(t)
c=5
y
2
(t)
y
3
(
t
)
10 5 0 5 10 15
10
5
0
5
10
c=5
y
1
(t)
y
2
(
t
)
Figura 10.6: Solut iile sistemului lui R ossler n spat iul fazelor
Funct ia real a y(t) reprezint a raza sferei. Termenii y
2
si y
3
provin din suprafat a si volum.
Solut ia se caut a pe un interval de lungime invers proport ional a cu . Vomncerca s a rezolv am
problema cu ode45. Dac a nu este foarte mic problema nu este foarte stiff. Alegem =
0.01 si eroarea relativ a 10
4
.
delta=0.01;
F = inline(y2-y3,t,y);
opts = odeset(RelTol,1e-4);
ode45(F,[0,2/delta],delta,opts);
Neav and parametrii de iesire, rezolvitorul reprezint a grac solut ia (vezi gura 10.7). Se
observ a c a ea porneste de la 0.1, creste lent p an a c and t se apropie de 1/, adic a 100 si apoi
creste rapid p an a la valoarea 1, ajung andu-se ntr-o stare de echilibru. Se utilizeaz a 185 de
puncte. Dac a lu am mai mic, de exemplu 0.0001, caracterul stiff devine mai pregnat. Se
genereaz a 12161 de puncte. Gracul apare n gura 10.8, n partea de sus.

In partea de jos
este un zoom obt inut n vecin atatea st arii de echilibru. Figura a fost obt inut a cu script-ul
chibrit2.m dat mai jos. Opt iunea Stats setat a pe on permite obt inerea unor statistici
ale rezolvitorului.
delta=1e-4; er=1e-4;
F = inline(y2-y3,t,y);
opts = odeset(RelTol,er,Stats,on);
[t,y]=ode45(F,[0,2/delta],delta,opts);
subplot(2,1,1)
plot(t,y,c-); hold on
h=plot(t,y,bo);
set(h,MarkerFaceColor,b,Markersize,4);
hold off
10.8. Ecuat ii diferent iale ordinare n MATLAB 401
0 20 40 60 80 100 120 140 160 180 200
0
0.2
0.4
0.6
0.8
1
1.2
1.4
Figura 10.7: Propagarea unei ac ari, = 0.1
title ode45
subplot(2,1,2)
plot(t,y,c-); hold on
h=plot(t,y,bo);
set(h,MarkerFaceColor,b,Markersize,4);
axis([0.99e4,1.12e4,0.9999,1.0001])
hold off
De notat c a rezolvitorul ment ine solut ia n limita de eroare cerut a, dar cu pret ul unui
efort foarte mare. Situat ia este si mai dramatic a pentru valori mai mici ale erorii relative,
de exemplu 10
5
sau 10
6
. Init ial problema nu este stiff. Ea devine astfel pe m asur a ce se
apropie de starea de echilibru, adic a de valoare y(t) = 1, unde are loc o crestere rapid a
(comparativ cu scara de timp foarte lung a.
Vom utiliza un rezolvitor pentru probleme de tip stiff. Metodele pe care se bazeaz a ast-
fel de rezolvitori sunt metode implicite. La ecare pas rezolvitorii utilizeaz a operat ii matri-
ciale si rezolv a sisteme de ecuat ii liniare care i ajut a s a prevad a evolut ia solut iei (desigur
c a pentru probleme scalare matricea are dimensiunea 1 pe 1). S a calcul am solut ia folosind
acum rezolvitorul ode23s. Vom modica n script-ul precedent doar numele rezolvitorului:
ode23s n loc de ode45. Gracul obt inut apare n gura 10.9. Efortul depus de rezolvitor
este de aceast a dat a mult mai mic, dup a cum se poate vedea examin and statisticile generate
de rezolvitor. Statistica generat a de ode23s este n acest caz:
99 successful steps
7 failed attempts
412 function evaluations
99 partial derivatives
106 LU decompositions
318 solutions of linear systems
A se compara cu cea generat a de ode45:
3040 successful steps
323 failed attempts
402 Rezolvarea numeric a a ecuat iilor diferent iale ordinare
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
x 10
4
0
0.2
0.4
0.6
0.8
1
1.2
1.4
ode45
1 1.02 1.04 1.06 1.08 1.1 1.12
x 10
4
0.9999
1
1.0001
Figura 10.8: Propagarea unei ac ari, = 0.0001, eroarea relativ a 1e-4 (sus) si un zoom pe
solut ie (jos)
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
x 10
4
0
0.2
0.4
0.6
0.8
1
1.2
1.4
ode23s
1 1.02 1.04 1.06 1.08 1.1 1.12
x 10
4
0.9999
1
1.0001
Figura 10.9: Propagarea unei ac ari, = 0.0001, eroarea relativ a 1e-4 (sus) si un zoom pe
solut ie (jos), obt inute cu ode23s
10.8. Ecuat ii diferent iale ordinare n MATLAB 403
20179 function evaluations
0 partial derivatives
0 LU decompositions
0 solutions of linear systems
Se poate obt ine solut ia exact a a problemei (10.8.1). Ecuat ia este cu variabile separabile.
Integr and se obt ine o ecuat ie implicit a care-l d a pe y:
1
y
+ ln
_
1
y
1
_
=
1

+ ln
_
1

1
_
t.
Expresia solut iei exacte este
y(t) =
1
W(ae
at
) + 1
unde a = 1/ 1, iar W este funct ia lui Lambert. Aceasta din urm a este solut ia ecuat iei
funct ionale
W(z)e
W(z)
= z.
Cleve Moler [44] d a o comparat ie foarte plastic a ntre rezolvitorii explicit i si cei implicit i.
,,Imaginat i-v a c a v a ntoarcet i dintr-o plimbare pe munte. Suntet i ntr-un canion
ngust cu pante abrupte de ambele p art i. Un algoritm explicit va selecta gradien-
tul local pentru a g asi direct ia de cobor are. Dar urmarea gradientului n ambele
p art i ale drumului v a va trimite viguros nainte si napoi prin canion, la fel ca
ode45. Vet i ajunge n nal acas a, dar ntunericul se va l asa cu mult timp nainte
de a ajunge. Un algoritm implicit v a va t ine cu ochii la drum si va anticipa unde
v a va duce ecare pas. Concentrarea suplimentar a merit a.
Vom considera acum un exemplu datorat lui Robertson si tratat am anunt it n [30, 16].
Sistemul lui Robertson
d
dt
y
1
(t) = y
1
(t) +y
2
(t)y
3
(t),
d
dt
y
2
(t) = y
1
(t) y
2
(t)y
3
(t) y
2
2
(t),
d
dt
y
3
(t) = y
2
2
(t)
modeleaz a react ia ntre trei specii chimice. Sistemul este codicat n funct ia chem.m, dat a
mai jos.
function yprime=chem(t,y,alpha,beta,gamma)
%CHEM - modelul lui Robertson pentru reactii chimice
yprime = [-alpha
*
y(1)+beta
*
y(2)
*
y(3);
alpha
*
y(1)-beta
*
y(2)
*
y(3)-gamma
*
y(2)2;
gamma
*
y(2)2];
Script-ul robertson.m rezolv a sistemul lui Robertson pentru = 0.04, = 10
4
, =
3 10
7
, t [0, 3] si condit iile init iale y(0) = [1, 0, 0]
T
. Se utilizeaz a rezolvitorii ode45 si
ode15s, gener andu-se si statistici. Din motive de scar a s-a reprezentat numai y
2
.
404 Rezolvarea numeric a a ecuat iilor diferent iale ordinare
alpha = 0.04; beta = 1e4; gamma = 3e7;
tspan = [0,3]; y0 = [1;0;0];
opts=odeset(Stats,on);
[ta,ya] = ode45(@chem,tspan,y0,opts,alpha,beta,gamma);
subplot(1,2,1), plot(ta,ya(:,2),-
*
)
ax = axis; ax(1) = -0.2; axis(ax);
xlabel(t), ylabel(y_2(t))
title(ode45,FontSize,14)
[tb,yb] = ode15s(@chem,tspan,y0,opts,alpha,beta,gamma);
subplot(1,2,2), plot(tb,yb(:,2),-
*
)
axis(ax)
xlabel(t), ylabel(y_2(t))
title(ode15s,FontSize,14)
Gracele lui y
2
apar n gura 10.10. Figura 10.11 cont ine un zoom pe gracul obt inut cu
ode45. Statisticile generate de rezolvitori sunt
0 1 2 3
0
0.5
1
1.5
2
2.5
3
3.5
4
x 10
5
t
y
2
(
t
)
ode45
0 1 2 3
0
0.5
1
1.5
2
2.5
3
3.5
4
x 10
5
t
y
2
(
t
)
ode15s
Figura 10.10: Solut ia y
2
a sistemului lui Robertson, obt inut a cu ode45 (st anga) si ode15s
2052 successful steps
440 failed attempts
14953 function evaluations
0 partial derivatives
0 LU decompositions
0 solutions of linear systems
pentru ode45 si
33 successful steps
10.8. Ecuat ii diferent iale ordinare n MATLAB 405
2 2.01 2.02 2.03 2.04 2.05 2.06 2.07 2.08 2.09 2.1
2.55
2.6
2.65
2.7
2.75
2.8
x 10
5
Figura 10.11: Zoom pe solut ia y
2
a sistemului lui Robertson, obt inut a cu ode45
5 failed attempts
73 function evaluations
2 partial derivatives
13 LU decompositions
63 solutions of linear systems
pentru ode15s. De notat c a n calculele de mai sus avem
disp([length(ta),length(tb)])
8209 34
ceea ce ne arat a c a ode45 returneaz a cam de 250 de ori mai multe puncte dec at ode15s.
Rezolvitorii stiff utilizeaz a informat ii despre matricea jacobian a, f
i
/y
j
, n diferite
puncte ale solut iei. Implicit, se genereaz a automat aproximat ii ale jacobianului utiliz and
diferent e nite. Totusi, dac a jacobianul se d a expicit, se obt ine o ecient a si o robustet e mai
mare a codului. Sund disponibile opt iuni care permit s a se specice o funct ie care evalueaz a
jacobianul sau o matrice constant a (Jacobian), dac a jacobianul este rar si sablonul de rar-
itate (Jspattern), dac a este scris n form a vectorial a (Vectorized). Pentru a ilustra
modul de codicare a jacobianului, vom considera sistemul
d
dt
y(t) = Ay(t) +y(t). (1 y(t)) +v, (10.8.2)
406 Rezolvarea numeric a a ecuat iilor diferent iale ordinare
unde A este o matrice N N si v este un vector N 1 cu
A = r
1
_

_
0 1
1 0 1
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 1
1 0
_

_
+r
2
_

_
2 1
1 2 1
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 1
1 2
_

_
,
v = [r
1
r2, 0, . . . , 0, r
1
+ r
2
]
T
, r
1
= a/(2x) si r
2
= b/x
2
. Aici a, b si x sunt
parametrii cu valorile a = 1, b = 5 10
2
si x = 1/(N + 1). Acest sistem de ecuat ii
diferent iale ordinare apare la semidiscretizarea prin metoda liniilor a ecuat iei cu derivate
part iale

t
u(x, t) +a

x
u(x, t) = b

2
x
2
u(x, t) +u(x, t)(1 u(x, t)), 0 x 1,
cu condit iile pe frontier a de tip Dirichlet u(0, t) = u(1, t) = 1. Aceast a ecuat ie cu derivate
part iale poate rezolvat a si direct cu pdepe. Componenta y
j
(t) a sistemului de ecuat ii
diferent iale ordinare aproximeaz a u(jx, t). Presupunem c a ecuat ia cu derivate part iale
veric a condit iile u(x, 0) = (1 + cos 2x)/2, pentru care se poate ar ata c a u(x, t) tinde
c atre starea de echilibru u(x, t) 1 c and t . Condit ia init ial a corespunz atoare pen-
tru ecuat ia diferent ial a ordinar a este (y
0
)
j
= (1 + cos(2j/(N + 1)))/2. Jacobianul pentru
ecuat ia diferent ial a ordinar a are forma A + I 2diag(y(t)), unde I este matricea identic a.
Sursa MATLAB 10.5 cont ine o funct ie care implementeaz a si rezolv a sistemul (10.8.2) uti-
liz and ode15s. Utilizarea subfunct iilor si a tipurilor function handle face posibil ca ntreg
codul s a e cont inut ntr-un singur sier, numit rcd.m. S-a luat N = 40 si t [0, 2].
Subfunct ia jacobian evalueaz a jacobianul, jpattern d a sablonul de raritate al jacobian-
ului sub forma unei matrice rare cu elemente 0 si 1 si f codic a membrul drept al ecuat iei
diferent iale. A j-a coloan a a matricei de iesire y cont ine aproximarea lui y
j
(t); matricea U a
fost creat a ad aug and o coloan a de 1 la ecare cap at al lui y, conform condit iilor pe frontier a
pentru ecuat ia cu derivate part iale. Gracul produs de rcd apare n gura 10.12.
10.8.5. Tratarea evenimentelor

In multe situat ii, determinarea ultimei valori t


final
a lui tspan este un aspect important
al problemei. Un exemplu este c aderea unui corp asupra c aruia act ioneaz a fort a gravitat ional a
si rezistent a aerului. C and atinge el p am antul? Un alt exemplu este problema celor dou a
corpuri, adic a determinarea orbitei unui corp supus atract iei gravitat ionale a unui corp mult
mai greu. Care este perioada orbitei? Facilitatea de prelucrare a evenimentelor a rezolvitorilor
din MATLAB furnizeaz a r aspunsuri la astfel de ntreb ari.
Detect ia evenimentelor n MATLAB presupune dou a funct ii f(t, y) si g(t, y) si o condit ie
init ial a (t
0
, y
0
). Problema este de a g asi o funct ie y(t) si o valoare nal a t

astfel nc at
y

= f(t, y)
y(t
0
) = y
0
10.8. Ecuat ii diferent iale ordinare n MATLAB 407
Sursa MATLAB 10.5 Problem a stiff cu informat ii despre jacobian
function rcd
%RCD EDO Stiff pentru problema reactie-convectie-difuzie.
% obtinuta prin semidiscretizare cu metoda liniilor
N = 40; a = 1; b = 5e-2;
tspan = [0;2]; space = [1:N]/(N+1);
y0 = 0.5
*
(1+cos(2
*
pi
*
space));
y0 = y0(:);
options = odeset(Jacobian,@jacobian,Jpattern,...
jpattern(N),RelTol,1e-3,AbsTol,1e-3);
[t,y] = ode15s(@f,tspan,y0,options,N,a,b);
e = ones(size(t)); U = [e y e];
waterfall([0:1/(N+1):1],t,U)
xlabel(spa\c{t}iu,FontSize,16,Interpreter,LaTeX)
ylabel(timp,FontSize,16,Interpreter,LaTeX)
% ---------------------------------------------------------
% Subfunctii.
% ---------------------------------------------------------
function dydt = f(t,y,N,a,b)
%F ecuatia diferentiala.
r1 = -a
*
(N+1)/2; r2 = b
*
(N+1)2;
up = [y(2:N);0]; down = [0;y(1:N-1)];
e1 = [1;zeros(N-1,1)]; eN = [zeros(N-1,1);1];
dydt = r1
*
(up-down) + r2
*
(-2
*
y+up+down) + (r2-r1)
*
e1 +...
(r2+r1)
*
eN + y.
*
(1-y);
% ---------------------------------------------------------
function dfdy = jacobian(t,y,N,a,b)
%JACOBIAN Jacobianul.
r1 = -a
*
(N+1)/2; r2 = b
*
(N+1)2;
u = (r2-r1)
*
ones(N,1);
v = (-2
*
r2+1)
*
ones(N,1) - 2
*
y;
w = (r2+r1)
*
ones(N,1);
dfdy = spdiags([u v w],[-1 0 1],N,N);
% ---------------------------------------------------------
function S = jpattern(N)
%JPATTERN sablonul de raritate al jacobianului.
e = ones(N,1);
S = spdiags([e e e],[-1 0 1],N,N);
408 Rezolvarea numeric a a ecuat iilor diferent iale ordinare
0
0.2
0.4
0.6
0.8
1
0
0.5
1
1.5
2
0
0.2
0.4
0.6
0.8
1
1.2
1.4
s pat iu
timp
Figura 10.12: Exemplu stiff, cu informat ii despre jacobian
si
g(t

, y(t

)) = 0.
Un model simplu al unui corp n c adere este
y

= 1 +y
2
,
cu o condit ie init ial a care d a valori pentru y(0) si y

(0). Problema este pentru ce valori a lui


t avem y(t) = 0? Codul pentru funct ia f(t, y) este
function ydot=f(t,y)
ydot = [y(2); -1+y(2)2];
Ecuat ia a fost scris a ca un sistem de dou a ecuat ii de ordinul I, deci g(t, y) = y
1
. Codul pentru
g(t, y) este
function [gstop,isterminal,direction] = g(t,y)
gstop = y(1);
isterminal = 1;
direction = 0;
Primul argument de iesire, gstop, este valoarea pe care dorim s-o anul am. Dac a al doilea
argument de iesire, isterminal, are valoarea 1, rezolvitorul va termina execut ia dac a
gstop este zero. Dac a isterminal = 0, evenimentul este nregistrat si rezolvarea con-
tinu a. direction poate -1, 1 sau 0, dup a cum zeroul se atinge dac a funct ia este de-
scresc atoare, cresc atoare sau nemonoton a. Calculul si reprezentarea traiectoriei se poate face
cu
10.8. Ecuat ii diferent iale ordinare n MATLAB 409
function falling_body(y0)
opts = odeset(events,@g);
[t,y,tfinal] = ode45(@f,[0,Inf],y0,opts);
tfinal
plot(t,y(:,1),-,[0,tfinal],[1,0],o)
axis([-0.1, tfinal+0.1, -0.1, max(y(:,1)+0.1)]);
xlabel t
ylabel y
title(Corp in cadere)
text(tfinal-0.8, 0, [tfinal = num2str(tfinal)])
Pentru valoarea init ial a y0=[1; 0] se obt ine
>> falling_body([1;0])
tfinal =
1.65745691995813
si gracul din gura 10.13.
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6
0
0.2
0.4
0.6
0.8
1
t
y
Corp in cadere
tfinal = 1.6575
Figura 10.13: Traiectoria unui corp n c adere
Detect ia evenimentelor este util a n probleme ce presupun fenomene periodice. Problema
celor dou a corpuri este un exemplu bun. Ea descrie orbita unui corp asupra c aruia act ioneaz a
fort a gravitat ional a a unui corp mult mai greu. Utiliz and coordonate carteziene, u(t) si v(t)
cu originea n corpul mai greu, ecuat iile sunt:
u

(t) =
u(t)
r(t)
3
v

(t) =
v(t)
r(t)
3
,
410 Rezolvarea numeric a a ecuat iilor diferent iale ordinare
Sursa MATLAB 10.6 Problema celor dou a corpuri
function orbit(reltol)
y0 = [1; 0; 0; 0.3];
opts = odeset(events, @gstop,RelTol,reltol);
[t,y,te,ye] = ode45(@twobody,[0,2
*
pi], y0, opts, y0);
tfinal = te(end)
yfinal = ye(end,1:2)
plot(y(:,1),y(:,2),-,0,0,ro)
axis([-0.1 1.05 -0.35 0.35])
%----------
function ydot = twobody(t,y,y0)
r = sqrt(y(1)2 + y(2)2);
ydot = [y(3); y(4); -y(1)/r3; -y(2)/r3];
%--------
function [val,isterm,dir] = gstop(t,y,y0)
d = y(1:2)-y0(1:2);
v = y(3:4);
val = d
*
v;
isterm = 1;
dir = 1;
unde r(t) =
_
u(t)
2
+v(t)
2
.

Intreaga rezolvare este cont inut a ntr-un singur sier de tip
funct ie, orbit.m (sursa MATLAB 10.6). Parametrul de intrare, reltol, este eroarea (pre-
cizia) relativ a dorit a. Codicarea problemei twobody si funct ia de tratare a evenimentelor
gstop sunt date prin subfunct ii (ele pot p astrate la fel de bine n siere separate). Calculul
orbitei se realizeaz a cu ode45. Argumentul de intrare y0 este un vector cu 4 elemente,
care d a pozit ia init ial a si viteza. Corpul usor porneste din pozit ia (1, 0) si are viteza init ial a
(0, 0.3), care este perpendicular a pe vectorul pozit iei init iale. Argumentul opts este o struc-
tur a creat a cu odeset, care specic a eroarea relativ a (egal a cu reltol) si funct ia de tratare
a evenimentelor gstop. Ultimul argument al lui ode45 este o copie y0, transmis a at at lui
twobody c at si lui gstop. Vectorul bidimensional d din gstop este diferent a dintre pozit ia
curent a si punctul de pornire. Viteza n pozit ia curent a este dat a de vectorul bidimensional v,
iar cantitatea val este produsul scalar al lui d si v. Expresia funct iei de oprire este
g(t, y) = d

(t)
T
d(t),
unde
d = (y
1
(t) y
1
(0), y
2
(t) y
2
(0))
T
.
Punctele n care g(t, y(t)) = 0 sunt extreme locale ale lui d(t). Pun and dir = 1, vom in-
dica c a zerourile lui g(t, y) sunt atinse de sus, ceea ce corespunde minimelor. Set and isterm
= 1, vom indica faptul c a procesul de calcul trebuie oprit la nt alnirea primului minim. Dac a
orbita este periodic a, atunci orice minim al lui d apare c and corpul se ntoarce n punctul
init ial.
10.8. Ecuat ii diferent iale ordinare n MATLAB 411
Apel and orbit cu o precizie mic a
orbit(2e-3)
se obt ine
tfinal =
2.35087197761946
yfinal =
0.98107659901112 -0.00012519138558
si gracul din gura 10.14(a). Se poate observa din valoarea lui yfinal si din grac o
abatere de la periodicitate. Avem nevoie de o precizie mai bun a. Cu comanda
orbit(1e-6)
se obt ine
tfinal =
2.38025846171798
yfinal =
0.99998593905520 0.00000000032239
Valoarea yfinal este acum sucient de apropiat a de y0, iar gracul arat a mult mai bine
(gura 10.14(b)).
0 0.2 0.4 0.6 0.8 1
0.3
0.2
0.1
0
0.1
0.2
0.3
(a) 2e-3
0 0.2 0.4 0.6 0.8 1
0.3
0.2
0.1
0
0.1
0.2
0.3
(b) 1e-6
Figura 10.14: Orbitele pentru pecizia 2e-3 (st anga) si 1e-6
Vom considera acum o problem a de urm arire [30, sect iunea 12.2]. Presupunem c a un
iepure urmeaz a un drum predenit (r
1
(t), r
2
(t)) din plan si c a o vulpe urm areste iepurele
astfel ca (a) n ecare moment tangenta la drumul vulpii indic a ntotdeauna spre iepure si
(b) viteza vulpii este de k ori viteza iepurelui. Atunci drumul (y
1
(t), y
2
(t)) al vulpii este
determinat de sistemul de ecuat ii diferent iale
d
dt
y
1
(t) = s(t)(r
1
(t) y
1
(t)),
d
dt
y
2
(t) = s(t)(r
2
(t) y
2
(t)),
412 Rezolvarea numeric a a ecuat iilor diferent iale ordinare
unde
s(t) =
k
_
_
d
dt
r
1
(t)
_
2
+
_
d
dt
r
2
(t)
_
2
_
(r
1
(t) y
1
(t))
2
+ (r
2
(t) y
2
(t))
2
.
De notat c a acest sistem pune probleme atunci c and vulpea se apropie de iepure. Presupunem
c a iepurele urmeaz a spirala de ecuat ie
_
r
1
(t)
r
2
(t)
_
=

1 +t
_
cos(t)
sin(t)
_
,
si c a vulpea porneste din pozit ia y
1
(0) = 3, y
2
(0) = 0. Membrul drept este implementat prin
funct ia fox1:
function yprime = fox1(t,y,k)
%FOX1 urmarire vulpe-iepure.
% YPRIME = FOX1(T,Y,K).
r = sqrt(1+t)
*
[cos(t); sin(t)];
r_p = (0.5/sqrt(1+t))
*
[cos(t)-2
*
(1+t)
*
sin(t);...
sin(t)+2
*
(1+t)
*
cos(t)];
dist = max(norm(r-y),1e-6);
if dist > 1e-4
factor = k
*
norm(r_p)/dist;
yprime = factor
*
(r-y);
else
error(Model ODE prost definit)
end
Dac a distant a dintre vulpe si iepure devine prea mic a se apeleaz a error. Script-ul de mai
jos apeleaz a fox1 si produce gura 10.15. Pozit iile init iale sunt marcate prin cercuri.
tspan = [0,10]; y0=[3,0]; k=0.75;
[tfox,yfox] = ode45(@fox1,tspan,y0,[],k);
plot(yfox(:,1),yfox(:,2)), hold on
plot(sqrt(1+tfox).
*
cos(tfox),sqrt(1+tfox).
*
...
sin(tfox),--)
plot([3,1],[0,0],o)
axis equal, axis([-3.5,3.5,-2.5,3.1])
legend(Vulpe,Iepure,0), hold off
Implementarea de mai sus este nesatisf ac atoare pentru k > 1, adic a atunci c and vulpea
este mai rapid a dec at iepurele.

In acest caz, dac a iepurele este prins n intervalul de timp
specicat, nici o solut ie nu este asat a. Situat ia se poate evita utiliz and facilitatea de localizare
a evenimentelor, asa cumse poate vedea n script-ul urm ator. Pozit iile init iale, drumurile celor
dou a animale si pozit ia nal a apar n gura 10.16.
tspan = [0,10]; y0=[3,0];
k=1.1;
opt = odeset(RelTol,1e-6,AbsTol,1e-6,Events,@events);
[tfox,yfox,te,ye,ie] = ode45(@fox2,tspan,y0,opt,k);
10.8. Ecuat ii diferent iale ordinare n MATLAB 413
3 2 1 0 1 2 3
2
1
0
1
2
3
Vulpe
Iepure
Figura 10.15: Exemplu de urm arire
plot(yfox(:,1),yfox(:,2)), hold on
plot(sqrt(1+tfox).
*
cos(tfox),sqrt(1+tfox).
*
...
sin(tfox),--)
plot([3,1],[0,0],o)
plot(yfox(end,1),yfox(end,2),
*
)
axis equal, axis([-3.5,3.5,-2.5,3.1])
legend(Vulpe,Iepure,0), hold off
Aici s-a utilizat funct ia odeset pentru a seta erorile si a specica funct ia de localizare a
evenimentelor. Membrul drept si funct ia de localizare a evenimentelor se dau n sursa MAT-
LAB 10.7. Ele sunt memorate n siere distincte.

In funct ia de localizare events se cal-
culeaz a distant a dintre animale minus pragul de eroare 1e-4. S-a ales direction=-1
pentru c a distant a trebuie s a descreasc a. Parametrii de iesire ne spun momentul (te), pozit ia
(ye) si care component a a evenimentului apare (ie). Pentru exemplul nostru se obt ine
>> te,ye,ie
te =
5.0710
ye =
0.8646 -2.3073
ie =
1
ceea ce ne spune c a iepurele a fost capturat la momentul 5.071 n punctul de coordonate
(0.8646, 2.3073).
414 Rezolvarea numeric a a ecuat iilor diferent iale ordinare
Sursa MATLAB 10.7 Funct iile fox2 si events pentru problema de urm arire
function yprime = fox2(t,y,k)
%FOX2 simulare urmarire vulpe iepure
% YPRIME = FOX2(T,Y,K).
r = sqrt(1+t)
*
[cos(t); sin(t)];
r_p = (0.5/sqrt(1+t))
*
[cos(t)-2
*
(1+t)
*
sin(t);...
sin(t)+2
*
(1+t)
*
cos(t)];
dist = max(norm(r-y),1e-6);
factor = k
*
norm(r_p)/dist;
yprime = factor
*
(r-y);
function [value,isterminal,direction] = events(t,y,k)
%EVENTS Functie eveniment pentru FOX2.
% Localizare cand vulpea este aproape de iepure.
r = sqrt(1+t)
*
[cos(t); sin(t)];
value = norm(r-y) - 1e-4; % vulpea aproape de iepure.
isterminal = 1; % oprire integrare.
direction = -1; % valoarea descreste catre 0.
10.8.6. Ecuatii implicite
Rezolvitorul ode15i, introdus ncep and cu versiunea 7, rezolv a ecuat ii implicite de
forma
f(t, y, y

) = 0
utiliz and o metod a BDF de ordin variabil. Sintaxa minimal a este
[T,Y] = ode15i(odefun,tspan,y0,yp0)
dar sintaxa general a suport a toate facilit at ile celorlalt i rezolvitori. Noutatea este aparit ia
parametrului yp0 care este valoarea y

(t
0
). Trebuie ndeplinit a condit ia de consistent a
f(t
0
, y(t
0
), y

(t
0
)) = 0. Se pot obt ine valori consistente cu ajutorul funct iei decic. S a
rezolv am ecuat ia
y
2
+y
2
1 = 0, t [/6, /4],
cu condit ia init ial a y(/6) = 1/2. Solut ia exact a este y(t) = sin(t), iar valoarea de pornire
pentru derivat a y

(/6) =

3/2. Iat a codul pentru rezolvare


tspan = [pi/6,pi/4];
[T,Y] = ode15i(@implic,tspan,1/2,sqrt(3)/2);
si pentru ecuat ia diferent ial a
function z=implic(t,y,yp)
z=yp2+y2-1;
10.8. Ecuat ii diferent iale ordinare n MATLAB 415
3 2 1 0 1 2 3
2
1
0
1
2
3
Vulpe
Iepure
Figura 10.16: Exemplu de urm arire cu capturare
Probleme
Problema 10.1. Rezolvat i problema:
y

= 1 y
2
, y(0) = 0.
folosind diferite metode ale c aror tabele Butcher au fost date n acest capitol, precum si
ode23 si ode45. Calculat i eroarea global a, stiind c a solut ia exact a este
y(x) =
e
2x
1
e
2x
+ 1
si vericat i c a este O(h
p
).
Problema 10.2. Rezolvat i ecuat iile si comparat i cu solut iile exacte:
(a)
y

=
1
4
y(1
1
20
y), x [0, 20], y(0) = 1;
cu solut ia exact a
y(x) =
20
1 + 19e
x/4
;
(b)
y

= 0.032 0.4(y

)
2
, x [0, 20], y(0) = 30, y

(0) = 0;
416 Rezolvarea numeric a a ecuat iilor diferent iale ordinare
cu solut ia exact a
y(x) =
5
2
log
_
cosh
_
2

2x
25
__
+ 30,
y

(x) =

2
5
tanh
_
2

2x
25
_
.
Problema 10.3. Ecuat ia atractorului Lorenz
dx
dt
= ax +ay,
dy
dt
= bx y xz,
dz
dt
= cz +xy
are solut ii haotice care sunt sensibil dependente de condit iile init iale. Rezolvat i numeric pen-
tru a = 5, b = 15, c = 1 cu condit iile init iale
x(0) = 2, y(0) = 6, z(0) = 4, t [0, 20],
cu tolerant a T = 10
4
. Repetat i pentru
(a) T = 10
5
;
(b) x(0) = 2.1.
Comparat i rezultatele cu cele obt inute anterior.

In ecare caz reprezentat i grac.
Problema 10.4. Evolut ia unei epidemii de grip a ntr-o populat ie de N indivizi este modelat a
de sistemul de ecuat ii diferent iale
dx
dt
= xy +,
dy
dt
= xy y
dz
dt
= y ,
unde x este num arul de indivizi susceptibili de a face infect ia, y este num arul de infectat i, iar
z este num arul de imuni, care include si num arul de bolnavi ref acut i dup a boal a, la momentul
t. Parametrii , , sunt ratele de recuperare, transmisie si respectiv recontaminare (replen-
ishment) (pe zi). Se presupune c a populat ia este x a, astfel c a noile nasteri sunt compensate
de mort i.
Utilizat i funct iile oderk si ode45 pentru a rezolva ecuat iile cu condit iile init iale x(0) =
980, y(0) = 20, z(0)=0, d andu-se parametrii = 0.05, = 0.0002, = 0. Simularea se va
termina c and y(t) > 0.9N. Determinat i aproximativ num arul maxim de persoane infectate si
momentul c and apare.
Investigat i efectul (a) variat iei num arului init ial de indivizi infectat i asupra evolut iei epi-
demiei si (b) introducerea unei rate de recontaminare nenule.
10.8. Ecuat ii diferent iale ordinare n MATLAB 417
Problema 10.5. [16] C apitanul Kirk
4
si echipajul s au de pe nava spat ial a Enterprise au esuat
f ar a energie pe orbita din jurul unei planetei de tip P am ant Capella III, la o altitudine de 127
de km. Fr anarea atmosferic a cauzeaz a c aderea orbitei, si dac a nava atinge straturile dense
ale atmosferei, fr anarea excesiv a si nc alzirea datorat a frec arii va cauza daune ireparabile sis-
temului de ment inere a viet ii. Ot erul stiint ic, Mr. Spock, estimeaz a c a reparat iile temporare
la motoarele de impuls vor necesita 29 de minute cu condit ia ca ele s a e terminate nainte
ca fr anarea s a creasc a la 5g (1g = 9.81ms
1
). Deoarece Mr. Spock este un geniu matematic,
el a decis s a simuleze degradarea orbitei prin rezolvarea numeric a a ecuat iilor de miscare cu
perechea de metode incluse DORPRI5. Ecuat iile de miscare ale navei, n condit iile fr an arii
atmosferice, sunt date de
dv
dt
=
GM sin
r
2
cv
2
d
dt
=
_
GM
rv
v
_
cos
r
dz
dt
= v sin
d
dt
=
v cos
r
,
unde
v este viteza tangent ial a (m/s);
este unghiul de reintrare (ntre vitez a si orizontal a);
z este altitudinea (m);
M este masa planetar a (6 10
24
kg);
G este constanta gravitat iei (6, 67 10
11
SI);
c este constanta de fr anare (c = 0.004);
r este distant a p an a la centrul planetei (z + 6.37 10
6
m);
este densitatea atmosferei (1.3 exp(z/7600));
este longitudinea;
t este timpul (s).
La momentul t = 0, valorile init iale sunt = 0, = 0 si v =
_
GM/r. Mr. Spock a rezolvat
ecuat iile numeric pentru a g asi istoricul deceler arii si momentul si locul impactului n care
c aderea orbitei nu mai poate prevenit a. Repetat i simularea utiliz and o metod a Runge-Kutta
cu pas variabil si estimat i decelerarea maxim a ncercat a n timpul cobor arii si n alt imea la
care apare. Va da c apitanul Kirk ordinul de abandonare a navei?
4
Personaje din Star Trek, seria I
418 Rezolvarea numeric a a ecuat iilor diferent iale ordinare
Problema 10.6. Cometa Halley si-a atins ultima dat a periheliul (apropierea maxim a de
soare) la 9 februarie 1986. Pozit ia si componentele vitezei n acel moment erau
(x, y, z) = (0.325514, 0.459460, 0.166229)
_
dx
dt
,
dy
dt
,
dz
dt
_
= (9.096111, 6.916686, 1.305721).
Pozit ia este m asurat a n unit at i astronomice (distant a medie de la p am ant la soare), iar timpul
n ani. Ecuat iile misc arii sunt
d
2
x
dt
2
=
x
r
3
,
d
2
y
dt
2
=
y
r
3
,
d
2
z
dt
2
=
z
r
3
,
unde r =
_
x
2
+y
2
+z
2
, = 4
2
, iar perturbat iile planetare au fost neglijate. Rezolvat i
aceste ecuat ii numeric pentru a determina aproximativ momentul urm atorului periheliu.
Problema 10.7. Consider am din nou problema orbitei (celor dou a corpuri) scris a sub forma
y

1
= y
3
y

2
= y
4
y

3
= y
1
/r
3
y

4
= y
2
/r
3
,
cu condit iile init iale
y(0) =
_
1 e, 0, 0,
_
1 + e
1 e
_
T
,
unde r =
_
y
2
1
+y
2
2
. Solut ia reprezint a miscare pe orbit a eliptic a cu excentricitatea e
(0, 1), cu perioada 2.
(a) Ar atat i c a solut iile pot scrise sub forma
y
1
= cos E e
y
2
=
_
1 e
2
sin E
y
3
= sin E/(e cos E 1)
y
4
=
_
1 e
2
cos E/(1 +e cos E),
unde E este solut ia ecuat iei lui Kepler
E e sin E = x.
10.8. Ecuat ii diferent iale ordinare n MATLAB 419
(b) Rezolvat i problema cu oderk si ode45 si reprezentat i grac solut ia, variat ia lungimii
pasului pentru x [0, 20] si o precizie de 10
5
.
(c) Calculat i erorile globale, num arul de evalu ari de funct ii si num arul de respingeri pe pas
pentru tolerant ele 10
4
, 10
5
, . . . , 10
11
.
Problema 10.8. [44]La jocurile olimpice de la Ciudad de Mexico din 1968 Bob Beamon a
stabilit un record mondial la s aritura n lungime de 8.90 metri. Acest record a dep asit cu 0.80
metri recordul precedent si a rezistat p an a n 1991. Dup a s aritura remarcabil a a lui Beamon,
mult i au sugerat c a rezistent a redus a a aerului la altitudinea de peste 2000 de metri a fost un
factor important.
Consider am un sistem xat de coordonate carteziene, cu axa orizontal a x, axa vertical a y
si originea pe pragul de b ataie. Singurele fort e care act ioneaz a dup a b ataie sunt gravitat ia si
rezistent a aerodinamic a D, care este proport ional a cu p atratul vitezei. Nu avem v ant, viteza
init ial a este v
0
si unghiul cu axa Ox este de
0
radiani. Ecuat iile care descriu miscarea
s aritorului sunt
x

= v cos , y

= v sin ,

=
g
v
cos , v

=
D
m
g sin.
Rezistent a este
D =
cs
2
(x
2
+y
2
).
Constantele pentru aceast a problem a sunt accelerat ia gravitat ional a, g = 9.81 m/s
2
, masa
m = 80 kg, coecientul de fr anare c = 0.72, aria sect iunii s aritorului, s = 0.50 m
2
si
unghiul init ial
0
= 22.5

= /8 radiani. Calculat i pentru patru s arituri, cu diferite valori


ale vitezei init iale v
0
si ale densit at ii aerului, . Lungimea ec arei s arituri este x(t
f
), unde
timpul n aer, t
f
, este determinat de condit ia y(t
f
) = 0.
(a) S aritur a ,,nominal a la altitudine mare, v
0
= 10 m/s si = 0.94 kg/m
3
.
(b) S aritur a ,,nominal a la nivelul m arii, v
0
= 10 m/s si = 1.29 kg/m
3
.
(c) Abordarea sprinterului la altitudine mare, = 0.94 kg/m
3
. Determinat i v
0
astfel ca
lungimea s ariturii s a e egal a cu recordul lui Beamon, 8.90 m.
(d) Abordarea sprinterului la nivelul m arii, = 1.29 kg/m
3
si v
0
valoarea determinat a la
punctul (c).
Prezentat i rezultatele complet and tabela urm atoare:
v
0

0
distant a
10 22.5 0.94 ???
10 22.5 1.29 ???
??? 22.5 0.94 8.90
??? 22.5 1.29 ???
420 Rezolvarea numeric a a ecuat iilor diferent iale ordinare
Care factor este mai important, densitatea aerului sau viteza init ial a a s aritorului?
Problema 10.9. Rezolvat i problema stiff
y

1
=
1
y
1
x
2

2
x
3
,
y

2
=
y
1
y
2
2

1
x

1
2x
3/2
,
x [1, 10], cu condit iile init iale y
1
(1) = 1, y
2
= 1, utiliz and un rezolvitor nonstiff si apoi
unul stiff. Sistemul are solut iile exacte y
1
= 1/x
2
, y
2
= 1/

x.
Problema 10.10. Ecuat ia lui van der Pol are forma
y

1

_
1 y
2
1
_
y

1
+y
1
= 0, (10.8.3)
unde > 0 este un parametru scalar.
1. S a se rezolve ecuat ia n cazul c and = 1 pe intervalul [0,20] si condit iile init iale
y(0) = 2 si y

(0) = 0 (nonstiff). S a se reprezinte grac y si y

.
2. S a se rezolve ecuat ia pentru = 1000 (stiff), intervalul de timp [0,3000] si vectorul
valorilor init iale [2;0]. S a se reprezinte grac y.
Problema 10.11. Un dop de lungime L este pe punctul de a expulzat dintr-o sticl a ce
cont ine un lichid n fermentat ie. Ecuat iile de miscare a dopului sunt
dv
dt
=
_
g(1 +q)
_
_
1 +
x
d
_

+
RT
100
1 +
qx
L(1+q)
_
, x < L;
0, x L
dx
dt
= v,
unde
g accelerat ia gravitat ional a;
q raportul frecare-greutate al dopului;
x deplasarea dopului n g atul sticlei;
t timpul;
d lungimea g atului sticlei
R rata procentual a cu care presiunea creste;
constanta adiabatic a pentru gazul din sticl a ( = 1.4).
10.8. Ecuat ii diferent iale ordinare n MATLAB 421
Condit iile init iale sunt x(0) = x

(0) = 0. At at timp c at x < L dopul este nc a n sticl a, dar


el p ar aseste sticla c and x = L. Integrat i ecuat iile de miscare cu DORPRI5 (tabela 10.5) si
tolerant a 0.000001 pentru a g asi momentul la care dopul este aruncat. Determinat i de aseme-
nea viteza de expulzare c and
q = 20, L = 3.75cm, d = 5cm, R = 4.
Problema 10.12. Un model simplu al b at ailor inimii umane este dat de
x

= (x
3
Ax +c),
c

= x,
unde x este deplasarea de la echilibru a brei musculare, c(t) este concentrat ia unui control
chimic, iar si A sunt constante pozitive. Se asteapt a ca solut iile s a e periodice. Aceasta se
poate vedea reprezent and solut ia n planul fazelor (x pe abscis a, c pe ordonat a), trebuind s a
se obt in a o curb a nchis a. Presupunem c a = 1 si A = 3.
(a) Calculat i x(t) si c(t), pentru 0 t 12 si valorile init iale x(0) = 0.1, c(0) = 0.1.
Reprezentat i iesirea n planul fazelor. Cam c at este perioada?
(b) Repetat i punctul (a) cu x(0) = 0.87, c(0) = 2.1.
Problema 10.13. Concepet i si implementat i o strategie de control al pasului pentru metoda
lui Euler cu un estimator al erorii bazat pe metoda lui Heun. Testat i pe dou a probleme din
acest capitol.
Problema 10.14. [44] Determinat i traiectoria unei ghiulele de tun sferice ntr-un sistem
stat ionar de coordonate carteziene, care are o ax a orizontal a x, o ax a vertical a y si originea n
punctul de lansare. Viteza init ial a a proiectilului n acest sistem de coordonate are m arimea
v
0
si face un unghi de
0
radiani cu axa x. Singurele fort e care act ioneaz a asupra proiectilului
sunt gravitat ia si rezistent a aerodinamic a, D, care depinde de viteza proiectilului relativ a la
orice v ant care ar putea prezent. Ecuat iile care descriu miscarea proiectilului sunt
x

= v cos , y

= v sin ,

=
g
v
cos , v

=
D
m
g sin.
Constantele pentru aceast a problem a sunt: accelerat ia gravitat ional a, g = 9.81m/s
2
, masa
m = 15kg si viteza init ial a v
0
= 50m/s. Se presupune c a v antul este orizontal si viteza
sa este o funct ie dat a de timp, w(t). Rezistent a aerodinamic a este proport ional a cu p atratul
vitezei relative la v ant a proiectilului
D(t) =
cs
2
_
(x

w(t))
2
+y
2
_
,
unde c = 0.2 este coecientul de fr anare, = 1.29kg/m
3
este densitatea aerului, iar s =
0.25m
2
este aria sect iunii transversale a proiectilului.
Consider am patru tipuri de v ant.
422 Rezolvarea numeric a a ecuat iilor diferent iale ordinare
Nici un v ant: w(t) = 0 pentru orice t.
V ant stat ionar din fat a: w(t) = 10m/s, pentru orice t.
V ant intermitent din spate: w(t) = 10m/s, dac a partea ntreag a a lui t este par a si zero
n caz contrar.
Vijelie: w(t) este o variabil a aleatoare normal a cu media zero si abaterea medie
p atratic a 10 m/s.
Partea ntreag a a unui num ar se poate calcula cu funct ia MATLAB floor, iar o variabil a
aleatoare cu media 0 si abaterea medie p atratic a sigma se poate genera cu sigma
*
randn.
Pentru ecare din aceste tipuri de v ant realizat i urm atoarele calcule. G asit i cele 17 traiectorii
ale c aror unghiuri init iale sunt multiplii de 5 grade, adic a
0
= k/36 radiani, k = 1, 17.
Desenat i toate cele 17 traiectorii pe o gur a. Determinat i care dintre aceste traiectorii are
cea mai mare b ataie orizontal a. Pentru acea traiectorie, determinat i unghiul init ial n grade,
timpul de zbor, b ataia orizontal a, viteza la impact si num arul de pasi executat i de rezolvitor.
Care dintre cele patru tipuri de v ant necesit a mai multe calcule. De ce?
Problema 10.15. [16] Un parasutist sare dintr-un avion ce se deplaseaz a cu viteza v m/s la
altitudinea de y m. Dup a o perioad a de c adere liber a, parasuta se deschide la n alt imea y
p
.
Ecuat iile de miscare ale parasutistului sunt
x

= v cos ,
y

= v sin,
v

= D/M g sin, D =
1
2
C
D
Av
2
,

= g cos /v,
unde x este coordonata orizontal a, este unghiul de cobor are, D este rezistent a aerului, iar
A este aria de referint a pentru fort a de tract iune, dat a de
A =
_
, dac a y y
p
;
S, dac a y < y
p
.
Constantele sunt
g = 9.81 m/s, M = 80kg, = 1.2kg/m
3
,
= 0.5m
2
, S = 30m
2
, C
D
= 1.
Utilizat i un rezolvitor adecvat pentru a simula cobor area parasutistului. Folosit i facilit at i
de interpolare pentru a determina n alt imea critic a y
p
. Determinat i momentul impactului si
viteza minim a de cobor are nainte de deschiderea parasutei.
CAPITOLUL 11
Aproxim ari n mai multe variabile
Cuprins
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
Problema aproxim arii funct iilor de mai multe variabile si cea a aproxim arii integralelor
multiple sunt deosebit de importante at at din punct de vedere teoretic c at si practic, ele in-
tervenind at at n probleme matematice abstracte c at si n modele ale diverselor fenomene sau
procese din natur a si societate.
Vom nota cu P
n
m
mult imea polinoamelor n n variabile si de grad global cel mult m. Fie
D R
n
, f : D R. Fie, de asemenea, F
1
f, F
2
f, . . . , F
p
f informat ii despre f (de regul a
valori ale funct iei sau ale unor derivate part iale ale acestora). Se pune problema ca pe baza
informat iilor F
k
, k = 1, p, s a se determine o funct ie F, astfel nc at f F, ntr-un sens
precizat, n domeniul D.
De exemplu, dac a P
i
D, i = 1, s, iar F
i
f = f(P
i
), i = 1, s se ajunge la o problem a de
interpolare polinomial a.
Dac a F
i
f = f(P
i
), i = 1, s, iar f P
n
m
se determin a astfel nc at
s

i=1
[F(p
i
) f(P
i
)]
2
min
423
424 Aproxim ari n mai multe variabile
se obt ine o problem a de aproximare discret a n sensul celor mai mici p atrate.
11.1. Aproximarea functiilor de mai multe variabile pe un
domeniu rectangular
Ne vom ocupa n continuare de aproximarea funct iilor denite pe un domeniu rectangular
si de extinderea unor procedee unidimensionale. Expunerea urmeaz a liniile directoare din
[11].
Fie D =

n
k=1
[a
k
, b
k
] R
n
si T
n
o mult ime de funct ii de n variabile independente
denite pe D. Not am prin P
i
: T
n
(
i
, i = 1, n n proiectori ce act ioneaz a asupra funct iei
f T
n
, ecare n raport cu variabila x
i
, iar prin R
i
= I P
i
, unde I este operatorul identic,
operatorii rest corespunz atori. Operatorul R
i
: T
n
H
i
este de asemenea proiector.
Cu ajutorul operat iei de produs tensorial (compunere) se pot construi operatorii P
i
P
j
,
i, j = 1, n, care, n caz c a oricare doi comut a sunt de asemenea proiectori, deoarece
(P
i
P
j
)
2
= P
i
P
j
. Deoarece suma a doi proiectori P
i
+ P
j
nu este proiector ((P
i
+ P
j
)
2
,=
P
i
+ P
j
)), se lucreaz a cu suma boolean a P
i
P
j
= P
i
+P
j
P
i
P
j
, care este proiector.
Datorit a propriet at ii de asociativitate a produsului si a sumei booleene, aceste operat ii se
pot extinde la trei sau mai mult i operatori. Putem deni proiectorii
P := P
1
P
2
. . . P
n
,
S := P
1
P
2
P
n
=
n

i=1

P
i
,
cu

P
1
= P
1
,

P
i
= P
i

_
i1

k=1

P
k
_
P
i
, i = 2, n,
adic a produsul si suma boolean a a celor n proiectori considerat i. De exemplu, pentru trei
proiectori avem
P
1
P
2
P
3
= P
1
(P
2
P
3
),
P
1
P
2
P
3
= P
1
+P
2
+P
3
P
1
P
2
P
1
P
3
P
2
P
3
+P
1
P
2
P
3
.
Fie T mult imea format a din proiectorii P
1
, . . . , P
n
si tot i proiectorii obt inut i din acestia
cu ajutorul operat iilor de produs si sum a boolean a.
Imaginea Qf a unei funct ii f T
n
prin orice element Q T poate considerat a
o aproximant a a lui f. De exemplu, dac a P
i
este operatorul de interpolare Lagrange L
xi
mi
relativ la nodurile x
i0
, . . . , x
im
i
ce act ioneaz a asupra variabilei x
i
atunci
_
L
xi
mi
f
_
=
mi

k=0

k
(x
i
)f(x
1
, . . . , x
i1
, x
i
k
, x
i+1
, . . . , x
im
i
),
11.1. Aproximarea funct iilor de mai multe variabile pe un domeniu rectangular 425
unde

k
(x
i
) =
(x
i
x
i0
) . . . (x
i
x
i
k1
)(x
i
x
i
k+1
) . . . (x
i
x
im
i
)
(x
i
k
x
i0
) . . . (x
i
k
x
i
k1
)(x
i
k
x
i
k+1
) . . . (x
i
k
x
im
i
)
,
este o aproximant a a funct iei f. Mai mult, putem scrie una din expresiile termenului rest din
aceast a aproximare. Astfel, utiliz and forma cu diferent e divizate pentru rest, avem
_
R
xi
mi
f
_
= u(x
i
)[x
i
, x
i0
, . . . x
im
i
, f(x
1
, . . . , x
i1
, , x
i+1
, . . . , x
im
i
)].
Operatorul de diferent a divizat a act ioneaz a asupra funct iei f n raport cu variabila x
i
, iar
u(x
i
) = (x
i
x
i0
) . . . (x
i
x
im
i
).
Pentru a compara aproximantele generate de elementele lui T se deneste pe T o relat ie
de ordine part ial a.
Denit ia 11.1.1. Pentru X, Y T, X Y XY = X.
Dac a produsul a oricare doi proiectori este comutativ, adic a P
i
P
j
= P
i
P
j
, i ,= j, atunci
(T, ) este o latice distributiv a. Din relat iile
P = P
1
. . . P
n
X, X T
si
Y S = P
1
P
n
, Y T,
rezult a c a P este element minimal, iar S element maximal al laticei (T, ).
Denit ia 11.1.2. Fie f T
n
. Aproximanta Pf a funct iei f se numeste algebric minimal a,
iar aproximanta Sf se numeste algebric maximal a.
Pentru exemplicare, e n = 2 si P
1
= L
x
r
, P
2
= L
y
s
operatorii de interpolare Lagrange
unidimensionali relativ la nodurile x
0
, . . . , x
r
, respectiv y
0
, . . . , y
s
. Dac a f T
2
, atunci
aproximanta algebric minimal a este
(L
x
r
L
y
s
f) (x, y) =
r

i=0
s

j=0

i
(x)

j
(y)f(x
i
, y
j
), (11.1.1)
iar cea algebric maximal a este
(L
x
r
L
y
s
f) (x, y) =
r

i=0

i
(x)f(x
i
, y) +
s

j=0

j
(y)f(x, y
j
)

i=0
s

j=0

i
(x)

j
(y)f(x
i
, y
j
),
(11.1.2)
unde
i
(x) si

j
(y) sunt polinoamele fundamentale Lagrange corespunz atoare.
426 Aproxim ari n mai multe variabile
Prin vericare direct a pentru produs se obt ine
(L
x
r
L
y
s
f) (x
i
, y
j
) = f(x
i
, y
j
), i = 0, r, j = 0, s,
iar pentru suma boolean a
(L
x
r
L
y
s
f) (x
i
, y) = f(x
i
, y), i = 0, r, y [a
2
, b
2
],
(L
x
r
L
y
s
f) (x, y
j
) = f(x, y
j
), j = 0, s, x [a
1
, b
1
].
a
1
a
2
b
1
b
2
.
.
.
.
.
.
.
.
.
.
.
.
. . .
. . .
x
0
x
1
x
2
x
r1
x
r
y
0
y
1
y
s1
y
s
Figura 11.1: Interpretarea geometric a a interpolant ilor produs tensorial si sum a boolean a
S a consider am grila (x
i
, y
j
) : i = 0, r, j = 0, s. Interpolarea algebric minimal a este o
interpolare discret a (punctual a); ea reproduce valorile funct iei numai pe noduri. Interpolarea
algebric maximal a este o interpolare transnit a sau interpolare blending; funct ia interpola-
toare reproduce valorile lui f pe segmentele (x
i
, y) R
2
: a
2
y b
2
, i = 0, r si
(x, y
j
) R
2
: a
1
x b
1
, j = 0, s (gura 11.1).
Revenind la operatorii rest R
i
= I P
i
, i = 1, n se observ a c a mult imea format a din
R
i
si operatorii obt inut i din acestia prin produs tensorial si sum a boolean a, formeaz a si ei
n raport cu relat ia ,, (dat a n denit ia 11.1.1) tot o latice (dac a produsul este comutativ).

In aceast a latice R
1
R
2
. . . R
n
este element minimal, iar R
1
R
2
R
n
este element
maximal. Avem de asemenea urm atoarele descompuneri pentru operatorul identic
I = P
1
. . . P
n
+R
1
R
n
I = P
1
P
n
+R
1
. . . R
n
,
(11.1.3)
numite descompunere minimal a si respectiv maximal a. Dac a f T
n
, pe baza descompuner-
11.1. Aproximarea funct iilor de mai multe variabile pe un domeniu rectangular 427
ilor anterioare avem formulele de aproximare
f = P
1
. . . P
n
f +R
1
R
n
f (11.1.4)
f = P
1
P
n
f +R
1
. . . R
n
f, (11.1.5)
numite formul a de aproximare algebric minimal a si respectiv formul a de aproximare algebric
maximal a.
Pentru exemplicare s a consider am din nou cazul bidimensional si operatorii de interpo-
lare Lagrange L
x
r
si L
y
s
. Operatorii rest corespunz atori vor R
x
r
= I L
x
r
si R
y
s
= I L
y
s
.
Pentru formula algebric minimal a se va obt ine
f = L
x
r
L
y
s
+R
x
r
R
y
s
, (11.1.6)
iar pentru cea algebric maximal a
f = L
x
r
L
y
s
+R
x
r
R
y
s
. (11.1.7)
Cunosc and expresiile termenului rest al formulei de interpolare Lagrange si presupun and c a
exist a toate derivatele part iale ale lui f necesare si c a acestea satisfac condit iile de continuitate
cerute, obt inem
(R
x
r
R
y
s
f) (x, y) =
u
r
(x)
(r + 1)!

r+1
x
r+1
f(
1
, y) +
u
s
(y)
(s + 1)!

s+1
y
s+1
f(x,
1
)

u
r
(x)u
s
(y)
(r + 1)!(s + 1)!

r+s+2
x
r+1
y
s+1
f(
2
,
2
),
cu
1
,
2
[
1
,
2
],
1
,
2
[
1
,
2
],
(R
x
r
R
y
s
f) (x, y) =
u
r
(x)u
s
(y)
(r + 1)!(s + 1)!

r+s+2
x
r+1
y
s+1
f(
3
,
3
),
cu
3
[
1
,
2
],
3
[
1
,
2
],
1
= minx, x
0
, . . . , x
r
,
2
= maxx, x
0
, . . . , x
r
,

1
= miny, y
0
, . . . , y
s
,
2
= maxy, y
0
, . . . , y
s
. De notat c a termenul rest se poate
exprima si sub form a integral a si cu ajutorul diferent elor divizate.
Exemplul 11.1.3. Dac a lu amr = s = 1 si nodurile 0 si 1 dup a ecare coordonat a, operatorii
Lagrange unidimensionali sunt:
L
x
1
(x, y) = (1 x)f(0, y) +xf(1, y)
L
y
1
(x, y) = (1 y)f(x, 0) +yf(x, 1),
iar pentru operatorii produs tensorial si sum a boolean a se obt in expresiile
(L
x
1
L
y
1
) (x, y) = (1 x)(1 y)f(0, 0) + (1 x)yf(0, 1) +x(1 y)f(1, 0) +xyf(1, 1)
si respectiv
(L
x
1
L
y
1
) (x, y) = (1 x)f(0, y) +xf(1, y) + (1 y)f(x, 0) +yf(x, 1)
(1 x)(1 y)f(0, 0) (1 x)yf(0, 1) x(1 y)f(1, 0) +xyf(1, 1).
428 Aproxim ari n mai multe variabile
Prima aproximant a reproduce valorile funct iei doar n v arfurile p atratului [0, 1] [0, 1], pe
c and ce-a de-a doua reproduce valorile funct iei pe frontiera p atratului. Dac a exist a derivatele
part iale p an a la ordinele necesare, expresiile corespunz atoare pentru rest sunt
(R
P
f)(x, y) = (R
x
1
R
y
1
) (x, y) =
x(x 1)
2

2
x
2
f(
1
, y)+
y(y 1)
2

2
y
2
f(x,
1
)
x(x 1)
2
y(y 1)
2

4
x
2
y
2
f(
2
,
2
).
si respectiv
(R
S
f)(x, y) = (R
x
1
R
y
1
) (x, y) =
x(x 1)
2
y(y 1)
2

4
x
2
y
2
f(, ),
unde , ,
1
,
1
,
2
,
2
(0, 1). Dac a f este de clas a C
2,2
, au loc delimit arile
|R
P
f|


1
8
__
_
_
_

2
x
2
f
_
_
_
_

+
_
_
_
_

2
y
2
f
_
_
_
_

+
1
8
_
_
_
_

4
x
2
y
2
f
_
_
_
_

_
,
|R
S
f|


1
64
_
_
_
_

4
x
2
y
2
f
_
_
_
_

.
Implement arile MATLAB pentru interpolant ii Lagrange de tip produs tensorial si sum a
boolean a sunt date n sursele 11.1 si respectiv 11.2.
Sursa MATLAB 11.1 Interpolant bidimensional produs tensorial de tip Lagrange
function Z=prodtens(u,v,x,y,f)
%PRODTENS - interpolant Lagrange produs tensorial
%apel [Z,X,Y]=prodtens(u,v,x,y,f)
%u - abscise pt evaluare
%v - ordonate pt evaluare
%x - abscise noduri
%y - ordonate noduri
%f - functia
[X,Y]=meshgrid(x,y);
F=f(X,Y);;
lu=pfl2b(x,u);
lv=pfl2b(y,v);
Z=lu
*
F
*
lv;
Exemplul 11.1.4. S a consider am funct ia f : [2, 2] [2, 2] R, f(x, y) = xe
x
2
y
2
.
Gracul ei, gracele aproximantelor algebric minimal a, respectiv algebric maximal a de tip
Lagrange si ale resturilor corespunz atoare apar n gura 11.2. S-au considerat cinci noduri
echidistante dup a ecare coordonat a, x
k
, y
k
= 2 +k, k = 0, 4.

In concluzie, formula de aproximare generat a de produsul operatorilor P


1
, . . . , P
n
este
algebric minimal a, iar formula generat a de suma boolean a a acestor operatori este algebric
11.1. Aproximarea funct iilor de mai multe variabile pe un domeniu rectangular 429
2
1
0
1
2
2
1
0
1
2
0.5
0
0.5
(a) funct ia
2
1
0
1
2
2
1
0
1
2
0.4
0.3
0.2
0.1
0
0.1
0.2
0.3
0.4
(b) produs tensorial
2
1
0
1
2
2
1
0
1
2
0.5
0
0.5
(c) sum a boolean a
2
1
0
1
2
2
1
0
1
2
0.2
0.15
0.1
0.05
0
0.05
0.1
0.15
0.2
(d) rest produs tensorial
2
1
0
1
2
2
1
0
1
2
0.04
0.03
0.02
0.01
0
0.01
0.02
0.03
0.04
(e) rest sum a boolean a
Figura 11.2: Gracul funct iei f : [2, 2] [2, 2] R, f(x, y) = xe
x
2
y
2
din exemplul
11.1.4 (gura 11.2(a)), aproximarea algebric minimal a (gura 11.2(b)), cea maximal a (gura
11.2(c)) si resturile corespunz atoare (gura 11.2(d) si respectiv 11.2(e))
430 Aproxim ari n mai multe variabile
Sursa MATLAB 11.2 Interpolant bidimensional sum a boolean a de tip Lagrange
function Z=sumbool(u,v,x,y,f)
%SUMBOOL - interpolant Lagrange suma booleana
%apel [Z,X,Y]=sumbool(u,v,x,y,f)
%u - abscise pt evaluare
%v - ordonate pt evaluare
%x - abscise noduri
%y - ordonate noduri
%f - functia
[X,Y]=meshgrid(x,y);
F=f(X,Y);
[X1,V1]=meshgrid(x,v);
F1=f(X1,V1);
[U2,Y2]=meshgrid(u,y);
F2=f(U2,Y2);
lu=pfl2b(x,u);
lv=pfl2b(y,v);
Z=F1
*
lu+lv
*
F2-lu
*
F
*
lv;
maximal a, propriet at i datorate calit at ii operatorilor produs si sum a boolean a de a element
minimal, respectiv maximal n laticea (T, ).
Se va da n continuare si o alt a interpretare a celor dou a formule de aproximare extremal a,
av and n vedere ordinul de aproximare al operatorilor unidimensionali P
i
, i = 1, n de la
care se porneste. Aceast a interpretare va permite extinderea procedeelor de mai sus si la alt i
operatori care nu sunt proiectori.
Dac a not amprin m
i
ordinul de aproximare al operatorului P
i
, i = 1, n, atunci din (11.1.4)
rezult a c a ordinul de aproximare al operatorului produs tensorial este
ord(P) = minord(P
1
), . . . , ord(m
n
), (11.1.8)
iar din (11.1.5) rezult a c a ordinul de aproximare al operatorului sum a boolean a este
ord(S) = ord(P
1
) + +ord(P
n
). (11.1.9)
Pentru dou a variabile formula de aproximare algebric minimal a (11.1.6) are ordinul de aprox-
imare min(r, s) + 1, n timp ce ordinul formulei de interpolare algebric maximale (11.1.7)
este r +s + 2.
Prin urmare, propriet at ile de extremalitate ale celor doi operatori sunt caracterizate si prin
ordinul de aproximare, operatorul produs av and ordinul de aproximare minim, iar operatorul
sum a boolean a av and ordinul de aproximare maxim n mult imea T a tuturor operatorilor
generat i din P
1
, . . . , P
n
cu ajutorul celor dou a operat ii.
Desi operatorul sum a boolean a are un ordin mare de aproximare, n expresia sa
Sf = (P
1
+ +P
n
P
1
P
2
P
n1
P
n
+ +P
1
P
2
. . . P
n
)f, (11.1.10)
vor interveni termeni care sunt funct ii de n 1, n 2, . . . , 1 variabile. O astfel de formul a
este aplicabil a doar atunci c and se cunosc valorile funct iei f sau ale unor derivate part iale
11.1. Aproximarea funct iilor de mai multe variabile pe un domeniu rectangular 431
ale ei pe hiperfet ele lui D sau pe sect iuni ale domeniului D paralele cu aceste hiperfet e.
Acesta este un dezavantaj major al aproxim arii blending. El poate nl aturat aplic and funct iei
f pe hipersuprafet ele respective ale lui D alt i operatori liniari de aproximare. Continu and
acest prodeu din aproape n aproape se ajunge dup a cel mult n 1 etape la o aproximare
scalar a (numeric a), adic a la o aproximare ce cont ine numai valori ale lui f pe puncte ale
lui D. Evident c a restul unei astfel de formule de aproximare, obt inut a din formula blending
cont ine mai mult i termeni. Pentru ilustrare, s a consider amcazul unei funct ii de dou a variabile,
denit a pe [a
1
, b
1
] [a
2
, b
2
]. Consider and operatorii P
1
1
, P
1
2
, n care indicele superior indic a
num arul nivelului (etapei) de aproximare, obt inem la prima etap a
f = (P
1
1
+P
1
2
P
1
1
P
1
2
)f +R
1
1
R
1
2
f, (11.1.11)
unde P
1
1
f cont ine pe x
2
ca variabil a liber a, iar P
1
2
pe x
1
. Aplic and pe al doilea nivel lui P
1
f
operatorul P
2
2
, iar lui P
1
2
f operatorul P
2
1
, obt inem formula de aproximare scalar a:
f = (P
1
1
P
2
2
+P
2
1
P
1
2
P
1
1
P
1
2
)f + (P
1
2
R
2
1
+P
1
1
R
2
2
+R
1
1
R
1
2
)f. (11.1.12)
Restul acestei formule cont ine trei termeni. Singura proprietate a tuturor operatorilor folosit i
este comutativitatea produsului. Avemmai multe posibilit at i de alegere a operatorilor de pe al
doilea nivel. Ei depind n primul r and de informat iile disponibile asupra lui f. O cale natural a
de alegere este aceea ca ordinul de aproximare al formulei originale (11.1.11) s a e p astrat.
O astfel de formul a de aproximare se va numi formul a consistent a. De exemplu, aleg and n
(11.1.12) pe post de P
1
1
si P
1
2
operatorii de interpolare Lagrange L
x
1
si L
y
2
relativi la nodurile
a
1
, b
1
si a
2
, b
2
, iar n locul lui P
2
1
si P
2
2
operatorii de interpolare Hermite H
x
3
si H
y
4
relativi
la nodurile duble a
1
, b
1
si respectiv a
2
triplu si b
2
dublu se obt ine
f = (L
x
1
H
y
4
+H
x
3
L
y
1
L
x
1
L
y
1
)f + (L
y
1
R
x
3
+L
x
1
R
y
4
+R
x
1
R
y
1
)f. (11.1.13)
Cum ordinele de aproximare ale operatorilor L
1
, H
3
si H
4
sunt 2, 4 si 5, rezult a c a ordinul
formulei de aproximare blending
f = L
x
1
L
y
2
+R
x
1
R
y
2
f (11.1.14)
este 4, iar ordinul de aproximare al lui (11.1.13) este tot 4, c aci
|(L
y
1
R
x
3
+L
x
1
R
y
4
+R
x
1
R
y
1
)f| |R
x
3
f| +|R
y
4
f| +|R
x
1
R
y
2
f[ =
= c
1
(b
1
a
1
)
4
+c
2
(b
2
a
2
)
5
+c
3
(b
1
a
1
)
2
(b
2
a
2
)
2
= (c
1
+c
2
h +c
3
)h
4
, unde h = b
1
a
1
= b
2
a
2
.
Deci (11.1.13) este consistent a.
Deoarece ordinul de aproximare al formulei init iale nu poate m arit, este preferabil ca
operatorii folosit i n urm atoarele nivele de aproximare s a e astfel alesi nc at termenii din
expresia restului formulei nale s a aib a acelasi ordin de m arime. Formula numeric a astfel
obt inut a se va numi omogen a.
Formula (11.1.13) nu este omogen a deoarece |R
x
3
f| = O(h
4
), |R
x
1
R
y
1
| = O(h
4
), dar
|R
y
4
f| = O(h
5
). Pentru a deveni omogen a trebuie ca operatorul H
y
4
folosit pe al doilea
432 Aproxim ari n mai multe variabile
nivel s a e nlocuit printr-un operator cu ordinul de aproximare 4, de exemplu H
y
3
. Astfel,
din formula original a (11.1.14), am dedus urm atoarea formul a numeric a omogen a
f = (L
x
1
H
y
3
+H
x
3
L
y
1
L
x
1
L
y
1
)f + (L
y
1
R
x
3
+L
x
1
R
y
3
+R
x
1
R
y
1
)f.
11.2. Integrarea numeric a a functiilor de mai multe variabile
Fie D R
n
, funct ia f : D R, punctele P
i
D, i = 0, m si w o funct ie pondere
nenegativ a, denit a pe D.
Denit ia 11.2.1. Formula
_

_
D
w(x
1
, . . . , x
n
)f(x
1
, . . . , x
n
) dx
1
. . . dx
n
=
m

i=0
A
i
f(P
i
) +R
m
f (11.2.1)
se numeste formul a de integrare numeric a a funct iei f sau formul a de cubatur a. Parametrii
A
i
se numesc coecient ii formulei, punctele P
i
se numesc nodurile ei, iar R
m
termenul rest.
Problema construirii unei formule de cubatur a const a n determinarea coecient ilor si a
nodurilor ei, folosind condit ii corespunz atoare.

In funct ie de condit iile folosite, formulele de
cubatur a pot clasicate n deterministe si nedeterministe, iar cele deterministe n formule
de tip interpolator, de tip Gauss, optimale, etc.
O metod a ecient a de construire a formulelor de cubatur a n cazul n care D este un
domeniu rectangular, const a n exprimarea parametrilor acesteia cu ajutorul coecient ilor,
respectiv a nodurilor unei formule de cuadratur a unidimensionale. Pentru simplicare ne vom
limita la cazul bidimensional. Fie D = [a, b] [c, d],
x
diviziunea a = x
0
< x
1
< <
x
m
= b,
y
diviziunea c = y
0
< y
1
< < y
n
= d, w(x, y) = 1, (x, y) D.

In acest caz formula (11.2.1) devine


_
b
a
_
d
c
f(x, y) dxdy =
m

i=0
n

j=0
A
ij
f(x
i
, y
j
) +R
m,n
(f). (11.2.2)
Se poate obt ine o astfel de formul a pornind de la formula de interpolare Lagrange (bidimen-
sional a)
f = L
x
m
L
y
n
f +R
x
m
R
y
n
f.
Dac a f C
m+1,n+1
(D), prin integrare termen cu termen se obt ine
_
b
a
_
d
c
f(x, y) dxdy =
m

i=0
n

j=0
A
i
B
j
f(x
i
, y
j
) +R
mn
(f) (11.2.3)
unde
A
i
=
_
b
a

i
(x) dx, B
j
=
_
d
c

j
(y) dy,
11.2. Integrarea numeric a a funct iilor de mai multe variabile 433
iar
R
m,n
(f) =
_
b
a
_
d
c
(R
x
m
R
y
n
)f(x, y) dxdy
=
1
(m+ 1)!
_
b
a
_
d
c
u
m
(x)f
(m+1,0)
(
x
, y) dxdy
+
1
(n + 1)!
_
b
a
_
d
c
u
n
(y)f
(0,n+1)
(x,
y
) dxdy

1
(m+ 1)!
1
(n + 1)!
_
b
a
_
d
c
u
m
(x)u
n
(y)f
(m+1,n+1)
(

x
,
y
) dxdy.
Dac a
x
si
y
sunt diviziuni uniforme ale intervalului [a, b] si respectiv [c, d], atunci
formula de cubatur a (11.2.3) se numeste de tip Newton-Cotes.
Cazuri particulare. Pentru m = n = 1 se obt ine formula de cubatur a a trapezului.
_
b
a
_
d
c
f(x, y) dxdy =
(b a)(d c)
4
[f(a, c) +f(a, d) +f(b, c) +f(b, d)]
+R
11
(f),
unde
R
11
(f) =
(b a)
3
(d c)
12
f
(2,0)
(
1
,
1
)
(b a)(d c)
3
12
f
(0,2)
(
2
,
2
)

(b a)
3
(d c)
3
144
f
(2,2)
(
3
,
3
).
Pentru m = n = 2 se obt ine formula de cubatur a a lui Simpson.
_
b
a
_
d
c
f(x, y) dxdy =
(b a)(d c)
36
_
f(a, c) +f(a, d) +f(b, c) +f(b, d)
+ 4
_
f
_
a +b
2
, c
_
+f
_
a +b
2
, d
_
+f
_
a,
c +d
2
_
+ +f
_
b,
c +d
2
__
+ 16f
_
a +b
2
,
b +c
2
__
+R
22
(f),
unde
R
22
(f) =
(b a)
5
(d c)
2880
f
(4,0)
(
1
,
1
)
(b a)(d c)
5
2880
f
(0,4)
(
2
,
2
)

(b a)
5
(d c)
5
2880
2
f
(4,4)
(
3
,
3
).
Partit ion and intervalele [a, b] si [c, d] se pot obt ine formule de cubatur a repetate. Vom
ilustra pentru formula lui Simpson. S a presupunem c a [a, b] este mp art it n m part i egale,
434 Aproxim ari n mai multe variabile
...
.
.
.
a=x0
c=y0
y1
y2
y2n2
y2n1
y2n=d
x1 x2 x3 x4 x2m2x2m1x2m=b
Figura 11.3: Diviziunea pentru formula repetat a a lui Simpson
iar [c, d] n n p art i egale, obt in andu-se o diviziune cu mn dreptunghiuri. Vom mp art i ecare
dreptunghi n patru p art i egale ca n gura 11.3 (v arfurile dreptunghiului sunt indicate prin
cercuri negre, iar punctele intermediare cu cercuri mai albe).
Fie
h =
b a
2m
, k =
d c
2n
.
Punctele diviziunii vor avea coordonatele
x
i
= x
0
+ih, x
0
= a, i = 0, 2m
y
j
= y
0
+jk, y
0
= b, j = 0, 2n.
Introducem notat ia f(x
i
, y
j
) = f
ij
. Aplic and formula lui Simpson ec arui dreptunghi al
diviziunii avem
_
b
a
_
d
c
f(x, y) dxdy =
hk
9
m

i=0
n

j=0
_
f
2i,2j
+f
2i+2,j
+f
2i+2,2j+2
+f
2i,2j+2
+ 4(f
2i+1,2j
+f
2i+2,2j+1
+f
2i+1,2j+2
+f
2i,2j+1
)
+ 16f
2i+1,2j+1

+R
m,n
(f).
Reduc and termenii asemenea se obt ine
_
b
a
_
d
c
f(x, y) dxdy =
hk
9
m

i=0
n

j=0

ij
f
ij
+R
m,n
(f),
11.2. Integrarea numeric a a funct iilor de mai multe variabile 435
unde
ij
sunt dat i de matricea
=
_

_
1 4 2 4 2 . . . 4 2 4 1
4 16 8 16 8 . . . 16 8 16 4
2 8 4 8 4 . . . 8 4 8 2
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
2 8 4 8 4 . . . 8 4 8 2
4 16 8 16 8 . . . 16 8 16 4
1 4 2 4 2 . . . 4 2 4 1
_

_
.

In [9, 62], pentru f C


4,4
(D) se d a urm atoarea form a a restului
R
mn
(f) =
(b a)(d c)
180
_
h
4
f
(4,0)
(
1
,
1
) +k
4
f
(0,4)
(
2
,
2
)
_
,
cu
1
,
1
,
2
,
2
D.
Se pot da formule de cubatur a de tip Gauss bidimensionale. De exemplu, dac a x
i
,
i = 0, m si y
j
, j = 0, n sunt r ad acinile polinomului Legendre relativ la intervalul [a, b]
si respectiv [c, d], se obt ine formula de cubatur a Gauss-Legendre, n care
A
i
=
[(m + 1)!]
4
(b a)
2m+3
[(2m + 2)!]
2
(x
i
a)(b x
i
)[u

(x
i
)]
2
, i = 0, m
B
j
=
[(n + 1)!]
4
(b a)
2n+3
[(2n + 2)!]
2
(y
j
c)(d y
j
)[u

(y
j
)]
2
, j = 0, n,
iar dac a f C
2m+2,2n+2
(D)
R
mn
(f) = (d c)
m
f
(2m+2,0)
(
1
,
1
) + (b a)
n
f
(0,2n+2)
(
2
,
2
)

n
f
(2m+2,2n+2)
(
3
,
3
),
unde

m
=
[(m+ 1)!]
4
(b a)
2m+3
[(2m+ 2)!]
3
(2m+ 3)
,
n
=
[(n + 1)!]
4
(b a)
2n+3
[(2n + 2)!]
3
(2n + 3)
.
Pentru detalii a se vedea [11].

In cazul m = n = 0 se obt ine o formul a de cubatur a cu un singur nod, analoag a formulei


dreptunghiului
_
b
a
_
d
c
f(x, y) dxdy = (b a)(d c)f
_
a +b
2
,
c +d
2
_
+R
00
(f),
unde
R
00
(f) =
(b a)
3
(d c)
24
f
(2,0)
(
1
,
1
) +
(b a)(d c)
3
24
f
(0,2)
(
2
,
2
)

(b a)
3
(d c)
3
576
f
(2,2)
(
3
,
3
).
436 Aproxim ari n mai multe variabile
Utilizarea metodelor de aproximare de mai sus nu este limitat a la domenii rectangulare.
De exemplu, tehnica de la formula de cubatur a a lui Simpson se poate modica pentru a
aplicabil a la aproximarea unor unor integrale de forma
_
b
a
_
d(x)
c(x)
f(x, y) dxdy
sau
_
d
c
_
b(y)
a(y)
f(x, y) dxdy,
cu condit ia ca domeniul de integrare s a e simplu n raport cu x, respectiv y.
Pentru o integral a de primul tip pasul dup a x va h =
ba
2
, dar cel dup a y va varia odat a
cu x (vezi gura 11.4):
a a +h b
c(a)
d(a)
c(b)
d(b)
c(b)+d(b)
2
k(a)
k(b)
k(a+h)
Figura 11.4: Formula lui Simpson pentru un domeniu simplu n raport cu x
k(x) =
d(x) +c(x)
2
.
11.2. Integrarea numeric a a funct iilor de mai multe variabile 437
Se obt ine
_
b
a
_
d(x)
c(x)
f(x, y) dxdy
_
b
a
k(x)
3
[f(x, c(x))+ 4f(x, c(x)+k(x))+ f(x, d(x))] dx

h
3
_
k(a)
3
_
f(a, c(a)) + 4f(a, c(a) +k(a)) +f(a, d(a))

+ 4
k(a +h)
3
_
f(a +h, c(a +h)) + 4f(a +h, c(a +h) +k(a +h))
+f(a +h, d(a +h))

+
k(b)
3
[f(b, c(b)) + 4f(b, c(b) +k(b)) +f(b, d(b))]
_
.
Dac a domeniul de integrare D este curbiliniu, construim un dreptunghi R D, ale c arui
laturi s a e paralele cu axele de coordonate (gura 11.5). Se consider a funct ia auxiliar a
D
R
Figura 11.5:

Incadrarea unui domeniu curbiliniu ntr-un dreptunghi
f

(x, y) =
_
f(x, y), dac a (x, y) D,
0, dac a (x, y) RD.
Evident
__
D
f(x, y) dxdy =
__
R
f

(x, y) dxdy
Ultima integral a se poate aproxima printr-o tehnic a cunoscut a.
11.2.1. Considerat ii de implementare
Fie domeniul de integrare
D = [a, b] [c, d].
438 Aproxim ari n mai multe variabile
Integrala de aproximat se poate scrie sub forma
_
b
a
_
d
c
f(x, y) dxdy =
_
b
a
_
_
d
c
f(x, y) dy
_
dx =
_
b
a
F(x) dx,
unde
F(x) =
_
d
c
f(x, y) dy.
S a presupunemc a adquad este o o rutin a de cuadratur a unidimensional a adaptiv a. Ideea
este de a folosi aceast a aceast a rutin a pentru a calcula valorile lui F denite mai sus si de
a folosi din nou rutina pentru a integra F. Un exemplu de implementare este dat n sursa
MATLAB 11.3.
Sursa MATLAB 11.3 Aproximarea unei integrale duble pe dreptunghi
function Q = quaddbl(F,xmin,xmax,ymin,ymax,tol,...
quadm,varargin)
%QUADDBL - aproximeaza o integrala dubla
%Parametrii
%F - functia de integrat
%xmin,xmax,ymin,ymax - limitele de integrare
%tol -precizia, implicit 1e-6
%iintm - metoda de integrare interioara
%quadm - metoda de integrare, implicit adquad
if nargin < 5, error(Necesita minim 5 argumente); end
if nargin < 6 | isempty(tol), tol = 1.e-6; end
if nargin < 7 | isempty(quadm), quadm = @adquad; end
F = fcnchk(F);
Q = quadm(@innerint, ymin, ymax, tol, F, ...
xmin, xmax, tol, quadm, varargin{:});
%---------
function Q = innerint(y, F, xmin, xmax, tol, quadm, varargin)
%INNERINT - utilizata de QUADDBL pentru integrala interioara.
%
% quadm determina formula de cuadratura ce va fi utilizata
% Evalueaza integrala interioara pentru fiecare valoare
% a variabilei exterioare
Q = zeros(size(y));
for i = 1:length(y)
Q(i) = quadm(F, xmin, xmax, tol, y(i), varargin{:});
end
11.3. Aproxim ari n mai multe variabile n MATLAB 439
11.3. Aproxim ari n mai multe variabile n MATLAB
11.3.1. Interpolarea funct iilor de mai multe variabile n MATLAB
Exist a dou a funct ii pentru interpolarea bidimensional a n MATLAB: interp2 si
griddata. Sintaxa cea mai general a a lui interp2 este
ZI = interp2(x,y,z,XI,YI,metoda)
Aici vectorii x si y cont in coordonatele nodurilor de interpolare, z cont ine valorile funct iei
n noduri, iar XI si YI sunt matrice ce cont in coordonatele punctelor n care dorim s a facem
evaluarea. ZI cont ine valorile interpolantului n punctele XI, YI. Parametrul metoda poate
avea valoarea:
linear interpolare bilinear a (implicit a);
cubic interpolare bicubic a;
nearest interpolare bazat a pe vecinul cel mai apropiat;
spline interpolare spline.
Toate metodele de interpolare cer ca x si y s a e monotone, si s a aib a formatul ca si cum ar
produse de meshgrid. Dac a valorile date n x, y, XI si YI nu sunt echidistante, ele sunt
transformate ntr-un domeniu echidistant nainte de interpolare. Pentru ecient a, dac a x si y
sunt deja echidistante si monotone, metoda se poate da ntr-una din formele
*
linear,

*
cubic,
*
spline, sau
*
nearest.
3
2
1
0
1
2
3
3
2
1
0
1
2
3
6
4
2
0
2
4
6
Figura 11.6: Gracul lui peaks pe o gril a grosier a
D am un exemplu care ncearc a s a interpoleze funct ia peaks pe o gril a de 77. Gener am
grila, calcul am valorile funct iei si o reprezent am grac cu
[X,Y]=meshgrid(-3:1:3);
Z=peaks(X,Y);
surf(X,Y,Z)
Gracul apare n gura 11.6. Calcul am apoi interpolant ii pe o gril a mai n a si i reprezent am:
440 Aproxim ari n mai multe variabile
[XI,YI]=meshgrid(-3:0.25:3);
ZI1=interp2(X,Y,Z,XI,YI,nearest);
ZI2=interp2(X,Y,Z,XI,YI,linear);
ZI3=interp2(X,Y,Z,XI,YI,cubic);
ZI4=interp2(X,Y,Z,XI,YI,spline);
subplot(2,2,1), surf(XI,YI,ZI1)
title(nearest)
subplot(2,2,2), surf(XI,YI,ZI2)
title(linear)
subplot(2,2,3), surf(XI,YI,ZI3)
title(cubic)
subplot(2,2,4), surf(XI,YI,ZI4)
title(spline)
Gracele lor apar n gura 11.7. Dac a nlocuim peste tot surf cu contour obt inem
5
0
5
5
0
5
5
0
5
10
nearest
5
0
5
5
0
5
5
0
5
10
linear
5
0
5
5
0
5
5
0
5
10
cubic
5
0
5
5
0
5
10
0
10
spline
Figura 11.7: Interpolant i construit i cu interp2
gracele din gura 11.8.
Funct ia griddata are aceeasi sintax a ca si interp2. Datele de intrare sunt nodurile x
si y, care nu mai trebuie s a e monotone si valorile z n noduri. Prin interpolare se calculeaz a
valorile ZI corespunz atoare nodurilor XI si YI, care de obicei sunt obt inute cu meshgrid.
11.3. Aproxim ari n mai multe variabile n MATLAB 441
Argumentul metoda poate avea valorile linear, cubic, nearest si v4, ultima
semnic and o metod a de interpolare specic a MATLAB 4. Toate metodele except and v4 se
3 2 1 0 1 2 3
3
2
1
0
1
2
3
nearest
3 2 1 0 1 2 3
3
2
1
0
1
2
3
linear
3 2 1 0 1 2 3
3
2
1
0
1
2
3
cubic
3 2 1 0 1 2 3
3
2
1
0
1
2
3
spline
Figura 11.8: Interpolant i construit i cu interp2
bazeaz a pe triangulat ie Delaunay (o triangulat ie a unei mult imi de puncte care maximizeaz a
unghiul minim). Metoda este util a pentru a interpola valori pe o suprafat a. Exemplul urm ator
interpoleaz a puncte generate aleator, situate pe suprafat a z =
sin(x
2
+y
2
)
x
2
+y
2
. Pentru a nu avea
probleme n origine s-a ad augat un eps la numitor.
x=rand(100,1)
*
16-8; y=rand(100,1)
*
16-8;
R=sqrt(x.2+y.2)+eps;
z=sin(R)./R;
xp=-8:0.5:8;
[XI,YI]=meshgrid(xp,xp);
ZI=griddata(x,y,z,XI,YI);
mesh(XI,YI,ZI); hold on
plot3(x,y,z,ko); hold off
Rezultatul apare n gura 11.9, n care punctele generate aleator sunt marcate prin cercuri,
iar interpolantul a fost reprezentat cu mesh.
442 Aproxim ari n mai multe variabile
10
5
0
5
10
10
5
0
5
10
0.4
0.2
0
0.2
0.4
0.6
0.8
1
Figura 11.9: Interpolare cu griddata
11.3.2. Calculul integralelor duble n MATLAB
Integralele duble pe un dreptunghi pot evaluate cu dblquad. Pentru ilustrare, s a pre-
supunem c a dorim s a aproxim am integrala
_

0
_
2

(y sin x +xcos y) dxdy


Valoarea exact a a integralei este
2
, dup a cum se poate verica cu toolbox-ul Symbolic:
>> syms x y
>> z=y
*
sin(x)+x
*
cos(y);
>> int(int(z,x,pi,2
*
pi),y,0,pi)
ans =
-pi2
Integrandul se poate da ca obiect inline, expresie sir de caractere, sau function handle. S a
presupunem c a integrandul este dat n sierul integrand.m:
function z = integrand(x, y)
z = y
*
sin(x)+x
*
cos(y);
Vom utiliza dblquad si vom face si vericarea:
>> Q = dblquad(@integrand, pi, 2
*
pi, 0, pi)
Q =
-9.8696
>> -pi2
ans =
-9.8696
Calcul am integrala si cu quaddbl (sursa MATLAB 11.3):
11.3. Aproxim ari n mai multe variabile n MATLAB 443
>> Q2=quaddbl(@integrand,pi,2
*
pi,0,pi)
Q2 =
-9.8696
Integrandul transmis lui dblquad trebuie s a accepte un vector x si un scalar y si s a returneze
un vector. Se pot transmite argumente suplimentare lui dblquad pentru a specica precizia
si metoda de integrare unidimensional a (implicit quad). S a presupunemc a vrem s a calcul am
_
6
4
_
1
0
(y
2
e
x
+xcos y) dxdy
cu precizia 1e-8 si s a folosim quadl n loc de quad:
>> fi=inline(y.2.
*
exp(x)+x.
*
cos(y));
>> dblquad(fi,0,1,4,6,1e-8,@quadl)
ans =
87.2983
Valoarea exact a a integralei calculat a cu Maple sau cu toolbox-ul Symbolic este
152
3
(e 1) +
1
2
(sin 6 sin 4).
Vericare:
>> 152/3
*
(exp(1)-1)+1/2
*
(sin(6)-sin(4))
ans =
87.2983
Probleme
Problema 11.1. Scriet i o funct ie MATLAB care s a reprezinte grac o suprafat a f(x, y),
f : [0, 1] [0, 1] R ce veric a condit iile
f(0, y) = g
1
(y) f(1, y) = g
2
(y)
f(x, 0) = g
3
(x) f(x, 1) = g
4
(y),
unde g
i
, i = 1, 4 sunt funct ii date denite pe [0, 1].
Problema 11.2. Determinat i interpolant ii bidimensionali produs tensorial si sum a boolean a
corespunz atori unui interpolant Hermite unidimensional cu nodurile duble 0 si 1.
Reprezentat i grac acest interpolant, dac a se alege f(x, y) = xexp(x
2
+ y
2
).
Problema 11.3. Extindet i algoritmul de Casteljau la cazul bidimensional. Dat i o imple-
mentare MATLAB.
Problema 11.4. Extindet i algoritmul Cox - de Boor la cazul bidimensional. Dat i o imple-
mentare MATLAB.
444 Aproxim ari n mai multe variabile
Problema 11.5. Adaptat i rutina quaddbl pentru a aproxima integrale duble de forma
_
b
a
_
d(x)
c(x)
f(x, y) dy dx
sau
_
d
c
_
b(y)
a(y)
f(x, y) dxdy,
c and domeniul de integrare este simplu n raport cu x sau y.
Problema 11.6. Se consider a integrala dubl a a funct iei f(x, y) = x
2
+y
2
pe domeniul eliptic
R dat de 5 < x < 5, y
2
<
3
5
(25 x
2
).
(a) S a se reprezinte grac funct ia pe domeniul R.
(b) S a se determine valoarea exact a a integralei utiliz and Maple sau toolbox-ul Symbolic.
(c) S a se aproximeze valoarea integralei transform and domeniul intr-unul rectangular.
(d) S a se aproximeze valoarea integralei folosind funct iile din problema 11.5.
Problema 11.7. Se consider a funct ia f(x, y) = y cos x
2
si domeniul triunghiular denit de
T = x 0, y 0, x +y <= 1 si
_ _
T
f(x, y) dxdy.
(a) S a se reprezinte grac funct ia pe T folosind trimesh sau trisurf.
(b) S a se aproximeze valoarea lui I transform and integrala ntr-o integral a pe p atratul uni-
tate a unei funct ii care este nul a nafara lui T.
(c) S a se aproximeze integrala folosind funct iile din problema 11.5.
Bibliograe
[1] O. Agratini, Aproximare prin operatori liniari, Presa Universitar a Clujean a, Cluj-
Napoca, 2000.
[2] O. Agratini, Positive Approximation Processes, Hiperboreea Press, Turda, 2001.
[3] Octavian Agratini, Ioana Chiorean, Gheorghe Coman, Radu Trmbit as, Analiz a nu-
meric a si teoria aproxim arii, vol. III, Presa Universitar a Clujean a, 2002, D. D. Stancu,
Gh. Coman, (coord.).
[4] R. Barrett, M. Berry, T. F. Chan, J. Demmel, J. Donato, J. Dongarra, V. Eijkhout,
R. Pozo, C. Romine, H. van der Vorst, Templates for the Solution of Linear Systems:
Building Blocks for Iterative Methods, 2nd ed., SIAM, Philadelphia, PA, 1994, disponi-
bila prin www, http://www.netlib.org/templates.
[5]

A. Bj ork, Numerical Methods for Least Squares Problem, SIAM, Philadelphia, 1996.
[6] E. Blum, Numerical Computing: Theory and Practice, Addison-Wesley, 1972.
[7] P. Bogacki, L. F. Shampine, A 3(2) pair of Runge-Kutta formulas, Appl. Math. Lett. 2
(1989), no. 4, 321325.
[8] C. G. Broyden, A Class of Methods for Solving Nonlinear Simultaneous Equations,
Math. Comp. 19 (1965), 577593.
[9] L. Burden, J. D. Faires, Numerical Analysis, PWS Kent, Boston, 1986.
[10] P. G. Ciarlet, Introduction ` a lanalyse num erique matricielle et ` a loptimisation, Mas-
son, Paris, Milan, Barcelone, Mexico, 1990.
[11] Gheorghe Coman, Analiz a numeric a, Editura Libris, Cluj-Napoca, 1995.
[12] I. Cuculescu, Analiz a numeric a, Editura Tehnic a, Bucuresti, 1967.
445
446 Bibliograe
[13] P. J. Davis, P. Rabinowitz, Numerical Integration, Blaisdell, Waltham, Massachusetts,
1967.
[14] James Demmel, Applied Numerical Linear Algebra, SIAM, Philadelphia, 1997.
[15] J. E. Dennis, J. J. Mor e, Quasi-Newton Metods, Motivation and Theory, SIAM Review
19 (1977), 4689.
[16] J. Dormand, Numerical Methods for Differential Equations. A Computational Ap-
proach, CRC Press, Boca Raton New York, 1996.
[17] Gerald Farin, Curves and Surfaces for Computer-Aided Geometric Design: a Practical
Guide, fourth ed., Academic Press, 1996.
[18] E. Fehlberg, Klassische Runge-Kutta-Formeln f unfter und siebenter Ordnung mit
Schrittweiten-Kontrolle, Computing 4 (1969), 93106, Corrigendum: ibid. 5, 184.
[19] E. Fehlberg, Klassische Runge-Kutta-Formeln vierter und niedriger Ordnung mit
Schrittweiten-Kontrolle und ihre Anwendung auf W armeleitungsprobleme, Computing
6 (1970), 6171, Corrigendum: ibid. 5, 184.
[20] J. G. F. Francis, The QR transformation: A unitary analogue to the LR transformation,
Computer J. 4 (1961), 256272, 332345, parts I and II.
[21] W. Gander, W. Gautschi, Adaptive quadrature - revisited, BIT 40 (2000), 84101.
[22] W. Gautschi, Numerical Analysis, An Introduction, Birkh auser, Basel, 1997.
[23] Walther Gautschi, Orthogonal polynomials: applications and computation, Acta Nu-
merica 5 (1996), 45119.
[24] J. Gilbert, C. Moler, R. Schreiber, Sparse matrices in MATLAB: Design and imple-
mentation., SIAM J. Matrix Anal. Appl. 13 (1992), no. 1, 333356, disponibil n kit-ul
MATLAB.
[25] D. Goldberg, What every computer scientist should know about oating-point arith-
metic, Computing Surveys 23 (1991), no. 1, 548.
[26] H. H. Goldstine, J. von Neumann, Numerical inverting of matrices of high order, Amer.
Math. Soc. Bull. 53 (1947), 10211099.
[27] Gene H. Golub, Charles van Loan, Matrix Computations, 3rd ed., John Hopkins Uni-
versity Press, Baltimore and London, 1996.
[28] Jens Gravesen, Differential Geometry and Design of Shape and Motion, Technical Uni-
versity of Denmark, Lingby, Denmark, 2002.
[29] P. R. Halmos, Finite-Dimensional Vector Spaces, Springer Verlag, New York, 1958.
[30] D. J. Higham, N. J. Higham, MATLAB Guide, SIAM, Philadelphia, 2000.
Bibliograe 447
[31] N. J. Higham, F. Tisseur, A Block Algorithm for Matrix 1-Norm Estimation, with an
Application to 1-Norm Pseudospectra, SIAM Journal Matrix Anal. Appl. 21 (2000),
no. 4, 11851201.
[32] Nicholas J. Higham, The Test Matrix Toolbox for MATLAB, Tech. report, Manchester
Centre for Computational Mathematics, 1995, disponibil via WWW la adresa http:
//www.ma.man.ac.uk/MCCM/MCCM.html.
[33] Nicholas J. Higham, Accuracy and Stability of Numerical Algorithms, SIAM, Philadel-
phia, 1996.
[34] E. Isaacson, H. B. Keller, Analysis of Numerical Methods, John Wiley, New York, 1966.
[35] D. Kincaid, W. Cheney, Numerical Analysis: Mathematics of Scientic Computing,
Brooks/Cole Publishing Company, Belmont, CA, 1991.
[36] Mirela Kohr, Capitole speciale de mecanic a, Presa Univ. Clujean a, 2005.
[37] V. N. Kublanovskaya, On some algorithms for the solution of the complete eigenvalue
problem, USSR Comp. Math. Phys. 3 (1961), 637657.
[38] The Mathworks Inc., Natick, Ma, Using MATLAB, 2002.
[39] The Mathworks Inc., Natick, Ma, MATLAB. Getting Started, 2004, Version 7.
[40] The Mathworks Inc., Natick, Ma, MATLAB. Symbolic Math Toolbox, 2004, Version 7.
[41] The Mathworks Inc., Natick, Ma, MATLAB. The Language of Technical Computing.
Mathematics, 2004, Version 7.
[42] The Mathworks Inc., Natick, Ma, MATLAB. The Language of Technical Computing.
Programming, 2004, Version 7.
[43] The Mathworks Inc., Natick, Ma, Using MATLAB Graphics, 2004, Version 7.
[44] Cleve Moler, Numerical Computing in MATLAB, SIAM, 2004, disponibil via www la
adresa http://www.mathworks.com/moler.
[45] J. J. Mor e, M. Y. Cosnard, Numerical Solutions of Nonlinear Equations, ACM Trans.
Math. Softw. 5 (1979), 6485.
[46] Shoichiro Nakamura, Numerical Computing and Graphic Vizualization in MATLAB,
Prentice Hall, Englewood Cliffs, NJ, 1996.
[47] Dana Petcu, Matematic a asistat a de calculator, Eubeea, Timisoara, 2000.
[48] W. H. Press, S. A. Teukolsky, W. T. Vetterling, B. P. Flannery, Numerical Recipes in C,
Cambridge University Press, Cambridge, New York, Port Chester, Melbourne, Sidney,
1996, disponibila prin www, http://www.nr.com/.
[49] J. J. Rissler, M ethodes math ematiques pour la CAO, Masson, Paris, Milan, Barcelone,
Bonn, 1991.
448 Bibliograe
[50] I. A. Rus, Ecuat ii diferent iale, ecuat ii integrale si sisteme dinamice, Transilvania Press,
Cluj-Napoca, 1996.
[51] I. A. Rus, P. Pavel, Ecuat ii diferent iale, Editura Didactic a si Pedagogic a, Bucuresti,
1982, edit ia a doua.
[52] H. Rutishauser, Solution of the eigenvalue problems with the LR transformation, Nat.
Bur. Stand. App. Math. Ser. 49 (1958), 4781.
[53] Y. Saad, Iterative Methods for Sparse Linear Systems, PWS Publishing, Boston, 1996,
disponibil a via www la adresa http://www-users.cs.umn.edu/

saad/
books.html.
[54] A. Sard, Linear Approximation, American Mathematical Society, Providence, RI, 1963.
[55] Thomas Sauer, Numerische Mathematik I, Universit at Erlangen-Nurnberg, Erlangen,
2000, Vorlesungskript.
[56] Thomas Sauer, Numerische Mathematik II, Universit at Erlangen-Nurnberg, Erlangen,
2000, Vorlesungskript.
[57] R. Schwarz, H., Numerische Mathematik, B. G. Teubner, Stuttgart, 1988.
[58] L. F. Shampine, R. C. Allen, S. Pruess, Fundamentals of Numerical Computing, John
Wiley & Sons, Inc, 1997.
[59] L. F. Shampine, Reichelt R. W., The MATLAB ODE suite, SIAM J. Sci. Comput. 18
(1997), no. 1, 122.
[60] D. D. Stancu, Asupra formulei de interpolare a lui Hermite si a unor aplicat ii ale aces-
teia, Acad. R. P. Rom. Studii si Cercet ari Matematice 8 (1957), 339355, Filiala Cluj a
Academiei.
[61] D. D. Stancu, Analiz a numeric a Curs si culegere de probleme, Lito UBB, Cluj-
Napoca, 1977.
[62] D. D. Stancu, G. Coman, P. Blaga, Analiz a numeric a si teoria aproxim arii, vol. II, Presa
Universitar a Clujean a, Cluj-Napoca, 2002, D. D. Stancu, Gh. Coman, (coord.).
[63] D. D. Stancu, Gh. Coman, O. Agratini, R. Trmbit as, Analiz a numeric a si Teoria
aproxim arii, vol. I, Presa Universitar a Clujean a, Cluj-Napoca, 2001, D. D. Stancu, Gh.
Coman, (coord.).
[64] J. Stoer, R. Burlisch, Einfuhrung in die Numerische Mathematik, vol. II, Springer Ver-
lag, Berlin, Heidelberg, 1978.
[65] J. Stoer, R. Burlisch, Introduction to Numerical Analysis, 2nd ed., Springer Verlag,
1992.
[66] A. H. Stroud, Approximate Calculation of Multiple Integrals, Prentice Hall Inc., Engle-
wood Cliffs, NJ, 1971.
Bibliograe 449
[67] Lloyd N. Trefethen, David Bau III, Numerical Linear Algebra, SIAM, Philadelphia,
1996.
[68] E. E. Tyrtyshnikov, A Brief Introduction to Numerical Analysis, Birkh auser, Boston,
Basel, Berlin, 1997.
[69] C.

Uberhuber, Computer-Numerik, vol. 1, 2, Springer Verlag, Berlin, Heidelberg, New-
York, 1995.
[70] C. Ueberhuber, Numerical Computation. Methods, Software and Analysis, vol. I, II,
Springer Verlag, Berlin, Heidelberg, New York, 1997.
[71] J. H. Wilkinson, The Algebraic Eigenvalue Problem, Clarendon Press, Oxford, 1965.
Indice
(operator), 12, 131
: (operator), 10
% (comentariu), 26
algoritm
precis, 92
regresiv stabil, 92
stabil, 92
algoritmul
Cox-deBoor, 246
de Casteljau, 247
algoritmul lui Strassen, 128
analiza progresiv a a erorilor, 94
analiza regresiv a a erorilor, 94
aproximant a, 74
aproximant a algebric maximal a, 425
aproximant a algebric minimal a, 425
axioma fundamental a a aritmeticii in vir-
gul a otant a, 77
axis, 55
blkdiag, 8
break, 24
chol, 135
clf, 53
close, 53
colorbar, 65
colormap, 65
cometarii MATLAB, 26
cond, 106
condeig, 352
condest, 106
condit ionare
a unui sistem liniar, 104
condit ionare
a unei probleme, 85
a unui algoritm, 87
num ar de condit ionare, 85
continue, 24
contour, 63
conv, 181
convergent a liniar a, 298
cross, 14
cuadraturi adaptive, 284
dblquad, 442
deconv, 181
demo, 3
derivare numeric a, 267
descompunere maximal a, 426
descompunere minimal a, 426
det, 14
diag, 9
diary, 5
diferent a divizat a cu noduri multiple, 216
diferent a nit a
regresiv a, 214
diferent a regresiv a, 214
diferent e divizate, 210
diferent e nite
progresive, Vezi diferent e progresive
450
Indice 451
diferent e progresive, 213
diff(Symbolic), 41
digits, 46
doc, 3
dot, 14
double, 46
ecuat ii normale, 158
eig, 351
element de cea mai bun a aproximare, 154
element pivot, 111
eliminare gaussian a, 109
eps, 4
eroare, 74
eroare absolut a, 74
eroare asimptotic a, 298
eroare de trunchiere, 360
eroare relativ a, 74
error, 24, 39
eye, 6
ezcontour, 62
fcnchk, 32
feval, 31
figure, 53
fill, 53
find, 20
sier M, 25
funct ie, 25, 26
script, 25
ops, 114
for, 22
format, 3
formul a de derivare numeric a, 264
formul a de integrare numeric a, 269
formul a de tip Gauss-Christoffel, Vezi for-
mul a de cuadratur a de tip Gauss
formul a de aproximare
algebric maximal a, 427
algebric minimal a, 427
consistent a, 431
omogen a, 431
formul a de cuadratur a, Vezi formul a de in-
tegrare numerica
formul a de cubatur a, 432
a lui Simpson, 433
a trapezului, 433
Newton-Cotes, 433
formula de aproximare
a lui Bernstein, 240
formula Euler-MacLaurin, 289
formula lui Newton progresiv a, 213
formula lui Newton regresiv a, 215
formula lui Simpson, 271
formula lui Simpson repetat a, 271
formula repetat a a trapezului, 270
formula trapezului, Vezi regula trapezului
formule de cuadratur a de tip Gauss, 276
formule Newton-Cotes, 275
fplot, 59
fsolve, 45
funct ie
B-spline, 241
funct ie gril a, 372
function handle, 30
funct ii anonime, 30
funct ii imbricate, 29
fzero, 321
gallery, 10
global, 34
grad de exactitate, 264, 269
gril a, 370
help, 2
hess, 353
identitatea lui Marsden, 242
IEEE 754 (standardul), 79
if, 22
indice de ecient a, 300
inegalitatea de stabilitate, 373
Inf, 3
inline, 30
int, 41
int16, 37
int32, 37
int8, 36
integrare numeric a, 268
interp1, 226
452 Indice
interpolare blending, Vezi interpolare
transnit a
interpolare Hermite, 193
interpolare Lagrange, 189
metoda lui Aitken, 209
metoda lui Neville, 208
interpolare polinomial a, 186
interpolare spline, 217
interpolare transnit a, 426
inv, 14
iterat ie vectorial a, 332
lasterr, 40
lasterror, 40
legend, 57
length, 7
limit, 43
load, 4
logical, 21
loglog, 52
lookfor, 2
lu, 134
maple, 45
matrice
companion, 328
complement Schur, 115
descompunere cu valori singulare,
354
descompunere LU a unei , 114
descompunere LUP a unei , 116
descompunere QR a unei , 121
descompunere Schur a unei , 330
descompunere Schur real a a unei ,
331
diagonalizabil a, 329
factorizare Cholesky a unei , 120
forma normal a Jordan a unei , 329
hermitian a, 99
Hessenberg superioar a, 332
Jacobi, 278
nederogatorie, 329
normal a, 99
ortogonal a, 99
polinom caracteristic al unei , 328
simetric a, 99
similare, 329
spectrul unei , 99
transformarea RQ a unei , 339
unitar a, 99
urma unei , 103
valoare proprie a unei , 327
vector propriu al unei , 327
mesh, 63
meshc, 63
meshgrid, 63
metod a cu un pas
consistent a, 360
convergent a, 375
funct ia de eroare principal a, 361
stabil a, 373
metod a cu un pas
ordin, 360
ordin exact, 361
metoda
aproximat iilor succesive, 310
dezvolt arii Taylor, 363
elimin arii a lui Gauss, Vezi eliminare
gaussian a
falsei pozit ii, 302
Gauss-Seidel, 142
lui Broyden, 318
lui Euler, 361
lui Euler modicat a, 364
lui Heun, 365
lui Jacobi, 141
lui Newton, 307
lui Romberg, 286
lui Sturm, 300
puterii, Vezi iterat ie vectorial a
QR, 335
cu deplasare spectral a, 344
cu pas dublu, 349
simpl a, 341
ran arii iterative, 128
relax arii, 142
secantei, 304
SOR, 144
metode
quasi-Newton, 316
Indice 453
Runge-Kutta, 365
NaN, 3
nargin, 28
nargout, 28
norm, 98, 104
norm a matricial a, 99
norm a Frobenius, 104
norm a matricial a
indus a, 99
subordonat a, 99
notat ia
O, 91
, 91
, 91
num ar de condit ionare, 106
num ar de condit ionare al unei matrice,
106
obiect inline, 30
ode15i, 414
ode113, 394
ode15s, 394
ode23s, 394
ode23tb, 394
ode23t, 394
ode23, 394
ode45, 394
ones, 6
operator
liniar si pozitiv, 255
spline cu variat ie diminuat a, Vezi oer-
atorul lui Schoenberg252
operatorul
Bernstein, 236, 258
Hermite-Fej er, 258
lui Schoenberg, 252, 258
ordin de convergent a, 299
partit ia unit at ii, 242
pchip, 229, 230
pi, 4
pinv, 183
pivotare maximal a pe coloana, 111
pivotare part ial a, Vezi pivotare maximal a
pe coloan a
pivotare scalat a pe coloan a, 112
plot, 49
plot3, 60
polar, 52
polinoame ortogonale, 164
Cebsev de spet a a doua, 177
Cebsev de spet a I, 170
Hermite, 177
Jacobi, 178
Laguerre , 177
Legendre, 166
polinom
Bernstein, 236
de cea mai bun a aproximare uni-
form a, 260
poly, 181
polyder, 181
polyfit, 184, 226
polyval, 180
polyvalm, 181
ppval, 230
principiul efectelor egale, 75
print, 68
problem a de interpolare, 155
problem a de cea mai buna aproximare,
154
problem a incorect pus a, 89
problem a numerica, 72
problem a prost condit ionat a, 89
produs tensorial, 424
puncte de alternant a Cebsev, 260
qr, 135
quad, 291
quadl, 291
ranare iterativa, Vezi metoda ran arii it-
erative
rand, 7
randn, 7
rcond, 107
regula trapezelor, Vezi formula repetat a a
trapezului
regula trapezului, 270
repmat, 8
454 Indice
reshape, 8
rezolvarea numeric a a ecuat iilor
diferent iale
metode cu un pas, 360
roots, 181
rotat ie Givens, 125
save, 4
semilogx, 52
semilogy, 52
simple, 42
simplify, 42
single, 37, 83
size, 6
solve, 43
sort, 16
spline
Not-a-knot, 223
spline, 229
spline complete, 222
spline cubice, 220
spline naturale, 222
subfunct ii, 28
subplot, 58
subs, 42
suma boolean a, 424
surf, 65
surfc, 65
svd, 354
switch, 22, 24
sym, 41
syms, 41
tabel a Butcher, 369
tabela Butcher, 387
tablou de celule, 33
taylor, 42
Teorema lui Peano, 188
text, 57
tic, 34
title, 52
toc, 34
transformare
Householder, 122
trapz, 294
tril, 9
triu, 9
try-catch, 39
uint16, 37
uint32, 37
uint8, 36
valori proprii generalizate, 353
varargin, 32
varargout, 32
vectorize, 32
view, 66
virgul a otant a
anulare, 78
exponent, 76
normalizarea unui num ar, 76
reprezentare, 76
semnicant, 76
vpa, 46
waterfall, 65
while, 22, 23
whos, 4
xlabel, 52, 62
xlim, 55
ylabel, 52
ylim, 55
zeros, 6
Indice 455

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