calcul numeric matriceal

Upload: krittoss-kriogen

Post on 16-Jul-2015

356 views

Category:

Documents


5 download

TRANSCRIPT

METODE DE CALCULNUMERIC MATRICEAL. ALGORITMI FUNDAMENTALI

Bogdan Dumitrescu Corneliu Popeea Boris JoraPartea ITuturor studenilor, foti, actuali sau viitori, precum i copiilor notri Andrei Octavia Monica Sebastian Corneliu erban i Lucrarea de faa, prima de o asemenea amploare n limba romna, este construit a pe structura cursului de Calcul numeric, predat de autori la Facultatea de Automatica i Calculatoare a Universitaii Politehnica din Bucureti. Lucrarea expune, n maniera eminamente algoritmica, metodele de rezolvare a problemelor fundamentale de calcul din algebra matriceala, care constituie primele , de cele mai multe ori, principalele componente ale celor mai diverse aplicaii din inginerie, economie i numeroase alte ramuri ale tiinei. n afara studenilor din facultaile cu profil tehnic sau economic, lucrarea poate fi utila tuturor celor care, fie ei studeni, cadre didactice, ingineri sau cercetatori, doresc sa utilizeze cele mai moderne instrumente de calcul numeric matriceal. Pentru nelegerea noiunilor prezentate, cititorul trebuie sa posede cunotine minime de matematica, la nivelul celor dobndite n liceu sau n primul an de facultate. Pentru orientare, fiecare capitol ncepe cu o trecere n revista a bazelor matematice ale problemelor de calcul studiate. De asemenea, cititorul ar trebui sa fie capabil a se exprima ntr-un limbaj de programare de nivel nalt; aceasta condiie nu e strict necesara, dar constituie un avantaj, pentru ca i permite sa se concentreze asupra ideilor i nu a detaliilor de implementare ale acestora. Cartea conine 7 capitole, descrise n cteva cuvinte mai jos. La nceput se afla o bibliografie de baza, cuprinznd lucrari de larga utilizare, referite cu cifre romane, care ofera o privire de perspectiva asupra ntregului domeniu. n final se gasete o a doua bibliografie, n general formata din articole (referite cu cifre arabe) privind aspecte specifice ale problemelor tratate i destinata cititorului care dorete sa adnceasca studiul dincolo de textul de faa. Pentru facilitarea lecturii, recomandam consultarea listelor de notaii i de prescurtari uzuale, aflate cteva pagini mai departe. Capitolul 0, numerotat astfel pentru a sublinia caracterul sau de iniieren domeniu, prezinta specificul calculului numeric i justifica necesitatea existenei carii de faa. Este vorba aici despre: reprezentarea numerelor reale n virgula mobila, propriet aile (uneori neateptate ale) operaiilor cu astfel de numere precum i mecanismele de apariie inevitabila a erorilor numerice. Este apoi considerata perechea formata din problema de calcul i algoritmul de rezolvare, relativ la care sunt defiii

Cuvnt introductiv

nite noiunile fundamentale de condiionare , respectiv, stabilitate numerica. n ncheiere, este aruncata o privire asupra modului n care arhitectura calculatorului influeneaza concepia algoritmilor. Capitolul 1 este dedicat expunerii noiunilor primare ale algebrei matriceale (vectori, subspaii, matrice de diverse tipuri i proprietaile acestora), constituind totodata o introducere n problematica specifica a capitolelor urmatoare. Algoritmii prezentai rezolva unele probleme simple, dar fundamentale, cum ar fi nmulirea a doua matrice, sau unele cazuri particulare, de exemplu cel al matricelor triunghiulare, ale unor probleme mai dificile (rezolvarea sistemelor liniare, calculul valorilor i vectorilor proprii). Aceti algoritmi sunt larg utilizai n continuare, ca elemente constructive primare. Capitolul 2- trateaza metodele directe de rezolvare a sistemelor liniare Ax = b, cu matrice A nesingulara, prezentnd procedura de eliminare gaussiana, inclusiv strategiile de pivotare adecvate, precum i versiunile compacte ale acestei metode bazate pe factorizarea LU a matricei A. n afara matricelor de forma generala, sunt studiate i cazurile, des ntlnite n practica, ale matricelor banda, simetrice simetric pozitiv definite. De asemenea, sunt abordate probleme conexe, cum ar fi calculul inversei i al determinantului. Capitolul 3- descriemetodele de rezolvaren sensul celor mai mici patrate (CMMP) a sistemelor liniare Ax = b, n care numarul ecuaiilor difera de cel al necunoscutelor, deci A este o matrice dreptunghiulara de forma generala. n acest caz se utilizeaza metode de eliminare specifice, bazate pe aplicarea transformarilor ortogonale (reflectori Householder, rotaii Givens etc.) iar conceptul central este cel de factorizare QR. Daca matricea A nu este de rang maxim, se recomanda utilizarea factorizarii ortogonale complete, care are la baza un algoritm de triangularizare cu pivotarea coloanelor. Sistemele liniare de acest tip apar frecvent n prelucrarea datelor experimentale, statistica, identificarea sistemelor etc. Capitolul 4- expune principalele metode de calcul al valorilor i vectorilor proprii ai unei matrice A. Este prezentat n detaliu algoritmul QR, care aduce matricea A la forma Schur, reala sau complexa, pornind de la forma de principiu a algoritmului, ale carei proprietai matematice sunt uor de analizat, i ajungnd la variantele relativ sofisticate sub care acesta este implementat n programele profesionale. Alaturi de cazul general este tratat i cel al matricelor simetrice. Nu sunt uitai ali algoritmi importani, utili n cazuri particulare, cum ar fi metodele puterii, puterii inverse, biseciei sau Jacobi. Cunoaterea valorilor proprii este utila n analiza stabilitaii sistemelor dinamice, n studiul vibraiilor (pentru cladiri, poduri, avioane) i n multe alte probleme aplicative majore. Capitolul 5 - prezinta metodele de calcul al descompunerii valorilor singulare (DVS), care constituie instrumentul cel mai sigur de rezolvare a numeroase probleme din algebra matriceala, cum ar fi determinarea rangului, calculul unor norme matriceale, construcia bazelor pentru diverse subspaii, rezolvarea n sensul celor mai mici patrate a sistemelor cu matrice de rang nemaxim. Algoritmul DVS este o adaptare ingenioasa a algoritmului QR simetric, cunoscut din capitolul anterior. Utilizarea DVS este ilustrata considernd unele variante ale problemei CMMP, de exemplu CMMP totala sau cu restricii, frecvent ntlnite n aplicaii. iii Capitolul 6 -considera calculul valorilor i vectorilor proprii generalizai ai unei perechi de matrice (A,B). Este prezentat algoritmul QZ, care aduce perechea la forma Schur generalizata, precum i problema conexa a calculului bazelor ortogonale pentru subspaii de deflaie. Noiunile i algoritmii studiai aici sunt de mare utilitate n probleme care apar, de exemplu, n teoria sistemelor precum i n analiza circuitelor electrice sau mecanice cu elemente ideale. Principalele rezultate ale expunerii sunt concretizate sub forma de algoritmi de calcul descrii ntr-un pseudocod extrem de apropiat de implementarea directa ntr-un limbaj de programare de nivel nalt. Algoritmii au fost testai de autori n mediul de programare MATLAB; cu toate acestea, orice observaii i propuneri din partea cititorilor, care sa conduca la eliminarea unor erori sau la mbunatairea performanelor, sunt binevenite i pot fi transmise la adresa menionata mai jos.

Pentru majoritatea algoritmilor sunt precizate proprietaile de stabilitate numerica, de obiceintr-o seciune speciala dedicata acestei teme, n fiecare capitol. Menionam ca o alta seciune expune ntotdeuna informaii despre condiionarea problemelor de calcul studiate; n acest fel, cititorul va avea o imagine clara a acurateii cu care se pot obine soluiile numerice ale diverselor probleme studiate. De asemenea, fiecare capitol conine n final o seciune ce prezinta rutine (funcii) din biblioteca LAPACK (Linear Algebra PACKage) i din limbajul MATLAB (MATrix LABoratory), reprezentative pentru problemele de calcul studiate. LAPACK [XV] implementeaza cei mai eficieni i siguri algoritmi de calcul numeric matriceal i este instrumentul cel mai utilizat n acest domeniu. MATLAB [XIV] are o componenta didactica mai pronunata, mbinnd o interfaa utilizator simpla cu o calitate remarcabila a algoritmilor. De asemenea, fiecare capitol este nsoit de un set de probleme, n total peste 200, ale caror rezolvari complete sau pariale se gasesc n partea finala a lucrarii. Recomandam cititorului sa consulte indicaiile sau rezolvarea propusa de autori numai pentru verificarea soluiei personale sau dupa tentative serioase de gasire a acesteia. n plus, un mare ctig pentru cititor l poate reprezenta implementarea algoritmilor (cei de baza, din lucrare, i cei derivai, n probleme) precum i testarea funcionarii lor pe exemple numerice reprezentative. Aducem la cunotina cititorilor ca Grupul de Calcul Numeric din cadrul catedrei de Automatica i Ingineria Sistemelor de la Facultatea de Automatica i Calculatoare, din care autorii fac parte, dispune de o biblioteca de calcul numeric matriceal scrisa n limbajul C, care conine implementarea tuturor algoritmilor din lucrare. Cei interesai pot contacta autorii la urmatoarele adrese de e-mail bogdan,popeea,[email protected] Autorii mulumesc colegilor lor prof. Paul Flondor i conf.dr.ing. Ioan Tabu pentru interesul acordat i n special pentru comentariile i observaiile constructive facute pe marginea lucrarii. De asemenea, autorii aduc mulumiri doamnei redactor Viorica Fatu, de la Editura ALL Educational, pentru atenia acordata acestei cari n drumul catre tipar. Autorii iv

Bibliografie generala

Pentru chestiuni teoretice de calcul matriceal: [ I ] Gantmaher F.R. Teoriia matri (ediia a 2-a), Ed. Nauka, Moscova, 1966. (The Theory of Matrices, vols. 1-2, Chelsea, New York, 1959). [ II ] Horn R.A., Johnson C.R. Matrix Analysis, Cambridge University Press, Cambridge UK, 1985. [ III ] Strang G. Introduction to Linear Algebra, Wellesley-Cambridge Press, Wellesley, MA, USA, 1993. Pentru algoritmi de calcul matriceal: [ IV] Wilkinson J.H. The Algebraic Eigenvalue Problem, Clarendon Press, Oxford, 1965. [V] Stewart G. W. Introduction to Matrix Computations, Academic Press, New York and London, 1973. [VI ] Golub G. H., Van Loan Ch. F. Matrix Computations, Second edition, The John Hopkins University Press, Baltimore, Maryland, 1989. [VII ] Lawson C.L., Hanson R.J. Solving Least Squares Problems, SIAM, Philadelphia, PA, USA, 1995. Pentru studiul condiionarii problemelor de calcul matriceal i al stabilitaii numerice a algoritmilor afereni: [VIII ] Stewart G.W., Sun J. Matrix Perturbation Theory, Academic Press, London, 1990. [ IX] Higham N.J. Accuracy and Stability of Numerical Algorithms, SIAM, Philadelphia PA, 1996. Pentru programe de calcul i indicaii de utilizare: [X] Wilkinson J.H., Reinsch C. Handbook for Automatic Computa-

