Sunteți pe pagina 1din 182

METODE DE CALCUL

NUMERIC MATRICEAL. ALGORITMI FUNDAMENTALI

Bogdan Dumitrescu Corneliu Popeea Boris Jora


Partea I
Tuturor 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,jora@lucky.schur.pub.ro 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

Vectori
ni : 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 . . . p
1n

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 i
2

|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

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 grec
Majuscule 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

Cuprins
0 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 numeric


Rezolvarea 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.3
01101001 - _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 Zb


a

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 -t
1n

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 n
3Se

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 + xi
2Notaia

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 = vuut
n

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=. ... aT
1 2

aT ... aT
m

. .... . (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 operaii DOT.) 1. Pentru i = 1 : m 1. yi yi + DOT(A(i, :), x) Inversnd acum ordinea buclelor din algoritmul 1.5, ceea ce nu afecteaza n nici un fel rezultatul (ordinea operaiilor pentru calculul fiecarei sume yi n parte este aceea), obinem Algoritmul 1.7 (Se dau A Rmn, x Rn. Se calculeaza y Ax + y Rm utiliznd operaii elementare.)
5Prescurtare

32 CAPITOLUL 1. ALGORITMI ELEMENTARI 1. Pentru j = 1 : n 1. Pentru i = 1 : m 1. yi yi + aijxj Bucla interioara reprezinta acum o operaie Saxpy, corespunznd exprimarii produsului matrice-vector n forma (1.9), care este o suma de vectori. Algoritmul 1.7 se rescrie deci n forma vectoriala: Algoritmul 1.8 (Se dau A Rmn, x Rn. Se calculeaza y Ax + y Rm folosind operaii Saxpy.) 1. Pentru j = 1 : n 1. y Saxpy(xj ,A(:, j), y) Comentarii. Toi algoritmii de mai sus au 2n2 operaii. De aceea Gaxpy face parte din grupul operaiilor de nivel 2. Vom face referina la ea n forma y = Gaxpy(A, x, y). Desigur, implementarile din algoritmii 1.6 i 1.8 vor fi deosebit de eficiente pe calculatoare vectoriale. _

pentru General Ax Plus y.

1.4 nmulirea matricelor

Dedicam o seciune separata nmulirii de matrice (i unor noiuni conexe), deoarece aceasta operaie este specifica (nu se poate defini n general produsul a doi vectori cu rezultat vector6) i apare deseori n construcia algoritmilor de nivel superior, devenind astfel interesanta att teoretic, ct i din punctul de vedere al detaliilor de implementare. Definiia 1.1 Fie A Rml i B Rln, doua matrice; produsul lor este matricea C = AB Rmn, definita prin

cij =
l

Xk=1 aikbkj , i = 1 : m, j = 1 : n. Cazuri particulare. Sa discutam nti cazurile particulare n care cel puin una dintre dimensiuni este egala cu 1. Daca m = n = 1, atunci A not = xT este un vector linie, B not = y este un vector coloana, ambii n Rl, iar produsul lor coincide cu simplul produs scalar AB = xT y. Daca l = 1, atunci A not = x este un vector coloana n Rm, B not = yT este un vector linie n Rn, iar produsul lor este matricea C = xyT Rmn, definita prin cij = xiyj ; aceasta operaie cu doi vectori poarta numele de produs exterior i va fi notata prin OUT(x, y). Daca n = 1, atunci B not = y este un vector coloana i operaia AB este o nmulire matrice-vector. Daca m = 1, atunci A not = xT este un vector linie i AB = xTB este un vector linie (nmulire vector linie - matrice).
vectorial a b este posibil, printr-un accident fericit caruia i este ndatorata ntreaga fizica clasica, numai n R3.
6Produsul

1.4. NMUL IREA MATRICELOR 33 Forme ale produsului matriceal. Vom evidenia acum mai multe forme de prezentare a nmulirii a doua matrice, folosind ca operaii elementare cazurile particulare prezentate mai sus. 1. Sa privim A ca alaturare de vectori linie, ca n (1.13), i B ca alaturare de vectori coloana, ca n (1.8). Se observa imediat din definiie ca cij = aT i bj , adica fiecare element al rezultatului poate fi exprimat printr-un produs scalar (DOT). 2. Privim acum A partiionata pe coloane i B pe linii. Produsul lor se poate exprima ca o suma de produse exterioare: C = AB = [a1 . . . al] . . bT
1

... bT
l

. .. =
l

Xk=1 akbT k . (1.15) Demonstraie: cij = Pl k=1(akbT k )ij = Pl k=1(ak)i(bT k )j = Pl k=1 aikbkj . 3. Punem acum n evidena numai coloanele matricei B. Atunci C = AB = A[b1 . . . bn] = [Ab1 . . . Abn], (1.16) deci fiecare coloana a produsului este obinuta prin nmulirea matrice-vector dintre matricea A i coloana respectiva a lui B. 4. Fie acum A partiionata pe linii. Atunci C = AB = . . aT
1

... aT
m

. .. B=. . aT 1B ... aT mB . .. , (1.17) deci fiecare linie a produsului este obinuta prin nmulirea vector linie - matrice dintre linia respectiva a lui A i matricea B. 5. Sa exprimam acum coloanele produsului C n funcie de coloanele matricei A. Cu ajutorul relaiei (1.16) se obine cj = Abj =
l

Xk=1 bkjak, (1.18) deci orice coloana din C este combinaie liniara a coloanelor matricei A. 6. n sfrt, o ultima forma, n care vom exprima liniile produsului C n funcie de liniile matricei B. Din (1.17) rezulta cT i = aT iB =
l

Xk=1 aikbT k . (1.19) Proprietai. nmulirea de matrice are unele proprietai imediate, prezentaten continuare; presupunem ca matricele au dimensiuni potrivite operaiilor efectuate; demonstraiile sunt lasate cititorului. 1. A(BC) = (AB)C (asociativitate); 2. A(B + C) = AB + AC (distributivitate); 34 CAPITOLUL 1. ALGORITMI ELEMENTARI 3. (AB)T = BTAT . Trebuie subliniat faptul canmulirea de matrice nu este comutativa. Sa detaliem puin; consideram A Rml i B Rln, cazul cel mai general pentru care este definit produsul AB; daca m 6= n, atunci produsul BA nici macar nu este definit. Daca m = n, atunci AB Rml, iar BA Rlm; prin urmare, daca m 6= l, atunci AB i BA au dimensiuni diferite, deci nu se pune problema egalitaii. n fine, daca i m = l, deci ambele matrice sunt patrate, atunci egalitatea AB = BA nu are loc, n general; un exemplu simplu: A = _ 1 1 1 1 _, B = _ 1 2 3 4 _. Matrice patrate. Ne vom ocupa n continuare de unele aspecte specifice matricelor patrate din Rnn, a caror mulime are structura de inel necomutativ. Matricea unitate de ordinul n are elementele de pe diagonala principala egale cu 1 toate celelalte elemente nule; ea este notata prin In, sau numai I daca dimensiunea rezulta din context; scrisa pe coloane, matricea unitate are forma In = [e1 . . . en]. Fie o matrice A Rnn; daca exista o matrice X Rnn astfel nct AX = XA = I, atunci X se numete inversa matricei A i se noteaza cu A-1. O matrice care are inversa se numete inversabila; matricea inversa este unica. Se poate demonstra ca mulimea matricelor inversabile din Rnn are o structura de grup (necomutativ) n raport cu nmulirea, notat GL(n). Se pune ntrebarea cnd este o matrice inversabila ? Vom meniona deocamdata, fara a demonstra, ca inversabilitatea este echivalenta cu condiia rangA = n, adica

cu independena coloanelor (i liniilor) matricei A. (O alta condiie echivalenta este KerA = {0}, i.e. KerA are dimensiune nula.) Testarea numerica a inversabilitaii va fi o problema tratata mai mult sau mai puin explicit n capitolele urmatoare, metodele prezentate fiind din ce n ce mai sigure, dar i mai sofisticate. O ultima proprietate: inversarea i transpunerea unei matrice sunt operaii care comuta ntre ele, adica (AT )-1 = (A-1)T not = A-T . Echivalena. Doua matrice A,B Rmn se numesc echivalente la dreapta daca exista o matrice T Rnn inversabila astfel nct B = AT . Avem: Propoziia 1.1 Daca A,B Rmn sunt echivalente la dreapta, atunci avem ImA = ImB. Demonstraie. Din definiie, exista T astfel nct B = AT . Evideniind coloanele din A i B i folosind (1.18) se obine bj = Atj = Pn i=1 tijai, deci orice coloana din B este combinaie liniara a coloanelor matricei A; atunci bj ImA, pentru j 1 : n, i deci ImB ImA. Cum T este inversabila, A = BT-1, i un raionament similar conduce la concluzia ImA ImB. _ Daca matricele echivalente la dreapta A i B au coloanele liniar independente, atunci coloanele fiecareia formeaza o baza pentru ImA = ImB. n acest caz, matricea T este numita schimbare de baza (n Rn, din baza A n baza B). Fie un vector x ImA; atunci x se exprima unic n fiecare dintre cele doua baze: x = Ac = Pn i=1 iai, cu c = [1 . . . n]T , respectiv, x = Bd = Pn i=1 ibi, cu 1.4. NMUL IREA MATRICELOR 35 d = [1 . . . n]T ; vectorii c i d conin coordonatele n cele doua baze. Cum B = AT , atunci x = Ac = AT d, din unicitate rezultnd c = T d, sau d = T-1c. Aceasta ultima relaie justifica denumirea de transformare de coordonate data matricei T-1 (din nou, din baza A n baza B). Desigur, daca A i B sunt echivalente la dreapta, atunci i KerAT = KerBT , consecina a propoziiei de mai sus i a teoremei 1.1. Deoarece nmulirea de matrice nu este comutativa, are sens noiunea de echivalent a la stnga; matricele A,B Rmn se numesc echivalente la stnga daca exista o matrice S Rmm inversabila astfel nct B = SA. n acest caz, ImAT = ImBT i KerA = KerB. Daca coloanele fiecareia dintre matricele echivalente la stnga A i B formeaza o baza pentru ImA = ImB, atunci din (1.16) aj = Sbj, deci matricea S transforma vectorii unei baze n vectorii celeilalte. Doua matrice sunt echivalente (bilateral) daca exista S Rmm, T Rnn inversabile astfel nct B = SAT . S i T se numesc generic transformari (de echivalena). AA. Algoritmi. Vom prezenta mai multe variante de calcul al produsului matriceal, variante ce difera, n esena, prin ordinea n care sunt efectuate operaiile scalare. n acest mod punem n evidena diverse posibilitai de organizare a calculelor n vederea unei exploatari optime a particularitailor arhitecturale ale calculatorului inta. Pentru nceput prezentam un algoritm pentru produsul exterior, singurul caz particular nedetaliat pna acumn care cel puin o dimensiune a operanzilor nmulirii este 1. Algoritmul 1.9 (OUT Calculul produsului exterior) (Se dau x Rm, y Rn. Se calculeaza C = xyT Rmn.) 1. Pentru j = 1 : n 1. Pentru i = 1 : m 1. cij xiyj n cazul general, o implementare directa anmulirii de matrice, folosind definiia, este prezentata n continuare. Algoritmul 1.10 (MM nmulire matriceala) (Se dau

A Rml, B Rln. Se calculeaza C = AB Rmn.) 1. C 0 2. Pentru j = 1 : n 1. Pentru i = 1 : m 1. Pentru k = 1 : l 1. cij cij + aikbkj Rezultatul acestui algoritm nu se modifica daca ordinea celor trei bucle Pentru este alta. Algoritmul de mai sus se mai numete forma jik a produsului matriceal. Bucla Pentru cea mai interioara se poate nlocui cu apelul produsului scalar DOT(A(i, :),B(:, j)), obinndu-se astfel un algoritm cu operaii vectoriale. Cele doua bucle Pentru interioare se pot nlocui cu un apel la Gaxpy(A, B(:, j), C(:, j)), dupa cum sugereaza direct relaia (1.16). Forma jki pune n evidena operaii Saxpy, avnd la baza relaia (1.18): 36 CAPITOLUL 1. ALGORITMI ELEMENTARI Algoritmul 1.11 (Se dau A Rml, B Rln. Se calculeaza C = AB Rmn. Forma jki.) 1. C 0 2. Pentru j = 1 : n 1. Pentru k = 1 : l 1. C(:, j) Saxpy(B(k, j),A(:, k),C(:, j)) Din nou cele doua bucle interioare se pot nlocui cu Gaxpy. Forma kji a algoritmului este o implementare directa a formulei (1.15), care evideniaza produse exterioare. Algoritmul 1.12 (Se dau A Rml, B Rln. Se calculeaza C = AB Rmn folosind operaii OUT.) 1. C 0 2. Pentru k = 1 : l 1. C C + OUT(A(:, k),B(k, :)) Apelul rutinei OUT nlocuiete buclele Pentru cu indicii j i i. Formele ijk, kij i ikj sunt, n aceasta ordine, variante ale celor trei forme prezentate mai sus. Permutarea buclelor i i j nu este eseniala, deoarece acestea au rolul de parcurgere a matricei C, pe linii sau pe coloane. Acest lucru poate deveni important daca se ine seama de modul de adresare a elementelor matricei impus de limbajul de programare utilizat. De exemplu, n FORTRAN se prefera organizarea pe coloane, corespunzator formelor jik, jki, kji, deoarece matricele sunt memorate pe coloane. n oricare dintre formele menionate, nmulirea de matrice necesita 2mnl flopi, deci 2n3 n cazul matricelor patrate, i face parte din grupul operaiilor de nivel 3. Vom face referire la ea n forma C =MM(A,B). nmulirea matricelor complexe. Algoritmii de mai sus, ca i toate considerat iile care i preced, sunt valabili i pentru nmulirea matricelor complexe C = AB Cmn, cu A Cml, B Cln. Diferena consta n numarul de flopi necesari execuiei. Daca adunarea a doua numere complexe se face n doi flopi (unul pentru partea reala, altul pentru partea imaginara), n schimb nmulirea necesita ase: ( + i)( + i) = - + i( + ). (1.20) Aadar nmulirea matricelor complexe se executa n aproximativ 8mnl flopi (cte mnl nmuliri i adunari de scalari complec). Aceeai observaie poate fi facuta scriind A = A1 + iA2, cu A1,A2 Rml, B = B1 + iB2, cu B1,B2 Rln, C = A1B1 - A2B2 + i(A1B2 + A2B1). (1.21) nmulirea matricelor complexe se poate efectua deci prin patru produse (i doua adunari) de matrice reale. Numarul de operaii se poate reduce printr-un mic artificiu de calcul; o forma echivalenta cu (1.20) este ( + i)( + i) = - + i(( + )( + ) - - ). (1.22) 1.5. NORME MATRICEALE 37 Aparent, nu se ctiga nimic, deoarece n loc de patru nmuliri i doua adunari

reale, ca n (1.20), avem trei nmuliri i cinci adunari. Egalitatea (1.22) se scrie nsa identic i n cazul matriceal, nlocuindu-se (1.21) cu G = A1B1, H = A2B2, C = G - H + i((A1 + A2)(B1 + B2) - G - H). (1.23) Aadar C se calculeaza acum cu doar trei nmuliri de matrice, adica 6mnl flopi, cinci adunari a caror contribuie la numarul de operaii este neglijabila. Acest algoritm rapid pentru nmulirea matricelor complexe are totui i un dezavantaj: stabilitatea sa numerica este mai slaba dect cea a algoritmului clasic (1.21); cu toate acestea, el poate fi folosit cu succes n majoritatea aplicaiilor.

1.5 Norme matriceale


m n

Produsul scalar matriceal este o generalizare imediata a produsului scalar a doi vectori. Daca A,B Rmn, produsul lor scalar este (A,B) def = Xi=1 Xj=1 aijbij = tr(BTA). (1.24) Se observa ca (1.24) este identica cu produsul scalar al celor doi vectori din Rmn obinui prin vectorizarea matricelor A i B, i.e. prin concatenarea coloanelor lui A, respectiv B. Normele matriceale se definesc la fel ca normele vectoriale. O norma matriceala este o funcie k k : Rmn R+ care satisface condiiile 1. kAk > 0, A Rmn, A 6= 0 (pozitivitate); 2. kAk = || kAk, A Rmn, R (omogenitate); 3. kA + Bk kAk + kBk, A,B Rmn (inegalitatea triunghiului). Pentru a utiliza normele matriceale independent de dimensiunile matricelor, introducem noiunea de familie de norme matriceale, care este o funcie k k : S
m=1,n=1

Rmn R+ astfel nct, pentru fiecare m, n > 0, restricia lui k k la Rmn este o norma matriceala. Daca n = 1, atunci k k este o familie de norme vectoriale. O familie k k de norme matriceale este consistenta daca kABk kAk kBk, (1.25) atunci cnd produsul AB este definit. (Sa observam ca, n general, A, B i AB au dimensiuni diferite, deci normele lor sunt funcii diferite; de aceea se lucreaza cu familii de norme.) Norma Frobenius este norma matriceala indusa de produsul scalar (1.24): kAkF = vuut
m n

Xi=1 Xj=1 a2 ij . (1.26) 38 CAPITOLUL 1. ALGORITMI ELEMENTARI Familia de norme Frobenius este consistenta. Norme subordonate. O familie de norme matriceale poate fi obinuta dintr-o familie de norme vectoriale k k, prin urmatoarea relaie kAk = sup
x6=0

kAxk kxk = max kxk=1 kAxk, (1.27) n care norma matriceala kAk se definete cu ajutorul normelor vectoriale kxk

kAxk. (Trecerea de la sup la max este justificata de faptul ca hipersfera de ecuaie kxk = 1 este un compact iar norma vectoriala k k este o funcie continua, deci marginita i i atinge marginile.) Familia de norme matriceale este numita subordonata celei de norme vectoriale sau indusa de aceasta. Astfel, folosind (1.27), se pot defini normele p matriceale subordonate normelor p (Holder) vectoriale. Cele mai utilizate norme p sunt normele 1, 2 i . Pentru p = 1,, relaia (1.27) se reduce la expresiile simple kAk1 = max kxk1=1 kAxk1 = max
j=1:n m

Xi=1 |aij |!, kAk = max kxk1=1 kAxk = max i=1:m. .


n

Xj=1 |aij |. . (1.28) Pentru norma 2, att semnificaia ct i modul de calcul vor fi prezentate n capitolele urmatoare. Normele p matriceale, aplicate unor vectori privii ca matrice, dau aceleai valori ca normele p vectoriale. Astfel, nu e nici o posibilitate de confuzie n utilizarea aceluiai simbol k kp pentru normele matriceale i cele vectoriale. n sfrt, normele matriceale subordonate unor norme vectoriale sunt consistente (demonstrai, folosind definiia) , n plus, au proprietatea kIk = 1. Echivalena. Normele matriceale prezentate mai sus sunt echivalente, n sensul relaiei (1.4). De exemplu (vezi problema 1.10): 1 nkAk kAk2 mkAk, 1 mkAk1 kAk2 nkAk1, kAk2 kAkF nkAk2. (1.29) Cazul complex. O norma matriceala peste spaiul complex Cmn este o funcie cu valori reale pozitive satisfacnd cele trei condiii de la nceputul seciunii. Toate definiiile i relaiile de mai sus ramn valabile, cu singura observaie ca acum norma Frobenius este kAk2 F = Pm i=1Pn j=1 |aij |2. AA. Calculul normei 1 se face folosind direct relaiile (1.28): Algoritmul 1.13 (Nm1 Calculul normei matriceale 1) (Se da A Rmn. Se calculeaza = kAk1.) 1.6. MATRICE STRUCTURATE 39

0 0

LU Fig. 1.6: Matrice inferior i superior triunghiulare 1. 0 2. Pentru j = 1 : n 1. 0 2. Pentru i = 1 : m 1. + |aij | 3. Daca > atunci Algoritmul necesita mn flopi. Calculul normei este asemanator i are aceea

complexitate. Calculul normei Frobenius necesita 2mn flopi; desigur, pentru evitarea deparilor superioare, n implementarea formulei directe (1.26) se utilizeaza scalarea. n schimb, dupa cum vom vedea, calculul normei 2 face apel la noiuni mai evoluate i implica O(n3) operaii (pentru matrice patrate). De aceea, normele 1, Frobenius sunt cele mai folosite n calculul numeric elementar. Toate aceste norme fiind echivalente, criteriul de alegere primordial este efortul de calcul.

1.6 Matrice structurate

n numeroase probleme apar matrice ale caror elemente sunt nulen anumite regiuni. Astfel de matrice sunt numite generic structurate; n cazul lor, algoritmii de rezolvare a unei probleme oarecare sunt de obicei mai simpli; de aceea, majoritatea algoritmilor generali au ca prim obiectiv reducerea matricei iniiale la una cu structura mai simpla. n aceasta seciune vom prezenta cteva tipuri de matrice structurate i propriet aile lor principale. Pentru simplitate, vom considera doar matrice patrate, din Rnn. Extinderea la matrice dreptunghiulare este imediata. Definiii. 1) O matrice D se numete diagonala daca elementele nediagonale sunt nule, adica dij = 0, pentru i 6= j. 2) O matrice T se numete inferior triunghiulara daca tij = 0, pentru i < j, superior triunghiulara daca tij = 0, pentru i > j. Figura 1.6 prezinta astfel de matrice. Evident, o matrice simultan inferior i superior triunghiulara este diagonala. O matrice se numete triunghiulara unitate daca este triunghiulara , n plus, toate elementele sale diagonale sunt egale cu 1. O matrice se numete strict triunghiulara daca este triunghiulara i toate elementele sale diagonale sunt nule. De exemplu, o matrice A este strict inferior 40 CAPITOLUL 1. ALGORITMI ELEMENTARI triunghiulara daca aij = 0, pentru i j. Matricele triunghiulare au proprietai deosebite care vor fi evideniate n seciuni urmatoare ale acestui capitol. 3) O matrice H se numete inferior Hessenberg daca hij = 0, pentru j > i + 1, i superior Hessenberg daca hij = 0, pentru i > j + 1. 4) O matrice A se numete tridiagonala daca este simultan inferior i superior Hessenberg, adica aij = 0, pentru |i - j| > 1. n general, o matrice B se numete banda, de laime inferioara p, daca bij = 0, pentru i > j+p, i de laime superioara q, daca bij = 0, pentru j > i+q. Daca p = q, vom spune ca B este matrice banda de laime p. Evident, matricele tridiagonale sunt un caz particular de matrice banda, cu p = q = 1. O matrice banda cu p = q = 2 se zice pentadiagonala. Proprietai. Vom prezenta n continuare cteva proprietai utile ale matricelor structurate. Este evident ca suma a doua matrice cu structuri identice va avea aceeai structur a. De asemenea, nmulirea unei matrice cu un scalar conserva structura. n ce privete produsul, proprietaile nu mai sunt att de generale. Propoziia 1.2 a. Daca D este o matrice diagonala i A este o matrice structurata, atunci matricele DA i AD vor avea structura matricei A. b. Produsul a doua matrice inferior (superior) triunghiulare (unitate) este o matrice inferior (superior) triunghiulara (unitate). c. Daca L este o matrice inferior (superior) triunghiulara i H este inferior (superior) Hessenberg, atunci LH i HL sunt matrice inferior (superior) Hessenberg. Demonstraie. Vom demonstra doar punctul b n cazul inferior triunghiular, celelalte demonstraii fiind lasate ca exerciiu. Fie A i B doua matrice inferior triunghiulare, i C = AB. Evident, cij = Pn k=1 aikbkj . Consideram i < j. A fiind inferior triunghiulara, aik = 0 pentru k > i; n plus, bkj = 0, pentru k i < j, deoarece B este inferior triunghiulara; aadar, aikbkj = 0, pentru oricare k 1 : n, deci cij = 0 pentru i < j, adica C este inferior triunghiulara. Elementele posibil nenule ale matricei C (pentru i j) se calculeaza economic

cu relaia cij =
i

Xk=j aikbkj , (1.30) deoarece aik = 0 pentru k > i i bkj = 0 pentru k < j. Daca A i B sunt inferior triunghiulare unitate, atunci particulariznd (1.30) se obine cii = aiibii = 1, deci i C este inferior triunghiulara unitate. _ AA. nmulirea matricelor triunghiulare. Datorita elementelor nule, algoritmii implicnd matrice structurate pot fi simplificai astfel nct sa fie executate doar operaiile aritmetice strict necesare. Vom exemplifica cu algoritmul denmulire a doua matrice inferior triunghiulare, A i B. Profitam de faptul ca rezultatul C este inferior triunghiular i calculam cij numai pentru i j, folosind (1.30) i nu formula generala. 1.6. MATRICE STRUCTURATE 41 Algoritmul 1.14 (TRMM nmulire de matrice inferior triunghiulare) (Se dau A,B Rnn inferior triunghiulare. Se calculeaza C = AB.) 1. Pentru i = 1 : n 1. Pentru j = 1 : i 1. cij = Pi k=j aikbkj Comentarii. Cele doua bucle sunt destinate parcurgerii pe linii a elementelor triunghiului inferior al matricei C; parcurgerea se poate face i pe coloane, prin: Pentru j = 1 : n, Pentru i = j : n. Acest algoritm necesita n3/3 flopi, adica de ase ori mai puin dect algoritmul general de nmulire de matrice. _ AA. Memorarea matricelor structurate se poate face n tablouri n n, ca pentru toate celelalte matrice, cu dezavantajul stocarii elementelor nule; totu, exista i un avantaj: accesul la elementele matricelor se face identic pentru matricele generale i pentru cele structurate. Daca se dorete economie de memorie, stocarea elementelor nule se poate evita uor; acest mod de memorare se numete compact sau mpachetat (packed). Exemplific am n continuare pentru cteva tipuri de matrice. O matrice triunghiulara se poate memora ntr-un vector, sa-l notam v, de lungime n(n + 1)/2 (numarul elementelor posibil nenule ale matricei). Daca L este inferior triunghiulara, atunci o ordine naturala de memorare, cea pe linii, este l11, l21, l22, l31, . . . (n v1, v2, v3, v4, . . . ). Se observa ca lij se memoreaza n poziia
i(i-1) 2+

j din v. O matrice tridiagonala T se poate memora n trei vectori a, b, c (n fiecare cte o diagonala), ceea ce este evident din notaia: T= . ..... a1 c1 b2 a2 c2 ... ... ... bn-1 an-1 cn-1 bn an . ...... . n general, o matrice banda B, de laime p, se poate memora uor ntr-un tablou cu 2p + 1 linii i n coloane. Exemplificam pentru p = 2: B= .

....... ... ... ... ... ... . ........ ..... .... ... ......... n stnga se gasete matricea banda (cu elementele notate generic), n dreapta tabloul de memorare (prin . sunt notate elemente nesemnificative); se observa ca elementele de pe aceeai diagonala a matricei se memoreaza pe aceeai linie a tabloului. Elementul bij se memoreaza pe linia p + i - j + 1, coloana j. 42 CAPITOLUL 1. ALGORITMI ELEMENTARI _ _ _ __ _ _ _ __ ___ _ __ _ (a) (b) (c) Fig. 1.7: Submatrice: (a) cu I = {1, 3, 4}, J = {2, 3, 5} (elementele submatricei sunt notate cu ); (b) bloc; (c) lider principala

1.7 Matrice bloc

Submatrice, bloc. Pna acum am privit o matrice A ca fiind formata din elemente sau, eventual, din coloane sau linii, ca n (1.7), (1.8), respectiv (1.13). Un alt punct de vedere este de a evidenia submatrice sau blocuri, adica matrice de dimensiuni mai mici coninute n A. n sensul cel mai larg, noiunea de submatrice se definete dupa cum urmeaza. Daca A Rmn, iar I = {i1, i2, . . . , ir} 1 : m i J = {j1, j2, . . . , jp} 1 : n sunt doua mulimi de indici astfel nct i1 < i2 < . . . < ir, j1 < j2 < . . . < jp, atunci matricea A de dimensiune r p definita de a kl = aikjl , este numita submatrice a matricei A. Figura 1.7a ilustreaza noiunea. Se observa ca A este obinuta prin extragerea elementelor aflate la interseciile liniilor i coloanelor din I, respectiv J . Daca indicii din I, respectiv J , sunt consecutivi, atunci submatricea mai este numita i bloc. Pentru a ne referi la blocul astfel definit vom folosi i notaia A(i1 : ir, j1 : jp). Daca A Rnn i I = J , atunci submatricea A se numete principala. Daca, n plus, I = {1, 2, . . . , r}, atunci A not = A[r] este numita submatrice lider principala

de ordin r a matricei A; aceasta este blocul r r poziionat stnga-sus n A. Vezi figurile 1.7b,c. Partiionari conforme. Vom lucra n continuare cu matrice partiionate n blocuri, notate astfel A=. ... A11 A12 . . . A1n A21 A22 . . . A2n ... ... ... ... Am1 Am2 . . . Amn . .... ,B=. ... B11 B12 . . . B1l B21 B22 . . . B2l ... ... ... ... Bp1 Bp2 . . . Bpl . .... , (1.31) n care blocurile Aij au dimensiune i j , iar Bij dimensiune i j . Evident, matricea A are (1 + . . . + m) linii i (1 + . . . + n) coloane. Este interesant sa studiem operaiile cu matrice astfel partiionate, mai precis modul de partiionare care permite nlocuirea operaiilor cu elemente prin cele cu blocuri. 1.7. MATRICE BLOC 43 Daca m = p, i = i, i 1 : m, i n = l, cu j = j , j 1 : n, atunci A+B=C=. . C11 . . . C1n ... ... ... Cm1 . . . Cmn . .. , cu Cij = Aij + Bij . (1.32) Daca n = p, i = i, i 1 : n, atunci AB = D = . . D11 . . . D1l ... ... ... Dm1 . . . Dml . .. , cu Dij =
n

Xk=1 AikBkj . (1.33)

Partiionarile care permit scrierea relaiilor de mai sus se numesc conforme cu operaia executata; se observa ca formulele de calcul al sumei i produsului la nivel de bloc sunt similare celor la nivel de element; evident, suma i produsul a doua blocuri se calculeaza cu formulele elementare cunoscute. ntorcndu-ne la seciunea dedicata nmulirii de matrice, putem acum constata ca relaiile (1.15)(1.18) sunt cazuri particulare ale relaiei (1.33). Pentru transpunere avem AT = . ... AT 11 AT 21 . . . AT
m1

AT 12 AT 22 . . . AT
m2

... ... ... ... AT 1n AT 2n . . . AT


mn

. .... . (1.34) Matrice bloc structurate. O matrice partiionata ca n (1.31) poate fi structurat a la nivel de blocuri. Folosim aceleai definiii ca n seciunea precedenta, gndind nsa acum la nivel de blocuri i nu la nivel de element. Presupunem ca A din 1.31 este patrata, m = n i blocurile diagonale sunt patrate, adica i = i, i 1 : n (cu aceste ipoteze, diagonala principala a fiecarui bloc Aii este parte din diagonala principala a matricei). Spunem ca A este bloc diagonala daca Aij = 0, pentru i 6= j; A este bloc superior triunghiulara daca Aij = 0, pentru i > j, etc. Este evident ca, n general, o matrice bloc diagonala nu este diagonala, o matrice bloc triunghiulara nu este triunghiulara etc. Structura la nivel de bloc este conservata la adunare daca matricele operand sunt partiionate conform pentru adunare. Pentru nmulire, este adevarat analogul la nivel de bloc al propoziiei 1.2, adica, de exemplu, produsul a doua matrice bloc superior (inferior) triunghiulare partiionate conform este o matrice bloc superior (inferior) triunghiulare. AA. nmulire la nivel de bloc. Pe calculatoarele cu memorie ierarhica, cu structura sugerata n figura 0.4c, partiionarea matricelor n blocuri i utilizarea unei relaii de tipul (1.33) poate conduce la o eficiena sporita a nmulirii de matrice. Consideram, pentru simplitate, matricele patrate A,B Rqq i dorim sa calcul am produsul lor C = AB. Partiionam A, B i C ca n (1.31), cu meniunea ca acum m = n, p = l, iar toate blocurile sunt patrate i au aceleai dimensiuni, 44 CAPITOLUL 1. ALGORITMI ELEMENTARI adica Aij Rrr, r fiind numita dimensiunea blocurilor, iar m = q/r numarul de blocuri; presupunem ca r divide dimensiunea matricelor q doar pentru a simplifica expunerea. Exprimam produsul matriceal ca n (1.33), deci Cij =
m

Xk=1 AikBkj . (1.35) Pe un calculator cu memorie ierarhica trebuie minimizat traficul ntre memoria principala MP i memoria rapida MR. Desigur, matricele A, B, C sunt stocate

n MP. Daca alegem dimensiunea blocurilor r astfel nct 3 blocuri de matrice sa poata fi stocate simultan n MR (deci, 3r2 < dim(MR)), atunci putem construi un algoritm de calcul al produsului matriceal bazat pe ideea de a aduce, pe rnd, blocurile Aik, Bkj implicate n suma din (1.35), din MP n MR, i abia apoi de a efectua nmulirea lor. Algoritmul 1.15 (Se dau matricele A, B. Se calculeaza produsul matriceal C = AB, la nivel de bloc. Se presupune ca variabilele X, Y Z se gasesc n MR.) 1. Pentru i = 1 : m 1. Pentru j = 1 : m 1. Z 0 2. Pentru k = 1 : m 1. X Aik, Y Bkj 2. Z Z + X Y 3. Cij Z Comentarii. n acest algoritm, atribuirile din instruciunea 1.1.2.1 reprezinta de fapt transferuri din MPn MR; analog, n instruciunea 1.1.3 se executa un transfer din MRn MP. Operaia matriceala Z Z+XY din 1.1.2.2 nu este detaliata aici; ea se executa cu algoritmul 1.10 la nivel de element; esenial este faptul ca toate variabilele implicate se gasesc nMR, deci nu e necesar nici un transfer din/spre MP. Lucrnd la nivel de blocuri, numarul de operaii ramne neschimbat, adica 2q3; n schimb, numarul de accesuri la MP devine 2r2m3 = 2q2m = 2q3/r (instruciunea 1.1.2.1 se executa de m3 ori, de fiecare data transferndu-se doua blocuri cu r2 elemente). Daca s-ar folosi algoritmul 1.10 la nivel de element pe un calculator cu memorie ierarhica, fiecare operaie cij cij + aikbkj ar implica cel puin doua transferuri din MP n MR (putem presupune ca cij ramne n MR ct timp este calculat). Ar avea loc deci aproximativ 2q3 accesuri la MP. n concluzie, faa de versiunea la nivel de element, n algoritmul 1.15 la nivel de bloc se acceseaza de r ori mai puin memoria principala, ceea ce conduce la o cretere semnificativa de viteza. _ Sa rezumam ideea eficientizarii algoritmilor pe calculatoare cu memorie ierarhic a; ea va fi folosita i n rezolvarea altor probleme. Se partiioneaza matricele de intrare n blocuri i se exprima algoritmul n operaii ntre blocuri (aceasta e banal 1.7. MATRICE BLOC 45 la produsul matriceal, dar mai complicat la alte probleme); dimensiunile blocurilor se aleg ct mai mari (de obicei), dar astfel nct toate blocurile implicate ntr-o operaie sa ncapa simultan n MR. Algoritmul Strassen. Aparent, prin nsai definiia ei (algoritmul numit generic standard, n continuare), nmulirea a doua matrice n n reale necesit a 2n3 flopi. Exista nsa o multitudine de algoritmi, numii global rapizi, dei se bazeaza pe idei diferite, care au o complexitate aritmetica mai mica. Primul dintre acetia, i singurul dovedit utilizabil n practica (mpreuna cu unele variante), este cel descoperit n 1969 de Strassen [?]. Fie A,B Rnn , pentru simplitate, consideram ca n este divizibil cu 2. Partiionam matricele A, B i C = AB n blocuri de dimensiune n/2 n/2, adica A = _ A11 A12 A21 A22 _, B = _ B11 B12 B21 B22 _, C = _ C11 C12 C21 C22 _. (1.36) Algoritmul lui Strassen este definit de formulele urmatoare, uor de verificat prin simpla substituie: C = A B = _ M1 +M2 +M3 -M4 M4 +M6 M3 +M5 M1 -M5 +M6 +M7 _ M1 = (A11 + A22) (B11 + B22) M5 = (A21 + A22) B11 M2 = (A12 - A22) (B21 + B22) M6 = A11 (B12 - B22) M3 = A22 (B21 - B11) M7 = (A21 - A11) (B11 + B12) M4 = (A11 + A12) B22

(1.37) Se observa ca pentru calculul matricei C sunt necesare 7 nmuliri i 18 adunari de matrice de dimensiune n/2 n/2, n timp ce n algoritmul standard la nivel de bloc se fac, pentru aceeai partiionare (1.36), 8 nmuliri i 4 adunari de blocuri. Astfel, numarul de operaii pentru algoritmul Strassen este N1(n) = 14n3 8 + 18n2 4. Este evident ca, pentru n suficient de mare (mai precis n > 18), N1(n) < 2n3 i deci algoritmul Strassen este mai rapid dect cel standard. n schimb, implementarea formulelor (1.37) necesita memorie suplimentara pentru rezultatele intermediare. Un numar de operaii i mai bun se obine daca, pentru calculul celor 7 produse de matrice n/2 n/2 din (1.37) se utilizeaza, recursiv, aceleai formule ale lui Strassen. La fiecare nivel de recursie dimensiunea problemei se njumataete (simplificnd, presupunem acum ca n este o putere a lui 2). Recursia are loc pna cnd se atinge o dimensiune n0 suficient de mica, pentru care algoritmul standard este mai eficient dect cel al lui Strassen. Numarul de operaii N(n) este definit de recurena N(n) = 7N( n 2 ) + 18 n2 4 , N(n0) = 2n3 0, (1.38) a carei soluie, pentru n n0, este de ordinul N(n) = O(nlog2 7), (log2 7 2.807). (1.39) Vezi problema 1.20 pentru soluia exacta. 46 CAPITOLUL 1. ALGORITMI ELEMENTARI n practica, dimensiunea n0 este mai mare dect 18 (dar de obicei n0 < 100), datorita operaiilor nearitmetice suplimentare necesare n algoritmul Strassen, n special alocarilor de memorie i apelurilor recursive. Aadar, acest algoritm este eficient pentru nmulirea matricelor mari, cu dimensiuni de ordinul sutelor sau miilor. n privina stabilitaii numerice algoritmul Strassen este inferior celui standard, de aceea trebuie utilizat cu anume precauii. Recomandam referinele [IX], [?] cititorului interesat.

1.8 Matrice normale

n aceasta seciune vom lucra n principal cu matrice patrate, din Rnn, specificnd explicit celelalte cazuri. O matrice A Rnn se numete normala daca ATA = AAT . Matricele normale au proprietai deosebit de interesante, cu precadere n cteva cazuri particulare pe care le enumeram acum i le vom discuta pe larg n continuare: 1. matricele simetrice, pentru care A = AT ; 2. matricele antisimetrice, care satisfac A = -AT ; 3. matricele ortogonale, pentru care ATA = I. Fie A Rnn; se numete forma biliniara asociata matricei A funcia f : Rn Rn R, f(x, y) = xTAy = Pn i=1Pn j=1 aijxiyj . Se observa ca funcia este liniara n fiecare din cele doua argumente luate separat, ceea ce i justifica numele. Matrice simetrice. Matricea A este simetrica daca A = AT , adica aij = aji, i, j 1 : n. Aadar simetria este faa de diagonala principala a matricei; se observa ca pentru o matrice nepatrata noiunea de simetrie nu are sens, A i AT neavnd aceleai dimensiuni. Suma i produsul cu scalari conserva simetria, adica daca matricele A, B sunt simetrice i R, atunci A + B i A sunt simetrice. n schimb, n general,

produsul AB nu este simetric; considerai, de exemplu, A = _ 1 1 12_ B=_11 1 1 _. Matrice antisimetrice. Matricea A este antisimetrica daca A = -AT , adica aij = -aji, i, j 1 : n. Evident, elementele sale diagonale sunt nule. Forma patratica asociata unei matrice simetrice este funcia g : Rn R, g(x) = xTAx = Pn i=1Pn j=1 aijxixj . Forma patratica este un polinom omogen de gradul 2, n n variabile; de asemenea, se observa ca g(x) = f(x, x), unde f este forma biliniara asociata matricei A 7.
7Formele

patratice se asociaza numai matricelor simetrice din urmatorul motiv: daca A nu e simetrica, lund A = (A + AT )/2 se vede ca xTAx = xT Ax, x Rn, i A este simetrica. Sa notam ca B = (A - AT )/2 se numete componenta antisimetrica, iar xTBx = 0.

1.8. MATRICE NORMALE 47 Matricele simetrice i formele patratice asociate pot avea semn, n sensul definit n continuare. O matrice simetrica A este pozitiv definita daca xTAx > 0, pentru orice vector x Rn, x 6= 0; se noteaza A > 0, dar, atenie, aceasta nu nseamna ca toate elementele matricei sunt pozitive; de exemplu, _ 2 -1 -1 2 _ este pozitiv definita, deoarece 2x2 1 - 2x1x2 + 2x2 2 > 0, [x1 x2]T 6= 0, nsa _ 1 2 2 1 _ nu este, deoarece x2 1 - 4x1x2 + x2 2 poate avea orice semn cnd x1, x2 R. Matricea A este pozitiv semidefinita daca xTAx 0, x Rn, ceea ce se noteaza A 0. O matrice simetrica A este negativ (semi)definita daca -A este pozitiv (semi)definita. O matrice simetrica care nu se ncadreaza n nici una dintre categoriile de mai sus se numete cu semn nedefinit. Suma i produsul cu scalari pozitivi conserva semnul; de exemplu, daca A, B sunt pozitiv definite i > 0, atunci A+B i A sunt pozitiv definite (demonstrai !). Propoziia 1.3 O submatrice principala a unei matrice pozitiv definite A este pozitiv definita. n particular, submatricele lider principale A[k], k 1 : n, sunt pozitiv definite i toate elementele diagonale sunt pozitive. Demonstraie. Fie I = {i1, i2, . . . , ir}, mulimea de indici definind o submatrice principala A a matricei A. Pentru orice vector nenul x Rr, definim vectorul y Rn prin: yik = xk, k = 1 : r, yi = 0, i 6 I. Evident, x 6= 0 implica y 6= 0, i din pozitivitatea matricei A se deduce: xTAx = yTAy > 0, adica A este pozitiv definita. _ Congruena. Doua matrice simetrice A, B se numesc congruente daca exista o matrice nesingulara T Rnn astfel nct B = T TAT . Evident, A = T-TBT-1. (Demonstrai ca simetria este conservata de transformarea de congruena.) Daca A, B sunt congruente i A > 0, atunci B > 0, adica transformarea de congruena conserva semnul. (ntr-adevar, xTBx = xT T TAT x = (T x)TA(T x) > 0, pentru ca A > 0 i T x 6= 0, daca x 6= 0, coloanele lui T fiind liniar independente.) Matrice ortogonale. O matrice patrata Q Rnn este ortogonala daca QTQ = In; evident, avem QT = Q-1, deci transpusa matricei este chiar inversa ei, iar QQT = In. Partiionnd Q pe coloane i exprimnd QTQ prin produse scalare, definiia este echivalenta cu qT i qj = 0, pentru i 6= j, i kqik2 = 1, adica matricea Q are coloanele vectori ortonormali. n cazul n care matricea nu este patrata, Q Rmn, daca QTQ = In, atunci

matricea are coloanele ortonormale (m > n i QQT 6= Im). Daca QQT = Im, atunci matricea are liniile ortogonale (m < n i QTQ 6= In). Vom considera n continuare doar matrice ortogonale patrate. Referitor la operaiile elementare, vom observa ca produsul a doua matrice ortogonale este o matrice ortogonala; ntr-adevar, daca Q, U sunt amndoua ortogonale, atunci (QU)T (QU) = UTQTQU = UTU = I. Aadar, matricele ortogonale formeaza grup n raport cu nmulirea, notat GO(n). 48 CAPITOLUL 1. ALGORITMI ELEMENTARI De asemenea, transpusa unei matrice ortogonale este ortogonala, deoarece (QT )TQT = QQT = I. n schimb, suma a doua matrice ortogonale nu este ortogonal a, nici produsul unei matrice ortogonale cu un scalar diferit de 1. Matricele ortogonale au proprietatea remarcabila de a conserva normele 2 Frobenius. Propoziia 1.4 Fie matricele ortogonale Q Rnn, U Rmm. Atunci: 1. kQxk2 = kxk2, x Rn, deci kQk2 = 1. 2. kUAQk2 = kAk2, kUAQkF = kAkF , A Rmn. Demonstraie. 1. kQxk2 2 = (Qx)T (Qx) = xTQTQx = xT x = kxk2. 2. Aplicnd punctul 1 avem kUAk2 = max kxk2=1 kU(Ax)k2 = max kxk2=1 kAxk2 = kAk2. Deoarece ImQ = Rn, aplicnd din nou punctul 1 avem kAQk2 = max kxk2=1 kAQxk2 = max kQxk2=1 kA(Qx)k2 = kAk2. Utiliznd cele doua rezultate anterioare se obine kUAQk2 = kAQk2 = kAk2. _ Revenim acum puin la noiunea de echivalena, prezentata n seciunea 1.4. Doua matrice A,B Rmn se numesc ortogonal echivalente la dreapta (stnga), daca exista o matrice ortogonala Q Rnn (Q Rmm) astfel nct A = BQ (A = QB). A i B se numesc ortogonal echivalente daca exista Q Rmm, P Rnn ortogonale astfel nct B = QTAP. Presupunnd A, B de rang maxim (deci coloanele lor sunt baze pentru ImA, respectiv ImB) i amintindu-ne ca A = QB se scrie pe coloane ai = Qbi, sa observam ca aT i aj = bT i QTQbj = bT i bj , deci unghiurile dintre vectorii componeni ai bazei se pastreaza la o transformare de echivalena ortogonala (la stnga). Proiectori. Fie o matrice P Rnn i un subspaiu S Rn. P se numete proiector pe S daca ImP = S i P2 = P. Justificare: daca x Rn, atunci Px ImP = S, deci aplicarea proiectorului unui vector oarecare l va duce pe acesta n S; Px este proiecia lui x pe S. Mai mult, P(Px) = Px, deci aplicarea proiectorului nu modifica proiecia. n general, orice matrice P astfel nct P2 = P se zice matrice de proiecie sau proiector, pentru ca ea proiecteaza pe S def = ImP. Analog, Q = I - P proiecteaza pe T = ImQ. Daca, n plus, matricea P este simetrica, atunci P se numete proiector ortogonal. Justificare: daca x Rn, atunci Px ImP i P(x - Px) = 0, deci x - Px KerP = KerPT , deci Px (x - Px), adica x se descompune ca suma a doi vectori ortogonali ca n figura 1.8. Daca matricea B Rnr are coloanele ortonormale (formnd deci o baza ortogonal a pentru ImB = S), atunci P = BBT este proiecie ortogonala pe S , mai mult, este unica (demonstrai !). Particularitai ale matricelor complexe. Noiunile de simetrie i ortogonalitate se pot defini i pentru matrice complexe. Avnd n vedere definiia produsului 1.9. SISTEME DE ECUA II LINIARE 49 "

" " " "" " " " " __________* 6 S x Px x - Px Fig. 1.8: Aciunea unui proiector ortogonal pe S asupra unui vector oarecare x scalar complex, mai utile sunt noiunile analoage obinute (formal) prin nlocuirea transpunerii prin transpunere i complex conjugare. Daca A Cnn, se noteaza cu AH = AT conjugata transpusei matricei A. Matricea A Cnn se numete normala daca AAH = AHA. Matricea A Cnn se numete hermitica daca AH = A. n acest caz scalarul xHAx este real pentru orice x Cn. O matrice hermitica A Cnn este pozitiv definita daca xHAx > 0, x Cn, x 6= 0. O matrice A Cnn este unitara daca AHA = I, adica are coloanele ortogonale n Cn. AA. Memorarea matricelor simetrice. Daca A Rnn este simetrica, deci A = AT , nu este necesara memorarea ntregii matrice, ci doar a unei jumatai, mai precis a triunghiului inferior sau a celui superior. Memorarea se poate face n variantele discutate pentru matrice triunghiulare, n seciunea 1.6. Desigur, acest mod de memorare va implica particularizari ale algoritmilor; vom exemplifica pentru produsul matrice-vector (Gaxpy) y Ax + y, presupunnd ca A este memorata prin triunghiul superior. n exprimarea elementului yi, yi yi +
n

Xj=1 aijxj = yi +
i-1

Xj=1 ajixj +
n

Xj=i aijxj , nlocuim elementele matricei A din linia i aflate n triunghiul inferior, prin cele egale aflate pe coloana i, n triunghiul superior, dupa cum este sugerat n figura 1.9. Acelai mod de memorare, printr-un singur triunghi, se utilizeaza i n cazul matricelor antisimetrice sau hermitice. Propunem cititorului adaptarea algoritmului Gaxpy n aceste doua cazuri.

1.9 Sisteme de ecuaii liniare

Un sistem de m ecuaii liniare cu n necunoscute are forma . . a11x1 + a12x2 + . . . + a1nxn = b1 a21x1 + a22x2 + . . . + a2nxn = b2 ... am1x1 + am2x2 + . . . + amnxn = bm , (1.40) unde aij R, bi R, pentru i = 1 : m, j = 1 : n, sunt date i xj , j = 1 : n, sunt 50 CAPITOLUL 1. ALGORITMI ELEMENTARI i

i Ax Fig. 1.9: Utilizarea elementelor din triunghiul superior n produsul dintre o matrice simetrica i un vector necunoscutele. n forma matriceala, sistemul este Ax = b, (1.41) A fiind numita matricea coeficienilor, b termenul liber (sau partea dreapta a sistemului), iar x vectorul necunoscutelor. Daca termenul liber al sistemului este vectorul nul (b = 0), sistemul este numit omogen. Prima caracteristica importanta a unui sistem liniar este relaia ntre m i n: cnd numarul de ecuaii este mai mare dect numarul de necunoscute (m > n), sistemul (1.41) se numete supradeterminat; cnd, dimpotriva, numarul de necunoscute este mai mare (n > m), sistemul este numit subdeterminat; n cazul unei matrice A patrate (m = n), sistemul (1.41) este determinat. A gasi soluia sistemului liniar (1.41) nseamna a calcula un vector x Rn astfel nct egalitatea Ax = b sa fie satisfacuta. Desigur, aceasta se poate realiza doar daca sistemul are ntr-adevar (cel puin) o soluie. Daca nu are, vom atribui o noua semnificaie noiunii de soluie, astfel nct sistemul sa aiba cel puin una. Daca exista mai multe soluii, va trebui selectata, ntr-un anume fel, una singura care va fi calculata. Condiiile n care sistemul (1.41) are soluie i n care aceasta este unica sunt bine cunoscute din algebra liniara. Teorema 1.2 Sistemul liniar (1.41) are soluie daca i numai daca b ImA. Daca ImA = Rm, adica A este epica (are liniile independente), atunci sistemul (1.41) are soluie pentru orice termen liber b Rm i reciproc. Demonstraia este imediata prin definiia lui ImA. _ 1.9. SISTEME DE ECUA II LINIARE 51 - _ _ _ _ _ __ y2 y3 y1 ImA ________1 b 6 ImA H H H H H HYb ImA 6 Fig. 1.10: ImA i posibili b pentru exemplul 1.2 Exemplul 1.2 Daca A = . 10 11 01. ., atunci ImA este planul y2 = y1 + y3. Daca b = [b1 b2 b3]T este astfel nct b2 = b1 + b3, atunci sistemul Ax = b are soluie deoarece condiia din teorema 1.2 este ndeplinita. Altfel, sistemul nu are soluie (vezi figura 1.10). _ Cnd soluia exista, unicitatea ei rezulta din Teorema 1.3 1) Daca x0 Rn este o soluie particulara a sistemului liniar (1.41), atunci mulimea tuturor soluiilor sistemului este varietatea liniara x0 + KerA = {x = x0 + z | z KerA}. 2) Soluia x este unica daca i numai daca KerA = {0}, adica matricea A este monica (are coloanele independente). Demonstraie. Daca Ax0 = b, atunci z = x - x0 satisface Az = 0, deci z KerA; reciproc, Az = 0 implica A(x0 + z) = b. _ Exemplul 1.3 Daca A = _ 1 1 0 0 1 1 _ i b = _ 2 1 _, atunci x0 = .

1 1 0. . este soluie particulara pentru Ax = b. Pe de alta parte, KerA este dreapta descrisa de _ x1 + x2 = 0 x2 + x3 = 0 , care trece prin punctele O(0, 0, 0) i P(1,-1, 1). Astfel, vectorii din KerA au forma Ker A z = . 1 -1 1. ., R, 52 CAPITOLUL 1. ALGORITMI ELEMENTARI x2 x3 x1 _ _ _ _ _ _ _ _9 O P @ @R x0 KerA x + KerA 6 _________: x Fig. 1.11: Soluiile (x0 soluie particulara, x soluie generala) sistemului din exemplul 1.3 i deci (vezi figura 1.11), x + KerA = y=. 1+ 1- . . | R.. . . _ Corolar 1.1 Cnd matricea A este patrata (A Rnn), atunci urmatoarele afirmaii sunt echivalente: i) ImA = Rn, i.e. sistemul (1.41) admite soluie unica pentru orice b Rn; ii) KerA = {0}; iii) A este inversabila. Daca sistemul are soluie, aceasta se poate scrie x = A-1b. (1.42) Daca sistemul este omogen, atunci soluia unica este x = 0. Trebuie subliniat ca (1.42) nu este o formula adecvata calculului numeric al soluiei sistemului Ax = b. Vom vedea n capitolul 2 metode numerice eficiente precise pentru a face acest lucru. Cnd sistemul (1.41) nu are soluie, este convenabil sa definim pseudosoluia x. ca vectorul care minimizeaza o norma a reziduului r = b-Ax. Este evident ca daca b ImA, atunci aceasta pseudosoluie devine soluie adevarata a sistemului.

Cnd sistemul (1.41) are mai multe soluii, o posibilitate de a selecta una dintre ele este de a defini soluia normala x. de lungime minima, lungimea fiind definita printr-o norma adecvata. Vom reveni asupra acestor definiii n capitolul 3, acolo unde vom prezenta algoritmi de calcul al soluiilor astfel definite. 1.9. SISTEME DE ECUA II LINIARE 53 Determinantul. Fie o matrice patrata A Rnn; determinantul matricei A este un numar real, notat det(A), pe care l vom defini recursiv. Daca A not = a R, atunci det(A) = a. Pentru A Rnn, det(A) =
n

Xj=1 (-1)j+1 a1j det( A1j), unde A1j R(n-1)(n-1) este matricea obinuta din A prin eliminarea liniei 1 coloanei j. Cteva proprietai importante ale determinantului sunt: 1. det(I) = 1; 2. det(A) = ndet(A), R; 3. det(AT ) = det(A); 4. det(AB) = det(A) det(B). O matrice A Rnn pentru care det(A) 6= 0 se numete nesingulara. Se poate demonstra ca noiunea de nesingularitate este echivalenta cu cea de inversabilitate. Sa notam de acum ca n rezolvarea numerica a sistemului determinat Ax = b nesingularitatea matricei A nu se verifica prin calculul determinantului, ci prin alte mijloace, mult mai eficiente i sigure, dupa cum se va vedea n capitolul 2. De aceea mai departe vom spune de cele mai multe ori inversabila n loc de nesingulara. AA. Rezolvarea sistemelor triunghiulare. Sistemul Ax = b este numit inferior (superior) triunghiular daca matricea A este inferior (superior) triunghiulara. O matrice triunghiulara este inversabila daca i numai daca toate elementele sale diagonale sunt nenule. Algoritmii pentru rezolvarea sistemelor triunghiulare sunt foarte simpli, deoarece necunoscutele pot fi calculate, ntr-o ordine precizata, prin substituie numerica. Sa consideramnti un sistem inferior triunghiular, Lx = b, unde L Rnn, cu lij = 0 pentru i < j, lii 6= 0, i 1 : n, i b Rn. Prima ecuaie este l11x1 = b1, din care x1 = b1 / l11. (1.43) n general, daca se cunosc x1, x2, . . . , xi-1, se poate rezolva a i-a ecuaie,
i-1

Xj=1 lijxj + liixi = bi, pentru a obine xi = . .bi i-1

Xj=1 lijxj. / lii. (1.44) Formulele (1.43) i (1.44) definesc un algoritm pentru calculul soluiei sistemului Lx = b, cunoscut ca metoda substituiei nainte. Algoritmul 1.16 (LTRIS Calculul soluiei unui sistem inferior triunghiular) (Se dau L Rnn, inferior triunghiulara, inversabila, b Rn. Se calculeaza soluia x a sistemului Lx = b.) 54 CAPITOLUL 1. ALGORITMI ELEMENTARI 1. x b 2. Pentru i = 1 : n 1. Pentru j = 1 : i - 1 1. xi xi - lijxj 2. xi xi / lii Comentarii. Bucla Pentru interioara se poate nlocui cu un apel la produsul

scalar DOT(L(i, 1 : i-1), x(1 : i-1)). Fiecare execuie a buclei Pentru i necesita 2(i - 1) flopi n 2.1.1, pentru calculul sumei din (1.44), i 1 flop pentru mparirea din 2.2. n total, sunt necesari NLTRIS = Pn i=1 (2(i - 1) + 1) = n(n - 1) + n = n2 flopi i MLTRIS = n(n+1)/2+2n+1 n2/2 locaii de memorie (pentru elemente n virgula mobila). Daca vectorul b nu este necesar ulterior, soluia x poate fi memorata n aceeai zona de memorie cu b; se spune ca se efectueaza calculul pe loc n b. Ulterior, vom apela acest algoritm prin x = LTRIS(L, b). _ Un algoritm cu aceleai proprietai se obine daca schimbam ordinea celor doua bucle, ceea ce revine la a parcurge matricea L pe coloane, nu pe linii. Substituia decurge acum astfel: dupa calculul lui x1 cu (1.43), se actualizeaza valorile celorlalte necunoscute xi, i = 2 : n (iniializate cu bi), cu termenul li1x1 care contribuie la sumele din (1.44); se poate calcula acum x2, dupa care se actualizeaza din nou restul necunoscutelor. Algoritmul 1.17 (LTRIS versiunea pe coloane) (Se dau L Rnn, inferior triunghiulara, inversabila, i b Rn. Se calculeaza soluia x a sistemului Lx = b.) 1. x b 2. Pentru j = 1 : n 1. xj xj / ljj 2. Pentru i = j + 1 : n 1. xi xi - lijxj Comentarii. Se observa ca bucla Pentru interioara se poate nlocui cu un apel la Saxpy(-x(j), L(j + 1 : n, :), x(j + 1 : n)). _ Datorita erorilor numerice, execuia algoritmului LTRIS nu produce x = L-1b, ci o soluie aproximativa x. Se poate demonstra ca acest x satisface (L + F)x = b, cu |fij | nM|lij | + O(2 M), (1.45) adica x este soluia unui sistem cu matricea coeficienilor uor perturbata faa de L. Aadar algoritmul LTRIS este numeric stabil. (Acesta este un rezultat tipic de analiza inversa a erorilor.) Practica numerica arata o acuratee a algoritmului LTRIS mult superioara celei indicate de (1.45). Pentru a rezolva sistemul superior triunghiular (nesingular) Ux = b, unde U Rnn este o matrice superior triunghiulara, cu uii 6= 0, i 1 : n, i b Rn, sa observam ca ultima ecuaie are forma unnxn = bn, iar de aici xn = bn/unn. (1.46) 1.9. SISTEME DE ECUA II LINIARE 55 Mai mult, daca xn, xn-1, . . . , xi+1, sunt deja calculate, atunci, din a i-a ecuaie, uiixi +
n

X j=i+1 uijxj = bi, se obine xi = . .bi n

X j=i+1 uijxj. /uii. (1.47) Din formulele (1.46) i (1.47), care definesc aa numita substituie napoi, obinem direct algoritmul urmator. Algoritmul 1.18 (UTRIS Calculul soluiei unui sistem superior triunghiular) (Se dau U Rnn, superior triunghiulara, inversabila, b Rn. Se calculeaza soluia x a sistemului Ux = b.) 1. x b 2. Pentru i = n : -1 : 1 1. Pentru j = i + 1 : n 1. xi xi - uijxj

2. xi xi/uii Perfect analog cu algoritmul 1.17 avem versiunea pe coloane a UTRIS. Algoritmul 1.19 (UTRIS versiunea pe coloane) (Se dau U Rnn, superior triunghiulara, inversabila, i b Rn. Se calculeaza soluia x a sistemului Ux = b.) 1. x b 2. Pentru j = n : -1 : 1 1. xj xj/ujj 1. Pentru i = 1 : j - 1 1. xi xi - uijxj Comentarii. Ca n cazul inferior triunghiular, efortul de calcul este NUTRIS = n2 flopi, iar memoria ocupata MUTRIS n2/2 locaii n virgula mobila. Vom apela acest algoritm prin x = UTRIS(L, b). i pentru algoritmul UTRIS este valabila o relaie de genul (1.45), i.e. algoritmul de mai sus este numeric stabil. Rezolvarea sistemelor triunghiulare este o operaie de nivel 2. _ AA. Sisteme triunghiulare cu parte dreapta multipla. Se spune despre un sistem de forma AX = B, cu A Rnn, B Rnp (rezultnd X Rnp), cu p > 1, ca este un sistem cu parte dreapta multipla. Desigur, a rezolva AX = B este matematic echivalent cu a calcula X = A-1B. Partiionnd X i B pe coloane, rezolvarea sistemului AX = B se poate reduce rezolvarea a p sisteme de forma (1.41), Axj = bj , j 1 : p. Consideram A inferior triunghiulara. Prezentam o varianta bloc de rezolvare a sistemului AX = B, adecvata calculatoarelor cu memorie ierarhica. Partiionam sistemul astfel 56 CAPITOLUL 1. ALGORITMI ELEMENTARI . ... A11 0 . . . 0 A21 A22 . . . 0 ... ... ...0 Am1 Am2 . . . Amm . .... . ... X1 X2 ... Xm . .... =. ... B1 B2 ... Bm . .... , (1.48) n care Aij Rrr, iar Bi,Xi Rrp. Evident, blocurile diagonale Aii sunt inferior triunghiulare. Se presupune ca r divide n i fie m = n/r. Sistemul (1.48) se rezolva n mod analog cu sistemul inferior triunghiular cu o singura parte dreapta, tratat mai sus. Bloc linia i a sistemului (1.48) conduce la o relaie asemanatoare cu (1.44):
i

Xj=1 AijXj = Bi = AiiXi = Bi i-1

Xj=1 AijXj, (1.49) din care se poate deduce un algoritm similar cu LTRIS (prin substituie nainte). Pe un calculator cu memorie ierarhica (figura 0.4c), A, B i X sunt stocate n memoria principala MP. Alegem r astfel nct blocurile Aij , Xj i Bi sa poata fi stocate simultan n memoria rapida MR (deci r2 + 2rp < dim(MR)). Algoritmul urmator se bazeaza pe ideea aducerii acestor blocuri n MR i apoi a efectuarii calculelor din (1.49). Algoritmul 1.20 (Se dau A Rnn, inferior triunghiulara, inversabil a, i B Rnp. Se rezolva sistemul AX = B. Se utilizeaza variabilele C, D, Z n MR.) 1. Pentru i = 1 : m 1. D Bi 2. Pentru j = 1 : i - 1 1. C Aij , Z Xj 2. D D - CZ 3. C Aii 4. rezolva sistemul triunghiular cu p.d.m. CZ = D (aplicnd de p ori algoritmul LTRIS pentru Czj = dj , j 1 : p) 5. Xi Z Comentarii. Toate operaiile aritmetice, n numar de pn2 (de p ori mai multe dect pentru algoritmul LTRIS aplicat unui sistem Axj = bj), se efectueaza cu operanzi din MR. Instruciunile 1.1, 1.2.1, 1.3, 1.5 reprezinta transferuri ntre MP i MR; numarul acestor transferuri este de
m

Xi=1 . .
i-1

Xj=1 (r2 + rp) + r2 + rp. pn2 2r + n2 2 , sensibil mai mic dect n cazul n care operanzii s-ar fi aflat n MP (atunci ar fi fost aproximativ 2pn2 accesuri la MP). 1.9. SISTEME DE ECUA II LINIARE 57 Rezolvarea sistemelor triunghiulare cu parte dreapta multipla face parte din grupul operaiilor de nivel 3. _ AA. Inversarea matricelor triunghiulare. Fie L Rnn o matrice inferior triunghiulara; presupunem ca L este inversabila, adica lii 6= 0, i 1 : n. Pentru a calcula X = L-1, utilizam egalitatea evidenta LX = In, pe care o partiionam pe coloane Lxj = ej , j 1 : n, (1.50) xj = Xej fiind cea de-a j-a coloana a matricei X. Sistemul inferior triunghiular (1.50) poate fi rezolvat n mod eficient prin adaptarea algoritmului LTRIS la forma particulara a termenului drept. ntr-adevar, sistemul (1.50) poate fi partiionat astfel: " L(j) 11 0

L(j) 21 L(j) 22 #_ x
j

x j _= _ 0 e j _, (1.51) unde L(j) 11 este submatricea de dimensiune (j - 1) (j - 1) din colul stnga sus al matricei L e j = [1 0 . . . 0]T Rn-j+1. Din (1.51) rezulta ( L(j) 11 x j = 0, L(j) 21 x j + L(j) 22 x j = e j. (1.52) Deoarece L este inversabila , prin urmare, la fel sunt L(j) 11 i L(j) 22 , relaia (1.52) devine ( x j = 0, L(j) 22 x j = e j. (1.53) Aceasta relaie stabilete un fapt important, dat de Propoziia 1.5 Inversa unei matrice inferior triunghiulare nesingulare este inferior triunghiulara. n concluzie, matricele inferior triunghiulare inversabile formeaza grup n raport cu nmulirea matriceala. Din (1.53) poate fi dedus un algoritm de calcul al inversei unei matrice nesingulare, avnd la baza urmatoarea schema de calcul: L-1 1. Pentru j = 1 : n 1. Daca j > 1 atunci x j= 0 2. x j = LTRIS(L(j) 22 , e j) Se poate observa ca inversa calculata poate fi memorata n aceeai zona de memorie ca matricea L. Explicitnd rezolvarea sistemului inferior triunghiular, obinem 58 CAPITOLUL 1. ALGORITMI ELEMENTARI Algoritmul 1.21 (LINV Calculul inversei unei matrice inferior triunghiulare) (Se da L Rnn, inferior triunghiulara i inversabila. Se calculeaza pe loc n L inversa acesteia.) 1. Pentru j = 1 : n 1. ljj xjj = 1 / ljj

2. Pentru i = j + 1 : n 1. lij xij = -_Pi-1 k=j likxkj_ / lii Comentarii. Numarul de operaii necesar este NLINV = n +
n-1 n

Xj=1 X i=j+1 2(i - j) n3 3 . Memoria necesara este MLINV n2/2 locaii n virgula mobila. Se vede acum ca rezolvarea sistemului liniar Lx = b folosind relaia x = L-1b (adica LINV) este ineficienta n comparaie cu algoritmul direct LTRIS. _ Pentru a calcula inversa unei matrice superior triunghiulare nesingulare U Rnn, trebuie rezolvata ecuaia matriceala UX = In, sau, echivalent, cele n ecuaii liniare Uxj = ej , j = 1 : n, (1.54) unde xj este coloana j a matricei X = U-1. Utiliznd partiia " U(j) 11 U(j)
12

0 U(j) 22 #_ x
j

x j _= _ e
j

0 _, (1.55) unde U(j) 11 este submatricea de dimensiune j j din colul stnga sus a lui U e j = [0 0 . . . 0 1]T Rj , i urmnd o cale asemanatoare celei parcurse pentru inversarea matricelor inferior triunghiulare, se obin analoagele relaiei (1.53), propoziiei 1.5 i algoritmului LINV. Avem: ( U(j) 11 x j = e j, x j = 0. (1.56) Propoziia 1.6 Inversa unei matrice superior triunghiulare nesingulare este superior triunghiulara. Aadar matricele superior triunghiulare inversabile formeaza grup n raport cu nmulirea. Daca sistemele (1.56) sunt rezolvate n ordine inversa (pentru j = n, n-1, . . . , 1), se poate vedea cu uurina ca elementele matricei inverse se pot memora peste cele ale matricei originale, pe masura ce sunt calculate. Vom obine deci urmatorul algoritm. 1.10. VALORI I VECTORI PROPRII 59 Algoritmul 1.22 (UINV Calculul inversei unei matrice superior triunghiulare) (Se da U Rnn, superior triunghiulara i inversabila. Se calculeaza pe loc n U inversa acesteia.) 1. Pentru j = n : -1 : 1 1. ujj xjj = 1/ujj

2. Pentru i = j - 1 : -1 : 1 1. uij xij = -_Pj k=i+1 uikxkj_/uii Comentarii. Ca n cazul inferior triunghiular, NUINV n3/3 i MUINV n2/2. Algoritmii de inversare a matricelor triunghiulare sunt numeric stabili. _

1.10 Valori i vectori proprii

Fie A Cnn. Numarul C se numete valoare proprie a matricei A daca exista un vector v Cn, v 6= 0, astfel nct Av = v. (1.57) n acest caz, v se numete vector propriu al matricei A, asociat lui . Se observa ca daca v este vector propriu al matricei A, atunci i u = v este vector propriu al lui A, corespunznd aceleiai valori proprii, oricare C, 6= 0. Aadar, vectorii proprii sunt determinai numai ca direcie, nu i ca marime. Teorema 1.4 Fie A Cnn. Scalarul C este valoare proprie a matricei A daca i numai daca matricea I - A este singulara. Mai mult, matricea A are exact n valori proprii (numarnd separat valorile proprii multiple), care coincid cu zerourile polinomului caracteristic p() = det(In - A). (1.58) Daca A Rnn, valorile proprii apar n perechi complex conjugate (iar vectorii proprii asociai acestor perechi pot fi alei complex conjugai). Demonstraie. Daca este valoare proprie a matricei A, atunci exista un vector v 6= 0 astfel nct Av = v, deci (In - A)v = 0 i n consecina In - A este singulara. Reciproc, daca pentru un C matricea In - A este singulara, atunci exista v Cn, v 6= 0, astfel nct (In - A)v = 0, adica Av = v i deci este valoare proprie a matricei A. Deoarece In -A este singulara daca i numai daca satisface det(I -A) = 0, iar p() = det(I -A) este un polinom monic de grad n, din teorema fundamentala a algebrei rezulta ca (1.58) are n zerouri care coincid cu valorile proprii ale matricei A. Daca A este reala, polinomul caracteristic p() are coeficieni reali i atunci zerourile sale complexe apar n perechi complex conjugate (pentru vectori proprii, vezi problema 1.28). _ Ca o consecina directa a faptului ca valorile proprii sunt radacinile ecuaiei det(In - A) = 0, sa observam ca daca A este diagonala sau triunghiulara, atunci valorile sale proprii sunt chiar elementele diagonale. 60 CAPITOLUL 1. ALGORITMI ELEMENTARI Notam prin (A) = {1, 2, . . . , n} = { C | det(I - A) = 0} (1.59) mulimea valorilor proprii ale matricei A Cnn (cu repetarea valorilor proprii multiple). Mulimea (A) se numete spectrul matricei A. Transformari de asemanare. Suntem interesai de transformarile care conserv a spectrul unei matrice date; se observa ca valorile proprii nu sunt conservate n urma premultiplicarii sau postmultiplicarii cu o alta matrice. Doua matrice A,B Cnn sunt numite asemenea daca exista o matrice nesingular a T Cnn astfel nct B = TAT-1. (1.60) T se numete transformare de asemanare. Daca T este unitara (ortogonala, n cazul real), atunci A i B sunt ortogonal asemenea. Teorema 1.5 Doua matrice asemenea A,B Cnn au acelai spectru, adica (A) = (B). Mai mult, daca T este matricea de transformare din (1.60) i daca vA este vector propriu al matricei A corespunzator valorii proprii (A), atunci vectorul vB = T vA (1.61) este vector propriu al matricei B, corespunzator aceleiai valori proprii. Demonstraie. Daca A i B satisfac (1.60), atunci det(I - B) = det(I - TAT-1) = det(T (I - A)T-1) = = det(T ) det(I - A) det(T-1) = det(I - A), deci (A) = (B). Daca vA este vector propriu al matricei A corespunzator valorii

proprii , atunci AvA = vA, sau TAT-1T vA = T vA, de unde BvB = vB i deci (1.61) este adevarata. _ Matrice simple. O matrice A Cnn care are un set complet de n vectori proprii liniar independeni se numete simpla. Acesta este cazul generic i totodat a cel n care proprietaile spectrale ale matricelor sunt mai vizibile. Se poate demonstra ca daca matricea A are n valori proprii distincte, atunci ea este simpla. Teorema 1.6 Fie A Cnn o matrice simpla i V Cnn matricea ale carei coloane sunt vectorii proprii ai lui A. Atunci V -1AV = _ Cnn (1.62) este o matrice diagonala. Demonstraie. V = [v1 v2 . . . vn] i Avj = jvj , j 1 : n, unde j sunt valorile proprii ale lui A. Atunci AV = [Av1 Av2 . . . Avn] = [1v1 2v2 . . . nvn] = 1.10. VALORI I VECTORI PROPRII 61 = [v1 v2 . . . vn] diag(1, 2, . . . , n) = V _. Deoarece vectorii vj , j 1 : n, sunt liniar independeni, matricea V este nesingulara i (1.62) este adevarata. _ Aadar o matrice simpla poate fi diagonalizata peste C printr-o transformare de asemanare. Nu aceasta este i abordarea numerica a problemei, care va fi discutata pe larg n capitolul 4. Subspaii invariante. Fie A Cnn i un subspaiu S Cn; spunem ca S este A-invariant daca Av S, v S. (Definiia este identica pentru A Rnn, S Rn.) Se observa uor ca daca S are o baza formata din vectori proprii ai matricei A, atunci S este A-invariant. Reciproca acestei afirmaii nu este, n general, adevarata. AA. Calculul vectorilor proprii ai matricelor triunghiulare. Fie U Rnn o matrice superior triunghiulara. Aa cum am observat mai sus, valorile sale proprii sunt i = uii, i 1 : n. Dorim acum sa calculam vectorii proprii. 1. Consideramnti cazul n care valorile proprii sunt distincte doua cte doua. Fie T = jI-U; vectorul propriu vj va fi calculat rezolvnd sistemul liniar T vj = 0, care poate fi partiionat . T11 y T13 0 wT T33 . . . v
j

vjj v
j

. . = 0 T11v j + vjjy + T13v j= 0 wT v j= 0 T33v j= 0 , (1.63) unde v j Rj-1, v

Rn-j . Valorile proprii fiind distincte, T11 i T33 sunt nesingulare. Din (1.63), T33v j = 0, i deci v j = 0. Ecuaia wT v j = 0 este ntotdeauna satisfacuta iar vjj poate avea o valoare nenula oarecare, sa zicem vjj = 1. n fine, sistemul superior triunghiular T11v j = -y are soluie unica, care se poate calcula cu algoritmul UTRIS. Vectorii proprii astfel calculai sunt liniar independeni, deoarece matricea V = [v1 v2 . . . vn] este superior triunghiulara unitate; rezultatul e natural, deoarece U este simpla. Direciile vectorilor proprii sunt unic definite, marimile lor fiind alese arbitrar prin constrngerea vjj = 1. 2. Daca exista valori proprii multiple, atunci T va avea mai multe valori diagonale nule. Putem alege n continuare, n (1.63), v j = 0, vjj = 1. Acum nsa, T11 poate fi singulara, deci se pune problema daca sistemul superior triunghiular T11v j = -y are soluie. Procednd prin substituie napoi, presupunem ca vjj = 1, vj-1,j , . . . , vi+1,j au fost calculate i scriem ecuaia i a acestui sistem tiivij = ij , cu ij = -tij j j-1

X k=i+1 tikvkj . (1.64) Daca tii 6= 0, evident ca n (1.64) vij = ij / tii i substituia poate continua. Daca tii = 0, sunt doua variante: fie ij = 0, i atunci vij din (1.64) poate avea o valoare arbitrara, de exemplu vij = 1, i substituia continua; fie ij 6= 0, i atunci (1.64) nu este satisfacuta, deci sistemul (1.63) nu are soluie vj ; n acest caz, matricea U este defectiva, adica nu are n vectori proprii liniar independeni. 62 CAPITOLUL 1. ALGORITMI ELEMENTARI Consideraiile de mai sus conduc la urmatorul algoritm general, n care matricea T = j - U nu se formeaza explicit Algoritmul 1.23 (TRV Calculul vectorilor proprii ai unei matrice superior triunghiulare) (Se da U Rnn, superior triunghiulara. Se calculeaza vectorii proprii ai matricei U n matricea V ; coloanele nule din V desemneaza cazurile de defectivitate.) 1. V 0 2. Pentru j = 1 : n 1. vjj 1 2. Pentru i = j - 1 : -1 : 1 1. uij +Pj-1 k=i+1 uikvkj 2. Daca uii 6= ujj atunci % tii 6= 0 1. vij /(ujj - uii) altfel daca = 0 atunci 2. vij 1 altfel % 6= 0 3. vkj 0, cu k = i + 1 : j 4. treci la urmatorul j Comentarii. Instruciunile 2.2.2.1, 2.2.2.2, 2.2.2.3 implementeaza cele trei cazuri posibile n rezolvarea ecuaiei (1.64); n 2.2.2.3 se refac zerourile din coloana j a matricei V , pentru a se marca necalcularea unui vector propriu. Numarul de operaii este de cel mult n3/3 flopi. Deoarece calculul valorii este afectat de erori numerice, decizia = 0 se implementeaza efectiv printr-un test de genul || < cM, unde c > 1 este o constanta mica. n unele programe de calcul, cazurile de defectivitate sunt pur i simplu ocolite; atunci cnd uii = ujj , se ia forat n 2.2.2.1 ujj -uii = M i se lucreaza ca i cum matricea U are avea valori proprii distincte. Se obin astfel ntotdeauna n

vectori proprii distinci; n cazurile de defectivitate, vectorii proprii corespunzatori aceleiai valori proprii sunt aproape (cu o aproximaie de ordinul preciziei de calcul) coliniari. _ Cazul matricelor inferior triunghiulare se trateaza analog i e lasat ca exerciiu.

1.11 Rutinele BLAS

Am prezentat n seciunile anterioare algoritmi simpli adecvai calculatoarelor cu memorie ierarhica: 1.15 pentru nmulirea de matrice i 1.20 pentru rezolvarea sistemelor triunghiulare cu parte dreapta multipla. Pentru majoritatea problemelor, nsa, algoritmii sunt complicai i efortul gasirii unei idei de adaptare poate fi considerabil; programatorul ar fi obligat sa cunoasca detalii arhitecturale i ale sistemului de operare pentru calculatorul n cauza. n plus, programul realizat ar funciona doar pe tipul respectiv de calculator, transferul pe un altul implicnd rescrierea pariala. Pentru a uura sarcina programatorului i pentru a realiza portabilitatea, a aparut ideea scrierii unor biblioteci de rutine fundamentale, puine la numar, dar 1.11. RUTINELE BLAS 63 S real simpla precizie C complex simpla precizie D real dubla precizie Z complex dubla precizie GE - generala GB - generala banda SY - simetrica SB - simetrica banda SP - simetrica mpachetat HE - hermitica HB - hermitica banda HP - hermitica mpachetat TR - triunghiulara TB - triungh. banda TP - triungh. mpachetat Tabelul 1.1: Convenii de nume n BLAS: tipuri de date i structuri de matrice implementate foarte eficient pe majoritatea calculatoarelor (de catre programatori profesioniti). Atunci, un program obinuit va folosi ct mai mult aceste rutine, ct mai puin alt gen de operaii; eficiena este asigurata, datorita adecvarii rutinelor de baza la arhitectura, iar efortul de programare este redus, datorita numarului redus al rutinelor. Astfel s-au nascut (ncepnd din 1973, pna n 1989) bibliotecile BLAS (Basic Linear Algebra Subroutines rutine de baza n algebra liniara), care s-au impus ca un standard unanim acceptat i sunt implementate pe marea majoritate a calculatoarelor de performana. Exista trei nivele BLAS, n fapt trei biblioteci distincte al caror coninut trateaza operaii asemanatoare din punct de vedere al datelor implicate: nivel 1: dedicat operaiilor vectoriale, de genul Saxpy sau DOT, care necesita O(n) flopi. BLAS-1 este adecvat calculatoarelor vectoriale. nivel 2: dedicat operaiilor matrice-vector, de tipul Gaxpy sau rezolvare de sisteme triunghiulare, care necesita O(n2) flops. i BLAS-2 are aplicabilitate n special pe calculatoare vectoriale. nivel 3: operaii matrice-matrice, ca nmulirea de matrice sau rezolvarea de sisteme triunghiulare cu parte dreapta multipla, care necesita O(n3) flops. BLAS-3 este eficient ndeosebi pe calculatoare cu memorie ierarhica. Prezentamn continuare cteva din rutinele BLAS, insistnd asupra nivelului 3, deoarece calculatoarele cu memorie ierarhica sunt tot mai raspndite. Convenii de nume. Scrise iniial n FORTRAN, numele rutinelor sunt foarte scurte (cel mult ase caractere) i de aceea greu de neles fara explicaii asupra conveniilor utilizate pentru stabilirea lor. n tabelul 1.1, prima litera a numelui unei rutine indica tipul datelor, iar urmatoarele doua (numai pentru nivelele 2 3), structura matricelor argumente ale funciei. n fine, ultimele trei (uneori doua) litere tot pentru nivelele 2 i 3 codifica operaia executata, dupa cum se va vedea imediat. BLAS 1. Prezentamn tabelul 1.2 cele mai importante rutine ale nivelului 1 al BLAS, fara a preciza argumentele lor, ci numai operaia realizata; ca i pna acum, x, y sunt vectori n Rn sau Cn, iar scalar. Prima litera a numelui, care arata tipul datelor, este precizata n ultima coloana. 64 CAPITOLUL 1. ALGORITMI ELEMENTARI Nume Operaie Prefixe

xSWAP x . y S, D, C, Z xSCAL x x S, D, C, Z xCOPY x y S, D, C, Z xAXPY y x + y S, D, C, Z xDOT dot xT y S, D xDOTU dot xT y C, Z xDOTC dot xHy C, Z xNRM2 nrm2 kxk2 S, D, C, Z Tabelul 1.2: Rutine din BLAS 1 Deoarece argumentele funciilor sunt asemanatoare, exemplificam cu un apel tipic: SAXPY(N, ALFA, X, INCX, Y, INCY) INCX reprezinta distana, n memorie, ntre doua elemente succesive ale vectorului al carui prim element se gasete la adresa X. Argumentul INCX permite utilizarea ca vectori, n SAXPY, att a coloanelor ct i a liniilor unei matrice. Sa presupunem ca o matrice A este memorata ntr-un tablou m n, n ordinea coloanelor (adica a11, a21, . . . , am1, a12, . . . ). Atunci coloana j este reprezentata astfel: X este adresa elementului a1j (adica A + mjd, unde d este numarul de octei necesari memorarii unui element), iar INCX = 1. Pentru a reprezenta linia i a matricei A, luam X adresa elementului ai1 (adica A + id), iar INCX = m. BLAS 2. Nivelul 2 al BLAS conine rutine pentru trei operaii: produsul matrice-vector, rezolvarea sistemelor triunghiulare i produsul exterior, n diverse variante pe care le enumeramn continuare. Rutinele care executa nmulire matrice-vector de forma y Ax + y au numele de tipul xyyMV, n care primele trei litere sunt cele din tabelul 1.1 (toate combinaiile permise). Rezolvarea sistemelor (inferior sau superior) triunghiulare este efectuata de rutinele xyySV, unde yy este TR, TB sau TP. Pentru produsul exterior, rutina de baza este xGER, care executa operaia A xyT + A, unde A este o matrice. Nu dam un exemplu de apel, deoarece descrierea matricelor se face ca la rutinele de nivel 3, explicate mai jos, iar cea a vectorilor ca n rutinele de nivel 1. BLAS 3. Vom prezenta acum cele 6 rutine alese a face parte din setul BLAS nivel 3 n [?]. Ele sunt puine la numar, deoarece munca de creare a unei rutine optime este dificila; chiar daca rutinele rezolva probleme relativ simple, arhitectura complicata implica folosirea aproape exclusiva a limbajului de asamblare; pe un calculator CRAY, s-a ajuns chiar la 100 000 linii de program pentru o, n aparena banala, nmulire de matrice. Operaiile implementate de rutinele BLAS nivel 3 sunt esenialmente n numar de doua: nmulirea de matrice, n cteva variante, i rezolvarea de sisteme triunghiulare cu parte dreapta multipla. Numele rutinelor sunt deja intrate n uzul curent 1.11. RUTINELE BLAS 65 ? 6 M ? 6 -_K LDA Fig. 1.12: Memorarea (pe coloane a) unei matrice ntr-un tablou respecta regulile din tabelul 1.1; pentru a nu ncarca expunerea, nu vom prezenta modul efectiv de apel dect pentru prima rutina prezentata. n cele ce urmeaza, A, B, C snt matrice oarecare, cu dimensiuni oarecare, dar adecvate operaiilor, sau simetrice i patrate, T este o matrice triunghiulara, superior sau inferior, iar i snt scalari. 1. xGEMM (GEneralMatrix Multiplication) nmulirea matrice-matrice, n cazul general. Modul complet de apel este: xGEMM(TRANSA, TRANSB, M, N, K, ALFA, A, LDA, B, LDB, BETA, C, LDC)

Operaiile efectuate de rutina snt prezentate n tabelul urmator; C este ntotdeuna de dimensiune m n. TRANSA = N TRANSA = T TRANSB = N C . AB + C C . ATB + C A este m k, B este k n A este k m, B este k n TRANSB = T C . ABT + C C . ATBT + C A este m k, B este n k A este k m, B este n k Argumentele rutinei devin acum mai clare: TRANSA i TRANSB arata daca matricele A, B se transpun sau nu; M, N, K sunt dimensiunile efective ale matricelor; LDA, LDB, LDC conin dimensiunea principala a variabilelor n care sunt stocate matricele, presupuse memorate pe coloane. Semnificaia acestor variabile dimensionale este mai clara n figura 1.12. Elementele de pe aceeai linie se afla la distana LDA n memorie. Se mai poate observa ca patru variabile (analog cu A, M, K, LDA) sunt suficiente pentru utilizarea oricarei submatrice a matricei din figura. Rutina acopera toate variantele de nmulire a doua matrice, operaia de baza fiind C AB + C; transpunerea nu este lasata utilizatorului, deoarece poate fi mare consumatoare de timp daca se executa explicit (n xGEMM nu se ntmpla aa); la fel, nmulirea matrice-scalar. Cum toate celelalte rutine BLAS nivel 3 au argumente de apelare asemanatoare, vom prezenta n continuare doar operaia de baza implementata. 2. xSYMM (SYmetric Matrix Multiplication) nmulire matrice-matrice, cu una din matrice simetrica: 66 CAPITOLUL 1. ALGORITMI ELEMENTARI C AB + C. (1.65) 3. xSYRK (SYmmetric Rank-K update) actualizare de rang k a unei matrice simetrice; A are dimensiune n k. C AAT + C. (1.66) De obicei, k < n; de aici numele rutinei, AAT avnd rang k. 4. xSYR2K actualizare de rang 2k a unei matrice simetrice: C ABT + BAT + C. (1.67) 5. xTRMM (TRiangular Matrix Multiplication) nmulire matrice-matrice, cu una dintre matrice triunghiulara: B TB. (1.68) Evident, exista i varianta n care T este la dreapta; de asemenea, T poate fi inferior sau superior triunghiulara. 6. xTRSM (TRiangular system Solver, with Multiple right hand term) calculeaz a soluia unui sistem liniar triunghiular, cu parte dreapta multipla (TX = B): X T-1B. (1.69) i pentru aceasta rutina exista versiuni n care necunoscuta este n stnga (de genul XT = B); T este fie superior, fie inferior triunghiulara. Ca pentru orice standard, alegerea setului de mai sus poate parea mai mult sau mai puin arbitrara; principala justificare a alegerii este numarul mare de algoritmi din algebra liniara care folosesc rutine din setul propus. Vom prezenta n cursul acestei lucrari i algoritmi scrii astfel nct marea majoritate a operaiilor sa apara n execuia unor rutine BLAS de nivel 3. Pentru a cuantifica eficiena lor, introducem ponderea operaiilor de nivel 3 prin raportul P3(n) = N3(n) Ntotal(n) . (1.70) Ntotal(n) reprezinta numarul total de flopi necesari execuiei algoritmului, iar N3(n) numarul de flopi executai n rutinele din BLAS-3; ele depind (cel puin) de dimensiunea problemei n. Pe un calculator cu memorie ierarhica, un algoritm este cu att mai bun cu ct P3(n) este mai apropiata de 1; evident, P3(n) 1. Motivul este clar: pe un astfel de calculator, operaiile din rutinele BLAS-3 se executa mai rapid dect celelalte deoarece memoria rapida este utilizata optim. 1.12. PROBLEME 67

1.12 Probleme

P 1.1 Demonstrai ca un subspaiu liniar n Rn este un spaiu vectorial. P 1.2 Scriei algoritmi pentru calculul normelor 1 i ale unui vector x Rn. P 1.3 (Cauchy-Buniakowski-Schwarz) Demonstrai ca |xT y| kxk2kyk2, x, y Rn. P 1.4 Gasii vectori liniar independeni x, y Rn care sa satisfaca kx+ykp = kxkp+kykp, pentru p = 1, 2,. P 1.5 Demonstrai (1.6) pentru n = 2, apoi n cazul general. P 1.6 (Ortogonalizare Gram-Schmidt) Fie b1, . . . , bp o baza a unui subspaiu S Rn. Sa se gaseasca o baza ortogonala a1, . . . , ap a lui S procednd prin inducie: a1 = b1 ak+1 = Pk i=1 _ikai + bk+1. (Evident, baza devine ortonormala prin normalizare.) P 1.7 Fie x Rm i y Rn doi vectori, i A = xyT Rmn produsul lor exterior. Demonstrai ca rangA = 1. P 1.8 Fie matricele A Rn1n2 , B Rn2n3 , C Rn3n4 . Sugerai un algoritm de calcul al produsului ABC. P 1.9 Demonstrai ca maxi,j |aij | kAk2 mnmaxi,j |aij |, A Rmn. P 1.10 Demonstrai (1.29) i gasii matrice pentru care inegalitaile (fie cele de majorare, fie cele de minorare) devin egalitai. P 1.11 Fie B o submatrice a matricei A. Aratai ca kBkp kAkp. P 1.12 Demonstrai ca: 1. kAk2 = maxkxk2=1,kyk2=1 |yTAx|; 2. kAT k2 = kAk2; 3. kATAk2 = kAk2 2. P 1.13 Demonstrai ca daca A Rnn este inversabila, atunci pentru orice norma matriceal a subordonata unei norme vectoriale avem 1 / kA-1k = minkxk=1 kAxk. P 1.14 Fie L Rnn o matrice strict inferior triunghiulara. Demonstrai ca Ln = 0. P 1.15 Fie A,B Rnn doua matrice banda, prima de laime p, a doua de laime q. Demonstrai ca AB este o matrice banda de laime p + q i scriei un algoritm pentru calculul acestui produs. P 1.16 Scriei un algoritm pentru calculul produsului dintre o matrice inferior triunghiular a i una superior triunghiulara. P 1.17 Aratai ca algoritmul 1.14 de nmulire de matrice inferior triunghiulare se poate executa pe loc n A. Cum trebuie modificat pentru a se putea executa pe loc n B ? P 1.18 Aratai ca submatricele lider principale ale unor matrice triunghiulare, Hessenberg, simetrice sunt triunghiulare, Hessenberg, respectiv simetrice. Este afirmaia valabila pentru matrice ortogonale ? P 1.19 Presupunem ca dispunei de un algoritm general de rezolvare a sistemelor liniare. Indicai un mod eficient de rezolvare a sistemului Ax = b atunci cnd A, partiionata ca n (1.31), este patrata i bloc superior triunghiulara. P 1.20 Demonstrai ca numarul de operaii N(n) al algoritmului Strassen, respectnd recurena (1.38), este N(n) = 2n3 0 + 6n2
0

nlog 7
0

nlog 7 - 6n2 0.

68 CAPITOLUL 1. ALGORITMI ELEMENTARI

P 1.21 Daca A Rnn este simetrica pozitiv definita, demonstrai ca kxkA = xTAx este o norma vectoriala. (Indicaie: matricele simetrice sunt ortogonal diagonalizabile.) P 1.22 Fie A Rnn, simetrica pozitiv definita. Demonstrai ca A este inversabila i ca A-1 este pozitiv definita. P 1.23 a. Este clar ca o matrice triunghulara i simetrica este diagonala. Cum este o matrice triunghiulara i antisimetrica ? b. Demonstrai ca o matrice triunghiulara i ortogonala este diagonala. c. Putei extinde rezultatul n cazul matricelor triunghiulare i normale ? P 1.24 Scriei algoritmi eficieni pentru rezolvarea sistemului Ax = b, cu A Rnn b Rn, n cazurile: a. A inferior bidiagonala, adica aij = 0 pentru i < j sau i > j + 1. b. A inferior triunghiulara i banda de laime p (aij = 0 pentru i < j sau i > j + p). c. A superior bidiagonala. d. A superior triunghiulara i banda de laime p. P 1.25 Adaptai algoritmii LINV i UINV pentru inversarea matricelor inferior, respectiv

superior bidiagonale. P 1.26 Propunei algoritmi de rezolvare a sistemelor inferior (superior) triunghiulare, folosind operaiile vectoriale DOT sau Saxpy. P 1.27 Prezentai un algoritm de rezolvare a sistemului inferior triunghiular Lx = b, tiind ca matricea L este memorata compact, pe linii (i.e. sunt memorate doar elementele din triunghiul inferior, n ordinea l11, l21, l22, l31 etc. Dar daca L este memorata pe coloane ? P 1.28 Fie A Rnn i x = u + iv Cn un vector propriu al sau, cu u, v Rn, v 6= 0. Demonstrai ca: a. u - iv este vector propriu al matricei A. b. Vectorii u i v sunt liniar independeni iar subspaiul generat de ei n Rn este A-invariant. P 1.29 Daca matricea A Rnn are spectrul _(A) = {_1, . . . , _n}, atunci tr(A) = Pn i=1 _i, iar detA = Qn i=1 _i. Putei generaliza ? P 1.30 Fie A Rnn, simetrica pozitiv definita. Demonstrai ca toate valorile proprii ale matricei A sunt (reale ) pozitive.

Capitolul 2

Rezolvarea sistemelor de ecuaii liniare


n acest capitol vom prezenta principalele metode de rezolvare a sistemelor determinate de ecuaii liniare Ax = b, (2.1) unde A Rnn este o matrice inversabila, iar b Rn este un vector dat. Aa cum am vazut n seciunea 1.9, n virtutea condiiei de inversabilitate, sistemul (2.1) are o soluie unica x Rn. n practica numerica actuala se folosesc doua categorii principale de metode numerice sigure pentru determinarea acestei soluii: Metode directe, bazate pe reducerea sistemului (2.1), printr-o secvena finita de transformari elementare, la unul sau doua sisteme triunghiulare, care se rezolva utiliznd procedurile de substituie cunoscute din seciunea 1.9 (algoritmii LTRIS i UTRIS). Din aceasta categorie fac parte metodele de eliminare gaussiana i de factorizare compacta LU, care sunt recomandate pentru sisteme de dimensiuni medii, sa zicem n < 500, dar aceasta limita depinde de puterea calculatorului pe care rezolvam sistemul. Metode iterative, bazate pe construirea recursiva a unui r de vectori care converge catre soluia sistemului (2.1). Aceste metode sunt recomandate pentru sisteme de dimensiuni foarte mari, sau/i atunci cnd matricea A are o structura speciala, eventual rara. Acest capitol este dedicat prezentarii celor mai importante metode directe de rezolvare a sistemelor liniare. Deoarece n reducerea sistemului (2.1) la forma triunghiulara transformarile matricei A sunt primordiale, n primele patru seciuni ale capitolului vom trata aceste transformari ca subiect de sine statator. Algoritmii descrii vor fi utilizai n seciunea 2.5 pentru rezolvarea efectiva a unui sistem (2.1), de forma generala. Ca probleme conexe, n seciunea 2.6 vor fi prezentai algoritmi de calcul al inversei i determinantului unei matrice. Urmatoarele doua seciuni sunt dedicate 69 70 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUA II LINIARE analizei condiionarii unui sistem liniar i respectiv stabilitaii numerice a algoritmilor prezentai. De asemenea, sunt descrise unele metode de mbunataire a acurateii soluiei numerice obinute. n fine, ultimele seciuni ale capitolului se ocupa de cazuri particulare de sisteme liniare cu structura banda, bloc, simetrice i pozitiv definite care apar frecvent n practica.

2.1 Transformari elementare


Transformarile matricei A necesare pentru rezolvarea sistemului (2.1) se pot descrie concis i elegant n termeni de operaii matriceale, mai precis ca produs ntre A i anumite matrice elementare. (n loc de produs sau nmulire, vom vorbi despre aplicarea asupra lui A a matricei de transformare corespunzatoare.) Definiia 2.1 O matrice inferior triunghiulara elementara (ITE) de ordin n i indice k este o matrice de forma Mk = In - mkeT k , (2.2) unde mk = [0 0 . . . 0 k+1,k . . . nk ]T (2.3) este un vector avnd primele k componente nule, iar ek este vectorul unitate de indice k. Din motive ce vor fi evidente ulterior, Mk se mai numete transformare elementar a sau gaussiana, mk se numete vector Gauss, iar scalarii ik se numesc multiplicatori (gaussieni). Structura unei matrice elementare inferior triunghiulare de ordinul n i indice k este Mk = . .......... 10...0...0 01...0...0 ...... 00...1...0 0 0 . . . -k+1,k . . . 0 ...... ...0 0 0 . . . -nk . . . 1 . ........... . Notam de acum faptul ca o matrice ITE este complet definita de vectorul mk din (2.3); n orice algoritm, matricea Mk nu se memoreaza integral, ci doar prin vectorul mk, i.e. prin multiplicatorii ik, i = k + 1 : n. Principalele proprietai ale unei astfel de matrice sunt rezumate n urmatoarea propoziie. Propoziia 2.1 a) O matrice ITE este inversabila M-1 k = In + mkeT k . (2.4) 2.1. TRANSFORMARI ELEMENTARE 71 b) Fie x Rn un vector dat, iar Mk o matrice ITE precizata. Atunci vectorul transformat y = Mkx are elementele (Mkx)i = _xi, pentru i = 1 : k, xi - ikxk, pentru i = k + 1 : n. (2.5) c) Fie x Rn. Daca xk 6= 0, atunci exista o matrice ITE Mk astfel nct vectorul transformat y = Mkx are ultimele n - k componente nule, mai precis (Mkx)i = _xi, pentru i = 1 : k, 0, pentru i = k + 1 : n. (2.6) Daca xk = 0, atunci pentru orice Mk Mkx = x. (2.7) Demonstraie. a) Evident, det(Mk) = 1, adica Mk este inversabila. Mai mult, Mk(In + mkeT k ) = (In - mkeT k )(In + mkeT

k)

= In - mk(eT

kmk)eT k = In

deoarece, din (2.3), eT kmk = 0. Deci (2.4) este adevarata. b) Utiliznd (2.2), obinem Mkx = (In - mkeT k )x = x - mkeT k x = xi - xkmk. Scriind relaia de mai sus pe componente i innd seama de (2.3), obinem (2.5). c) innd seama de (2.5) i alegnd ik = xi/xk, i = k + 1 : n, (2.8) rezulta (Mkx)i = 0, pentru i = k + 1 : n. Daca xk = 0, atunci (2.5) conduce direct la (2.7). De observat ca, daca xk 6= 0, atunci matricea ITE definita de vectorul Gauss cu elementele din (2.8) este unica matrice ITE de indice k care introduce zerouri n ultimele n - k componente ale vectorului x. _ Dupa cum vom vedea n seciunea urmatoare, proprietaile (2.6) i (2.7) sunt cruciale n reducerea unei matrice la forma triunghiulara. Similar se introduce noiunea de matrice superior triunghiulara elementara (STE) sau transformare elementara retrograda, n care vectorul mk are ultimele k componente nule. Propunem cititorului formularea i demonstrarea analoagei propozit iei 2.1. Vom introduce acum noiunea de matrice de permutare, care permite descrierea concisa a interschimbarilor de linii sau coloane n termeni de operaii matriceale. Definiia 2.2 O matrice Pij Rnn obinuta din matricea unitate In prin interschimbarea a doua coloane (sau linii) i i j, adica o matrice de forma (aici i < j): Pij = [e1 e2 . . . ei-1 ej ei+1 . . . ej-1 ei ej+1 . . . en] = . .... Ii-1 01 Ij-i-1 10 In-j . ..... 72 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUA II LINIARE n care toate elementele nefigurate sunt nule, se numete (matrice de) permutare elementara (PE). Daca (i1, i2, . . . , in) este o permutare a mulimii 1 : n, atunci matricea P = [ei1 ei2 . . . ein] este o matrice de permutare. Desigur, un produs de matrice elementare de permutare este o matrice de permutare , reciproc, orice matrice de permutare se poate exprima ca produs de matrice PE. Proprietaile matricelor elementare de permutare sunt expuse n urmatoarea propoziie, a carei demonstraie e evidenta. Propoziia 2.2 a) O PE este ortogonala i simetrica, deci P-1 ij = Pij , iar det Pij = -1. b) Premultiplicarea unei matrice A cu PE Pij interschimba linia i cu linia j din A, adica: eT k (PijA) = eT k A, pentru k 6= i, j, eT j A, pentru k = i, eT

A, pentru k = j. c) Postmultiplicarea unei matrice A cu PE Pij interschimba coloana i cu coloana j din A, adica: (APij )ek = (Aek, pentru k 6= i, j, Aej , pentru k = i, Aei, pentru k = j.
i

2.2 Triangularizare prin eliminare gaussiana

Fie A Rnn (cazul A Cnn este identic) o matrice nu neaparat inversabila. Eliminarea gaussiana este o metoda de reducere a matricei A la forma superior triunghiulara prin aplicarea la stnga lui A a unei secvene Mk, k = 1 : n - 1, de matrice ITE, fiecare aleasa astfel nct sa anuleze elementele subdiagonale n coloana corespunzatoare ak a matricei A. Pentru prezentarea metodei avem nevoie de doua rezultate cu caracter tehnic, a caror demonstraie e lasata cititorului. Propoziia 2.3 Fie A Rnn. a) Daca L Rnn este inferior triunghiulara, atunci 1 (LA)[k] = L[k]A[k]. b) Daca Li Rnn, i = 1 : p, sunt matrice inferior triunghiulare, atunci (L1L2 . . .LpA)[k] = L[k] 1 L[k] 2 . . .L[k] p A[k]. Urmatoarea teorema stabilete condiiile n care este posibila reducerea unei matrice la forma triunghiulara, utiliznd transformari ITE.
1Reamintim

ca A[k] def = A(1 : k, 1 : k) este submatricea lider principala de ordin k a matricei A.

2.2. TRIANGULARIZARE PRIN ELIMINARE GAUSSIANA 73 Teorema 2.1 Daca matricea A Rnn satisface condiia (i) submatricele lider principale A[k], k = 1 : n - 1, sunt nesingulare, atunci exista o matrice inferior triunghiulara unitate M astfel nct matricea MA = U este superior triunghiulara. Daca A este nesingulara, atunci U este nesingulara. Demonstraia este constructiva, adica descrie o procedura pentru reducerea efectiva a matricei A la forma superior triunghiulara U. Procedura consta n n - 1 pa. Pasul 1. Fie A1 = A i a1 = Ae1 prima sa coloana. Prin ipoteza, A[1] 1 = A[1] = = a11 6= 0. Din propoziia 2.1, exista o matrice ITE M1 astfel nct (M1a1)i = _a11, pentru i = 1, 0, pentru i = 2 : n, adica matricea A2 = M1A1 are toate elementele subdiagonale ale primei coloane egale cu zero: A2 = . ..... a(2) 11 a(2) 12 . . . a(2)
1n

0 a(2) 22 . . . a(2)
2n

0 a(2) 32 . . . a(2)
3n

............ 0 a(2) n2 . . . a(2)


nn

...... . Pasul k. Presupunem ca matricea curenta Ak = Mk-1 . . .M2M1A este superior triunghiulara n primele k - 1 coloane, i.e. are toate elementele subdiagonale ale acestor coloane egale cu zero. Aplicnd propoziia 2.3, obinem A[k] k = M[k] k-1 . . .M[k] 1 A[k], unde matricele M[k] i sunt toate inferior triunghiulare unitate, deci det(M[k] i ) = 1, i = 1 : k -1. Deoarece A[k] k este superior triunghiulara, n virtutea condiiei (i) din enunul teoremei avem det(A[k] k) =
k

Yi=1 a(k) ii = det(A[k]) 6= 0, adica elementul a(k) kk , numit pivot, este nenul. Consideram partiionarea pe coloane a matricei Ak: Ak = [ a(k) 1 a(k) 2 . . . a(k) k . . . a(k) n ]. Putem utiliza acum propoziia 2.1 pentru a conchide ca exista o matrice ITE Mk astfel nct (Mka(k) k )i = 0, pentru i = k + 1 : n. Mai mult, premultiplicarea cu Mk a matricei Ak nu altereaza primele k - 1 coloane i n particular zerourile deja 74 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUA II LINIARE introduse la pai anteriori, deoarece a(k) kj = 0, pentru j = 1 : k - 1 (vezi propoziia 2.1, punctul c). Prin urmare matricea Ak+1 = MkAk (2.9) este superior triunghiulara n primele k coloane. Astfel, procedura de introducere a zerourilor subdiagonale, nceputa la pasul 1 i continuata pna la pasul n - 1 (inclusiv), are ca rezultat matricea U def = An = Mn-1Mn-2 . . .M1A, (2.10) evident superior triunghiulara. Mai mult, deoarece produsul matriceal conserva structura inferior triunghiulara unitate (vezi propoziia 1.2), matricea M = Mn-1Mn-2 . . .M1 este inferior triunghiulara unitate iar, daca A este nesingulara, atunci i U rezulta nesingulara, ca produs a doua matrice nesingulare. _ Demonstraia de mai sus furnizeaza o procedura de triangularizare a unei matrice, cunoscuta sub numele de eliminare gaussiana. Procedura este bazata pe urmatoarea schema, n care calculele se desfaoara pe loc n tabloul A ElG 1. Pentru k = 1 : n - 1 1. Se calculeaza matricea ITE Mk (adica multiplicatorii ik, i = k +1 : n), astfel nct (MkA)i = 0, pentru i = k +1 : n 2. Se calculeaza A MkA La pasul 1.1, multiplicatorii gaussieni ik sunt calculai conform (2.8) prin ik = a(k) ik /a(k)

, i = k + 1 : n, (2.11) i pot fi memorai pe poziiile elementelor anulate. Prin instruciunea 1.2 a schemei de mai sus, toate rezultatele intermediare sunt depuse n spaiul de memorie ocupat de matricea A; vezi i figura 2.1. La pasul 1.2, transformarea A MkA este echivalenta cu calculul aj Mkaj , pentru toate coloanele aj = Aej ale matricei A. Transformarea poate fi efectuata eficient innd cont ca primele k-1 coloane ale matricei A nu sunt afectate. Coloana k este modificata prin anularea elementelor subdiagonale. Pentru restul submatricei, innd seama de propoziia 2.1b, coloana transformata are elementele aij (Mkaj)i = ((In - mkeT k )aj)i = aij - ikakj , i = k + 1 : n, (2.12) unde j = k + 1 : n. Relaiile (2.11) i (2.12) mpreuna cu schema de calcul ElG definesc algoritmul de eliminare gaussiana detaliat n continuare. Condiia de terminare corecta a algoritmului este ca numerele a(k) kk , k = 1 : n-1, numite elemente pivot, sa fie nenule, adica submatricele lider principale A[k], k = 1 : n - 1, ale matricei iniiale, sa fie nesingulare. 2.2. TRIANGULARIZARE PRIN ELIMINARE GAUSSIANA 75 . ......... u11 u12 . . . u1k u1,k+1 . . . u1n 21 u22 . . . u2k u2,k+1 . . . u2n ...... k1 k2 . . . ukk uk,k+1 . . . ukn k+1,1 k+1,2 . . . k+1,k a(k+1) k+1,k+1 . . . a(k+1)
kk k+1,n

...... n1 n2 . . . nk a(k+1) n,k+1 . . . a(k+1)


nn

. .......... . ........ u11 u12 . . . u1k . . . u1n 21 u22 . . . u2k . . . u2n ...... k1 k2 . . . ukk . . . ukn ...... ...... n1 n2 . . . nk . . . unn . ......... Dupa pasul k n final Fig. 2.1: Coninutul matricei A dupa pasul k al eliminarii gaussiene i la terminarea execuiei algoritmului Algoritmul 2.1 (G Eliminare gaussiana) (Se da A Rnn, cu submatricele lider principale A[k], k = 1 : n - 1, nesingulare. Se calculeaz a matricea superior triunghiulara U i matricele ITE M1, . . . , Mn-1, astfel nct U = Mn-1Mn-2 . . .M1A. Matricea U se memoreaza n triunghiul superior al lui A, inclusiv diagonala, iar multiplicatorii gaussieni ik care definesc transformarileMk se memoreaza n triunghiul inferior al matricei A, pe poziiile elementelor anulate.) 1. Pentru k = 1 : n - 1 1. Pentru i = k + 1 : n 1. aik ik = aik/akk 2. Pentru j = k + 1 : n

1. Pentru i = k + 1 : n 1. aij aij - ikakj O forma vectoriala a eliminarii gaussiene se poate deduce imediat din cea de mai sus, prin nlocuirea buclelor 1.1 i 1.2.1 cu operaiile corespunzatoare: scalare, respectiv Saxpy (aceasta din urma putnd fi dedusa din (2.12), care se mai scrie Mkaj = aj - akjmk). Avem Algoritmul 2.2 (G varianta vectoriala) 1. Pentru k = 1 : n - 1 1. A(k + 1 : n, k) mk = A(k + 1 : n, k)/A(k, k) 2. Pentru j = k + 1 : n 1. A(k + 1 : n, j) A(k + 1 : n, j) - A(k, j)mk Comentarii. n oricare dintre cele doua forme de mai sus, algoritmul necesita NG =
n-1

Xk=1 (n - k + 2(n - k)2) = n(n - 1) 2 +2 n(n - 1)(2n - 1) 6 2n3 3 , 76 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUA II LINIARE operaii n virgula mobila (flopi), iar memoria ocupata este de MG = n2 locaii (elemente n virgula mobila). _ Algoritmul G poate fi utilizat pentru rezolvarea sistemului liniar Ax = b atunci cnd A are toate submatricele lider principale nesingulare (inclusiv A[n] = A). ntr-adevar, sistemul Ax = b are aceeai soluie ca sistemul superior triunghiular Ux = Mn-1Mn-2 . . .M1b, n care matricea U este furnizata de algoritmul G. Acest sistem triunghiular poate fi rezolvat cu algoritmul UTRIS. Semnificaia operaiilor din algoritmul G este imediata; introducerea de zerouri subdiagonale n coloana k nseamna eliminarea necunoscutei xk din ecuaiile k+1 : n; buclele 1.2 i 1.2.1 reprezinta scaderea din ecuaiile i = k+1 : n a ecuaiei k nmulite, pe rnd, cu multiplicatorii ik, cu scopul de a elimina xk din fiecare ecuaie i. Totu, nesingularitatea submatricelor lider principale ale matricei A nu este o condiie necesara pentru existena i unicitatea soluiei sistemului (2.2). De aceea, algoritmul G trebuie modificat astfel nct sa produca rezultatul dorit i atunci cnd unele submatrice lider principale sunt singulare, dar A este nesingulara.

2.3 Strategii de pivotare

Daca o submatrice lider principala A[k] este singulara, atunci, la pasul k al procedurii de eliminare gaussiana, pivotul a(k) kk este nul; deci, conform propoziiei 2.1c, nu exista nici o matrice ITEMk care sa anuleze, prin premultiplicare, elementele subdiagonale ale coloanei k din Ak. Modificarea algoritmului G recomandata pentru a evita aceasta dificultate consta ntr-o interschimbare de linii (sau/i coloane), care aduce n poziia pivotului un element nenul. Un alt motiv pentru permutarea de linii coloane este asigurarea stabilitaii numerice a procesului de calcul. O explicaie intuitiva este ca, atunci cnd un proces matematic nu poate fi definit pentru o anumita valoare critica a unui parametru (de exemplu A[k] singulara), exista anse mari ca procesul numeric corespunzator sa fie instabil atunci cnd parametrul efectiv este n vecinatatea valorii critice. n cazul nostru, trebuie evitai pivoii mici (n modul), corespunzatori cazului n care submatricele lider principale sunt aproape singulare; astfel se mbunataete stabilitatea numerica a algoritmului.

2.3.1 Pivotare pariala


Vom modifica algoritmul G dupa cum urmeaza. La pasul k al procedurii de triangularizare a matricei A Rnn (vezi demonstraia teoremei 2.1), se alege ca pivot primul element maxim n modul din coloana k. Presupunnd ca acest element se gasete n linia ik i este nenul, i.e. a(k) ikk 6= 0, interschimbarea liniilor k i ik, obinuta matriceal prin nmulirea la stnga a lui Ak cu PE Pkik , va muta a(k) ikk n poziia (k, k), astfel nct acest element devine noul pivot. Pentru a evita alterarea structurii matricei obinute pna la pasul k (superior triunghiulara n primele k-1 coloane), trebuie sa alegem ik k. Vezi figura 2.2. 2.3. STRATEGII DE PIVOTARE 77 Ak = . .......... u11 . . . u1k . . . u1n 0 ...... a(k) kk . . . a(k)
kn

0... a(k) ikk . . . a(k)


ikn

0... a(k) nk . . . a(k)


nn

. ........... PkikAk = . .......... u11 . . . u1k . . . u1n 0 ...... a(k) ikk . . . a(k)
ikn

0... a(k) kk . . . a(k)


kn

0... a(k) nk . . . a(k)


nn

. ........... Fig. 2.2: Pasul k al eliminarii gaussiene cu interschimbare de linii; a(k) kk este nul sau prea aproape de zero; n PkikAk, noul pivot este a(k) ikk i are o valoare buna (suficient de mare, n modul) Pentru simplitate, vom nota matricea Pikk cu Pk. Pasul k al algoritmului G devine 1. Se determina cel mai mic (primul) ik k astfel nct |aikk| = maxi=k:n |aik|. 2. Se interschimba liniile ik i k, adica A PkA.

3. Se determina matricea ITE Mk astfel nct (MkA)ik = 0, i = k + 1 : n. 4. Se aplica transformarea A MkA. Astfel la pasul k are loc transformarea A Ak+1 = MkPkAk, (2.13) unde matricea Tk = MkPk se numete transformare elementara stabilizata. Procesul global, cunoscut sub numele de eliminare gaussiana cu pivotare pariala, conduce n cele din urma la matricea superior triunghiulara U def = An = Mn-1Pn-1Mn-2Pn-2 . . .M1P1A. (2.14) Aceasta egalitate afirma ca orice matrice A este echivalenta la stnga cu o matrice superior triunghiulara, iar matricea de transformare poate fi un produs de transformari elementare stabilizate. Algoritmul corespunzator este prezentat n continuare. Algoritmul 2.3 (GPP Eliminare gaussiana cu pivotare pariala) (Se da A Rnn, nesingulara. Se calculeaza matricea superior triunghiular a U, matricele ITE M1, . . . , Mn-1 i PE P1, . . . , Pn-1 astfel nct (2.14) sa fie satisfacuta. Matricea U se memoreaza n triunghiul superior al lui A, inclusiv diagonala, iar multiplicatorii gaussieni ik care definesc matricele Mk se memoreaza n triunghiul inferior al lui A. ntregii ik care definesc PE Pk, sunt memorai ntr-un vector p de dimensiune n - 1, cu elementele p(k) = ik, pentru k = 1 : n - 1.) 78 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUA II LINIARE 1. Pentru k = 1 : n - 1 1. Se determina cel mai mic ik k : n astfel nct |aikk| = maxi=k:n |aik|. 2. p(k) ik 3. Pentru j = k : n % interschimba liniile k i ik 1. akj . aikj 4. Pentru i = k + 1 : n 1. aik ik = aik/akk 5. Pentru j = k + 1 : n 1. Pentru i = k + 1 : n 1. aij aij - ikakj Comentarii. Operaiile suplimentare necesare n algoritmul GPP, faa de algoritmul G, apar numai n cautarea pivotului i constau n comparaiile necesare gasirii maximului din instruciunea 1.1; numarul de comparaii este
n-1

Xk=1 (n - k + 1) n2/2 2n3/3, deci pivotarea pariala nu este costisitoare (relativ la numarul de operaii aritmetice). Necesarul de memorie este MGPP = n2. _ Un rezultat important referitor la algoritmul GPP este dat de Teorema 2.2 Daca A Rnn este nesingulara, atunci algoritmul GPP se va executa complet iar matricea superior triunghiulara U rezultata n final, vezi (2.14), este nesingulara. Demonstraie. Algoritmul GPP nu se executa complet daca, la un pas k, elementul pivot aikk = 0. ntr-un astfel de caz, deoarece pivotul este maximn modul pe coloana (sub diagonala), toate elementele aik, i = k : n, sunt nule, deci matricea Ak este singulara (vezi structura matricei Ak, cu A[k] k superior triunghiulara). Matricele ITE i PE fiind nesingulare, singularitatea matricei Ak = Mk-1Pk-1 . . .M1P1A implica A singulara; contradicie. Deci, toi pivoii aikk 6= 0 i algoritmul se execut a complet. Nesingularitatea matricei U rezulta din nesingularitatea tuturor matricelor din termenul drept din (2.14). _

2.3.2 Pivotare completa

Proprietai numerice superioare se pot obine daca, la pasul k al eliminarii gaussiene, pivotul maxim n modul este cautat printre elementele a(k) ij , i = k : n, j = k : n,

adica n ntregul col dreapta jos al matricei Ak. Primul element cu modul maxim 2.3. STRATEGII DE PIVOTARE 79 Ak = . .......... u11 . . . u1k . . . u1jk . . . u1n 0 ......... a(k) kk . . . a(k)
kjk kn

. . . a(k) 0... a(k) ikk . . . a(k)


ikjk ikn

. . . a(k) 0... a(k) nk . . . a(k)


njk nn

. . . a(k) . ........... PkikAkQkjk = . .......... u11 . . . u1jk . . . u1k . . . u1n 0 ......... a(k)
ikjk

. . . a(k) ikk . . . a(k)


ikn

0... a(k)
kjk

. . . a(k) kk . . . a(k)
kn

0... a(k)
njk

. . . a(k) nk . . . a(k)
nn

. ........... Fig. 2.3: Pasul k al eliminarii gaussiene, cu interschimbari de linii i coloane (e.g. n ordinea explorarii pe coloane), sa zicem aikjk , este mutat n poziia pivot (k, k), prin intermediul a doua interschimbari, una de linii, cealalta de coloane, exprimate matriceal prin nmulirea lui Ak la stnga, respectiv la dreapta, cu PE Pkik , respectiv Qkjk ; vezi figura 2.3. Notnd Pkik cu Pk i Qkjk cu Qk, pasul k al algoritmului G devine: 1. Se determina cei mai mici ik i jk astfel nct |aikjk | = maxi=k:n,j=k:n |aij |. 2. Se interschimba liniile ik i k, adica A PkA. 3. Se interschimba coloanele jk i k, adica A AQk.

4. Se determina matricea ITE Mk astfel nct (MkA)ik = 0, i = k + 1 : n. 5. Se aplica transformarea A MkA. Astfel, la pasul k are loc transformarea A Ak+1 = MkPkAkQk, (2.15) iar procesul global de calcul, cunoscut sub numele de eliminare gaussiena cu pivotare completa, conduce la matricea superior triunghiulara A U def = Mn-1Pn-1 . . .M1P1AQ1 . . .Qn-1. (2.16) Algoritmul rezultat este prezentat n continuare. Algoritmul 2.4 (GPC Eliminare gaussiana cu pivotare completa) (Se da A Rnn, nesingulara. Se calculeaza matricea superior triunghiular a U, matricele ITE M1, . . . , Mn-1 i PE P1, Q1, . . . , Pn-1, Qn-1, astfel nct (2.16) sa fie satisfacuta. Matricea U se memoreaza n triunghiul superior al lui A, inclusiv diagonala, iar multiplicatorii gaussieni ik care definesc matricele Mk se memoreaza n triunghiul inferior al matricei A. ntregii ik i jk, definind PE Pk, respectiv Qk, sunt memorai n vectorii p, respectiv q, de dimensiune n - 1, astfel nct p(k) = ik i q(k) = jk, pentru k = 1 : n - 1.) 80 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUA II LINIARE 1. Pentru k = 1 : n - 1 1. Se determina ik k : n i jk k : n astfel nct |aikjk | = maxi=k:n,j=k:n |aij |. 2. p(k) ik 3. q(k) jk 4. Pentru j = k : n % interschimba liniile k i ik 1. akj . aikj 5. Pentru i = 1 : n % interschimba coloanele k i jk 1. aik . aijk 6. Pentru i = k + 1 : n 1. aik ik = aik/akk 7. Pentru j = k + 1 : n 1. Pentru i = k + 1 : n 1. aij aij - ikakj Comentarii. Operaiile suplimentare ce apar n algoritmul GPC, faa de algoritmul G, sunt doar cele necesare cautarii pivotului, ca i la pivotarea pariala; acum nsa, numarul de comparaii este
n-1

Xk=1 (n - k + 1)2 =
n

Xk=2 k2 n3/3; spre deosebire de pivotarea pariala, pivotarea completa introduce un numar de comparaii de acelai ordin de marime cu numarul operaiilor aritmetice; aceasta poate conduce la creterea semnificativa a timpului de execuie, de aceea pivotarea completa trebuie folosita doar atunci cnd se dorete o mare sigurana n calculul rezultatului. Vom prezenta ulterior argumentele care conduc la alegerea strategiei de pivotare. Necesarul de memorie este i aici MGPC = n2. _ Teorema urmatoare corespunde teoremei 2.2, demonstraia fiind asemanatoare. Teorema 2.3 Daca A Rnn este nesingulara, atunci algoritmul GPC se executa complet, iar matricea superior triunghiulara rezultata U din (2.16) este nesingulara. Observaia 2.1 Algoritmii GPP i GPC pot fi modificai cu uurina pentru a putea triangulariza i matrice singulare. n GPP, dupa pasul 1.1, trebuie adaugata urmatoarea condiie: daca aikk = 0, adica aik = 0, i = k : n, atunci pentru acest k, instruciunile 1.2 1.5 nu trebuie executate. n acest caz matricea U = An poate avea elemente diagonale nule n GPC, daca aikjk = 0, adica aij = 0, i = k : n, j = k : n, atunci algoritmul se termina la pasul k, deoarece matricea U = Ak este deja superior triunghiulara, mai precis superior trapezoidala, iar rangA = k - 1. Desigur, datorita erorilor de

rotunjire inerente, gasirea unui pivot nul este un eveniment destul de rar. Deoarece este dificil de stabilit, n general, o tolerana de trunchiere o astfel nct |aikjk | < o sa fie considerat pivot nul, algoritmul GPC nu se folosete pentru determinarea rangului unei matrice; proceduri mai sigure sunt oferite de algoritmii de factorizare QR cu pivotarea coloanelor i DVS, vezi capitolele 3 i 5. _ 2.4. FACTORIZ ARI LU 81

2.4 Factorizari LU

n multe situaii, este convenabil a exprima o matrice data ca produs a doua matrice triunghiulare. Aceasta forma poate fi utilizata pentru a simplifica anumite calcule implicnd matricea respectiva. Definiia 2.3 Fie A Rnn. Daca exista o matrice inferior triunghiulara L Rnn i o matrice superior triunghiulara U Rnn astfel nct A = LU (2.17) atunci se spune ca A admite o factorizare (sau descompunere) LU. L i U se numesc factori triunghiulari ai matricei A. n general, orice exprimare a matricei A ca produs de doua matrice triunghiulare (cu eventuale permutari) se numete factorizare triunghiulara. Daca A Rnn este o matrice care are o factorizare LU, iar D este o matrice diagonala nesingulara, atunci, D-1 fiind de asemenea diagonala, (2.17) poate fi scrisa n forma A = LU = LDD-1U = LU, (2.18) unde L = LD este inferior triunghiulara i U = D-1U este superior triunghiulara. Daca D 6= I, atunci factorizarile (2.17) i (2.18) difera i deci factorizarea LU, daca exista, nu este unica. De aceea este util a se introduce definiia urmatoare. Definiia 2.4 Fie A Rnn. Daca exista matricele L Rnn inferior triunghiulara unitate, U Rnn superior triunghiulara unitate i D Rnn diagonala astfel nct A = LDU, atunci expresia de mai sus este numita factorizare LDU a matricei A. Aratamn continuare n ce condiii o factorizare LDU exista i este unica. Teorema 2.4 O matrice A Rnn are o unica factorizare LDU daca i numai daca submatricele lider principale A[k], k = 1 : n - 1, sunt nesingulare. Demonstraie. Demonstram aici doar existena factorizarii LDU, pentru unicitate vezi problema 2.5. n condiiile enunate, din teorema 2.1, care constituie baza eliminarii gaussiene, rezulta ca exista M inferior triunghiulara unitate (deci inversabila) astfel nct MA = U, cu U superior triunghiulara. Cu notaia L = M-1, matrice inferior triunghiulara unitate, avem A = LU. Notnd acum D = diag(u11, u22, . . . , unn), U = D-1U, atunci A = LDU, cu L, D, U satisfacnd condiiile descompunerii LDU. 82 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUA II LINIARE Reciproc, se poate demonstra prin reducere la absurd vezi problema 2.6 ca daca factorizarea LDU este unica, atunci submatricele A[k], k = 1 : n - 1, sunt nesingulare. _ Factorizarile LU utilizate n practica numerica curenta asociaza matricea diagonal a D din cu una dintre matricele U, L ale factorizarii LDU. Astfel se obin, respectiv: factorizarea Doolittle A = LU, cu L inferior triunghiulara unitate i U superior triunghiulara, factorizarea Crout A = LU, cu L inferior triunghiulara i U superior triunghiular a unitate. Din teorema 2.4 rezulta ca ambele factorizari, Doolittle i Crout, exista i sunt unice daca i numai daca submatricele lider principale A[k], k = 1 : n - 1, sunt nesingulare. Vom pastra n continuare aceasta ipoteza, specificnd cazurile n care ea nu este necesara.

2.4.1 Factorizari LU rezultate din eliminarea gaussiana

Factorizarea Doolittle este calculata chiar de algoritmul G de triangularizare gaussian a ! Este una din surprizele placute ale calculului numeric. Teorema 2.5 Algoritmul G, aplicat matricei A Rnn, cu detA[k] 6= 0, k = 1 : n - 1, calculeaza factorizarea Doolittle A = LU, cu L inferior triunghiulara unitate i U superior triunghiulara. Factorii L (mai puin elementele diagonale) U sunt memorai peste A. Demonstraie. Algoritmul G produce matricele ITE Mk, k = 1 : n - 1, astfel nct din (2.10) rezulta A = LU, cu L = (Mn-1 . . .M2M1)-1 i U memorata peste A. Aadar L = M-1 1 M-1 2 . . .M-1 n-1. Dar (vezi propoziia 2.1), M-1 k = In + mkeT k , deci L = (In + m1eT 1 )(In + m2eT 2 ) . . . (In + mn-1eT n-1) = In +
n-1

Xk=1 mkeT k + S, unde S este o suma de matrice de forma T = . . .mpeT pmqeT q. . . cu p < q. Deoarece eT pmq = 0, pentru orice p < q, obinem T = 0 i S = 0. Astfel, L = In +
n-1

Xk=1 mkeT k= . ....... 10...00 21 1 . . . 0 0 31 32 . . . 0 0 ... ...... n-1,1 n-1,2 . . . 1 0 n1 n2 . . . n,n-1 1 . ........ , 2.4. FACTORIZ ARI LU 83 deci matricea L este formata chiar din multiplicatorii gaussieni memorai n A, n algoritmul G. _ Vom studia acum legatura ntre algoritmul GPP de eliminare gaussiana cu pivotare pariala i factorizarile LU. Teorema 2.6 Triangularizarea (2.14) (Mn-1Pn-1 . . .M1P1A = U) a matricei A Rnn, obinuta prin algoritmul GPP, este echivalenta cu factorizarea Doolittle a matricei A cu liniile permutate, adica PA = LU, (2.19) unde P = Pn-1 . . . P1. n partea subdiagonala, coloana k 1 : n - 1 a matricei L este o permutare a vectorului Gauss corespunzator mk; mai precis, daca

hk = Pn-1 . . .Pk+1mk, atunci L(k + 1 : n, k) = hk(k + 1 : n). Demonstraie. Se poate verifica uor echivalena dintre (2.14) Mn-1 . . . M1PA = U, (2.20) unde Mn-1 = Mn-1 , pentru k < n - 1, Mk = Pn-1 . . . Pk+1MkPk+1 . . .Pn-1 = = I - Pn-1 . . .Pk+1mkeT k Pk+1 . . . Pn-1 = = I - Pn-1 . . .Pk+1mkeT k = I - hkeT k. n relaiile de mai sus am inut seama ca Mk = I - mkeT k i P-1 s = Ps; n plus, eT k Ps = eT k , pentru s > k, deoarece Ps este o PE de indici s i t s. Deci Mk este o matrice ITE definita de vectorul Gauss hk. Deoarece (2.20) i (2.10) sunt analoage, rezulta, ca n teorema 2.5, ca matricea L = M-1 1 . . . M-1 n-1 este inferior triunghiulara unitate cu coloanele egale n partea subdiagonala cu vectorii hk, k 1 : n-1. Prin urmare relaia (2.19) este satisfacuta. _ Expresia vectorului hk arata cum trebuie modificat algoritmul GPP pentru a produce factorizarea LU cu pivotare (2.19); se observa ca asupra fiecarui vector Gauss mk trebuie aplicate toate permutarile ulterioare Ps, cu s > k. Pentru a implementa aceasta, modificam instruciunea 1.3 a GPP din Pentru j = k : n n Pentru j = 1 : n, adica, ceea ce e echivalent cu afirmaia anterioara, fiecare permutare Pk se aplica i tuturor vectorilor Gauss anteriori mj , cu j 1 : k - 1. Dupa execuia algoritmului GPP astfel modificat, matricele triunghiulare L i U din (2.19) se vor afla n A. Cazul eliminarii gaussiane cu pivotare completa este acum clar i vom lasa detaliile ca exerciiu pentru cititor (problema 2.8). Modificnd algoritmul GPC n acelai mod ca pe GPP, se va obine pe loc n matricea A o factorizare LU a unei matrice obinute din A prin permutari de linii i coloane: PAQ = LU, (2.21) unde P, L i U au aceeai semnificaie (dar nu aceleai elemente) ca n teorema 2.6, iar Q = Q1 . . .Qn-1 este construita din matricele de permutare elementara din relaia (2.16). 84 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUA II LINIARE akk. . . akj . . . ... aik ... = lkk ... lik ... i 1 1 1

0 0

_ ___ elemente calculate ?

elemente calculate . . . ukj . . . k Fig. 2.4: Stadiu intermediar al factorizarii Crout.

2.4.2 Factorizari LU compacte

Factorizarea Crout poate fi calculata lund n relaia (2.18) expresia LU ca fiind factorizarea Doolittle i D = diag(u11, u12, . . . , unn). Atunci, LU este descompunerea Crout a matricei A. Totu, exista i alte posibilitai de a organiza calculele, care de obicei se numesc scheme de factorizare compacta. Vom deduce o astfel de factorizare Crout pe baza ideii de a utiliza direct identitatea A = LU, calculnd succesiv cte o coloana din L i cte o linie din U. Procedura poate fi iniializata considernd prima coloana a identitaii A = LU, i.e. Ae1 = LUe1 = Le1, de unde li1 = ai1, i = 1 : n, (2.22) respectiv prima linie a aceleiai identitai, eT 1 A = eT 1 LU = l11eT 1 U, adica a1j = l11u1j , j = 2 : n. Deoarece l11 = a11 = A[1] 6= 0, din relaia anterioara rezulta u1j = a1j / l11, j = 2 : n. (2.23) Presupunem acum ca primele k - 1 coloane din L i primele k - 1 linii din U sunt cunoscute (calculate); vezi figura 2.4. Din identitatea A = LU obinem aik =
k-1

Xs=1 lisusk + lik, i = k : n, n care singura necunoscuta este scalarul lik. Deci, lik = aik k-1

Xs=1 lisusk, i = k : n. (2.24) 2.4. FACTORIZ ARI LU 85 De asemenea, akj =


k-1

Xs=1 lksusj + lkkukj , j = k + 1 : n, n care acum singura necunoscuta este scalarul ukj . Din propoziia 2.3 rezulta A[k] = L[k]U[k], unde A[k], deci i L[k] sunt nesingulare, adica lkk 6= 0. Aadar, ukj = akj k-1

Xs=1 lksusj! / lkk, j = k + 1 : n. (2.25) Astfel, procedura iniiata prin (2.22) i (2.23) poate fi continuata prin (2.24) (2.25); daca submatricele A[k], k = 1 : n - 1, sunt nesingulare, ceea ce garanteaza ca mparirea din (2.25) poate fi executata, procedura va calcula complet factorii L i U. Observnd ca (2.22) i (2.23) sunt cazuri particulare ale (2.24), respectiv (2.25), putem include primul pas n bucla generala, rezultnd algoritmul urmator. Algoritmul 2.5 (CROUT Factorizare Crout) (Se da A Rnn, cu submatricele lider principale A[k], k = 1 : n - 1, nesingulare. Se calculeaza factorizarea Crout A = LU, cu L inferior triunghiulara i U superior triunghiulara unitate. Matricele L i U sunt memorate peste elementele corespunzatoare din A, mai puin elementele diagonale ale lui U, egale cu 1.)

1. Pentru k = 1 : n 1. Pentru i = k : n 1. aik lik = aik -Pk-1 s=1 lisusk 2. Pentru j = k + 1 : n 1. akj ukj = _akj -Pk-1 s=1 lksusj_ / lkk Comentarii. Numarul de operaii n virgula mobila este NCROUT 2n3/3 la fel ca n algoritmii G, GPP sau GPC, iar memoria ocupata este MCROUT n2. _ Ca i algoritmul G de eliminare gaussiana, algoritmul CROUT eueaza pe parcurs daca se obine un lkk = 0 (ceea ce este echivalent cu A[k] singulara); mai mult, valori apropiate de zero ale unui lkk conduc la valori absolute foarte mari ale elementelor matricei U calculate n instruciunea 1.2.1 precum i la erori numerice inadmisibile n rezultat. Pentru a preveni aceasta situaie se introduce pivotarea pariala (pe linii). Spre deosebire de algoritmul G unde, la pasul k, permutarea liniilor se efectua naintea celorlaltor operaii, aici permutarea poate avea loc doar dupa calcularea elementelor lik, cu i k : n, pentru a putea aduce cea mai convenabila valoare n poziia (k, k). (Sa observam ca pivotarea completa este acum imposibila, deoarece ar implica anticiparea calculelor pentru toata matricea.) Aceasta revine la nmulirea la stnga a matricei A cu o PE Pkik , cu ik k, la fiecare pas k , global, la o factorizare PA = LU, cu P = Pn-1 . . . P1. Algoritmul corespunzator este urmatorul. Algoritmul 2.6 (CROUTP Factorizare Crout cu pivotare pariala) (Se da A Rnn nesingulara. Se calculeaza factorizarea Crout 86 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUA II LINIARE PA = LU, cu L inferior triunghiulara, U superior triunghiulara unitate i P = Pn-1 . . . P1 matrice de permutare. Matricele L i U sunt memorate peste elementele corespunzatoare din A, mai puin elementele diagonale ale lui U, egale cu 1. ntregii ik definind PE Pk sunt memorai ntr-un vector p astfel nct p(k) = ik, k = 1 : n - 1.) 1. Pentru k = 1 : n 1. Pentru i = k : n 1. aik lik = aik -Pk-1 s=1 lisusk 2. Se determina ik k : n astfel nct |likk| = maxi=k:n |lik| 3. Pentru j = 1 : n {interschimba liniile k i ik} 1. akj . aikj 4. Pentru j = k + 1 : n 1. akj ukj = _akj -Pk-1 s=1 lksusj_ / lkk Comentarii. Desigur, numarul comparaiilor efectuate n instruciunea 1.2 este de ordinul O(n2), adica neglijabil faa de cel al operaiilor aritmetice. _

2.4.3 Factorizari LU prin eliminare gaussiana la nivel de bloc


Vom elabora n continuare un algoritm pentru calculul factorizarii Doolittle a unei matrice A Rnn, folosind ct mai mult operaii din setul BLAS nivel 3, anume GEMM i TRSM. Abordarea problemei se face n mod natural prin partiionarea matricelor n blocuri. Vom prezenta nti varianta fara pivotare, deci presupunem ca submatricele A[k] sunt nesingulare, pentru k 1 : n - 1. Partiionam matricea A astfel A = _ A11 A12 A21 A22 _ } r }n-r |{z} r |{z} n-r , (2.26) alegerea lui r urmnd a fi precizata ulterior. n ideea calculului la nivel de bloc al factorizarii LU, sa ncepem prin a determina L11, L21, U11, U12, astfel nct sa fie satisfacuta egalitatea: _ A11 A12 A21 A22 _ = _ L11 0

L21 In-r _ _ Ir 0 0 B _ _ U11 U12 0 In-r _. (2.27) Din aceasta egalitate, privita pe rnd pentru cele patru blocuri componente, se pot deduce uor blocurile dorite din L i U: 1. A11 = L11U11, deci L11 i U11 provin din factorizarea LU la nivel de element a matricei A11. 2. A21 = L21U11 L21 = A21U-1 11 . Deci, U11 fiind cunoscut de la pasul anterior, L21 poate fi calculat prin rezolvarea unui sistem superior triunghiular cu parte dreapta multipla. 2.4. FACTORIZ ARI LU 87 3. A12 = L11U12 U12 = L-1 11 A12. Deci, U12 este soluia unui sistem inferior triunghiular cu parte dreapta multipla. 4. A22 = L21U12 + B B = A22 - L21U12; blocul restant B depinde doar de matrice cunoscute sau deja calculate. Deci, n ordinea de mai sus, se pot calcula toate necunoscutele din (2.27). Procednd mai departe n mod similar cu matricea B, se poate calcula o factorizare LU a acesteia, adica B = L22U22. (2.28) n acest caz, egalitatea (2.27) devine o factorizare LU a matricei A, cu L = _ L11 0 L21 L22 _; U = _ U11 U12 0 U22 _. (2.29) Pe scurt, aplicnd n mod repetat pai 1-4 de mai sus, dimensiunea problemei se reduce de la n la n-r, n-2r etc. La etapa m (unde n = mr), problema consta n factorizarea LU a unui bloc rr, factorizarea ntregii matrice A fiind terminata. Algoritmul de factorizare LU va consta deci dintr-o bucla coninnd pai 1-4. n figura 2.5 sunt reprezentate blocurile de interes pe parcursul unei iteraii. Algoritmul 2.7 (Gbl Eliminare gaussiana la nivel de bloc) (Se dau A Rnn, cu A[k], k = 1 : n - 1, nesingulare, i r N astfel nct n = mr. Se calculeaza factorizarea Doolittle A = LU, prin operaii la nivel de bloc.) 1. Pentru k = 1 : m 1. s (k - 1)r + 1 2. f kr 3. Se calculeaza factorizarea LU A(s : f, s : f) = L(s : f, s : f) U(s : f, s : f) 4. Se rezolva sistemul superior triunghiular Z U(s : f, s : f) = A(f + 1 : n, s : f) 5. L(f + 1 : n, s : f) Z 6. Se rezolva sistemul inferior triunghiular L(s : f, s : f) Z = A(s : f, f + 1 : n) 7. U(s : f, f + 1 : n) Z 8. A(f + 1 : n, f + 1 : n) A(f + 1 : n, f + 1 : n)-L(f + 1 : n, s : f)U(s : f, f + 1 : n) Comentarii. Se observa ca doar n instruciunea 1.3, factorizarea LU a blocului A(s : f, s : f), de dimensiune r r, trebuie explicitata cu operaii la nivel de element; n rest, n instruciunile 1.4 i 1.6 se folosete TRSM, iar n 1.8 GEMM. Din totalul de 2n3/3 flopi ai algoritmului 2.7 (la fel ca pentru algoritmul G), doar 2mr3/3 = 2nr2/3 apar n factorizarile LU mici din instruciunea 1.3. n acest caz, ponderea operaiilor de nivel 3 este P3LU(n, r) = 2n3/3 - 2nr2/3 2n3/3 =1r2

n2 . (2.30) 88 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUA II LINIARE s f n sfn L U B B B BN ? deja factorizat __ 6 curent curent H H H HY de factorizat Fig. 2.5: Structura blocurilor ntr-un pas al factorizarii Doolittle la nivel de bloc Cum, n general, se alege r n (i deci, cu att mai mult, r2 n2), ponderea operaiilor de nivel 3 este apropiata de 1, deci putem estima o buna comportare a algoritmului pe un calculator cu memorie ierarhica. Totu, alegerea dimensiunii blocurilor r se face n urma unui compromis: pe de o parte, din (2.30) e de dorit ca r sa fie ct mai mic, pe de alta, pentru ca rutinele din BLAS-3 sa fie eficiente trebuie ca r sa fie suficient de mare; valoarea ideala se determina fie din estimari teoretice, fie, mai ales, prin ncercari experimentale. _ Introducerea pivotarii se face relativ simplu, inndu-se seama ca n (2.27) apare n plus o matrice de permutare P1: P1 _ A11 A12 A21 A22 _ = _ L11 0 L21 In-r _ _ Ir 0 0 B _ _ U11 U12 0 In-r _. (2.31) Reducerea calculului factorizarii LU a matricei A la un calcul analog pentru matricea de dimensiuni mai mici B se face n felul urmator: 1. Se calculeaza, de exemplu prin eliminare gaussiana, factorizarea LU (rezultata din (2.31), pentru cele doua blocuri din stnga): P1 _ A11 A21 _ = _ L11 L21 _ U11. (2.32) (Se aplica algoritmul GPP, chiar daca matricea n cauza este nr; cautarea pivotului se face pe toata poriunea subdiagonala a unei coloane. Vezi problema 2.9.) 2. Se aplica permutarea restului matricei A (cele doua blocuri din dreapta), obinndu-se _ A12 A22 _ = P1 _ A12 A22 _. 2.4. FACTORIZ ARI LU 89 3. Din A12 = L11U12 se poate calcula U12 = L-1
11

A12, prin rezolvarea unui sistem inferior triunghiular cu parte dreapta multipla (se apeleaza TRSM). 4. Mai ramne B = A22 - L21U12, termenii din dreapta fiind toi deja calculai; deci B se poate obine n urma unui apel la GEMM. Lasam cititorului detalierea ideii algoritmice de mai sus, ca i calculul ponderii

operaiilor de nivel 3; dei acum vor fi mai multe operaii la nivel de element faa de cazul factorizarii fara pivotare, totui numarul lor ramne suficient de mic pentru a putea aprecia algoritmul ca eficient.

2.4.4 Factorizari LU compacte la nivel de bloc


Vom prezenta n continuare o varianta la nivel de bloc a metodei Crout pentru factorizarea LU; ne vom ocupa doar de cazul n care nu se efectueaza pivotare. Raionamentul este absolut identic cu cel la nivel de element. La nivel de bloc, egalitatea A = LU se poate scrie . ... A11 A12 . . . A1m A21 A22 . . . A2m ... ... ... ... Am1 Am2 . . . Amm . .... =. ... L11 0 . . . 0 L21 L22 . . . 0 ... ... ... ... Lm1 Lm2 . . . Lmm . .... . ... U11 U12 . . . U1m 0 U22 . . . U2m ... ... ... ... 0 0 . . . Umm . .... , (2.33) ceea ce, pentru blocul cu indici i, j, revine la Aij = Pmin(i,j) t=1 LitUtj . Detaliind aceasta relaie, distingem urmatoarele cazuri: i = j = k Akk =
k

Xt=1 LktUtk LkkUkk = Akk k-1

Xt=1 LktUtk!. (2.34) i > j = k Aik =


k

Xt=1 LitUtk Lik = Aik k-1

Xt=1 LitUtk!U-1 kk ; (2.35) k = i < j Akj =


k

Xt=1 LktUtj Ukj = L-1 kk Akj k-1

Xt=1 LktUtj!. (2.36) Ordinea n care se aplica formulele de mai sus este aceeai ca n algoritmul la nivel de element: se calculeaza nti prima bloc coloana din L i prima bloc linie din U; diferena este ca acum trebuie calculate doua blocuri diagonale, L11 i U11 (n algoritmul la nivel de element, u11 = 1); aceasta se face printr-o factorizare Crout LU; se continua apoi cu a doua bloc coloana din L i a doua bloc linie din U etc. Procesul de calcul va decurge conform urmatoarei scheme: 1. Pentru k = 1 : m 1. Se calculeaza Lkk i Ukk factoriznd LU termenul drept din (2.34) 2. Pentru i = k + 1 : m 1. Se calculeaza Lik ca n (2.35) 3. Pentru j = k + 1 : m 1. Se calculeaza Ukj ca n (2.36) 90 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUA II LINIARE Pentru a detalia algoritmul i a-l scrie n mod ct mai eficient prin apeluri la rutine BLAS-3, sa observam ca sumele din relaiile (2.342.36) se pot scrie compact; exemplificam doar pentru una dintre sume, cea din (2.35), notnd s = (k -1)r +1, f = kr, si = (i - 1)r + 1, fi = ir:
k-1

Xt=1 LitUtk L(si : fi, 1 : s - 1) U(1 : s - 1, s : f). Mai mult, putem scrie compact toate relaiile de tip (2.35), pentru un k fixat, dar cu i = k + 1 : m. Mai exact, bucla 1.2 din schema de mai sus se transforma ntr-o singura atribuire (profitnd de faptul ca U-1 kk nu depinde de i), anume: L(f+1 : n, s : f) [A(f+1 : n, s : f) - L(f+1 : n, 1 : s-1) U(1 : s-1, s : f)] U(s : f, s : f)-1 n fine, combinnd forma de mai sus cu termenul drept din (2.34), obinem instruct iunea 1.3 din algoritmul detaliat n continuare (calculele se pot efectua pe loc n matricea A, dar, pentru claritate, nu procedam astfel). Algoritmul 2.8 (CROUTbl Factorizare Crout la nivel de bloc) (Se dau A Rnn i r N astfel nct n = mr. Se calculeaza factorizarea A = LU, utiliznd operaii la nivel de bloc.) 1. Pentru k = 1 : m 1. s (k - 1)r + 1 2. f kr 3. A(s : n, s : f) A(s : n, s : f) - L(s : n, 1 : s-1)U(1 : s-1, s : f) 4. Se calculeaza factorizarea LU Crout A(s : f, s : f) = L(s : f, s : f) U(s : f, s : f) 5. Se rezolva sistemul superior triunghiular Z U(s : f, s : f) = A(f + 1 : n, s : f) 6. L(f + 1 : n, s : f) Z (o bloc coloana din L) 7. A(s : f, f + 1 : n) A(s : f, f + 1 : n)-L(s : f, 1 : s - 1) U(1 : s - 1, f + 1 : n) 8. Se rezolva sistemul inferior triunghiular L(s : f, s : f) Z = A(s : f, f + 1 : n) 9. U(s : f, f + 1 : n) Z (o bloc linie din U) Comentarii. Desigur, nmulirile matriceale din instruciunile 1.3 i 1.7 se vor executa prin apeluri la GEMM, iar rezolvarile de sisteme triunghiulare din 1.5 i 1.8,

prin apeluri la TRSM. Ponderea operaiilor de nivel 3 este aceeai ca pentru algoritmul 2.7, diferena fiind ca aici se executa mai multe apeluri la GEMM, ceea ce ar putea mari timpul de execuie, dar probabil numai ntr-o masura nesemnificativa. Algoritmul de mai sus poate calcula i o factorizare LU Doolittle daca n instruct iunea 1.4 se utilizeaza algoritmul Gn loc de CROUT. _ 2.5. REZOLVAREA SISTEMELOR LINIARE 91

2.5 Rezolvarea sistemelor liniare

Teoremele 2.2 i 2.3 arata ca algoritmii GPP i GPC constituie un bun instrument pentru rezolvarea sistemului liniar nesingular Ax = b. Sa consideramurmatoarea sintaxa neformala pentru utilizarea algoritmilorGPP i respectiv GPC: [M,U, p] = GPP(A) [M,U, p, q] = GPC(A) unde M denota multiplicatorii gaussieni ik, k = 1 : n - 1, i = k + 1 : n, U este matricea superior triunghiulara produsa de algoritm, iar p i q sunt vectori de ntregi definind permutarile de linii , respectiv, coloane. Dei matricele M i U se memoreaza peste A (aa cum am i procedat n GPP i GPC), vom utiliza sintaxa de mai sus pentru claritate. Rezolvarea sistemelor utiliznd GPP. Consideram sistemul liniar Ax = b, cu A nesingulara i utilizam GPP pentru triangularizarea matricei A conform relaiei (2.14). Doarece toate matricele Mk i Pk sunt nesingulare, sistemul Ax = b este echivalent (are aceeai soluie) cu sistemul Mn-1Pn-1 . . .M1P1Ax = Mn-1Pn-1 . . .M1P1b. (2.37) n consecina, (2.37) se scrie n forma Ux = d, unde matricea superior triunghiulara U se afla n A, iar vectorul d = Mn-1Pn-1 . . .M1P1b, (2.38) se poate calcula pe loc n b, utiliznd urmatoarea schema de calcul: b 1. Pentru k = 1 : n - 1 1. b Pkb 2. b Mkb n definitiv, soluia x a sistemului Ax = b se obine rezolvnd (pe loc n b) sistemul superior triunghiular Ux = b. Evident, n acest scop se utilizeaza algoritmul UTRIS, cu sintaxa x = UTRIS(U, b). Pentru detalierea schemei facem apel la propoziiile 2.1 i 2.2. Se obine algoritmul de mai jos. Algoritmul 2.9 (S GPP Calculul soluiei unui sistem liniar utiliznd GPP) (Se dau A Rnn nesingulara i b Rn. Se calculeaza soluia x Rn a sistemului liniar Ax = b, utiliznd procedura de eliminare gaussiana cu pivotare pariala.) 92 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUA II LINIARE 1. [M,U, p] = GPP(A) 2. Pentru k = 1 : n - 1 1. bk . bp(k) 2. Pentru i = k + 1 : n 1. bi bi - ikbk 3. x = UTRIS(U, b) Comentarii. Numarul de operaii este: NS GPP = NGPP +
n-1

Xk=1 2(n - k) + NUTRIS 2n3 3 + n2 + n2 2n3 3 NGPP,

i deci principalul efort consta n triangularizarea matricei A. Evident, memoria necesara este MS GPP n2. _ Rezolvarea sistemelor utiliznd GPC. Alternativ, dar mai costisitor, putem utiliza GPC, vezi (2.16); n acest caz, sistemul Ax = b este echivalent cu Mn-1Pn-1 . . .M1P1AQ1 . . .Qn-1Qn-1 . . .Q1x = Mn-1Pn-1 . . .M1P1b. (2.39) Notnd Qn-1 . . .Q1x = y, (2.40) din (2.16) rezulta ca vectorul y poate fi calculat prin rezolvarea sistemului superior triunghiular Uy = d, (2.41) unde d este vectorul dat de (2.38). n final, din (2.40), i tiind ca Q-1 k = Qk, obinem x = Q1Q2 . . .Qn-1y. (2.42) Din relaiile (2.38)(2.42), rezulta algoritmul urmator. Algoritmul 2.10 (S GPC Calculul soluiei unui sistem liniar utiliznd GPC) (Se dau A Rnn nesingulara i b Rn. Se calculeaz a soluia x Rn a sistemului liniar Ax = b, utiliznd procedura de eliminare gaussiana cu pivotare completa.) 1. [M,U, p, q] = GPC(A) 2. Pentru k = 1 : n - 1 1. bk . bp(k) 2. Pentru i = k + 1 : n 1. bi bi - ikbk 3. x = UTRIS(U, b) 4. Pentru k = n - 1 : -1 : 1 1. xk . xq(k) Comentarii. Complexitatea acestui algoritm este asimptotic aceeai cu cea a algoritmului GPC. _ 2.6. CALCULUL INVERSEI I AL DETERMINANTULUI 93 Observaia 2.2 Eliminarea gaussiana, prezentata aici ntr-un mod sistematic, este binecunoscuta metoda de calcul manual prin reducere i substituie. Pivotarea pe linii corespunde unei reordonari a ecuaiilor n (2.1), iar pivotarea pe coloane corespunde unei reordonari a componentelor necunoscutei x. Subliniem ca aceasta metoda este cea mai eficienta procedura de rezolvare a sistemelor de ecuaii liniare nesingulare de forma generala. Stabilitatea numerica a acestor algoritmi va fi discutat a ulterior. _ Este clar ca sistemul Ax = b se poate rezolva i recurgnd explicit la factorizarea LU a matricei A. Presupunnd, pentru simplitate, ca nu a fost utilizata pivotarea, factorizarea este A = LU. Avem LUx = b, sau Ly = b, unde am notat Ux = y. Prin urmare, soluia sistemului poate fi gasita dupa urmatoarea schema: Ax = b 1. A = LU (calculeaza factorizarea LU) 2. Se rezolva sistemul inferior triunghiular Ly = b 3. Se rezolva sistemul superior triunghiular Ux = y Efortul de calcul este acelai ca n eliminarea gaussiana i partea sa cea mai importanta se consuma n procesul de factorizare. Daca sistemul liniar are parte dreapta multipla, adica este de forma AX = B cu B Rnp, p > 1, atunci X va rezulta de aceeai dimensiune; sistemul AX = B poate fi redus la p sisteme cu parte dreapta simpla, Axj = bj , j = 1 : p, unde vectorii bj i xj sunt coloanele j din B, respectiv X. Utilizarea naiva de p ori a algoritmului S GPP ar conduce la un efort de calcul de pn3/3 flopi, inacceptabil de mare. Dar, deoarece A este aceeai pentru toate cele p sisteme, factorizarea LU sau, n general, triangularizarea matricei A, se efectueaza o singura data, ramnnd apoi de rezolvat doar sisteme triunghiulare. Ideea algoritmului, n cazul factorizarii LU, este urmatoarea: AX = B 1. A = LU (calculeaza factorizarea LU) 2. Pentru j = 1 : p 1. Se rezolva sistemul inferior triunghiular Ly = bj

2. Se rezolva sistemul superior triunghiular Uxj = y Numarul de operaii va de numai aproximativ 2n3/3 + 2pn2 flopi, meninnduse complexitatea O(n3). Desigur, n practica este recomandat a se folosi pivotarea, efectund o factorizare LU de forma PA = LU sau apelnd algoritmul GPP. Modificarea corespunzatoare a schemelor de calcul prezentate mai sus este propusa cititorului (vezi problema 2.15).

2.6 Calculul inversei i al determinantului unei matrice

Grupam n aceasta seciune doua probleme care au n comun metoda de rezolvare utilizata eliminarea gaussiana, precum i recomandarea de a calcula inversa sau determinantul unei matrice doar atunci cnd acestea se doresc explicit. Repetam 94 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUA II LINIARE A M U A M U-1 Fig. 2.6: Memorarea datelor n inversarea matriceala ca, de exemplu, inversa nu se calculeaza atunci cnd se rezolva sisteme liniare, dupa cum nu se calculeaza determinantul pentru a testa nesingularitatea unei matrice.

2.6.1 Calculul inversei unei matrice

Daca A Rnn este nesingulara, atunci procedura de eliminare gaussiana cu pivotare pariala se termina cu succes i produce o matrice superior triunghiulara nesingulara U astfel nct Mn-1Pn-1 . . .M1P1A = U, (2.43) unde Mk sunt matrice ITE i Pk sunt matrice elementare de permutare. Din (2.43) rezulta X A-1 = U-1Mn-1Pn-1 . . .M1P1, deci inversa matricei A poate fi calculata astfel A-1 1. [M,U, p] = GPP(A) 2. X = UINV(U) 3. Pentru k = n - 1 : -1 : 1 1. X XMk 2. X XPk Ne amintim ca n algoritmul GPP, matricea U i multiplicatorii gaussieni ik, k = 1 : n-1, i = k+1 : n, notai global cu M n schema de mai sus, se memoreaza peste matricea A ca n partea stnga a figurii 2.6. n algoritmul UINV, am vazut ca U-1 se poate memora peste U, astfel ca, dupa instruciunea 2 a schemei de mai sus, datele sunt memorate ca n partea dreapta a figurii 2.6. Pornind de la schema precedenta, vom prezenta un algoritm care calculeaza inversa matricei A, folosind minimum de memorie. Pentru aceasta, observam ca primele doua instruciuni necesita memorie adiionala doar pentru vectorul p Rn-1, n care se memoreaza permutarile de linii din GPP. Analizam acum bucla Pentru din instruciunea 3. Prima atribuire, X XMk, poate fi detaliata utiliznd o partiionare pe linii a lui X: xT i Mk = xT i (In - mkeT k ) = xT i - (xT i mk)eT k (2.44) = [xi1 xi2 . . . xi,k-1 xik - xT i mk xi,k+1 . . . xin], i = 1 : n. Se poate observa ca sunt modificate numai elementele de pe coloana k a lui X. 2.6. CALCULUL INVERSEI I AL DETERMINANTULUI 95

u(-1)
1k

... u(-1)
kk

k+1,k ... nk ... ... ... ... ... M U-1 k X XMkPk ... ... ... ... ... ... ... M U-1 k Fig. 2.7: Memorarea datelor n pasul k al inversarii matriceale A doua instruciune a buclei Pentru, X XPk, interschimba coloanele k i ik (ik k). innd cont de toate aceste consideraii i de ordinea inversa de calcul a coloanelor, pasul k al buclei Pentru din schema de mai sus, adica X XMkPk, poate fi descris ca n figura 2.7, unde U-1 i M reprezinta elementele din U-1 , respectiv, multiplicatorii gaussieni care nu au fost utilizai (i nici modificai)n execuia buclei pna la pasul curent; elementele modificate (parte a lui X) sunt notate prin . Astfel, singura informaie care trebuie salvata consta n multiplicatorii gaussieni din coloana curenta, ik, i = k + 1 : n, necesari pentru calculul din (2.45). n acest fel, inversarea matricei A poate fi executata utiliznd doar doi vectori suplimentari de lungime (n - 1), anume p pentru memorarea permutarilor , sa zicem, g pentru salvarea temporara a multiplicatorilor gaussieni de pe coloana curenta. Algoritmul care implementeaza consideraiile de mai sus este: Algoritmul 2.11 (INV GPP Calculul inversei unei matrice) (Se da A Rnn nesingulara. Se calculeaza matricea A-1 peste A. Algoritmul utilizeaza algoritmii GPP pentru triangularizarea gaussiana UINV pentru inversarea unei matrice superior triunghiulare.) 1. [M,U, p] = GPP(A) % M i U sunt memorate n A 2. A X = UINV(U) % doar triunghiul sup. e modificat 3. Pentru k = n - 1 : -1 : 1 1. Pentru i = k + 1 : n 1. gi ik % salveaza multiplicatorii 2. Pentru i = 1 : k 1. aik aik -Pn t=k+1 aitgt % relaia (2.45), primele k linii 3. Pentru i = k + 1 : n

1. aik -Pn t=k+1 aitgt % relaia (2.45), celelalte linii 4. Daca p(k) 6= k atunci 1. Pentru i = 1 : n % interschimba coloanele k i p(k) 1. aik . ai,p(k) 96 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUA II LINIARE Comentarii. Numarul de operaii n virgula mobila este NINV GPP = NGPP + NUINV +
n-1

Xk=1 2n(n - k) 2n3 3 + n3 3 + n3 = 2n3 i memoria utilizata MINV GPP = n2. Este remarcabil faptul ca inversarea matriceala nu este mai complexa (ca numar de operaii) dect nmulirea de matrice. _ O acuratee mai buna a matricei inverse calculate se poate obine utiliznd algoritmul GPC n locul lui GPP. n acest caz, Mn-1Pn-1 . . .M1P1AQ1Q2 . . .Qn-1 = U, i deci X A-1 = Q1Q2 . . .Qn-1U-1Mn-1Pn-1 . . .M1P1. Scrierea algoritmului corespunzator este lasata n sarcina cititorului. n practica, acurateea obinuta cu INV GPP este suficient de buna pentru majoritatea aplicaiilor. Observaia 2.3 Efortul de calcul necesar inversarii unei matrice este de aproximativ trei ori mai mare dect cel pentru rezolvarea unui sistem liniar de aceea dimensiune. De aceea, de cte ori e posibil, inversarea matriceala trebuie evitata i nlocuita de rezolvarea de sisteme liniare. De exemplu, pentru calculul scalarului real = cTA-1b, unde A Rnn, b, c Rn, schema recomandata este cTA-1b 1. Se rezolva sistemul Ax = b % rezulta x = A-1b 2. cT x sensibil mai eficienta dect varianta cu inversarea matricei A _ Este clar ca inversa matricei A se poate calcula i recurgnd explicit la factorizarea LU a matricei. Presupunnd ca A = LU, avem A-1 = U-1L-1, iar o procedura de inversare ar putea consta n: 1. A = LU (se calculeaza factorizarea LU) 2. U X = U-1 3. L Y = L-1 3. A-1 XY Numarul de operaii este tot 2n3. Desigur, n practica este indicat a se folosi o factorizare LU cu pivotare. 2.7. CONDI IONAREA SISTEMELOR LINIARE 97

2.6.2 Calculul determinantului


Algoritmii GPP i GPC sunt utili i n calculul determinantului unei matrice. Amintim ca interschimbarea a doua linii sau coloane ale unei matrice schimba semnul determinantului acesteia, sau, echivalent, daca P este o permutare elementar a, atunci det(P) = -1. n plus, matricele ITE Mk, k = 1 : n - 1, din (2.43), au elementele diagonale egale cu 1 i deci det(Mk) = 1. Aadar det(A) = (-1)s det(U) = (-1)s
n

Yi=1

uii, unde s n - 1 este numarul de PE proprii (adica Pk 6= In) n (2.43). Algoritmul corespunzator celor de mai sus este: Algoritmul 2.12 (DET GPP Calculul determinantului) (Se da A Rnn. Se calculeaza detA, utiliznd algoritmul GPP.) 1. [M,U, p] = GPP(A) 2. det 1 3. Pentru k = 1 : n 1. det det ukk 4. Pentru k = 1 : n - 1 1. Daca p(k) 6= k atunci 1. det -det Principalul efort de calcul n algoritmul de mai sus este efectuat n execuia algoritmului GPP. Desigur, algoritmul GPC poate fi utilizat n loc de GPP, obinndu-se, de regula, o acuratee superioara a rezultatului. Scrierea algoritmului corespunzator este propusa cititorului. Daca este disponibila o factorizare LU a matricei A, atunci det(A) = det(LU) = = det(L) det(U) = (Qn i=1 lii) (Qn i=1 uii), ceea ce permite evaluarea imediata a determinantului.

2.7 Condiionarea sistemelor liniare

Dupa cum am vazut n capitolul 0, condiionarea unei probleme de calcul, n cazul nostru rezolvarea sistemului liniar determinat nesingular Ax = b, este cruciala n aprecierea acurateii rezultatelor obinute. Sa consideram o perturbaie a datelor de intrare ale sistemului (A, b) . (A + _A, b + _b) ( A, b), care va avea ca efect o perturbaie a soluiei x x . x + _x x, (2.45) astfel nct (A + _A)(x + _x) = b + _b. (2.46) 98 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUA II LINIARE Consideram doar perturbaii mici, respectnd k_Ak kAk, k_bk kbk (unde kk este o norma consistenta oarecare), i.e. efectuam o analiza a sensibilitaii locale a soluiei n raport cu variaia datelor. Teorema 2.7 Presupunem ca x 6= 0. Eroarea relativa a soluiei (2.45) a sistemului perturbat (2.46) este marginita conform relaiei k_xk kxk (A)_k_Ak kAk + k_bk kbk _, (2.47) unde (A) = kA-1k kAk (2.48) se numete numar de condiionare (la inversare) al matricei A. Cu alte cuvinte, erorile relative k_Ak / kAk i k_bk / kbk ale datelor de intrare pot fi amplificate de (A) ori n soluie, presupunnd ca toate calculele se efectueaza exact (deci indiferent de algoritmul folosit). Demonstraie. Deoarece Ax = b, din (2.46) rezulta A _x + _A x + _A _x = _b. Neglijnd produsul _A _x (deoarece perturbaiile sunt mici), obinem _x -A-1 _A x + A-1 _b. Utiliznd o familie consistenta de norme matriceale k k, din relaia de mai sus rezulta k_xk kA-1k k_Ak kxk + kA-1k k_bk. Prin urmare, daca x 6= 0, o limita superioara a erorii relative este data de k_xk

kxk kA-1k kAk k_Ak kAk + kA-1k kAk k_bk kAk kxk kA-1k kAk_k_Ak kAk + k_bk kbk _, ceea ce demonstreaza (2.47). (Am inut seama ca kbk = kAxk kAk kxk.) _ Aadar numarul de condiionare (A) definit n (2.48) furnizeaza o masura a condiionarii problemei rezolvarii unui sistem liniar Ax = b. Un (A) mic corespunde unei bune condiionari, adica unei sensibilitai reduse a soluiei n raport cu perturbaiile datelor. Vom prezenta n seciunea urmatoare un rezultat care permite aprecierea mai precisa a condiionarii n funcie de valoarea (A). Se observa ca doar matricea A determina condiionarea unui sistem, termenul liber b neavnd nici un rol; de aceea vorbim de condiionarea matricei A n loc de condiionarea sistemului. Vom ataa un indice notaiei (A) atunci cnd vom preciza norma folosita n (2.48); de exemplu, (A) = kA-1k kAk. ntre norme echivalente, alegerea uneia anume pentru evaluarea lui (A) nu este relevanta, ordinul de marime al rezultatului fiind acela; de obicei, dintre normele p se alege (A) pentru 2.7. CONDI IONAREA SISTEMELOR LINIARE 99 uurina calculului (vezi mai jos). Sa notam ca p(A) 1 i 2(A) = 1 daca numai daca A este ortogonala (demonstrai !). Este intuitiv faptul ca un sistem este cu att mai rau condiionat cu ct matricea A este mai aproape de o matrice singulara. Trebuie subliniat ca masura acestei apropieri este data de numarul de condiionare i nu de determinantul matricei A. Exemplul 2.1 Sa consideram matricele D, T Rnn D=. ... 0.1 0.1 ... 0.1 . .... ,T=. ... 1 -1 . . . -1 1 . . . -1 ... ... 1 . .... . Fiind diagonala, este evident ca D este bine condiionata; se verifica imediat ca (D) = 1, n schimb det(D) = 10-n, adica, daca de exemplu n = 20, o valoare foarte mica. Pentru matricea triunghiulara T situaia este contrara: de det(A) = 1, matricea este rau condiionata pentru ca (T ) = n2n-1 (U = T-1 este inferior triunghiulara unitate cu elementele uij = 2j-i-1, pentru j > i, deci kT-1k = 1 + 2 + 22 + . . . + 2n-2 = 2n-1 - 1. Pe de alta parte, kT k = n). _ Un mod uzual dar naiv de verificare a posteriori a calitaii soluiei calculate x a unui sistem liniar Ax = b consta n a calcula norma reziduului r = b - Ax, i.e. krk = kb - Axk i de a conchide ca daca krk este mic, atunci x este o soluie precisa. De fapt, aceasta concluzie, corecta pentru matricele bine condiionate, poate sa nu fie ( de cele mai multe ori nu este) adevarata daca matricea A este rau condiionata. ntr-adevar, soluia exacta este x = A-1b, astfel ca avem

x - x = A-1b - A-1(b - r) = A-1r, deci eroarea relativa este marginita conform relaiei kx - xk kxk = kA-1rk kA-1bk kA-1k krk kA-1rk (A) krk kAk kA-1bk (A)krk kbk , pentru orice norma consistenta k k. Astfel, testul r este mic e valid doar daca matricea A este bine condiionata. Exemplul 2.2 Matricele Hilbert Hn Rnn, definite prin hij = 1/(i+j-1) sunt rau condiionate, (Hn) crescnd foarte repede cu n. De exemplu, (H3) 748. Daca luam x=. 8.27 4.60 3.23 . ., b = . 11.646 . . . 6.475 . . . 4.552 . . . . ., d = . 0.0128 -0.0714 0.0689 . ., x = x + d, atunci x este soluia sistemului H3x = b (n acest exemplu am ales x i am calculat b). Pentru soluia aproximativa x avem kb - H3xk kbk 1.7 10-5, kx - xk kxk 8.6 10-3. 100 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUA II LINIARE Deci, dei reziduul kb - H3xk este relativ mic faa de b, eroarea relativa a soluiei aproximative x este mult mai mare, de aproximativ 510 ori, i.e. cu un factor de marime de ordinul lui (H3). _

Estimarea numarului de condiionare

Un algoritm bun de calcul al soluiei sistemului Ax = b indica i ct de sigura este soluia obinuta, n condiiile perturbarii inerente a datelor de intrare. Numarul de condiionare (A) (se alege norma doar pentru uurina calculului) poate furniza informaii sigure asupra acurateii soluiei. n continuare, presupunem ca rezolvarea sistemului se face prin intermediul unei factorizari cu pivotare PA = LU, de exemplu cu algoritmul GPP modificat dupa cum este sugerat n seciunea 2.4.1, dar concluziile pot fi extinse i n celelalte cazuri. Calculul exact al (A), utiliznd relaia de definiie, (2.48) este prea costisitor. Daca kAk se obine simplu n O(n2) flopi conform (1.28), a calcula kA-1k implica o inversare matriceala care necesita de trei ori mai multe operaii dect rezolvarea sistemului, adica inacceptabil de mult. Deoarece (A) indica numai o limita superioara, i nu valoarea exacta a amplificarii erorii datelor de intrare, ne punem problema estimarii numarului de condiionare cu doar O(n2) operaii. Cline et al. [?] au propus o metoda eficienta prin care se obin estimaii de buna calitate ale normei kA-1k. Metoda se bazeaza pe implicaia Ay = d kA-1k = sup
f6=0

kA-1fk kfk kyk kdk . Problema este de a gasi un vector d care conduce la un y suficient de mare n norma. Consideram cazul simplu n care A este inferior triunghiulara. Deoarece sistemul Ay = d se rezolva prin substituie nainte (algoritmul LTRIS), elementele lui d nu trebuie precizate toate de la nceput ci se pot alege convenabil pe masura ce sistemul este rezolvat. O prima idee consta n a considera di {1,-1} (deci kdk = 1) de a alege n expresia yi = (di i-1

Xj=1 aijyj)/aii acea valoare di care produce cel mai mare |yi|. Schema de calcul poate fi rezumata astfel: kA-1k 1. Pentru i = 1 : n 1. Pi-1 j=1 aijyj 2. Daca 0 atunci di -1 altfel di 1 3. yi (di - )/aii 2. kyk Sunt necesari aproximativ n2 flopi, la fel ca pentru LTRIS. O metoda mai eficienta consta n a urmari, la pasul i al schemei de mai sus, majorarea n modul nu numai a lui yi, ci i a tuturor sumelor pariale zki = Pi j=1 akjyj , 2.7. CONDI IONAREA SISTEMELOR LINIARE 101 cu k > i, contribuind astfel la majorarea tuturor yk, i deci a lui kyk. Putem realiza aceasta alegnd valoarea di = 1 care corespunde celei mai mari dintre sumele s+ = |y+ i| +
n

X k=i+1 |z+ ki|, s- = |yi| +


n

X k=i+1 |zki|, unde elementele y+ i , yi corespund alegerii di = 1, respectiv di = -1, iar sumele pariale au valorile z ki = Pi-1 j=1 akjyj +akiy i . Algoritmul rezultat pentru estimarea numarului de condiionare (A) = kAkkA-1k este prezentat mai jos; pentru k fixat, sumele zki de mai sus se memoreaza ntr-un scalar notat k. Algoritmul 2.13 (COND Estimarea numarului de condiionare) (Se da A Rnn, inferior triunghiulara nesingulara. Se calculeaza o estimare a lui (A).) 1. Pentru k = 1 : n 1. k 0 2. Pentru i = 1 : n 1. y+

(1 - i)/aii 2. yi (-1 - i)/aii 3. Pentru k = i + 1 : n 1. + k k + akiy+


i i

2. k k + akiyi

4. s+ |y+ i | +Pn k=i+1 |+ k| 5. s- |yi | +Pn k=i+1 |k| 6. Daca s+ s- atunci 1. yi y+


i

2. Pentru k = i + 1 : n 1. k +
k

altfel 3. yi yi

4. Pentru k = i + 1 : n 1. k k

3. kykkAk Execuia algoritmului necesita aproximativ 3n2 flopi. Consideram acum cazul general al unei matrice A Rnn a carei factorizare PA = LU este cunoscuta. Numarul de condiionare (A) se poate estima utiliz nd urmatoarea schema de calcul, a carei justificare depaete cadrul acestei lucrari. (A) 1. Se aplica algoritmul 2.13 pentru a obine o soluie de norma ct mai mare a sistemului UT y = d 2. Se rezolva sistemele triunghiulare LT r = y, Lv = Pr, Uw = v 3. kAkkwk / krk 102 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUA II LINIARE Algoritmul necesita aproximativ 7n2 flopi i s-a dovedit excelent n practica, valorile obinute fiind de regula de cel mult 2-5 ori mai mici dect (A), ceea ce constituie o aproximaie acceptabila, mai ales n situaiile critice cnd (A) are valori foarte mari.

2.8 Stabilitatea numerica a algoritmilor de eliminare gaussiana

Vom prezenta n aceasta seciune caracterizari ale stabilitaii numerice a algoritmilor de eliminare gaussiana (G, GPP, GPC), precum i modalitai de mbunataire a rezultatelor numerice obinute. Un algoritm de rezolvare a sistemului liniar determinat Ax = b produce o soluie calculata x afectata de erori numerice. Vectorul x este soluia aceluiai sistem cu datele perturbate, i.e. (A + H)x = b. (2.49) Vom evalua marimea matricei H pentru algoritmiimenionai, adica vom prezenta rezultate ale analizei inverse a erorilor. Evaluarea unor margini superioare pentru kHk este o sarcina dificila, iar marginile au de obicei expresii complicate, de aceea nu va fi prezentata nici o demonstraie. n plus, aceste margini sunt mult mai mari

dect erorile numerice ntlnite n practica; ele au rolul de a preciza cazurile cnd erorile pot fi importante, nu de a cuantifica cu precizie aceste erori. Nu trebuie uitat nici o clipa ca, chiar n prezena unor valori ale kHk foarte mici, acurateea soluiei este asigurata doar daca matricea A este bine condiionata. Altfel, kHk / kAk mic poate implica (kx - xk) / kxk mare, indiferent de algoritmul utilizat. n contextul teoremei 2.1, notam cu Ak i Mk matricele Ak, respectiv Mk, calculate efectiv de algoritmul de eliminare gaussiana G. Introducemn plus urmatoarele notaii: k = max i,j |(k) ij |, k 1 : n, = maxk=1:n k 1 . Numarul real este numit factor de cretere, deoarece arata ct de mult cresc valorile elementelor matricei A n cursul transformarilor efectuate de algoritmul G. Teorema 2.8 Matricele M1, M2, . . . , Mn-1, An = U calculate n algoritmul G satisfac M-1 1 . . . M-1
n-1

U = A + E, cu |eij | n1M, (2.50) cu o constanta de ordinul unitaii, independenta de A. Deoarece procedura de rezolvare a sistemelor triunghiulare prin substituie este numeric stabila, majoritatea erorile numerice n rezolvarea unui sistem Ax = b apar la triangularizarea matricei A. De aceea, matricea H din (2.49) satisface margini superioare la nivel de element asemanatoare cu (2.50). 2.8. STABILITATE NUMERICA 103 Se observa ca valoarea marginii din (2.50) este determinata n special de factorul de cretere . Pentru algoritmii GPP i GPC sunt valabile margini identice cu (2.50), dar cu valori maxime diferite pentru . n algoritmul G, factorul de cretere poate avea valori orict de mari; aadar acest algoritm este numeric instabil. Introducerea pivotarii pariale conduce la 2n-1. Dei teoretic aceasta margine este mare chiar pentru valori modeste ale lui n, totui algoritmul GPP produce rezultate precise n marea majoritate a cazurilor uzuale (unele excepii sunt prezentate n [?]); marginea este atinsa numai pentru anumite matrice patologice, special construite n acest scop; un exemplu este prezentat n problema 2.24. De aceea, GPP poate fi considerat practic stabil. n cazul pivotarii complete avem [n 21 31/2 41/3 . . . n1/(n-1)]1/2. Aceasta margine crete lent cu n i practic se poate considera n, ceea ce nseamna ca algoritmul GPC este necondiionat stabil. Combinnd constatarile de mai sus cu efortul de calcul cerut de algoritmii studiai, putem conchide ca algoritmul GPP este cel mai recomandat pentru rezolvarea sistemelor liniare. n cazuri speciale, cnd se dorete o sigurana deosebita a rezultatului, se pot utiliza algoritmulGPC sau metodele prezentate n continuare. Pentru ca marginea superioara (2.50) e relativ complicata, sa deducem un rezultat euristic, i deci aproximativ, dar cu aplicaii practice clare i imediate. Daca n rezolvarea sistemului Ax = b se folosete o strategie de pivotare, atunci este suficient de mic; pe de alta parte, 1 kAk, dar de acelai ordin de marime (n orice caz, n1 kAk). Atunci (2.50) este esenial echivalenta cu afirmaia grosiera kEk kHk kAkM. (2.51) Combinnd (2.51) cu (2.47) (n care _A = H, _b = 0, _x = x - x), se obine aproximaia kx - xk kxk (A) M, (2.52)

care conduce la urmatoarea regula de apreciere a acurateii rezolvarii unui sistem: Daca M 10-t i (A) 10q, atunci soluia calculata are aproximativ t - q cifre zecimale corecte (restul de q fiind nesigure). Altfel spus, un numar de condiionare de ordinul 10q antreneaza pierderea a q cifre semnificative n soluie. Aceasta constatare subliniaza importana cunoaterii unei evaluari a lui (A) pentru aprecierea acurateii soluiei calculate.

2.8.1 Scalarea sistemelor liniare

Fie D1,D2 Rnn doua matrice diagonale nesingulare ale caror elemente sunt puteri ale bazei de numeraie a formatului virgula mobila utilizat. Evident, sistemul Ax = b este echivalent cu sistemul D1AD2y = D1b, unde x = D2y. (2.53) 104 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUA II LINIARE Transformarea A D1AD2, b D1b, prin care sistemul Ax = b se aduce la forma (2.53) se numete scalare. Astfel definita, scalarea nu introduce erori numerice, iar costul ei este de O(n2) flopi, deci convenabil. Sunt mai multe considerente care sugereaza ideea de scalare i strategia de alegere a factorilor de scala D1, D2. Daca elementele din A sunt de marimi foarte diferite, atunci, marginea din (2.50) fiind aceeai pentru toate elementele, e posibil ca erorile relative asociate elementelor aij mici (n modul) sa fie foarte mari. De aceea, un obiectiv al scalarii poate fi acela de a echilibra valorile elementelor matricei A. Pe de alta parte, (2.52) sugereaza sa alegem D1, D2 astfel nct sa minimizam (D1AD2). Acest obiectiv este dificil de realizatn general i imposibil cu restricia de cost impusa; de altfel, nu are sens a optimiza pornind de la o relaie aproximativa. innd seama de cele spuse mai sus precum i de cerina evidenta ca D1 i D2 sa fie calculate cu O(n2) operaii, s-au impus cteva modalitai de scalare: scalare pe linii: D2 = I i D1 se alege astfel nct liniile matricei D1A sa aiba aproximativ aceeai norma . echilibrare linii-coloane: D1 i D2 se aleg astfel nct fiecare linie i coloana din D1AD2 sa aiba norma cuprinsa n intervalul [1/, 1] (vezi problema 2.26). De obicei, soluia calculata a sistemului (2.53) astfel scalat este mai precisa dect soluia calculata a sistemului iniial, dar n general nu exista nici o garanie n acest sens, de aceea scalarea nu trebuie privita ca panaceu universal ci aplicata n funcie de problema.

2.8.2 Rafinarea iterativa a soluiei calculate

O alta metoda de mbunataire a acurateii soluiei calculate x a sistemului Ax = b este prezentata n continuare. Presupunem ca sistemul a fost rezolvat folosind un algoritm cu pivotare pariala i deci ca o factorizare PA = LU este disponibila. Fie r = b - Ax reziduul corespunzator lui x. Daca notam e = x - x, atunci Ae = Ax - Ax = b - (b - r) = r. (2.54) Aceasta egalitate sugereaza sa rezolvam sistemul Ae = r, obinnd soluia e, i apoi sa calculam o noua soluie xnou = x + e, (2.55) spernd ca aceasta este mai precisa dect x (daca nu ar exista erori numerice n rezolvarea sistemului Ae = r, atunci e = e, deci xnou = x). Procedura poate fi repetata pentru noua soluie, pna la atingerea unei acuratei mulumitoare sau pna cnd nu se mai obine o mbunataire a acesteia. (Nu discutam aici modalitatea tehnica de estimare a acurateii soluiei, care depaete nivelul acestei lucrari.) Aparent, aa cum rezulta din (2.52), sistemele Ax = b i Ae = r se rezolva cu acuratei asemanatoare, n esena dictate de (A), iar adunarea soluiilor lor n (2.55) nu ar produce un rezultat mai precis. Se poate nsa demonstra ca, daca 2.9. SISTEME BANDA 105 (A)M 1, atunci schema de rafinare iterativa sugerata mai sus conduce (de obicei ntr-un numar foarte mic de iteraii) la soluia aproximativa x satisfacnd kx - xk kxk 2n cond(A, x) M, (2.56)

unde cond(A, x) def = k |A-1| |A| |x| k kxk , (2.57) iar |A| este matricea cu elementele |aij |. Comparnd acum (2.52) i (2.56) constatam ca n general rafinarea iterativa conduce ntr-adevar la mbunatairea acurateii soluiei calculate deoarece cond(A, x) (A). (2.58) (Pentru demonstrarea acestei inegalitai vezi problema 2.25.) Creterea acurateii soluiei este cu att mai mare cu ct raportul dintre cei doi termeni ai inegalitaii (2.58) este mai mic. Rafinarea iterativa da rezultate i mai bune daca se calculeaza reziduul r n dubla precizie (utiliznd un format virgula mobila cu mai multe cifre semnificative dect cel utilizat la rezolvarea Ax = b). Mai precis, daca (A)M 1, atunci prin rafinare se obine kx - xk / kxk M, adica cel mai precis rezultat la care se poate ajunge n formatul virgula mobila de lucru. Aceasta concluzie este intuitiva, deoarece n (2.55) e este calculat mai precis dect x. Pentru a rezuma, o iteraie a schemei de rafinare are forma (beneficiind de factorizarea PA = LU disponibila) xnou 1. Se calculeaza r = b - Ax (eventual n dubla precizie) 2. Se rezolva sistemele triunghiulare Ly = Pr, Uz = y 3. x x + z Numarul de operaii este de O(n2), deci cteva iteraii au un cost semnificativ mai mic dect cel al eliminarii gaussiene. Exista i dezavantaje: trebuie pastrata o copie a matricei A pentru calculul reziduului, iar implementarea calculelor n dubla precizie poate fi dependenta de mana (dei standardul IEEE este respectat pe majoritatea calculatoarelor); de aceea, n bibliotecile actuale, de exemplu LAPACK, se utilizeaza precizia de lucru. O analiza detaliata a erorilor pentru rafinarea iterativa poate fi gasita n [IX].

2.9 Sisteme banda

n aceasta seciune vom considera sisteme Ax = b, n care A Rnn este o matrice banda nesingulara, de laime inferioara r i superioara q. Astfel de matrice apar deseori n practica, de exemplu la soluionarea numerica a ecuaiilor cu derivate pariale. Vom vedea n continuare ca aplicarea adecvata a procedurii de eliminare gaussiana poate aduce o mare reducere a numarului de operaii, faa de cazul matricelor oarecare. 106 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUA II LINIARE . .... . ..... k=1 . . .... 0.0. . ..... k=2 . . ....

0.0. . ..... k=3 . . . . Fig. 2.8: Eliminarea gaussiana aplicata unei matrice banda de laime inferioara 2 i superioara 1. S-au notat cu . elementele modificate la pasul respectiv, cu 0 cele anulate, iar cu cele ramase nemodificate Teorema 2.9 Daca eliminarea gaussiana (algoritmul G) este aplicata matricei A Rnn banda de laime inferioara r i superioara q, nesingulara i cu A[k] nesingulare, k = 1 : n - 1, atunci n egalitatea (2.10) (Mn-1 . . .M1A = U), matricea U este superior triunghiulara banda de laime q, iar matricele ELT Mk = I - mkeT
k

sunt caracterizate de ik = 0, pentru i > k + r (altfel spus, n factorizarea LU produsa de algoritmul G, matricea L este inferior triunghiulara banda de laime r). Pe scurt, n procedura de eliminare gaussiana fara pivotare, structura banda a matricei A este ereditara, i.e. se transmite ca atare factorilor L, U furnizai de procedura. Demonstraie. Figura 2.8 ilustreaza procesul de eliminare gaussiana. Deoarece i1 = ai1/a11, rezulta i1 = 0 pentru i > 1 + r. n atribuirea A M1A scrisa detaliat aij aij - i1a1j , pentru i, j = 2 : n, se observa ca aij ramne nemodificat pentru i > 1+r (deoarece i1 = 0) i j > 1+q (deoarece a1j = 0). Aadar, se modifica doar blocul A(2 : 1 + r, 1 : 1 + q) (n prima coloana sunt introduse zerouri subdiagonale) i matricea A, inferior triunghiulara n prima coloana, ramne banda de laime inferioara r i superioara q. Procesul continua analog pentru k = 2, . . . , n-1, la fiecare pas k modificndu-se blocul A(k + 1 : k + r, k : k + q), ceea ce conduce la structura banda a matricei U, iar blocul (n - k) (n - k) dreapta jos pastrndu-i structura banda, ceea ce asigura forma enunata a matricelor ITE. _ Algoritmul rezultat este prezentat n continuare. Algoritmul 2.14 (Gb Eliminare gaussiana pentru matrice banda) (Se da A Rnn, banda de laime inferioara r i superioara q, cu A[k] nesingulare, k = 1 : n-1. Se calculeaza matricea superior triunghiulara U i matricele ITEM1, . . . ,Mn-1 astfelnct U = Mn-1Mn-2 . . .M1A.) 1. Pentru k = 1 : n - 1 1. Pentru i = k + 1 : min(k + r, n) 1. aik ik = aik/akk 2. Pentru i = k + 1 : min(k + r, n) 2.9. SISTEME BANDA 107 1. Pentru j = k + 1 : min(k + q, n) 1. aij aij - ikakj Lasam cititorului calculul unei formule pentru numarul de operaii; daca r n sau q n, acesta este 2n3/3. Triangularizarea matricei A conform algoritmului de mai sus permite reducerea sistemului Ax = b la sistemul echivalent superior triunghiular Ux = d, cu U banda de laime superioara q. Adaptarea UTRIS la acest caz este imediata, elementele xi calculndu-se prin substituie napoi cu formula xi = . .di min(i+q,n)

X j=i+1 uijxj. /uii. Vom vedea acum ce efect are pivotarea asupra structurii banda. Teorema 2.10 Daca eliminarea gaussiana cu pivotare pariala (algoritmul GPP) este aplicata matricei A Rnn banda de laime inferioara r i superioara q, nesin-

gulara, atunci n egalitatea (2.14) (Mn-1Pn-1 . . .M1P1A = U), matricea U este superior triunghiulara banda de laime q + r, iar matricele ITE Mk = I - mkeT
k

sunt caracterizate de ik = 0, pentru i > k + r. Demonstraia va fi doar schiata, procesul de eliminare fiind ilustrat cu ajutorul figurii 2.9. Primul pivot este gasit pe linia i1 1 : 1 + r, restul elementelor din prima coloana fiind nule. Permutarea liniilor 1 i i1 (operaia A P1A) va face ca pe prima linie elementele nenule sa fie n coloanele 1 : 1+q+r, n cel mai defavorabil caz (i1 = 1+r). Evident, i1 = ai1/a11, deci i1 = 0 pentru i > 1+r. n atribuirea A M1A scrisa detaliat aij aij - i1a1j , pentru i, j = 2 : n, aij ramne nemodificat pentru i > 1 + r (deoarece i1 = 0) i j > 1 + q + r (deoarece a1j = 0). Aadar se modifica doar blocul A(2 : 1 + r, 1 : 1 + q + r). Matricea A ramne banda de laime inferioara r; n prima linie, A este banda de laime superioara q + r, iar n liniile 1 + r : n banda de laime superioara q. Procesul continua asemanator pentru k = 2, . . . , n - 1; dupa A PkA, n linia k rezulta akj = 0 pentru j > k + q + r; operaia A MkA modifica doar blocul A(k+1 : k+r, k : k+r+q). n final, U i matricele ITE Mk au structura prezentata n enun. _ Observam ca pivotarea pariala conduce la o matrice U superior triunghiulara banda de laime mai mare dect cea a matricei iniiale A. Mai mult, n factorizarea rezultata PA = LU, matricea inferior triunghiulara L nu mai este banda, ca n lipsa pivotarii; innd seama de teorema 2.6, deoarece o coloana a matricei L este o permutare a vectorului mk (ce definete matricea ITE Mk = I - mkeT k ), coloana respectiva are doar r elemente nediagonale nenule, dar n poziii ce difera de la caz la caz. Prezentam mai jos algoritmul sugerat de demonstraia teoremei 2.10. 108 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUA II LINIARE . ...... . ....... P1 . . ...... .... .. . ....... M1 . . ...... 0...0... .

....... P2 . . ...... .... ... . ....... M2 . . ...... 0...0... . ....... P3 . . . . Fig. 2.9: Eliminarea gaussiana cu pivotare pariala aplicata unei matrice banda de laime inferioara 2 i superioara 1. S-a presupus ca la pasul k se efectueaza permutarea liniilor k (curenta) i k + 2 (cea mai departata posibil de cea curenta) Algoritmul 2.15 (GPPb Eliminare gaussiana cu pivotare pariala pentru matrice banda) (Se da A Rnn, banda de laime inferioar a r i superioara q, nesingulara. Se calculeaza matricea superior triunghiulara U, matricele ITE M1, . . . , Mn-1 (memorate peste A) i matricele PE P1, . . . , Pn-1 (memorate n vectorul p), astfel nct U = Mn-1Pn-1 . . .M1P1A.) 1. Pentru k = 1 : n - 1 1. r1 = min(k + r, n), q1 = min(k + q + r, n) 2. Se determina ik k : r1 astfel nct |aikk| = maxi=k:r1 |aik| 3. p(k) ik 4. Pentru j = k : q1 1. akj . aikj 5. Pentru i = k + 1 : r1 1. aik ik = aik/akk 6. Pentru i = k + 1 : r1 1. Pentru j = k + 1 : q1 1. aij aij - ikakj Comentarii. Numarul de operaii este mai mare dect pentru algoritmul 2.14, dar, daca r n sau q n, acesta este totui 2n3/3. _ Lasam cititorului problema scrierii unui algoritm eficient de rezolvare a sistemului Ax = b, atunci cnd A are structura banda, utiliznd algoritmul 2.15. n final, precizam ca pivotarea completa distruge structura banda i deci nu este recomandata n acest caz. 2.10. SISTEME SIMETRICE 109 Factorizarea Crout aplicata unei matrice A Rnn banda de laime inferioara r i superioara q are proprietai similare cu cele ale eliminarii gaussiane; cititorul este invitat sa demonstreze afirmaiile urmatoare. Algoritmul CROUT produce o matrice L inferior triunghiulara banda de laime r i o matrice U superior triunghiulara (unitate) banda de laime q. Algoritmul CROUTP (cu pivotare pariala) produce o matrice L inferior triunghiular a i o matrice U superior triunghiulara (unitate) banda de laime q + r. n plus, fiecare coloana a matricei L are cel mult r elemente nediagonale nenule.

2.10 Sisteme simetrice

Ne ocupam n aceasta seciune de rezolvarea sistemului Ax = b, cu A inversabila i simetrica, n general de semn nedefinit. Nucleul rezolvarii sistemului este factorizarea matricei A, chiar daca eventual ea nu se face explicit. Presupunnd ca matricea A are factorizare LDU, deoarece A = AT i factorizarea este unica (n condiiile teoremei 2.4), rezulta imediat ca U = LT . Se pune ntrebarea cum putem profita de simetrie pentru a reduce numarul operaiilor de la 2n3/3 (cazul general) la, speram, jumatate, adica n3/3. Dificultaile problemei. Aplicarea ca atare a procedurii de eliminare gaussian a (algoritmul G) pare a avea inconvenientul major de a distruge simetria matricei A. Sa explicitam primul pas al eliminarii gaussiene; se calculeaza A M1A, unde M1 = I - m1eT 1 este matricea ITE pentru care (M1A)i1 = 0, i 2 : n. Matricea M1A nu este simetrica: prima coloana are elementele subdiagonale nule, n schimb prima linie are elemente n general nenule. Totui submatricea (M1A)2:n,2:n este simetrica, ceea ce se observa i detaliind instruciunea 1.2.1.1 din algoritmul G (cu k = 1), adica, aij aij - ai1a1j/a11 care se aplica identic i elementului aji = aij aji aji - aj1a1i/a11 = aij - ai1a1j/a11. Aadar nu este necesara modificarea tuturor elementelor matricei, ci doar a celor din (sa zicem) triunghiul inferior; numarul de operaii se reduce astfel la aproximativ jumatate. Pentru a pastra simetria sunt necesare transformari de congruena, adica se aplica transformarile ITE de ambele pari ale matricei A. Primul pas al eliminarii gaussiene (modificate) va fi acum A M1AMT 1 = M1A - (M1A)e1mT 1 ; deoarece (M1A)e1 = a11e1, se observa ca nmulirea la dreapta cu MT 1 , adica (M1A)MT 1, nu afecteaza dect prima linie a matricei M1A (identica cu prima linie a matricei A), anume introducnd zerouri n toate poziiile din dreapta diagonalei. Aadar, din punctul de vedere al implementarii, nmulirea la dreapta cu MT 1 nu necesita calcule. Continund analog pentru celelalte coloane, se obine echivalentul relaiei (2.10) n cazul simetric D def = Mn-1 . . .M2M1AMT 1 MT 2 . . .MT n-1, (2.59) 110 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUA II LINIARE unde D este evident o matrice diagonala. Modificnd algoritmul G astfel nct sa se acceseze doar triunghiul inferior al matricei A, se obine factorizarea A = LDLT , cu L = M-1 1 M-1 2 . . .M-1 n-1 inferior triunghiulara unitate i D memorate peste A: LDLT 1. Pentru k = 1 : n - 1 1. Pentru i = k + 1 : n 1. ti aik 2. aik aik/akk 2. Pentru j = k + 1 : n 1. Pentru i = j : n 1. aij aij - aiktj Vectorul auxiliar t se folosete pentru salvarea elementelor coloanei curente k, egale cu cele de pe linia k n triunghiul superior, pe poziiile carora se memoreaza

multiplicatorii. Ca i n cazul general, chiar daca A este inversabila, se pot obine pivoi nuli daca det(A[k]) = 0 pentru un k 1 : n-1. Un exemplu evident este A = _ 0 1 1 0 _. n plus, algoritmul este numeric instabil. De aceea se impune pivotarea. Din pacate, strategiile de pivotare (pariala sau completa) propuse anterior pentru eliminarea gaussiana distrug simetria. O prima idee ar fi de a aplica permutarile elementare de ambele pari ale matricei A, aa cum am procedat i cu transformarile ITE; de exemplu, la primul pas, sa se calculeze A P1APT 1 . O astfel de permutare nu poate aduce pe poziia pivotului dect unul dintre elementele diagonale; exemplul de mai sus dovedete ca aceasta strategie poate da grei n situaii banale. Factorizarea cvasi-diagonala. Pastrarea simetriei trebuie deci mbinata cu participarea la pivotare a elementelor nediagonale. O posibilitate de realizare a acestui compromis este de a calcula o factorizare LDLT de un tip special, n care matricea D este cvasi-diagonala 2. Teorema 2.11 Fie A Rnn o matrice inversabila i simetrica. Atunci exista o matrice inferior triunghiulara unitate L Rnn, o matrice cvasi-diagonala D Rnn cu blocuri diagonale de dimensiune 1 1 sau 2 2, i o matrice de permutare P Rnn astfel nct PAPT = LDLT . (2.60) Desigur, matricea D este inversabila. Expresia de mai sus este numita factorizare cvasi-diagonala a matricei A. Demonstraia este constructiva. Vom descrie modul de calcul al factorizarii cvasidiagonale fara a preciza strategia de permutare mai mult dect este matematic necesar demonstraiei. Desigur, ntr-un algoritm de calcul efectiv matricea de permutare P va fi construita pornind de la considerente de stabilitate numerica.
2O

idee alternativa, descrisa n [?], este de a lua D tridiagonala.

2.10. SISTEME SIMETRICE 111 Primul pas al procedurii de factorizare se aplica matricei P1APT 1 = _ E CT C B _, (2.61) unde E este un bloc s s, cu s = 1 sau s = 2, iar P1 o matrice de permutare, eventual elementara. Demonstram acum ca daca A este inversabila, atunci exista P1 astfel nct E sa fie inversabil; de exemplu, daca a11 6= 0, se poate lua s = 1, P1 = I; daca a11 = 0, exista a1j 6= 0, altfel prima coloana a matricei A este nula, deci A este singulara; n acest caz, cu s = 2 i P1 permutnd liniile 2 i j se obine det(E) = -a2 1j 6= 0. Pentru a determina primele s coloane ale factorilor L i D, se utilizeaza o relaie asemanatoare cu (2.31): P1APT 1 = _ Is 0 CE-1 In-s __ E 0 0 B - CE-1CT __ Is E-1CT 0 In-s _ (2.62) Daca s = 1, calculul factorizarii (2.62) este efectuat de schema LDLT . Daca s = 2, atunci CE-1 se poate calcula folosind eliminarea gaussiana cu pivotare (vezi problema 2.30) sau chiar varianta pe care o adoptam aici pentru simplitate calculnd direct E-1 = 1 det(E) _ e22 -e21 -e21 e11 _ (2.63) i apoi nmulind C i E-1; evident, blocul B-CE-1CT se calculeaza acum banal, printr-un produs i o adunare matriceale, dar numai n partea sa inferior triunghiular a, deoarece este simetric.

Procedura continua identic pentru matricea B - CE-1CT de dimensiune (n - s) (n - s), i aa mai departe pna la obinerea factorizarii cvasi-diagonale (2.60). _ Algoritmul corespunzator este prezentat n continuare. Se vede uor ca procedura se poate executa pe loc n A; totu, la fel ca n schema LDLT , e necesara alocarea unui spaiu suplimentar pentru salvarea temporara, acum ntr-o matrice T Rn2, a elementelor coloanei (coloanelor, daca s = 2) curente. Algoritmul 2.16 (FCD Factorizare cvasi-diagonala) (Se da A Rnn simetrica i inversabila. Se calculeaza matricea inferior triunghiular a unitate L, matricea D Rnn cvasi-diagonala, cu blocuri de dimensiune 1 1 sau 2 2, i matricea de permutare P Rnn astfel nct relaia (2.60) sa fie satisfacuta. Matricele L i D se memoreaza peste A. Modul de calcul al lui P nu este detaliat.) 0. k 1 1. C^at timp k < n 1. Se determina Pk i s. 2. Se efectueaza permutarea (simetrica) A PkAPT
k

3. Daca s = 1 atunci 1. Pentru i = k + 1 : n 1. ti1 aik 112 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUA II LINIARE 2. aik aik/akk altfel 2. _ e11 e21 e22 _ 1
akkak+1,k+1-a2
k+1,k

_ ak+1,k+1 -ak+1,k akk _ 3. Pentru i = k + 2 : n 1. ti1 aik, ti2 ai,k+1 2. aik aike11 + ai,k+1e21 3. ai,k+1 ti1e21 + ai,k+1e22 4. Pentru j = k + s : n 1. Pentru i = j : n 1. Daca s = 1 atunci 1. aij aij - aiktj1 altfel 2. aij aij - aiktj1 - ai,k+1tj2 5. k k + s Comentarii. Numarul de operaii este de ordinul n3/3 flopi, iar memoria ocupata de n(n + 1)/2 + 2n. _ Strategii de pivotare. Vom prezenta n continuare doua strategii de alegere a permutarilor, completnd astfel algoritmul FCD cu detalierea instruciunii 1.1. Ne vom limita la descrierea primei etape din procedura de factorizare. Prin extensie de terminologie, numim pivot blocul E din (2.61) i pivotare permutarea din instruciunea 1.2. Pivotare completa. Spre deosebire de eliminarea gaussiana, la procedura de factorizare cvasi-diagonala pivotarea completa se poate descrie mai uor dect cea pariala. Matricea P1 i ntregul s sunt alese conform urmatoarei scheme [?]: FCDPC1 1. Se alege (0, 1) 2. 0 = maxi,j |aij |, 1 = maxi |aii| 3. Daca 1 0 atunci 1. s = 1, se alege P1 astfel nct n (2.61) |e11| = 1 altfel 2. s = 2, se alege P1 astfel nct n (2.61) |e21| = 0 Ideea este de a alege un pivot 1 1 daca exista un element diagonal suficient de mare n raport cu elementul de modul maxim 0 (depand un prag dictat de constanta ). Altfel pivotul este E = _ a11 ar1 ar1 arr _, unde |ar1| = 0. (2.64)

Notnd A = B - CE-1CT , se poate demonstra ca (vezi problema 2.31): |aij | (_1 + 1 _0, daca s = 1, _1 + 2 1-_0, daca s = 2. (2.65) 2.10. SISTEME SIMETRICE 113 Constanta se determina impunnd condiia _1 + 1 _2 = _1 + 2 1-_, ceea ce va conduce la factori de cretere (vezi seciunea 2.8) asemanatori indiferent de dimensiunile pivoilor. Se obine = (1 + 17)/8 0.64. Aceasta strategie de pivotare face ca algoritmul FCD sa fie numeric stabil. O analiza inversa a erorilor conduce la o margine similara cu cea din (2.50), cu 3n[21 31/2 41/3 . . . n1/(n-1)]1/2; aceasta margine pentru factorul de cretere este puin mai mare dect cea pentru eliminarea gaussiana cu pivotare completa (algoritmul GPC). Costul pivotarii complete este de O(n3) comparaii, la fel ca pentru algoritmul GPC, ceea ce constituie un efort de calcul important. De aceea este interesanta gasirea unei strategii de pivotare pariala. Pivotare pariala. Se poate demonstra ca alegerea pivotului cautnd pe o singur a coloana (i eventual pe diagonala) nu poate avea succes. Surprinzator, cautnd pe doua coloane se poate descrie o strategie de pivotare pariala eficienta (vezi [?]), detaliata de schema (ne ocupam din nou doar de primul pas al factorizarii): FCDPP1 1. Se alege (0, 1) 2. = maxi=2:n |ai1| (i |ar1| = ) 3. Daca |a11| atunci 1. s = 1, P1 = I altfel 2. = maxi=1:n, i6=r |air| 3. Daca |a11| 2 atunci 1. s = 1, P1 = I altfel daca |arr| atunci 2. s = 1, se alege P1 astfel nct n (2.61) e11 = arr altfel 3. s = 2, se alege P1 astfel nct n (2.61) |e21| = Pentru a nelege ideea pivotarii, este util a considera matricea . .......... a11 . . . . . . . . . . . . ... ... . . . arr . . . . . . ... ... ... ... ... . ........... i a observa ca pivotul este a11 sau arr cnd s = 1, sau _ a11 ar1 ar1 arr _ cnd s = 2. Se poate demonstra ca relaia (2.65) ramne n continuare adevarata, deci se va alege aceeai valoare pentru . Factorul de cretere din (2.50) va fi acum limitat de (1 + 1/)n-1 (2.57)n-1, o margine ceva mai larga dect pentru algoritmul GPP. n practica, algoritmul de factorizare cvasi-diagonala cu pivotare pariala 114 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUA II LINIARE are o stabilitate numerica satisfacatoare. Cum numarul de comparaii este redus

acum la O(n2), pivotarea pariala este de obicei preferata celei complete (la fel ca la eliminarea gaussiana). Utilizarea factorizarii cvasi-diagonale. Factorizarea (2.60) poate fi folosita n modul cel mai simplu pentru rezolvarea sistemelor liniare, redusa la rezolvarea a doua sisteme triunghiulare i a unuia cvasi-diagonal; lasam cititorului detaliile de implementare. De asemenea, (2.60) se poate utiliza pentru calculul inversei matricei A, innd seama ca A-1 = PTL-TD-1L-1P. Remarcam faptul ca i matricea A-1 este simetrica. Cazul complex. n cazul n care A Cnn este hermitica (A = AH), factorizarea sa cvasi-diagonala are forma (analoaga cu (2.60)) PAPT = LDLH, unde P este o matrice de permutare, L Cnn este inferior triunghiulara unitate, iar D Cnn este bloc diagonala (cu blocuri 1 1 sau 2 2) i hermitica. Algoritmul FCD i pastreaza forma generala; trebuie luat nsa n considerare faptul ca n cazul complex transpunerea este nsoita i de conjugare. De exemplu, (2.61) devine P1APT 1 = _ E CH C B _, (2.66) iar E este hermitica, adica, n cazul 2 2, E = _ e11 e21 e21 e22 _. Instruciunile algoritmului FCD se modifica corespunzator, de exemplu 1.4.1.1.1 are forma aij aij - aikajk.

2.11 Sisteme simetrice pozitiv definite

Consideram acum sistemul Ax = b, unde matricea A Rnn este simetrica pozitiv definita. Ideea de baza a rezolvarii lui este data de teorema urmatoare. Teorema 2.12 Pentru orice matrice simetrica i pozitiv definita A Rnn, exista o unica matrice inferior triunghiulara L Rnn, cu elemente diagonale pozitive, astfel nct A = LLT , (2.67) expresie care este numita factorizare Cholesky (iar L este numit factorul Cholesky al matricei A). Reciproc, daca factorizarea Cholesky exista, atunci A este pozitiv definita. 2.11. SISTEME SIMETRICE POZITIV DEFINITE 115 Evident, (2.67) se poate scrie sub forma A = RTR, unde R = LT este superior triunghiulara. De asemenea, factorizarile A = LTL, respectiv A = RRT , se numesc tot Cholesky. Demonstraie. Deoarece A este pozitiv definita atunci, conform propoziiei 1.3, submatricele lider principale A[k], k = 1 : n - 1, sunt pozitiv definite, deci nesingulare. Atunci A are o unica factorizare LDU (vezi teorema 2.4), A = LDU , din motive de simetrie, U = (L)T . Dar A i D sunt congruente, deci D este pozitiv definita, adica dii > 0, i = 1 : n. Fie F Rnn matricea diagonala definita de fii = dii, i = 1 : n. Notnd L = LF, prima parte a teoremei este demonstrata (lii = dii, i = 1 : n). Reciproca este evidenta; fie x Rn nenul, altfel arbitrar; atunci avem xTAx = xTLLTx = kLT xk2 2 > 0 (deoarece L este nesingulara, LTx 6= 0). _ Exista mai muli algoritmi pentru calculul factorizarii Cholesky a unei matrice pozitiv definite, care difera doar prin ordinea de efectuare a calculelor. Vom deduce aici o procedura de factorizare compacta, similara cu cea folosita la calculul factoriz arii Crout, n care elementele factorului Cholesky L sunt calculate n ordinea (crescatoare a) coloanelor. Din identitatea A = LLT (doar triunghiul inferior stng al lui A este reprezentat, deoarece A este simetrica) .

...... a11 ... ... ak1 . . . akk ... ... ... an1 . . . ank . . . ann . ....... = . ...... l11 ... ...0 lk1 . . . lkk ... ... ... ln1 . . . lnk . . . lnn . ....... . ...... l11 . . . lk1 . . . ln1 ... ... ... lkk . . . lnk 0 ... ... lnn . ....... obinem pentru prima coloana: a11 = l2 11 l11 = a11, ai1 = li1l11 li1 = ai1 / l11, i = 2 : n, (2.68) i deci procesul de calcul poate fi iniiat. Acum, presupunnd ca primele k-1 coloane din L au fost calculate, identificarea elementului din poziia (k, k) n A = LLT furnizeaza akk =
k-1

Xj=1 l2 kj + l2 kk, (2.69) n care singura necunoscuta este lkk. Conform teoremei 2.12, daca A este pozitiv definita, atunci exista un unic lkk pozitiv astfel nct (2.69) sa aiba loc. Atunci, akk k-1

Xj=1 l2 kj > 0 (2.70)

lkk = vuutakk k-1

Xj=1 l2 kj . (2.71) 116 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUA II LINIARE De asemenea, aik =
k-1

Xj=1 lij lkj + liklkk, i = k + 1 : n, n care, n ordinea de calcul considerata, singura necunoscuta este lik. Aadar lik = . .aik k-1

Xj=1 lij lkj. / lkk, i = k + 1 : n. (2.72) Formulele (2.68), (2.71) i (2.72) definesc algoritmul de mai jos; pentru concizie, am inclus i primul pasn bucla de parcurgere a coloanelor. Totodata, acest algoritm este cel mai bun mijloc de testare a pozitivitaii unei matrice; testul se bazeaza pe faptul ca factorizarea Cholesky a unei matrice poate fi calculata daca i numai daca matricea este pozitiv definita (teorema 2.12); aadar, daca termenul stng al inegalitaii (2.70) nu este pozitiv, atunci matricea A nu este pozitiv definita. Algoritmul 2.17 (CHOL factorizare Cholesky) (Se da A Rnn simetrica. Se stabilete daca A este pozitiv definita , n acest caz, se scrie peste triunghiul inferior al lui A matricea L din factorizarea Cholesky A = LLT .) 1. Pentru k = 1 : n 1. akk -Pk-1 j=1 l2
kj

2. Daca 0 atunci 1. Tiparete A nu este pozitiv definita 2. Stop 3. akk lkk = 4. Pentru i = k + 1 : n 1. aik lik = _aik -Pk-1 j=1 lij lkj_ / lkk Comentarii. n mod evident, instruciunea 1.4.1 reprezinta o operaie DOT. O alta ordonare a calculelor, care, n varianta vectoriala, conduce la operaii Saxpy, este propusa n problema 2.33. Tot ca exerciiu pentru cititor (problema 2.34) este lasata varianta la nivel de bloc a factorizarii Cholesky, foarte asemanatoare algoritmilor de factorizare LU la nivel de bloc, prezentai n seciunea 2.4. AlgoritmulCHOL necesita aproximativNCHOL = n3/3 flopi , n plus, calculul a n radacini patrate (care e neglijabil). Memoria necesara este de aproximativ MCHOL = n2/2. Algoritmul este numeric stabil; daca L reprezinta factorul Cholesky calculat, atunci LLT = A+E, unde perturbaia E satisface limita (2.50) pentru = 1; deci, stabilitatea este mai buna dect a eliminarii gaussiene cu pivotare completa. _ Desigur, sistemul liniar Ax = b, cu A pozitiv definita se calculeaza cu schema Ch 1. Se factorizeaza A = LLT cu algoritmul CHOL 2. Se rezolva sistemul inferior triunghiular Ly = b 3. Se rezolva sistemul superior triunghiular LT x = y 2.12. RUTINE LAPACK I MATLAB 117 efectundu-se de doua ori mai puine operaii dect daca s-ar aplica algoritmul de eliminare gaussiana. n privina condiionarii, problema rezolvarii sistemului pozitiv definit Ax = b

satisface inegalitatea (2.47). Inversa (care este tot simetrica i pozitiv definita) i determinantul unei matrice simetrice pozitiv definite se calculeaza adaptnd ideile din seciunea 2.6 la contextul factorizarii Cholesky A = LLT . Matrice banda. Daca A Rnn este o matrice simetrica, pozitiv definita i banda de laime r, atunci factorul Cholesky este inferior triunghiular banda de laime r. Aceasta se poate observa cu uurina din relaia (2.72), n care un element lik depinde de valorile lij aflate la stnga sa pe linia i (i.e. j < k); aadar, li1 = ai1, deci n prima coloana se motenete structura matricei A; daca, pentru un indice de coloana s, avem lij = 0 pentru j = 1 : s - 1, atunci este evident ca lis = ais/lss, deci structura se motenete i n coloana s. n concluzie, linia i are, n poriunea subdiagonala, aceeai structura n A i L. Adaptarea algoritmului CHOL la cazul matricelor banda este un exerciiu relativ simplu pe care l lasam cititorului (vezi problema 2.36). Cazul complex. Daca matricea A Cnn este hermitica i pozitiv definita, atunci factorizarea sa Cholesky este unica i are forma A = LLH, unde L Cnn este inferior triunghiulara, cu elementele diagonale reale i pozitive (i A are elementele diagonale reale, fiind hermitica, i pozitive, fiind pozitiv definita). Factorul Cholesky se poate calcula cu algoritmul CHOL uor modificat, deoarece (2.71) i (2.72) se transforma n lkk = vuutakk k-1

Xj=1 lkj lkj , (2.73) respectiv lik = . .aik k-1

Xj=1 lij lkj. / lkk, i = k + 1 : n. (2.74)

2.12 Rutine LAPACK i MATLAB

Prezentam pe scurt n continuare rutinele din biblioteca LAPACK i instruciunile sau funciile limbajului MATLAB care rezolva problemele tratate n acest capitol. LAPACK (Linear Algebra PACKage) [XV] este o biblioteca de rutine scrise iniial n FORTRAN dar apelabile din mai multe limbaje de programare. Rutinele implementeaza n special algoritmi la nivel de bloc (apelnd rutinele BLAS de nivel 3) i de aceea ating maximul de performana pe calculatoare cu memorie ierarhica. Pentru fiecare problema au fost alei algoritmii cei mai fiabili i rapizi dintre cei cunoscui, buna parte dintre acetia fiind adaptarea celor din bibliotecile LINPACK 118 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUA II LINIARE [XIII] (dedicata n special rezolvarii sistemelor liniare) i EISPACK [XI,XII] (pentru calculul valorilor proprii i probleme conexe), cele mai performante i folosite pachete de programe de calcul numeric ale anilor 7080. De aceea se poate aprecia ca LAPACK este cel mai modern i puternic instrument de calculn algebra matriceala. n plus, sursele LAPACK sunt disponibile gratuit (vezi http://www.netlib.org). Numele rutinelor LAPACK respecta conveniile BLAS (vezi seciunea 1.11), adica au forma xyyzzz, unde x codifica formatul de reprezentare a datelor, yy reprezinta tipul matricei (vezi tabelul 1.1 pentru cele mai importante tipuri), iar zzz arata operaia executata. Rutinele LAPACK sunt mparite n trei categorii: rutine driver, care rezolva o problema completa, de exemplu aflarea soluiei unui sistem liniar; rutine de calcul, care rezolva subprobleme sau completeaza rezolvarea unei probleme, de exemplu calculul factorizarii LU sau rafinarea iterativa a soluiei unui sistem liniar; rutine auxiliare.

Rezolvarii sistemelor liniare i sunt dedicate n LAPACK doua tipuri de rutine driver: 1. Driverul simplu, cu numele de forma xyySV, rezolva sistemele (cu parte dreapta multipla) AX = B sau ATX = B. De exemplu, xGESV se utilizeaza pentru matrice A oarecare (implementnd eliminarea gaussiana la nivel de bloc), xPOSV se utilizeaza cnd matricea A este simetrica pozitiv definita (implementnd algoritmul Cholesky la nivel de bloc) etc. 2. Driverul expert, cu numele xyySVX, care, n plus scaleaza matricea A daca este necesar; estimeaza numarul de condiionare al matricei A; rafineaza iterativ soluia. n contextul rezolvarii de sisteme, rutinele de calcul cele mai importante sunt urmatoarele: 1. xyyTRF calculeaza factorizarea PA = LU n cazul general (yy=GE), factorizarea Cholesky A = LLT pentru matrice simetrice (hermitice) pozitiv definite (yy=PO), factorizarea cvasi-diagonala PAPT = LDLT pentru matrice simetrice (hermitice) (yy=SY, yy=HE). n toate cazurile de mai sus exista rutine pentru matrice banda. 2. xyyTRS utilizeaza rezultatul factorizarii (ierea rutinei xyyTRF corespunzatoare) pentru a calcula soluia unui sistem liniar. 3. xyyEQU scaleaza matricea A. 4. xyyRFS rafineaza iterativ soluia unui sistem liniar. 2.13. PROBLEME 119 5. xyyCON estimeaza inversul numarului de condiionare, adica 1/(A). 6. xyyTRI calculeaza inversa unei matrice, utiliznd rezultatul factorizarii. MATLAB (MATrix LABoratory) [XIV] are o interfaa mai simpla, dar rutinele sale implementeaza de asemenea algoritmi de mare performana. Rezolvarea sistemului liniar (eventual cu parte dreapta multipla) AX = B se face apelnd la operatorul de mparire la stnga; daca A i B sunt variabilele memornd matricea coeficienilor sistemului , respectiv, termenul sau drept, atunci soluia se calculeaza cu A\B. Sistemul (cu necunoscuta la stnga) XA = B se rezolva utiliznd operatorul de mparire la dreapta, soluia fiind B/A. n ambele cazuri, algoritmul implementat este eliminarea gaussiana cu pivotare pariala, indiferent de tipul matricei. Factorizarea PA = LU este calculata de funcia lu, iar factorizarea Cholesky de funcia chol. Nu exista o funcie dedicata factorizarii cvasi-diagonale. Inversa unei matrice se calculeaza cu funcia inv, iar determinantul cu det. Reamintim ca n nici un caz soluia unui sistem AX = B nu se calculeaza cu inv(A)*B. Pentru calculul numarului de condiionare exista mai multe funcii; cond calculeaz a exact 2(A), ceea ce necesita mai multe operaii dect rezolvarea sistemului liniar Ax = b (algoritmul va fi prezentat n capitolul 5); rcond estimeaza 1/(A), utiliznd algoritmul din finalul seciunii 2.7; n fine, condest estimeaza 1/1(A) cu un algoritm neprezentat n aceasta lucrare.

2.13 Probleme

P 2.1 Descriei o varianta a eliminarii gaussiene n care se introduc zerouri n coloanele lui A, deasupra diagonalei, n ordinea n : -1 : 2, i care produce factorizarea A = UL, unde U este superior triunghiulara unitate i L este inferior triunghiulara. P 2.2 Scriei variantele vectoriale ale algoritmilor GPP i GPC, utiliznd apeluri la funcii din biblioteca BLAS 1. P 2.3 Fie A Rnn o matrice strict diagonal dominanta pe coloane, i.e. cu proprietatea |ajj | > Pn i=1,i6=j |aij |. Demonstrai ca pivotarea pariala nu este necesara n procesul de eliminare gaussiana i ca toi multiplicatorii gaussieni sunt subunitari (n modul). P 2.4 Fie matricea de transformare elementara Gauss-Jordan Mk = In - mkeT k , definita de vectorul mk = [1k . . . k-1,k 0 k+1,k . . . nk]T . a. Fie x Rn, cu xk 6= 0. Determinai mk astfel nct Mkx = xkek. b. Fie A Rnn, avnd submatricele lider principale A[k] nesingulare, k = 1 : n - 1.

Scriei un algoritm care, utiliznd transformari Gauss-Jordan, diagonalizeaza matricea A, i.e. genereaza M1, M2, . . . , Mn-1 astfel nct Mn-1 . . . M2 M1A = D, cu D diagonala. Care este numarul de operaii ? c. Introducei pivotarea n algoritmul anterior. P 2.5 Demonstrai unicitatea factorizarii LDU n condiiile teoremei 2.4. P 2.6 Demonstrai ca daca A Rnn admite o factorizare LDU unica, atunci submatricele lider principale A[k], k = 1 : n - 1, sunt nesingulare. (Indicaie: utilizai reducerea la absurd.)

120 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUA II LINIARE

P 2.7 Demonstrai ca algoritmul GPP modificat conform descrierii din seciunea 2.4.1 produce o factorizare LU pentru care |lik| 1, pentru i > k. P 2.8 Cum trebuie modificat algoritmul GPC aplicat matricei A Rnn pentru a furniza factorizarea LU cu permutari pe linii i pe coloane de forma PAQ = LU ? Demonstrai ca |ukk| |ukj |, pentru j > k (n plus, |lik| 1, pentru i > k). P 2.9 Adaptai algoritmul de eliminare gaussiana cu pivotare pariala astfel nct sa calculeze factorizarea (2.32). P 2.10 Scriei o varianta la nivel de bloc a algoritmului de factorizare Crout cu pivotare CROUTP. P 2.11 Cum trebuie modificai algoritmii 2.7 i 2.8 astfel nct sa funcioneze corect atunci cnd dimensiunea n a matricei nu este multiplu al dimensiunii r a blocurilor ? P 2.12 Prezentai o varianta a algoritmului de rezolvare a sistemelor liniare de forma Ax = b prin eliminare gaussiana cu pivotare pariala, fara a memora multiplicatorii. P 2.13 Fie H Rnn o matrice nesingulara superior Hessenberg (hij = 0, pentru i > j + 1). a. Daca toate submatricele lider principale ale lui H sunt nesingulare, adaptai algoritmul de eliminare gaussiana pentru rezolvarea sistemului liniar Hx = b, unde b Rn; calculai numarul de operaii. b. Adaptai algoritmul GPP pentru aceeai problema. c. Adaptai algoritmul Crout de factorizare LU. P 2.14 Se considera doua matrice: H Rnn, superior Hessenberg nesingulara, R Rnn, superior triunghiulara unitate. Prezentai algoritmi eficieni pentru: a. rezolvarea sistemului liniar HRx = b, cu b Rn. b. Atunci cnd toate submatricele lider principale ale lui H sunt nesingulare, factorizarea Crout A = HR poate fi obinuta printr-una din urmatoarele doua scheme: Schema 1. 1. Calculeaza A = HR. 2. Calculeaza factorizarea Crout a lui A: A = LU. Schema 2. 1. Calculeaza factorizarea Crout a lui H: H = LU. 2. Calculeaza U = UR. Care dintre ele este mai eficienta ? P 2.15 a. Propunei un algoritm pentru rezolvarea sistemului liniar Ax = b, unde A Rnn este nesingulara i b Cn, utiliznd numai aritmetica reala. b. Prezentai un algoritm pentru rezolvarea ecuaiei matriceale AX = B, n care A Rnn este nesingulara i B Rnm. (Indicaie: utilizai GPP.) c. Idem, dar pentru ecuaia XA = B, cu A Rnn, B Rmn. P 2.16 Se da matricea A Rnn nesingulara. Utiliznd rezultatul algoritmului de eliminare gaussiana cu pivotare pariala (Mn-1Pn-1 . . .M1P1A = U) sau factorizarea LU (PA = LU), scriei algoritmii pentru rezolvarea sistemelor AT y = c, AT Y = C, unde c Rn, C Rnm. P 2.17 Prezentai un algoritm eficient pentru rezolvarea sistemului liniar Akx = b, unde A Rnn este nesingulara, b Rn i k N, k > 1. P 2.18 Daca A,B Rnn sunt matrice nesingulare, prezentai un algoritm eficient de rezolvare a sistemului liniar (AB)kx = c, unde c Rn.

2.13. PROBLEME 121

P 2.19 Sistemul complex Cz = w (cu C = A + iB, z = x + iy, w = u + iv) se poate scrie (prin decomplexificare) n forma A -B B A x y=u v Ce este preferabil: (a) rezolvarea sistemului Cz = w cu operaii complexe sau (b) rezolvarea sistemului decomplexificat cu operaii reale ? P 2.20 Se presupune ca A Rnn are o factorizare LU i ca L i U sunt cunoscui. Prezentai un algoritm care calculeaza elementul din poziia (i, j) a matricei A-1, cu aproximativ (n - j)2 + (n - i)2 flopi.

P 2.21 Detaliai algoritmii de calcul al inversei unei matrice A Rnn i al det(A), utiliznd eliminarea gaussiana cu pivotare completa. P 2.22 Se dau A Rnn, B Rnr, C Rrn, D Rrr, matricele A i D fiind inversabile. Fie A+ = A+BD-1C (actualizare de rang r a matricei A). Cazuri particulare: 1. A, D simetrice pozitiv definite, C = BT ; 2. r = 1, adica A+ = A + bcT /_ (actualizare de rang 1). a. Demonstrai ca are loc formula (Sherman-Morrison-Woodbury): A-1 + = A-1 - A-1BD-1 + CA-1, unde D+ = D + CA-1B. b. Scriei un algoritm de calcul al matricei A-1 + , presupunnd A-1 cunoscuta (actualizarea inversei). Considerai cazurile particulare 1. i 2.. Evaluai numarul de operaii. c. Se considera matricea H = A B C -D . Demonstrai ca H-1 = A-1 + A-1BD-1
+

D-1 + CA-1 -D-1 + . P 2.23 Fie u, v Rn doi vectori nenuli i matricea A = In + uvT . a. Prezentai un algoritm eficient pentru calculul determinantului matricei A. Cnd este A nesingulara ? b. Daca A este nesingulara i b Rn, scriei un algoritm eficient pentru rezolvarea sistemului liniar Ax = b. P 2.24 Matricea A Rnn de mai jos este un exemplu (construit special n acest scop) n care factorul de cretere atinge valoarea maxima n algoritmul GPP. A= 2 666664 10...01 -1 1 . . . 0 1 ... ... ... ... ... -1 -1 . . . 1 1 -1 -1 . . . -1 1 3 777775 . Demonstrai ca n algoritmul GPP nu se efectueaza nici o permutare i ca = 2n-1. P 2.25 Fie A Rnn i x Rn. Demonstrai inegalitatea cond( A, x) _(A) (relaia (2.58)).

122 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUA II LINIARE

P 2.26 Se da A Rnn. Sa se gaseasca matricele diagonale D1 i D2 astfel nct fiecare linie i coloana din D1AD2 sa aiba norma egala cu 1. (Impunndu-se restricia ca elementele matricelor D1 i D2 sa fie puteri ale bazei de numeraie _, sa se construiasca D1 i D2 astfel nct liniile i coloanele lui D1AD2 sa aiba norma cuprinsa n intervalul [1/_, 1].) P 2.27 Fie B = A 0 R A , cu A,R Rnn, nesingulare, R superior triunghiulara. Se presupune ca factorizarea LU a lui A exista i este cunoscuta (A = LU). a. Scriei un algoritm pentru calculul factorizarii LU a lui B, B = L U. b. Propunei un algoritm pentru rezolvarea sistemului liniar Bx = d, n care d R2n. Calculai numarul de operaii pentru ambii algoritmi. P 2.28 Fie A R2n2n o matrice nesingulara cu toate submatricele lider principale nesingulare, de forma A = A1 A2 A3 A4 , cu A1,A2,A3,A4 Rnn i A3 superior triunghiulara. a. Scriei un algoritm pentru rezolvarea sistemului liniar Ax = b, cu b R2n. b. Aceeai problema, dar presupunnd doar ca A este nesingulara. P 2.29 Fie A Rnn o matrice nesingulara tridiagonala (aij = 0, pentru i > j + 1 sau

i < j - 1). a. Adaptai algoritmul de eliminare gaussiana la acest tip de matrice. b. Prezentai un algoritm care rezolva sistemul Ax = b, cu b Rn. c. Daca matricea A este simetrica i pozitiv definita, adaptai algoritmul de factorizare Cholesky pentru A. P 2.30 Detaliai o procedura de calcul al matricei F = CE-1 din (2.62), pentru cazul s = 2, utiliznd eliminarea gaussiana cu pivotare pariala. P 2.31 Demonstrai relaia (2.65) (care marginete creterea elementelor matricei simetrice A n timpul execuiei algoritmul FCD, de factorizare cvasi-diagonala cu pivotare completa). P 2.32 Detaliai permutarile efectuate n algoritmul de factorizare cvasi-diagonala cu pivotare completa (schema FCDPC1), opernd numai n triunghiul inferior al matricei simetrice date. P 2.33 Scriei un algoritm de calcul al factorului Cholesky L al unei matrice A Rnn pozitiv definite, n care elementele lui L sa fie calculate prin operaii Saxpy (i nu DOT, ca n algoritmul CHOL). Indicaie: algoritmul este asemanator eliminarii gaussiene. P 2.34 Scriei o varianta la nivel de bloc a algoritmului de factorizare Cholesky a unei matrice simetrice pozitiv definite. P 2.35 Fie A Rnn o matrice nesingulara inferior bidiagonala, i T = AAT . Prezentai un algoritm eficient pentru calculul factorizarii Cholesky a matricei T (demonstrai nti ca T este simetrica i pozitiv definita). P 2.36 Adaptai algoritmul CHOL pentru factorizarea matricelor simetrice pozitiv definite banda de laime r. P 2.37 Daca matricea A Rnn este simetrica i pozitiv definita, propunei un algoritm pentru factorizarea Cholesky A = RRT , unde R este superior triunghiulara i are elementele diagonale pozitive. P 2.38 Fie A Rnn o matrice simetrica i pozitiv definita. Scriei un algoritm de calcul al factorizarii A = LDLT , cu L inferior triunghiulara unitate i D diagonala. (A = LDLT mai este numita factorizare Cholesky fara radical.)

Capitolul 3

Problema celor mai mici patrate


n acest capitol vom prezenta principalele metode numerice de rezolvare a sistemelor de ecuaii liniare Ax = b, (3.1) n care matricea A Rmn i vectorul b Rm sunt date, iar m 6= n, adica numarul ecuaiilor este diferit de cel al necunoscutelor. ntruct, de regula, un sistem supradeterminat (cu m > n) nu are soluii, iar un sistem subdeterminat (cu m < n) nu are soluie unica, pentru a asigura buna formulare a problemei de calcul, n prima situaie trebuie sa redefinim, iar n a doua trebuie sa precizam noiunea de soluie a sistemului (3.1). n cazul m > n, o reformulare naturala a problemei (3.1) consta n a cere determinarea unei soluii aproximative a sistemului (3.1), adica a unui vector x. Rn astfel nct reziduul corespunzator r. = b - Ax. sa fie, ntr-un anumit sens, ct mai mic. (Altfel spus, vectorul b trebuie sa fie aproximat ct mai bine printr-o combinaie liniara a coloanelor lui A.) ntr-o exprimare mai precisa, aceasta nseamna ca x. trebuie sa minimizeze funcia (x) = (b - Ax), (3.2) unde () este o norma pe Rm, aleasa n mod adecvat. n cazul m < n, un criteriu natural de selecie a unei singure soluii x. Rn a sistemului (3.1) impune ca aceasta sa fie, ntr-un anumit sens, ct mai economica, de exemplu sa aiba o lungime, adica o norma, ct mai mica. Altfel spus, x. trebuie sa minimizeze funcia (x) = (x)|Ax=b, (3.3) unde () este o norma pe Rn 1.
1Notaia

din (3.3) spune ca este restricia normei pe mulimea X a soluiilor sistemului (3.1). Desigur, pentru ca problema minimizarii funciei sa aiba sens, este necesar sa presupunem

ca sistemul liniar (3.1) are cel puin o soluie, i.e. b ImA.

123 124 CAPITOLUL 3. PROBLEMA CELOR MAI MICI P ATRATE Subliniem din start ca alegerea normelor din (3.2) i (3.3) depinde de natura problemei considerate , n acelai timp, determina specificul metodelor de calcul utilizate pentru rezolvarea ei. (De exemplu, n cazul normelor k k1 sau k k se obin probleme de programare liniara, care se rezolva prin metodele expuse n capitolul 2, vezi [X]). n acest capitol vom considera ca normele i coincid cu norma euclidiana k k = k k2, iar terminologia utilizata va fi urmatoarea. 1. n cazul m n problema de minimizare kb - Ax.k = min xRn kb - Axk (3.4) a normei euclidiene a reziduului r = b - Ax se numete problema (liniara) a celor mai mici patrate (CMMP), iar soluia ei x. este, prin definiie, pseudosoluia sistemului (3.1) n sensul CMMP. Vectorul b. = Ax. constituie cea mai buna aproximare a lui b printr-o combinaie liniara a coloanelor matricei A, i.e. pe ImA, iar reziduul de norma minima r. = b-Ax. reprezinta eroarea de aproximare optimala. 2. n cazul m n soluia problemei de minimizare cu restricii liniare kx.k = min Ax=b kxk (3.5) este, prin definiie, soluia normala n sensul CMMP (i.e. soluia de norma euclidiana minima) a sistemului (3.1). Problemele de tip CMMP enunate mai sus apar sub diverse forme (inclusiv cu date complexe) n multe aplicaii care, de exemplu, vizeaza aproximarea funciilor, prelucrarea statistica a datelor experimentale, modelarea i identificarea sistemelor dinamice, prelucrarea semnalelor etc. Exemplul 3.1 Consideram un proces descris printr-o dependena funcionala y = f0(u), cunoscuta doar parial din date experimentale constnd ntr-o mulime de perechi intrare-iere (ui, yi), unde yi = f0(ui), i = 1 : m. Se pune problema gasirii unei expresii analitice aproximative f pentru funcia f0, sub forma unei combinaii liniare cu coeficienii c1, c2, . . . , cn a n funcii date g1, g2, . . . , gn, i.e. f(u) =
n

Xj=1 cjgj(u), astfel nct erorile de aproximare (sau reziduurile) ri = yi - f(ui), i = 1 : m, evaluate n punctele date (ui, yi), sa fie ct mai mici. n cazul tipic m > n, formularea n sens CMMP a problemei de aproximare considerate mai sus consta n determinarea coeficienilor cj , j = 1 : n, astfel nct eroarea medie patratica krk2 =
m

Xi=1 r2 i=
m

Xi=1 . .yi n

Xj=1 cjgj(ui).
2

(3.6)

3.1. TRANSFORMARI ORTOGONALE 125 sa fie minima. Introducnd matricea A Rmn cu elementele aij = gj(ui), i = 1 : m, j = 1 : n, precum i vectorii b = [ y1 y2 . . . ym ]T Rm i x = [ c1 c2 . . . cn ]T Rn, problema minimizarii lui (3.6) se scrie evident sub forma sintetica (3.4). _ Exemplul 3.2 n problemele de identificare i estimare a parametrilor, relaiile din exemplul anterior apar scrise sub forma yi =
n

Xj=1 cjgj(ui) + ri, i = 1 : m, n care acum reziduurile ri reprezinta erori (sau zgomote) de masura , n consecina, au o descriere statistica. Se poate arata ca, n anumite condiii standard, estimarile optimale ale parametrilor x = [c1 . . . cn]T sunt soluii ale problemei CMMP (3.6) cu exact aceleai date A, b ca mai sus. n general, probleme de modelare sistemica extrem de complicate admit o dubla interpretare, ca probleme de aproximare sau de estimare, i n consecina se trateaza n spiritul principiului CMMP. Pentru detalii i aplicaii specifice, cititorul poate consulta [?, ?]. _ Teoria problemelor CMMP este intim legata de geometria spaiului euclidian Rm, n special de noiunea de ortogonalitate, care dupa cum vom vedea mai departe da un sens (geometric) clar i extrem de intuitiv problemelor de minimizare formulate mai sus. n mod corespunzator, practica numerica actuala recomanda rezolvarea acestor probleme prin metode directe de triangularizare a matricei A, bazate pe utilizarea transformarilor ortogonale 2. De aceea, n primele seciuni ale acestui capitol, vom introduce transformarile ortogonale utilizate n calcule i vom descrie procedurile corespunzatoare de triangularizare ortogonala. Pe aceasta baza, n continuare vom prezenta procedurile de rezolvare a problemelor CMMP de tip (3.4) i (3.5), insistnd totodata asupra unor aspecte practice importante privind condiionarea problemelor considerate precum i stabilitatea numerica a algoritmilor de calcul propu.

3.1 Transformari ortogonale


3.1.1 Reflectori

n aceasta seciune vom defini cele doua tipuri de transformari ortogonale utilizate n calculul numeric i vom descrie proprietaile lor importante. Consideram spaiul Rm cu produsul scalar (x, y) = yT x i notam cu kxk = (xT x)1/2 norma euclidiana indusa. Amintim ca o matrice U Rmm se numete ortogonala daca UTU = Im.
este esenial faptul ca norma euclidiana considerata n (3.4) i (3.5) este invarianta n raport cu grupul transformarilor ortogonale. n legatura cu aceste no iuni, cititorul este invitat sa consulte capitolul 1.
2Aici

126 CAPITOLUL 3. PROBLEMA CELOR MAI MICI P ATRATE Definiia 3.1 Fie u Rm un vector normat, i.e. kuk = 1. O matrice U Rmm de forma U = Im - 2uuT (3.7) se numete reflector elementar de ordinul m sau transformare Householder 3. Se constata imediat ca orice reflector elementar U este o matrice simetrica ortogonala. ntr-adevar, produsul exterior uuT este evident o matrice simetrica, iar n virtutea condiiei de normare, kuk2 = uT u = 1, avem UTU = U2 = _Im - 2uuT __Im - 2uuT _ = Im - 4uuT + 4u(uTu)uT = Im. Aadar, un reflector elementar este o transformare involutiva, i.e. coincide cu propria sa inversa. n cele ce urmeaza vom fixa un ntreg k 1 : m-1 i vom considera ca vectorul u 6= 0 din (3.7), nu neaparat normat, are primele k-1 componente nule, i.e. ui = 0, i = 1 : k - 1. Pentru precizare, n acest caz vom scrie Uk = Im uuT , def =

1 2kuk2 (3.8) unde u = [ 0 . . . 0 uk . . . um ]T (3.9) i vom spune ca Uk este un reflector de ordin m i indice k. Vectorul u se numete vector Householder, iar este factorul de normare corespunzator. (Uneori, n loc de se utilizeaza scalarul = -1. Vom reveni asupra acestei chestiuni n seciunea urmatoare.) Observam ca datorita zerourilor din (3.9) matricea Uk are structura Uk = _ Ik-1 0 0 U1 _, (3.10) n care U1 este evident un reflector de ordin m- k + 1 i indice 1. Reflectorii Uk cu structura precizata mai sus au doua proprietai importante 4. AA. Fiind dai un reflector Uk i un vector x Rm, aplicarea transformarii Uk, i.e. calculul vectorului transformat y = Ukx, se face simplu, observnd ca Ukx = (Im uuT )x = x u(uT x) = x - u, (3.11) unde, evident = uT x . (3.12) Relaia (3.11) scrisa pe componente (unde amintim ca ui = 0, i = 1 : k - 1) arata ca premultiplicarea cu Uk nu modifica primele k-1 componente ale lui x. De aceea, transformarea y = Ukx se efectueaza avantajos pe loc n x, conform schemei x y = Ukx. Considernd ca reflectorul Uk este definit de vectorul u Rm precum i de scalarul , procedura de calcul este urmatoarea.
3Transformarile

de tip (3.7) au fost introduse n calculul numeric de A. Householder n 1958. De regula, mai departe vom omite calificativul elementar. 4La fel ca n capitolul 1, sigla AA indica expunerea unor aspecte algoritmice semnificative.

3.1. TRANSFORMARI ORTOGONALE 127 0 u H (uT x)u -_ -u x Ukx ____________* H H H H H H H H H H H HY Fig. 3.1: Efectul aplicarii unui reflector U asupra unui vector x, n R2 Algoritmul 3.1 (Se dau un reflector Uk i un vector x Rm. Se aplica transformarea x Ukx). 1. = (Pm i=k uixi) /. 2. xi xi - ui, pentru i = k : m Comentarii. n esena, la pasul 1 se calculeaza un produs scalar (de exemplu, utiliznd funcia DOT), iar la pasul 2 se face o actualizare de tip Saxpy a lui x (funciile DOT i Saxpy au fost definite n capitolul 1). De fiecare data se opereaza asupra unor vectori de dimensiune m - k + 1. Prin urmare, numarul de operaii necesar este aproximativ Nop = 4(m- k). _ Semnificaia geometrica a transformarii (3.11) rezulta din figura 3.1, unde pentru claritate am considerat m = 2 i kuk = 1, deci = 2uTx (vezi (3.12)), iar (uT x)u

este proiecia ortogonala a lui x pe direcia lui u. n general, transformarea Uk reprezinta simetria (reflexia) n raport cu hiperplanul H (oglinda) care trece prin origine i are vectorul normal u. n practica, algoritmul 3.1 apare extrem de frecvent. Aplicarea transformarii B = UkA, unde A Rmn este o matrice cu n coloane, iar Uk acioneaza la stnga, se face partiionnd A pe coloane. Avem A = [a1 a2 . . . an] UkA = [Uka1 Uka2 . . . Ukan], deci calculul se poate desfaura pe loc n tabloul A, utiliznd algoritmul 3.1 pentru actualizarea fiecarei coloane a matricei A. % Se aplica transformarea A UkA 1. Pentru j = 1 : n 1. aj Ukaj Conform celor spuse mai sus, premultiplicarea cu Uk nu modifica primele k - 1 linii ale matricei A. Mai precis, partiionnd A conform cu Uk din (3.10), avem A=_B C _ UkA = _ B U1C _. 128 CAPITOLUL 3. PROBLEMA CELOR MAI MICI P ATRATE Pe de alta parte, n forma compacta, similara cu (3.11), avem evident UkA = (Im uuT )A = A - uvT , unde v = AT u . Altfel spus, matricea transformata B = UkA este o modificare de rang 1 a lui A. Aplicarea transformarii C = AUk, unde acum A Rlm are m coloane, iar Uk acioneaza la dreapta, se face partiionnd A pe linii i observnd ca, n virtutea simetriei lui Uk, avem AUk = (UkAT )
T

. Prin urmare, asupra coloanelor lui AT , adica a liniilor lui A, are loc aceeai transformare ca mai sus. n particular, postmultiplicarea cu Uk nu modifica primele k - 1 coloane ale matricei A. AA. n calculul numeric generarea reflectorilor se face n scopul introducerii de zerouri ntr-un vector. Pe scurt, fiind dat un vector x Rm, putem determina un reflector Uk de forma (3.8) astfel nct ultimele m-k componente ale vectorului transformat sa fie nule, i.e. (Ukx)i = 0, pentru i = k + 1 : m. Formularea precisa a acestui fapt esenial trebuie reinuta. Propoziia 3.1 Fixam un ntreg k 1 : m- 1 i fie x Rm un vector astfel nct 2 def =
m

Xi=k x2 i 6= 0. (3.13) Vectorul Householder u Rm avnd componentele ui = (0, pentru i = 1 : k - 1 xk + , pentru i = k xi, pentru i = k + 1 : m (3.14) precum i scalarul def = 1 2 kuk2 = uk (3.15) definesc un reflector Uk de ordin m i indice k astfel nct (Ukx)i = (xi, pentru i = 1 : k - 1 -, pentru i = k 0, pentru i = k + 1 : m.

(3.16) Demonstraie. ntr-adevar, datorita alegerii (3.14), avem = 1 2


m

Xi=k u2 i= 1 2 (xk + )2 +
m

X i=k+1 x2 i! = 2 + xk = uk, deci (3.15) are loc. Mai departe, din (3.12) rezulta = Pm i=1 uixi = xk(xk + ) +Pm i=k+1 x2
i

= 2 + xk = 1. n virtutea acestui fapt, (3.16) rezulta imediat din (3.11) i (3.14). _ 3.1. TRANSFORMARI ORTOGONALE 129 Relaiile (3.13)(3.15) furnizeaza un algoritm aproape complet pentru calculul reflectorului Uk cu proprietatea ceruta. Constanta este determinata, mai puin semnul, de faptul ca Uk este o matrice ortogonala, deci kUkxk = kxk (vezi (3.13) (3.16)). Pentru a evita pierderea de cifre semnificative la calculul componentei uk = xk + , semnul lui se alege acelai cu cel al lui xk. (Menionam ca aceasta alegere este eseniala pentru stabilitatea numerica a algoritmului rezultat.) Consideraiile de mai sus pot fi rezumate astfel. Algoritmul 3.2 (Se dau un ntreg k 1 : m - 1 i un vector x Rm cu proprietatea (3.13). Se determina un reflector Uk astfel nct (Ukx)i = 0, pentru i = k + 1 : m.) 1. = sgn(xk) _Pm i=k x2 i _1/2 2. uk = + xk; ui = xi, pentru i = k + 1 : m 3. = uk % Vectorul transformat 4. xk = -; xi = 0, pentru i = k + 1 : m Comentarii. Subliniem nca o data ca reflectorul Uk nu se formeaza niciodata ca matrice, ci este complet definit numai prin intermediul vectorului u (ale carui prime k -1 componente sunt nule) precum i al scalarului . Ultimele componente ui, i = k + 1 : m, ale lui u se memoreaza natural pe poziiile elementelor anulate din x, dupa aplicarea transformarii (vezi pai 2 i 4). Componenta uk i scalarul se memoreaza separat. Numarul de operaii necesar este Nop 2(m- k) (plus o extragere de radical), vezi pasul 1. _ Implementarea 5 algoritmului 3.2 ine seama de urmatoarele considerente specifice. 1.. Pentru a evita eventualele deparin virgula mobila, posibile daca elementele xi, i = k : m, au valori absolute foarte mari sau foarte mici, calculul normei euclidiene de la pasul 1 se asociaza cu scalarea vectorului corespunzator, e.g. prin

raportare la M = maxi=k:m |xi|. (Pentru indicaii mai precise, vezi seciunea 3.1.2.) 2.. Daca n situaia de la punctul 1. rezulta M = 0 sau = 0, i.e. toate componentele xi, i = k : m, ale vectorului dat x sunt deja nule, atunci convenim sa consideram Uk = Im i sa semnalam aceasta situaie punnd = 0. (Matricea unitate Im este ortogonala i poate fi asimilata cu un reflector impropriu). Aceea convenie se adopta daca algoritmul 3.2 este apelat pentru k = m. 3.. Deoarece vectorul Householder u este esenial determinat numai ca direcie, la pasul 2 se poate face scalarea acestuia, e.g. lund 2. uk = 1 + xk ; ui = xi , i = k + 1 : m. Se vede uor ca n acest caz rezulta = uk, deci organizarea procedurala a calculelor se simplifica, n particular se memoreaza separat un singur numar 6. (Creterea numarului de operaii este fara importana.) Rezumnd cele de mai sus, obinem
ca funcia sgn : R R utilizata n algoritmii ce urmeaza este definita de sgn(x) = -1, daca x < 0 1, daca x 0 . Atragem atenia ca utilizarea unor funcii sgn predefinite n diverse limbaje de nivel nalt (pentru care de regula sgn(0) = 0) poate conduce la rezultate eronate. 6Alternativ, u poate fi scalat astfel nct uk = 1. Aceasta posibilitate va fi discutata mai departe.
5Convenim

130 CAPITOLUL 3. PROBLEMA CELOR MAI MICI P ATRATE % Forma implementabila a algoritmului 3.2. 1. = 0 2. Daca k < m 1. = _Pm i=k x2 i _1/2 2. Daca 6= 0 1. sgn(xk) 2. xi ui = xi/, pentru i = k : m 3. uk = 1 + xk % Componenta k a vectorului transformat 4. xk = - Pe scurt, la pasul 2.1 are loc calculul normei, careia mai departe i se atribuie semnul corespunzator, iar la pasul 2.2.2 are loc scalarea vectorului Householder u. Componentele ui, i = k + 1 : m, care constituie partea eseniala a vectorului u, se memoreaza pe poziiile corespunzatoare din x. n final, se calculeaza i se memoreaz a separat scalarul = uk, iar componenta de indice k a vectorului transformat este returnata pe poziia corespunzatoare xk, vezi (3.16). Observaia 3.1 n unele aplicaii apar reflectori modificai Uk, de forma (3.8), n care, spre deosebire de (3.9), vectorul Householder u are ultimele k -1 componente nule, i.e. u = [ u1 . . . um-k+1 0 . . . 0 ]T . (3.17) n consecina, matricea Uk are acum structura Uk = _ U1 0 0 Ik-1 _, (3.18) deci, n procesul de aplicare a transformarii x Ukx, premultiplicarea cu Uk nu modifica ultimele k - 1 componente ale lui x. De asemenea, este clar ca prin alegerea adecvata a vectorului Householder u, putem genera un reflector modificat Uk astfel nct primele m-k componente ale vectorului transformat sa fie nule, i.e. (Ukx)i = 0, i = 1 : m - k. Scrierea algoritmilor de transformare i generare a reflectorilor modificai, perfect similari cu algoritmii 3.1 i 3.2 stabilii anterior, este propusa ca exerciiu. _ Proceduri de calcul cu reflectori

n problemele de calcul numeric relativ simple, algoritmii 3.1 i 3.2 (ultimul, sub forma sa implementabila) pot fi utilizai ca atare. n practica profesionala, calculele se organizeaza procedural, exploatnd faptul ca algoritmii menionai sunt vectorizai n mod natural. Pentru nceput, observam ca, n acord cu (3.10), partea activa a unui reflector Uk de indice k este ntotdeauna un reflector de indice 1 care acioneaza asupra unui vector de dimensiune adecvata. De aceea, n continuare vom considera k = 1. AA. Fie x Rm un vector dat. Generarea unui reflector U1 astfelnct (U1x)i = 0, i = 2 : m, adica U1x = -e1, (3.19) se face utiliznd forma implementabila a algoritmului 3.2 n care punem k = 1. 3.1. TRANSFORMARI ORTOGONALE 131 . ... x1 x2 ... xm . .... U1 . . ... - u2 ... um . .... . .......... x1 ... xk-1 xk xk+1 ... xm . ........... Uk . . .......... x1 ... xk-1 - uk+1 ... um . ........... Fig. 3.2: Efectul aplicarii procedurii RFG asupra vectorului x Rm; n stnga, = RFG(x); n dreapta, = RFG(x(k : m)) RFG % Se da x Rm. Se genereaza un reflector U1 cu proprietatea (3.19) i se aplica transformarea. Partea eseniala ui, i = 2 : m, a vectorului Householder u se memoreaza pe poziiile corespunzatoare din x. La aplicarea ulterioara a

transformarii se considera u1 = . 1. = 0 2. Daca m > 1 atunci 1. = kxk % NRM2 2. Daca 6= 0 atunci 1. Daca x1 6= 0 atunci sgn(x1) 2. xi ui = xi/, pentru i = 1 : m % SCAL 3. u1 = 1 + x1 4. x1 - Comentarii. La pasul 2.1 nu am explicitat modul de calcul al normei euclidiene pentru a aminti necesitatea scalarii lui x. La pasul 2.2.2 are loc scalarea lui u, specific a proceduriiRFG. Avndn vedere considerente de eficiena, la pai menionai se recomanda utilizarea procedurilor NRM2 i SCAL din BLAS. Observam ca daca vectorul dat x este nul sau are o singura componenta, atunci algoritmul returneaza = 0, ceea ce, conform conveniei adoptate anterior, nseamna ca U1 = Im. Modul de apel al procedurii de generare (evideniind argumentele de intrare iere) este [u, , x] = RFG(x). Pentru a sublinia ca, dupa cum am spus, partea eseniala ui, i = 2 : m, a vectorului Householder este returnata n x, mai departe vom nota = RFG(x), n care x apare ca tablou de intrare/iere. n consecina, execuia instruciunilor = RFG(x), respectiv = RFG(x(k : m)), are efectul indicat n figura 3.2. _ AA. Fie acum U1 un reflector dat, generat de RFG, iar x Rm un vector arbitrar. Aplicarea transformarii x U1x (3.20) 132 CAPITOLUL 3. PROBLEMA CELOR MAI MICI P ATRATE Transformare Funcie Mod de apel Apel rapid Obs. Reflector U1 def = (u, ) x Rm U1x = -e1 x U1x [u, , x] = RFG(x) x = RF(u, , x) = RFG(x) RF(u, , x) u1 = Reflector modificat U1 def = (u, ) x Rm U1x = -em x U1x [u, , x] = mRFG(x) x = mRF(u, , x) = mRFG(x) mRF(u, , x) um = Tabelul 3.1: Proceduri de calcul cu reflectori se face avnd n vedere algoritmul 3.1 precum i convenia specifica de memorare a vectorului Householder u. Notnd = - i innd seama ca u1 = , vectorul transformat poate fi calculat efectund numai adunari i nmuliri. RF % Se dau un reflector U1 generat de RFG i un vector x Rm. Se aplica transformarea x U1x. 1. Daca 6= 0 atunci 1. t = u1

2. u1 = 3. = -(Pm i=1 uixi)/ % DOT 4. xi xi + ui, pentru i = 1 : m % SAXPY 5. u1 = t Comentarii. Deoarece = 0 semnaleaza ca U1 = Im, transformarea se aplica efectiv numai daca 6= 0. Prima componenta u1 a lui u nu este alterata, deoarece ea conine informaii despre vectorul transformat n procesul de generare a reflectorului. Modul de apel al procedurii este x = RF(u, , x). Deoarece transformarea se efectueaza ntotdeauna pe loc n x, vom scrie simplu RF(u, , x). _ Procedurile de calcul cu reflectori modificai se scriu similar. De exemplu, generarea unui reflector (modificat) U1 astfel nct (U1x)i = 0, i = 1 : m - 1, adica U1x = -em, se face nlocuind pur i simplu x1 cu xm n RFG. (Desigur, acum partea eseniala a vectorului Householder u este ui, i = 1 : m - 1, iar um = .) Scrierea detaliata a procedurilor de generare i aplicare a reflectorilor modificai, notate mai departe mRFG i respectiv mRF, este propusa cititorului ca exerciiu. Procedurile de calcul cu reflectori sunt prezentate sintetic n tabelul 3.1. Subliniem ca, n general, procedurile de generare i aplicare a reflectorilor apar n perechi, modificarea conveniei de memorare a vectorului Householder din RFG antrennd dupa sine o modificare corespunzatoare n RF. Ilustram utilizarea procedurilor prin doua exemple simple, dar extrem de importante pentru ntreaga expunere ulterioara. 3.1. TRANSFORMARI ORTOGONALE 133 Exemplul 3.3 Se da o matrice A Rmn. Vom determina un reflector U1 Rmm astfel nct elementele subdiagonale din prima coloana a matricei B = U1A sa fie nule; apoi, vom calcula matricea transformata A B = U1A. Deoarece transformarea se aplica la stnga, partiionam A pe coloane. Notnd aj = A(:, j), j = 1 : n, trebuie sa avem U1a1 = -e1, deci U1 se determina aplicnd procedura RFG primei coloane a1 a matricei A. Totodata are loc i transformarea acestei coloane, i.e. scalarul - este returnat pe prima poziie a11. n continuare transformarea celorlalte coloane aj , j = 2 : n, se face aplicnd repetat procedura RF. Prin urmare, rezultatul dorit se obine pe loc n A utiliznd algoritmul QR1 1. = RFG(A(:, 1)) 2. Pentru j = 2 : n 1. RF(A(:, 1), , A(:, j)). Desigur, reflectorul U1 obinut la pasul 1 poate fi aplicat mai departe unei alte matrice, atta timp ct partea eseniala A(2 : m, 1) a vectorului Householder u precum i scalarul sunt disponibili. De exemplu, daca C Rlm, atunci transformarea la dreapta C CU1 se efectueaza partiionnd C pe linii, i.e. 1. Pentru i = 1 : l 1. RF(A(:, 1), , C(i, :)). _ Exemplul 3.4 Se da o matrice A Rmn. Vom determina un reflector Z1 Rnn astfel nct elementele nediagonale din prima linie a matricei B = AZ1 sa fie nule; apoi vom calcula matricea transformata A B = AZ1. Deoarece transformarea se aplica la dreapta, partiionam A pe linii. Raionnd la fel ca mai sus, algoritmul de calcul este LQ1 1. = RFG(A(1, :)) 1. Pentru i = 2 : m 1. RF(A(1, :), , A(i, :)). _ Pentru a evidenia avantajele organizarii procedurale, propunem cititorului sa scrie detaliat algoritmii de calcul stabilii mai sus, nlocuind apelurile la procedurile RFG i RF cu secvenele de instruciuni scalare corespunzatoare. Avnd n vedere expunerea ulterioara, menionam ca aceti algoritmi efectueaza prima etapa de triangularizare a matricei A prin transformari ortogonale la stnga i respectiv la dreapta (vezi seciunile 3.3 i 3.6).

3.1.2 Rotaii

Dupa cum se tie, n cazul m = 2 o rotaie (plana) de unghi se reprezinta prin matricea P = _ cos -sin sin cos _. (3.21) n cazul general m 2, vom adopta urmatoarea definiie. 134 CAPITOLUL 3. PROBLEMA CELOR MAI MICI P ATRATE Definiia 3.2 Fixam doi ntregi i 6= k 1 : m. O matrice Pki Rmm de forma Pki = . .... Ik-1 cs Ii-k-1 -s c Im-i . ..... , unde c2 + s2 = 1 (3.22) se numete rotaie de ordinul mn planul (k, i) sau transformare Givens 7. Se constata imediat ca orice rotaie Pki este o matrice ortogonala. Rotaiile Pki cu structura precizata mai sus au doua proprietai importante. AA. Fiind date o rotaie Pki i un vector x Rm, aplicarea transformarii Pki, i.e. calculul vectorului transformat y = Pkix, se face extrem de simplu. Din (3.22) se vede ca Pki modifica numai elementele lui x cu aceiai indici, deci calculele se desfaoara avantajos pe loc n x, utiliznd urmatoarea procedura. Algoritmul 3.3 (Se dau o rotaie Pki i un vector x Rm. Se aplica transformarea x Pkix). 1. t = xk 2. xk = ct + sxi 3. xi = cxi - st Numarul de operaii necesar este Nop = 6. Aplicarea transformarii B = PkiA, unde A Rmn este o matrice cu n coloane, se face utiliznd algoritmul 3.3 pentru actualizarea fiecarei coloane. % Se aplica transformarea A PkiA 1. Pentru j = 1 : n 1. aj Pkiaj Aplicarea transformarii C = APT ki se face similar, partiionnd A pe linii. n legatura cu algoritmul 3.3, este important sa reinem ca, spre deosebire de reflectori, rotaiile nu sunt matrice simetrice. Mai precis, transformarea x PT kix difera de transformarea x Pkix, considerata mai sus, prin semnul scalarului s. AA. La fel ca n cazul reflectorilor, generarea rotaiilor vizeaza introducerea de zerouri ntr-un vector. Mai precis, fiind dat un vector x Rm, putem determina o rotaie Pki astfel nct componenta i a vectorului transformat sa fie nula, i.e. (Pkix)i = 0. Propoziia 3.2 Fixam doi ntregi i 6= k 1 : m i fie x Rm un vector astfel nct r2 def = x2 k + x2 i 6= 0. (3.23)
cunoscute din secolul trecut i utilizate de Jacobi, Rotaiile au fost introduse n calculul numeric de W. Givens n 1954. Structura (3.22) corespunde cazului i > k, iar n (3.21) avem P = P12 cu c = cos , s = -sin . Subliniem ca, n accepiunea noastra, o rotaie este definita de doua numere reale c, s, satisfacnd condiia c2 + s2 = 1. Evident, n acest fel se evita utilizarea n calcule a funciilor trigonometrice.
7Dei

3.1. TRANSFORMARI ORTOGONALE 135 Numerele reale

c= xk r ,s= xi r (3.24) definesc o rotaie Pki de ordin m n planul (k, i) astfel nct (Pkix)l = (xl, pentru l 6= k, i r, pentru l = k 0, pentru l = i. (3.25) Demonstraia este imediata observnd ca avem _cs -s c __ xk xi _ = _ r 0 _, (3.26) precum i c2 + s2 = 1. _ Preciznd (deocamdata arbitrar) semnul lui r, relaiile (3.23) i (3.24) conduc la urmatorul algoritm de calcul al rotaiei Pki cu proprietatea ceruta. Algoritmul 3.4 (Se dau i 6= k 1 : m i un vector x Rm. Se calculeaza o rotaie Pki astfel nct (Pkix)i = 0). 1. r = px2 k + x2
i

2. c = xk/r, s = xi/r % vectorul transformat 3. xk = r; xi = 0 Numarul de operaii necesar este Nop = 6. Semnificaia geometrica a rotaiei Pki calculate de algoritmul 3.4 apare n figura 3.3, unde m = 2, k = 1, i = 2. Implementarea algoritmului 3.4 ine seama de urmatoarele considerente. 1.. La pasul 1 se recomanda scalarea componentelor xk i xi, de exemplu prin mparire la N = |xk| + |xi|. 2.. Daca N = 0 sau r = 0, i.e. ambele componente xk i xi sunt deja nule, atunci se ia Pki = Im, punnd c = 1, s = 0. 3.. Semnul lui r se alege astfel nct r i cel mai mare (n valoare absoluta) dintre cele doua numere xk i xi sa aiba acelai semn. Aceasta convenie, adoptata n BLAS, nu este importanta n sine, dar are avantajul de a permite reconstrucia numeric stabila a parametrilor c, s, dintr-un singur numar z. (Desigur, n acest fel devine posibila memorarea rotaiei Pki pe poziia elementului xi anulat prin aplicarea transformarii la pasul 3). Precizarile necesare vor fi facute mai departe. Observaia 3.2 Reinem ca, dei rotaiile sunt transformari considerabil mai simple dect reflectorii, ele sunt n acelai timp i mai puin eficiente dect acetia, ntruct o rotaie permite anularea unei singure componente a vectorului transformat. (Tocmai de aceea rotaiile se utilizeaza mai ales n probleme cu date structurate, asupra carora ele au un efect de rezoluie fina a zerourilor.) n caz de nevoie, un efect similar cu al reflectorului Uk determinat de algoritmul 3.2 poate fi obinut utiliznd o secvena de rotaii, e.g. 136 CAPITOLUL 3. PROBLEMA CELOR MAI MICI P ATRATE 1

62 _ _ _ _

_ _ _ _ _>x P12x r x2 x1 Fig. 3.3: Efectul aplicarii unei rotaii P12 asupra unui vector x R2 Pk = Pkm . . . Pk,k+2Pk,k+1, (3.27) n care rotaiile Pki se determina succesiv (aplicnd algoritmul 3.4) pentru a anula componentele corespunzatoare xi, i = k + 1 : m. (Scrierea algoritmului de calcul este propusa ca exerciiu.) Alternativ, n acelai scop poate fi utilizata secvena Pk = Pk,k+1Pk+1,k+2 . . . Pm-1,m, (3.28) n care rotaiile Pki anuleaza aceleai componente n ordine inversa, adica xi, i = m : -1 : k + 1. Menionam ca n practica se utilizeaza frecvent secvene de rotaii disjuncte care au proprietai numerice mai bune, vezi problemele 3.14 i 3.22 8. _ Proceduri de calcul cu rotaii n continuare dam cteva indicaii privind organizarea procedurala a calculelor cu rotaii 9. Deoarece partea activa a unei rotaii Pki de forma (3.22) este evident o rotaie plana ce acioneaza asupra unui vector x R2, n continuare vom considera m = 2 i vom nota P12 = P. AA. Fie x R2 un vector dat. Generarea unei rotaii P astfel nct (Px)2 = 0, adica _cs -s c __ x1 x2 _ = _ r 0 _, (3.29) se face innd seama de indicaiile de implementare ce nsoesc algoritmul 3.4. ROTG % Se da x R2. Se genereaza o rotaie P cu proprietatea (3.29) i se aplica transformarea. Totodata, pe poziia elementului anulat x2 se returneaza scalarul z, pe baza caruia este posibila reconstrucia numeric stabila a parametrilor c, s. 1. r = kxk 2. Daca r = 0 atunci
rotaii Pki, Plj se numesc disjuncte daca toi indicii sunt diferii. ca, ntruct opereaza asupra unor vectori cu doua componente, procedurile de calcul cu rotaii sunt de tip scalar.
8Doua 9Subliniem

3.1. TRANSFORMARI ORTOGONALE 137 1. c = 1, s = 0 altfel 2. Daca |x2| |x1| atunci 1. r sgn(x2)r altfel 2. r sgn(x1)r 3. c = x1/r, s = x2/r 4. x1 = r % calculul lui z 5. Daca c = 0 atunci 1. z = 1 altfel daca |x2| |x1| atunci 2. z = 1/c altfel 3. z = s 6. x2 = z

Modul de apel al procedurii de generare este [c, s, x1, x2] = ROTG(x1, x2). AA. Fie acum P o rotaie data, generata de ROTG, iar x R2 un vector arbitrar. Aplicarea transformarii x Px (3.30) se face direct numai daca parametrii c, s sunt disponibili ca atare; n caz contrar, n prealabil are loc reconstrucia lor pe baza scalarului z, utiliznd secvena urmatoare. 138 CAPITOLUL 3. PROBLEMA CELOR MAI MICI P ATRATE Transformare Funcie Mod de apel Apel rapid Obs. Rotaie Px = re1 [c, s, a, b] = ROTG(a, b) [c, s] = ROTG(a, b) a r b z P def = (c, s) x=_a b_ x Px x PT x [a, b] = ROT(c, s, a, b) [a, b] = ROT(c,-s, a, b) ROT(c, s, a, b) ROT(c,-s, a, b) Tabelul 3.2: Proceduri de calcul cu rotaii. (N.B. Semnificaia lui z este precizata n text) % Reconstrucia perechii (c, s). 1. Daca z = 1 atunci 1. c = 0, s = 1 altfel daca |z| > 1 atunci 2. c = 1/z, s = 1 - c2 altfel 3. s = z, c = 1 - s2 Procedura de transformare propriu-zisa coincide n esena cu algoritmul 3.3. ROT % Se aplica transformarea x Px. 1. t = x1 2. x1 ct + sx2 3. x2 cx2 - st Modul de apel al procedurii este [x1, x2] = ROT(c, s, x1, x2). Procedurile de calcul cu rotaii sunt prezentate sintetic n tabelul 3.2. (i n cazul rotaiilor, ca i al reflectorilor, mai departe vom utiliza notaiile procedurale prescurtate indicate n penultima coloana a tabelului.)

3.2 Transformari unitare

n aceasta seciune vom prezenta principalele transformari unitare utilizate n calculele cu matrice complexe. Avnd n vedere ca proprietaile structurale ale acestor transformari sunt aceleai cu proprietaile similare ale transformarilor ortogonale descrise n seciunea anterioara, expunerea va fi orientata n principal asupra aspectelor procedurale specifice.

3.2.1 Reflectori complec


m

Consideram spaiul complex Cm cu produsul scalar (x, y) = yHx i norma euclidiana kxk = (xHx)1/2 = ( Xi=1 |xi|2)1/2. 3.2. TRANSFORMARI UNITARE 139 &% '$ 6 0 _ _9 =1

= 2 kuk2

Re Im rrr Fig. 3.4: Cercul _ n planul complex Amintim ca o matrice Q Cmm se numete unitara daca QHQ = Im. Fie u Cm un vector Householder, u 6= 0. Consideram matrice complexe de forma U1 not = QH 1 = Im uuH , (3.31) respectiv Q1 = Im - uuH, (3.32) unde i sunt doi parametri legai prin relaia = -1. Avem QH 1 Q1 = (Im - uuH)(Im - uuH) = Im - ( + )uuH + ||2u(uHu)uH, deci matricea Q1 este unitara daca i numai daca 2Re = ||2kuk2, (3.33) i.e. scalarul aparine cercului _ din planul complex care trece prin origine i are raza egala cu 1/kuk2 (vezi figura 3.4). Pe de alta parte, matricea Q1 este hermitica daca i numai daca R. Asociind cele doua proprietai, pentru = 0 obinem Q1 = Im, iar pentru = 1 = 2 kuk2 , (3.34) din (3.31) sau (3.32) obinem reflectorii hermitici care constituie generalizarea direct a a reflectorilor reali din (3.8). Pentru toate celelalte valori _ ( 6= 0 i 6= 2/kuk2), matricele de forma (3.32) sunt unitare i de aceea se numesc (abuziv dar comod) reflectori complec. Subliniem ca, n aceasta accepiune mai larga, reflectorii compleci nu sunt hermitici, deci necesita o manipulare relativ mai atenta dect omologii lor reali (acum U1 not = QH 1 6= Q1 !). AA. Fie x Cm un vector dat. Vom determina un reflector Q1 astfel nct (QH 1 x)i = 0, i = 2 : m, i.e. QH 1 x = -e1, (3.35) unde C este un scalar nca nedeterminat. Deoarece matricea Q1 este unitara trebuie sa avem kQH 1 xk = kxk, deci modulul lui este fixat, mai precis || = kxk. Din considerente de stabilitate numerica, vom alege = x1 |x1|kxk (3.36) 140 CAPITOLUL 3. PROBLEMA CELOR MAI MICI P ATRATE sau = sgn(Rex1)kxk. (3.37) (Reinem ca n primul caz C, iar n al doilea R.) n continuare scriem ca de obicei

QH 1 x = (Im uuH )x = x - u, (3.38) unde = uHx . (3.39) Prin urmare, relaia (3.35) are loc daca i numai daca u = (x + e1)/, sau pe componente u1 = x1 + ; ui = xi , i = 2 : m. (3.40) De asemenea, trebuie sa avem = uHx = (xH + eT 1 )x ||2 = kxk2 + x1 ||2 , unde, conform celor spuse mai sus, kxk2 = ||2, deci = x1 + . (3.41) Pentru a determina complet reflectorul U1 cu proprietatea (3.35) ramne sa precizam valoarea parametrului de scalare 6= 0 din (3.40) i (3.41). a) Daca luam = 1 i alegem din (3.36) (sau din (3.37)), atunci obinem analogul complex al algoritmului 3.1. b) Pe de alta parte, daca dorim simplificarea relaiei (3.41), atunci sunt posibile doua alegeri, i.e. = i = x1 + , care conduc la (u1 = 1 + x1 ; ui = xi ,i=2:m = u1 (3.42) i respectiv . . u1 = 1; ui = xi x1 + ,i=2:m =1+

x1 , ( = 1 ). (3.43) n practica numerica actuala se ntlnesc doua versiuni de implementare a relat iilor de calcul stabilite mai sus. n LINPACK [XIII] se asociaza relaiile (3.36) i (3.42). n consecina, parametrul = u1 rezulta real, deci reflectorul obinut este hermitic, QH 1 = Q1. n schimb, prima componenta a vectorului transformat x1 - 3.2. TRANSFORMARI UNITARE 141 este complexa. Procedura de generare a reflectorului hermitic Q1 difera de procedura reala RFG numai prin modul de calcul al lui , vezi (3.36). n LAPACK [XV] se asociaza relaiile (3.37) i (3.43). Instrumentul fundamental de lucru este acum reflectorul complex Q1, n care parametrul rezulta complex; n schimb faptul ca u1 = 1 i R poate fi exploatat avantajos n multe situaii concrete. Procedura de generare a reflectorului Q1 este urmatoarea. CRFG % Se da x Cm. Se genereaza un reflector complex Q1 cu proprietatea (3.35) i se aplica transformarea. Componentele ui, i = 2 : m, ale vectorului Householder u se memoreaza pe poziiile corespunzatoare din x. La aplicarea ulterioara a transformarii se considera u1 = 1. 1. = 0 2. Daca m > 1 atunci 1. = kxk 2. Daca 6= 0 atunci 1. Daca Re(x1) 6= 0 atunci sgn(Rex1) 2. xi ui = xi/(x1 + ), pentru i = 1 : m 3. (x1 + )/ 4. x1 - Comentarii. Calculul normei euclidiene la pasul 2.1 se poate face utiliznd funcia complexa CNRM2 din BLAS 1. _ AA. Fie acum x Cm un vector arbitrar, iar Q1 un reflector dat. Aplicarea transformarilor x QH 1 x, x Q1x (3.44) se face innd seama de relaiile (3.38), (3.39) precum i de tipul reflectorului considerat. Daca Q1 este un reflector hermitic, atunci cele doua transformari (3.44) coincid, iar procedura corespunzatoare difera de procedura reala RF numai prin utilizarea produsului scalar complex la pasul 1.1, vezi (3.39). Daca Q1 este un reflector complex, generat de procedura CRFG, atunci se ine seama ca prima componenta u1 = 1 a vectorului Householder nu este memorata ca atare. Scrierea procedurii de transformare corespunzatoare primei relaii (3.44), de exemplu notata CRF, este propusa ca exerciiu. Procedurile de calcul cu reflectori compleci sunt prezentate n tabelul 3.3 10. La fel ca n cazul real, tipic procedura CRFG se utilizeaza pentru a introduce zerouri ntr-o anumita coloana a unei matrice A, iar procedura CRF se utilizeaza pentru a transforma n mod corespunzator celelalte coloane. Presupunnd ca tabloul A e dimensionat adecvat, n general exista patru tipuri de transformari posibile, doua la stnga (QA i QHA) i doua la dreapta (AQ AQH). n primul caz A se partiioneaza pe coloane i fiecarei coloane i se aplica transformarea corespunzatoare. n al doilea caz A se partiioneaza pe linii. 11
de calcul cu reflectori compleci modificai, e.g. CmRFG etc. se scriu similar cu cazul real. Detaliile sunt lasate n sarcina cititorului interesat. 11Pentru a acoperi toate aceste situaii cu o singura procedura CLARF, n LAPACK (ca i n
10Procedurile

142 CAPITOLUL 3. PROBLEMA CELOR MAI MICI P ATRATE Transformare Funcie Mod de apel Apel rapid Obs. Reflector complex QH 1 x = -e1 [u, , x] = CRFG(x) = CRFG(x) C R Q1 def = (, u) x Cm x QH 1x x Q1x x = CRF(u, , x) x = CRF(u, , x) CRF(u, , x) CRF(u, , x) Tabelul 3.3: Proceduri de calcul cu reflectori complec. Procedurile de calcul cu reflectori hermitici sunt similare cu RFG i RF

3.2.2 Rotaii complexe

Consideram spaiul complex C2 cu norma euclidiana kxk = (|x1|2 + |x2|2)1/2. O rotaie complexa este o matrice de forma P=_cs -s c _, (3.45) n care parametrii c, s satisfac relaia |c|2 + |s|2 = 1. (3.46) Se verifica uor ca matricea P este unitara, i.e. PHP = I2. AA. Fie x C2 un vector dat. Vom determina o rotaie complexa P astfel nct _cs -s c __ x1 x2 _ = _ r 0 _, (3.47) unde r este un scalar astfel nct |r| = kxk. O analiza simpla arata ca aici, ca i n cazul reflectorilor complec, sunt posibile doua opiuni. Putem alege r complex, e.g. r= x1 |x1|kxk, (3.48) i n acest caz obinem c = |x1| kxk ,s= x1 |x1| x2 kxk , (3.49) deci parametrul c rezulta real pozitiv. Procedura de calcul este urmatoarea. CROTG % Se da x R2. Se genereaza o rotaie complexa P cu proprietatea (3.47) i se efectueaza transformarea. 1. Daca |x1| = 0 atunci 1. c = 0, s = 1

BLAS3) se utilizeaza opiunile TRANS i SIDE, vezi seciunea 1.11. Subliniem ca urmarirea acestor detalii, aparent pur tehnice, este eseniala pentru asigurarea corectitudinii i optimizarea calculatorie a algoritmilor de calcul obinui.

3.3. TRIANGULARIZAREA ORTOGONAL A 143

Transformare Funcie Mod de apel Apel rapid Obs. Rotaie complexa Px = re1 [c, s, a, b] = CROTG(a, b) [c, s] = CROTG(a, b) c R r C P def = (c, s) x=_a b_ x Px x PHx [a, b] = CROT(c, s, a, b) [a, b] = CROT(c,-s, a, b) CROT(c, s, a, b) CROT(c,-s, a, b) Tabelul 3.4: Proceduri de calcul cu rotaii complexe 2. x1 r = x2, x2 = 0 altfel 3. = x1 / |x1| 4. = kxk 5. c = |x1| / , s = x2 / 6. x1 r = , x2 = 0 Alternativ, putem alege r real, de exemplu r = sgn(Rex1)kxk (3.50) i n acest caz ambii parametri c= x1 r ,s= x2 r (3.51) rezulta complec. (Menionam ca n practica se ntlnesc ambele opiuni (3.48) (3.50), implementate sub diverse forme relativ sofisticate.) AA. Fie acum P o rotaie complexa data, generata de CROTG, iar x C2 un vector arbitrar. Procedura de transformare x Px, (3.52) de exemplu notata CROT, se scrie cu uurina n maniera algoritmului 3.3, dar, desigur, innd seama de forma actuala (3.45) a lui P. Procedurile de calcul cu rotaii complexe sunt prezentate sintetic n tabelul 3.4.

3.3 Triangularizarea ortogonala

n aceasta seciune vom descrie principalele proceduri de triangularizare a unei matrice A Cmn prin transformari unitare de echivalena la stnga. n cazul real A Rmn, n acelai scop se utilizeaza transformari ortogonale. Pentru concizia expunerii vom considera ambele cazuri n paralel. Teorema 3.1 Oricare ar fi A Cmn, exista o matrice unitara U
not

= QH Cmm astfel nct matricea UA = R, respectiv QHA = R (3.53) 144 CAPITOLUL 3. PROBLEMA CELOR MAI MICI P ATRATE este superior triunghiulara. n cazul real A Rmn, matricea de transformare U = QT poate fi aleasa reala i ortogonala, deci R rezulta reala. Pe scurt, orice matrice este unitar echivalenta (la stnga) cu o matrice superior triunghiulara. A doua relaie arata ca A poate fi scrisa sub forma unui produs A = QR, unde Q este unitara, iar R este superior triunghiulara. n calculul numeric, aceasta relaie se numete factorizare QR, de aceea procedurile de calcul stabilite pe baza relaiei fundamentale (3.53) vor fi notate cu sigla QR. (Asupra factorizarii QR vom reveni pe larg n seciunea urmatoare.)

Demonstraia va fi constructiva, conducnd la o procedura de triangularizare ortogonala a matricei A utiliznd reflectori sau rotaii. Pentru precizare, n cele ce urmeaza alegem prima posibilitate. n cazul real, ne referim la faptele stabilite n seciunea 3.1.1 i pentru claritate consideram succesiv doua situaii cu semnificaii structurale distincte. n cazul m > n matricea de transformare va fi un produs de reflectori, i.e. U = QT = Un . . .U2U1, unde reflectorii Uk ce se determina prin metodele cunoscute pentru a introduce zerourile necesare n coloanele corespunzatoare ak, k = 1 : n, ale matricei A. n consecina, procedura de triangularizare are n etape. Notam A1 = A, unde A = [a1 a2 . . . an]. Etapa 1. Daca elementele ai1, i = 2 : m, nu sunt toate nule, atunci conform propoziiei 3.1, exista un reflector U1 Rmm de ordinul m i indice 1, astfel nct (U1a1)i = 0, i = 2 : m. n virtutea acestui fapt, matricea transformata A2 = U1A1 = [U1a1 U1a2 . . . U1an] = . ..... r11 r12 . . . r1n 0 a(2) 22 . . . a(2)
2n

0 a(2) 32 . . . a(2)
3n

... 0 a(2) m2 . . . a(2)


mn

. ...... are toate elementele subdiagonale ale primei coloane egale cu zero, i.e. este superior triunghiulara n prima coloana. Daca ai1 = 0 pentru i = 2 : m, atunci luam pur i simplu U1 = Im i trecem la etapa urmatoare. (Matricea unitate Im este ortogonala !) Etapa k, k = 2 : n. Presupunem ca dupa desfaurarea primelor k - 1 etape ale procedurii am obinut matricea Ak = Uk-1 . . .U2U1A 3.3. TRIANGULARIZAREA ORTOGONAL A 145 superior triunghiulara n primele k - 1 coloane, i.e. Ak = [a(k) 1 . . . a(k) k . . . a(k) n] = . ............. r11 r12 . . . r1,k-1 r1k . . . r1n r22 . . . r2,k-1 r2k . . . r2n ... ... ... ... rk-1,k-1 rk-1,k . . . rk-1,n a(k) kk . . . a(k)
kn

0 a(k) k+1,k . . . a(k)


k+1,n

... ... a(k) mk . . . a(k)


mn

. .............. . Acum, daca elementele a(k) ik , i = k + 1 : m, nu sunt toate nule, atunci exista un reflector Uk Rmm de ordinul m i indice k, astfel nct (Uka(k) k )i = 0, i = k + 1 : m. (Altfel, luam Uk = Im i trecem la etapa urmatoare.) Tinnd cont de faptul ca orice reflector de indice k nu modifica un vector ale carui ultime m-k+1 elemente sunt nule (vezi (3.11), unde = 0), rezulta ca matricea Ak+1 = UkAk = [Uka(k) 1 . . . Uka(k) k . . . Uka(k) n] are primele k - 1 coloane nemodificate, iar n coloana k elementele subdiagonale sunt nule; prin urmare Ak+1 este superior triunghiulara n primele k coloane. De asemenea, deoarece reflectorul este de indice k, primele k -1 linii ale lui Ak ramn nemodificate. Aadar, procedura de anulare a elementelor subdiagonale poate fi iniializata, ca n etapa 1, , o data pornita, poate fi continuata, ca n etapa k. Astfel, cnd m > n, dupa n etape, obinem matricea R def = An+1 = UnUn-1 . . .U2U1A = _ R 0 _, (3.54) unde R Rnn este superior triunghiulara de ordin n. n cazul m n, procednd similar, dupa m-1 etape obinem matricea superior trapezoidala R def = Am = Um-1 . . .U2U1A = [R S ], (3.55) unde R Rmm este superior triunghiulara de ordin m, iar S Rm(n-m) este un bloc dreptunghiular fara particularitai de structura. Demonstraia teoremei n cazul real este ncheiata. n cazul complex raionamentul este identic, iar detaliile pot fi completate cu uurina de cititorul interesat prin referire la seciunea 3.2.1. _ Observaia 3.3 Att enunul ct i demonstraia teoremei 3.1 au un caracter procedural, n sensul ca matricea R rezultata n urma procesului de triangularizare 146 CAPITOLUL 3. PROBLEMA CELOR MAI MICI P ATRATE nu trebuie sa fie neaparat superior triunghiulara. De exemplu, n cazul m = n, matricea A poate fi adusa la forma inferior triunghiulara utiliznd reflectorii modificai din observaia 3.1. Aceasta posibilitate va fi discutata n finalul seciunii urmatoare. De asemenea, transformarile unitare de echivalena pot fi aplicate la dreapta matricei A, dupa cum vom arata n seciunea 3.6. n toate cazurile, tehnica de lucru este aceea, iar alegerea procedurii de triangularizare adecvate este dictata de structura problemei considerate. _

A. Proceduri de triangularizare cu reflectori

Procedura de triangularizare ortogonala degajata pe parcursul demonstraiei de mai sus este similara cu procedura de eliminare gaussiana, cunoscuta din capitolul anterior, , la fel ca aceasta, se poate desfaura pe loc n tabloul A, astfel nct n final matricea R sa fie memorata n triunghiul superior al lui A. n cazul real, relaiile (3.54) i (3.55) conduc la urmatoarea schema de calcul. QR RF % Triangularizarea matricei A utiliznd reflectori 1. Pentru k = 1 : min (m - 1, n) 1. Se determina Uk a.. (UkA)ik = 0, i = k + 1 : m 2. A UkA.

Daca matricea A este monica, i.e. are coloane independente, atunci la fiecare etapa elementele aik, i = k : m, ale matricei curente A nu sunt toate nule. n consecina, pentru a determina reflectorul Uk (adica vectorul Householder uk scalarul k), la pasul 1.1 se utilizeaza algoritmul 3.2, aplicat vectorului x = A(:, k). (Componentele nenule ale vectorilor Householder uk vor fi notate uik, i = k : m.) Pentru calculul transformarii de la pasul 1.2 se utilizeaza algoritmul 3.1 aplicat vectorilor x = A(:, j), j = k + 1 : n. Combinnd ideile de mai sus, rezulta imediat % Versiunea primara a algoritmului de triangularizare cu reflectori 1. Pentru k = 1 : min (m - 1, n) % se determina transformarea Uk 1. = sgn(akk) _Pm i=k a2 ik_1/2 2. ukk = akk + ; uik = aik, pentru i = k + 1 : m 3. k = ukk % se aplica Uk 4. Pentru j = k + 1 : n 1. = (Pm i=k uikaij) /k 2. aij aij - uik, pentru i = k : m % coloana k 5. akk = -; aik = 0, pentru i = k + 1 : m Comentarii. Algoritmul necesita aproximativ NQR = 2(mn2 - n3/3) operaii, care n principal se consuma la pasul 1.4 pentru actualizarea coloanelor A(k : m, j), j = k + 1 : n, ale matricei ramase. n particular, daca m = n, atunci NQR = (4/3)n3 este dublu faa de algoritmul de eliminare gaussiana. _ 3.3. TRIANGULARIZAREA ORTOGONAL A 147 n general, fie acum A Cmn o matrice oarecare. Pentru uniformizarea scrierii, n cazul m n completam rul de transformari din (3.55) cu Um def = Im. De asemenea, notam s = min(m, n), precum i Uk = QH k , unde Qk sunt reflectorii complec i (n particular hermitici) utilizai pentru anularea elementelor subdiagonale la etapele k = 1 : s. Cu aceste notaii, relaiile (3.54) i (3.55) pot fi scrise mpreuna sub forma (3.53), unde U = QH = QH s . . .QH 2 QH 1 , (3.56) iar schema de triangularizare devine QR % Schema generala de triangularizare QR 1. Pentru k = 1 : s 1. Se genereaza QH k a.. (QH k A)ik = 0, i = k + 1 : m 2. A QH k A. n cazul real sau n cazul utilizarii reflectorilor hermitici de forma (3.31) avem QH k = Qk, iar implementarea schemei QR are la baza procedurile RFG i RF din tabelul 3.1. Componentele uik, i = k + 1 : m, ale vectorilor Householder uk se memoreaza natural pe poziiile elementelor anulate, iar scalarii k se memoreaza ntr-un vector suplimentar, ca n urmatoarea diagrama corespunzatoare situaiei de dupa pasul k . ........... r11 r12 . . . r1k r1,k+1 . . . r1n u21 r22 . . . r2k r2,k+1 . . . r2n

... ... ... ... ... uk1 uk2 . . . rkk rk,k+1 . . . rkn uk+1,1 uk+1,2 . . . uk+1,k a(k+1) k+1,k+1 . . . a(k+1)
k+1,n

... ... ... ... ... um1 um2 . . . umk a(k+1) m,k+1 . . . a(k+1)
mn

. ............ _ 1 2 . . . k _ Algoritmul rezultat se redacteaza astfel. Algoritmul 3.5 (QR triangularizare ortogonala cu reflectori hermitici) (Se da A Cmn. Se efectueaza triangularizarea ortogonala a matricei A, i.e. QHA = R, unde QH = Qs . . .Q2Q1, iar Qk sunt reflectori hermitici. Partea eseniala uk(k + 1 : m) a vectorilor Householder uk se memoreaza pe poziiile corespunzatoare A(k + 1 : m, k). La aplicarea ulterioara a transformarilor se ine seama ca ukk = k, k = 1 : s. Elementele nenule ale matricei superior triunghiulare R suprascriu elementele corespunzatoare din triunghiul superior al matricei A.) 1. Pentru k = 1 : s 1. k = 0 2. Daca k < m atunci 1. = kA(k : m, k)k 148 CAPITOLUL 3. PROBLEMA CELOR MAI MICI P ATRATE 2. Daca 6= 0 atunci 1. Daca akk 6= 0 atunci akk |akk| 2. aik uik = aik/, pentru i = k : m 3. k ukk = 1 + akk 4. Pentru j = k + 1 : n 1. = -(Pm i=k uikaij ) /k 2. aij aij + uik, pentru i = k : m % elementul diagonal 5. akk = - Comentarii. n cazul real, algoritmul 3.5 necesita NQR operaii 12 i este numeric stabil, dupa cum vom arata n seciunea 3.8. Modul de apel este [A, ] = QR(A), unde este vectorul real cu componentele k, k = 1 : s, iar A apare ca tablou de intrare-iere. Subliniem ca algoritmul 3.5 nu calculeaza explicit reflectorii Qk din (3.56), i cu att mai puin matricea de transformare QH, ci doar memoreaza (extrem de economic) toate elementele necesare pentru definirea acestora. _ Exemplul 3.5 n cazul matricelor cu structura speciala, algoritmul general prezentat mai sus se adapteaza n mod corespunzator, avnd n vedere conservarea structurii i exploatarea acesteia n scopul reducerii numarului de operaii. n acest sens fie matricea A+ = _ R C _, n care blocul lider R Cnn este deja superior triunghiular, iar C C(m-n)n este un bloc dat cu l = m - n 1 linii. Schema de

triangularizare ortogonala este QHA+ = _ R+ 0 _,QH = QH n . . .QH 2 QH 1, n care Qk sunt reflectori definii de vectorii Householder uk = [0 . . . 0 ukk 0 . . . 0 un+1,k . . . umk]T . La fiecare etapa, elementele k = ukk i uik, i = n + 1 : m, se determina ca n algoritmul 3.5 pentru a anula elementele corespunzatoare din coloana k a blocului C. n plus, datorita structurii suplimentare de zerouri, aplicarea transformarii lasa nemodificate liniile i = k + 1 : n ale matricei A+, deci conserva structura superior triunghiulara a blocului lider. n consecina, numarul de operaii se reduce la 2(m- n)n2. Detaliile de implementare i analiza unor cazuri particulare semnificative sunt propuse n problema 3.20. _ n cazul utilizarii reflectorilor compleci de forma generala (3.32), implementarea schemei QR se face utiliznd direct procedurile CRFG i CRF din tabelul 3.3.
12n

cazul complex, notnd N = mn2 - n3/3, algoritmul 3.5 cere N adunari complexe i N nmuliri complexe. Deoarece o adunare complexa este echivalenta cu 2 adunari (reale), iar o nmulire complexa este echivalenta cu doua adunari i patru nmuliri, algoritmul 3.5 cere 4N adunari i 4N nmuliri, adica 8N (sau 4NQR) operaii reale (flopi).

3.4. FACTORIZAREA QR 149 CQR % Algoritmul de triangularizare ortogonala cu reflectori complec , i.e. QHA = R, unde QH = QH s . . .QH 2 QH 1. 1. Pentru k = 1 : s 1. k = CRFG(A(k : m, k)) 2. Pentru j = k + 1 : n 1. CRF(A(k : m, k), k,A(k : m, j)) Modul de apel este [,A] = CQR(A), unde este acum vectorul complex cu componentele k, k = 1 : s.

B. Proceduri de triangularizare cu rotaii

Procesul de triangularizare definit prin relaia (3.53) poate fi implementat alternativ utiliznd rotaii. De exemplu, n cazul real, pentru anularea elementelor subdiagonale se utilizeaza secvene de rotaii Pk de forma (3.26), n care la fiecare etapa k rotaiile Pki se determina utiliznd algoritmul 3.4 pentru a introduce zerourile necesare n poziiile corespunzatoare aik, i = k + 1 : m, ale matricei curente A. Actualizarea coloanelor urmatoare se face utiliznd algoritmul 3.3. Procedura de triangularizare se poate desfaura pe loc n tabloul A, utiliznd urmatoarea schema de calcul. QR ROT % Triangularizarea matricei A utiliznd rotaii 1. Pentru k = 1 : min (m - 1, n) 1. Pentru i = k + 1 : m 1. Se determina Pki astfel nct (PkiA)ik = 0 2. A PkiA Detaliile de justificare precumi scrierea algoritmuluin forma sa implementabila sunt propuse ca exerciii. Menionam ca numarul de operaii efectuat aici este dublu faa de algoritmul similar care utilizeaza reflectori, de aceea acesta din urma este n general preferabil. n cazul complex, schema de mai sus ramne valabila, cu meniunea ca rotaiile Pki se calculeaza ca n seciunea 3.2.2.

3.4 Factorizarea QR

n aceasta seciune vom utiliza procedurile de triangularizare ortogonala stabilite n seciunea anterioara pentru a construi factorizarea QR a unei matrice A Cmn de forma generala. Notam ca de obicei s = min(m, n).

n cazul m n din (3.53) i (3.56) rezulta A = QR, R = _ R 0 _ }n }m- n (3.57) unde matricea Q = Q1Q2 . . .Qn (3.58) 150 CAPITOLUL 3. PROBLEMA CELOR MAI MICI P ATRATE este unitara iar R este superior triunghiulara ca n (3.54). (n particular, daca m = n atunci R = R.) Partiionnd Q conform cu R, i.e. Q = [ Q |{z} n Q |{z} m-n ], (3.59) din (3.57) deducem A = QR, (3.60) unde acum Q are coloanele ortogonale, pe scurt QHQ = In, iar R este patrata. Am demonstrat astfel prima parte a urmatorului rezultat fundamental. Teorema 3.2 Orice matrice A Cmn cu m n poate fi scrisa sub forma (3.60), unde Q Cmn are coloane ortogonale, iar R Cnn este superior triunghiulara. Prin definiie, relaia (3.60) constituie factorizarea QR a matricei A. Daca A este monica, atunci R rezulta inversabila i reciproc. n acest caz, factorizarea QR este unica daca n plus impunem condiia ca factorul triunghiular R sa aiba elemente diagonale (reale ) pozitive. Demonstraie. Pentru a demonstra a doua afirmaie, sa ne amintim ca matricea A este monica daca i numai daca Ax 6= 0, oricare ar fi x Cn, x 6= 0, deci xHAHAx = kAxk2 > 0 pentru orice x 6= 0, adica matricea hermitica G = AHA este pozitiv definita. Atunci, conform teoremei de factorizare Cholesky, exista este unica matricea R1 superior triunghiulara cu elemente diagonale pozitive astfel nct G = RH 1 R1. Fie Q1 = AR-1 1 . Avem QH 1 Q1 = R-H 1 AHAR-1 1 = R-H 1 RH 1 R1R-1 1 = In, adica Q1 are coloanele ortogonale, i n plus A = Q1R1. Prin urmare, unicitatea factorizarii QR rezulta din unicitatea factorizarii Cholesky, i.e. daca R satisface condiia din enun atunci R = R1 i Q = Q1. (Condiia ca elementele diagonale ale lui R sa fie pozitive poate fi ntotdeauna satisfacuta, dar, de obicei, nu prezinta interes n practica.) _ Observaia 3.4 n general, matricea hermitica pozitiv semidefinita G = AHA se numete gramian al (coloanelor) matricei A. Demonstraia teoremei 3.2 arata ca daca matricea A este monica, atunci factorul triunghiular R al lui A coincide n esena cu factorul Cholesky R1 al lui G. n principiu, acest rezultat extrem de important poate fi exploatat n doua sensuri. a) Factorizarea QR a matricei A poate fi determinata relativ economic efectund n prealabil factorizarea Cholesky a matricei G. Schema de calcul, dedusa direct din demonstraia teoremei amintite, este urmatoarea QR Ch 1. Se formeaza G = AHA 2. Se calculeaza R1 efectund factorizarea Cholesky G = RH 1 R1 3. Se calculeaza Q1 = AR-1 1 rezolvnd sistemul superior

triunghiular Q1R1 = A 3.4. FACTORIZAREA QR 151 Trebuie nsa sa subliniem ca aceasta metoda, dei conceptual extrem de simpla, nu este recomandabila din punct de vedere numeric deoarece matricea G, rezultata la pasul 1 prin ridicarea la patrat a lui A, este rau condiionata, vezi mai departe propoziia 3.5. n consecina, rezultatele calculate la pai 2 i 3 sunt afectate de erori straine de problema i eventual catastrofale, independent de calitatea algoritmilor utilizai. Ca regula generala, formarea gramianului G = AHA trebuie sistematic evitata n favoarea operarii directe asupra matricei date A. b) O serie de probleme de calcul, viznd de exemplu actualizarea unor factorizari LU sau Cholesky, pot fi reformulate n termenii unei factorizari QR echivalente rezolvate n consecina aplicnd procedurile numeric stabile bazate pe utilizarea transformarilor ortogonale. Spre deosebire de abordarea de la punctul a), aceasta idee, care constituie baza unei ntregi familii de metode de calcul, tradiional numite de radacina patrata, este larg aplicata n practica. _ Exemplul 3.6 Pentru a ilustra ideea de baza a algoritmilor de radacina patrata, fie G = RHR o matrice hermitica pozitiv definita al carei factor Cholesky superior triunghiular R Cnn este cunoscut. Problema de actualizare a factorizarii Cholesky consta n a calcula factorul Cholesky R+ al matricei modificate G+ = G + CHC, n care C Cln este o matrice data. n particular, daca l = 1, i.e. C = cT este un vector linie, atunci G+ este o modificare de rang 1 a lui G. Aceasta problema poate fi rezolvata extrem de simplu, fara a forma explicit G+, observnd ca G+ = RHR + CHC = [RH CH] _ R C _ = AH +A+, i.e. G+ este gramianul matricei A din exemplul 3.5. n consecina, factorul Cholesky cautat R+ poate fi determinat efectund triangularizarea ortogonala a matricei A+, construite direct cu elementele date R i C. O idee asemanatore se aplica pentru a efectua actualizarea factorizarii Cholesky n cazul unei modificari de rang 2, i.e. G+ = G + dcH + cdH + ccH, unde c, d Cn sunt doi vectori (coloana) dai. _ Daca matricea A este monica, atunci factorul ortogonal Q al lui A are o semnificaie geometrica remarcabila. Din (3.60) rezulta y not = Ax = Q(Rx), x Cn, (3.61) unde R este superior triunghiulara inversabila. Prin urmare, coloanele matricelor A i Q genereaza acelai subspaiu liniar S not = ImA. Mai precis, prin ipoteza A are coloanele independente, deci constituie o baza a lui S, iar prin construcie Q are coloanele ortogonale, deci constituie o baza ortogonala a lui S. Proiectorul ortogonal pe S este P1 = A(AHA)-1AH sau, mai simplu, P1 = QQH. (Prin calcul direct 152 CAPITOLUL 3. PROBLEMA CELOR MAI MICI P ATRATE _________ _ _ _ _ _ _ _ _ _ _ _ _ __ 6 q1 q2 q3 S S Fig. 3.5: Baze ortogonale pentru ImA i KerAH. Q = [q1 q2 | q3], m = 3, n = 2 se verifica uor ca P2 1 = P1 i PH 1 = P1, iar faptul ca ImP1 = S este evident. Echivalena celor doua expresii ale lui P1 rezulta din (3.60).) n mod similar, matricea Q Cm(m-n) (care, n (3.59), completeaza Q pna

la o matrice unitara Q), constituie o baza ortogonala a subspaiului complementar S = KerAH. Proiectorul ortogonal pe S este P2 = QQH , n plus, avem P1 + P2 = Im. Pe scurt, partiia (3.59) a matricei unitare Q corespunde descompunerii ortogonale fundamentale Cm = ImA . KerAH, (3.62) furniznd baze ortogonale pentru ambele subspaii. Cazul m = 3, n = 2 este ilustrat n figura 3.5. n consecina, orice vector b Cm se scrie unic sub forma b = b1 +b2, unde bi = Pib, i = 1 : 2, sunt proieciile ortogonale ale lui b pe S , respectiv, S. n cazul m < n, din (3.53) i (3.56) rezulta A = QR, R = [R S], (3.63) unde Q = Q1Q2 . . .Qm este unitara, iar R este superior trapezoidala ca n (3.55). Utiliznd partiia conforma A = [A B] obinem factorizarea A = QR, (3.64) unde, evident, A = A[m] este submatricea lider principala a matricei A. Daca A este inversabila, atunci R are aceeai proprietate, iar din (3.64) B = QS rezulta B = A(R)-1S. Altfel spus, ntre coloanele matricei A exista relaia B = AX, unde X = (R)-1S este soluia sistemului triunghiular RX = S, prin urmare matricea N = _ -X Im-n _ constituie o baza (neortogonala) a subspaiului N not = KerA Cn. (Se constata imediat ca A este epica i AN = 0.) Trebuie nsa sa observam ca, n absena unei strategii adecvate de pivotare a coloanelor, condiia de inversabilitate menionata mai sus nu este ndeplinita, astfel 3.4. FACTORIZAREA QR 153 nct n cazul m < n, utilitatea practica a procedurii de triangularizare ortogonala (la stnga) precum i a factorizarii QR asociate sunt limitate. Avnd n vedere rezultatele teoretice stabilite mai sus, care evideniaza clar importana factorizarii QR, n continuare ne vom concentra atenia asupra aspectelor procedurale privind calculul i aplicaiile practice ale acestei factorizari.

3.4.1 Acumularea transformarilor

n cazul m n, factorizarea QR a matricei A poate fi determinata utiliznd procedurile de triangularizare ortogonala stabilite n seciunea anterioara. ntr-adevar, n urma execuiei acestor proceduri, factorul triunghiular R se obine ca atare n triunghiul superior al matricei A iar, n acord cu relaiile (3.58) i (3.59), factorul ortogonal Q poate fi calculat sub forma Q = Q_ In 0 _= Q1Q2 . . .Qn _ In 0 _, (3.65) aplicnd urmatoarea schema caracteristica de acumulare a transformarilor. GQR % Acumularea primelor n coloane Q ale matricei Q = Q1Q2 . . .Qn, m n. 1. Q = _ In 0 _ 2. Pentru k = n : -1 : 1 1. Q QkQ Cu referire la algoritmul 3.5, implementarea schemei GQR este simpla. innd seama de particularitaile de structura ale matricei Q i utiliznd elementele definitorii ale transformarilor Qk, memorate n triunghiul inferior strict al matricei A precum i n vectorul , procesul de calcul poate fi organizat astfel nct Q sa rezulte pe loc n tabloul A 13. Algoritmul 3.6 (GQR) (Utiliznd ierea algoritmului 3.5, se efectueaz a acumularea pe loc n A a primelor n coloane Q ale matricei Q = Q1Q2 . . .Qs, unde Qk sunt reflectori hermitici. Se presupune m n.) 1. Pentru j = 2 : n 1. aij = 0, pentru i = 1 : j - 1 2. Pentru k = n : -1 : 1

1. Daca k 6= 0 atunci 1. akk ukk = k 2. Pentru j = k + 1 : n 1. = -(Pm i=k uikaij) /k 2. aij aij + uik, pentru i = k : m
13n

caz de nevoie, factorul triunghiular R sau chiar ntregul tablou A sunt n prealabil salvate. Acest mod de lucru se justifica avnd n vedere ca, n general, un anumit algoritm de calcul trebuie sa manevreze un numar ct mai mic de tablouri de lucru.

154 CAPITOLUL 3. PROBLEMA CELOR MAI MICI P ATRATE % coloana k 3. aik -aik, i = k : m 4. akk = 1 + akk altfel 5. aik = 0, pentru i = k + 1 : m 6. akk = 1 Comentarii. n cazul real, algoritmul 3.6 necesita NQR operaii, care (la fel ca n algoritmul 3.5) se consuma pentru actualizarea coloanelor la pasul 2.1.2. Modul de apel este A = GQR(A, ). Reinem ca determinarea explicita a factorizarii QR a matricei A prin apelarea succesiva a procedurilor QR i GQR necesita n total 2NQR operaii, deci este relativ costisitoare. Pentru utilizare n capitolele urmatoare, sintaxa unei astfel de proceduri de factorizare QR este [Q,R] = FQR(A) (lasam cititorului micile detalii de implementare). _

n contextul procedurii de triangularizare CQR, care utilizeaza reflectori complec, schema de acumulare GQR ramne evident valabila. Implementarea ei directa, bazata pe aplicarea la pasul 2 a procedurii de transformare CRF pentru actualizarea coloanelor lui Q, este extrem de simpla. GCQR % Acumularea primelor n coloane Q ale matricei Q = Q1Q2 . . .Qn, m n, unde Qk sunt reflectori complec. 1. Pentru j = 1 : n 1. qij = 0, pentru i = 1 : m 2. qjj = 1 2. Pentru k = n : -1 : 1 1. Pentru j = 1 : n 1. CRF(A(k : m, k), _k,Q(k : m, j)) Subliniem nsa ca procedura GCQR n forma scrisa mai sus este neeficienta deoarece nu exploateaza structura speciala a matricei Q care, pe masura aplicarii transformarilor la pasul 2, se umple progresiv, ncepnd cu ultima coloana. (Un calcul simplu arata ca, n cazul m = n, algoritmul GCQR necesita Nop = 2n3 operaii complexe, adica cu 50% mai mult dect algoritmul 3.6.) Modificarile necesare pentru a corecta acest defect, permind totodata formarea lui Q pe loc n tabloul A, pot fi aduse de catre cititorul interesat, eventual dupa o analiza comparativa cu algoritmul 3.6.

Matricea Q, care completeaza Q pna la o matrice unitara, poate fi calculata sub forma Q = Q_ 0 Im-n _ = Q1Q2 . . .Qn _ 0 Im-n _, (3.66) utiliznd o schema de acumulare similara, dar mai puin eficienta. (Evident, acum tabloul A trebuie extins cu m - n coloane necesare pentru a memora Q.)14 n final, subliniem ca formarea matricelor Q, Q sau Q prin acumularea transform arilor este relativ costisitoare. De aceea, n contextul aplicaiilor considerate n acest capitol, se recomanda evitarea acestui calcul n favoarea utilizarii formei factorizate (3.58) a matricei Q, furnizata ca atare de algoritmii de triangularizare QR.
14n

cazul m < n, cu referire la (3.64), calculul matricei Q se poate face apelnd direct procedura GQR sub forma A(:, 1 : m) = GQR(A(:, 1 : m), ). Dupa execuie, rezultatul dorit Q suprascrie blocul lider A al matricei A.

3.4. FACTORIZAREA QR 155

3.4.2 Aplicarea transformarilor


n practica, matricea unitara QH generata sub forma (3.56) de procedurile de triangularizare ortogonala aplicate matricei A, se utilizeaza pentru a transforma n

mod adecvat o alta matrice data B. Ca regula generala, cele patru tipuri de transform ari posibile, doua la stnga (QHB i QB) i doua la dreapta (BQ i BQH), se efectueaza pe loc n B fara a forma explicit matricele QH sau Q. Aplicarea transformarilor B QHB = QH s . . .QH 2 QH 1 B (3.67) B QB = Q1Q2 . . .QsB (3.68) se face partiionnd B pe coloane. n cazul (3.67), schema de calcul este evident urmatoarea. MQR % Aplicarea transformarii B QHB, unde Q = Q1Q2 . . .Qs. 1. Pentru k = 1 : s 1. B QH kB Cu referire la algoritmul 3.5, implementarea schemei MQR are la baza o procedur a de tip RF pentru actualizarea fiecarei coloane a matricei B. Desigur, la pasul 1.1, transformarea se aplica efectiv numai daca k 6= 0, utiliznd vectorul Householder uk memorat n A(k : m, k). Algoritmul 3.7 (MQR) (Se da B Cmp. Utiliznd ierea algoritmului 3.5, se aplica transformarea B QHB, unde Q = Q1Q2 . . .Qs, iar Qk sunt reflectori hermitici.) 1. Pentru k = 1 : s 1. Daca k 6= 0 atunci 1. t = akk 2. akk ukk = k 3. Pentru j = 1 : p 1. = -(Pm i=k uikbij) /k 2. bij bij + uik, pentru i = k : m 4. akk = t Comentarii. n cazul real cu m n, algoritmul 3.7 necesita Nop = pNm operaii, unde am notat cu Nm = 2n(2m - n) numarul de operaii necesar pentru a aplica transformarea (3.67) unui vector b cu m componente. _
n contextul procedurii de triangularizare CQR, schema MQR se implementeaza astfel. MCQR % Aplicarea transformarii B QHB, unde Q = Q1Q2 . . .Qs, iar Qk sunt reflectori complec. 1. Pentru k = 1 : s 1. Pentru j = 1 : p 1. CRF(A(k : m, k), _k,B(k : m, j))

156 CAPITOLUL 3. PROBLEMA CELOR MAI MICI P ATRATE n cazul (3.68) se procedeaza analog. Daca Qk sunt reflectori hermitici, atunci algoritmul rezultat difera de algoritmul 3.7 numai prin ordinea de aplicare a transform arilor. Avnd n vedere simplificarea redactarii unor proceduri ulterioare, vom presupune ca ambele transformari (3.67) i (3.68) pot fi efectuate apelnd o singura procedura, al carei mod de apel este B = MQR(TRANS,A, ,B), unde TRANS este o variabila logica cu valorile da n cazul (3.67), respectiv nu n cazul (3.68). Scrierea acestei proceduri (din care jumatatea da coincide cu algoritmul 3.7) consituie un exerciiu uor. Aplicarea transformarilor la dreapta B BQ i B BQH se face partiionnd B pe linii i innd seama de precizarile facute n finalul seciunii 3.2.1. Scrierea procedurii corespunzatoare, de exemplu notata MQRd, este propusa ca exerciiu. (La nevoie, cele doua proceduri MQR i MQRd pot fi reunite ntr-una singura introducnd o variabila suplimentara SIDE, aa cum se procedeaza n LAPACK.) n concluzia expunerii de pna acum, subliniem ca procedurile de triangularizare, acumulare i transformare, notate generic QR, GQR MQR, apar ntotdeauna n triplete, orice modificare a procedurii fundamentale de triangularizare QR, n ceea

ce privete calculul i memorarea transformarilor Qk, k = 1 : s, antrennd dupa sine modificari corespunzatoare n procedurile asociate GQR MQR. Avnd n vedere recomandarile facute n finalul seciunii precedente, procedura de acumulare GQR se utilizeaza numai n caz de stricta necesitate. Aproape ntotdeauna, obiectivele urmarite prin calcul pot fi atinse utiliznd procedura de transformare MQR care opereaza direct cu forma factorizata a matricei Q.

3.4.3 Triangularizarea ortogonala la nivel de bloc


Ideea procedurilor bloc de triangularizare ortogonala este aceeai cu a procedurilor bloc de factorizare LU, descrise n seciunea 2.4. La fel ca acolo, utilizarea acestui tip de proceduri este indicata pe calculatoarele cu memorie ierarhica. Pentru precizare, n continuare ne vom referi la procedura CQR care efectueaza triangularizarea matricei A, partiionata pe coloane, utiliznd reflectori complec. Dupa cum am vazut, aceasta procedura este bogata n operaii vectoriale, iar efortul principal de calcul se consuma la pasul 1.2 pentru actualizarea coloanelor urmatoare. Avnd n vedere accelerarea acestui proces pe seama reducerii numarului de apeluri la memoria principala, procedura bloc opereaza asupra matricei A partiionate n blocuri de coloane, cu scopul de a efectua operaiile indicate utiliznd procedurile de nmulire matriceala (la nivel de bloc) de tip GEMM din BLAS 3. Consideram A Cmn cu m n i n = nb, unde nb e dimensiunea comuna a blocurilor (de coloane), iar este numarul total de blocuri. Procedura de triangularizare la nivel de bloc are etape. (Pentru simplitate, n continuare indicele de etapa va fi omis.) La prima etapa, are loc triangularizarea primului bloc al matricei A, efectund transformarea A QH b A. n consecina, se considera partiia A = [Ab B], unde Ab = A(1 : m, 1 : nb), B = A(1 : m, nb + 1 : n) (3.69) i se procedeaza astfel: 3.4. FACTORIZAREA QR 157 Bl1 1. Se genereaza Qb a.. QH b Ab = Rb este superior triunghiulara 2. Se formeaza Qb 3. Se aplica transformarea B QH bB Evident, la pasul 1 se aplica procedura uzuala CQR blocului Ab. Matricea Qb rezultata este de forma Qb = Q1Q2 . . .Qnb , (3.70) unde Qi = Im - iuiuH i sunt reflectorii compleci determinai pentru a introduce zerouri subdiagonale n coloanele i = 1 : nb ale blocului Ab. Problema consta n gasirea unei forme de reprezentare a lui Qb la pasul 2, adecvate accelerarii execuiei pasului 3 15. La o etapa ulterioara l 2 : , matricea curenta A este superior triunghiulara n primele k - 1 coloane, unde k = (l - 1)nb + 1, prin urmare A = _ R S 0 A _, unde matricea R este superior triunghiulara de ordin k-1, iar A = A(k : m, k : n) este matricea ramasa. Acum are loc triangularizarea blocului urmator efectund transformarea A QH b A, unde Qb = QkQk+1 . . .Qk+nb-1, iar fiecare reflector Qi are o structura de tip (3.10), deci Qb = _ Ik-1 0 0 Qb _. n consecina, se considera partiia A = [ Ab B], unde acum Ab = A(k : m, k : k + nb - 1), B = A(k : m, k + nb : n), i se aplica procedura Bl1 cu noile date. Matricea Qb rezultata este de forma Qb = Q1 Q2 . . . Qnb , iar problemele de calcul la pai 2 i 3 sunt aceleai ca mai sus.

Pentru precizare, n continuare ne vom referi la partiia (3.69) i vom descrie cele doua tipuri de reprezentari structurate ale matricelor Qb de tip (3.70), utilizate
uzuale de tip vectorial, expuse n seciunile anterioare, nu satisfac acest deziderat. Aplicarea succesiva a transformarilor Qi, i = 1 : nb, n maniera MQR, este eficienta (numarul de operaii este 2nb(2m - nb)(n - nb)) dar nu conduce la operaii matriceale implementabile n BLAS 3. Pe de alta parte, formarea explicita a matricei Qb prin acumularea transformarilor n maniera GQR este costisitoare, totodata Qb rezulta nestructurata, deci produsul matriceal B QH b B cere 2m2(n - nb) operaii, unde tipic, m nb, adica cu un ordin mai mult dect este necesar. n plus, un asemenea mod de lucru cere un spaiu considerabil pentru memorarea matricei Qb. De aceea, n practica, se utilizeaza reprezentari speciale ale matricelor de tip Qb care poarta numele de reflectori bloc i care vor fi descrise n continuare.
15Procedurile

158 CAPITOLUL 3. PROBLEMA CELOR MAI MICI P ATRATE n practica. (Indicele b va fi omis.) Aceste reprezentari se numesc reflectori bloc, iar elementele lor definitorii se construiesc exploatnd relaia recurenta Q = Q1, Q Q+ = QQi, i = 2 : nb. a. Reprezentarea WY este de forma QH = I -WY H, respectiv Q = I - YWH, (3.71) unde W, Y Cmnb sunt doua matrice ce urmeaza a fi determinate. Iniial avem Q = I - 1u1uH 1 , deci putem lua W = u1, Y = 1u1. Mai departe putem scrie Q+ = QQi = (I - YWH)(I - iuiuH i) = = I - YWH - i(I - YWH)uiuH i= = I - _ Y zi __ WH uH i_ = = I - Y+WH +, deci W+ = [W ui], Y+ = [Y zi], unde zi = i(I - YWH)ui. Matricea W, formata prin alaturarea vectorilor Householder ui, este produsa i memorata ca atare de catre procedura CQR pe poziiile subdiagonale din tabloul Ab. (ntruct primele i - 1 componente ale vectorilor Householder ui sunt nule, iar uii = 1, W este chiar inferior trapezoidala unitate.) n consecina, reprezentarea WY este complet definita de tabloul Y , a carui procedur a de formare (vezi pasul 2 al schemei Bl1) este urmatoarea. % Formarea lui Y 1. Y (:, 1) = 1u1 2. Pentru i = 2 : nb 1. Y (:, i) = (iui) - Y (WH(iui)) La pasul 3 al procedurii Bl1, reflectorul bloc n reprezentarea WY se aplica matricei B conform schemei B QHB = (I -WY H)B = B -W(Y HB), (3.72) respectiv 1. N = Y HB 2. B B -WN Ambele produse se efectueaza utiliznd GEMM i cer 4mnb(n - nb) operaii. Singurul neajuns al reprezentarii WY consta n necesitatea formarii tabloului de lucru suplimentar Y de dimensiune m nb, relativ mare. 3.4. FACTORIZAREA QR 159 b. Reprezentarea W2T sau triunghiulara este de forma QH = I -WTHWH, respectiv Q = I -WTWH (3.73) unde, dupa cum vom vedea, W este acelai ca mai sus, iar T Cnbnb rezulta superior triunghiulara.

Iniial avem Q = I - 1u1uH 1 , deci putem lua W = u1, T = 1. Mai departe putem scrie Q+ = QQi = (I -WTWH)(I - iuiuH i) = = I -WTWH - iuiuH i +W(iTWHui)uH i= = I - _ W ui __ T ti 0 i __ WH uH i_ = = I -W+T+WH
+

deci avem W+ = [W ui], T+ = _ T ti 0 i _, unde ti = -iT (WHui). Procedura de formare a tabloului triunghiular T , care definete complet reprezentarea W2T, este urmatoarea. % Formarea lui T 1. T (1, 1) = 1 2. Pentru i = 2 : nb 1. T (1 : i - 1, i) = -iT (WHui) 2. T (i, i) = i La pasul 3 al procedurii Bl1, reflectorul bloc n reprezentarea W2T se aplica matricei B conform schemei B QHB = (I -WTWH)B = B -WT (WHB), (3.74) respectiv 1. N = WHB 2. N THN 3. B B -WN O analiza simpla arata ca n acest caz este suficient un singur tablou de lucru de dimensiune nb n, relativ mica. n primele nb coloane ale acestuia se formeaza T , iar n coloanele urmatoare se depune produsul intermediar N = WHB. (Subliniem ca blocurile T utilizate n etapele succesive ale procedurii de triangularizare nu se memoreaza, ci se formeaza pe masura ce sunt necesare.) Numarul de operaii este (4m+nb)nb(n-nb). Creterea numarului de operaii este compensata de memorarea mai compacta a reprezentarii triunghiulare. Combinnd ideile de mai sus, procedura de triangularizare ortogonala la nivel de bloc poate fi rezumata astfel. 160 CAPITOLUL 3. PROBLEMA CELOR MAI MICI P ATRATE CQR Bl % Triangularizare la nivel de bloc, utiliznd reflectori complec. 1. Pentru k = 1 : nb : min(n,m) 1. f = min(k + nb - 1, n) 2. Ab = A(k : m, k : f) 3. (k : f) = CQR(Ab) 4. A(k : m, k : f) = Ab 5. Daca f < n atunci % Formarea lui T 1. T (k, k) = k 2. Pentru i = k + 1 : f 1. T (k : i - 1, i) = -iT (WHui) 2. T (i, i) = i % aplicarea transformarii 3. B = A(k : m, f + 1 : n) 4. N = WHB

5. N THN 6. B B -WN 7. A(k : m, f + 1 : n) = B n redactarea de mai sus, Ab este tabloul de lucru din memoria rapida n care se efectueaza triangularizarea blocului curent, iar B i N sunt blocurile utilizate de GEMM n procesul de aplicare a transformarii. (n caz de necesitate, blocul B poate fi tratat sub forma partiionata.) Amintim ca tabloul W este format i memorat ca atare n triunghiul strict inferior al blocului Ab obinut la pasul 1.3. Evident, n cazul nb = 1 procedura de mai sus se reduce la CQR. Instruciunile 1.2, 1.4, 1.5.3 i 1.5.7 efectueaza transferul datelor ntre memoria principala i cea rapida. n final, subliniem ca procedurile de acumulare i transformare GCQR MCQR pot fi de asemenea reformulate la nivel de bloc, procednd n esena ca la pasul 1.5 al algoritmului de mai sus.

3.4.4 Alte metode de ortogonalizare

Factorizarea QR a unei matrice monice A Cmn poate fi calculata utiliznd procedurile de ortogonalizare de tip Gram-Schmidt, care constituie analogul schemelor compacte Crout i Doolittle, cunoscute din seciunea 2.4. Considernd relaia A = QR i partiionnd A i Q pe coloane, putem scrie [a1 . . . aj . . . an] = [q1 . . . qj . . . qn] . ...... r11 . . . r1j . . . r1n ... ... ... rjj . . . rjn ... ... rnn . ....... . Egalnd primele coloane avem a1 = q1r11, 3.4. FACTORIZAREA QR 161 unde vectorul q1 este normat, i.e. kq1k = 1, deci r11 = ka1k i q1 = a1/r11. n general avem aj = q1r1j + . . . + qj-1rj-1,j + qjrjj , unde qk qj , deci qH k aj = rkj , k = 1 : j - 1, iar qj este i el normat, deci rjj = kaj j-1

Xk=1 qkrkjk. Procedura de ortogonalizare Gram-Schmidt astfel obinuta este urmatoarea. GS % Procedura Gram-Schmidt (schema jk) 1. Pentru j = 1 : n 1. qj = aj 2. Pentru k = 1 : j - 1 1. rkj = qH k qj 3. qj qj -Pj-1 k=1 qkrkj 4. rjj = kqjk 5. qj qj/rjj Prin rearanjarea buclelor procedurii GS i actualizarea coloanei curente qj imediat dupa calculul unui coeficient rkj , se obine procedura de ortogonalizare GramSchmidt modificata. MGS % Procedura Gram-Schmidt modificata (schema kj)

1. Pentru k = 1 : n 1. qk = ak 2. Pentru k = 1 : n 1. rkk = kqkk 2. qk qk/rkk 3. Pentru j = k + 1 : n 1. rkj = qH k qj 2. qj qj - qkrkj Aici este important sa subliniem ca, dei cele doua proceduri sunt echivalente din punct de vedere matematic, iar numarul de operaii este acelai n ambele cazuri, NGS = 2mn2, totui performanele lor numerice sunt diferite. Procedura GS este numeric instabila att ca mijloc de calcul al factorizarii QR ct i ca metoda de rezolvare a problemei CMMP. n schimb, procedura MGS furnizeaza o factorizare QR satisfacatoare (n sensul ca, de regula, vectorii calculai qj rezulta ortogonali n precizia de lucru) i constituie totodata un algoritm numeric stabil pentru rezolvarea problemei CMMP. De aceea, n multe situaii, procedura MGS (implementat a ngrijit) poate constitui o alternativa viabila faa de perechea QR, GQR, relativ mai costisitoare. 162 CAPITOLUL 3. PROBLEMA CELOR MAI MICI P ATRATE

3.4.5 Factorizarea QL

n unele aplicaii matricea A este adusa la forma inferior triunghiulara n raport cu diagonala secundara care ncepe din colul dreapta-jos, i.e. QHA = L, (3.75) unde lij = 0, i < m - n + j, j = 1 : n, iar Q este unitara. (Pentru simplitate am presupus m n.) Procesul de triangularizare parcurge coloanele n ordine inversa, ncepnd cu ultima i anuleaza elementele situate deasupra diagonalei secundare utiliznd reflectori modificai. Notnd reflectorii cu indicele coloanei n care se pastreaza vectorii Householder corespunzatori, putem scrie QH = QH 1 QH 2 . . .QH n , (3.76) iar procedura de calcul poate fi rezumata astfel. QL % Schema de triangularizare QL, cazul m n 1. Pentru k = n : -1 : 1 1. Se genereaza Qk a.. (QH k A)ik = 0, i = 1 : m - n + k - 1 2. A QH kA La pasul 1.1 se utilizeaza o procedura de tip mRFG (vezi tabelul 3.1), iar la pasul 1.2 se modifica numai primele m-n+k elemente din coloanele j = 1 : k -1, utiliznd procedura corespunzatoare mRF. Aplicaiile procedurii de triangularizare QL sunt perfect similare cu aplicaiile descrise mai sus ale procedurii QR (vezi problemele 3.42, 3.43).

3.5 Rezolvarea problemei CMMP

Revenim acum la problema (3.4) din seciunea introductiva a acestui capitol , pentru generalitate, consideram versiunea ei complexa. Fie A Cmn o matrice data b Cm un vector arbitrar. Problema CMMP consta n determinarea pseudosoluiei x. Cn a sistemului Ax = b astfel nct norma euclidiana a reziduului r = b - Ax sa fie minima, i.e. kb - Ax.k = min xCn kb - Axk. (3.77) n primul rnd, vom stabili condiiile n care problema (3.77) este bine definita, i.e. are o soluie unica. Teorema 3.3 Oricare ar fi vectorul b Cm, problema (3.77) are o soluie unica daca i numai daca matricea A Cmn este monica, i.e. m n i rangA = n.

n acest caz, pseudosoluia n sensul CMMP a sistemului Ax = b poate fi scrisa n forma x. = A+b, (3.78) n care matricea A+ Cnm este prin definiie pseudoinversa lui A i are expresia A+ = (ATA)-1AT (3.79) 3.5. REZOLVAREA PROBLEMEI CMMP 163 Demonstraie. Vom stabili pe rnd a) existena i b) unicitatea pseudosoluiei x.. a) Pentru a demonstra existena, nu e necesar sa presupunem ca matricea A este monica. Consideram subspaiul S = ImA i fie S = KerAH complementul sau ortogonal n Cm. Vectorul b poate fi scris n mod unic sub forma b = b1 + b2, unde b1 S i b2 S sunt proieciile ortogonale ale lui b pe S i respectiv S. Avem r = b - Ax = b2 + (b1 - Ax), (3.80) unde b1 S, Ax S implica b1 - Ax S, deci b2 i b1 - Ax sunt ortogonali, x Cn, vezi figura 3.6. Aplicnd teorema lui Pitagora obinem kb - Axk2 = kb1 - Ax + b2k2 = kb1 - Axk2 + kb2k2 kb2k2, x Cn. (3.81) ntruct b1 S = ImA, exista (cel puin) un x. Cn astfel nct Ax. = b1, (3.82) iar din (3.81) se vede ca orice astfel de x. are proprietatea (3.77) i reciproc. Existena pseudosoluiei x. este demonstrata. Relaia (3.82) arata ca cea mai buna aproximare b. = Ax. a lui b pe S = ImA coincide cu proiecia ortogonala b1, deci b. = b1 exista ntotdeauna i este unic determinata oricare ar fi A. Aceasta afirmaie constituie lema proieciei ortogonale i reprezinta generalizarea unui fapt binecunoscut din geometria elementara. Pe scurt (vezi (3.77) i figura 3.6), distana minima de la un punct b la un subspaiu S este lungimea (euclidiana) a perpendicularei duse din b pe S. Consideraiile geometrice de mai sus pot fi exprimate analitic. Notnd r. = b - Ax., din (3.80) i (3.82) se vede ca r. = b2, unde b2 S = KerAH, deci AHr. = 0. Prin urmare avem _ Im A AH 0 __ r. x. _ = _ b 0 _, (3.83) de unde, eliminnd r. ntre cele doua ecuaii, rezulta AHAx. = AHb. (3.84) b) Din (3.82), pseudosoluia x. e unic determinata daca i numai daca A(x - x) = 0 implica x = x, adica KerA = {0}, sau, echivalent, A este monica. n acest caz, gramianul G = AHA este o matrice pozitiv definita, deci inversabila (vezi demonstraia teoremei 3.2), iar din (3.84) rezulta imediat (3.78) i (3.79). _ Observaia 3.5 Sistemul liniar (3.83), de ordin m+n, se numete sistemul extins asociat problemei CMMP. Matricea acestui sistem este hermitica de semn nedefinit i are o structura particulara remarcabila. Prin rezolvarea acestui sistem putem calcula att pseudosoluia x. ct i reziduul de norma minima r.. Procedurile de calcul corespunzatoare vor fi expuse mai jos 16.
16n

principiu, sistemul extins poate fi rezolvat utiliznd procedurile de factorizare cvasidiagonal a descrise n seciunea 2.10, dar acestea nu sunt eficiente n cazul de faa deoarece nu exploateaza structura speciala a sistemului considerat (vezi problema 3.52).

164 CAPITOLUL 3. PROBLEMA CELOR MAI MICI P ATRATE S S S So C C C C C C

C C C C CCO _____1 _ _ _ _ _ _ _ _ ___ XXXXXXXXz 6 S = ImA b2 b b1 Ax b - Ax b1 - Ax T = S Fig. 3.6: Lema proieciei ortogonale Sistemul liniar (3.84), de ordin n, se numete sistemul de ecuaii normale, pe scurt sistemul normal asociat problemei CMMP. Daca matricea A e monica, gramianul G este o matrice hermitica pozitiv definita, iar pseudosoluia x. coincide cu soluia sistemului normal. La fel ca n observaia 3.4, aceasta echivalena poate fi exploatata n doua sensuri. a) Pseudosoluia x. a sistemului Ax = b poate fi determinata prin rezolvarea sistemului normal asociat. Schema de calcul este urmatoarea: S Ch 1. Se formeaza c = AHb 2. Se formeaza G = AHA 3. Se efectueaza factorizarea Cholesky G = RH 1 R1 4. Se calculeaza x. rezolvnd succesiv sistemele triunghiulare RH 1 y = c i R1x. = y. Trebuie nsa sa subliniem ca, la fel ca n observaia 3.4, aceasta metoda (de relativ economica i extrem de compacta) nu este recomandabila din punct de vedere numeric, deoarece matricea G = AHA este rau condiionata. Cu precauie, ea poate fi avuta n vedere, n special daca m n, iar economia de memorie realizata prin formarea lui G constituie un obiectiv esenial. b) Soluiile unor sisteme liniare cu matrice pozitiv definite avnd structura de gramian pot fi determinate aplicnd ideea algoritmilor de radacina patrata bazai pe utilizarea transformarilor unitare (vezi observaia 3.4). Acest mod de lucru, frecvent utilizat n practica actuala, este ilustrat prin problema 3.46. _

3.5.1 Calculul pseudosoluiei

Avnd n vedere teorema 3.3, peste tot mai departe vom presupune ca matricea A Cmn este monica. 3.5. REZOLVAREA PROBLEMEI CMMP 165 Rezolvarea problemei CMMP se poate face utiliznd informaia furnizata de algoritmul de triangularizare ortogonala QR, i.e. QHA = _ R 0 _ }n }m- n

, QH = QH n . . .QH 2 QH 1 , (3.85) unde Q este unitara, iar R este superior triunghiulara inversabila. Aplicnd transformarea QH ambilor membri ai sistemului Ax = b i notnd QHb = d, d = _ d d _ }n }m- n , (3.86) obinem sistemul unitar echivalent _ R 0 _x = _ d d _ }n }m- n . (3.87) n general, n (3.87) avem d 6= 0, deci sistemul dat Ax = b este incompatibil. Pentru a determina pseudosoluia x., consideram reziduul r = b - Ax. Din (3.87) rezulta QHr = _ d - Rx d _, (3.88) unde matricea QH este unitara, deci krk = kQHrk. Prin urmare krk2 = kQHrk2 = kd - Rxk2 + kdk2 kdk2, x Cn. (3.89) Efectund minimizarea n raport cu x indicata n (3.77) obinem Rx. = d, (3.90) deci soluia n sens CMMP a sistemului supradeterminat Ax = b coincide cu soluia sistemului superior triunghiular nesingular reprezentat de primele n ecuaii din (3.87) 17. Pe scurt, avem x. = [(R)-1 0]QHb (3.91) sau echivalent x. = (R)-1QHb. (3.92) Procedural, soluia problemei CMMP (3.77) este determinata de relaiile (3.86) i (3.90). innd cont de structura lui QH din (3.85), se vede uor ca transformarile (3.86) pot fi efectuate (pe loc n b), utiliznd o procedura de tip MQR. Schema de calcul astfel obinuta este urmatoarea SQR % Calculul pseudosoluiei x = A+b 1. Pentru k = 1 : n 1.b QH kb 2. Se rezolva sistemul triunghiular Rx = b(1 : n)
17Raionamentul

de mai sus constituie o noua demonstraie, de data aceasta constructiva, a teoremei 3.3. Relaiile (3.80-3.82) i (3.88-3.90) se corespund n mod evident.

166 CAPITOLUL 3. PROBLEMA CELOR MAI MICI P ATRATE Cu referire la algoritul 3.5, care utilizeaza reflectori hermitici, implementarea schemei SQR are loc astfel. Algoritmul 3.8 (SQR problema liniara a celor mai mici patrate) (Se da un vector b Cm. Utiliznd ierea algoritmului 3.5, se calculeaza n x soluia n sens CMMP a sistemului liniar Ax = b. Se presupune ca matricea A este monica.) % se aplica transformarile vectorului b 1. Pentru k = 1 : n 1. t = akk 2. akk ukk = k 3. = -(Pm i=k uikbi) /k 4. bi bi + uik, pentru i = k : m 5. akk = t % calculul soluiei problemei CMMP

2. Pentru k = n : -1 : 1 1. xk = (bk -Pn j=k+1 akjxj )/akk Comentarii. n cazul real, algoritmul 3.8 necesita Nop = Nm + n2 = 4mn - n2 operaii. Modul de apel este x = SQR(A, , b). Reinem ca determinarea pseudosolut iei prin apelarea succesiva a procedurilor QR i SQR necesita asimptotic NQR operaii, i.e. principalul efort de calcul se consuma pentru triangularizarea ortogonal a a matricei A. _
n cazul utilizarii algoritmului CQR, implementarea schemei SQR este urmatoarea. SCQR % Calculul pseudosoluiei. 1. Pentru k = 1 : s 1. CRF(A(k : m, k), _k, b(k : m)) 2. x = UTRIS(A(1 : n, :), b(1 : n))

Pe baza informaiilor furnizate de schema SQR, putem calcula uor i reziduul de norma minima r. = b-Ax., obinnd astfel soluia completa a sistemului extins (3.83). Din (3.88) i (3.90) obinem imediat r. = Q_ 0 d _, (3.93) n care d are semnificaia din (3.86). Prin urmare, avnd n vedere ca vectorul transformat b d = QHb a fost deja calculat la pasul 1, r. poate fi obinut (pe loc n b) completnd schema SQR cu secvena 3. b(1 : n) = 0 4. Pentru k = n : -1 : 1 1. b Qkb 3.5. REZOLVAREA PROBLEMEI CMMP 167 n rezumat, fiind date matricea A i vectorul b, calculul pseudosoluiei x. a sistemului Ax = b i al reziduului de norma minima r. consta n triangularizarea ortogonala a matricei A, urmata de aplicarea schemei SQR completata aa cum am spus mai sus. Utiliznd procedurile cunoscute QR, MQR i UTRIS, algoritmul de calcul se redacteaza concis astfel. CMMP % Rezolvarea completa a problemei CMMP. 0. [A, ] = QR(A) 1. b = MQR(da,A, , b) 2. x = UTRIS(A(1 : n, :), b(1 : n)) 3. b(1 : n) = 0 4. b = MQR(nu,A, , b) Subliniem ca la pasul 2 pseudosoluia x. nu se calculeaza pe locul membrului drept b, tocmai avnd n vedere utilizarea acestui spaiu la pai 3 i 4 pentru memorarea lui r.. Deseori n practica, pentru aprecierea gradului de incompatibilitate a sistemului Ax = b, este suficient calculul normei = kr.k. Evident, avem = kb(n + 1 : m)k, unde b este vectorul transformat obinut la pasul 1 al procedurilor SQR sau CMMP.

3.5.2 Calculul proieciilor

n numeroase aplicaii prezinta interes calculul proieciilor ortogonale b1 i b2 ale unui vector b pe subspaiile S = ImA i respectiv S = KerAH. Din demonstraia teoremei 3.5 (vezi figura 3.6) a rezultat ca proiecia b2 a lui b pe S coincide cu reziduul de norma minima r., deci se calculeaza aplicnd procedura CMMP din care pasul 2 se omite 18. n mod similar proiecia b1 a lui b pe S, care coincide cu vectorul de cea mai buna aproximaie b. = Ax., are expresia b. = Q_ d 0 _, (3.94) deci se calculeaza aplicnd aceeai procedura CMMP n care pasul 3 se nlocuiete cu 3. b(n + 1 : m) = 0. Subliniem ca, pentru sigurana calculului, proieciile b1 = b. i b2 = r. se determina ntotdeauna utiliznd relaiile (3.86), (3.93) i (3.94), n care au loc numai transformari ortogonale. n special, nu se recomanda utilizarea relaiilor evidente

b. = Ax. i r. = b- Ax. sau b1 + b2 = b, aparent mai simple, deoarece acestea din urma pot conduce la erori catastrofale de anulare prin scadere. De asemenea, este esenial sa reinem ca determinarea proieciilor precum i calculul pseudosoluiei se efectueaza opernd direct asupra vectorului b, fara a forma explicit proiectorii ortogonali P1, P2 sau pseudoinversa A+.
n virtutea acestei semnificaii geometrice remarcabile, reziduul r. = b -Ax. poate fi calculat fara a determina n prealabil pseudosoluia x.. n general, toate calculele se fac utiliznd exclusiv informaiile obinute la pai 0 i 1 ai procedurii CMMP, fara nici o referire la datele iniiale A, b care, de altfel, au i fost distruse.
18Tocmai

168 CAPITOLUL 3. PROBLEMA CELOR MAI MICI P ATRATE

3.5.3 Problema CMMP cu membru drept multiplu

Fie acum A Cmn o matrice data i B Cmp o matrice arbitrara cu p coloane, unde p 1. Problema rezolvarii n sensul CMMP a sistemului cu membru drept multiplu AX = B consta n determinarea pseudosoluiei X. Cnp astfel nct norma Frobenius a reziduului matriceal R = B - AX sa fie minima, pe scurt kB - AX.kF = min XCnp kB - AXkF . (3.95) Analiza acestei probleme este simpla. Partiionnd matricele B, X i R pe coloane, cu notaii clare putem scrie rj = bj -Axj , j = 1 : p. Pe de alta parte, prin definiia normei Frobenius avem kRk2 F=
p

Xj=1 krjk2. (3.96) n consecina, problema de minimizare (3.95) este echivalenta cu p probleme CMMP de tip (3.77), avnd aceeai matrice A i membri drepi diferii, i.e. kbj - Ax. j k = min xCn kbj - Axk, j = 1 : p. (3.97) Prin urmare, daca matricea A este monica, atunci conform teoremei 3.3 fiecare problema (3.97) are o soluie unica x. j = A+bj, j = 1 : p, iar matricea X. = [x. 1 . . . x. p], rezultata prin agregarea acestora constituie soluia unica X. = A+B (3.98) a problemei (3.95). Procedural, pseudosoluia X. Cnp se calculeaza simplu, efectund o singura data triangularizarea ortogonala a matricei A i aplicnd apoi repetat algoritmul de rezolvare SQR fiecarei coloane B(:, j), j = 1 : p, a matricei B. Daca n plus se dorete calculul reziduului de norma Frobenius minima R. = B - AX., atunci se aplica procedura CMMP n care vectorul b se nlocuiete peste tot cu matricea B. Desigur, n acest nou context pot fi aplicate avantajos (pe calculatoarele cu memorie ierarhica) procedurile bloc de triangularizare ortogonala i aplicare a transformarilor, expuse n seciunea 3.4.4.

3.5.4 Calculul pseudoinversei

Matricea pseudoinversa A+, definita prin (3.78) are multe proprietai interesante , n principiu, poate fi calculata n multe feluri. n primul rnd, utiliznd relaia (3.79), constatam imediat ca 1. A+A = In 2. AA+ = (AA+)H. Prima relaie afirma ca A+ este o inversa la stnga a matricei A; n particular, rangA+ = n, deci A+ este epica. A doua relaie, n combinaie cu prima, arata 3.5. REZOLVAREA PROBLEMEI CMMP 169 ca matricea hermitica P1 = AA+ coincide cu proiectorul ortogonal pe subspaiul S = ImA. Prin urmare, relaiile 1. i 2. determina unic matricea A+ cu expresia (3.79). Din nefericire, (3.79) este improprie din punct de vedere numeric, deoarece

implica inversarea gramianului G = AHA. n al doilea rnd, punnd B = Im din (3.98) gasim X. = A+. Prin urmare, avnd n vedere (3.95), A+ este soluia unica a problemei de minimizare kIm - AA+kF = min XCnm kIm - AXkF . (3.99) Nici aceasta constatare, dei teoretic extrem de interesanta, nu are nsa utilitate calculatorie. Determinarea lui A+ prin rezolvarea sistemului AX = Im utiliznd procedura CMMP este evident neeficienta, deoarece aplicarea transformarilor de la pasul 1 nu ine seama de structura speciala a membrului drept B = Im. n sfrt, din (3.78), prin identificare cu (3.91), (3.92) rezulta A+ = [(R)-1 0]QH, respectiv A+ = (R)-1QH, (3.100) n care apar direct elementele factorizarii QR a matricei A. n consecina, A+ poate fi calculata efectund triangularizarea ortogonala a matricei A i utiliznd informaia astfel obinuta pentru a explicita oricare dintre relaiile (3.100). a) n primul caz se calculeaza inversa matricei triunghiulare R i apoi se aplica transformarea QH la dreapta inversei extinse cu zerouri, utiliznd o procedura de tip MQRd. b) n al doilea caz se acumuleaza matricea Q utiliznd procedura GQR i apoi se rezolva sistemul superior triunghiular RA+ = QH 19. Detaliile de implementare precum i analiza algoritmilor de calcul astfel obinui sunt propuse cititorului ca exerciii. ntruct matricea A+ este rareori necesara ca atare n calcule, iar formarea sa explicita este costisitoare, n practica se recomanda evitarea determinarii lui A+ n favoarea rezolvarii n sens CMMP a unui sistem AX = B definit n mod adecvat. O observaie similara este valabila relativ la proiectorii P1 i P2. Calculul proieciilor se face direct, dupa cum am aratat n seciunea 3.5.2.

3.5.5 Alte metode de rezolvare a problemei CMMP

Calculul pseudosoluiei x. a sistemului Ax = b se poate face utiliznd factorizarea QR a matricei furnizata de procedura Gram-Schmidt modificata din seciunea 3.4.4. Pe scurt, avem A = QR, unde ambele matrice Q i R sunt formate explicit de procedura MGS, iar relaia (3.92) spune ca x. = (R)-1QHb. Partiionnd Q pe coloane, schema de calcul este urmatoarea. SMGS % Calculul pseudosoluiei. 1. Pentru j = 1 : n 1. xj dj = qH jb 2. Se rezolva sistemul triunghiular Rx = d
19Amintim

ca procedura GQR calculeaza Q pe loc n A. Prin urmare, matricea Y = (A+)H poate fi obinuta tot n A, rezolvnd sistemul inferior triunghiular Y (R)H = Q.

170 CAPITOLUL 3. PROBLEMA CELOR MAI MICI P ATRATE Numarul de operaii este Nop = 2mn + n2, prin urmare calculul pseudosoluiei prin apelarea succesiva a procedurilor MGS i SMGS cere asimptotic NGS > NQR operaii. Desigur, procedura de triangularizare ortogonala este mai economica deoarece nu formeaza explicit matricea Q, totui simplitatea procedurii MGS este uneori atractiva. Realmente neplacuta aici este absena matricei de completare Q pe care procedura MGS nu o poate calcula. n consecina, calculul reziduului de norma minima nu se poate face acum dect pe baza relaiei r. = b-Ax., ceea ce necesita pastrarea unor copii ale datelor de intrare A, b. n plus, daca sistemul Ax = b este aproape compatibil, i.e. vectorii b i b. = Ax. sunt apropiai, atunci calculul lui r. este ameninat de erori catastrofale , de aceea, trebuie efectuat lucrnd n dubla precizie (vezi seciunea 2.7).

3.6 Sisteme liniare subdeterminate

Rezolvarea sistemelor liniare subdeterminate necesita o procedura specifica de triangularizare ortogonala la dreapta, pe care o vom expune n prima parte a acestei seciuni. n continuare vom construi factorizarea LQ corespunzatoare, iar n final vom prezenta procedura de rezolvare a problemelor CMMP de tip (3.5).

3.6.1 Triangularizarea ortogonala la dreapta

Propoziia 3.3 Oricare ar fi A Cmn, exista o matrice unitara V H not = Z Cnn astfel nct matricea AV H = L, respectiv AZ = L, (3.101) este inferior triunghiulara. n cazul real A Rmn, matricea de transformare V T = Z poate fi aleasa (reala ) ortogonala, deci L rezulta reala. Pe scurt, orice matrice A este unitar echivalenta la dreapta cu o matrice inferior triunghiulara. Prima relaie arata ca A poate fi scrisa sub forma unui produs A = LV , unde V este unitara, iar L este inferior triunghiulara. n calculul numeric o relaie de acest tip se numete factorizare LQ, de aceea procedurile de calcul stabilite pe baza relaiei fundamentale (3.101) vor fi notate cu sigla LQ. Demonstraia rezulta imediat aplicnd teorema 3.1 matricei B = AH. ntr-adevar, daca V AH = R este superior triunghiulara, atunci are loc (3.101), unde L = RH este evident inferior triunghiulara 20. _ Avnd n vedere ca operaia de transpunere i conjugare este costisitoare, n practica profesionala se opereaza direct asupra matricei date A Cmn. Notam ca de obicei s = min(m, n) i fie Zk reflectorii utilizai n scopul anularii elementelor
20Corespondena

A AH se numete dualitate, iar rezultatele i relaiile asociate prin aceasta corespondena se numesc duale. De exemplu, relaiile (3.53) i (3.101) sunt duale.

3.6. SISTEME LINIARE SUBDETERMINATE 171 situate la dreapta diagonalei principale, din liniile matricei A, la etapele k = 1 : s. Similar cu (3.56), matricea de transformare are structura V H = Z = Z1Z2 . . .Zs (3.102) iar schema de triangularizare este urmatoarea LQ % Schema generala de triangularizare LQ 1. Pentru k = 1 : s 1. Se genereaza Zk a.. (AZk)kj = 0, j = k + 1 : n 2. A AZk. n cazul real sau n cazul utilizarii reflectorilor hermitici (Zk = ZH k ), componentele vkj , j = k + 1 : n, ale vectorilor Householder vk se memoreaza natural pe poziiile elementelor anulate. Algoritmul rezultat poate fi redactat astfel. Algoritmul 3.9 (LQ triangularizare ortogonala la dreapta cu reflectori hermitici) (Se da A Cmn. Se efectueaza triangularizarea ortogonala la dreapta a matricei A, i.e. AZ = L, unde Z = Z1Z2 . . .Zs, iar Zk sunt reflectori hermitici. Partea eseniala vk(k+1 : n) a vectorilor Householder vk se memoreaza pe poziiile corespunzatoareA(k, k + 1 : n). La aplicarea ulterioara a transformarilor se ine seama ca vkk = k, k = 1 : s. Elementele nenule ale matricei inferior triunghiulare L suprascriu elementele corespunzatoare din triunghiul inferior al matricei A.) 1. Pentru k = 1 : s 1. k = 0 2. Daca k < n atunci 1. = kA(k, k : n)k 2. Daca 6= 0 atunci 1. Daca akk 6= 0 atunci akk |akk| 2. akj vkj = akj/, pentru j = k : n 3. k vkk = 1 + akk 4. Pentru i = k + 1 : m 1. = -_Pn j=k aijvkj_/k 2. aij aij + vkj , pentru j = k : n % elementul diagonal 5. akk = -

Comentarii. n cazul real algoritmul 3.9 necesita NLQ = 2nm2 - m3/3 operaii i este numeric stabil, dupa cum vom arata n seciunea 3.8. Modul de apel este [A, ] = LQ(A), unde este vectorul real cu componentele k, k = 1 : s, iar A apare ca tablou de intrare-iere. _ n cazul utilizarii reflectorilor complec, detaliile sunt propuse cititorului ca exerciiu. 172 CAPITOLUL 3. PROBLEMA CELOR MAI MICI P ATRATE

3.6.2 Factorizarea LQ

n aceasta seciune construim factorizarea LQ a unei matrice A Cmn de forma generala. n cazul m n, relaiile (3.101) i (3.102) pot fi scrise sub forma A = LV, L = [ L |{z} m 0 |{z} n-m ], (3.103) unde matricea V = ZH m . . .ZH 2 ZH 1 (3.104) este unitara, iar L este inferior triunghiulara de ordin m. Partiionnd V = ZH conform cu L, i.e. V = _ V V _ }m }n - m , Z = [ Z |{z} m Z |{z} n-m ] (3.105) din (3.103) deducem A = LV , (3.106) unde evident V = ZH are liniile ortogonale, i.e. V V H = Im. Propoziia 3.4 Orice matrice A Cmn cu m n poate fi scrisa sub forma (3.106), unde V Cmn are liniile ortogonale, iar L Cmm este inferior triunghiulara. Prin definiie, relaia (3.106) constituie factorizarea LQ a matricei A. Daca A este epica, atunci L rezulta inversabila i reciproc. Demonstraia ultimei afirmaii este evidenta. Mai mult, daca A este epica, atunci matricea hermitica G = AAH este pozitiv definita, prin urmare considernd factorizarea Cholesky G = L1LH 1 i definind V1 = L-1 1 A, putem stabili cu uurina unicitatea factorizarii LQ, n care factorul triunghiular L are elementele diagonale pozitive. _ n general, matricea hermitica pozitiv semidefinita G = AAH se numete gramian al (liniilor) lui A. Observaia 3.4 se reformuleaza corespunzator n noul context. Daca matricea A este epica, atunci matricea Z din (3.105) are o semnificaie geometrica remarcabila. Din (3.101) sau (3.103) rezulta AZ = [L 0], unde Z are structura (3.105), deci AZ = 0. (3.107) Mai mult, Z Cn(n-m) are coloanele ortogonale, deci constituie o baza ortogonala a subspaiului N = KerA. Proiectorul ortogonal pe N este P2 = ZZH. n mod similar, matricea Z Cnm (care, n (3.105), completeaza Z pna la o matrice ortogonala) constituie o baza ortogonala a subspaiului complementar N = ImAH. Proiectorul ortogonal pe S este P1 = AH(AAH)-1A sau mai simplu P1 = ZZH. Pe scurt, partiia (3.105) corespunde descompunerii ortogonale Cn = ImAH . KerA. (3.108)

3.6. SISTEME LINIARE SUBDETERMINATE 173 Acumularea transformarilor n cazul m n, factorizarea LQ a matricei A poate fi determinata utiliznd procedura de triangularizare ortogonala la dreapta din seciunea anterioara. Factorul triunghiular L se obine ca atare n triunghiul inferior al matricei A, iar factorul ortogonal V poate fi calculat sub forma V = [Im 0]V = [Im 0]ZH m . . .ZH 2 ZH 1 , (3.109) aplicnd urmatoarea schema evidenta de acumulare a transformarilor. GLQ % Acumularea primelor n linii V ale matricei V = ZH, m n. 1. V = [In 0] 2. Pentru k = m : -1 : 1 1. V V ZH
k

Cu referire la algoritmul 3.9, calculul poate fi organizat pe loc n tabloul A, iar procedura poate fi scrisa cu uurina de cititorul interesat. Menionam nsa ca formarea explicita a matricelor V sau Z, Z etc. este de regula contraindicata. Aproape ntotdeauna forma factorizata (3.102) este suficienta. Aplicarea transformarilor La fel ca n seciunea 3.4, matricea unitara Z generata de algoritmul de triangularizare LQ aplicat matricei A se utilizeaza pentru a transforma adecvat o alta matrice data B. Aplicarea transformarii B ZB = Z1Z2 . . .ZsB (3.110) se face partiionnd B pe coloane: MLQ % Aplicarea transformarii B ZB, unde Z = Z1Z2 . . .Zs. 1. Pentru k = s : -1 : 1 1. B ZkB Procednd n acelai spirit, toate rezultatele din seciunea 3.4 pot fi reformulate n contextul factorizarii LQ. Stabilirea versiunii la nivel de bloc a procedurii de triangularizare la dreapta precum i a procedurilor de ortogonalizare Gram-Schmidt sunt propuse cititorului ca exerciii. Factorizarea RQ n unele aplicaii matricea A este adusa la forma superior triunghiulara n raport cu diagonala secundara care ncepe din colul dreapta-jos, i.e. AZ = R, (3.111) unde rij = 0, j < n - m + i, i = 1 : m, iar Z este unitara. (Pentru simplitate am presupus m n.) 174 CAPITOLUL 3. PROBLEMA CELOR MAI MICI P ATRATE Procesul de triangularizare la dreapta parcurge liniile n ordine inversa, ncepnd cu ultima i anuleaza elementele situate la stnga diagonalei secundare utiliznd reflectori modificai. Notnd reflectorii cu indicele liniei n care se pastreaza vectorii Householder corespunzatori, putem scrie Z = Zm . . .Z2Z1, (3.112) iar procedura de calcul poate fi rezumata astfel. RQ % Schema de triangularizare RQ, cazul n > m 1. Pentru k = m : -1 : 1 1. Se genereaza Zk a.. (AZk)kj = 0, j = 1 : n - m + k - 1 2. A AZk La pasul 1.1 se utilizeaza o procedura de tip mRFG (vezi tabelul 3.1), iar la pasul 1.2 se modifica numai primele n - m + k elemente din liniile i = 1 : k - 1, utiliznd procedura corespunzatoare mRF. Aplicaiile procedurii de triangularizare RQ sunt perfect similare cu aplicaiile descrise mai sus ale procedurii LQ.

3.6.3 Rezolvarea sistemelor subdeterminate

Revenim acum la problema (3.5) din seciunea introductiva a acestui capitol. Fie

A Cmn i b Cn. Problema consta n determinarea soluiei normale a sistemului Ax = b, i.e. a unui vector x. Cn astfel nct kx.k = min Ax=b kxk. (3.113) Condiiile de existena i unicitate ale soluiei normale pot fi formulate astfel. Teorema 3.4 Oricare ar fi b Rm, problema (3.113) are o soluie unica daca numai daca A este epica, i.e. m n i rangA = m. n acest caz, soluia normala x. a sistemului Ax = b poate fi scrisa n forma x. = A+b, (3.114) n care matricea A+ este prin definiie (pseudo)inversa normala a lui A i are expresia A+ = AT (AAT )-1. (3.115) Demonstraia rezulta uor (cel puin n cazul real) utiliznd metodele clasice de minimizare cu restricii (problema (3.113) este extrem de simpla). Noi vom proceda direct, stabilind pe rnd a) unicitatea i b) existena globala a soluiei x.. a) Pentru a demonstra unicitatea, nu e necesar sa presupunem ca matricea A este epica, ci doar ca b ImA, (3.116) i.e. mulimea X a soluiilor sistemului Ax = b nu e vida. Desigur, n limbaj geometric, X este planul (sau varietatea liniara) de ecuaie Ax = b. Mai precis, 3.6. SISTEME LINIARE SUBDETERMINATE 175 _ _ _ _ _ _ _ __ _ _ _ _ _ _ _ __ _ _ _ _ _ _ _ __ _ _ _ _ _ _ _ __ -_ _ _ _ __

____________________: _ _ _ _ __ N = KerA x2 x x. = x1 N 0 planul Ax = b Fig. 3.7: Forma generala a soluiilor sistemului subdeterminat Ax = b teorema 1.3 din capitolul 1 afirma ca X = x0 + KerA, unde x0 este o soluie particular a. n consecina, conform lemei proieciei ortogonale, soluia x. a problemei (3.113) coincide cu piciorul perpendicularei din origine pe planul X i ca atare este unic determinata, vezi figura 3.7. La fel ca n demonstraia teoremei 3.3, aceste consideraii geometrice pot fi exprimate analitic. Planul X este paralel cu subspaiul N = KerA, deci x. KerA sau x. N = ImAH, i.e. exista (cel puin) un y. Cm astfel nct x. = AHy.. (n interpretare variaionala, y. este vectorul multiplicatorilor Lagrange asociai restriciilor egalitate Ax = b din (3.113).) n definitiv avem _ In AH A 0 __ x. -y. _ = _ 0 b _, (3.117) de unde, eliminnd x. rezulta AAHy. = b, x. = AHy.. (3.118) b) Existena globala a lui x. este asigurata, i.e. (3.116) are loc oricare ar fi b Cm, daca i numai daca A este epica. n acest caz, matricea G = AAH este pozitiv definita deci inversabila, iar (3.114) i (3.115) rezulta din (3.118). _ Observaia 3.6 Sistemul extins (3.117) i sistemul normal (3.118) au o semnificaie similara cu cea a sistemelor (3.83) i respectiv (3.84) din observaia anterioara. Si aici gramianul G = AAH este o matrice rau condiionata, astfel nct, n general, calculul soluiei normale prin rezolvarea sistemului (3.118) nu este recomandabil. _ Calculul soluiei normale Rezolvarea problemei de minimizare cu restricii (3.113) se poate face utiliznd informaiile furnizate de algoritmul de triangularizare ortogonala AZ = [L 0], Z = Z1Z2 . . .Zm, (3.119) 176 CAPITOLUL 3. PROBLEMA CELOR MAI MICI P ATRATE unde Z este unitara, iar L este inferior triunghiulara inversabila. Notam x = Zu, u = _ u u _ }m }n - m (3.120) i scriem sistemul Ax = b sub forma echivalenta [L 0] _ u u _ = b, (3.121) Relaia de mai sus arata ca, n procesul de minimizare din (3.113), vectorul u = u. este fixat prin Lu. = b, (3.122) iar u este liber. Pentru a determina soluia normala x., consideram (3.120), unde Z este ortogonal a, deci kZuk = kuk. Avem kxk2 = kZuk2 = ku.k2 + kuk2 ku.k2. (3.123) Efectund minimizarea n raport cu u, obinem evident u. = 0. (3.124) Prin urmare soluia normala este

x. = Z _ (L)-1b 0 _, (3.125) sau x. = Z(L)-1b. (3.126) innd seama de structura matricei Z din (3.119), se vede uor ca transformarea (3.125) poate fi efectuata pe loc n x utiliznd o procedura de tip MLQ. Schema de calcul este urmatoarea SLQ % Calculul soluiei normale x = A+b 1. Se rezolva sistemul triunghiular Lx(1 : m) = n 2. x(m + 1 : n) = 0 3. Pentru k = m : -1 : 1 x Zkx Cu referire la algoritmul 3.9, care utilizeaza reflectori hermitici, implementarea schemei de mai sus are loc astfel. Algoritmul 3.10 (SLQ rezolvarea sistemelor subdeterminate) (Se da un vector b Cm. Utiliznd ierea algoritmului 3.9, se calculeaza soluia normala x a sistemului liniar Ax = b. Se presupune ca matricea A este epica.) 3.7. CONDI IONAREA PROBLEMELOR CMMP 177 % se rezolva sistemul inferior triunghiular (3.122) 1. Pentru k = 1 : m 1. xk = (bk -Pk-1 j=1 akjxj )/akk % calculul soluiei normale 2. x(m + 1 : n) 0 3. Pentru k = m : -1 : 1 1. t = akk 2. akk = k 3. -_Pn j=k vkjxj_/k 4. Pentru j = k : n 1. xj xj + vkj 5. akk = t Calculul proieciilor (pe ImAH i KerA), rezolvarea sistemelor subdeterminate cu membru drept multiplu precum i calculul pseudoinversei normale A+ se fac adaptnd n mod corespunzator metodologia din seciunea 3.5. Desigur, acum A+ este o inversa la dreapta a lui A, i.e. AA+ = I.

3.7 Condiionarea problemelor CMMP


3.7.1 Preliminarii

n aceasta seciune prezentam cteva rezultate privind sensibilitatea soluiilor problemelor de calcul abordate anterior n raport cu variaia datelor de intrare 21. Consideram sistemul liniar Ax = b, (3.127) unde A Rmn este o matrice data, iar b Rn este un vector arbitrar. Notam r = rangA i presupunem ca matricea A este de rang maxim, i.e. r = s, unde s = min(m, n) 22. n consecina, conform teoremelor 3.5 i 3.6, sistemul (3.127) are o soluie n sens CMMP unica x. = A+b, (3.128) unde matricea A+ are expresii diferite dupa cum m n sau m n. Avnd n vedere concizia expunerii, n cele ce urmeaza vom adopta o terminologie precum i notaii ct mai uniforme. Vom spune ca A+ este inversa (n sens
21Deoarece

aceasta tematica are un caracter pur matematic, i.e. nu vizeaza calitatea algoritmilor de calcul, pe parcurs vom utiliza formulele cele mai convenabile pentru scopul propus. 22O proprietate P definita pe Rmn se numete tipica daca este generica i structural stabila, adica are loc aproape peste tot (n afara unei varietai algebrice) i se conserva oricare ar fi micile variaii ale (elementelor) matricei considerate. De exemplu, n cazul m = n, proprietatea de inversabilitate este generica (are loc peste tot n afara varietaii definite de ecuaia detA = 0) i structural stabila (daca detA 6= 0, atunci det(A+E) 6= 0, oricare ar fi perturbaia E suficient de mica). Pe scurt, matricele inversabile sunt

tipice n Rnn. Similar, matricele de rang maxim sunt tipice n Rmn.

178 CAPITOLUL 3. PROBLEMA CELOR MAI MICI P ATRATE CMMP a) matricei A i vom defini numarul de condiionare (la inversare) al lui A prin (A) = kAkkA+k, (3.129) unde k k = k k2 este norma spectrala, indusa de norma (vectoriala) euclidiana kxk = (xT x)1/2, adica kAk def = max kxk=1 kAxk. (3.130) Desigur, n cazul m = n avem A+ = A-1, deci (3.129) se reduce la definiia cunoscut a a lui (A) din seciunea 2.7 23. Direct din (3.129) i (3.130), (i) daca matricea A este ortogonala, atunci (A) = 1, i.e. matricele ortogonale sunt perfect condiionate la inversare. Pe de alta parte, norma euclidiana precum i norma spectrala sunt ortogonal invariante, deci (ii) transformarile ortogonale nu modifica condiionarea datelor, i.e. avem (A) = (QTAZ), oricare ar fi matricele ortogonale Q i Z. Proprietaile remarcabile (i) i (ii) explica folosirea intensiva a matricelor ortogonale n calculul numeric. (Aceleai proprietai de invariana apar i n norma Frobenius k kF , care este i ea ortogonal invarianta. Numarul de condiionare evaluat folosind aceasta norma este notat F (A).) Revenim acum la sistemul (3.127), n care prin ipoteza matricea A este de rang maxim i facem urmatoarele precizari. n cazul m n matricea A este monica, iar A+ = (ATA)-1AT este epica. Evident, avem A+A = In, deci A+ este o inversa la stnga a lui A, dar AA+ 6= Im, mai precis P1 = AA+ i P2 = Im - P1 sunt proiectorii (ortogonali) pe subspaiile S = ImA i respectiv S = KerA. De asemenea, este adevarat ca kAk2 = kATAk sau, pe scurt, kAk2 = kGk, (3.131) unde matricea simetrica G = ATA este gramianul (coloanelor) matricei A. n cazul m n matricea A este epica, iar A+ = AT (AAT )-1 este monica. Evident, acum avem AA+ = Im, deci A+ este o inversa la dreapta a lui A, iar P1 = A+A i P2 = Im - P1 sunt proiectorii pe subspaiile N = ImAT i respectiv N = KerA. De asemenea, are loc relaia (3.131), unde matricea G = AAT este gramianul (liniilor) matricei A. Putem acum formula concis primele noastre rezultate. Propoziia 3.5 Daca A Rmn este de rang maxim, atunci (G) = 2(A), (3.132) unde G este gramianul matricei A.
am evaluat (A) utiliznd normele k k1 sau k k, relativ mai simple. n acelai scop, aici vom utiliza norma spectrala, care, dupa cum tim din capitolul 1, este ortogonal invarianta. Anticipnd rezultate din capitolul 5, precizam ca n general norma spectrala kAk coincide cu valoarea singulara maxima a matricei A, notata de obicei 1, iar numarul de condiionare este (A) = 1/r 1, unde r este cea mai mica valoare singulara nenula a lui A.
23Acolo

3.7. CONDI IONAREA PROBLEMELOR CMMP 179 Demonstraie. Notam cu H gramianul lui A+. n cazul m n, A+ este epica, deci H = A+(A+)T = (ATA)-1ATA(ATA)-1 = (ATA)-1 = G-1. Aplicnd acum (3.131) lui A+ gasim kA+k2 = kHk = kG-1k, (3.133) deci (3.132) rezulta direct, utiliznd definiia lui (G) precum i relaiile (3.131) (3.133). Cazul m n este similar; desigur acum H = (A+)TA+. _ Propoziia 3.6 Daca A Rmn este de rang maxim, atunci matricea A = A+ E are aceeai proprietate, oricare ar fi perturbaia E astfel nct kEk < -1(A)kAk. (3.134) Demonstraie. n cazul m n putem scrie A = (Im + EA+)A, unde, conform unui rezultat cunoscut, matricea Im + EA+ este inversabila daca kEA+k < 1. Dar ntotdeauna avem kEA+k kEk kA+k. Prin urmare, daca (3.134) are loc, atunci A i A sunt echivalente (la stnga), deci A rezulta monica o data cu A. n cazul

m n scriem A = A(In + A+E) i raionam similar. _ Propoziia 3.5 arata ca sistemele normale (3.84) i (3.118) 24 sunt mult mai rau condiionate dect sistemul dat (3.127) i explica de ce determinarea soluiei x. prin rezolvarea acestor sisteme este ntotdeauna contraindicata din punct de vedere numeric. Propoziia 3.6 arata ca soluia x. este robusta, i.e. continua sa fie bine definita chiar daca matricea A a sistemului (3.127) sufera perturbaii E relativ importante. Conform relaiei (3.134), aceste perturbaii sunt strict limitate n norma numai de (A). Pentru orientare, daca (A) = 103, atunci (G) = 106, deci la rezolvarea n simpla precizie (i.e. cu t = 7 cifre zecimale semnificative) a sistemului normal se pierd aproape toate cifrele semnificative. Pe de alta parte, daca kAk 1, atunci perturbaiile admisibile n A sunt numai de ordinul kEk < 10-3. Concluziile obinute mai sus subliniaza importana deosebita a numarului de condiionare (A) pentru caracterizarea din punct de vedere numeric a problemei (3.127). n continuare vom preciza aceste concluzii, efectund analiza cantitativa a sensibilitaii (locale) a soluiei x. n raport cu perturbaiile datelor. n consecina, vom considera sistemul perturbat (A + E)x = b + f, (3.135) n care perturbaiile E i f sunt relativ mici n raport cu nivelul maxim admisibil, e.g. avem kEk oAkAk, kfk obkbk, (3.136) unde tipic oA i ob sunt de acelai ordin de marime , n orice caz, oA < -1(A). Notnd cu x. soluia n sens CMMP a sistemului perturbat (3.136), problema de analiza a sensibilitaii consta pe scurt n a evalua diferena _x = x. - x..
24A

caror matrice este evident G = ATA, respectiv G = AAT .

180 CAPITOLUL 3. PROBLEMA CELOR MAI MICI P ATRATE _ _ _ _ _ _ _ __> b r. = b2 b1 = Ax. _ Fig. 3.8: este unghiul dintre vectorul b i subspaiul ImA

3.7.2 Sensibilitatea pseudosoluiei

Consideram sistemul (3.127) n care presupunem ca A Rmn este monica, iar AT b 6= 0. Teorema 3.5 Sensibilitatea relativa a pseudosoluiei x. 6= 0 a sistemului (3.127) n raport cu perturbaiile (3.136) poate fi evaluata acoperitor prin kx. - x.k kx.k (2(A)tg + (A))oA + (A) cos ob, (3.137) unde are semnificaia din figura 3.8. Demonstraie. Conform teoremei 3.5, pseudosoluia x. = x. + _x a sistemului perturbat (3.135) satisface relaia (AT + ET )(A + E)(x. + _x) = (AT + ET )(b + f). Desfacnd parantezele i innd seama ca ATAx. = AT b, obinem (ATE + ETA)x. + (ATA)_x = ET b + AT f + . . . , unde +. . . indica termeni neglijabili n prima aproximaie, ca produs a doua cantit ai mici. Prin urmare putem scrie _x = (ATA)-1ET (b - Ax.) - A+Ex. + A+f, (3.138) unde evident ATA = G este gramianul lui A, iar b - Ax. = r. este reziduul de norma minima. Evalund n norma ambii membri ai relaiei (3.138), gasim

k_xk kG-1k kEk kr.k + kA+k kEk kx.k + kA+k kfk, de unde, innd seama de relaiile (3.133) i (3.136), rezulta imediat k_xk kx.k _kA+k2kAk2 kr.k kAk kx.k + kA+k kAk_oA + kA+k kAk kbk kAk kx.k ob. n sfrt, avem b1 = Ax., deci kb1k kAk kx.k, iar din figura 3.8 se vede ca kr.k kb1k = tg, kbk kb1k = 1 cos . 3.7. CONDI IONAREA PROBLEMELOR CMMP 181 Demonstraia este terminata. _ Observaia 3.7 Putem obine uor o evaluare mai fina dect (3.137), innd seama ca n (3.138) perturbaiile E i f acioneaza difereniat. n acest scop scriem E = E1 + E2, unde E = PE, = 1 : 2, sunt proieciile (coloanelor) lui E pe subspaiile S i respectiv S. Avem A+E = A+E1 (deoarece A+P2 = = A+(I - AA+) = 0) precum i ET r. = ET 2 r. (deoarece r. = P2b iar P2 este proiector ortogonal, i.e. P2 2 = P2 i PT 2 = P2). n mod similar avem f = f1 + f2, unde f = Pf, = 1 : 2, iar A+f = A+f1. Prin urmare, relaia (3.138) poate fi scrisa sub forma echivalenta, dar mai precisa _x = G-1ET 2 r. - A+E1x. + A+f1, (3.139) unde E1, E2 i f1 apar acum ca perturbaii independente, iar f2 a disparut. Prin urmare, daca n locul relaiei (3.136) consideram ca pentru = 1 : 2 avem kPEk oA kAk, kPfk ob kbk, (3.140) atunci concluzia teoremei este kx. - x.k kx.k (A)_oA 1+ ob
1

cos _+ 2(A) tg oA 2 . (3.141) Mai departe vom utiliza relaiile (3.137) i (3.141) sub forma relativ mai simpla kx. - x.k kx.k o1(A) + o22(A)tg, (3.142) unde, n acord cu (3.140), o, = 1 : 2, reprezinta estimari (n norma spectrala) ale perturbaiilor datelor A i b la nivelul subspaiilor S i S. _ n esena, relaia (3.142) arata ca, din punctul de vedere al sensibilitaii pseudosolut iei x., exista doua clase distincte de probleme CMMP, avnd caracteristici numerice net diferite. Prima clasa conine problemele CMMP aproape compatibile, la care reziduul r. este mic n norma faa de membrul drept b, deci 0. n acest caz, al doilea termen din (3.142) este neglijabil, deci practic sensibilitatea locala a pseudosoluiei x. este proporionala cu numarul de condiionare (A) al lui A. n particular, daca m = n, atunci avem exact r. = 0 i = 0, iar (3.142) se reduce la relaia (2.47)

stabilita n seciunea 2.7. Concluziile de acolo se aplica evident i aici. A doua clasa de probleme CMMP corespunde sistemelor (3.127) cu reziduu de norma minima r. mare n norma faa de membrul drept b 25. n acest caz al doilea termen din (3.142) este evident dominant, deci practic sensibilitatea locala a pseudosoluiei x. este proporionala cu patratul numarului de condiionare (A). Aceste probleme, specific de tip CMMP, sunt considerabil mai dificile din punct de vedere numeric dect cele din prima clasa i necesita luarea unor masuri speciale de precauie (vezi seciunea urmatoare).
situaie poate fi uor detectata n practica calculnd kbk i = kr.k, vezi comentariile la algoritmul 3.8. Subliniem ca n acest caz sensibilitatea pseudosoluiei x. depinde nu numai de matricea A a sistemului (3.127) ci i de membrul drept b (prin intermediul lui ).
25Aceasta

182 CAPITOLUL 3. PROBLEMA CELOR MAI MICI P ATRATE n orice caz, relaia (3.142) subliniaza ca elementul determinant n stabilirea sensibilitaii pseudosoluiei este numarul de condiionare (A), de aceea n practica se recomanda insistent evaluarea lui (A) n cursul procesului de calcul. Desigur, daca am efectuat triangularizarea ortogonala QTA = R a lui A, atunci, beneficiind de invariana ortogonala a normei spectrale, avem (A) = (R), (3.143) deci (A) poate fi estimat extrem de simplu, utiliznd estimatorul de condiie pentru matrice triunghiulare descris n seciunea 2.7. Acelai rezultat poate fi obinut aplicnd procedura de triangularizare ortogonala cu pivotarea coloanelor, descrisa n seciunea 3.9. n acest caz, o (sub)evaluare a lui (A) poate fi obinuta prin simpla inspecie, sub forma (A) = r11/rnn, unde rkk, k = 1 : n, sunt elementele diagonale ale factorului triunghiular R, dispuse pe diagonala n ordine descrescatoare. Pe de alta parte, reexaminnd formula fundamentala (3.142), este util sa reinem ca influena perturbaiilor E i f asupra pseudosoluiei x. depinde de localizarea acestora n raport cu subspaiile S i S. De exemplu, daca ImE ImA, atunci evident E2 = P2E = 0, deci sensibilitatea lui x. este dictata de (A) (iar nu de 2(A)), chiar daca reziduul r. este important. n unele aplicaii, aceste circumstane pot fi realizate printr-o filtrare prealabila adecvata a datelor de intrare, dar discutarea acestor tehnici depaete scopurile expunerii de faa. n alta ordine de idei, este evident ca perturbaiile inerente datorate erorilor de rotunjire acioneaza n general aleator i n orice caz nedifereniat n raport cu S i S, astfel nct de fapt dependena de 2(A) nu poate fi niciodata eliminata complet n situaiile practice, indiferent de masurile de precauie luate. n rezumat, sensibilitatea pseudosoluiei este determinata de condiionarea matricei A precum i de clasa a problemei CMMP considerate. De asemenea, ea depinde de tipul structural al perturbaiilor considerate.

3.7.3 Sensibilitatea soluiei normale

Consideram sistemul (3.127) n care presupunem ca matricea A Rmn este epica, iar b 6= 0. Teorema 3.6 Sensibilitatea relativa a soluiei normale x. 6= 0 a sistemului (3.127) poate fi evaluata acoperitor prin kx. - x.k kx.k o1(A), unde o1 = 2oA + ob. (3.144) Demonstraie. Procedam ca n demonstraia teoremei 3.5. Conform cu teorema 3.4, soluia normala x. = x. + _x a sistemului perturbat (3.135) satisface relaiile (A + E)(x. + _x) = b + f, x. + _x = (AT + ET )(y. + _y), unde Ax. = b i x. = AT y.. Prin urmare, n prima aproximaie avem A_x + Ex. = f, _x = AT_y + ET y.. 3.8. STABILITATEA ALGORITMILOR DE TRIANGULARIZARE 183 Eliminnd _y ntre aceste relaii i notnd A+ = AT (AAT )-1, obinem _x = (In - A+A)ET y. - A+Ex. + A+f, (3.145) unde y. = (AAT )-1b = (A+)T x., iar n paranteza din membrul drept recunoatem proiectorul ortogonal P2 = In -A+A pe subspaiul N = KerA. Deoarece P2 este o matrice simetrica cu valorile proprii 0 i 1, avem kP2k = 1. n consecina, evalund n norma ambii membri ai relaiei (3.145), gasim 26 k_xk kEk kA+k kx.k + kA+k kEk kx.k + kA+k kfk,

de unde, innd seama de (3.136), rezulta (3.145). _ Observaia 3.8 Considernd proieciile E = EP, = 1 : 2, ale liniilor matricei E pe subspaiile N i N i procednd ca n observaia 3.7, putem i aici scrie mai precis _x = (In - A+A)ET 2 y. - A+E1x. + A+f. (3.146) Avnd nsa n vedere structura extrem de simpla a relaiei (3.145), utilitatea practic a a acestei precizari este aici limitata. _ n esena, relaia (3.144) spune ca sensibilitatea locala a soluiei normale x. este proporionala cu numarul de condiionare (A) al matricei A. Avnd n vedere ca, n ipoteza teoremei 3.6, sistemele subdeterminate sunt ntotdeauna compatibile, relaia (3.144) poate fi considerata caz particular al relaiei (3.137), n care r. = 0, deci = 0. Observam totui ca demonstraiile celor doua teoreme se bazeaza pe relaii diferite, iar coeficientul 2 din (3.144) nu apare n (3.137). Prin urmare, apelul la (3.137) ofera mai curnd o confirmare intuitiva, dect o justificare ferma a relaiei (3.144). n rest, implicaiile practice ale relaiei (3.144) sunt similare cu cele cunoscute din seciunea 2.7. n rezumat, sensibilitatea soluiei normale este dictata numai de condiionarea matricei A. n acest sens, problema rezolvarii sistemelor subdeterminate este relativ simpla.

3.8 Stabilitatea numerica a algoritmilor de triangularizare ortogonala

n aceasta seciune oferim cteva informaii de baza privind stabilitatea numerica a algoritmilor de calcul prezentai anterior n acest capitol. De asemenea, sprijinii pe analiza sensibilitaii problemelor de calcul din seciunea precedenta, facem cteva consideraii privind acurateea soluiilor calculate i descriem o procedura de rafinare iterativa a acestor soluii.
26Amintim

ca, n norma spectrala avem ntotdeauna kAk = kAT k.

184 CAPITOLUL 3. PROBLEMA CELOR MAI MICI P ATRATE

3.8.1 Stabilitatea numerica a algoritmilor fundamentali

n general, analiza stabilitaii numerice a algoritmilor de calcul din acest capitol nu prezinta dificultai de esena, ci numai obstacole pur tehnice. n principiu, ncepnd cu algoritmii de baza 3.1-3.4, ntregul proces de calcul se reduce la o succesiune determinata de operaii aritmetice elementare, inclusiv extrageri de radical, pentru care erorile de rotunjire sunt de ordinul M 10-t, unde t este precizia de lucru, adica numarul de cifre zecimale semnificative, vezi capitolul 0. Prin urmare, efectul (cumulat al) acestor erori asupra rezultatelor obinute n urma unui proces de calcul liniar poate fi apreciat utiliznd parametrul generic cm = cmM, (3.147) unde m reprezinta numarul de operaii efectuate, iar c este o constanta de ordinul unitaii, n general diferita de la caz la caz. Aici este esenial sa subliniem ca ntreaga tehnica de analiza inversa a erorilor consta n a converti acest efect direct al erorilor de rotunjire asupra soluiei calculate n perturbaii echivalente la nivelul datelor. n consecina, algoritmul analizat este (invers) numeric stabil daca soluia calculata coincide cu soluia exacta a problemei de calcul cu datele puin perturbate 27. Rezultatele analizei pot fi sintetizate astfel. (Pentru demonstraii i rezultate adiionale, vezi [IX].) 1.. Fie x Rm un vector dat. Vectorul Householder u, calculat de procedura RFG, este apropiat de vectorul Householder exact u, i.e. u = u + _u, unde k_uk cm. (3.148) Subliniem ca acest rezultat se datoreaza exclusiv alegerii judicioase a semnului lui de la pasul 2.2.1. 2.. Fie x Rm un vector dat, U1 un reflector definit de vectorul Householder u, iar y = U1x. Vectorul transformat y, calculat de procedura RF, utiliznd un vector Householder aproximativ u de tip (3.148) satisface relaia y = (U1 + _U)x, unde k_UkF cm. (3.149) n continuare, utiliznd rezultatele fundamentale 1. i 2., se poate demonstra

afirmaia urmatoare. (Vezi schema de calcul MQR din seciunea 3.4.) 3. Fie A Rmn o matrice data, QT = Us . . .U2U1 o secvena de s reflectori definii de vectorii Householder uk, k = 1 : s, iar B = QTA. Matricea transformata B, calculata utiliznd schema de calcul 1. B = A 2. Pentru k = 1 : s 1. B UkB cu vectori Householder aproximativi uk de tip (3.148), satisface relaia B = QT (A + _A), unde k_AkF scmkAkF . (3.150)
tot mai departe noiunea de stabilitate numerica a unui algoritm concret va fi n eleasa n acest sens, deci este implicit legata de o anume problema de calcul precizata.
27Peste

3.8. STABILITATEA ALGORITMILOR DE TRIANGULARIZARE 185 Pe scurt, algoritmul de aplicare a unei secvene de reflectori este (invers) numeric stabil, iar perturbaia echivalenta relativa la nivelul matricei date A este oA = scm, (3.151) unde s este lungimea secvenei, m este ordinul reflectorilor iar c este o constanta de ordinul unitaii. Pe baza proprietaii generale 3. se poate demonstra ca 4. Algoritmul de triangularizare ortogonala QR este numeric stabil. Mai precis, daca R este matricea superior triunghiulara calculata (n cazul m n), atunci exista o matrice ortogonala Q astfel nct QT (A + _A) = R, unde k_AkF ncmkAkF . (3.152) O afirmaie similara este valabila relativ la algoritmul LQ de triangularizare ortogonal a la dreapta precum i la toi algoritmii de calcul derivai (cum ar fi GQR, MQR, SQR etc.). Subliniem ca, n ultima instana, toate procedurile menionate sunt de tip 3., unde parametrii s = min(m, n) i m iau valori adecvate. n consecina 5. Procedurile SQR (respectiv CMMP) i SLQ, care calculeaza pseudosoluia respectiv soluia normala x. a sistemului Ax = b, sunt numeric stabile. Perturbaiile echivalente relative la nivelul datelor sunt de ordinul (SQR) oA,b = ncm, (m n), (3.153) i respectiv (SLQ) oA,b = mcn, (m n). (3.154) Rezultate asemanatoare sunt valabile pentru procedurile de calcul ce utilizeaza reflectori bloc, respectiv rotaii 28.

3.8.2 Acurateea soluiilor calculate

Vom combina acum rezultatele privind sensibilitatea soluiilor de tip CMMP, stabilite n seciunea 3.7, cu estimarile perturbaiilor echivalente la nivelul datelor, introduse de procedurile de calcul analizate mai sus. n acest fel vom obine evaluari a priori ale acurateei soluiilor calculate, i.e. ale abaterilor relative ale acestor soluii faa de soluiile exacte. Consideram problema calculului pseudosoluiei x. a sistemului (3.127), n care matricea A este monica. Daca rezolvam aceasta problema utiliznd procedura SQR, bazata pe algoritmul de triangularizare ortogonala QR, atunci n virtutea stabilitaii numerice inverse a acestei proceduri, pseudosoluia calculata x. coincide cu soluia exacta a problemei (3.127) cu datele perturbate n acord cu (3.153). Aplicnd teorema 3.5 (vezi relaiile (3.137)) conchidem ca kx. - x.k kx.k o1(A) + o22(A)tg, (3.155)
cazul secvenelor de rotaii disjuncte, estimarea (3.151) este independenta de lungimea secvenei [IX].
28n

186 CAPITOLUL 3. PROBLEMA CELOR MAI MICI P ATRATE unde ( o1 not = oA + ob cos = ncm(1 + 1 cos ), o2 not = oAtg = ncmtg.

(3.156) Relaia (3.155) arata ca n final acurateea soluiei calculate x. depinde att de condiionarea (A) i clasa ale problemei CMMP considerate, ct i de nivelul erorilor o, = 1 : 2, introduse de algoritmul folosit pentru rezolvarea ei. Conform relaiilor (3.155) i (3.136), acest nivel este determinat de dimensiunile m, n ale problemei precumi de precizia de lucru M coninuta implicit de parametrul generic cm (vezi (3.147)). n general, evaluarile de tip (3.155), (3.156) sunt extrem de acoperitoare, dar totodata au marele merit de a sublinia ca n situaiile dificile (care, dupa cum am vazut, pot fi detectate relativ uor n practica) sunt necesare aciuni suplimentare (viznd e.g. lucrul n dubla precizie, rafinarea iterativa a soluiei calculate x. etc.), chiar daca aceasta se obine utiliznd un algoritm numeric stabil cum este SQR. Consideram acum problema, relativ mai simpla, a calculului soluiei normale x. a sistemului (3.127), n care matricea A este epica. Conform relaiilor (3.154) (3.144), soluia normala calculata x. satisface o relaie de forma kx. - x.k kx.k o1(A), (3.157) unde o1
not

= 2oA + ob = mcm. (3.158) Menionam ca, n practica, acurateea soluiei calculaten acest mod se dovedete de cele mai multe ori satisfacatoare.

3.8.3 Scalarea problemei CMMP


Consideram sistemul liniar (3.127), n care matricea A este monica. La fel ca n seciunea 2.8, scalarea acestui sistem consta n nlocuirea sa cu sistemul echivalent D1AD2x = D1b, (3.159) n care D1 i D2 sunt matrice inversabile (n particular diagonale sau triunghiulare) alese n mod adecvat. Matricea D2 realizeaza scalarea coloanelor lui A, iar introducerea ei se reduce la schimbarea de variabila x = D2x. Prin urmare D2 nu altereaza pseudosoluia n sens CMMP a sistemului considerat, mai precis daca x. este pseudosoluia sistemului scalat, atunci pseudosoluia sistemului iniial poate fi recuperata utiliznd relaia x. = D2x.. Din contra, matricea D1, care realizeaza scalarea liniilor lui A, atrage dupa sine modificarea normei din Rm n raport cu care se formuleaza problema CMMP i deci a pseudosoluiei corespunzatoare. ntr-adevar, notnd cu r = D1b-D1Ax reziduul sistemului scalat, avem r = D1r, deci krk2 = rT Sr not = krk2 S, S = DT 1 D1, 3.8. STABILITATEA ALGORITMILOR DE TRIANGULARIZARE 187 n care k kS este noua norma determinata de alegerea matricei D1. Problema CMMP n raport cu norma k kS se numete problema CMMP ponderata, iar rezolvarea ei se face aplicnd sistemului scalat tehnicile de calcul expuse anterior. Subliniem ca pseudosoluia x. astfel obinuta nu coincide cu pseudosoluia x. a problemei CMMP n norma standard (corespunzatoare alegerii D1 = Im). n consecina, scalarea pe linii n problemele CMMP la care se dorete calculul pseudosoluiei x. este interzisa. Pe de alta parte, n multe probleme, alegerea lui D1 este impusa de tipul zgomotelor de masura asociate problemei CMMP (vezi exemplul 3.2), iar n acest context matricea S are o semnificaie statistica precisa. n problemele care privesc rezolvarea n sens CMMP a sistemelor subdeterminate Ax = b, n care matricea A este epica, situaia se inverseaza. Matricea D1 realizeaza o simpla scalare (pe linii) a sistemului de restricii Ax = b i ca atare este permisa ntotdeauna. Din contra, matricea D2 modifica norma din Rn considerata la definirea soluiei normale, mai precis kxk2 = xT T x not = kxk2 T , T = D-T

2 D-1 2,

de aceea scalarea pe coloane a sistemelor subdeterminate la care se dorete calculul soluiei normale n raport cu norma standard este interzisa. Din punctul de vedere al calculului numeric, alegerea matricelor de scalare D1, D2 urmarete echilibrarea sistemului n sensul uniformizarii nivelului de eroare n elementele matricei A. n acest scop se recomanda evaluarea erorilor iniiale E = [oij ] care afecteaza elementele lui A precum i determinarea matricelor D1, D2 astfel nct elementele matricei scalate D1ED2 sa aiba acelai ordin de marime o. (Daca matricea A este cunoscuta exact, atunci se poate lua oij = Maij .) Pentru detalii vezi [XIII].

3.8.4 Rafinarea iterativa a soluiei CMMP

Consideram din nou problema CMMP (3.127), n care matricea A este monica. Pentru simplitate, n continuare omitem indicele superior ., notnd soluiile n sens CMMP x. i x. cu x i respectiv x. Presupunem ca am obinut soluia aproximativa x, utiliznd procedura CMMP, bazata pe algoritmul de triangularizare ortogonala A QTA = _ R1 0 _, QT = Un . . .U2U1. (3.160) n general, problema rafinarii iterative a soluiei aproximative x consta n construct ia recurenta a unui r xk, k = 0, 1, 2, . . ., convergent (n precizia de lucru) catre soluia exacta x a problemei de calcul considerate. n cazul m = n, tim din seciunea 2.8 ca un pas al procesului de rafinare se desfaoara conform urmatoarei scheme de principiu. (Pentru simplitate, omitem indicele de iterare k.) % Se da x. Se determina aproximaia urmatoare x+. 1. Se calculeaza reziduul r = b - Ax 2. Se determina corecia _x rezolvnd sistemul A_x = r 3. Se actualizeaza aproximaia x x+ = x + _x 188 CAPITOLUL 3. PROBLEMA CELOR MAI MICI P ATRATE n cazul m > n, schema de mai sus este, n principiu, aplicabila ca atare sistemului (3.127), dar ea se dovedete eficienta numai daca acest sistem este aproape compatibil, i.e. 0 (vezi discuia din seciunea 3.7.2). n caz contrar, influena reziduului asupra soluiei este determinanta (n acord cu relaiile (3.137) i (3.138)), deci rafinarea iterativa trebuie sa se faca corectnd simultan evoluia ambelor marimi. Altfel spus, n problemele specific CMMP, cu reziduu mare, schema de corecie prezentata mai sus trebuie aplicata nu sistemului dat (3.127), ci sistemului extins (3.83). n consecina, presupunnd data o soluie aproximativa (x, r) a sistemului extins, n primul rnd vom calcula reziduul corespunzator _s t_=_b 0 _- _ Im A AT 0 __ r x _, (3.161) iar apoi vom determina coreciile _r i _x rezolvnd sistemul _ Im A AT 0 __ _r _x _= _ s t _. (3.162) Desigur, n acest scop vom folosi triangularizarea ortogonala (3.160) a matricei A, deja calculata n urma aplicarii procedurii CMMP, iar soluia (_r,_x) va fi obinuta n locul membrului drept (s, t). Pentru a vedea cum este posibil acest lucru, consideram prima ecuaie (3.162), i.e. _r + A_x = s, pe care o premultiplicam cu QT , vezi (3.160). Notnd QT_r = z, efectund pe loc n s transformarea s QT s (3.163) i utiliznd pentru vectorii z i s partiii adecvate, putem scrie

_ z1 z2 _+ _ R1 0 __x = _ s1 s2 _, de unde deducem imediat R1_x = s1 - z1, z2 = s2. (3.164) n continuare, pentru a determina z1 i _x, consideram a doua ecuaie (3.148), i.e. AT_r = t. Aici avem _r = Qz, iar din (3.160) rezulta ATQ = [RT 1 0], deci RT 1 z1 = t. (3.165) Acum este clar ca dezideratele formulate mai sus relativ la rezolvarea sistemului extins (3.162) pot fi realizate procednd n ordinea (3.163), (3.165), (3.164), dupa care _r rezulta utiliznd relaia _r = Q_ z1 z2 _. (3.166) n rezumat, schema de calcul pentru un pas al procesului de rafinare iterativa aplicat sistemului extins (3.83) este urmatoarea. 3.9. DESCOMPUNEREA ORTOGONALA COMPLETA 189 % Se dau (r, x). Se determina aproximaia urmatoare (r, x) (r+, x+) = (r, x) + (_r,_x) . % se calculeaza reziduul (3.161) 1. s = (b - Ax) - r 2. t = -AT r % se rezolva sistemul extins (3.162) 3. s QT s 4. z1 = R-T t 5. s1 s1 - z1 6. t _x = R-1s1 7. s1 = z1 8. s _r = Qs % se actualizeaza aproximaia 9. r r+ = r + _r 10. x x+ = x + _x Implementarea schemei se face de regula lucrnd n precizie mixta. Reziduul (s, t) se calculeaza n precizie dubla, apoi se rotunjete la precizia de lucru n care se fac restul calculelor. Condiia de oprire a algoritmului este k_xk, k_rk cM, sau efectuarea unui numar maxim de iteraii. Practic, schema e utila atunci cnd problema nu este prea rau condiionata. Pentru amanunte consultai [?].

3.9 Descompunerea ortogonala completa

Procedurile de triangularizare ortogonala prezentate n seciunile anterioare constituie instrumente eficiente i numeric stabile de rezolvare a problemelor de tip CMMP cu matrice A Cmn de rang maximal, r = s. (Peste tot mai departe vom nota r = rangA, iar s va avea semnificaia obinuita s = min(m, n).) n aceasta seciune vom considera cazul general r s i vom descrie un set de proceduri (directe), capabile sa determine rangul efectiv al matricei A n prezena erorilor de rotunjire i sa utilizeze aceasta informaie. Subliniem ca, n general, determinarea rangului unei matrice A cu mijloace de calcul numeric presupune luarea unei decizii inerent afectate de riscuri privind structura lui A. Totodata, aceasta decizie influeneaza decisiv i ireversibil ntregul proces de calcul ulterior. Avnd n vedere reducerea riscurile menionate, actualmente se considera ca cel mai sigur instrument de determinare a rangului este descompunerea valorilor singulare (DVS), care va fi prezentata pe larg n capitolul 5. (Construcia acestei descompuneri are la baza tehnici iterative de determinare a valorilor proprii, care vor fi dezvoltate n capitolul urmator.) Din aceasta perspectiva, procedura (directa) de triangularizare ortogonala completa prezentata n continuare apare ca fiind relativ elementara i ca atare se aplica n situaiile n care simplitatea

primeaza iar deciziile de rang nu sunt critice. n esena, procedura se desfaoara n trei etape. n prima etapa are loc triangularizarea ortogonala a matricei date A, utiliznd o strategie adecvata de pivotare (permutare) a coloanelor, cu scopul de a evidenia 190 CAPITOLUL 3. PROBLEMA CELOR MAI MICI P ATRATE n colul dreapta-jos al factorului triunghiular R partea neglijabila, corespunzatoare eventualului defect de rang. n a doua etapa are loc determinarea rangului prin trunchierea lui R, adica prin identificarea i eliminarea parii sale neglijabile. Desigur, ntr-un calcul ideal cu precizie infinita, aceasta parte se anuleaza exact, dar n calculul practic acest lucru nu se realizeaza niciodata datorita (i) erorilor iniiale cu care elementele matricei A au fost calculate sau determinate experimental i reprezentate n calculator precum i (ii) erorilor de rotunjire comise pe parcursul procesului de calcul. Prin urmare, n realitate, este ntotdeauna necesara corectarea forata a rezultatului calculat R i tocmai acest lucru se face prin trunchierea menionata. Desigur, n acest scop este necesar un criteriu de decizie, care n principiu este formulat de utilizator n funcie de situaia concreta precum i de obiectivele urmarite prin calcul. Indicaii mai precise vor fi date la momentul potrivit. n a treia etapa (n anumite situaii, facultativa) matricea superior trapezoidala ramasa dupa trunchierea lui R este adusa la forma superior triunghiulara printr-o procedura de tip RQ (vezi seciunea 3.6.2). Trecem acum la descrierea succinta a etapelor procedurii de triangularizare complet a, dupa care vom prezenta cteva aplicaii ale acesteia n legatura cu problema generala CMMP.

3.9.1 Triangularizarea ortogonala cu pivotarea coloanelor

Teorema 3.7 Fie A Cmn. Exista o matrice unitara U = QH Cmm precum i o matrice de permutare _ astfel nct matricea QHA_ = R (3.167) este superior triunghiulara, iar pentru fiecare k = 1 : s sunt satisfacute condiiile |rkk|2
min(j,m)

Xi=k |rij |2, j = k + 1 : n. (3.168) n consecina, |r11| |r22| . . . |rss|, i.e. elementele diagonale ale matricei R sunt ordonate descrescator. Relaia (3.167) afirma ca matricele A i R sunt ortogonal echivalente, n particular au acelai rang. Prin urmare, daca A este de rang r s, atunci n mod necesar rkk = 0, k = r + 1 : s, deci n virtutea relaiilor (3.168) ultimele m- r linii ale lui R sunt nule. n consecina, Corolar 3.1 Dupa o permutare convenabila _ a coloanelor sale, orice matrice A Cmn de rang r este echivalenta (la stnga) cu o matrice superior trapezoidala, i.e. QHA_ = _ T 0 _, (3.169) unde T = R(1 : r, :), iar blocul lider T (:, 1 : r) este inversabil. n consecina, primele r coloane ale matricei A_ sunt independente. 3.9. DESCOMPUNEREA ORTOGONALA COMPLETA 191 Avnd n vedere ca situaia din corolar nu poate fi realizata exact, n continuare ne vom concentra atenia asupra condiiilor (3.168). Problema determinarii rangului va fi discutata ulterior. Demonstraia teoremei 3.7. Procedura de triangularizare ortogonala cu pivotare are s etape. Fie A1 = A. Vom determina matricea unitara QH = QH s . . .QH 2 QH 1 (3.170) procednd ca n seciunea 3.3 (vezi demonstraia teoremei 3.1), dar acionnd la fiecare etapa k = 1 : s asupra unei matrice Ak_k, cu coloanele permutate n scopul

satisfacerii condiiei (3.168). innd seama de invariana normei euclidienen raport cu transformarile unitare (3.170), aceasta nseamna ca la etapa k, n poziia pivot (adica n coloana k) trebuie sa se gaseasca acea coloana j k a tabloului curent Ak pentru care norma euclidiana a vectorului Ak(k : m, j) este maxima. Pe scurt, notnd (k) j = kAk(k : m, j)k, j = k : n, (3.171) strategia de pivotare a coloanelor este 1. Se determina cel mai mic jk astfel nct (k)
jk j

= maxj=k:n (k) 2. Daca jk 6= k 1. Ak(:, k) . Ak(:, jk). Dupa permutare, procedura de triangularizare continua ca de obicei, i.e. are loc generarea reflectorului QH k care anuleaza elementele subdiagonale din coloana k aplicarea sa coloanelor urmatoare. Astfel se obine tabloul transformat Ak+1 = QH k (Ak_k), (3.172) asupra caruia se va opera similar la etapa urmatoare. n final, matricea R = As+1 este superior triunghiulara i satisface (3.168). _ Avnd n vedere implementarea eficienta a procedurii descrise, inem seama de invariana normelor (3.171) n raport cu transformarile (3.172) i constatam ca ((k) j )2 = ((k+1) j )2 + |a(k+1) kj |2. (3.173) Prin urmare, calculul repetat i costisitor al normelor (3.171) poate fi evitat, utiliz nd n schimb relaiile de actualizare relativ simple 29 (k+1) j = (k) j vuuut1 - |a(k+1) kj | (k) j !2 . (3.174) ntregul proces de calcul se desfaoara pe loc n tabloul A conform urmatoarei scheme de principiu.
29Subliniem

ca dei scrierea (3.174) evita deparile superioare, totui utilizarea ei nu este lipsita de riscuri daca |a(k+1) kj | i (k) j au valori apropiate. n acest caz, pentru sigurana se recomanda recalcularea normelor (k+1) j , j = k + 1 : n, vezi [XIII, pag. 9.17].

192 CAPITOLUL 3. PROBLEMA CELOR MAI MICI P ATRATE QRP % Schema de triangularizare ortogonala cu pivotarea coloanelor % iniializarea normelor 1. Pentru j = 1 : n 1. j = kA(:, j)k 2. Pentru k = 1 : s % strategia de pivotare 1. Se determina cel mai mic jk a.. jk = maxj=k:n j 2. Daca jk 6= k 1. A(:, k) . A(:, jk) 2. jk . k % procedura de triangularizare ortogonala 3. Se determina QH k a.. (QH k A)ik = 0, i = k + 1 : m 4. A QH

kA

% actualizarea normelor 5. j jr1 - _|akj | j _2 , pentru j = k + 1 : n n ceea ce privete permutarile de coloane, ele pot fi memorate ntr-un vector astfel nct k = jk, k = 1 : s, la fel ca n procedurile de eliminare gaussiana din capitolul 2. Pentru a putea identifica direct poziia n tabloul iniial A a coloanelor matricei (permutate) A_, aici vom aplica o convenie de memorare diferita. Vectorul este iniializat cu indicii coloanelor lui A n ordinea naturala, iar coninutul sau este actualizat dupa fiecare permutare de coloane efectuata. Forma finala a procedurii de triangularizare se obine aplicnd algoritmul 3.5 la pai 2.3, 2.4 plasnd instruciunea 2.5 la locul potrivit. Algoritmul 3.11 (QRP) (Se da A Cmn. Se efectueaza triangularizarea ortogonala cu pivotarea coloanelor a matricei A utiliznd reflectori hermitici, i.e. QHA_ = R, vezi algoritmul 3.5. Permutarile de coloane se memoreaza n vectorul astfel nct daca n final k = j, atunci coloana k a lui A_ a fost coloana j a lui A.) 3.9. DESCOMPUNEREA ORTOGONALA COMPLETA 193 1. Pentru j = 1 : n % iniializarea normelor 1. j = kA(:, j)k 2. j = j 2. Pentru k = 1 : s 1. Se determina cel mai mic jk a.. jk = maxj=k:n j 2. Daca jk 6= k % pivotare 1. A(:, k) . A(:, jk) 2. jk . k 3. jk . k 3. k = 0 % triangularizare 4. Daca k < m atunci 1. = kA(k : m, k)k 2. Daca 6= 0 1. Daca akk 6= 0 atunci akk |akk| 2. aik uik = aik/, pentru i = k : m 3. k ukk = 1 + akk 4. Pentru j = k + 1 : n 1. = -(Pm i=k uikaij ) /k 2. aij aij + uik, pentru i = k : m % actualizarea normei 3. j jr1 - _|akj | j _2 5. akk = - Comentarii. Pe parcursul procesului de calcul, normele j se memoreaza n j , fiind suprascrise pe masura ce nu mai sunt necesare; pentru claritate, nu am mai indicat explicit acest lucru. Modul de apel al procedurii este [A, , ] = QRP(A). _ Daca matricea A este monica, atunci aplicaiile algoritmului 3.11 sunt similare cu aplicaiile algoritmului 3.5. n plus, dupa cum am menionatn seciunea anterioara, ordonarea coloanelor lui An acord cu (3.168) permite estimarea rapida (ca ordin de marime) a numarului de condiionare 30 (A) = |r11| / |rnn|. Daca matricea A este epica, atunci din nou n virtutea ordonarii (3.168), blocul lider R din (3.63) rezulta n mod necesar inversabil, deci construcia unor baze pentru subspaiile N = KerA i N = ImAH precum i determinarea unei soluii particulare a sistemului Ax = b se poate face aproape prin inspecie. De aceea, mai departe ne vom concentra atenia asupra cazului general n care matricea A nu este de rang maxim.

3.9.2 Determinarea rangului


Aplicam procedura QRP matricei date A i consideram matricea superior triunghiular a calculata QHA_ = R. (3.175)
30Tipic,

(A).

aceasta relaie furnizeaza o subevaluare de 23 ori mai mica dect valoarea adevarata

194 CAPITOLUL 3. PROBLEMA CELOR MAI MICI P ATRATE n cazul m n, R are structura R not = . R1 R12 0 R2 00 . . }r }n-r } m- n |{z} r |{z} n-r (3.176) n care elementele satisfac relaiile (3.168), blocul lider R1 este superior triunghiular inversabil, dar blocul R2 nu rezulta nul datorita erorilor de calcul inerente. Pentru a determina rangul r al matricei A, trebuie sa efectuam corect trunchierea factorului triunghiular R, punnd R2 = 0, (3.177) n acord cu (3.169), n care evident matricea superior trapezoidala ramasa este T = [R1 R12]. (3.178) n cazul m < n se procedeaza similar. Pe scurt, determinarea rangului r consta n a decide care este primul element neglijabil de pe diagonala lui R. Strategia recomandata n LINPACK [XIII] presupune scalarea prealabila a liniilor i coloanelor lui A astfel nct erorile la nivel de element sa fie de acelai ordin de marime o (vezi seciunea 3.8.3). n acest caz, prin definiie, rangul numeric (sau efectiv) al lui A este primul ntreg k 1 : s astfel nct |rk+1,k+1| o|r11|. (3.179) Mai departe, vom presupune mereu ca rangul numeric determinat n acord cu criteriul de decizie (3.179) coincide cu rangul adevarat r al lui A 31. Subliniem ca, n urma acestei trunchieri corecte, se recupereaza forma superior trapezoidala (3.169), iar numarul de condiionare al matricei A (de rang r s) poate fi estimat ca fiind (A) = |r11| |rrr| < o-1. (3.180) Relaia (3.169) are cteva aplicaii specifice extrem de importante. Notnd Q = Q(:, 1 : r) primele r coloane ale matricei unitare Q = Q1Q2 . . .Qs, din (3.169) obinem imediat factorizarea QR cu pivotarea coloanelor A_ = QT. (3.181) n virtutea structurii lui T , matricea Q constituie o baza ortogonala a subspat iului S = ImA, generat de primele r coloane ale matricei A_ sau, echivalent, de coloanele k, k = 1 : r, ale lui A (vezi comentariile de nceput la algoritmul 3.11). Altfel spus, o data cu determinarea rangului, n (3.181) a avut loc selecia
practica a acestei coincidene este condiionata de alegerea judicioasa a toleran ei o. (Valoarea o = 0 nu este interzisa, dar de obicei conduce la decizia r = s.) Pe de alta parte, gradul de sigurana al deciziei de rang poate fi nesatisfacator, mai ales daca modulele rkk scad uniform, fara sa nregistreze vreun salt semnificativ. n asemenea situa ii dificile se recomanda determinarea rangului pe baza descompunerii valorilor singulare, vezi capitolul 5.
31Realizarea

3.9. DESCOMPUNEREA ORTOGONALA COMPLETA 195 unui set de r coloane liniar independente ale matricei iniiale A, iar Q constituie versiunea lor ortogonalizata. n mod corespunzator, matricea Q = Q(:, r+1 : n)

constituie o baza ortogonala a subspaiului complementar S = KerAH. (Vom folosi sintaxa [Q,R, ] = FQRP(A) pentru apelul procedurii de calcul al factorizarii QR cu pivotarea coloanelor; implementarea este lasata cititorului, cu meniunea ca acumularea transformarilor ortogonale este identica cu aceea din algoritmul GQR.) Pe de alta parte, considernd gramianul G = AHA i innd seama de (3.181), n care matricea Q are coloanele ortogonale, deducem _TG_ = THT. (3.182) Aceasta relaie se numete factorizare Cholesky cu pivotare i afirma ca, dupa o permutare congruenta a liniilor i coloanelor sale, orice matrice hermitica pozitiv semidefinita G de rang r admite o factorizare Cholesky n care factorul superior trapezoidal T are structura (3.178) 32. n multe situaii constatarile de mai sus prezinta un interes intrinsec. Avnd n vedere abordarea problemei generale CMMP, descriem n continuare ultima faza a procedurii de triangularizare ortogonala completa.

3.9.3 Triangularizarea ortogonala completa

Corolar 3.2 Fie A Cmn, de rang r s. Exista doua matrice unitare U = QH Cmm i Z = V H Rnn precum i o matrice de permutare _ astfel nct matricea QHA_Z = S (3.183) are structura S = _ S 0 00_}r } m- r |{z} r |{z} n-r (3.184) n care blocul lider S Crr este superior triunghiular inversabil. Demonstraia este simpla. Consideram matricea superior trapezoidala T din (3.178) i o aducem la forma triunghiulara utiliznd transformari unitare la dreapta. Aceasta etapa se numete compresie i poate fi efectuata n multe feluri. De exemplu, aplicnd o procedura de tip RQ (vezi seciunea 3.6.2), obinem TZ = [S1 0], (3.185) n care S1 este superior triunghiulara iar Z = Zr . . .Z2Z1. (3.186) Acum relaiile (3.183) i (3.184) rezulta aplicnd Z la dreapta n (3.169) i innd seama de (3.185). Evident, matricea S not = S1 rezulta inversabila, transformarile
32Subliniem

ca aceasta factorizare poate fi calculata direct, aplicnd matricei G procedura CHOLDC din LINPACK [XIII].

196 CAPITOLUL 3. PROBLEMA CELOR MAI MICI P ATRATE unitare Q i Z au expresiile (3.168) i respectiv (3.186), iar _ este permutarea produsa de procedura QRP. _ Cu referire la o matrice superior trapezoidala oarecare A Cmn cu m < n, schema de triangularizare RQ este urmatoarea. TZRQ % Schema de compresie la dreapta, cazul m < n 1. Pentru k = m : -1 : 1 1. Se determina Zk a.. (AZk)kj = 0, j = m + 1 : n 2. A AZk Desigur, liniile lui A sunt parcurse n ordine inversa, ncepnd cu ultima, iar anularea elementelor are n vedere conservarea structurii preexistente de zerouri. n consecina, reflectorii Zk sunt de tipul celor din exemplul 3.5, dar aici vectorii Householder sunt notai vk, iar partea lor eseniala vkj , j = m+1 : n, este memorata pe poziiile elementelor anulate din liniile lui A, la fel ca n algoritmul 3.9. Procedura rezultata din combinarea acestor idei se redacteaza astfel. Algoritmul 3.12 (TZRQ) (Se da A Cmn superior trapezoidala cu m < n. Se efectueaza compresia la dreapta a matricei A utiliznd o procedura de tip RQ cu reflectori hermitici, i.e. A AZ = [R 0], unde Z = Zm . . .Z2Z1, iar R rezulta superior triunghiulara. Partea eseniala vkj , j = m + 1 : n, a vectorilor Householder se memoreaza pe poziiile corespunzatoare A(k,m + 1 : n) din tabloul A. La aplicarea ulterioara

a transformarilor se ine seama ca vkk = k, k = 1 : m.) 1. Pentru k = m : -1 : 1 1. k = 0 1. = _|akk|2 +Pn j=m+1 |akj |2_1/2 2. Daca 6= 0 1. Daca akk 6= 0 atunci akk |akk| 2. akj vkj = akj/, pentru j = k,m+ 1 : n 3. k vkk = 1 + akk 4. Pentru i = 1 : k - 1 1. = -_aikvkk +Pn j=m+1 aijvkj_/k 2. aij aij + vkj , pentru j = k,m+ 1 : n 5. akk = - Comentarii. n cazul real, algoritmul cere 2m2(n - m) operaii. Modul de apel este [A, ] = TZRQ(A). _ n sinteza ntregii expuneri de pna acum, procedura de triangularizare ortogonal a completa, corespunzatoare relaiilor (3.183) i (3.184), este urmatoarea. QRX % Procedura de triangularizare ortogonala completa a matricei A Cmn; o este o tolerana data, utilizata la determinarea rangului. % triangularizarea ortogonala cu pivotarea coloanelor 1. [A, , ] = QRP(A) 3.9. DESCOMPUNEREA ORTOGONALA COMPLETA 197 % trunchierea i determinarea rangului 2. k = 1 3. C^at timp k s i |akk| > o|a11| 1. k k + 1 4. r = k - 1 % compresia la dreapta 5. [A(1 : r, :), ] = TZRQ(A(1 : r, :)) Modul de apel este [r,A, , , ] = QRX(A, o). Subliniem ca toata informaia despre transformarile unitare Q i Z, generate la pai 1 i 5, este memorata (extrem de compact) n tabloul A.

3.9.4 Descompunerea ortogonala completa

Pentru a facilita expunerea, notam X = _Z i scriem relaiile (3.183) i (3.184) sub forma A = Q_ S 0 0 0 _XH. (3.187) Partiionnd Q i X conform cu S, obinem A = QSXH, (3.188) unde matricele Q = Q(:, 1 : r) i X = X(:, 1 : r) au coloanele ortogonale, iar S este superior triunghiulara inversabila de ordin r = rangA s. Relaia (3.188) constituie descompunerea ortogonala completa a matricei A Cmn i reprezinta, n cazul general r s = min(m, n), echivalentul factoriz arilor QR i LQ (sau RQ), specifice matricelor de rang maxim. Subliniem ca, dei descompunerea (3.188) este relativ elementara i are un evident caracter procedural, totui ea constituie un instrument preios de rezolvare a numeroase probleme de calcul, n general inabordabile prin metode clasice, de tip Cholesky sau GramSchmidt. n plus, performanele numerice ale algoritmilor bazai pe aceasta descompunere sunt apropiate de performanele algoritmilor similari, derivai pe baza descompunerii valorilor singulare din capitolul 5. Aplicaiile descompunerii ortogonale complete sunt extrem de variate (vezi problemele 3.613.63, precum i capitolul 5). Ne vom mulumi aici sa menionam ca, la fel ca n seciunile 3.4 i 3.6.2, matricele Q i Q = Q(:, r + 1 : m) constituie baze ortogonale pentru subspaiile descompunerii Cm = ImA . KerAH, iar matricele X i X = X(:, r + 1 : n) joaca un rol similar relativ la descompunerea Cn = ImAH . KerA. Vom insista mai mult numai asupra problemei generale

CMMP, care constituie pentru noi un subiect inedit.

3.9.5 Problema generala CMMP

Consideram sistemul liniar Ax = b, n care A Cmn este o matrice data, nu neaparat de rang maxim, iar b Cm este un vector arbitrar. Problema generala 198 CAPITOLUL 3. PROBLEMA CELOR MAI MICI P ATRATE CMMP, pe scurt CMMPX, consta n determinarea pseudosoluiei normale a sistemului Ax = b, i.e. a unui vector x. Cn astfel nct kx.k = min xX_ kxk, (3.189) unde X. este mulimea pseudosoluiilor cu proprietatea (3.77). Teorema urmatoare arata ca problema CMMPX este ntotdeauna bine formulata. Teorema 3.8 Oricare ar fi vectorul b Cm, problema CMMPX are o soluie unica x. Cn. Pseudosoluia normala a sistemului Ax = b poate fi scrisa sub forma x. = A+b, (3.190) unde, prin definiie, matricea A+ Cnm este pseudoinversa normala (sau MoorePenrose) a lui A. Demonstraie. Conform parii a) a teoremei 3.3, sistemul Ax = b are ntotdeauna pseudosoluii care satisfac sistemul Ax = b1, unde b1 S = ImA, vezi (3.82). Conform parii a) a teoremei 3.4, acest sistem are ntotdeauna o soluie normala unica x. N = ImAH. Altfel spus, restricia lui A la N, vazuta ca aplicaie liniara A de la N la S este inversabila. Inversa A-1 : S N, prelungita cu 0 pe S, constituie pseudoinversa A+ a lui A. _ Pseudosoluia normala x. a sistemului Ax = b, poate fi determinata utiliznd informaia furnizata de procedura de triangularizare ortogonala completa QHA_Z = _ S 0 0 0 _, (3.191) n care matricele Q i _Z sunt unitare, iar S este superior triunghiulara inversabila de ordin r = rangA. Aplicnd transformarea QH ambilor membri ai sistemului notnd QHb = _ d d _, x = _Z _ u u _, (3.192) obinem sistemul ortogonal echivalent _ S 0 0 0 __ u u _ = _ d d _. (3.193) La fel ca n seciunea 3.5.1, pentru a determina pseudosoluiile consideram reziduul QHr = _ d - Su d _, (3.194) n care matricea Q este unitara, deci minimul normei krk = kQHrk se atinge pentru Su. = d. n continuare, la fel ca n seciunea 3.6.3, din (3.192), n care matricea _Z este unitara, rezulta u. = 0. Prin urmare, pseudosoluia normala a sistemului Ax = b este unic determinata prin relaia x. = _Z _ (S)-1d 0 _, (3.195) 3.10. RUTINE LAPACK I MATLAB 199 sau x. = _Z _ (S)-1 0 0 0 _QHb, (3.196) din care expresia pseudoinversei A+ este evidenta. Exploatnd forma factorizata a transformarilor unitare QH i Z, schema de calcul al pseudosoluiei normale se stabilete imediat. SQRX % Calculul pseudosoluiei normale x = A+b 1. Pentru k = 1 : s 1. b = QH kb

2. Se rezolva sistemul triunghiular Sx(1 : r) = b(1 : r) % r = rangA 3. x(r + 1 : n) = 0 4. Pentru k = 1 : r x Zkx 5. x _x Detalierea procedurii de permutare, necesare la pasul 5 pentru plasarea componentelor lui x pe poziiile naturale, precum i completarea schemei SQRXn scopul obinerii reziduului de norma minima r. = b - Ax. sau a vectorului de cea mai buna aproximaie b. = Ax. sunt propuse cititorului ca exerciii.

3.10 Rutine LAPACK i MATLAB

Primele implementari profesionale i de larga circulaie ale procedurilor de triangularizare ortogonala au fost rutinele xQRDC i xQRSL din LINPACK, care corespund (ca organizare i tip de reflectori) procedurilor QRP (algoritmul 3.11) i CMMP din seciunile 3.9 , respectiv, 3.5. n LAPACK procedurile de calcul sunt mai diversificate. Pentru fiecare dintre cele 4 scheme de triangularizare standard zz = (QR, QL, LQ sau RQ) 33 exista cte trei rutine de calcul, care efectueaza triangularizarea propriu-zisa, acumularea i aplicarea transformarilor; numele rutinelor se obin adaugnd literele F, G i respectiv M la combinaia zz. Rutinele opereaza cu matrice de forma generala (GE), unitare sau ortogonale (yy = UN, OR). De exemplu, rutinele din clasa QR se numesc xGEQRF, xyyGQR, xyyMQR i corespund versiunilor la nivel de bloc ale procedurilor CQR, GCQR, respectivMCQR din seciunile 3.3 i 3.4. (Amintim can LAPACK se opereaza cu reflectorin scrierea Q1 = I - uuH, vezi seciunea 3.2.) Numele celorlalte rutine se formeaza analog. Pentru calculul descompunerii ortogonale complete din seciunea 3.9 se utilizeaza rutinele xGEQPF i xTZRQF, care corespund schemelor QRP, respectiv TZRQ din text. Rezolvarea problemelor de tip CMMP de rang maxim, relativ la sistemele Ax = b sau AHx = b se efectueaza cu driverul xGELS, iar pentru rezolvarea problemei generale CMMP se utilizeaza driverul expert xGELSX. (Primul reunete versiunile bloc ale schemelor SQR i SLQ din seciunile 3.5 i 3.6, iar al doilea corespunde schemei SQRX din seciunea 3.9.) Un al treilea driver (xGELSS) utilizeaza descompunerea valorilor singulare.
33Pentru

conveniile de compunere a numelor rutinelor LAPACK, a se revedea seciunea 2.12.

200 CAPITOLUL 3. PROBLEMA CELOR MAI MICI P ATRATE n MATLAB, funcia qr realizeaza triangularizarea ortogonala (n diverse versiuni) a matricei A. Organizarea riguroasa a spaiului de memorie (specifica implement arilor LINPACK i LAPACK) este de regula sacrificata n favoarea unei manipul ari mai comode de catre utilizator, dar performanele numerice sunt acelea. Apelul R = qr(A) calculeaza factorul superior triunghiular R returnnd totodata, n partea inferioara a aceluiai tablou, vectorii Householder corespunzatori reflectorilor Q1, . . . , Qn. Prin [Q,R] = qr(A) se acumuleaza n plus Q, iar comanda [Q,R,P] = qr(A) efectueaza triangularizarea ortogonala cu pivotare, formnd totodat a explicit matricele Q i P = _. Rezolvarea n sens CMMP a sistemului liniar Ax = b, cu m 6= n se face utiliznd comanda x=A\b, unde \ este operatorul de mparire la stnga. (Daca m > n, atunci x este pseudosoluia sistemului Ax = b, iar daca m < n, atunci x este o soluie particulara a aceluiai sistem.)

3.11 Probleme

P 3.1 n planul R2 se da vectorul x = [3 4]T i se considera reflectorul elementar U = I - 2uuT , unde kuk = 1. a. Fie u = e1. Sa se construiasca vectorul transformat y = Ux i sa se reprezinte grafic transformarea. Ce modificari apar daca u = e2 ? b. Sa se determine vectorul Householder normat u astfel nct Ux = _e1. Cte soluii exista ? Ct rezulta _ ? c. Explicai de ce n calcule este mai bine sa presupunem ca vectorul u nu este neaparat normat, introducnd scalarul _ can (3.8). Rezolvai din nou punctul b aplicnd algoritmul 3.2 i observnd ca _ = -_. Justificai alegerea semnului lui _ recomandata n text. Ce se ntmpla daca x = [3 10-5] ?

d. Aplicai n acest caz simplu indicaiile de implementare ce nsoesc algoritmul 3.2. Aratai cum se face scalarea vectorului Householder u = [u1 u2]T astfel nct sa obinem u1 = _, respectiv u1 = 1. Verificai ca n fiecare caz are loc transformarea dorita Ux = -_e1. e. Ilustrai grafic diversele situaii semnificative ntlnite la punctele bd. P 3.2 Rezolvai problema anterioara n R3, considernd de exemplu vectorii x = [3 4 0]T sau x = [3 4 5]T . P 3.3 Fie x, y Rm doi vectori dai. n ce condiii exista un scalar _ i un reflector U astfel nct Ux = _y ? Ce restricii apar daca impunem condiia suplimentara _ = 1 ? Scriei algoritmii de generare a reflectorului U n cele doua situaii. P 3.4 Fie x Rm un vector dat, x 6= 0. a. Sa se determine un reflector U astfel nct prima coloana Ue1 a lui U sa fie un multiplu scalar de x, i.e. Ue1 = _x. Ct trebuie sa fie _ ? Cte soluii exista ? b. Ce semnificaie geometrica au celelalte coloane Uej , j = 2 : m, ale lui U ? c. Scriei algoritmul de calcul al unei baze ortogonale B = [b1 b2 . . . bm] a lui Rm, unde b1 = x este un vector dat, kxk = 1. d. Reformulai n mod avantajos punctele ac de mai sus n cazul n care vectorul dat x are primele k - 1 componente nule, i.e. xi = 0, i = 1 : k - 1. Precizai structura lui U precum i structura bazei ortogonale B astfel obinute. Ilustrai grafic construcia, considernd m = 3, k = 2. e. Revenii la punctul a i ncercai sa determinai U astfel nct Uem = _x. Ce se schimba la punctele bd ?

3.11. PROBLEME 201

P 3.5 Fie x Rm un vector dat, x 6= 0. a. Sa se construiasca m - 1 vectori liniar independeni yj astfel nct xT yj = 0, j = 2 : m. b. Cum se construiesc vectorii de la punctul a daca n plus ei trebuie sa fie ortogonali doi cte doi, i.e. yT i yj = 0, i 6= j ? (Indicaie. Asimilnd xT cu o matrice cu o singura linie, problema consta n a construi o baza ortogonala a subspaiului N = KerxT , i.e. o matrice Y Rm(m-1) cu coloane ortogonale astfel nct xT Y = 0. Se ine seama de punctul b al problemei anterioare.) c. Utiliznd rezultatele de la punctele a i b, descriei mulimea tuturor soluiilor ecuaiei xT y = 1. Ilustrai grafic situaia n cazul m = 2, considernd de exemplu x = e1 i x = [3 4]T . d. Determinai soluia normala y. a ecuaiei xT y = 1. Aratai ca y. este de forma _x i precizai interpretarea geometrica a lui y.. (Indicaie. Orice vector y Rm poate fi scris unic sub forma y = _x +Pm i=2 _iyi, unde yi, i = 2 : m, sunt vectorii de la punctele a sau b.) e. Scriei algoritmii de calcul ce rezolva punctele b i d. Ce simplificari apar daca kxk = 1 ? P 3.6 Se dau doi vectori x, y Rm, x 6= 0. a. Determinai pseudosoluia _. a sistemului _x = y, astfel nct norma euclidiana a reziduului _(_) not = ky - _xk sa fie minima. Evaluai r. = y - _.x i _(_.) = kr.k. b. Scriei algoritmul de calcul corespunzator i gasii interpretarea geometrica a vectorilor y. = _.x i r.. c. Reluai punctul a presupunnd ca xi = 0, i = 2 : m. Ce simplificari apar ? Putei realiza aceasta condiie aplicnd o transformare adecvata T ambilor vectori dai x i y ? Cum trebuie sa fie T pentru ca funcia _(_) sa ramna neschimbata (invarianta) ? P 3.7 Considerai un reflector U = I - 2uuT , kuk = 1. a. Calculai detU. b. Determinai valorile i vectorii proprii ai lui U. c. Determinai n vectori vi, i = 1 : n, astfel nct Uvi = ei i Uei = vi, i = 1 : n. Observaie. n general, se numete reflector elementar (nu neaparat ortogonal) orice matrice U Rmm de forma U = Im - 2uvT , n care u, v Rm sunt doi vectori astfel nct vT u = 1. Multe dintre proprietaile reflectorilor (ortogonali) considerate mai sus se pastreaza (sau se reformuleaza adecvat) n acest cadru mai general. P 3.8 Aratai ca orice matrice de permutare elementara este un reflector. P 3.9 Fie S Rmm o matrice simetrica pozitiv definita, arbitrara dar fixata. Se considera spaiul vectorial Rm cu produsul scalar (x, y)S = yTSx i norma euclidiana kxk2 S = (x, x)S. Doi vectori x, y Rm se numesc S-ortogonali daca (x, y)S = 0. Matricea A se numete S-simetrica daca (y,Ax)S = (Ay, x)S, x, y Rm, adica SA = ATS sau

A = S-1ATS. Matricea U Rmm se numete S-ortogonala daca pastreaza produsul scalar (, )S, i.e. (Ux,Uy)S = (x, y)S, x, y Rm, adica UT SU = S. a. Sa se arate ca orice matrice S-ortogonala este asemenea cu o matrice ortogonal a. Sa se deduca de aici ca, n general, dupa o transformare de coordonate convenabila, proprietaile geometrice ale spaiului Rm dotat cu produsul scalar (, )S se reduc la propriet aile euclidiene uzuale. b. Sa se defineasca noiunea de S-reflector elementar i sa se studieze principalele proprietai ale acestui tip de transformari. Cum se implementeaza avantajos algoritmii de generare i aplicare a reflectorilor S-ortogonali ?

202 CAPITOLUL 3. PROBLEMA CELOR MAI MICI P ATRATE

P 3.10 Pastram aceeai terminologie ca n problema anterioara chiar daca matricea simetric a (inversabila) S este de semn nedefinit. n particular, fie S = J, unde J = Ip 0 0 -Iq , p + q = m. (3.197) Observaie. Spaiul Rm cu produsul scalar nedefinit (, )J se numete spaiu pseudoeuclidian (sau spaiu hiperbolic) de signatura (p, q). Mulimea vectorilor din Rm cu proprietatea kxk2 J = 0
p

Xi=1 x2 im

X i=p+1 x2 i = 0 (3.198) se numete con izotrop 34. a. Fie x Rm un vector dat, iar U un J-reflector de forma U = Im uuT J _ ,_= 1 2 kuk2 J . (3.199) Sa se scrie algoritmul de aplicare a transformarii x y = Ux i sa se verifice prin calcul direct ca kUxkJ = kxkJ . b. Fie x Rm un vector dat. Sa se stabileasca n ce condiii exista un J-reflector de forma (3.199) astfel nct Ux = -_e1, _ R - {0} (3.200) i sa se scrie algoritmul de generare a lui U. Discuie. c. Fie S o matrice simetrica inversabila. Sa se stabileasca n ce condiii S admite factorizari de forma S = RT JR sau S = LT JL, n care R i L sunt matrice superior, respectiv inferior triunghiulare. Sa se scrie algoritmii de factorizare Cholesky cu semn, corespunzatori celor doua relaii de mai sus. d. Aratai ca daca exista doua matrice patrate A i B (nu neaparat triunghiulare) astfel nct S = AT JA = BT JB, atunci exista o matrice J-ortogonala Q astfel nct B = QA. Altfel spus, oricare doi factori cu semn ai lui S sunt J-ortogonal echivaleni. P 3.11 n planul R2 se da vectorul x = [3 4]T i se considera rotaia plana P = P12 cu parametrii c, s. a. Fie c = 3/2, s = 1/2. Sa se calculeze vectorul transformat y = Px i sa se reprezinte grafic transformarea. b. Sa se determine c, s astfel nct Px = re1. Cte soluii exista ? Ct rezulta r ? P 3.12 Fie x, y Rm doi vectori dai. n ce condiii exista un scalar _ i o rotaie Pki astfel nct Pkix = _y ? P 3.13 Fie P o rotaie plana. Calculai detP i determinai valorile i vectorii proprii ai matricei P. P 3.14 Fie x Rm un vector dat. a. Scriei algoritmii de generare a unei secvene de rotaii P astfel nct Px = re1. Analizai diversele variante posibile. b. Acelai enun, utiliznd o grupare convenabila a rotaiilor n secvene de rotaii disjuncte (vezi observaia 3.2). P 3.15 Se da o matrice A Rmm. Sa se scrie algoritmii de aplicare a transformarilor A PA i A APT , unde P sunt secvenele de rotaii generate n problema 3.14.

mai simplu exemplu este planul Lobacevski R2 cu p = 1, q = 1. Spaiul Minkovsky din teoria relativitaii este R4 cu p = 1, q = 3. n acest caz (3.198) se numete con de lumina, iar transformarile J-ortogonale formeaza grupul Poincare al lui R4.
34Cel

3.11. PROBLEME 203

P 3.16 O matrice P de forma P = c -s -s c , c2 - s2 = 1 se numete rotaie hiperbolica (plana) 35. a. Aratai ca P este o transformare J-ortogonala, i.e. PT JP = J. Ct este J ? b. Fie x R2 un vector dat. n ce condiii exista o rotaie hiperbolica astfel nct Px = re1, respectiv Px = re2 ? Scriei algoritmul de generare a lui P i discutai aplicabilitatea lui practica 36. P 3.17 n planul C2 se da vectorul x = [1 + i 2 + i]T . a. Sa se determine un reflector complex Q astfel nct Qx = -_e1. b. Sa se determine o rotaie complexa P astfel nct Px = re1. P 3.18 Formulai i rezolvai versiunile complexe ale problemelor anterioare 3.33.10 3.123.14, semnalnd n fiecare caz modificarile de notaie i de terminologie introduse. P 3.19 Demonstrai ca orice matrice ortogonala se poate exprima ca produs de reflectori elementari. P 3.20 Scriei algoritmul de triangularizare ortogonala a matricei A+ = R C , n care blocul R este superior triunghiular de ordin n, iar C R(m-n)n este un bloc oarecare. Evaluai numarul de operaii. Precizai ce simplificari apar n urmatoarele cazuri a. m - n = 1, i.e. C = cT este un vector linie; b. R este superior bidiagonala, respectiv superior Hessenberg; c. C este superior triunghiulara. P 3.21 Cum procedai daca blocul lider R al matricei A+ din problema precedenta este inferior triunghiular ? Scriei algoritmul corespunzator. P 3.22 Scriei algoritmul de triangularizare cu rotaii a unei matrice A Rmn, utiliznd diverse strategii de anulare a elementelor subdiagonale (vezi problema 3.14). P 3.23 Scriei algoritmul de triangularizare cu rotaii a unei matrice A Rnn a) superior Hessenberg, b) tridiagonale. n al doilea caz, presupunei ca A este memorata mpachetat (prin trei vectori). Ce dificultai apar n ceea ce privete memorarea informaiei generate de algoritm ? P 3.24 Fie R Rnn o matrice superior triunghiulara, iar b, c Rn doi vectori. Scriei un algoritm eficient de triangularizare a matricei A+ = R + bcT , i.e. QTA+ = R+, unde R+ este superior triunghiulara. Fie k 1 : n - 1. Cum procedai daca ultimele n - k elemente ale vectorului b sunt nule ? P 3.25 Cum procedai n problema precedenta daca A+ = R+BCT , unde B,C Rnp, cu p > 1 ? P 3.26 Se considera relaia P+ = AT PA + CTC, unde A Rnn i C Rln sunt doua matrice date, iar P = RTR este o matrice pozitiv definita al carei factor Cholesky superior triunghiular R este cunoscut. Scriei o procedura (de tip radacina patrata) care calculeaza factorul Cholesky R+ al matricei P+, fara a forma explicit P+.
35Denumirea 36Observai

se justifica observnd ca putem ntotdeauna considera c = ch, s = -sh. ca rotaia hiperbolica este o transformare simetrica.

204 CAPITOLUL 3. PROBLEMA CELOR MAI MICI P ATRATE

P 3.27 Ce simplificari apar n problema precedenta daca A este superior Hessenberg, iar C = cT este un vector linie avnd numai ultima componenta nenula ? P 3.28 Fie A Rmn monica, cu m > n. Utiliznd informaia furnizata de algoritmul de triangularizare cu reflectori Un . . .U2U1A = R, scriei algoritmul de acumulare a primelor p coloane ale matricei Q = U1U2 . . . Un, unde p 1 : m este un ntreg dat. Calculai numarul de operaii n funcie de p. Cum memorai rezultatul ? Discutai cazul n care matricea A nu este neaparat monica. P 3.29 Aceeai problema ca mai sus, utiliznd algoritmul de triangularizare ortogonala cu rotaii. P 3.30 Fie Q matricea din problema 3.28. Precizai care dintre schemele urmatoare realizeaza mai eficient acumularea lui Q i de ce. 1. Q = Im 1. Q = Im 2. Pentru k = 1 : n 2. Pentru k = n : -1 : 1 1. Q QUk 1. Q UkQ P 3.31 a. Construii reprezentarile WY i W2T ale reflectorilor bloc Q = U1U2 . . . Unb , considernd relaia de recurena

1. Q = Unb 2. Pentru k = nb - 1 : -1 : 1 1. Q UkQ Ce diferene apar faa de soluia adoptata n seciunea 3.4.3 ? b. Scriei reprezentarea W2T sub forma Q = I -WS-1WT , unde S-1 = T. Precizai structura i scriei procedura de construcie a matricei S. Care dintre cele doua forme de reprezentare este preferabila i de ce ? P 3.32 Fie A Rmn (m > n) o matrice superior Hessenberg. Prezentai algoritmi pentru: a. calculul factorizarii QR a matricei A; b. rezolvarea sistemului liniar supradeterminat Ax = b, cu b Rm dat. c. Cum procedai daca A este banda de laime inferioara p > 1 ? Utilizai reflectori i rotaii. Comparai cele doua versiuni. P 3.33 Aceeai problema, cnd A Rmn este inferior Hessenberg, repectiv banda de laime inferioara p. P 3.34 Fie A Rmn, m > n, o matrice de rang n a carei factorizare QR este cunoscuta, i.e. A = QR, Q Rmm, R Rmn. Fie A+ = [A y], cu y Rm. Prezentai algoritmi pentru a. calculul factorizarii QR a matricei A+; b. rezolvarea sistemului A+x+ = b, cu b Rm dat. c. Stabilii o relaie ntre pseudosoluiile x. + i x. ale sistemelor A+x+ = b, respectiv Ax = b. d. Considerai cazul general A+ = [A Y ], cu Y Rmp. P 3.35 Fie A Rmn, m n, o matrice de rang n a carei factorizare QR este cunoscuta. Fie A+ = zT A , cu z Rn dat. Aratai ca coloanele lui A+ sunt liniar independente. Prezentai algoritmi pentru a. calculul factorizarii QR a matricei A+.

3.11. PROBLEME 205

b. rezolvarea sistemului A+x+ = b+, unde b+ = _ b , cu b Rm i _ R dai. c. Stabilii o relaie ntre pseudosoluiile x. + i x. ale sistemelor A+x+ = b+, respectiv Ax = b. d. Considerai cazul general A+ = Z A , cu Z Rpn. P 3.36 Scriei algoritmi eficieni de aplicare a transformarilor B QTB i B QB, unde Q este matricea din problema 3.28 iar B Rmp este superior sau inferior triunghiular a. Evaluai numarul de operaii n cele patru situaii. P 3.37 Aceeai problema ca mai sus, pentru transformarile la dreapta, B BQ B BQT . P 3.38 Fie B Rmp o matrice data, iar Q = Q1Q2 . . .Qn matricea din problema 3.28. Scriei algoritmul de aplicare a transformarilor B QTB i B QB la nivel de bloc. P 3.39 Aceeai problema ca mai sus, pentru transformarile la dreapta, B BQ B BQT . P 3.40 n condiiile problemei 3.28, scriei un algoritm pentru calculul vectorului y = Ax, cu x Rn dat. (N.B. Matricea A a fost distrusa n urma execuiei algoritmului de triangularizare.) P 3.41 n condiiile problemei 3.28, scriei algoritmi pentru a. rezolvarea sistemului ATAx = c, cu c Rn dat; b. calculul inversei H = (ATA)-1; c. calculul scalarului _ = cT (ATA)-1c, c Rn. P 3.42 Scriei procedurile GQL i MQL de acumulare i aplicare a transformarilor generate de algoritmul de triangularizare QL. P 3.43 Scriei algoritmul de triangularizare ortogonala QL la nivel de bloc. P 3.44 Fie A Rmn o matrice monica. Scriei procedurile de ortogonalizare GS MGS care calculeaza factorizarea A = QL, unde Q are coloanele ortogonale, iar L este inferior triunghiulara. P 3.45 Rezolvai problemele 3.24-3.26nlocuind peste tot matricele superior triunghiulare R i R+ cu matrice inferior triunghiulare. Reformulai n acelai spirit problema 3.27. P 3.46 a. Sa se scrie un algoritm eficient de rezolvare a sistemului (G + CTC)x+ = c + CT y, n care G = RTR este o matrice simetrica pozitiv definita al carei factor Cholesky superior

triunghiular R este cunoscut, iar matricea C Rln precum i vectorii c Rn, y Rl sunt dai. Stabilii o relaie ntre x+ i soluia x a sistemului Gx = c. b. Aceeai problema ca mai sus, pentru sistemul A+x+ = d, unde A+ este matricea din problemele 3.24, 3.25 iar d Rn un vector dat. P 3.47 Fie A Rmn monica. Scriei algoritmul de calcul al pseudosoluiei sistemului Ax = b cu b Rm dat, utiliznd informaia furnizata de algoritmul de triangularizare ortogonala QL.

206 CAPITOLUL 3. PROBLEMA CELOR MAI MICI P ATRATE

P 3.48 Scriei algoritmul de triangularizare ortogonala la dreapta a matricei A+ = [L B], n care blocul L este inferior triunghiular de ordin m iar B Rm(n-m) este o matrice oarecare. Precizai ce modificari apar daca a. n -m = 1, i.e. B = b este un vector; b. L este inferior bidiagonala, respectiv inferior Hessenberg; c. B este inferior triunghiulara. Observaie. Evident, aceasta problema reprezinta o simpla formulare prin dualitate a problemei 3.20. Propunem cititorului ca, procednd n mod similar, sa obina i sa rezolve dualele problemelor 3.213.47 (sau ale celor mai interesante dintre acestea), comentnd n fiecare caz paralelismele observate. P 3.49 Fie A Rmn o matrice de rang maxim. a. Discutai existena i unicitatea inverselor la stnga (dreapta) ale matricei A. Putei descrie printr-o formula mulimea acestor inverse ? b. Evaluai expresiile kIm - AA+kF i kIn - A+AkF . Ce se schimba daca mai sus nlocuim norma Frobenius cu norma spectrala ? P 3.50 a. Fie A Rmn o matrice monica, iar b Rm, c Rn doi vectori dai. Utiliznd informaia furnizata de algoritmul de triangularizare ortogonala QTA = R, scriei o procedura care rezolva (n sensul CMMP) ambele sisteme Ax = b i AT x = c. b. Aceeai problema ca mai sus, daca A este epica, utiliznd algoritmul de triangularizare la dreapta AZ = L. c. Aceleai probleme ca mai sus, relativ la sistemele cu membru drept multiplu AX = B i AT Y = C, n care B i C sunt doua matrice date, dimensionate corespunzator. P 3.51 Fie A Rmn cu m 6= n. Scriei algoritmii de triangularizare prin eliminare gaussiana MA = U, respectiv AN = L i indicai cteva aplicaii. Ce strategii de pivotare recomandai n fiecare caz ? P 3.52 Fie H = Im A AH 0 , cu A = Q R 0 monica (Q Cmm, R Rnn). a. Aratai ca factorizarea cvasi-diagonala a matricei H este de forma THTH = J, unde J= 2 6664 J1 ... Jn Im-n 3 7775 , Jk = 1 1 1 0 , k = 1 : n. b. Aratai ca H este inversabila H-1 = P2 (A+)H A+ -G-1 , unde G = AHA, A+ = (AHA)-1AH, P2 = I - AA+. Ct este detH ? c. Formulai rezultatele a i b pentru H = In AH A 0 , cu A epica. P 3.53 Considerai funcia patratica F : Rn R definita prin F(x) = 1 2 xTGx - xT c, unde G Rnn este o matrice simetrica pozitiv definita, iar c Rn. a. Scriei condiiile necesare de minim i aratai ca F are un punct de minim unic x. Rn care satisface sistemul Gx. = c. (Indicaie: @F
@xi

= 0, i = 1 : n.) b. Scriei un algoritm care calculeaza x. i _

not

= F(x.).

3.11. PROBLEME 207

P 3.54 Fie A Rmn, b Rm. De asemenea, fie S Rmm i T Rnn doua matrice pozitiv definite. Considerai funcia patratica F(x) = kb - Axk2 S + kxk2 T, unde notaiile sunt cele din problema 3.9. a. Aratai ca F are un punct de minim unic x. i scriei un algoritm care calculeaza x. i _ = F(x.). b. Analizai separat problema CMMP ponderata, n care F(x) = kb - Axk2 S. (Aici S se numete tradiional matrice pondere.) P 3.55 Considerai problema de minimizare cu restricii liniare F(x.) = min
Ax=b

F(x), unde F este funcia patratica din problema 3.53, matricea A Rmn este epica, iar b Rm. a. Scriei condiiile necesare de minim utiliznd metoda multiplicatorilor Lagrange. Putei arata ca problema considerata are soluie unica ? Analizai cazul general n care matricea G nu este neaparat pozitiv definita. b. Scriei un algoritm care calculeaza x. i _ = F(x.). P 3.56 Fie A Rmn monica, B Rmp epica i b Rm. Rezolvai problema CMMP generalizata ky.k2 = min Ax+By=b kyk2. Observaie. Daca p = m i B = Im, atunci evident y = r not = b - Ax, deci se obine problema CMMP din seciunea 3.5. P 3.57 Fie A Rmn monica, C Rln epica i b Rm, d Rl. Rezolvai problema CMMP cu restricii liniare kb - Ax.k = min Cx=d kb - Axk. P 3.58 Considerai vectorul de permutari _ produs de algoritmul 3.11 i fie x Rn. Scriei procedurile de permutare pe loc x _x i x _T x. P 3.59 Se dau doi vectori b Rm i c Rn. Scriei algoritmi de determinare a proieciilor ortogonale ale acestor vectori pe subspaiile descompunerilor ortogonale Rm = ImA . KerAT i respectiv Rn = ImAT . KerA, utiliznd informaia furnizata de procedura de triangularizare ortogonala QRX. P 3.60 a. Cu notaiile din seciunea 3.9.5, aratai ca matricea X not = A+ = _Z (S)-1 0 0 0 QH satisface condiiile (Moore-Penrose) 1. AXA = X, 2. XAX = X, 3. AX = (AX)H, 4. XA = (XA)H. b. Precizai ce forma iau aceste condiii daca A este monica (epica). c. Demonstrai ca 5. (A+)H = (AH)+, 6. (A+)+A = A, 7. A+ = (AHA)+AH, 8. A+ = AH(AAH)+. d. Putei indica o metoda de calcul al pseudoinversei unei matrice hermitice (vezi proprietaile 7. i 8.) fara a utiliza triangularizarea ortogonala completa ? e. innd seama de forma factorizata a matricelor Q i Z, scriei un algoritm pentru calculul pseudoinversei A+.

208 CAPITOLUL 3. PROBLEMA CELOR MAI MICI P ATRATE

P 3.61 a. Aratai ca orice matrice A Cmn poate fi scrisa sub oricare din formele (i) A = QC, (ii) A = BV , unde Q are coloanele ortogonale, C este epica, respectiv B este monica, iar V are liniile ortogonale. b. Scriei algoritmi pentru determinarea factorizarilor (i) i (ii). c. Aratai ca A+ = C+(Q)H, respectiv A+ = (V )HB+. d. Scriei algoritmi pentru calculul pseudoinversei normale a sistemului Ax = b, cu b Rm dat, utiliznd factorizarile (i) i (ii). P 3.62 O matrice A Cmn se numete (ad-hoc) pseudounitara (sau parial izometrica) daca exista doua matrice cu coloane ortogonale U Cmr i V Cnr astfel nct A = UV H. a. Ce structura au gramienii G1 = AHA i G2 = AAH ? Interpretare geometrica.

b. Aratai ca A+ = V UH. c. Aratai ca o matrice A Cmn este pseudounitara daca i numai daca A+ = AH. d. Cum se poate testa faptul ca o anumita matrice data A Cmn este 1) monica, 2) epica, 3) pseudounitara, 4) proiector ortogonal ? P 3.63 Fie A Cmn. a. Scriei un algoritm de triangularizare ortogonala la dreapta cu pivotarea liniilor, i.e. _AZ = L, unde L rezulta inferior triunghiulara. Precizai strategia de pivotare utilizata. b. Indicai cteva aplicaii posibile ale acestui algoritm i explicai de ce n practica algoritmul QRP din seciunea 3.9 este ntotdeauna suficient. P 3.64 Fie A Rmn, B Rmp monice. a. Explicai de ce n general matricea M = [A B] nu este monica. Aratai ca ImM = ImA + ImB. b. Efectuai triangularizarea ortogonala completa a matricei M, i.e. QHM_Z = S 0 0 0 , unde S este inversabila de ordin r = rangM. Ce semnificaie geometrica au r i Q ? c. Notam S = ImA, T = ImB. Utiliznd rezultatele de la punctul b, precizai cum poate fi verificata condiia S TT = .. d. Idem, indicai o baza ortogonala pentru subspaiul (S + T ). e. Cum se schimba concluziile de la punctele bd daca matricele iniiale nu sunt neaparat monice ? Pentru exemplificare, fie A = 2 4 1 0 0 3 5 ,B=2 4 11 01 00 3 5 . Cine sunt S, T i S + T ? P 3.65 Fie A Rmn, C Rln epice. a. Explicai de ce n general matricea N = A C nu este epica. Aratai ca KerN = KerATKerC. b. Formulai prin dualitate i rezolvai punctele bd din problema precedenta. c. Fie x Rn. Scriei algoritmul de calcul al proieciilor ortogonale ale lui x pe subspaiile N i N, unde N = KerATKerC. Pentru exemplificare, fie A = [1 0 0], C = 1 0 0 1 1 0 . Cine sunt KerA, KerC KerATKerC ?

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