tion. Linear Algebra, Springer-Verlag Berlin, 1971. [XI ] Smith B.T., Boyle J.M., Ikebe Y., Klema V.C., Moler C.B. Matrix Eigensystem Routines: EISPACK Guide, 2-nd ed., SpringerVerlag, New York, 1974. [XII ] Garbow B.S., Boyle J.M., Dongarra J.J., Moler C.B. Matrix Eigensystem Routines: EISPACK Guide Extension, SpringerVerlag, New York, 1977. [XIII ] Dongarra J.J., Bunch J.R., Moler C.B., Stewart G.W. LINPACK Users Guide, SIAM Publications, Philadelphia, PA, 1978. [XIV] MATLAB Users Guide, The MathWorks Inc., Natick, MA, USA, 1992. v [XV] Anderson E., Bai Z., Bischof C., Demmel J., Dongarra J., Du Croz J., Greenbaum A., Hammarling S., McKenney A., Ostrouchov S., Sorensen D. LAPACK Users Guide, Second Edition, SIAM, Philadelphia PA, 1995. (http://www.netlib.org/lapack/lug) Lucrari n limba romna: [XVI ] Brnzanescu V., Stanala O. Matematici speciale teorie, exemple, aplicaii, Ed. ALL, Bucureti, 1994. [XVII ] Bucur C.M., Popeea C.A., Simion Gh.Gh. Matematici speciale. Calcul numeric, E.D.P., Bucureti, 1983. [XVIII ] Ionescu V., Varga A. Teoria sistemelor. Sinteza robusta. Metode numerice de calcul., Ed. ALL, Bucureti, 1994. [XIX] Iorga V., Jora B., Nicolescu C., Lopatan I., Fatu I., Programare numerica, Ed. Teora, Bucureti, 1996.

Lista de notaii

N mulimea numerelor naturale Z mulimea numerelor ntregi R mulimea numerelor reale C mulimea numerelor complexe

Vectorini : p : nf vectorul cu elementele ntregi ni, ni + p, ni + 2p, . . . , nf ; daca p = 1, vectorul se scrie simplu ni : nf Rn spaiul liniar n-dimensional al vectorilor (coloana) x cu n componente reale xi R, i = 1 : n Cn spaiul liniar n-dimensional al vectorilor (coloana) x cu n componente complexe xi C, i = 1 : n ek, k = 1 : n baza standard a spaiului liniar Rn, respectiv Cn xi, x(i) elementul vectorului x aflat n poziia i x(i1 : i2) vectorul format din elementele din poziiile de la i1 la i2 ale vectorului x (x, y) = yT x = Pn i=1 xiyi produsul scalar standard a doi vectori x, y Rn; n cazul complex produsul scalar este (x, y) = yHx = Pn i=1 xi yi kxk = (x, x)1/2 = (Pn i=1 |xi|2)1/2 norma euclidiana a vectorului x Rn vi kxkp = (Pn i=1 |xi|p)1/p p-normele vectorului n-dimensional x, p 1; n calcule se utilizeaza n special kxk1,kxk2=kxk i kxk=maxi=1:n|xi|

Matrice

Rmn spaiul liniar al matricelor cu m linii i n coloane cu elemente reale aij R, i = 1 : m, j = 1 : n Cmn spaiul liniar al matricelor cu m linii i n coloane cu elemente complexe aij C, i = 1 : m, j = 1 : n 1 In matricea unitate de ordinul n aij , A(i, j) elementul matricei A situat n linia i, coloana j A(i1 : i2, j1 : j2) blocul matricei A format din liniile de la i1 la i2 i coloanele de

la j1 la j2. Indicele :, fara alta precizare, semnifica luarea tuturor liniilor sau coloanele AT transpusa matricei (reale sau complexe) A AH conjugata hermitica a matricei (complexe) A, i.e. AH = AT , unde A este conjugata complexa a lui A A-1 inversa matricei patrate nesingulare A, i.e. AA-1 = A-1A = In A-T = (A-1)T = (AT )-1 -1

A-H = (A-1)H = (AH) trA urma matricei patrate A, i.e. suma elementelor diagonale detA determinantul matricei patrate A i(A), i = 1 : n valorile proprii ale matricei patrate A de ordin n (A) spectrul (de valori proprii) {1(A), 2(A), . . . , n(A)} al matricei A (A) = maxi=1:n|i(A)| raza spectrala a matricei A cond(A) = kAk kA-1k numarul de condiie la inversare al matricei A (k k este o norma matriceala consistenta) A+ pseudoinversa normala (Moore-Penrose) a matricei A; daca A este monica A+=(ATA)-1 -1

AT , daca A este epica, atunci A+=AT(AAT ) i(A), i = 1 : p, p = min(m, n) valorile singulare ale matricei A ordonate astfel nct 1 2 . . . p1n

calcule, vectorii se identifica cu matricele cu o singura coloana, iar scalarii se identifica cu matricele (sau vectorii) cu un singur element.

vii (A) mulimea {1(A), 2(A), . . . , p(A)} a valorilor singulare ale matricei A r = rangA rangul matricei A, i.e. numarul valorilor singulare nenule (A,B) = tr(BTA) (tr(BHA)) produsul scalar a doua matrice reale (complexe) kAkF = (A,A)1/2 norma Frobenius a matricei A, kAk2 F = Pm i=1Pn j=1 |aij |2 sau kAk2 F = Pr i=1 i2

|A|p = (Pr i=1 i p)1/p p-normele Schatten, p 1; n calcule se utilizeaza n special norma-urma |A|1 = Pr i=1 i, norma Frobenius |A|2 = kAkF i norma spectrala |A| = 1(A) kAkp = maxkxkp=1kAxkp p-normele induse; n calcule se utilizeaza n special norma kAk1 = maxj=1:nPm i=1 |aij |, norma spectrala kAk2 = 1(A) i norma kAk = maxi=1:mPn j=1 |aij |

Transformari

SAT transformare de echivalena (bilaterala) a matricei A Rmn (S i T sunt matrice patrate nesingulare; transformarea de echivalena conserva rangul, iar daca S, T sunt ortogonale, atunci conserva i valorile singulare) T-1AT transformare de asemanare a matricei A Rnn (transformarea de asemanare conserva valorile proprii) T TAT transformare de congruena a matricei A Rnn (T este nesingulara; aplicat a unei matrice A simetrice, transformarea de congruena conserva rangul i ineria i.e. numerele de valori proprii negative, nule , respectiv, pozitive)

Daca T este ortogonala, atunci T-1 = T asemanare ortogonala

T

i transformarea T TAT se numete transformare de

Prescurtari

i.e. (id est) adica e.g. (exempli gratia) de exemplu, bunaoara DVS descompunerea valorilor singulare FSR(G) forma Schur reala (generalizata) FSC(G) forma Schur complexa (generalizata) FSH forma (bloc-)superior Hessenberg FVM format virgula mobila ITE matrice inferior triunghiulara elementara viii LU factorizarea LU PE matrice de permutare elementara QR factorizarea QR

Alfabetul grecMajuscule Minuscule Denumire Corespondentul latin A alfa A, a B beta B, b _ gamma G, g _ delta D, d E o epsilon E, e Z zeta Z, z H eta E, e _ theta I iota I, i K kappa K, k _ lambda L, l M mu M, m N nu N, n _ xi X, x O o omicron O, o _ pi P, p P rho R, r _ sigma S, s T tau T, t _ upsilon U, u _ phi F, f X hi H, h psi omega O, o

Cuprins0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 1 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 1.1 0 1.1 1 1.1 Concepte fundamentale Reprezentarea n virgula mobila Aritmetica n virgula mobile Condiionarea problemelor de calcul Stabilitatea numerica a algoritmilor Calitaile unui algoritm numeric Implicaiile arhitecturii calculatoarelor Probleme Algoritmi elementari Vectori. Spaiul vectorial Rn Produs scalar. Norme. Ortogonalitate Matrice nmulirea Matricelor Norme matriceale Matrice structurate Matrice bloc Matrice normale Sisteme de ecuaii liniare Valori i vectori proprii Rutinele BLAS Probleme 2 6 7 1 0 1 2 1 5 1 6 1 8 1 9 1 9 2 4 2 8 3 2 3 7 3 9 4 2 4 6 4 9 5 9 6 2 6

2 2 2.1 2.2 2.3 2.3. 1 2.3. 2 2.4 2.4. 1 2.4. 2 2.4. 3 2.4. 4 2.5 2.6 2.6. 1 2.6. 2 2.7 Rezolvarea sistemelor de ecuaii liniare Transformari elementare Tringulizarea prin eliminarea gaussian Strategii de pivotare Pivotare parial Pivotare complet Factorizri LU Fac torizri LU rezultate din eliminarea gaussian Factorizri LU compacte Factortizri LU prin eliminare gaussian la nivel de bloc Factortizri LU compacte la nivel de bloc Rezolvarea sistemelor liniare Calculul inverse i a determinantului Calcului inverse unei matrice Calculul determinantului Condiionarea sistemelor liniare

7 6 9 7 0 7 2 7 6 7 6 7 8 8 1 8 2 8 4 8 6 8 9 9 1 9 3 9 4 9 7

CUPRINS 2.6 Calculul inversei i al determinantului . . . . . . . . . . . . . . . . . 93 2.6.1 Calculul inversei unei matrice . . . . . . . . . . . . . . . . . . 94 2.6.2 Calculul determinantului . . . . . . . . . . . . . . . . . . . . 97 2.7 Condiionarea sistemelor liniare . . . . . . . . . . . . . . . . . . . . . 97 2.8 Stabilitate numerica . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 2.8.1 Scalarea sistemelor liniare . . . . . . . . . . . . . . . . . . . . 103 2.8.2 Rafinarea iterativa a soluiei calculate . . . . . . . . . . . . . 104 2.9 Sisteme banda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 2.10 Sisteme simetrice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 2.11 Sisteme simetrice pozitiv definite . . . . . . . . . . . . . . . . . . . . 114 2.12 Rutine LAPACK i MATLAB . . . . . . . . . . . . . . . . . . . . . . 117 2.13 Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 3 Problema celor mai mici patrate 123 3.1 Transformari ortogonale . . . . . . . . . . . . . . . . . . . . . . . . . 125 3.1.1 Reflectori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125

3.1.2 Rotaii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 3.2 Transformari unitare . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 3.2.1 Reflectori compleci . . . . . . . . . . . . . . . . . . . . . . . 138 3.2.2 Rotaii complexe . . . . . . . . . . . . . . . . . . . . . . . . . 142 3.3 Triangularizarea ortogonala . . . . . . . . . . . . . . . . . . . . . . . 143 3.4 Factorizarea QR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 3.4.1 Acumularea transformarilor . . . . . . . . . . . . . . . . . . . 153 3.4.2 Aplicarea transformarilor . . . . . . . . . . . . . . . . . . . . 155 3.4.3 Triangularizarea ortogonala la nivel de bloc . . . . . . . . . . 156 3.4.4 Alte metode de ortogonalizare . . . . . . . . . . . . . . . . . 160 3.4.5 Factorizarea QL . . . . . . . . . . . . . . . . . . . . . . . . . 162 3.5 Rezolvarea problemei CMMP . . . . . . . . . . . . . . . . . . . . . . 162 3.5.1 Calculul pseudosoluiei . . . . . . . . . . . . . . . . . . . . . . 164 3.5.2 Calculul proieciilor . . . . . . . . . . . . . . . . . . . . . . . 167 3.5.3 Problema CMMP cu membru drept multiplu . . . . . . . . . 168 3.5.4 Calculul pseudoinversei . . . . . . . . . . . . . . . . . . . . . 168 3.5.5 Alte metode de rezolvare a problemei CMMP . . . . . . . . . 169 3.6 Sisteme liniare subdeterminate . . . . . . . . . . . . . . . . . . . . . 170 3.6.1 Triangularizarea ortogonala la dreapta . . . . . . . . . . . . . 170 3.6.2 Factorizarea LQ . . . . . . . . . . . . . . . . . . . . . . . . . 172 3.6.3 Rezolvarea sistemelor subdeterminate . . . . . . . . . . . . . 174 3.7 Condiionarea problemelor CMMP . . . . . . . . . . . . . . . . . . . 177 3.7.1 Preliminarii . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 3.7.2 Sensibilitatea pseudosoluiei . . . . . . . . . . . . . . . . . . . 180 3.7.3 Sensibilitatea soluiei normale . . . . . . . . . . . . . . . . . . 182 3.8 Stabilitatea algoritmilor de triangularizare . . . . . . . . . . . . . . . 183 3.8.1 Stabilitatea numerica a algoritmilor fundamentali . . . . . . . 184 3.8.2 Acurateea soluiilor calculate . . . . . . . . . . . . . . . . . . 185 3.8.3 Scalarea problemei CMMP . . . . . . . . . . . . . . . . . . . 186 3.8.4 Rafinarea iterativa a soluiei CMMP . . . . . . . . . . . . . . 187 CUPRINS xi 3.9 Descompunerea ortogonala completa . . . . . . . . . . . . . . . . . . 189 3.9.1 Triangularizarea ortogonala cu pivotarea coloanelor . . . . . . 190 3.9.2 Determinarea rangului . . . . . . . . . . . . . . . . . . . . . . 193 3.9.3 Triangularizarea ortogonala completa . . . . . . . . . . . . . 195 3.9.4 Descompunerea ortogonala completa . . . . . . . . . . . . . . 197 3.9.5 Problema generala CMMP . . . . . . . . . . . . . . . . . . . 197 3.10 Rutine LAPACK i MATLAB . . . . . . . . . . . . . . . . . . . . . . 199 3.11 Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200 0 CUPRINS

Capitolul 0

Concepte fundamentale ale calculului numericRezolvarea numerica cu ajutorul calculatorului a unei probleme de calcul se face ntotdeauna pe baza unui algoritm, i.e. a unei succesiuni finite i bine precizate de operaii elementare (cum ar fi adunarea, nmulirea etc.) prin care soluia problemei este calculata n funcie de datele iniiale. Dei matematica furnizeaz deseori, n demonstraiile numite constructive, algoritmi de rezolvare a problemelor pe care le trateaza, s-a dovedit ca de multe ori implementarile numerice ale acestor algoritmi au dezavantaje majore care i fac de nefolosit. Discrepana ntre corectitudinea matematica a unui algoritm i adecvarea lui la specificul calculului numeric practic poate proveni din doua cauze importante. Una, evidenta, consta n (eventuala) complexitate (n ce privete numarul operaiilor de executat i memoria ocupata de date), care poate duce fie la timpi de execuie foarte

mari, deci nepractici, fie, pur i simplu, la imposibilitatea execuiei programului care implementeaza algoritmul. A doua cauza, mai subtila, o constituie erorile care nsoesc calculul numeric; prin acumulare, acestea pot periclita acurateea rezultatului. O serie de erori sunt inerente, cum ar fi cele care apar la determinarea datelor din masuratori experimentale. Altele sunt legate de algoritmul de calcul utilizat, care se poate baza pe simplificari n modelarea unor fenomene fizice sau poate proveni dintr-o metoda matematica implicnd o infinitate de operaii, din care, prin trunchiere, se reine doar un numar finit de operaii; n ambele cazuri, prin natura lucrurilor, algoritmul va furniza o soluie aproximativa. n fine, exista erori avnd cauze specifice calculului numeric, care opereaza cu numere reale (i nu doar cu numere ntregi); de acestea ne vom ocupa mai pe larg. Desigur, numerele reale sunt reprezentate n memoria calculatorului ntr-un format bine precizat i ocupnd un numar relativ mic de locaii de memorie, de exemplu 4 sau 8 octei; astfel, o infinitate de numere este reprezentata printr-un numar finit de combinaii de bii. De aici o prima sursa de erori, cele de reprezentare. Apoi, pot aparea erori i la efectuarea operaiilor cu numere reale aflate n memoria calculatorului, erori numite de rotunjire; aceasta nu se ntmpla pentru ca unitatea 1 2 CAPITOLUL 0. CONCEPTE FUNDAMENTALE centrala (microprocesorul, de exemplu) ar gre la calcule, ci, din nou, datorita faptului ca numerele reale sunt reprezentate ntr-un format finit, att n memorie, ct i n unitatea centrala. Prin aceasta, calculul cu numere reale difera fundamental de cel cu ntregi. Vom obine 1 + 2 = 3 pe orice calculator, n schimb 0.1 + 0.2 6= 0.3 pe orice calculator (doar daca nu se folosesc programe speciale !); de exemplu pe un calculator ntr-un limbaj de programare pe care nu le precizam adunnd 0.1+0.2 i scaznd din rezultat 0.3 nu obinem 0, aa cum ne-am atepta, ci aproximativ 5.5 10-17; e drept, eroarea este infima. Pericolul apare n cazul acumularii unor astfel de mici erori, acumulare care poate duce la degradarea uneori fatala a rezultatului produs. n acest capitol ne vom ocupa de aspecte specifice elementare ale calculului numeric: modul de reprezentare a numerelor reale, feluln care se apreciaza calitatea unui algoritm numeric, cuantificarea efectului erorilor de rotunjire asupra acurateii soluiei numerice a unei probleme; acest ultim scop face obiectul analizei numerice i este, n general, dificil de atins.

0.1 Reprezentarea n virgula mobila

Fie x i x numere reale, x fiind interpretat ca o aproximare a lui x. Vom prezenta doua masuri naturale ale calitaii aproximarii. Eroarea absoluta (cu care x aproximeaza x) se definete prin _ = |x - x|. Daca x 6= 0, atunci eroarea relativa se definete prin = ____ x - x x ____ = _ |x| . Daca x Rn, se nlocuiete n relaiile de mai sus valoarea absoluta | | cu o norma vectoriala k k (vom discuta despre norme vectoriale n capitolul 1). Exemplul 0.1 Fie x = 1.0, i x = 0.999 o aproximare a sa. Atunci _ = 10-3 = 10-3. Daca y = 0.009 este o aproximaie a lui y = 0.01, atunci eroarea absoluta este aceeai ca n cazul precedent, _ = 10-3, dar eroarea relativa este de o suta de ori mai mare: = 10-1. Raportndu-se la valoarea lui x, eroarea relativa este mult mai adecvata pentru estimarea calitaii aproximarii x. _ Erorile de reprezentare apar datorita memorarii n calculator a numerelor reale

printr-o secvena finita de simboluri (cifre binare). Pentru a prezenta o estimare a acestor erori, sa reamintim bine cunoscuta reprezentare poziionala a numerelor reale. Fie N, 2, baza de numeraie; C = {0, 1, . . . , - 1}, mulimea cifrelor n baza , adica primele numere naturale. 0.1. REPREZENTAREA N VIRGUL A MOBIL A 3 Se tie ca orice numar x R poate fi scris unic sub forma unei secvene infinite x = san-1an-2 . . . a0.a-1a-2a-3 . . . , (0.1) care nu se termina printr-o secvena infinita de cifre egale cu -1 i n care ai C, iar s este semnul, s {+,-}. Valoarea lui x este x = s n-1 Xi=0 aii +

Xi=1 a-i-i!. (0.2) Convenim sa eliminam din scriere secvena infinita de zerouri finale, atunci cnd este cazul. Sa exemplificam relaiile (0.1) i (0.2). Exemplul 0.2 Numarul n baza 10 3.25 = 3 100 + 2 10-1 + 5 10-2 se reprezinta n baza 2 n modul urmator (verificai egalitatea): 11.01 = 1 21 + 1 20 + 0 2-1 + 1 2-2. n ambele baze, reprezentarile au un numar finit de cifre. n schimb, numarul exprimat simplu n baza 10: 0.1 = 1 10-1 are o reprezentare de lungime infinita n baza 2 (verificai din nou egalitatea): 0.0001100110011 . . . = (2-4 + 2-5)

Xk=0 2-4k. n baza 10, urmatoarele doua secvene 0.99999 . . . 1.00000 . . . reprezinta acelai numar real. Reprezentarile binare corespunzatoare sunt 0.11111 . . . 1.00000 . . . n ambele situaii, reprezentarea acceptata este 1.0000 . . . _ Evident, reprezentarea numerelor reale pe calculator poate avea doar un numar finit de cifre i deci, prin natura ei, este aproximativa. O buna aproximare printr-o secvena finita de lungime fixata trebuie sa asigure: un domeniu suficient de mare de numere reprezentate; o eroare relativa de reprezentare suficient de mica; o distribuie uniforma a erorii relative de reprezentare. 4 CAPITOLUL 0. CONCEPTE FUNDAMENTALE Un bun compromis n satisfacerea acestor cerine este dat de aa numitul Format Virgula Mobila (FVM). Definiia 0.1 Un Format VirgulaMobila (FVM) este definit de trei ntregi (, t, p), cu urmatoarea semnificaie: baza de numeraie ( 2); t precizia, adica numarul de cifre semnificative (lungimea mantisei); p numarul de cifre ale exponentului. Un numar n virgula mobila este o pereche (f, e), unde f = 0.f1f2 . . . ft, f1 6= 0, fi C este un numar fracionar cu semn (plus sau minus), normalizat (i.e. f1 6= 0), cu t cifre, denumit mantisa, iar e = e1e2 . . . ep este un ntreg cu semn, cu p cifre, numit exponent. Valoarea reala asociata numaru-

lui n virgula mobila (f, e) este x = f e. Fie L valoarea minima admisa a exponentului (de exemplu L = - . . . | {z } p , unde = - 1) i U cea maxima (de exemplu U = -L). Se observa ca toate numerele n virgula mobila x satisfac: L-1 = m |x| M = U(1 - -t) adica domeniul reprezentarii n virgula mobila este intervalul R = [-M,M]. Desigur, pentru majoritatea reprezentarilor pe calculator, = 2 (se mai folosete, de exemplu, = 16 i chiar = 10). Exemplul 0.3 Sa consideram FVM cu (, t, p) = (2, 2, 1). Atunci L = -1, U = 1, m = 2-2 = 0.2510, M = 2(1 - 2-2) = 1.510. Numerele reale care au o reprezentare exacta n acest FVM sunt: x1 = (-0.11,+1) = -1.510 x7 = (+0.10,-1) = 0.2510 x2 = (-0.10,+1) = -1.010 x8 = (+0.11,-1) = 0.37510 x3 = (-0.11, 0) = -0.7510 x9 = (+0.10, 0) = 0.510 x4 = (-0.10, 0) = -0.510 x10 = (+0.11, 0) = 0.7510 x5 = (-0.11,-1) = -0.37510 x11 = (+0.10,+1) = 1.010 x6 = (-0.10,-1) = -0.2510 x12 = (+0.11,+1) = 1.510 i vor fi folosite pentru reprezentarea (aproximativa) a tuturor numerelor reale din intervalul [-1.5, 1.5]. Reprezentarea geometrica a tuturor acestor numere pe axa reala este prezentata n figura 0.1. Numerele cu reprezentare exacta n virgula mobila sunt relativ uniform distribuite; mai precis, |xi-xi-1| / |xi| are aproximativ aceleai valori pentru orice i. _ Exemplul 0.4 Un FVM pe 32 bii poate fi urmatorul: (, t, p) = (2, 24, 7). Doi bii sunt atribuii reprezentarii semnelor mantisei i exponentului; deoarece primul 0.1. REPREZENTAREA N VIRGUL A MOBIL A 5 1 x11 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x12 1.5 0.5 -0.5 -1 -1.5 0 Fig. 0.1: Reprezentarea numerelor n virgula mobila din exemplul 0.301101001 - _exponent (7 bii) 010011001011100000001011 mantisa (23+1 bii) 6 semn numar (mantisa)

_-6

semn exponent

Fig. 0.2: Structura unui numar n virgula mobila, pentru (, t, p) = (2, 24, 7) bit al mantisei are ntotdeauna valoarea 1, semnul mantisei se memoreaza n locul acestui bit, economisind astfel un bit al reprezentarii. Un exemplu de numar n virgula mobila n acest format este prezentat n figura 0.2. Pentru acest FVM avem: L = -127, U = 127, m = 2-127 = (2-10)1323 10-38, M 1038 (putem aproxima 210 103). Aceasta arata ca FVM acopera un domeniu larg de numere, utiliznd un numar relativ mic de cifre binare. Acest exemplu este foarte apropiat de formatul standard IEEE pentru numere n virgula mobila n simpla precizie. n formatul din acest exemplu, numarul real 0.1 are mantisa 0.110011001100110011001100 i exponentul 10000011 (-3 n baza 10; prima cifra 1 a exponentului reprezinta semnul). Aadar numarul 0.1 este reprezentat aproximativ (vezi exemplul 0.2). _ Observaia 0.1 Definiia 0.1 nu permite reprezentarea exacta a numarului 0, acesta neputnd avea o mantisa normalizata. Practic, pentru a reprezenta 0, precum i unele simboluri speciale despre care se va vorbi mai trziu, se folosesc valori

dedicate ale exponentului, n afara intervalului [L,U]. De aceea, n standardul IEEE pentru simpla precizie, L = -126. _ Pentru a estima erorile efectuate la reprezentarea unui numar real n virgula mobila, sa consideram un FVM, adica (, t, p), i sa notam F = {x R | x are reprezentare exacta in VM} {0}. (0.3) Desigur, F este o mulime finita de numere raionale. Reprezentarea numarului real x [-M,M] n FVM nseamna aproximarea lui cu un numar x F. Aceasta aproximare poate fi exprimata printr-o funcie de rotunjire. Definiia 0.2 Daca (, t, p) este un FVM i F este mulimea definita n (0.3), atunci o funcie fl : [-M,M] F 6 CAPITOLUL 0. CONCEPTE FUNDAMENTALE care asociaza fiecarui x [-M,M] o unica reprezentare n virgula mobila x = fl(x) este numita funcie de rotunjire. Eroarea relativa de aproximare |x - fl(x)| |x| definita pentru orice x [-M,M] nenul este denumita eroare de reprezentare. Deoarece intervalul [-M,M] este o mulime infinita de numere reale, fiecare x F constituie reprezentarea n VM a unei mulimi infinite de numere din [-M,M]; suntem interesai sa gasim o margine superioara a erorii de reprezentare pentru o funcie de rotunjire data. Exista mai multe funcii de rotunjire. O vom prezenta doar pe cea mai simpla, denumita rotunjire prin taiere. n acest scop, sa scriem numarul x [-M,M] n forma (0.1) normalizata: x = f e = 0.f1f2 . . . ftft+1 . . . e = = 0.f1f2 . . . ft e 0.ft+1ft+2 . . . e-t = = f e + g e-t, unde fi C, f1 6= 0, f = 0.f1f2 . . . ft, g = 0.ft+1ft+2 . . . n mod evident: 1/ |f| < 1, 1/ | f| < 1, 0 |g| < 1. (0.4) Funcia de rotunjire prin taiere fl1 : [-M,M] F este definita prin x = fl1(x) = _ f e, pentru x 6= 0, 0, pentru x = 0. Pe scurt, reprezentarea n VM se obine prin taierea cifrelor mantisei normalizate a numarului x care se afla n afara formatului (de la poziia t + 1 ncolo). Utiliznd inegalitaile (0.4), este uor de stabilit o margine superioara a erorii de reprezentare introduse de fl1. ntr-adevar, pentru orice x [-M,M] \{0} avem = |x - fl1(x)| |x| = |fe - fe| |f|e = |g|e-t |f|e < -t -1 = -t+1. Aceasta formula arata ca, indiferent de valoarea numarului x, o margine pentru marimea erorii de reprezentare este determinata exclusiv de numarul de cifre ale mantisei (n baza de numeraie a FVM) i acesta este motivul pentru care t este numit precizia reprezentarii n virgula mobila. Numarul -t+1 este numit epsilon mana i reprezinta distana dintre 1 i urmatorul numar cu reprezentare n FVM (vezi problema 0.5). 0.2. ARITMETICA N VIRGUL A MOBIL A 7 Pe majoritatea calculatoarelor, numerele n virgula mobila au o precizie fixata. Multe calculatoare au, de asemenea, posibilitatea de a manipula numere n virgula mobila cu aproximativ 2t bii pentru mantisa; astfel de numere sunt numite n dubla precizie. De exemplu, n standardul IEEE, numerele n dubla precizie sunt

memorate pe 64 bii, cu t = 53 i p = 10 (un bit suplimentar este dedicat memorarii semnului exponentului). Pentru toate funciile de rotunjire folosite, marginea superioara a erorii de reprezentare are forma -t, (0.5) unde este un numar de ordinul unitaii. Din (0.5) rezulta existena unui numar astfel nct x = fl(x) = x(1 + ), || -t, (0.6) ceea ce este un alt mod de exprimare a erorii de reprezentare. Cele t cifre ale mantisei sunt numite cifre semnificative ale numarului real reprezentat. n baza de numeraie zecimala, numerele reprezentate n simpla precizie conform standardului IEEE (t = 24) au 7 cifre semnificative (numaram 3 cifre zecimale pentru 10 cifre binare), iar cele n dubla precizie (t = 53) au 16 cifre semnificative; n consecina, eroarea maxima de reprezentare este de aproximativ 10-7, respectiv 10-16 (anume chiar epsilon mana). O prezentare detaliata a standardului IEEE poate fi gasita n [?].

0.2 Aritmetica n virgula mobila

Calculatoarele cu hardware dedicat operaiilor n virgula mobila sunt prevazute cu un set de instruciuni pentru implementarea unor operaii cu numere n virgula mobila ca, de exemplu, adunarea, scaderea, nmulirea sau mparirea. Trebuie subliniat ca operaiile menionate difera de cele matematice corespunzatoare deoarece rezultatul lor aparine ntotdeauna mulimii finite F a numerelor n virgula mobil a. Aadar operaiile aritmetice nu pot fi executate exact. Eroarea introdusa de operaiile aritmetice n virgula mobila se numete eroare de rotunjire. Consecinele pot fi foarte importante; exista posibilitatea ca erorile de rotunjire sa se acumuleze , n calcule lungi, valorile finale sa fie afectate, chiar pna la a le face inutilizabile. De aceea este de dorit ca fiecare algoritm sa fie analizat pentru a vedea n ce masura erorile de rotunjire afecteaza rezultatele; n general, aceasta este o sarcina dificila. Exemplul 0.5 Consideram FVM cu (, t, p) = (10, 3, 1). Adunnd exact numerele 1.23 i 20.5, amndoua reprezentabile exact n FVM ales, se obine 21.73. Rotunjit prin taiere, rezultatul n VM este 21.7, deci diferit de cel exact. _ Analiza erorilor de rotunjire se bazeaza pe cunoaterea marginilor superioare ale erorilor ce apar n operaiile n virgula mobila. Pentru majoritatea calculatoarelor este valabil urmatorul model al erorilor asociate operaiilor n virgula mobila, bazat pe evaluarea (0.6): notnd cu fl(xy), fl(x/y) i fl(x+y) produsul, ctul, respectiv suma calculate ale numerelor n virgula mobila x i y, atunci, ntr-un FVM cu t cifre avem fl(x op y) = (x op y)(1 + ), || -t, (0.7) 8 CAPITOLUL 0. CONCEPTE FUNDAMENTALE unde op poate fi +, sau /, iar este un numar de ordinul unitaii. Modelul (0.7) este obinut presupunnd ca x op y este calculat exact, apoi rezultatul este transformat n FVM printr-o funcie de rotunjire. n realitate, lucrurile nu stau chiar aa; unitaile specializate pentru calculul n VM nu obin rezultatul exact, dar se comporta ca i cum l-ar obine, lucrnd pe baza unor algoritmi nebanali, a caror cunoatere nu este necesara pentru nelegerea algoritmilor din aceasta lucrare i a caror prezentare depaete cadrul problematicii propuse. n completarea relaiei (0.7), trebuie sa menionam ca, atunci cnd o operaie n virgula mobila produce un numar cu un modul prea mare (> M), apare eroarea numita de depare superioara (overflow). Cnd rezultatul este prea mic n valoare absoluta (< m, dar nenula), eroarea se numete de depare inferioara (underflow). Desigur, orice algoritm bine conceput trebuie sa specifice cum se procedeaza n eventualitatea unor depari , mai ales, sa ncerce evitarea lor (vom explica n capitolul urmator tehnica folosita scalarea). Deparea inferioara nu constituie de regula o eroare grava, de aceea majoritatea calculatoarelor atribuie automat rezultatului valoarea zero. n cazul unei depari superioare, de obicei calculele sunt oprite sau, cel puin, este afiat un mesaj de avertisment. n standardul IEEE pentru virgula mobila, exista o valoare speciala, numita Inf (infinit), care este atribuita

rezultatului n cazul unei depari superioare; calculele continua cu aceasta valoare; rezultatele se obin conform regulilor uzuale de lucru cu infinitai. O alta valoare speciala NaN (Not a Number) este atribuita rezultatelor nedefinite, ca 0 , 0/0, /; o operaie implicnd NaN are ntotdeauna ca rezultat NaN. Relaia (0.7) garanteaza ca o operaie aritmetica introduce erori relative mici, de ordinul -t (adica al lui epsilon mana). O problema fundamentala a calculului numeric este evaluarea marimii erorii ce afecteaza rezultatul n cazul unei secvene de operaii. Pentru a aborda problema, sa consideram doua exemple n care apar erori numerice mari, dar din cauze esenial diferite. Lucramn FVM cu (, t, p) = (10, 3, 1). Pentru a evita confuziile, vom nota cu ., ., . i . adunarea, scaderea, nmulirea, respectiv mparirea n VM; deci x+ y este suma exacta, iar x. y = fl(x+ y) este suma calculata n VM. Exemplul 0.6 n calculul radacinilor polinomului de gradul al doilea ax2 + bx + c, cu a 6= 0, este necesar calculul expresiei b2 - 4ac. Considernd b = 3.34, a = 1.22, c = 2.28, avem b2 -4ac = 0.0292, n timp ce, rotunjind prin taiere, b.b = 4.a.c = 11.1, deci b.b-4.a.c = 0. Rezultatul calculat are toate cifrele semnificative eronate, iar eroarea relativa aferenta este egala cu 1; totu, pentru fiecare operaie n parte, eroarea relativa este mai mica dect 10-2. _ Exemplul 0.7 Daca polinomul de gradul II are radacini reale, acestea se calculeaza de obicei utiliznd formulele x1 = -b - b2 - 4ac 2a , x2 = -b + b2 - 4ac 2a . (0.8) Lund b = 10.1, a = 0.0123, c = 32.4, valoarea exacta rotunjita la 3 cifre semnificative a lui x2 este -3.22. Efectund calculele n formatul ales, obinem _ = b.b.4.a.c = 100 (n loc de 100.41, dar eroarea relativa e nca de ordinul 0.2. ARITMETICA N VIRGUL A MOBIL A 9 10-3); dar -b . SQRT (_) = -0.1, n timp ce -b + b2 - 4ac = -0.0792, eroarea relativa fiind acum 0.26. Valoarea calculata a radacinii x2 este -4.06, n timp ce valoarea exacta este -3.22; din nou toate cifrele semnificative ale rezultatului sunt eronate. _ Se observa ca, n ambele exemple, erorile mari apar dupa scaderea a doua numere de valori apropiate. Se produce o anulare catastrofala, adica o pierdere completa a cifrelor semnificative ale rezultatului. n primul caz anularea trebuie pusa integral pe seama operaiei matematice de scadere; problema calculului b2 - 4ac este cauza erorilor, i nu algoritmul de calcul. n schimb, n al doilea caz, algoritmul de calcul al radacinilor este de vina, deoarece nu evita scaderea a doua numere apropiate, dei aceasta este posibil, dupa cum vom vedea puin mai trziu. Sa studiem nti mai amanunit ce se ntmpla la scaderea a doua numere apropiate. Exemplul 0.8 Consideram doua numere reale, x i y, de acelai ordin de marime (cu x > y, pentru simplitate), ale caror prime k cifre coincid, cu urmatoarele reprezentari (exacte) n baza (d1 6= 0): x = 0.d1d2 . . . dkdk+1 . . . dt1 e, y = 0.d1d2 . . . dkck+1 . . . ct0 e. Rotunjind prin taiere, reprezentarile lor ntr-un FVM cu (, t, p) sunt x = fl(x) = 0.d1d2 . . . dkdk+1 . . . dt e, y = fl(y) = 0.d1d2 . . . dkck+1 . . . ct e. Diferena lor, calculata n VM, este x . y = 0.f1 . . . ft-k0 . . . 0 -k+e. Observam ca x - y = x . y, deci scaderea se efectueaza fara erori. n schimb, rezultatul scaderii cu valorile exacte ale operanzilor este x - y = 0.f1 . . . ft-k10 . . . 0 -k+e, iar eroarea relativa asociata lui este ____ (x - y) - (x - y)

x - y ____ -t+1+e -k+e = -t-1+k. n concluzie, observam ca operanzii scaderii sunt afectai de erori relative de reprezentare de ordinul -t-1, n timp ce rezultatul ei are o eroare relativa de ordinul -t-1+k; atunci cnd x i y au multe cifre semnificative identice, deci k aproape de t, (i acelai ordin de marime) eroarea asociata rezultatului scaderii poate deveni uriaa. _ Exemplul 0.8 arata ca adunarea (scaderea) nu introduce erori mari prin ea nsa, ci poteneaza n anumite cazuri erorile operanzilor. De aceea, scaderea numerelor apropiate trebuie evitata. Pentru aceasta, daca este posibil, algoritmul de calcul este cel care trebuie modificat. 10 CAPITOLUL 0. CONCEPTE FUNDAMENTALE Exemplul 0.9 Am constatat, n exemplul 0.7, ca formulele (0.8) nu sunt cele mai bune din punct de vedere numeric, mai ales cnd b2 4ac, i deci |b| _. Pentru a evita scaderea unor numere apropiate, se pot folosi formulele x1 = -b - sgn(b)b2 - 4ac 2a , x2 = -2c b + sgn(b)b2 - 4ac . (0.9) Utiliznd n (0.9) valorile numerice din exemplul 0.7, se obine, n FVM de lucru, un rezultat cu toate cifrele semnificative exacte. _

0.3 Condiionarea problemelor de calcul

Orice problema de calcul numeric impune obinerea unor rezultate numerice, pornind de la date de intrare numerice, astfel nct rezultatele sa poata fi interpretate ca o aproximaie a soluiei unei probleme matematice pentru datele de intrare respective. Pentru ca o astfel de problema sa fie bine definita, trebuie asigurate existena unicitatea soluiei. n acest caz, o problema de calcul numeric poate fi ntotdeauna descrisa ca evaluare a unei funcii f : D Rn . Rm (0.10) ntr-un punct x D dat. Cele n componente ale argumentului constituie datele de intrare, iar cele m componente ale vectorului f(x) sunt rezultatele sau datele de iere. Desigur, aplicaia f este de cele mai multe ori definita implicit iar descoperirea unei cai prin care calculul valorii f(x) devine posibil echivaleaza cu rezolvarea, printr-un algoritm specific, a problemei de calcul considerate. Exemplul 0.10 a) Fie D o mulime de trei numere reale x=. a b c. . D = {x R3 | a 6= 0, b2 - 4ac 0} R3. Rezolvarea ecuaiei de gradul II ay2 + by + c = 0 este o problema numerica bine definita, deoarece pentru orice x D exista un unic vector y = f(x) = _ y1 y2 _ = . ... -b - sgn(b)b2 - 4ac 2a -2c b + sgn(b)b2 - 4ac . ....

R2, care este soluia problemei. b) Calculul integralei Zba

e-t2 dt, 0.3. CONDI IONAREA PROBLEMELOR DE CALCUL 11 unde a, b R sunt date (a 6= b), este de asemenea o problema numerica bine definita. ntr-adevar, pentru datele de intrare x = _ a b _ D = R2, exista i este unica valoarea integralei y R, dei integrala nedefinita R e-t2 dt nu este exprimabila prin funcii elementare. _ Abaterea soluiei calculate faa de soluia exacta a unei probleme numerice poate avea doua surse esenial diferite, legate de problema n sine , respectiv, de algoritmul de calcul utilizat. De prima sursa de erori numita condiionarea problemei ne ocupam n continuare, de cea de-a doua stabilitatea algoritmului n paragraful urmator. Condiionarea problemei caracterizeaza sensibilitatea soluiein raport cu perturbat iile datelor de intrare. n practica este cunoscuta doar o aproximaie x a datelor de intrare x , n cel mai bun caz, presupunnd ca toate calculele se efectueaza exact, putem calcula f(x) n loc de f(x). Daca funcia f definind problema noastra este prea sensibila la variaii ale argumentului, f(x) i f(x) pot diferi semnificativ chiar n cazul unei erori relative mici kx - xk / kxk a datelor de intrare (k k este o norma adecvata). O astfel de problema este numita rau condiionata. Daca ncercam rezolvarea unei probleme rau condiionate pornind de la date inexacte, atunci soluia obinuta va fi nsoita de erori mari indiferent de felul n care este calculata ! Definiia 0.3 Condiionarea numerica sau sensibilitatea locala a unei probleme f : D Rn Rm ntr-un punct x D este exprimata de amplificarea erorii relative (x) = kf(x) - f(x)k kf(x)k kxk kx - xk , (0.11) pentru x 6= 0 i f(x) 6= 0. Cnd (x) este mic (de ordinul unitaii, de exemplu) problema este numita bine condiionata n punctul x. Altfel, problema este rau condiionata. Observaia 0.2 Daca f este Lipschitz continua, i.e. exista L astfel nct kf(x) - f(y)k Lkx - yk, atunci (x) L kxk kf(x)k , iar daca f este de clasa C1 iar x este apropiat de y, atunci L se poate lua kf(x)k, unde f este derivata lui f n punctul x. _ Subliniem faptul ca condiionarea este o proprietate locala. De obicei, totu, o problema este numita bine condiionata daca este bine condiionata n orice punct x D; de asemenea, este numita rau condiionata, daca exista puncte x D n care este rau condiionata. Exemplul 0.11 Problema calculului sumei a doua numere x, y R poate fi bine sau rau condiionata funcie de valorile lui x i y (datele de intrare). (Aici 12 CAPITOLUL 0. CONCEPTE FUNDAMENTALE f(x, y) = x + y, f : R2 . R; convenim sa scriem i f(x, y) n loc de f(_ x y _), cum ar cere (0.10).)

Presupunem ca x, y sunt aproximari ale lui x, respectiv y, afectate de erori relative de acelai ordin de marime, ; mai precis, x = x + xx, cu |x| 1, y = y + yy, cu |y| . Eroarea relativa asociata sumei este (calculul sumei se face exact) = |x + xx + y + yy - (x + y)| |x + y| = |xx + yy| |x + y| . (0.12) Daca x i y au acelai semn, atunci |xx| + |yy| |x| + |y| i suma este afectata de o eroare de acelai ordin de marime ca i operanzii; n acest caz, adunarea este bine condiionata. Daca x i y au semne diferite, este posibil (atunci cnd x i y au i ele semne diferite) ca = max(|x|, |y|) |x + y| sa aiba acelai ordin de marime. Dar daca |x + y| max(|x|, |y|), ceea ce se ntmpla atunci cnd x i y au valori apropiate, atunci . n acest caz, problema calculului sumei este rau condiionata. Exemplele 0.6, 0.7, 0.8 ilustreaza aceasta situaie. Pentru a vedea cte subtilitai ascunde calculul aparent simplu al unei sume, cititorul este invitat sa consulte [?]. _

0.4 Stabilitatea numerica a algoritmilor

Pentru a rezolva o problema de calcul numeric definita de funcia (0.10), un calculator executa o secvena (finia) bine precizata de operaii denumita algoritm. n general exista mai muli algoritmi pentru rezolvarea unei probleme. Un algoritm f pentru problema f produce un raspuns unic determinat pentru date de intrare fixate i deci poate fi exprimat matematic printr-o funcie f : D F Rn . Rm. Deoarece execuia unui algoritm se face folosind numere n FVM i calculele sunt nsoite de erori, este clar ca f(x) este de regula diferit de f(x). De asemenea, nu ne putem atepta ca algoritmul f sa calculeze soluia unei probleme rau condiionate mai precis dect o garanteaza datele de intrare. Totu, e de dorit ca f sa nu introduc a erori exagerat de mari. Noiunea de stabilitate numerica exprima marimea erorilor numerice introduse de un algoritm, n ipoteza ca datele iniiale sunt exacte. 0.4. STABILITATEA NUMERICA A ALGORITMILOR 13 r r 6 ? r@ @ @ @ @ RrI f f f x x f(x) f(x) = f(x) Date de iere Date de intrare

Eroare nainte Eroare napoi Fig. 0.3: Erori nainte i napoi Definiia 0.4 Un algoritm f, destinat rezolvarii problemei f, este numeric stabil daca una dintre urmatoarele doua condiii alternative este ndeplinita: i) f(x) este aproape de f(x) pentru orice intrare x, adica soluia calculata aproximeaza bine soluia exacta. ii) pentru orice intrare x, exista un x D apropiat de x astfel nct f(x) sa fie egal cu f(x), adica soluia calculata de algoritmul f cu date de intrare exacte este egala cu soluia exacta pentru nite date de intrare uor perturbate. Altfel, algoritmul este numeric instabil. Cele doua condiii sunt similare, doar ca prima se formuleaza n spaiul datelor de iere, iar a doua n spaiul datelor de intrare, dupa cum se poate remarca n figura 0.3; n mod plastic, eroarea (absoluta) f(x) - f(x) este numita eroare nainte, deoarece corespunde sensului de calcul al algoritmului, iar x - x eroare napoi, deoarece gasirea unui x care sa satisfaca ii) nseamna ntoarcerea n spaiul datelor de intrare, ulterior aplicarii algoritmului. Analiza stabilitaii numerice a unui algoritm nseamna cuantificarea erorilor din definiia 0.4; evaluarea k f(x)-f(x)k este caracteristica analizeinainte (directe); evaluarea kx-xk definete analiza napoi (inversa). Noiunea vaga aproape se poate reexprima prin cea de eroare relativa mica (noiune destul de vaga i ea); n calculul numeric se folosesc deseori astfel de exprimari. n mod sigur, o eroare relativa de ordinul erorii de rotunjire (introduse de (0.7)) caracterizeaza un algoritm numeric stabil 1: soluia este calculata cu precizia intrinseca a FVM utilizat. Este uor de aratat ca utilizarea unui algoritm stabil la rezolvarea unei probleme bine condiionate conduce la un rezultat de nalta acuratee 2. ntr-adevar, din definiia 0.4 varianta ii), pentru intrarea exacta x exista x astfel nct eroarea relativa este (sa zicem) de ordinul erorii de rotunjire kx - xk kxk -t1n

continuare, vom spune algoritm stabil n loc de algoritm numeric stabil. atenia asupra sensurilor diferite pe care le au n calculul numeric termenii precizie acuratee, aproape sinonimi n limbajul uzual. Precizia se refera la numarul de cifre semnificative din FVM, iar acurateea la marimea erorii dintre rezultatul calculat numeric i cel exact.2Atragem

14 CAPITOLUL 0. CONCEPTE FUNDAMENTALE f(x) = f(x). (0.13) Problema fiind bine condiionata, din (0.11) rezulta ca kf(x) - f(x)k kf(x)k = kx - xk kxk -t, (0.14) unde i sunt de ordinul unitaii. Deci, din (0.13) i (0.14), kf(x) - f(x)k kf(x)k -t, adica un algoritm stabil nu introduce erori suplimentare semnificative n rezolvarea unei probleme bine condiionate. n mod similar, se poate observa ca, n alte situaii (de exemplu pentru probleme rau condiionate sau pentru algoritmi instabili), marimea erorii asociate rezultatului nu poate fi apreciata. Cnd un algoritm stabil este folosit pentru a rezolva o problema rau condiionata, nu exista nici o garanie ca f(x) i f(x) au valori apropiate , dei f(x) este (aproximativ) egal cu f(x), diferena dintre f(x) i f(x) poate fi semnificativa. Cnd un algoritm instabil este folosit pentru rezolvarea unei probleme bine condiionate, soluia calculata f(x) pentru date exacte de intrare este soluie exacta a problemei cu x departe de x, i tot aa este f(x) de f(x). n sfrt, nu e nici o sperana de a obine erori mici atunci cnd un algoritm instabil este utilizat pentru o problema rau condiionata. Exemplul 0.12 Revenim la problema calculului sumei, f : R2 . R,

f(x, y) = x + y. Problema poate fi bine sau rau condiionata n funcie de datele de intrare (vezi exemplul 0.11). Algoritmul de calcul al sumei n virgula mobila f : R2 . R este f(x, y) = x . y = fl(x + y), unde fl este o funcie de rotunjire care respecta relaia (0.7), iar x i y sunt numere n FVM; deci, n conformitate cu (0.7), f(x, y) = x(1 + ) + y(1 + ), cu || de ordinul -t, adica suma calculata este suma exacta a operanzilor uor perturbai, i deci algoritmul de sumare este stabil. _ Exemplul 0.13 Sa analizam acum algoritmul de calcul al marimii f(a, b, c) = b2 - 4ac. Presupunem ca a, b, c sunt numere n FVM. n conformitate cu (0.7) avem f(a, b, c) = b . b . 4 . a . c = [b2(1 + 1) - 4ac(1 + 2)](1 + 3), cu |1|, |2|, |3| de ordinul -t; am presupus ca 4.a se calculeaza fara erori, ceea ce e adevarat n baza 2, dar nu i n baza 10. 0.5. CALITA ILE UNUI ALGORITM NUMERIC 15 Definind = a(1 + 2), b = bp(1 + 1)(1 + 3), c = c(1 + 3), constatam ca f(a, b, c) = b2 - 4c, i , b, c sunt aproape de a, b, respectiv c (n sensul |-a|/|a| de ordinul -t etc.). Condiia ii) a definiiei 0.4 este ndeplinita, deci algoritmul este stabil. _ Exemplul de mai sus este o ilustrare foarte simpla a analizei inverse a erorilor de rotunjire ale unui algoritm. n aceasta tehnica se utilizeaza limitele (0.7) ale erorilor introduse de operaiile n virgula mobila pentru a demonstra ca soluia calculata a unei probleme este soluia exacta a problemei cu date de intrare uor perturbate. O astfel de demonstraie garanteaza ca algoritmul este numeric stabil , pentru probleme bine condiionate, sunt asigurate erori relative mici ale rezultatelor calculate. Pentru probleme nebanale, a arata ca un anume algoritm este stabil poate fi o sarcina dificila. Exista foarte puini algoritmi pentru care exista o demonstraie completa a stabilitaii numerice. Totu, muli algoritmi importani au fost validai n practica printr-o experiena de zeci de ani. Cum spunea Wilkinson: scopul principal al analizei erorilor nu este de a stabili margini precise, ci de a evidenia instabilitaile poteniale ale unui algoritm, daca ele exista, , prin aceasta, de a gasi o cale de mbunataire a algoritmului [IV]. n aceasta lucrare vom fi interesai mai mult de prezentarea celor mai buni algoritmi care rezolva o problema, i mai puin de demonstrarea aproape ntotdeauna extrem de tehnica a stabilitaii lor numerice.

0.5 Calitaile unui algoritm numeric

Pentru a ncheia acest capitol, sa precizam criteriile dupa care se apreciaza calitatea unui algoritm numeric. Numarul de operaii. Timpul de execuie al unui program pe un calculator precizat este o caracteristica de prim ordin a acestuia. De regula, un program se executa de mai multe ori, pentru a rezolva o anume problema pentru diverse date de intrare; timpul de execuie permite aprecierea numarului de soluii care se pot obine ntr-un anumit timp, de obicei impus. Desigur, este de dorit a estima timpul de execuie al unui program nainte de crearea sa efectiva, numai pe baza algoritmului implementat de program. O buna masura este numarul de operaii aritmetice efectuate; n algoritmii numerici ele constituie de obicei partea majoritara a operaiilor, cele cu ntregi sau logice avnd o pondere mica, att ca numar, ct i ca durata de execuie. Numim flop o operaie aritmetica elementara (adunare, scadere, nmulire, mp arire). Numarul de operaii al unui algoritm este numarul de flopi necesari obinerii rezultatului. Trebuie precizat ca dei numarul de operaii poate indica doar cu aproximaie timpul de execuie pe un calculator dat, n schimb este o foarte buna masura pentru compararea a doi algoritmi.

16 CAPITOLUL 0. CONCEPTE FUNDAMENTALE De regula, numarul de operaii Nop al unui algoritm e funcie de dimensiunea problemei care, de multe ori, poate fi apreciata prin numarul datelor de intrare, Nop = f(n). n calculul numeric, de obicei f este un polinom (de grad mic), f(n) = a0nk + a1nk-1 + . . . + ak. Pentru ca f poate avea o expresie complicata, se pastreaza doar termenul cel mai semnificativ i se scrie Nop a0nk. O astfel de aproximare este cu att mai buna cu ct n este mai mare. Pentru aprecieri pur calitative, vom omite a0 i vom scrie3 Nop = O(nk). Memoria ocupata. Pentru execuia unui algoritm (program) este necesara memorarea datelor de intrare, rezultatelor, precum i a altor valori intermediare. Numarul de elemente n FVM necesare n acest scop se numete memoria ocupata de algoritm. n majoritatea cazurilor, datele de intrare nu mai sunt necesare la terminarea algoritmului. Spaiul de memorie ocupat de ele poate fi utilizat pe parcursul execuiei algoritmului pentru a memora rezultate pariale /sau finale. n acest caz se spune ca efectuam calculele pe loc. Stabilitatea numerica, discutata n paragraful anterior, arata acurateea rezultatelor obinute de algoritmul numeric (n ipoteza ca datele iniiale sunt exacte). Aceste trei criterii trebuie corelate cu viteza calculatorului, memoria disponibila, numarul de cifre semnificative al FVM utilizat. Desigur, nu trebuie uitata nici un moment condiionarea problemei, care influent eaza i ea acurateea rezultatului. Intereseaza n special performanele algoritmului pentru probleme rau condiionate, adica atunci cnd erorile datelor de intrare sunt mult amplificate. n orice caz, calculul soluiei e bine a fi nsoit de determinarea (sau estimarea) condiionarii problemei, adica de calculul unei cantitai de tip (0.11). Putem adauga astfel un al patrulea criteriu de apreciere a unui algoritm: Siguranan funcionare capacitatea de a semnala situaiile n care rezultatul poate fi afectat de erori importante datorate relei condiionari a problemei. Decizia de a utiliza sau nu un astfel de rezultat revine utilizatorului sau unui program expert.

0.6 Implicaiile arhitecturii calculatoarelor asupra organizarii algoritmilor

n consideraiile din seciunea precedenta am presupus calculatorul pe care se vor implementa algoritmii ca avnd arhitectura clasica von Neumann, schiata n figura 0.4a; pe un astfel de calculator, n principiu, pentru fiecare operaie aritmetica se aduc operanzii din memoria M n unitatea centrala UC, se executa operaia rezultatul este depus napoi n M. Cu acest mod de operare, timpul de execuie e dictat esenialmente de numarul de operaii n virgula mobila, durata traficului ntre M i UC fiind proporionala cu numarul de flopi. n ultimele doua decenii au aparut numeroase tipuri de arhitecturi pe care timpul de execuie a unui algoritm nu mai este proporional cu numarul de operaii n3Se

0.6. IMPLICA IILE ARHITECTURII CALCULATOARELOR 17 UC M ? 6 UCS UCV M ? 6 MR UC (a) (b) (c) MP ? 6

scrie f(n) = O(g(n)) daca exista doua constante c1, c2 astfel nct c1g(n) f(n) c2g(n).

? 6 Fig. 0.4: Arhitecturi de calculatoare: (a) von Neumann; (b) vectoriala; (c) cu memorie ierarhica virgula mobila. Vom exemplifica n continuare cu doua arhitecturi larg raspndite, n special n gama calculatoarelor de mare performana. Calculatoarele vectoriale au doua (tipuri de) unitai de calcul, ca n figura 0.4b. Una dintre unitai UCS este obinuita; ea executa operaii scalare, adica operaiile aritmetice uzuale. Cealalta UCV este dedicata operaiilor vectoriale, adica unor operaii aritmetice de acelai tip repetate pentru mai multe perechi de date; de exemplu, adunarea a n perechi de numere, xi + yi, i 1 : n. Daca pe un calculator von Neumann nu e nici o diferena de viteza ntre astfel de operaii, pe calculatoarele vectoriale se executa mult mai rapid operaiile vectoriale; explicaia e relativ simpla: UCV e astfel construita nct datele o parcurg ca pe o banda rulanta cu mai multe posturi de lucru, fiecare pereche de date suferind la un moment dat o alta operaie intermediara (daca sunt p posturi de lucru, timpul de producere a unui rezultat este de aproximativ p ori mai mic). La aceasta se adauga i un mod de comunicaie sofisticat ntre M i UCV, astfel nct UCV sa poata fi n permanena alimentata cu date. n schimb, UCS prelucreaza doar o pereche de date la un moment dat. Deci, un algoritm eficient pe un calculator vectorial va conine mai ales operaii de tip vectorial. Calculatoarele cu memorie ierarhica au structura sugerata n figura 0.4c. Principala noutate a acestei arhitecturi este organizarea memoriei pe cel puin doua niveluri. Timpul de acces la memorie crete odata cu distana dintre unitatea central a i memoria respectiva; memoria rapida (MR) are un timp de acces sensibil mai mic dect cel al memoriei principale (MP), dar i o capacitate mult mai mica; aceste caracteristici provin mai ales din tehnologia de realizare, diferita de cea a memoriei principale (totu, n mod natural, o memorie mai mica este mai rapida). Transferurile ntre UC i MR dureaza puin n comparaie cu timpul de execuie al unei operaii n virgula mobila; n schimb, transferurile ntre MR i MP dureaza mai mult. De aceea, un algoritm eficient pe un calculator cu memorie ierarhica are un numar ct mai mic de transferuri implicnd MP, acesta fiind criteriul principal de 18 CAPITOLUL 0. CONCEPTE FUNDAMENTALE apreciere, i nu numarul de operaii. Caracteristica tipica a unui astfel de algoritm este organizarea calculelor la nivel de bloc de matrice, operndu-se intensiv cu date aflate ntr-o aceeai zona de memorie, suficient de mica pentru a ncapea n MR. Concluzia care se impune este ca utilizarea unui acelai algoritm pentru rezolvarea unei anume probleme pe toate arhitecturile ar fi ineficienta. Vom sugera, n capitolele urmatoare, metode de cretere a eficienei algoritmilor pe calculatoare vectoriale i cu memorie ierarhica. De obicei, este necesara doar o reorganizare a calculelor; alteori, nsa, algoritmi noi se dovedesc mult mai eficieni pe aceste arhitecturi. O alta clasa de arhitecturi de mare performana cuprinde calculatoarele paralele. Acestea au mai multe procesoare identice care pot lucra independent i care coopereaza printr-un mediu de comunicaie (legaturi directe sau memorie comuna). Algoritmii eficieni pe arhitecturi paralele au multe caracteristici ce i difereniaza net de cei secveniali; tratarea lor impune instrumente specifice, de aceea nu i vom aborda n prezenta lucrare, ci n una urmatoare, dedicata numai lor. Pentru o introducere n materie, cititorul interesat poate consulta capitolul 6 din [VI].

0.7 Probleme

P 0.1 Urmatorul exemplu arata ca adunarea n virgula mobila nu este asociativa. Sa consideram numerele x1 = 0.001, x2 = 1, x3 = -1, reprezentate ntr-un FVM cu _ = 10, t = 3. Ct de mare este eroarea relativa atunci cnd se calculeaza y = x1 + x2 + x3 ? P 0.2 Gasii o limita a erorii relative pentru calculul n virgula mobila al sumei y = x1 + x2 + x3; presupunei ca x1, x2, x3 sunt numere n virgula mobila. P 0.3 Sa consideram problema calculului soluiei ecuaiei liniare ax + b = 0, cu a, b R, a 6= 0. Pentru ce valori ale datelor de intrare a, b este aceasta problema rau condiionata ? Algoritmul pentru calculul soluiei este x = -b/a; este acest algoritm numeric stabil ?

P 0.4 Aceeai ntrebare pentru ecuaia (a1+a2)x+(b1+b2) = 0, n care datele de intrare sunt a1, a2, b1, b2 R. P 0.5 Se considera un FVM definit de (_, t, p). Care este distana ntre 1 i cel mai apropiat numar reprezentabil n virgula mobila, mai mare ca 1 ? P 0.6 Gasii limita (superioara) a erorii relative a funciei de rotunjire care asociaza fiecarui x [-M,M] cel mai apropiat numar n virgula mobila. P 0.7 Ce formula recomandai pentru calcululn virgula mobila: x2-y2 sau (x-y)(x+y) ? (Se presupune ca x i y sunt numere n FVM.)

Capitolul 1

Algoritmi elementari de calcul numeric

Acest capitol este dedicat prezentarii noiunilor matematice aflate la baza dezvolt arilor ulterioare, formularii problemelor de calcul pe care le vom rezolva, n diverse variante, pe ntreg parcursul lucrarii, precum i descrierii unor primi algoritmi numii ad-hoc elementari, unii folosii ca unelte mai trziu, alii deja rezolvnd probleme sau cazuri particulare ale unor probleme semnificative. Noiunile matematice aparin n mare majoritate algebrei liniare. Am ncercat o prezentare de sine statatoare, dar, desigur, cunotinele anterioare ale cititorului sunt binevenite. Fiecare seciune a capitolului are doua pari: prima, cu nuana teoretica, de parcurgere a unor definiii i proprietai fundamentale; a doua, de aspecte algoritmice, n care sunt prezentai i analizai algoritmi simpli, moduri de memorare a datelor, artificii numerice etc. Subtitlurile acestor din urma pari vor ncepe cu sigla AA. Principalii algoritmi prezentai rezolva urmatoarele probleme: produsul matriceal (cu diversele lui cazuri particulare: produsul scalar, produsul exterior, produsul matrice-vector), calculul normelor vectoriale i matriceale, rezolvarea sistemelor liniare triunghiulare i calculul valorilor i vectorilor proprii ai matricelor triunghiulare. Sunt prezentate modalitaile prin care se maresc performanele algoritmilor pe diverse arhitecturi de calculatoare. Capitolul se ncheie cu prezentarea rutinelor BLAS, extrem de utilizate n calculul numeric.

1.1 Vectori. Spaiul vectorial Rn

n aceasta lucrare vom utiliza de regula entitai (vectori i matrice) construite cu numere reale; majoritatea definiiilor i proprietailor sunt valabile i pentru numere complexe; vom face diferenierile necesare atunci cnd va fi cazul. Un numar real R va fi numit i scalar; scalarii vor fi notai de obicei cu litere greceti mici. 19 20 CAPITOLUL 1. ALGORITMI ELEMENTARI 6 - _________1 _ _ _ _ _ _ _ _+ x x1 x2 x3 (a)

6 _ _ _ _ _ _ _ _+ 6 _ _ _+ 1 1 1 e1 e3 e2 (b) Fig. 1.1: (a) Un vector n R3 i coordonatele sale; (b) vectorii unitate n R3 Vectori. Un vector real x de dimensiune n este o colecie de n numere reale dispuse ordonat ntr-o coloana x=. ... x1 x2 ... xn . .... , (1.1) numerele xi fiind numite componente (elemente, sau coordonate) ale vectorului x. n general, vom nota vectorii cu litere latine mici, iar elementele lor cu litera respectiv a i indicele poziiei. Pentru economie de spaiu tipografic, vom nota deseori x = [x1 . . . xn]T , unde xT = [x1 . . . xn] este vectorul linie cu aceleai elemente ca n (1.1), iar indicele superior T denota operaia de transpunere. Mulimea tuturor vectorilor de dimensiune n va fi notata cu Rn i va fi asimilat a cu spaiul real n-dimensional. n consecina, din punct de vedere geometric, un vector reprezinta segmentul orientat care unete originea spaiului real cu n dimensiuni cu punctul de coordonate (x1, . . . , xn), sau chiar numai acest din urma punct. Vectorul cu toate componentele nule va fi notat cu 0, dimensiunea sa reiend din context; geometric, acesta este originea spaiului n-dimensional. Pentru o mai buna nelegere, vom ilustra unele concepte n R2 sau R3; figura 1.1a prezinta un vector i semnificaia (de coordonate) a elementelor sale. Vectorii din Rn care au un element egal cu 1 i celelalte nule se numesc vectori unitate; ei vor fi notai ei = [0 . . . 0 | {z } i-1 10...0 | {z } n-i ]T , indicele aratnd poziia valorii 1. Spre exemplu, vectorii unitate din R3 sunt prezentai n figura 1.1b. Doi vectori sunt egali cnd toate componentele lor de acelai indice sunt egale; deci, daca x, y Rn, atunci x = y cnd xi = yi, i 1 : n. 1.1. VECTORI. SPA IUL VECTORIAL RN 21 -

_

____________: x y x+y -x x (a) (b) Fig. 1.2: (a) Suma a doi vectori n R2; (b) Produsul cu un scalar Introducem acum operaiile elementare cu vectori. Suma a doi vectori x, y Rn este vectorul z Rn definit prin zi = xi + yi, i 1 : n; aadar, suma se face pe componente. n acest fel sunt motenite toate proprietaile adunarii numerelor reale: 1. asociativitate (u + (v + w) = (u + v) + w); 2. comutativitate (u + v = v + u); 3. elementul neutru este vectorul nul (x + 0 = x); 4. opusul unui vector x este -x, adica vectorul cu elementele -xi, i = 1 : n (x + (-x) = 0). Astfel, Rn mpreuna cu operaia de adunare formeaza un grup comutativ. Produsul unui vector x Rn cu un scalar R este vectorul y = x Rn definit de yi = xi, i 1 : n; deci, produsul se face multiplicnd cu fiecare componenta a vectorului x. Produsul cu un scalar este o operaie externa pe Rn. Semnificaiile geometrice ale celor doua operaii sunt prezentate n figura 1.2; adunarea se face dupa regula paralelogramului, iar produsul cu un scalar modifica doar lungimea vectorului, pastrndu-i direcia. Mulimea Rn mpreuna cu operaiile de adunare i produs cu un scalar are structura de spaiu vectorial, adica, n afara structurii de grup comutativ faa de adunare, mai sunt satisfacute urmatoarele proprietai ale produsului cu un scalar: 1. 1 x = x; 2. (x) = ()x; 3. ( + )x = x + x; 4. (x + y) = x + y. Combinaie liniara. Fie X Rn o mulime avnd ca elemente vectorii 1 x1, x2, . . . , xp. Vectorul y def = 1x1 + 2x2 + . . . + pxp =p

Xi=1 ixi (1.2) se numete combinaie liniara a vectorilor din X cu coeficienii 1, 2, . . . , p R. Daca toi coeficienii sunt nuli, combinaia se numete triviala. Vectorii din X sunt liniar independeni daca nu exista o combinaie liniara netrivial a a elementelor lui X care sa fie nula. Daca o astfel de combinaie exista, vectorii din X sunt numii liniar dependeni.1Se

observa ca acum xi este un vector i nu un element de vector; aadar, folosim indicii pentru a numerota vectorii dintr-o mulime.

22 CAPITOLUL 1. ALGORITMI ELEMENTARI Daca vectorii sunt liniar dependeni, atunci cel puin unul dintre ei se poate exprima printr-o combinaie liniara a celorlali; i.e., daca Pp i=1 ixi = 0, atunci exista j 6= 0, i deci xj = -Pp i=1,i6=j (i/j)xi. Evident, ntr-o mulime de vectori independeni, nici unul dintre ei nu se poate exprima printr-o combinaie liniara a celorlali. De exemplu, vectorii unitate e1, . . . , en sunt liniar independeni. Daca X Rn este o mulime de vectori

liniar independeni i y = Pp i=1 ixi Rn este o combinaie liniara a acestora, atunci coeficienii combinaiei liniare sunt unici (demonstrai). Subspaiu liniar. O mulime S de vectori din Rn este numita subspaiu liniar al spaiului Rn daca sunt ndeplinite urmatoarele doua condiii: 1. x + y S, x, y S; 2. x S, R, x S. Aadar, orice combinaie liniara a unor vectori din S aparine tot lui S; altfel spus, S e invariant la combinaii liniare. Evident, orice subspaiu liniar conine vectorul nul (originea). Fie X Rn o mulime de vectori i S mulimea tuturor combinaiilor liniare ale vectorilor din X. Atunci S e un subspaiu liniar, numit subspaiul generat de X. De exemplu, n R3 doi vectori genereaza de regula un plan; daca vectorii sunt coliniari (adica exista scalarul a.. y = x), atunci subspaiul generat este o dreapta. Fie S Rn un subspaiu; o mulime de vectori B S este baza a subspaiului S daca: 1. elementele lui B sunt liniar independente; 2. S e generat de B. Aadar o baza conine numarul minim de vectori cu ajutorul carora se poate genera subspaiul. Daca B = {b1, . . . , bm}, atunci x S se scrie n mod unic n forma unei combinaii liniare a vectorilor din baza, x = Pm i=1 ibi. Numerele i se numesc componentele sau coordonatele, vectorului x n raport cu baza B. De exemplu, e1, . . . , en formeaza o baza pentru Rn, numita i baza canonica; componentele vectorului x, n sensul definiiei (1.1), sunt componentele n raport cu aceasta baza, deoarece evident x = Pn i=1 xiei. Un subspaiu are o infinitate de baze, dar toate au acelai numar de elemente. Evident, un vector x 6= 0 are coordonate diferite n raport cu aceste baze. Dimensiunea unui subspaiu, notata dimS, este numarul vectorilor din baza, adica numarul maxim de vectori din S liniari independeni sau, cum am menionat deja, numarul minim de vectori care genereaza S. De exemplu, Rn are dimensiunea n, numarul de vectori din baza canonica; un plan n R3 are dimensiunea 2. Doua subspaii S, T Rn se numesc complementare daca 1. S T = {0}. 2. Rn este generat de S T . 1.1. VECTORI. SPA IUL VECTORIAL RN 23 C C C C C C C C CC_ _ _ _ C C C C C C C

C CC _ _ _ _ ST 6 _ _ _ _+ _ _ _ _ __ _ _ _ _ Fig. 1.3: Subspaii complementare n R3: un plan S i o dreapta T n acest caz vom utiliza notaia Rn = S .T . Fiecare dintre cele doua subspaii este numit complementul celuilalt. Orice vector x Rn se poate exprima n mod unic prin x = s + t, cu s S, t T . De asemenea, dimS + dimT = n. De exemplu, n figura 1.3 sunt reprezentate un plan i o dreapta n R3, care constituie imaginile geometrice a doua subspaii complementare. Sa observam ca subspaiul complementar al unui subspaiu nu este, n general, unic. n exemplul din figura 1.3, orice dreapta care nu aparine planului este complementara acestuia. Spaiul vectorial complex Cn se definete analog cu spaiul Rn i are acelea proprietai, deoarece proprietaile corpului numerelor reale folosite mai sus sunt identice cu cele ale corpului numerelor complexe. Desigur, orice vector x Cn se poate scrie n forma x = u + iv, cu u, v Rn i unitatea imaginara. AA. Saxpy. Vom descrie acumn termeni algoritmici o operaie fundamentala cu vectori, anume y x + y, cu x, y Rn, R, operaie numita Saxpy2. Notaia , citita ia valoarea, are semnificaia de atribuire. Cu alte cuvinte, ntr-un program ce realizeaza operaia i n care vectorii x i y reprezinta variabile, vectorul calculat x + y este depus n variabila y, suprascriind valoarea iniiala a acesteia. Vom introduce direct i alte convenii de scriere a algoritmilor, cu premiza ca cititorul are noiuni elementare despre limbajele de programare de nivel nalt. Algoritmul 1.1 (Saxpy) (Se dau x, y Rn. Se calculeaza y x + y Rn.) 1. Pentru i = 1 : n 1. yi yi + xi2Notaia

provine din iniialele variabilelor folosite: x Plus y; n BLAS, iniiala S semnifica faptul ca calculele se efectueaza n Simpla precizie; ea este ataata n mod tradiional numelui operaiei.

24 CAPITOLUL 1. ALGORITMI ELEMENTARI Comentarii. Instruciunea Pentru i = 1 : n nseamna repetarea execuiei, pentru toate valorile indicate ale indicelui i, a instruciunilor ce i urmeaza (pna la prima instruciune aflata la acelai nivel cu Pentru). Instruciunile sunt referite prin secvene de numere cuprinznd (de la dreapta spre stnga) numarul din algoritm al instruciunii respective i numerele instruciunilor carora le este subordonata (de la cea mai apropiata la cea mai departata). n algoritmul Saxpy, prima instruciune este 1, a doua 1.1. Contoriznd operaiile executate de algoritmul 1.1, constatam ca fiecare execuie

a instruciunii 1.1 necesita 2 flopi (o nmulire i o adunare), deci, n total, sunt necesari Nop = 2n flopi. n continuare, Saxpy va fi privita ca operaie elementara i va fi apelata prin Saxpy(, x, y); ea face parte din grupul operaiilor de nivel 1, mpreuna cu alte operaii, dintre care unele vor fi prezentate ulterior3. Aa cum este normal, Saxpy i celelalte operaii de nivel 1 sunt executate mai eficient pe calculatoare vectoriale. De aceea, pe astfel de calculatoare, exista tendina de a scrie toi algoritmii n termeni de operaii de nivel 1 i nu prin operaii aritmetice elementare. _

1.2 Produs scalar. Norme. Ortogonalitate

Produsul scalar este o funcie f : Rn Rn . R cu proprietaile: 1. f(x, y) = f(y, x) (comutativitate); 2. f(x, y + z) = f(x, y) + f(x, z) (distributivitate); 3. f(x, y) = f(x, y); 4. f(x, x) 0 i f(x, x) = 0 x = 0 (pozitivitate). Produsul scalar standard n Rn, cel pe care l vom utiliza de obicei, se definete prin f(x, y) not = yT x, unde yT x def = Pn i=1 xiyi. Invitam cititorul sa verifice satisfacerea celor patru proprietai ale produsului scalar. Spaiul Rn mpreuna cu produsul scalar uzual este un spaiu euclidian (n el este valabila o geometrie similara cu cea din R2 i R3, cunoscuta din liceu). Norme. Prin norma se asociaza unui vector o marime (lungime). O norma vectoriala este o funcie : Rn R+, notata de obicei (x) = kxk, care satisface urmatoarele condiii: 1. kxk > 0, x Rn, x 6= 0 (pozitivitate); 2. kxk = || kxk, x Rn, R (omogenitate); 3. kx + yk kxk + kyk, x, y Rn (inegalitatea triunghiului). Se deduce imediat ca k0k = 0 i k - xk = kxk. Cea mai utilizata norma vectoriala este cea indusa de produsul scalar i se numete norma euclidiana sau norma 2: kxk2 = xT x = vuutn

Xi=1 x2 i . (1.3)3Numerotarea

nivelelor se face dupa exponentul lui n din expresia numarului de flopi necesari la execuie; operaiile de nivel 1 necesita O(n) flopi, cele de nivel 2 necesita O(n2) flopi etc.

1.2. PRODUS SCALAR. NORME. ORTOGONALITATE 25 &% '$ _ _ @ @_ _ @ @_ 1 bb 2 6 Fig. 1.4: Cercuri de raza 1 n R2, n normele 1, 2, Denumirea de norma 2 este justificata de faptul ca (1.3) este un caz particular de norma p (sau norma Holder). Pentru p 1, norma p se definete prin kxkp = n Xi=1 |xi|p!1/p . Alte cazuri particulare de norma p folosite curent sunt normele 1 i infinit,

definite, n ordine, prin kxk1 =n

Xi=1 |xi|, kxk = max i=1:n |xi|. Pentru a ilustra geometric cele trei norme de mai sus, figura 1.4 prezinta cercurile de raza 1 n R2, adica locul geometric al punctelor x R2 pentru care kxkp = 1, pentru p = 1, 2,. Doua norme pe Rn, sa zicem k kq i k kr, se numesc echivalente daca exista 1, 2 > 0 astfel nct pentru orice x Rn avem 1kxkq kxkr 2kxkq. (1.4) Oricare doua norme p sunt echivalente. De exemplu (demonstrai !): kxk kxk1 nkxk; kxk kxk2 nkxk; kxk2 kxk1 nkxk2. Ortogonalitate. Unghiul a doi vectori nenuli x, y Rn se definete prin = arccos(yT x/(kxk kyk)); geometric, acesta este chiar unghiul format de cei doi vectori n planul generat de ei. Doi vectori x, y Rn se numesc ortogonali daca produsul lor scalar este nul, xT y = 0; semnificaia geometrica este cea naturala: ntre cei doi vectori este un unghi drept; de aceea vom folosi i notaia x y. Vectorii u1, u2, . . . , up se numesc ortogonali daca sunt ortogonali doi cte doi, adica uT i uj = 0, i 6= j, i, j 1 : p. (1.5) 26 CAPITOLUL 1. ALGORITMI ELEMENTARI Daca, n plus faa de (1.5), vectorii ui au norme euclidiene unitare, kuik2 = 1, i = 1 : p, ei sunt numii ortonormali. Vectorii ortogonali sunt liniar independeni; justificarea e intuitiva: un vector ortogonal pe toi ceilali este ortogonal i pe orice combinaie liniara a lor. Orice subspaiu de dimensiune mai mare ca unu are o infinitate de baze ortonormale 4. De exemplu, baza canonica a Rn, e1, . . . , en, este ortonormala. Folosirea bazelor ortonormale este recomandabila nu numai datorita proprietailor matematice, dar i a acurateii numerice pe care o induc n calcule. Un mod simplu, dar nu i numeric stabil, de a construi o baza ortonormala, pornind de la o baza oarecare, este sugerat n problema 1.6 (algoritmul Gram-Schmidt); metode numeric stabile vor fi prezentate n capitolele 3 i 5. Teorema lui Pitagora se generalizeaza imediat n Rn: vectorii x, y Rn sunt ortogonali daca i numai daca kx + yk2 2 = kxk2 2 + kyk2 2. Noiunea de ortogonalitate poate fi extinsa la subspaii liniare. Vectorul x Rn este ortogonal pe subspaiul S Rn daca este ortogonal pe orice vector din S. Doua subspaii S, T Rn sunt ortogonale daca orice vector s S este ortogonal pe orice vector t T ; vom nota S T . Un subspaiu S Rn este numit complementul ortogonal al subspaiului T Rn daca cele doua subspaii sunt ortogonale i complementare. (x Rn, exista vectorii unici s S, t T astfel nct x = t + s i t s.) Se utilizeaza notaia S = T ; desigur, avem i T = S. Particularitai ale spaiului euclidian complex Cn. Produsul scalar uzual al vectorilor x, y Cn este definit de proprietai uor diferite de cele ale produsului scalar din Rn; mai precis, notnd cu complex conjugatul scalarului complex , proprietaile 1 i 3 devin: 1. f(x, y) = f(y, x); 3. f(x, y) = f(x, y).

Produsul scalar uzual n Cn se definete prin yHx = Pn i=1 xiyi. Doi vectori x, y Cn sunt ortogonali daca yHx = 0. Norma euclidiana k k : Cn R+ se definete prin kxk2 = xHx, x Cn, unde xHx = Pn i=1 |xi|2, iar || este modulul scalarului complex . AA. Calculul produsului scalar. Urmnd (1.3), produsul scalar se calculeaza astfel: Algoritmul 1.2 (DOT Calculul produsului scalar) (Se dau vectorii x, y Rn. Se calculeaza = yT x.) 1. 0 2. Pentru i = 1 : n 1. + xiyi Comentarii. Algoritmul are 2n operaii i face deci parte din grupul operaiilor de nivel 1. l vom apela prin = DOT(x, y).4n

general vom spune baze ortogonale n loc de ortonormale, presupunnd implicit ca normele vectorilor sunt unitare.

1.2. PRODUS SCALAR. NORME. ORTOGONALITATE 27 Datorita erorilor numerice, la execuie algoritmul DOT nu va calcula = yT x, ci o valoare , despre care se poate demonstra (vezi i problema 1.5): | - | nM|y|T |x| + O(2 M), (1.6) unde |x| este vectorul modulelor elementelor vectorului x. Eroarea nu este neaparat mica; daca |yT x| |y|T |x|, atunci eroarea relativa din (1.6) poate fi mare. _ AA. Calculul normelor. Normele 1 i se calculeaza uor. De exemplu, kxk se calculeaza astfel: Algoritmul 1.3 (Nrminf Calculul normei infinit a unui vector) (Se da x Rn. Se calculeaza kxk.) 1. norm 0 2. Pentru i = 1 : n 1. Daca |xi| > norm atunci norm |xi| Pentru calculul normei 2 a unui vector x Rn poate fi utilizat algoritmul 1.2, apelnd DOT(x, x), i apoi extragnd radicalul. Exista nsa posibilitatea ca, de kxk2 este reprezentabiln virgula mobila, xT x = kxk2 2 sa nu fie (de exemplu 1025 este reprezentabil n simpla precizie, dar 1050 nu) i atunci calculul lui xT x sa conduca la depare superioara. Similar poate aparea o depare inferioara, care antreneaza pierdere de precizie sau decizii eronate: kxk2 = 0 dei x 6= 0. Pentru a preveni acest eveniment care ar mpiedica obinerea rezultatului, se scaleaza vectorul x, adica se mpart toate elementele sale cu, de exemplu, kxk (se aduce astfel x la alta scara de marime). Daca x = x / kxk, atunci |xi| 1, i 1 : n, i deparea superioara este practic imposibila. (Apariia unor depari inferioare la ridicarea la patrat a unor elemente ale vectorului x nu este suparatoare, deoarece n acest caz rezultatul se aproximeaza cu zero.) Se obine urmatorul algoritm. Algoritmul 1.4 (Nrm2 Calculul normei 2 a unui vector) (Se da x Rn. Se calculeaza = kxk2, efectund o operaie de scalare.) 1. Se calculeaza = kxk 2. = 0 3. Pentru i = 1 : n 1. + (xi/)2 4. Comentarii. Se observa ca scalarea, care se efectueaza n instruciunile 1 i 3.1, ncarca algoritmul cu n flopi (2) i n comparaii (1); cu toate acestea, sigurana calculelor impune de regula utilizarea ei, cu excepia cazurilor n care informaiile apriorice despre date exclud apariia deparii. Un rafinament al algoritmului 1.4 este de a utiliza pentru scalare nu kxk, ci cea mai apropiata putere a bazei de numeraie a formatului virgula mobila utilizat (de regula 2). Scalarile din instruciunea 3.1 vor avea rezultate de acelai ordin de

marime ca n cazul scalarii cu kxk, deci nu va exista pericol de depare superioara, n schimb toate mparirile se vor efectua exact, neintroducndu-se nici un fel de eroare numerica suplimentara la calculul normei. _ 28 CAPITOLUL 1. ALGORITMI ELEMENTARI AA. Ortogonalitate numerica. Matematic, testul de ortogonalitate a doi vectori x, y Rn este foarte clar: se verifica daca xT y = 0. Numeric nsa, se ntmpla foarte rar ca DOT(x, y) sa fie exact 0; aceasta se datoreaza att erorilor numerice aparute n execuia algoritmului DOT, ct i erorilor de reprezentare asociate elementelor celor doi vectori. De aceea, pentru a considera doi vectori numeric ortogonali, ne mulumim cu condiia |DOT(x / kxk2, y / kyk2) | < cM, unde c 1 este o constanta mica, adica produsul scalar al vectorilor normalizai sa fie de acelai ordin de marime cu epsilon mana al formatului virgula mobila utilizat.

1.3 Matrice

Matrice. O matrice reala A este un tablou bidimensional (rectangular) de numere reale dispuse pe m linii i n coloane; notnd cu aij elementul matricei de pe linia i i coloana j, matricea arata astfel A=. ... a11 a12 . . . a1n a21 a22 . . . a2n ... ... ... am1 am2 . . . amn . .... (1.7) Daca m = n, matricea se numete patrata. Mulimea tuturor matricelor reale (complexe) cu m linii i n coloane va fi notata Rmn (respectiv Cmn). Pastram n continuare convenia de a ne referi la cazul complex doar atunci cnd este diferit de cel real. Se numete diagonala principala a matricei mulimea poziiilor de indici egali din tablou; pentru A Rnn, suma elementelor de pe diagonala principala se numete urma i se noteaza tr(A) def = Pn i=1 aii. Operaii. Definim acum cteva operaii elementare cu matrice: suma, produsul cu un scalar, transpunerea. Suma a doua matrice A,B Rmn este matricea C = A + B Rmn, definita prin cij = aij + bij ; aadar, suma se face adunnd elementele de pe poziii corespondente. Produsul unei matrice A Rmn cu un scalar R este matricea B = A Rmn, definita prin bij = aij , i = 1 : m, j = 1 : n. Cu aceste doua operaiisuma i produsul cu un scalarRmn are o structura de spaiu vectorial de dimensiune mn. O baza este Eij , i = 1 : m, j = 1 : n, unde Eij este matricea nula cu excepia elementului (i, j) egal cu 1. Transpusa unei matrice A Rmn este matricea B Rnm, notata B = AT , definita prin bij = aji. Propunem cititorului demonstrarea urmatoarelor proprietai simple ale operaiei de transpunere: 1.3. MATRICE 29 1. (AT )T = A, A Rmn; 2. (A + B)T = AT + BT , A,B Rmn; 3. (A)T = AT , A Rmn, R. Produsul matrice-vector. n funcie de modul de utilizare, o matrice poate fi interpretata n mai multe feluri. De exemplu, o matrice poate fi vazuta ca alaturare de vectori: A = [a1 a2 . . . an], (1.8)

cu a1, a2, . . . , an Rm notndu-se coloanele matricei A. Aceasta interpretare este utila n special n lucrul cu subspaii. Cu notaia (1.8), produsul dintre matricea A Rmn i vectorul x Rn este vectorul y Rm y def = Ax =n

Xj=1 ajxj , (1.9) i.e. combinaia liniara a coloanelor lui A cu coeficienii xj . Un caz particular este produsul dintre matricea A i vectorul unitate ej , care are ca rezultat coloana j a matricei: Aej = aj . Se poate observa ca produsul matrice-vector definete o transformare liniara f : Rn Rm, f(x) = Ax, adica o aplicaie cu proprietaile (evident satisfacute n cazul nostru): f(u + v) = f(u) + f(v), f(u) = f(u), u, v Rn, R. Matrice i subspaii liniare. Deoarece matricea A poate fi privita ca o mulime de vectori (coloane), se impune o notaie speciala pentru subspaiul generat de coloanele matricei, numit imaginea acesteia: ImA = {y Rm | x Rn astfel nct y = Ax}. (1.10) Un alt subspaiu interesant, de data asta n Rn, este cel al vectorilor avnd ca elemente coeficienii combinaiilor liniare nule ale coloanelor lui A, numit nucleul matricei A: KerA = {x Rn | Ax = 0}. (1.11) O proprietate fundamentala a acestor subspaii este data de Teorema 1.1 Daca A Rmn, atunci ImA i KerAT sunt subspaii ortogonale complementare n Rm, i.e. 1. ImA KerAT . 2. Rm = ImA . KerAT . Demonstraie. 1. Fie y = Ax ImA i z KerAT . Atunci yT z = xTAT z = 0. 2. Fie z ImA. Atunci xTAT z = 0, oricare x Rn, deci AT z = 0. _ Evident, teorema poate fi aplicata pentru AT , i deci avem ImAT KerA Rn = ImAT . KerA. 30 CAPITOLUL 1. ALGORITMI ELEMENTARI - _ _ _ _ _ __ y2 y3 y1 6 Q Q Q Q Qk (0,1,1) _ _ _ _ __ (1,0,1) (1,1,-1) KerAT ImA Fig. 1.5: KerAT este complementul ortogonal al lui ImA. Datele sunt cele din exemplul 1.1 Exemplul 1.1 Fie A = . 10 01 11. .. Atunci, S = ImA = {y R3 | y = .

x1 x2 x1 + x2 . ., x1, x2 R}, adica S este planul de ecuaie y3 = y1 + y2. T = KerAT = {y R3 | AT y = 0} = {y R3 | y2 + y3 = 0, y1 + y3 = 0}, deci avem T = {y R3 | y = . 1 1 -1 . .} = Im. . . 1 1 -1 . . . . Vezi figura 1.5. _ Privind n continuare matricea A n forma (1.8), rangul matricei A este dimensiunea subspaiului ImA generat de coloanele lui A. Aadar rangA = dim(ImA), sau, altfel spus, rangul este numarul maxim de coloane liniar independente din A. Se poate demonstra ca rangA = rangAT i deci rangul este totodata i numarul maxim de linii liniar independente din A. Recapitulnd: dimImA = dimImAT not = r, dimKerA = n - r, dimKerAT = m - r. (1.12) O matrice A Rmn avnd coloanele liniar independente se numete monica; n acest caz, m n, rangA = n i KerA = {0}. Se mai spune ca A are rang maxim pe coloane. O matrice A Rmn avnd liniile liniar independente se numete epica; atunci m n, rangA = m i ImA = Rm; se spune ca A are rang maxim pe linii. 1.3. MATRICE 31 O matrice A Rmn avnd una din dimensiuni egala cu 1 este un vector; daca n = 1, vectorul este coloana (accepiunea implicita), iar daca m = 1 vectorul este linie. Este clar ca transpusa unui vector linie este un vector coloana i reciproc. n mod analog cu (1.8), o matrice poate fi scrisa evideniind liniile: A=. ... aT1 2

aT ... aTm

. .... . (1.13) Atenie: acum aT i e o notaie pentru vectorul format de linia i a matricei A; ai nu este coloana i din (1.8). Pentru a evita confuziile, vom folosi i notaiile: A(:, i) pentru coloana i din A, respectiv A(i, :) pentru linia i din A.

Folosind forma (1.13) a matricei A, se poate observa uor ca produsul matricevector se poate exprima prin intermediul unor produse scalare: Ax = . . aT 1x ... aT mx . .. . (1.14) AA. Gaxpy. Vom prezenta acum mai multe implementari ale produsului matrice-vector, sub forma operaiei y Ax + y, numita Gaxpy5. Din (1.9), la nivel de element, operaia se scrie yi yi +Pn j=1 aijxj , i deci Algoritmul 1.5 (Gaxpy Produs matrice-vector) (Se dau A Rmn, x Rn. Se calculeaza y Ax + y Rm utiliznd operaii elementare.) 1. Pentru i = 1 : m 1. Pentru j = 1 : n 1. yi yi + aijxj Se observa imediat ca bucla interioara reprezinta o operaie DOT, corespunz nd exprimarii produsului matrice-vector n forma (1.14). Algoritmul de mai sus se scrie deci, n forma vectoriala Algoritmul 1.6 (Se dau A Rmn, x Rn. Se calculeaza y Ax + y Rm utiliznd opera