Cal Cul Numeric Mat Rice Al

download Cal Cul Numeric Mat Rice Al

of 222

Transcript of Cal Cul Numeric Mat Rice Al

  • METODE DE CALCUL

    NUMERIC MATRICEAL.

    ALGORITMI

    FUNDAMENTALI

    Bogdan Dumitrescu Corneliu Popeea Boris Jora

    Partea I

  • Tuturor studentilor, fosti, actuali sau viitori,precum si copiilor nostri

    Andrei Octavia MonicaSebastian Corneliu Serban

  • iCuvant introductiv

    Lucrarea de fata, prima de o asemenea amploare n limba romana, este con-struita pe structura cursului de Calcul numeric, predat de autori la Facultateade Automatica si Calculatoare a Universitatii Politehnica din Bucuresti. Lucrareaexpune, n maniera eminamente algoritmica, metodele de rezolvare a problemelorfundamentale de calcul din algebra matriceala, care constituie primele si, de celemai multe ori, principalele componente ale celor mai diverse aplicatii din inginerie,economie si numeroase alte ramuri ale stiintei.

    In afara studentilor din facultatile cu profil tehnic sau economic, lucrarea poatefi utila tuturor celor care, fie ei studenti, cadre didactice, ingineri sau cercetatori,doresc sa utilizeze cele mai moderne instrumente de calcul numeric matriceal. Pen-tru ntelegerea notiunilor prezentate, cititorul trebuie sa posede cunostinte minimede matematica, la nivelul celor dobandite n liceu sau n primul an de facultate.Pentru orientare, fiecare capitol ncepe cu o trecere n revista a bazelor matematiceale problemelor de calcul studiate. De asemenea, cititorul ar trebui sa fie capabil ase exprima ntr-un limbaj de programare de nivel nalt; aceasta conditie nu e strictnecesara, dar constituie un avantaj, pentru ca i permite sa se concentreze asupraideilor si nu a detaliilor de implementare ale acestora.

    Cartea contine 7 capitole, descrise n cateva cuvinte mai jos. La nceput seafla o bibliografie de baza, cuprinzand lucrari de larga utilizare, referite cu cifreromane, care ofera o privire de perspectiva asupra ntregului domeniu. In finalse gaseste o a doua bibliografie, n general formata din articole (referite cu cifrearabe) privind aspecte specifice ale problemelor tratate si destinata cititorului caredoreste sa adanceasca studiul dincolo de textul de fata. Pentru facilitarea lecturii,recomandam consultarea listelor de notatii si de prescurtari uzuale, aflate catevapagini mai departe.

    Capitolul 0, numerotat astfel pentru a sublinia caracterul sau de initiere n dome-niu, prezinta specificul calculului numeric si justifica necesitatea existentei cartii defata. Este vorba aici despre: reprezentarea numerelor reale n virgula mobila, pro-prietatile (uneori neasteptate ale) operatiilor cu astfel de numere precum si meca-nismele de aparitie inevitabila a erorilor numerice. Este apoi considerata perecheaformata din problema de calcul si algoritmul de rezolvare, relativ la care sunt defi-

  • ii

    nite notiunile fundamentale de conditionare si, respectiv, stabilitate numerica. Inncheiere, este aruncata o privire asupra modului n care arhitectura calculatoruluiinfluenteaza conceptia algoritmilor.

    Capitolul 1 este dedicat expunerii notiunilor primare ale algebrei matriceale(vectori, subspatii, matrice de diverse tipuri si proprietatile acestora), constituindtotodata o introducere n problematica specifica a capitolelor urmatoare. Algoritmiiprezentati rezolva unele probleme simple, dar fundamentale, cum ar fi nmultirea adoua matrice, sau unele cazuri particulare, de exemplu cel al matricelor triunghiu-lare, ale unor probleme mai dificile (rezolvarea sistemelor liniare, calculul valorilorsi vectorilor proprii). Acesti algoritmi sunt larg utilizati n continuare, ca elementeconstructive primare.

    Capitolul 2 trateaza metodele directe de rezolvare a sistemelor liniare Ax = b,cu matrice A nesingulara, prezentand procedura de eliminare gaussiana, inclusivstrategiile de pivotare adecvate, precum si versiunile compacte ale acestei metodebazate pe factorizarea LU a matricei A. In afara matricelor de forma generala,sunt studiate si cazurile, des ntalnite n practica, ale matricelor banda, simetrice sisimetric pozitiv definite. De asemenea, sunt abordate probleme conexe, cum ar ficalculul inversei si al determinantului.

    Capitolul 3 descrie metodele de rezolvare n sensul celor mai mici patrate (CMMP)a sistemelor liniareAx = b, n care numarul ecuatiilor difera de cel al necunoscutelor,deci A este o matrice dreptunghiulara de forma generala. In acest caz se utilizeazametode de eliminare specifice, bazate pe aplicarea transformarilor ortogonale (re-flectori Householder, rotatii Givens etc.) iar conceptul central este cel de factorizareQR. Daca matricea A nu este de rang maxim, se recomanda utilizarea factorizariiortogonale complete, care are la baza un algoritm de triangularizare cu pivotareacoloanelor. Sistemele liniare de acest tip apar frecvent n prelucrarea datelor expe-rimentale, statistica, identificarea sistemelor etc.

    Capitolul 4 expune principalele metode de calcul al valorilor si vectorilor propriiai unei matrice A. Este prezentat n detaliu algoritmul QR, care aduce matriceaA laforma Schur, reala sau complexa, pornind de la forma de principiu a algoritmului, alecarei proprietati matematice sunt usor de analizat, si ajungand la variantele relativsofisticate sub care acesta este implementat n programele profesionale. Alaturi decazul general este tratat si cel al matricelor simetrice. Nu sunt uitati alti algoritmiimportanti, utili n cazuri particulare, cum ar fi metodele puterii, puterii inverse,bisectiei sau Jacobi. Cunoasterea valorilor proprii este utila n analiza stabilitatiisistemelor dinamice, n studiul vibratiilor (pentru cladiri, poduri, avioane) si nmulte 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 pro-bleme din algebra matriceala, cum ar fi determinarea rangului, calculul unor normematriceale, constructia bazelor pentru diverse subspatii, rezolvarea n sensul celormai mici patrate a sistemelor cu matrice de rang nemaxim. Algoritmul DVS esteo adaptare ingenioasa a algoritmului QR simetric, cunoscut din capitolul anterior.Utilizarea DVS este ilustrata considerand unele variante ale problemei CMMP, deexemplu CMMP totala sau cu restrictii, frecvent ntalnite n aplicatii.

  • iii

    Capitolul 6 considera calculul valorilor si vectorilor proprii generalizati ai uneiperechi de matrice (A,B). Este prezentat algoritmul QZ, care aduce perechea laforma Schur generalizata, precum si problema conexa a calculului bazelor ortogo-nale pentru subspatii de deflatie. Notiunile si algoritmii studiati aici sunt de mareutilitate n probleme care apar, de exemplu, n teoria sistemelor precum si n analizacircuitelor electrice sau mecanice cu elemente ideale.

    Principalele rezultate ale expunerii sunt concretizate sub forma de algoritmide calcul descrisi ntr-un pseudocod extrem de apropiat de implementarea directantr-un limbaj de programare de nivel nalt. Algoritmii au fost testati de autorin mediul de programare MATLAB; cu toate acestea, orice observatii si propuneridin partea cititorilor, care sa conduca la eliminarea unor erori sau la mbunatatireaperformantelor, sunt binevenite si pot fi transmise la adresa mentionata mai jos.Pentru majoritatea algoritmilor sunt precizate proprietatile de stabilitate numerica,de obicei ntr-o sectiune speciala dedicata acestei teme, n fiecare capitol. Mentionamca o alta sectiune expune ntotdeuna informatii despre conditionarea problemelor decalcul studiate; n acest fel, cititorul va avea o imagine clara a acuratetii cu care sepot obtine solutiile numerice ale diverselor probleme studiate. De asemenea, fiecarecapitol contine n final o sectiune ce prezinta rutine (functii) din biblioteca LA-PACK (Linear Algebra PACKage) si din limbajul MATLAB (MATrix LABoratory),reprezentative pentru problemele de calcul studiate. LAPACK [XV] implementeazacei mai eficienti si siguri algoritmi de calcul numeric matriceal si este instrumentulcel mai utilizat n acest domeniu. MATLAB [XIV] are o componenta didacticamai pronuntata, mbinand o interfata utilizator simpla cu o calitate remarcabila aalgoritmilor.

    De asemenea, fiecare capitol este nsotit de un set de probleme, n total peste200, ale caror rezolvari complete sau partiale se gasesc n partea finala a lucrarii.Recomandam cititorului sa consulte indicatiile sau rezolvarea propusa de autorinumai pentru verificarea solutiei personale sau dupa tentative serioase de gasire aacesteia. In plus, un mare castig pentru cititor l poate reprezenta implementareaalgoritmilor (cei de baza, din lucrare, si cei derivati, n probleme) precum si testareafunctionarii lor pe exemple numerice reprezentative.

    Aducem la cunostinta cititorilor ca Grupul de Calcul Numeric din cadrul catedreide Automatica si Ingineria Sistemelor de la Facultatea de Automatica si Calcula-toare, din care autorii fac parte, dispune de o biblioteca de calcul numeric matricealscrisa n limbajul C, care contine implementarea tuturor algoritmilor din lucrare.Cei interesati pot contacta autorii la urmatoarele adrese de e-mail

    bogdan,popeea,[email protected]

    Autorii multumesc colegilor lor prof. Paul Flondor si conf.dr.ing. Ioan Tabuspentru interesul acordat si n special pentru comentariile si observatiile constructivefacute pe marginea lucrarii. De asemenea, autorii aduc multumiri doamnei redactorViorica Fatu, de la Editura ALL Educational, pentru atentia acordata acestei cartin drumul catre tipar.

    Autorii

  • iv

    Bibliografie generala

    Pentru chestiuni teoretice de calcul matriceal:

    [ I ] Gantmaher F.R. Teoriia matrit (editia 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 UniversityPress, Cambridge UK, 1985.

    [ III ] Strang G. Introduction to Linear Algebra, Wellesley-CambridgePress, 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, AcademicPress, 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 conditionarii problemelor de calcul matriceal si al stabilitatiinumerice a algoritmilor aferenti:

    [ VIII ] Stewart G.W., Sun J. Matrix Perturbation Theory, AcademicPress, London, 1990.

    [ IX ] Higham N.J. Accuracy and Stability of Numerical Algorithms,SIAM, Philadelphia PA, 1996.

    Pentru programe de calcul si indicatii 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. MatrixEigensystem Routines: EISPACK Guide, 2-nd ed., SpringerVerlag,New York, 1974.

    [ XII ] Garbow B.S., Boyle J.M., Dongarra J.J., Moler C.B. MatrixEigensystem Routines: EISPACK Guide Extension, SpringerVerlag,New York, 1977.

    [ XIII ] Dongarra J.J., Bunch J.R., Moler C.B., Stewart G.W. LINPACKUsers 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 romana:[ XVI ] Branzanescu V., Stanasila O. Matematici speciale teorie,

    exemple, aplicatii, Ed. ALL, Bucuresti, 1994.

    [ XVII ] Bucur C.M., Popeea C.A., Simion Gh.Gh. Matematici speciale.Calcul numeric, E.D.P., Bucuresti, 1983.

    [ XVIII ] Ionescu V., Varga A. Teoria sistemelor. Sinteza robusta.Metode numerice de calcul., Ed. ALL, Bucuresti, 1994.

    [ XIX ] Iorga V., Jora B., Nicolescu C., Lopatan I., Fatu I., Programarenumerica, Ed. Teora, Bucuresti, 1996.

    Lista de notatii

    N multimea numerelor naturale

    Z multimea numerelor ntregi

    R multimea numerelor reale

    C multimea numerelor complexe

    Vectorini : p : nf vectorul cu elementele ntregi ni, ni + p, ni + 2p, . . . , nf ; daca p = 1,

    vectorul se scrie simplu ni : nf

    Rn spatiul liniar n-dimensional al vectorilor (coloana) x cu n componente realexi R, i = 1 : n

    Cn spatiul liniar n-dimensional al vectorilor (coloana) x cu n componente com-plexe xi C, i = 1 : n

    ek, k = 1 : n baza standard a spatiului liniar Rn, respectiv Cn

    xi, x(i) elementul vectorului x aflat n pozitia i

    x(i1 : i2) vectorul format din elementele din pozitiile de la i1 la i2 ale vectorului x

    (x, y) = yTx =n

    i=1 xiyi produsul scalar standard a doi vectori x, y Rn; ncazul complex produsul scalar este (x, y) = yHx =

    ni=1 xiyi

    x = (x, x)1/2 = (ni=1 |xi|2)1/2 norma euclidiana a vectorului x Rn

  • vi

    xp = (n

    i=1 |xi|p)1/p p-normele vectorului n-dimensional x, p 1; n calcule seutilizeaza n special x1,x2=x si x=maxi=1:n|xi|

    MatriceRmn spatiul liniar al matricelor cum linii si n coloane cu elemente reale aij R,

    i = 1 : m, j = 1 : n

    Cmn spatiul liniar al matricelor cu m linii si n coloane cu elemente complexeaij 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 si coloanele dela j1 la j2. Indicele :, fara alta precizare, semnifica luarea tuturor liniilorsau coloanele

    AT transpusa matricei (reale sau complexe) A

    AH conjugata hermitica a matricei (complexe) A, i.e. AH = AT , unde A esteconjugata complexa a lui A

    A1 inversa matricei patrate nesingulare A, i.e. AA1 = A1A = In

    AT = (A1)T= (AT )

    1

    AH = (A1)H= (AH)

    1

    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 Acond(A) = A A1 numarul de conditie la inversare al matricei A ( este o

    norma matriceala consistenta)

    A+ pseudoinversa normala (Moore-Penrose) a matricei A; daca A este monica

    A+=(ATA)1AT , daca A este epica, atunci A+=AT(AAT )

    1

    i(A), i = 1 : p, p = min(m,n) valorile singulare ale matricei A ordonate astfelncat 1 2 . . . p

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

  • vii

    (A) multimea {1(A), 2(A), . . . , p(A)} a valorilor singulare ale matricei Ar = rangA rangul matricei A, i.e. numarul valorilor singulare nenule

    (A,B) = tr(BTA) (tr(BHA)) produsul scalar a doua matrice reale (complexe)

    AF = (A,A)1/2 norma Frobenius a matricei A,A2F =

    mi=1

    nj=1 |aij |2 sau A2F =

    ri=1 i

    2

    |A|p = (r

    i=1 ip)

    1/p p-normele Schatten, p 1; n calcule se utilizeaza n spe-

    cial norma-urma |A|1 =r

    i=1 i, norma Frobenius |A|2 = AF si normaspectrala |A| = 1(A)

    Ap = maxxp=1Axp p-normele induse; n calcule se utilizeaza n specialnorma A1 = maxj=1:n

    mi=1 |aij |, norma spectrala A2 = 1(A) si norma

    A = maxi=1:mn

    j=1 |aij |

    TransformariSAT transformare de echivalenta (bilaterala) a matricei A Rmn (S si T sunt

    matrice patrate nesingulare; transformarea de echivalenta conserva rangul, iardaca S, T sunt ortogonale, atunci conserva si valorile singulare)

    T1AT transformare de asemanare a matricei A Rnn (transformarea deasemanare conserva valorile proprii)

    T TAT transformare de congruenta a matricei A Rnn (T este nesingulara; apli-cata unei matrice A simetrice, transformarea de congruenta conserva rangulsi inertia i.e. numerele de valori proprii negative, nule si, respectiv, pozitive)

    Daca T este ortogonala, atunci T1 = T T si transformarea T TAT se numestetransformare de asemanare ortogonala

    Prescurtarii.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 Corespondentullatin

    A alfa A, aB beta B, b gamma G, g delta D, dE epsilon E, eZ zeta Z, zH eta E, e theta -I iota I, iK kappa K, k lambda L, lM mu M, mN nu N, n xi X, xO o omicron O, o pi P, pP rho R, r sigma S, sT tau T, t upsilon U, u phi F, fX hi H, h psi - omega O, o

  • Cuprins

    0 Concepte fundamentale 1

    0.1 Reprezentarea n virgula mobila . . . . . . . . . . . . . . . . . . . . . 20.2 Aritmetica n virgula mobila . . . . . . . . . . . . . . . . . . . . . . . 70.3 Conditionarea problemelor de calcul . . . . . . . . . . . . . . . . . . 100.4 Stabilitatea numerica a algoritmilor . . . . . . . . . . . . . . . . . . 120.5 Calitatile unui algoritm numeric . . . . . . . . . . . . . . . . . . . . 150.6 Implicatiile arhitecturii calculatoarelor . . . . . . . . . . . . . . . . . 160.7 Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

    1 Algoritmi elementari 19

    1.1 Vectori. Spatiul vectorial Rn . . . . . . . . . . . . . . . . . . . . . . 191.2 Produs scalar. Norme. Ortogonalitate . . . . . . . . . . . . . . . . . 241.3 Matrice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281.4 Inmultirea matricelor . . . . . . . . . . . . . . . . . . . . . . . . . . . 321.5 Norme matriceale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371.6 Matrice structurate . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391.7 Matrice bloc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421.8 Matrice normale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461.9 Sisteme de ecuatii liniare . . . . . . . . . . . . . . . . . . . . . . . . . 491.10 Valori si vectori proprii . . . . . . . . . . . . . . . . . . . . . . . . . . 591.11 Rutinele BLAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 621.12 Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

    2 Rezolvarea sistemelor de ecuatii liniare 69

    2.1 Transformari elementare . . . . . . . . . . . . . . . . . . . . . . . . . 702.2 Triangularizare prin eliminare gaussiana . . . . . . . . . . . . . . . . 722.3 Strategii de pivotare . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

    2.3.1 Pivotare partiala . . . . . . . . . . . . . . . . . . . . . . . . . 762.3.2 Pivotare completa . . . . . . . . . . . . . . . . . . . . . . . . 78

    2.4 Factorizari LU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 812.4.1 Factorizari LU rezultate din eliminarea gaussiana . . . . . . . 822.4.2 Factorizari LU compacte . . . . . . . . . . . . . . . . . . . . . 842.4.3 Factorizari LU prin eliminare gaussiana la nivel de bloc . . . 862.4.4 Factorizari LU compacte la nivel de bloc . . . . . . . . . . . . 89

    2.5 Rezolvarea sistemelor liniare . . . . . . . . . . . . . . . . . . . . . . . 91

    ix

  • x CUPRINS

    2.6 Calculul inversei si al determinantului . . . . . . . . . . . . . . . . . 932.6.1 Calculul inversei unei matrice . . . . . . . . . . . . . . . . . . 942.6.2 Calculul determinantului . . . . . . . . . . . . . . . . . . . . 97

    2.7 Conditionarea sistemelor liniare . . . . . . . . . . . . . . . . . . . . . 972.8 Stabilitate numerica . . . . . . . . . . . . . . . . . . . . . . . . . . . 102

    2.8.1 Scalarea sistemelor liniare . . . . . . . . . . . . . . . . . . . . 1032.8.2 Rafinarea iterativa a solutiei calculate . . . . . . . . . . . . . 104

    2.9 Sisteme banda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1052.10 Sisteme simetrice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1092.11 Sisteme simetrice pozitiv definite . . . . . . . . . . . . . . . . . . . . 1142.12 Rutine LAPACK si MATLAB . . . . . . . . . . . . . . . . . . . . . . 1172.13 Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119

    3 Problema celor mai mici patrate 123

    3.1 Transformari ortogonale . . . . . . . . . . . . . . . . . . . . . . . . . 1253.1.1 Reflectori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1253.1.2 Rotatii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133

    3.2 Transformari unitare . . . . . . . . . . . . . . . . . . . . . . . . . . . 1383.2.1 Reflectori complecsi . . . . . . . . . . . . . . . . . . . . . . . 1383.2.2 Rotatii complexe . . . . . . . . . . . . . . . . . . . . . . . . . 142

    3.3 Triangularizarea ortogonala . . . . . . . . . . . . . . . . . . . . . . . 1433.4 Factorizarea QR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149

    3.4.1 Acumularea transformarilor . . . . . . . . . . . . . . . . . . . 1533.4.2 Aplicarea transformarilor . . . . . . . . . . . . . . . . . . . . 1553.4.3 Triangularizarea ortogonala la nivel de bloc . . . . . . . . . . 1563.4.4 Alte metode de ortogonalizare . . . . . . . . . . . . . . . . . 1603.4.5 Factorizarea QL . . . . . . . . . . . . . . . . . . . . . . . . . 162

    3.5 Rezolvarea problemei CMMP . . . . . . . . . . . . . . . . . . . . . . 1623.5.1 Calculul pseudosolutiei . . . . . . . . . . . . . . . . . . . . . . 1643.5.2 Calculul proiectiilor . . . . . . . . . . . . . . . . . . . . . . . 1673.5.3 Problema CMMP cu membru drept multiplu . . . . . . . . . 1683.5.4 Calculul pseudoinversei . . . . . . . . . . . . . . . . . . . . . 1683.5.5 Alte metode de rezolvare a problemei CMMP . . . . . . . . . 169

    3.6 Sisteme liniare subdeterminate . . . . . . . . . . . . . . . . . . . . . 1703.6.1 Triangularizarea ortogonala la dreapta . . . . . . . . . . . . . 1703.6.2 Factorizarea LQ . . . . . . . . . . . . . . . . . . . . . . . . . 1723.6.3 Rezolvarea sistemelor subdeterminate . . . . . . . . . . . . . 174

    3.7 Conditionarea problemelor CMMP . . . . . . . . . . . . . . . . . . . 1773.7.1 Preliminarii . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1773.7.2 Sensibilitatea pseudosolutiei . . . . . . . . . . . . . . . . . . . 1803.7.3 Sensibilitatea solutiei normale . . . . . . . . . . . . . . . . . . 182

    3.8 Stabilitatea algoritmilor de triangularizare . . . . . . . . . . . . . . . 1833.8.1 Stabilitatea numerica a algoritmilor fundamentali . . . . . . . 1843.8.2 Acuratetea solutiilor calculate . . . . . . . . . . . . . . . . . . 1853.8.3 Scalarea problemei CMMP . . . . . . . . . . . . . . . . . . . 1863.8.4 Rafinarea iterativa a solutiei CMMP . . . . . . . . . . . . . . 187

  • CUPRINS xi

    3.9 Descompunerea ortogonala completa . . . . . . . . . . . . . . . . . . 1893.9.1 Triangularizarea ortogonala cu pivotarea coloanelor . . . . . . 1903.9.2 Determinarea rangului . . . . . . . . . . . . . . . . . . . . . . 1933.9.3 Triangularizarea ortogonala completa . . . . . . . . . . . . . 1953.9.4 Descompunerea ortogonala completa . . . . . . . . . . . . . . 1973.9.5 Problema generala CMMP . . . . . . . . . . . . . . . . . . . 197

    3.10 Rutine LAPACK si MATLAB . . . . . . . . . . . . . . . . . . . . . . 1993.11 Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200

  • 0 CUPRINS

  • Capitolul 0

    Concepte fundamentale ale

    calculului numeric

    Rezolvarea numerica cu ajutorul calculatorului a unei probleme de calcul se facentotdeauna pe baza unui algoritm, i.e. a unei succesiuni finite si bine precizate deoperatii elementare (cum ar fi adunarea, nmultirea etc.) prin care solutia problemeieste calculata n functie de datele initiale. Desi matematica furnizeaza deseori, ndemonstratiile numite constructive, algoritmi de rezolvare a problemelor pe care letrateaza, s-a dovedit ca de multe ori implementarile numerice ale acestor algoritmiau dezavantaje majore care i fac de nefolosit.

    Discrepanta ntre corectitudinea matematica a unui algoritm si adecvarea lui laspecificul calculului numeric practic poate proveni din doua cauze importante. Una,evidenta, consta n (eventuala) complexitate (n ce priveste numarul operatiilor deexecutat si memoria ocupata de date), care poate duce fie la timpi de executie foartemari, deci nepractici, fie, pur si simplu, la imposibilitatea executiei programuluicare implementeaza algoritmul. A doua cauza, mai subtila, o constituie erorilecare nsotesc calculul numeric; prin acumulare, acestea pot periclita acuratetearezultatului.

    O serie de erori sunt inerente, cum ar fi cele care apar la determinarea datelordin masuratori experimentale. Altele sunt legate de algoritmul de calcul utilizat,care se poate baza pe simplificari n modelarea unor fenomene fizice sau poateproveni dintr-o metoda matematica implicand o infinitate de operatii, din care,prin trunchiere, se retine doar un numar finit de operatii; n ambele cazuri, prinnatura lucrurilor, algoritmul va furniza o solutie aproximativa.

    In fine, exista erori avand cauze specifice calculului numeric, care opereaza cunumere reale (si nu doar cu numere ntregi); de acestea ne vom ocupa mai pe larg.Desigur, numerele reale sunt reprezentate n memoria calculatorului ntr-un formatbine precizat si ocupand un numar relativ mic de locatii de memorie, de exemplu4 sau 8 octeti; astfel, o infinitate de numere este reprezentata printr-un numarfinit de combinatii de biti. De aici o prima sursa de erori, cele de reprezentare.Apoi, pot aparea erori si la efectuarea operatiilor cu numere reale aflate n memoriacalculatorului, erori numite de rotunjire; aceasta nu se ntampla pentru ca unitatea

    1

  • 2 CAPITOLUL 0. CONCEPTE FUNDAMENTALE

    centrala (microprocesorul, de exemplu) ar gresi la calcule, ci, din nou, datoritafaptului ca numerele reale sunt reprezentate ntr-un format finit, atat n memorie,cat si n unitatea centrala.

    Prin aceasta, calculul cu numere reale difera fundamental de cel cu ntregi. Vomobtine 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 sintr-un limbaj de programare pe care nu le precizam adunand 0.1+0.2 si scazanddin rezultat 0.3 nu obtinem 0, asa cum ne-am astepta, ci aproximativ 5.5 1017; edrept, eroarea este infima. Pericolul apare n cazul acumularii unor astfel de micierori, acumulare care poate duce la degradarea uneori fatala a rezultatuluiprodus.

    In acest capitol ne vom ocupa de aspecte specifice elementare ale calcululuinumeric: modul de reprezentare a numerelor reale, felul n care se apreciaza calitateaunui algoritm numeric, cuantificarea efectului erorilor de rotunjire asupra acuratetiisolutiei numerice a unei probleme; acest ultim scop face obiectul analizei numericesi este, n general, dificil de atins.

    0.1 Reprezentarea n virgula mobila

    Fie x si x numere reale, x fiind interpretat ca o aproximare a lui x. Vom prezentadoua masuri naturale ale calitatii aproximarii.

    Eroarea absoluta (cu care x aproximeaza x) se defineste prin

    = |x x|.

    Daca x 6= 0, atunci eroarea relativa se defineste prin

    =

    x xx = |x| .

    Daca x Rn, se nlocuieste n relatiile de mai sus valoarea absoluta | | cu onorma vectoriala (vom discuta despre norme vectoriale n capitolul 1).Exemplul 0.1 Fie x = 1.0, si x = 0.999 o aproximare a sa. Atunci = 103 si = 103. Daca y = 0.009 este o aproximatie a lui y = 0.01, atunci eroarea absolutaeste aceeasi ca n cazul precedent, = 103, dar eroarea relativa este de o suta deori mai mare: = 101. Raportandu-se la valoarea lui x, eroarea relativa este multmai adecvata pentru estimarea calitatii aproximarii x.

    Erorile de reprezentare apar datorita memorarii n calculator a numerelor realeprintr-o secventa finita de simboluri (cifre binare). Pentru a prezenta o estimarea acestor erori, sa reamintim bine cunoscuta reprezentare pozitionala a numerelorreale. Fie

    N, 2, baza de numeratie; C = {0, 1, . . . , 1}, multimea cifrelor n baza , adica primele numerenaturale.

  • 0.1. REPREZENTAREA IN VIRGULA MOBILA 3

    Se stie ca orice numar x R poate fi scris unic sub forma unei secvente infinitex = san1an2 . . . a0.a1a2a3 . . . , (0.1)

    care nu se termina printr-o secventa infinita de cifre egale cu 1 si n care ai C,iar s este semnul, s {+,}. Valoarea lui x este

    x = s

    (n1i=0

    aii +

    i=1

    aii

    ). (0.2)

    Convenim sa eliminam din scriere secventa infinita de zerouri finale, atunci candeste cazul. Sa exemplificam relatiile (0.1) si (0.2).

    Exemplul 0.2 Numarul n baza 10

    3.25 = 3 100 + 2 101 + 5 102

    se reprezinta n baza 2 n modul urmator (verificati egalitatea):

    11.01 = 1 21 + 1 20 + 0 21 + 1 22.In ambele baze, reprezentarile au un numar finit de cifre. In schimb, numarulexprimat simplu n baza 10:

    0.1 = 1 101

    are o reprezentare de lungime infinita n baza 2 (verificati din nou egalitatea):

    0.0001100110011 . . .= (24 + 25)

    k=0

    24k.

    In baza 10, urmatoarele doua secvente

    0.99999 . . .1.00000 . . .

    reprezinta acelasi numar real. Reprezentarile binare corespunzatoare sunt

    0.11111 . . .1.00000 . . .

    In ambele situatii, reprezentarea acceptata este 1.0000 . . .

    Evident, reprezentarea numerelor reale pe calculator poate avea doar un numarfinit de cifre si deci, prin natura ei, este aproximativa. O buna aproximare printr-osecventa finita de lungime fixata trebuie sa asigure:

    un domeniu suficient de mare de numere reprezentate; o eroare relativa de reprezentare suficient de mica; o distributie uniforma a erorii relative de reprezentare.

  • 4 CAPITOLUL 0. CONCEPTE FUNDAMENTALE

    Un bun compromis n satisfacerea acestor cerinte este dat de asa numitul FormatVirgula Mobila (FVM).

    Definitia 0.1 Un Format Virgula Mobila (FVM) este definit de trei ntregi (, t, p),cu urmatoarea semnificatie:

    baza de numeratie ( 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 Ceste un numar fractionar cu semn (plus sau minus), normalizat (i.e. f1 6= 0), cut cifre, denumit mantisa, iar

    e = e1e2 . . . epeste 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 = . . .

    p

    , unde

    = 1) si U cea maxima (de exemplu U = L). Se observa ca toate numerelen virgula mobila x satisfac:

    L1 = m |x| M = U (1 t)adica domeniul reprezentarii n virgula mobila este intervalul R = [M,M ]. De-sigur, pentru majoritatea reprezentarilor pe calculator, = 2 (se mai foloseste, deexemplu, = 16 si chiar = 10).

    Exemplul 0.3 Sa consideram FVM cu (, t, p) = (2, 2, 1). Atunci L = 1, U = 1,m = 22 = 0.2510, M = 2(1 22) = 1.510. Numerele reale care au o reprezentareexacta n acest FVM sunt:

    x1 = (0.11,+1) = 1.510 x7 = (+0.10,1) = 0.2510x2 = (0.10,+1) = 1.010 x8 = (+0.11,1) = 0.37510x3 = (0.11, 0) = 0.7510 x9 = (+0.10, 0) = 0.510x4 = (0.10, 0) = 0.510 x10 = (+0.11, 0) = 0.7510x5 = (0.11,1) = 0.37510 x11 = (+0.10,+1) = 1.010x6 = (0.10,1) = 0.2510 x12 = (+0.11,+1) = 1.510

    si vor fi folosite pentru reprezentarea (aproximativa) a tuturor numerelor reale dinintervalul [1.5, 1.5]. Reprezentarea geometrica a tuturor acestor numere pe axareala este prezentata n figura 0.1. Numerele cu reprezentare exacta n virgulamobila sunt relativ uniform distribuite; mai precis, |xixi1| / |xi| are aproximativaceleasi valori pentru orice i.

    Exemplul 0.4 Un FVM pe 32 biti poate fi urmatorul: (, t, p) = (2, 24, 7). Doibiti sunt atribuiti reprezentarii semnelor mantisei si exponentului; deoarece primul

  • 0.1. REPREZENTAREA IN VIRGULA MOBILA 5

    1

    x11

    -x1 x2 x3 x4x5 x6 x7x8 x9 x10 x12

    1.50.5-0.5-1-1.50

    Fig. 0.1: Reprezentarea numerelor n virgula mobila din exemplul 0.3

    0 1 1 0 1 0 0 1

    -exponent (7 biti)

    0 1 0 0 1 1 0 0 1 0 1 1 1 0 0 0 0 0 0 0 1 0 1 1

    mantisa (23+1 biti)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 loculacestui bit, economisind astfel un bit al reprezentarii. Un exemplu de numar nvirgula mobila n acest format este prezentat n figura 0.2.

    Pentru acest FVM avem: L = 127, U = 127,m = 2127 = (210)1323 1038,M 1038 (putem aproxima 210 103). Aceasta arata ca FVM acopera un domeniularg de numere, utilizand un numar relativ mic de cifre binare. Acest exemplu estefoarte apropiat de formatul standard IEEE pentru numere n virgula mobila nsimpla precizie.

    In formatul din acest exemplu, numarul real 0.1 are mantisa

    0.110011001100110011001100

    si exponentul 10000011 (3 n baza 10; prima cifra 1 a exponentului reprezintasemnul). Asadar numarul 0.1 este reprezentat aproximativ (vezi exemplul 0.2).

    Observatia 0.1 Definitia 0.1 nu permite reprezentarea exacta a numarului 0,acesta neputand avea o mantisa normalizata. Practic, pentru a reprezenta 0, precumsi unele simboluri speciale despre care se va vorbi mai tarziu, se folosesc valoridedicate ale exponentului, n afara intervalului [L,U ]. De aceea, n standardulIEEE pentru simpla precizie, L = 126.

    Pentru a estima erorile efectuate la reprezentarea unui numar real n virgulamobila, sa consideram un FVM, adica (, t, p), si sa notam

    F = {x R | x are reprezentare exacta in VM} {0}. (0.3)Desigur, F este o multime finita de numere rationale.

    Reprezentarea numarului real x [M,M ] n FVM nseamna aproximarea luicu un numar x F . Aceasta aproximare poate fi exprimata printr-o functie derotunjire.

    Definitia 0.2 Daca (, t, p) este un FVM si F este multimea definita n (0.3),atunci o functie

    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 functie 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 multime infinita de numere reale, fiecarex F constituie reprezentarea n VM a unei multimi infinite de numere din[M,M ]; suntem interesati sa gasim o margine superioara a erorii de reprezentarepentru o functie de rotunjire data. Exista mai multe functii de rotunjire. O vomprezenta doar pe cea mai simpla, denumita rotunjire prin taiere. In acest scop, sascriem 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 . . . et == f e + g et,

    unde fi C, f1 6= 0, f = 0.f1f2 . . . ft, g = 0.ft+1ft+2 . . .In mod evident:

    1/ |f | < 1, 1/ |f | < 1, 0 |g| < 1. (0.4)

    Functia 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 obtine prin taierea cifrelor mantisei normalizate anumarului x care se afla n afara formatului (de la pozitia t+ 1 ncolo).

    Utilizand inegalitatile (0.4), este usor de stabilit o margine superioara a eroriide reprezentare introduse de fl1. Intr-adevar, pentru orice x [M,M ]\{0} avem

    =|x fl1(x)|

    |x| =|fe fe|

    |f |e =|g|et|f |e M), apare eroareanumita de depasire superioara (overflow). Cand rezultatul este prea mic n valoareabsoluta (< m, dar nenula), eroarea se numeste de depasire inferioara (underflow).Desigur, orice algoritm bine conceput trebuie sa specifice cum se procedeaza neventualitatea unor depasiri si, mai ales, sa ncerce evitarea lor (vom explica ncapitolul urmator tehnica folosita scalarea). Depasirea inferioara nu constituiede regula o eroare grava, de aceea majoritatea calculatoarelor atribuie automatrezultatului valoarea zero. In cazul unei depasiri superioare, de obicei calculele suntoprite sau, cel putin, este afisat un mesaj de avertisment. In standardul IEEE pentruvirgula mobila, exista o valoare speciala, numita Inf (infinit), care este atribuitarezultatului n cazul unei depasiri superioare; calculele continua cu aceasta valoare;rezultatele se obtin conform regulilor uzuale de lucru cu infinitati. O alta valoarespeciala NaN (Not a Number) este atribuita rezultatelor nedefinite, ca 0 ,0/0, /; o operatie implicand NaN are ntotdeauna ca rezultat NaN.

    Relatia (0.7) garanteaza ca o operatie aritmetica introduce erori relative mici,de ordinul t (adica al lui epsilon masina). O problema fundamentala a calcululuinumeric este evaluarea marimii erorii ce afecteaza rezultatul n cazul unei secventede operatii.

    Pentru a aborda problema, sa consideram doua exemple n care apar erori nu-merice mari, dar din cauze esential diferite. Lucram n FVM cu (, t, p) = (10, 3, 1).Pentru a evita confuziile, vom nota cu , , si adunarea, scaderea, nmultirea,respectiv mpartirea n VM; deci x+ y este suma exacta, iar x y = fl(x+ y) estesuma calculata n VM.

    Exemplul 0.6 In calculul radacinilor polinomului de gradul al doilea ax2 + bx+ c,cu a 6= 0, este necesar calculul expresiei b2 4ac. Considerand 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 semnificativeeronate, iar eroarea relativa aferenta este egala cu 1; totusi, pentru fiecare operatien parte, eroarea relativa este mai mica decat 102.

    Exemplul 0.7 Daca polinomul de gradul II are radacini reale, acestea se calculeazade obicei utilizand formulele

    x1 =bb2 4ac

    2a, x2 =

    b+b2 4ac2a

    . (0.8)

    Luand b = 10.1, a = 0.0123, c = 32.4, valoarea exacta rotunjita la 3 cifresemnificative a lui x2 este 3.22. Efectuand calculele n formatul ales, obtinem = b b 4 a c = 100 (n loc de 100.41, dar eroarea relativa e nca de ordinul

  • 0.2. ARITMETICA IN VIRGULA MOBILA 9

    103); dar b SQRT () = 0.1, n timp ce b+b2 4ac = 0.0792, eroarearelativa fiind acum 0.26. Valoarea calculata a radacinii x2 este 4.06, n timp cevaloarea exacta este 3.22; din nou toate cifrele semnificative ale rezultatului sunteronate.

    Se observa ca, n ambele exemple, erorile mari apar dupa scaderea a doua numerede valori apropiate. Se produce o anulare catastrofala, adica o pierdere completa acifrelor semnificative ale rezultatului. In primul caz anularea trebuie pusa integralpe seama operatiei matematice de scadere; problema calculului b2 4ac este cauzaerorilor, si nu algoritmul de calcul. In schimb, n al doilea caz, algoritmul de calculal radacinilor este de vina, deoarece nu evita scaderea a doua numere apropiate,desi aceasta este posibil, dupa cum vom vedea putin mai tarziu. Sa studiem ntaimai amanuntit ce se ntampla la scaderea a doua numere apropiate.

    Exemplul 0.8 Consideram doua numere reale, x si y, de acelasi ordin de marime(cu x > y, pentru simplitate), ale caror prime k cifre coincid, cu urmatoarelereprezentari (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.

    Diferenta lor, calculata n VM, este

    x y = 0.f1 . . . ftk0 . . . 0 k+e.

    Observam ca x y = x y, deci scaderea se efectueaza fara erori. In schimb,rezultatul scaderii cu valorile exacte ale operanzilor este

    x y = 0.f1 . . . ftk10 . . . 0 k+e,

    iar eroarea relativa asociata lui este (x y) (x y)x y t+1+ek+e = t1+k.

    In concluzie, observam ca operanzii scaderii sunt afectati de erori relative de repre-zentare de ordinul t1, n timp ce rezultatul ei are o eroare relativa de ordinult1+k; atunci cand x si y au multe cifre semnificative identice, deci k aproape det, (si acelasi ordin de marime) eroarea asociata rezultatului scaderii poate deveniuriasa.

    Exemplul 0.8 arata ca adunarea (scaderea) nu introduce erori mari prin ea nsasi,ci potenteaza n anumite cazuri erorile operanzilor.

    De aceea, scaderea numerelor apropiate trebuie evitata. Pentru aceasta, dacaeste 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 celemai bune din punct de vedere numeric, mai ales cand b2 4ac, si deci |b| .Pentru a evita scaderea unor numere apropiate, se pot folosi formulele

    x1 =b sgn(b)b2 4ac

    2a, x2 =

    2cb+ sgn(b)

    b2 4ac. (0.9)

    Utilizand n (0.9) valorile numerice din exemplul 0.7, se obtine, n FVM de lucru,un rezultat cu toate cifrele semnificative exacte.

    0.3 Conditionarea problemelor de calcul

    Orice problema de calcul numeric impune obtinerea unor rezultate numerice, pornindde la date de intrare numerice, astfel ncat rezultatele sa poata fi interpretate ca oaproximatie a solutiei unei probleme matematice pentru datele de intrare respec-tive. Pentru ca o astfel de problema sa fie bine definita, trebuie asigurate existenta siunicitatea solutiei. In acest caz, o problema de calcul numeric poate fi ntotdeaunadescrisa ca evaluare a unei functii

    f : D Rn Rm (0.10)ntr-un punct x D dat. Cele n componente ale argumentului constituie datelede intrare, iar cele m componente ale vectorului f(x) sunt rezultatele sau datele deiesire.

    Desigur, aplicatia f este de cele mai multe ori definita implicit iar descoperireaunei 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 multime de trei numere reale si

    x =

    ab

    c

    D = {x R3 | a 6= 0, b2 4ac 0} R3.

    Rezolvarea ecuatiei de gradul II

    ay2 + by + c = 0

    este o problema numerica bine definita, deoarece pentru orice x D exista un unicvector

    y = f(x) =

    [y1y2

    ]=

    b sgn(b)b2 4ac

    2a

    2cb+ sgn(b)

    b2 4ac

    R2,

    care este solutia problemei.

    b) Calculul integralei ba

    et2

    dt,

  • 0.3. CONDITIONAREA PROBLEMELOR DE CALCUL 11

    unde a, b R sunt date (a 6= b), este de asemenea o problema numerica bine definita.Intr-adevar, pentru datele de intrare x =

    [ab

    ] D = R2, exista si este unica

    valoarea integralei y R, desi integrala nedefinita et2dt nu este exprimabilaprin functii elementare.

    Abaterea solutiei calculate fata de solutia exacta a unei probleme numerice poateavea doua surse esential diferite, legate de problema n sine si, respectiv, de algorit-mul de calcul utilizat. De prima sursa de erori numita conditionarea problemei ne ocupam n continuare, de cea de-a doua stabilitatea algoritmului nparagraful urmator.

    Conditionarea problemei caracterizeaza sensibilitatea solutiei n raport cu pertur-batiile datelor de intrare. In practica este cunoscuta doar o aproximatie x a datelorde intrare x si, n cel mai bun caz, presupunand ca toate calculele se efectueazaexact, putem calcula f(x) n loc de f(x). Daca functia f definind problema noastraeste prea sensibila la variatii ale argumentului, f(x) si f(x) pot diferi semnificativchiar n cazul unei erori relative mici x x / x a datelor de intrare ( este onorma adecvata). O astfel de problema este numita rau conditionata.

    Daca ncercam rezolvarea unei probleme rau conditionate pornind de la dateinexacte, atunci solutia obtinuta va fi nsotita de erori mari indiferent de felul ncare este calculata !

    Definitia 0.3 Conditionarea numerica sau sensibilitatea locala a unei problemef : D Rn Rm ntr-un punct x D este exprimata de amplificarea erorii rel-ative

    (x) =f(x) f(x)

    f(x)x

    x x , (0.11)

    pentru x 6= 0 si f(x) 6= 0. Cand (x) este mic (de ordinul unitatii, de exemplu)problema este numita bine conditionata n punctul x. Altfel, problema este rauconditionata.

    Observatia 0.2 Daca f este Lipschitz continua, i.e. exista L astfel ncat

    f(x) f(y) Lx y,

    atunci

    (x) L xf(x) ,

    iar daca f este de clasa C1 iar x este apropiat de y, atunci L se poate lua f (x),unde f este derivata lui f n punctul x.

    Subliniem faptul ca conditionarea este o proprietate locala. De obicei, totusi, oproblema este numita bine conditionata daca este bine conditionata n orice punctx D; de asemenea, este numita rau conditionata, daca exista puncte x D ncare este rau conditionata.

    Exemplul 0.11 Problema calculului sumei a doua numere x, y R poate fibine sau rau conditionata functie de valorile lui x si y (datele de intrare). (Aici

  • 12 CAPITOLUL 0. CONCEPTE FUNDAMENTALE

    f(x, y) = x + y, f : R2 R; convenim sa scriem si f(x, y) n loc de f([xy

    ]),

    cum ar cere (0.10).)Presupunem ca x, y sunt aproximari ale lui x, respectiv y, afectate de erori

    relative de acelasi 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 si y au acelasi semn, atunci

    |xx|+ |yy||x|+ |y|

    si suma este afectata de o eroare de acelasi ordin de marime ca si operanzii; n acestcaz, adunarea este bine conditionata.

    Daca x si y au semne diferite, este posibil (atunci cand x si y au si ele semnediferite) ca si

    = max(|x|, |y|)

    |x+ y|sa aiba acelasi ordin de marime. Dar daca |x + y| max(|x|, |y|), ceea ce sentampla atunci cand x si y au valori apropiate, atunci . In acest caz,problema calculului sumei este rau conditionata. Exemplele 0.6, 0.7, 0.8 ilustreazaaceasta situatie. Pentru a vedea cate subtilitati ascunde calculul aparent simplu alunei sume, cititorul este invitat sa consulte [?].

    0.4 Stabilitatea numerica a algoritmilor

    Pentru a rezolva o problema de calcul numeric definita de functia (0.10), un calcu-lator executa o secventa (finita) bine precizata de operatii denumita algoritm. Ingeneral exista mai multi algoritmi pentru rezolvarea unei probleme. Un algoritmf pentru problema f produce un raspuns unic determinat pentru date de intrarefixate si deci poate fi exprimat matematic printr-o functie

    f : D F Rn Rm.Deoarece executia unui algoritm se face folosind numere n FVM si calculele suntnsotite de erori, este clar ca f(x) este de regula diferit de f(x). De asemenea, nu ne

    putem astepta ca algoritmul f sa calculeze solutia unei probleme rau conditionatemai precis decat o garanteaza datele de intrare. Totusi, e de dorit ca f sa nu in-troduca erori exagerat de mari. Notiunea de stabilitate numerica exprima marimeaerorilor numerice introduse de un algoritm, n ipoteza ca datele initiale sunt exacte.

  • 0.4. STABILITATEA NUMERICA A ALGORITMILOR 13

    rr6?

    r@@@@@@R r@@

    @@@@I

    f

    f

    f

    x

    x

    f(x)

    f(x) = f(x)

    Date de iesireDate de intrare

    Eroare nainteEroare napoi

    Fig. 0.3: Erori nainte si napoi

    Definitia 0.4 Un algoritm f , destinat rezolvarii problemei f , este numeric stabildaca una dintre urmatoarele doua conditii alternative este ndeplinita:

    i) f(x) este aproape de f(x) pentru orice intrare x, adica solutia calculata aproxi-meaza bine solutia exacta.

    ii) pentru orice intrare x, exista un x D apropiat de x astfel ncat f(x) sa fieegal cu f(x), adica solutia calculata de algoritmul f cu date de intrare exacte esteegala cu solutia exacta pentru niste date de intrare usor perturbate.

    Altfel, algoritmul este numeric instabil.

    Cele doua conditii sunt similare, doar ca prima se formuleaza n spatiul datelorde iesire, iar a doua n spatiul datelor de intrare, dupa cum se poate remarcan figura 0.3; n mod plastic, eroarea (absoluta) f(x) f(x) este numita eroarenainte, deoarece corespunde sensului de calcul al algoritmului, iar x x eroarenapoi, deoarece gasirea unui x care sa satisfaca ii) nseamna ntoarcerea nspatiul datelor de intrare, ulterior aplicarii algoritmului. Analiza stabilitatii nu-merice a unui algoritm nseamna cuantificarea erorilor din definitia 0.4; evaluareaf(x)f(x) este caracteristica analizei nainte (directe); evaluarea xx definesteanaliza napoi (inversa).

    Notiunea vaga aproape se poate reexprima prin cea de eroare relativa mica(notiune destul de vaga si ea); n calculul numeric se folosesc deseori astfel deexprimari. In mod sigur, o eroare relativa de ordinul erorii de rotunjire (introdusede (0.7)) caracterizeaza un algoritm numeric stabil 1: solutia este calculata cuprecizia intrinseca a FVM utilizat.

    Este usor de aratat ca utilizarea unui algoritm stabil la rezolvarea unei problemebine conditionate conduce la un rezultat de nalta acuratete 2.

    Intr-adevar, din definitia 0.4 varianta ii), pentru intrarea exacta x exista x astfelncat eroarea relativa este (sa zicem) de ordinul erorii de rotunjire

    x xx

    t

    1In continuare, vom spune algoritm stabil n loc de algoritm numeric stabil.2Atragem atentia asupra sensurilor diferite pe care le au n calculul numeric termenii precizie si

    acuratete, aproape sinonimi n limbajul uzual. Precizia se refera la numarul de cifre semnificativedin FVM, iar acuratetea la marimea erorii dintre rezultatul calculat numeric si cel exact.

  • 14 CAPITOLUL 0. CONCEPTE FUNDAMENTALE

    sif(x) = f(x). (0.13)

    Problema fiind bine conditionata, din (0.11) rezulta ca

    f(x) f(x)f(x) =

    x xx

    t, (0.14)

    unde si sunt de ordinul unitatii. Deci, din (0.13) si (0.14),

    f(x) f(x)f(x)

    t,

    adica un algoritm stabil nu introduce erori suplimentare semnificative n rezolvareaunei probleme bine conditionate.

    In mod similar, se poate observa ca, n alte situatii (de exemplu pentru problemerau conditionate sau pentru algoritmi instabili), marimea erorii asociate rezulta-tului nu poate fi apreciata. Cand un algoritm stabil este folosit pentru a rezolvao problema rau conditionata, nu exista nici o garantie ca f(x) si f(x) au valori

    apropiate si, desi f(x) este (aproximativ) egal cu f(x), diferenta dintre f(x) si f(x)poate fi semnificativa. Cand un algoritm instabil este folosit pentru rezolvarea uneiprobleme bine conditionate, solutia calculata f(x) pentru date exacte de intrareeste solutie exacta a problemei cu x departe de x, si tot asa este f(x) de f(x). Insfarsit, nu e nici o speranta de a obtine erori mici atunci cand un algoritm instabileste utilizat pentru o problema rau conditionata.

    Exemplul 0.12 Revenim la problema calculului sumei, f : R2 R,f(x, y) = x+ y. Problema poate fi bine sau rau conditionata n functie de datelede 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 functie de rotunjire care respecta relatia (0.7), iar x si y sunt numeren 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 usorperturbati, si deci algoritmul de sumare este stabil.

    Exemplul 0.13 Sa analizam acum algoritmul de calcul al marimiif(a, b, c) = b2 4ac. Presupunem ca a, b, c sunt numere n FVM. In conformitatecu (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, ceeace e adevarat n baza 2, dar nu si n baza 10.

  • 0.5. CALITATILE UNUI ALGORITM NUMERIC 15

    Definind

    a = a(1 + 2), b = b(1 + 1)(1 + 3), c = c(1 + 3),

    constatam ca

    f(a, b, c) = b2 4ac,si a, b, c sunt aproape de a, b, respectiv c (n sensul |a a|/|a| de ordinul t etc.).Conditia ii) a definitiei 0.4 este ndeplinita, deci algoritmul este stabil.

    Exemplul de mai sus este o ilustrare foarte simpla a analizei inverse a erorilorde rotunjire ale unui algoritm. In aceasta tehnica se utilizeaza limitele (0.7) aleerorilor introduse de operatiile n virgula mobila pentru a demonstra ca solutiacalculata a unei probleme este solutia exacta a problemei cu date de intrare usorperturbate. O astfel de demonstratie garanteaza ca algoritmul este numeric stabil si,pentru probleme bine conditionate, sunt asigurate erori relative mici ale rezultatelorcalculate.

    Pentru probleme nebanale, a arata ca un anume algoritm este stabil poate fio sarcina dificila. Exista foarte putini algoritmi pentru care exista o demonstratiecompleta a stabilitatii numerice. Totusi, multi algoritmi importanti au fost validatin practica printr-o experienta de zeci de ani. Cum spunea Wilkinson: scopulprincipal al analizei erorilor nu este de a stabili margini precise, ci de a evidentiainstabilitatile potentiale ale unui algoritm, daca ele exista, si, prin aceasta, de a gasio cale de mbunatatire a algoritmului [IV].

    In aceasta lucrare vom fi interesati mai mult de prezentarea celor mai buni algo-ritmi care rezolva o problema, si mai putin de demonstrarea aproape ntotdeaunaextrem de tehnica a stabilitatii lor numerice.

    0.5 Calitatile unui algoritm numeric

    Pentru a ncheia acest capitol, sa precizam criteriile dupa care se apreciaza calitateaunui algoritm numeric.

    Numarul de operatii. Timpul de executie al unui program pe un calculatorprecizat este o caracteristica de prim ordin a acestuia. De regula, un program seexecuta de mai multe ori, pentru a rezolva o anume problema pentru diverse datede intrare; timpul de executie permite aprecierea numarului de solutii care se potobtine ntr-un anumit timp, de obicei impus.

    Desigur, este de dorit a estima timpul de executie al unui program nainte decrearea sa efectiva, numai pe baza algoritmului implementat de program. O bunamasura este numarul de operatii aritmetice efectuate; n algoritmii numerici eleconstituie de obicei partea majoritara a operatiilor, cele cu ntregi sau logice avando pondere mica, atat ca numar, cat si ca durata de executie.

    Numim flop o operatie aritmetica elementara (adunare, scadere, nmultire, m-partire). Numarul de operatii al unui algoritm este numarul de flopi necesariobtinerii rezultatului. Trebuie precizat ca desi numarul de operatii poate indicadoar cu aproximatie timpul de executie pe un calculator dat, n schimb este o foartebuna masura pentru compararea a doi algoritmi.

  • 16 CAPITOLUL 0. CONCEPTE FUNDAMENTALE

    De regula, numarul de operatii Nop al unui algoritm e functie de dimensiuneaproblemei care, de multe ori, poate fi apreciata prin numarul datelor de intrare,Nop = f(n). In calculul numeric, de obicei f este un polinom (de grad mic),f(n) = a0n

    k + a1nk1 + . . .+ ak. Pentru ca f poate avea o expresie complicata, se

    pastreaza doar termenul cel mai semnificativ si se scrie Nop a0nk. O astfel deaproximare este cu atat mai buna cu cat n este mai mare. Pentru aprecieri purcalitative, vom omite a0 si vom scrie

    3 Nop = O(nk).

    Memoria ocupata. Pentru executia unui algoritm (program) este necesaramemorarea datelor de intrare, rezultatelor, precum si a altor valori intermediare.Numarul de elemente n FVM necesare n acest scop se numeste memoria ocupatade algoritm.

    In majoritatea cazurilor, datele de intrare nu mai sunt necesare la terminarea al-goritmului. Spatiul de memorie ocupat de ele poate fi utilizat pe parcursul executieialgoritmului pentru a memora rezultate partiale si/sau finale. In acest caz se spuneca efectuam calculele pe loc.

    Stabilitatea numerica, discutata n paragraful anterior, arata acuratetea rezul-tatelor obtinute de algoritmul numeric (n ipoteza ca datele initiale 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 conditionarea problemei, care influen-teaza si ea acuratetea rezultatului. Intereseaza n special performantele algoritmuluipentru probleme rau conditionate, adica atunci cand erorile datelor de intrare suntmult amplificate. In orice caz, calculul solutiei e bine a fi nsotit de determinarea(sau estimarea) conditionarii problemei, adica de calculul unei cantitati de tip (0.11).Putem adauga astfel un al patrulea criteriu de apreciere a unui algoritm:

    Siguranta n functionare capacitatea de a semnala situatiile n care rezultatulpoate fi afectat de erori importante datorate relei conditionari a problemei. Deciziade a utiliza sau nu un astfel de rezultat revine utilizatorului sau unui programexpert.

    0.6 Implicatiile arhitecturii calculatoarelor asupra

    organizarii algoritmilor

    In consideratiile din sectiunea precedenta am presupus calculatorul pe care se vorimplementa algoritmii ca avand arhitectura clasica von Neumann, schitata n figura0.4a; pe un astfel de calculator, n principiu, pentru fiecare operatie aritmeticase aduc operanzii din memoria M n unitatea centrala UC, se executa operatia sirezultatul este depus napoi n M. Cu acest mod de operare, timpul de executiee dictat esentialmente de numarul de operatii n virgula mobila, durata traficuluintre M si UC fiind proportionala cu numarul de flopi.

    In ultimele doua decenii au aparut numeroase tipuri de arhitecturi pe care timpulde executie a unui algoritm nu mai este proportional cu numarul de operatii n

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

  • 0.6. IMPLICATIILE ARHITECTURII CALCULATOARELOR 17

    UC

    M

    ?

    6

    UCS UCV

    M

    ?

    6

    MR

    UC

    (a) (b) (c)

    MP

    ?6

    ?6

    Fig. 0.4: Arhitecturi de calculatoare: (a) von Neumann; (b) vectoriala; (c) cumemorie ierarhica

    virgula mobila. Vom exemplifica n continuare cu doua arhitecturi larg raspandite,n special n gama calculatoarelor de mare performanta.

    Calculatoarele vectoriale au doua (tipuri de) unitati de calcul, ca n figura0.4b. Una dintre unitati UCS este obisnuita; ea executa operatii scalare, adicaoperatiile aritmetice uzuale. Cealalta UCV este dedicata operatiilor vectoriale,adica unor operatii aritmetice de acelasi tip repetate pentru mai multe perechi dedate; de exemplu, adunarea a n perechi de numere, xi + yi, i 1 : n. Daca pe uncalculator von Neumann nu e nici o diferenta de viteza ntre astfel de operatii, pecalculatoarele vectoriale se executa mult mai rapid operatiile vectoriale; explicatia erelativ simpla: UCV e astfel construita ncat datele o parcurg ca pe o banda rulantacu mai multe posturi de lucru, fiecare pereche de date suferind la un moment dato alta operatie intermediara (daca sunt p posturi de lucru, timpul de producere aunui rezultat este de aproximativ p ori mai mic). La aceasta se adauga si un mod decomunicatie sofisticat ntre M si UCV, astfel ncat UCV sa poata fi n permanentaalimentata cu date. In schimb, UCS prelucreaza doar o pereche de date la un mo-ment dat. Deci, un algoritm eficient pe un calculator vectorial va contine mai alesoperatii de tip vectorial.

    Calculatoarele cu memorie ierarhica au structura sugerata n figura 0.4c. Prin-cipala noutate a acestei arhitecturi este organizarea memoriei pe cel putin douaniveluri. Timpul de acces la memorie creste odata cu distanta dintre unitatea cen-trala si memoria respectiva; memoria rapida (MR) are un timp de acces sensibilmai mic decat cel al memoriei principale (MP), dar si o capacitate mult mai mica;aceste caracteristici provin mai ales din tehnologia de realizare, diferita de cea amemoriei principale (totusi, n mod natural, o memorie mai mica este mai rapida).

    Transferurile ntre UC si MR dureaza putin n comparatie cu timpul de executieal unei operatii n virgula mobila; n schimb, transferurile ntre MR si MP dureazamai mult. De aceea, un algoritm eficient pe un calculator cu memorie ierarhica areun numar cat mai mic de transferuri implicand MP, acesta fiind criteriul principal de

  • 18 CAPITOLUL 0. CONCEPTE FUNDAMENTALE

    apreciere, si nu numarul de operatii. Caracteristica tipica a unui astfel de algoritmeste organizarea calculelor la nivel de bloc de matrice, operandu-se intensiv cu dateaflate ntr-o aceeasi zona de memorie, suficient de mica pentru a ncapea n MR.

    Concluzia care se impune este ca utilizarea unui acelasi algoritm pentru re-zolvarea unei anume probleme pe toate arhitecturile ar fi ineficienta. Vom sugera,n capitolele urmatoare, metode de crestere a eficientei algoritmilor pe calculatoarevectoriale si cu memorie ierarhica. De obicei, este necesara doar o reorganizarea calculelor; alteori, nsa, algoritmi noi se dovedesc mult mai eficienti pe acestearhitecturi.

    O alta clasa de arhitecturi de mare performanta cuprinde calculatoarele para-lele. Acestea au mai multe procesoare identice care pot lucra independent si carecoopereaza printr-un mediu de comunicatie (legaturi directe sau memorie comuna).Algoritmii eficienti pe arhitecturi paralele au multe caracteristici ce i diferentiazanet de cei secventiali; tratarea lor impune instrumente specifice, de aceea nu i vomaborda n prezenta lucrare, ci n una urmatoare, dedicata numai lor. Pentru ointroducere 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. Saconsideram numerele x1 = 0.001, x2 = 1, x3 = 1, reprezentate ntr-un FVM cu = 10,t = 3. Cat de mare este eroarea relativa atunci cand se calculeaza y = x1 + x2 + x3 ?

    P 0.2 Gasiti o limita a erorii relative pentru calculul n virgula mobila al sumeiy = x1 + x2 + x3; presupuneti ca x1, x2, x3 sunt numere n virgula mobila.

    P 0.3 Sa consideram problema calculului solutiei ecuatiei liniare ax+ b = 0, cu a, b R,a 6= 0. Pentru ce valori ale datelor de intrare a, b este aceasta problema rau conditionata ?Algoritmul pentru calculul solutiei este x = b/a; este acest algoritm numeric stabil ?P 0.4 Aceeasi ntrebare pentru ecuatia (a1+a2)x+(b1+b2) = 0, n care datele de intraresunt a1, a2, b1, b2 R.P 0.5 Se considera un FVM definit de (, t, p). Care este distanta ntre 1 si cel maiapropiat numar reprezentabil n virgula mobila, mai mare ca 1 ?

    P 0.6 Gasiti limita (superioara) a erorii relative a functiei de rotunjire care asociazafiecarui x [M,M ] cel mai apropiat numar n virgula mobila.P 0.7 Ce formula recomandati pentru calculul n virgula mobila: x2y2 sau (xy)(x+y) ?(Se presupune ca x si y sunt numere n FVM.)

  • Capitolul 1

    Algoritmi elementari de

    calcul numeric

    Acest capitol este dedicat prezentarii notiunilor matematice aflate la baza dez-voltarilor ulterioare, formularii problemelor de calcul pe care le vom rezolva, ndiverse variante, pe ntreg parcursul lucrarii, precum si descrierii unor primi algo-ritmi numiti ad-hoc elementari, unii folositi ca unelte mai tarziu, altii deja rezolvandprobleme sau cazuri particulare ale unor probleme semnificative.

    Notiunile matematice apartin n mare majoritate algebrei liniare. Am ncercato prezentare de sine statatoare, dar, desigur, cunostintele anterioare ale cititoruluisunt binevenite.

    Fiecare sectiune a capitolului are doua parti: prima, cu nuanta teoretica, deparcurgere a unor definitii si proprietati fundamentale; a doua, de aspecte algo-ritmice, n care sunt prezentati si analizati algoritmi simpli, moduri de memorarea datelor, artificii numerice etc. Subtitlurile acestor din urma parti vor ncepe cusigla AA.

    Principalii algoritmi prezentati rezolva urmatoarele probleme: produsul ma-triceal (cu diversele lui cazuri particulare: produsul scalar, produsul exterior, pro-dusul matrice-vector), calculul normelor vectoriale si matriceale, rezolvarea sis-temelor liniare triunghiulare si calculul valorilor si vectorilor proprii ai matricelortriunghiulare. Sunt prezentate modalitatile prin care se maresc performantele algo-ritmilor pe diverse arhitecturi de calculatoare. Capitolul se ncheie cu prezentarearutinelor BLAS, extrem de utilizate n calculul numeric.

    1.1 Vectori. Spatiul vectorial Rn

    In aceasta lucrare vom utiliza de regula entitati (vectori si matrice) construite cunumere reale; majoritatea definitiilor si proprietatilor sunt valabile si pentru numerecomplexe; vom face diferentierile necesare atunci cand va fi cazul. Un numar real R va fi numit si scalar; scalarii vor fi notati de obicei cu litere grecesti mici.

    19

  • 20 CAPITOLUL 1. ALGORITMI ELEMENTARI

    6

    -1

    +

    x

    x1

    x2x3

    (a)

    6

    -

    +

    6

    -+

    1

    1

    1e1

    e3

    e2

    (b)

    Fig. 1.1: (a) Un vector n R3 si coordonatele sale; (b) vectorii unitate n R3

    Vectori. Un vector real x de dimensiune n este o colectie de n numere realedispuse ordonat ntr-o coloana

    x =

    x1x2...xn

    , (1.1)

    numerele xi fiind numite componente (elemente, sau coordonate) ale vectorului x.In general, vom nota vectorii cu litere latine mici, iar elementele lor cu litera re-spectiva si indicele pozitiei. Pentru economie de spatiu tipografic, vom nota deseorix = [x1 . . . xn]

    T , unde xT = [x1 . . . xn] este vectorul linie cu aceleasi elemente can (1.1), iar indicele superior T denota operatia de transpunere.

    Multimea tuturor vectorilor de dimensiune n va fi notata cu Rn si va fi asimi-lata cu spatiul real n-dimensional. In consecinta, din punct de vedere geometric, unvector reprezinta segmentul orientat care uneste originea spatiului real cu n dimen-siuni 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 reiesind dincontext; geometric, acesta este originea spatiului n-dimensional. Pentru o mai bunantelegere, vom ilustra unele concepte n R2 sau R3; figura 1.1a prezinta un vectorsi semnificatia (de coordonate) a elementelor sale.

    Vectorii din Rn care au un element egal cu 1 si celelalte nule se numesc vectoriunitate; ei vor fi notati

    ei = [0 . . . 0 i1

    1 0 . . . 0 ni

    ]T ,

    indicele aratand pozitia valorii 1. Spre exemplu, vectorii unitate din R3 suntprezentati n figura 1.1b.

    Doi vectori sunt egali cand toate componentele lor de acelasi indice sunt egale;deci, daca x, y Rn, atunci x = y cand xi = yi, i 1 : n.

  • 1.1. VECTORI. SPATIUL VECTORIAL RN 21

    -

    :

    x

    yx+ y

    - -x x

    (a) (b)

    Fig. 1.2: (a) Suma a doi vectori n R2; (b) Produsul cu un scalar

    Introducem acum operatiile elementare cu vectori.Suma a doi vectori x, y Rn este vectorul z Rn definit prin zi = xi + yi,

    i 1 : n; asadar, suma se face pe componente. In acest fel sunt mostenite toateproprietatile 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 operatia 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 multiplicand cu fiecarecomponenta a vectorului x. Produsul cu un scalar este o operatie externa pe Rn.

    Semnificatiile geometrice ale celor doua operatii sunt prezentate n figura 1.2;adunarea se face dupa regula paralelogramului, iar produsul cu un scalar modificadoar lungimea vectorului, pastrandu-i directia.

    Multimea Rn mpreuna cu operatiile de adunare si produs cu un scalar arestructura de spatiu vectorial, adica, n afara structurii de grup comutativ fata deadunare, mai sunt satisfacute urmatoarele proprietati ale produsului cu un scalar:

    1. 1 x = x;2. (x) = ()x;3. (+ )x = x+ x;4. (x + y) = x + y.

    Combinatie liniara. Fie X Rn o multime avand ca elemente vectorii 1x1, x2, . . . , xp. Vectorul

    ydef= 1x1 + 2x2 + . . .+ pxp =

    pi=1

    ixi (1.2)

    se numeste combinatie liniara a vectorilor din X cu coeficientii 1, 2, . . . , p R.Daca toti coeficientii sunt nuli, combinatia se numeste triviala.

    Vectorii din X sunt liniar independenti daca nu exista o combinatie liniara netri-viala a elementelor lui X care sa fie nula. Daca o astfel de combinatie exista, vectoriidin X sunt numiti liniar dependenti.

    1Se observa ca acum xi este un vector si nu un element de vector; asadar, folosim indicii sipentru a numerota vectorii dintr-o multime.

  • 22 CAPITOLUL 1. ALGORITMI ELEMENTARI

    Daca vectorii sunt liniar dependenti, atunci cel putin unul dintre ei se poateexprima printr-o combinatie liniara a celorlalti; i.e., daca

    pi=1 ixi = 0, atunci

    exista j 6= 0, si deci xj = p

    i=1,i6=j(i/j)xi.Evident, ntr-o multime de vectori independenti, nici unul dintre ei nu se poate

    exprima printr-o combinatie liniara a celorlalti. De exemplu, vectorii unitatee1, . . . , en sunt liniar independenti. Daca X Rn este o multime de vectoriliniar independenti si y =

    pi=1 ixi Rn este o combinatie liniara a acestora,

    atunci coeficientii combinatiei liniare sunt unici (demonstrati).

    Subspatiu liniar. O multime S de vectori din Rn este numita subspatiu liniaral spatiului Rn daca sunt ndeplinite urmatoarele doua conditii:

    1. x+ y S, x, y S;2. x S, R, x S.

    Asadar, orice combinatie liniara a unor vectori din S apartine tot lui S; altfel spus,S e invariant la combinatii liniare. Evident, orice subspatiu liniar contine vectorulnul (originea).

    Fie X Rn o multime de vectori si S multimea tuturor combinatiilor liniare alevectorilor din X . Atunci S e un subspatiu liniar, numit subspatiul generat de X . Deexemplu, n R3 doi vectori genereaza de regula un plan; daca vectorii sunt coliniari(adica exista scalarul a.. y = x), atunci subspatiul generat este o dreapta.

    Fie S Rn un subspatiu; o multime de vectori B S este baza a subspatiuluiS daca:

    1. elementele lui B sunt liniar independente;2. S e generat de B.

    Asadar o baza contine numarul minim de vectori cu ajutorul carora se poate generasubspatiul.

    Daca B = {b1, . . . , bm}, atunci x S se scrie n mod unic n forma uneicombinatii liniare a vectorilor din baza, x =

    mi=1 ibi. Numerele i se numesc

    componentele sau coordonatele, vectorului x n raport cu baza B.De exemplu, e1, . . . , en formeaza o baza pentru R

    n, numita si baza canonica;componentele vectorului x, n sensul definitiei (1.1), sunt componentele n raportcu aceasta baza, deoarece evident x =

    ni=1 xiei.

    Un subspatiu are o infinitate de baze, dar toate au acelasi numar de elemente.Evident, un vector x 6= 0 are coordonate diferite n raport cu aceste baze.

    Dimensiunea unui subspatiu, notata dimS, este numarul vectorilor din baza,adica numarul maxim de vectori din S liniari independenti sau, cum am mentionatdeja, numarul minim de vectori care genereaza S.

    De exemplu, Rn are dimensiunea n, numarul de vectori din baza canonica; unplan n R3 are dimensiunea 2.

    Doua subspatii S, T Rn se numesc complementare daca1. S T = {0}.2. Rn este generat de S T .

  • 1.1. VECTORI. SPATIUL VECTORIAL RN 23

    CCCCCCCCCC

    CCCCCCCCCC

    S T

    -

    6

    +

    Fig. 1.3: Subspatii complementare n R3: un plan S si o dreapta T

    In acest caz vom utiliza notatia Rn = ST . Fiecare dintre cele doua subspatii estenumit complementul celuilalt. Orice vector x Rn se poate exprima n mod unicprin x = s + t, cu s S, t T . De asemenea, dimS + dim T = n. De exemplu,n figura 1.3 sunt reprezentate un plan si o dreapta n R3, care constituie imaginilegeometrice a doua subspatii complementare.

    Sa observam ca subspatiul complementar al unui subspatiu nu este, n general,unic. In exemplul din figura 1.3, orice dreapta care nu apartine planului este com-plementara acestuia.

    Spatiul vectorial complex Cn se defineste analog cu spatiul Rn si are aceleasiproprietati, deoarece proprietatile corpului numerelor reale folosite mai sus suntidentice cu cele ale corpului numerelor complexe.

    Desigur, orice vector x Cn se poate scrie n forma x = u + iv, cu u, v Rn sii unitatea imaginara.

    AA. Saxpy. Vom descrie acum n termeni algoritmici o operatie fundamentalacu vectori, anume y x + y, cu x, y Rn, R, operatie numita Saxpy2.Notatia , citita ia valoarea, are semnificatia de atribuire. Cu alte cuvinte,ntr-un program ce realizeaza operatia si n care vectorii x si y reprezinta variabile,vectorul calculat x + y este depus n variabila y, suprascriind valoarea initiala aacesteia. Vom introduce direct si alte conventii de scriere a algoritmilor, cu premizaca cititorul are notiuni elementare despre limbajele de programare de nivel nalt.

    Algoritmul 1.1 (Saxpy) (Se dau x, y Rn. Se calculeazay x + y Rn.)

    1. Pentru i = 1 : n1. yi yi + xi

    2Notatia provine din initialele variabilelor folosite: x Plus y; n BLAS, initiala S semnificafaptul ca calculele se efectueaza n Simpla precizie; ea este atasata n mod traditional numeluioperatiei.

  • 24 CAPITOLUL 1. ALGORITMI ELEMENTARI

    Comentarii. Instructiunea Pentru i = 1 : n nseamna repetarea executiei, pentrutoate valorile indicate ale indicelui i, a instructiunilor ce i urmeaza (pana la primainstructiune aflata la acelasi nivel cu Pentru). Instructiunile sunt referite prinsecvente de numere cuprinzand (de la dreapta spre stanga) numarul din algoritm alinstructiunii respective si numerele instructiunilor carora le este subordonata (de lacea mai apropiata la cea mai departata). In algoritmul Saxpy, prima instructiuneeste 1, a doua 1.1.

    Contorizand operatiile executate de algoritmul 1.1, constatam ca fiecare executiea instructiunii 1.1 necesita 2 flopi (o nmultire si o adunare), deci, n total, suntnecesari Nop = 2n flopi.

    In continuare, Saxpy va fi privita ca operatie elementara si va fi apelata prinSaxpy(, x, y); ea face parte din grupul operatiilor de nivel 1, mpreuna cu alteoperatii, dintre care unele vor fi prezentate ulterior3.

    Asa cum este normal, Saxpy si celelalte operatii de nivel 1 sunt executatemai eficient pe calculatoare vectoriale. De aceea, pe astfel de calculatoare, existatendinta de a scrie toti algoritmii n termeni de operatii de nivel 1 si nu prin operatiiaritmetice elementare.

    1.2 Produs scalar. Norme. Ortogonalitate

    Produsul scalar este o functie f : Rn Rn R cu proprietatile: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 si f(x, x) = 0 x = 0 (pozitivitate).Produsul scalar standard n Rn, cel pe care l vom utiliza de obicei, se defineste

    prin f(x, y)not= yTx, unde yTx

    def=n

    i=1 xiyi. Invitam cititorul sa verifice satisface-rea celor patru proprietati ale produsului scalar.

    Spatiul Rn mpreuna cu produsul scalar uzual este un spatiu euclidian (n el estevalabila o geometrie similara cu cea din R2 si R3, cunoscuta din liceu).

    Norme. Prin norma se asociaza unui vector o marime (lungime). O normavectoriala este o functie : Rn R+, notata de obicei (x) = x, care satisfaceurmatoarele conditii:

    1. x > 0, x Rn, x 6= 0 (pozitivitate);2. x = || x, x Rn, R (omogenitate);3. x+ y x+ y, x, y Rn (inegalitatea triunghiului).Se deduce imediat ca 0 = 0 si x = x.Cea mai utilizata norma vectoriala este cea indusa de produsul scalar si se

    numeste norma euclidiana sau norma 2:

    x2 =xTx =

    ni=1

    x2i . (1.3)

    3Numerotarea nivelelor se face dupa exponentul lui n din expresia numarului de flopi necesarila executie; operatiile 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 particularde norma p (sau norma Holder). Pentru p 1, norma p se defineste prin

    xp =(

    ni=1

    |xi|p)1/p

    .

    Alte cazuri particulare de norma p folosite curent sunt normele 1 si infinit,definite, n ordine, prin

    x1 =ni=1

    |xi|,x = max

    i=1:n|xi|.

    Pentru a ilustra geometric cele trei norme de mai sus, figura 1.4 prezinta cer-curile de raza 1 n R2, adica locul geometric al punctelor x R2 pentru carexp = 1, pentru p = 1, 2,.

    Doua norme pe Rn, sa zicem q si r, se numesc echivalente daca exista1, 2 > 0 astfel ncat pentru orice x Rn avem

    1xq xr 2xq. (1.4)Oricare doua norme p sunt echivalente. De exemplu (demonstrati !):

    x x1 nx;

    x x2 nx;

    x2 x1 nx2.

    Ortogonalitate. Unghiul a doi vectori nenuli x, y Rn se defineste prin = arccos(yTx/(x y)); geometric, acesta este chiar unghiul format de cei doivectori n planul generat de ei.

    Doi vectori x, y Rn se numesc ortogonali daca produsul lor scalar este nul,xT y = 0; semnificatia geometrica este cea naturala: ntre cei doi vectori este ununghi drept; de aceea vom folosi si notatia x y.

    Vectorii u1, u2, . . . , up se numesc ortogonali daca sunt ortogonali doi cate doi,adica

    uTi uj = 0, i 6= j, i, j 1 : p. (1.5)

  • 26 CAPITOLUL 1. ALGORITMI ELEMENTARI

    Daca, n plus fata de (1.5), vectorii ui au norme euclidiene unitare, ui2 = 1,i = 1 : p, ei sunt numiti ortonormali.

    Vectorii ortogonali sunt liniar independenti; justificarea e intuitiva: un vectorortogonal pe toti ceilalti este ortogonal si pe orice combinatie liniara a lor.

    Orice subspatiu de dimensiune mai mare ca unu are o infinitate de baze ortonor-male 4. De exemplu, baza canonica a Rn, e1, . . . , en, este ortonormala. Folosireabazelor ortonormale este recomandabila nu numai datorita proprietatilor matema-tice, dar si a acuratetii numerice pe care o induc n calcule. Un mod simplu, dar nusi 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 stabilevor fi prezentate n capitolele 3 si 5.

    Teorema lui Pitagora se generalizeaza imediat n Rn: vectorii x, y Rn suntortogonali daca si numai daca x+ y22 = x22 + y22.

    Notiunea de ortogonalitate poate fi extinsa la subspatii liniare. Vectorul x Rneste ortogonal pe subspatiul S Rn daca este ortogonal pe orice vector din S. Douasubspatii S, T Rn sunt ortogonale daca orice vector s S este ortogonal pe oricevector t T ; vom nota S T .

    Un subspatiu S Rn este numit complementul ortogonal al subspatiuluiT Rn daca cele doua subspatii sunt ortogonale si complementare. (x Rn,exista vectorii unici s S, t T astfel ncat x = t + s si t s.) Se utilizeazanotatia S = T ; desigur, avem si T = S.

    Particularitati ale spatiului euclidian complex Cn. Produsul scalar uzualal vectorilor x, y Cn este definit de proprietati usor diferite de cele ale produsuluiscalar din Rn; mai precis, notand cu complex conjugatul scalarului complex ,proprietatile 1 si 3 devin:

    1. f(x, y) = f(y, x);

    3. f(x, y) = f(x, y).

    Produsul scalar uzual n Cn se defineste prin yHx =n

    i=1 xiyi.

    Doi vectori x, y Cn sunt ortogonali daca yHx = 0.Norma euclidiana : Cn R+ se defineste prin x2 =

    xHx, x Cn,

    unde xHx =n

    i=1 |xi|2, iar || este modulul scalarului complex .AA. Calculul produsului scalar. Urmand (1.3), produsul scalar se calculeaza

    astfel:

    Algoritmul 1.2 (DOT Calculul produsului scalar) (Se dau vec-torii x, y Rn. Se calculeaza = yTx.)

    1. 02. Pentru i = 1 : n

    1. + xiyiComentarii. Algoritmul are 2n operatii si face deci parte din grupul operatiilorde nivel 1. Il vom apela prin = DOT(x, y).

    4In general vom spune baze ortogonale n loc de ortonormale, presupunand implicit ca normelevectorilor sunt unitare.

  • 1.2. PRODUS SCALAR. NORME. ORTOGONALITATE 27

    Datorita erorilor numerice, la executie algoritmul DOT nu va calcula = yTx,ci o valoare , despre care se poate demonstra (vezi si problema 1.5):

    | | nM |y|T |x|+ O(2M ), (1.6)

    unde |x| este vectorul modulelor elementelor vectorului x. Eroarea nu este neaparatmica; daca |yTx| |y|T |x|, atunci eroarea relativa din (1.6) poate fi mare.

    AA. Calculul normelor. Normele 1 si se calculeaza usor. De exemplu,x se calculeaza astfel:

    Algoritmul 1.3 (Nrminf Calculul normei infinit a unui vector)(Se da x Rn. Se calculeaza x.)

    1. norm 02. 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,

    apeland DOT(x, x), si apoi extragand radicalul. Exista nsa posibilitatea ca, desix2 este reprezentabil n virgula mobila, xTx = x22 sa nu fie (de exemplu 1025 estereprezentabil n simpla precizie, dar 1050 nu) si atunci calculul lui xTx sa conducala depasire superioara. Similar poate aparea o depasire inferioara, care antreneazapierdere de precizie sau decizii eronate: x2 = 0 desi x 6= 0. Pentru a preveni acesteveniment care ar mpiedica obtinerea rezultatului, se scaleaza vectorul x, adica sempart toate elementele sale cu, de exemplu, x (se aduce astfel x la alta scarade marime). Daca x = x / x, atunci |xi| 1, i 1 : n, si depasirea superioaraeste practic imposibila. (Aparitia unor depasiri inferioare la ridicarea la patrat aunor elemente ale vectorului x nu este suparatoare, deoarece n acest caz rezultatulse aproximeaza cu zero.) Se obtine urmatorul algoritm.

    Algoritmul 1.4 (Nrm2 Calculul normei 2 a unui vector) (Se dax Rn. Se calculeaza = x2, efectuand o operatie de scalare.)

    1. Se calculeaza = x2. = 03. Pentru i = 1 : n

    1. + (xi/)24.

    Comentarii. Se observa ca scalarea, care se efectueaza n instructiunile 1 si 3.1,ncarca algoritmul cu n flopi (2) si n comparatii (1); cu toate acestea, sigurantacalculelor impune de regula utilizarea ei, cu exceptia cazurilor n care informatiileapriorice despre date exclud aparitia depasirii.

    Un rafinament al algoritmului 1.4 este de a utiliza pentru scalare nu x, cicea mai apropiata putere a bazei de numeratie a formatului virgula mobila utilizat(de regula 2). Scalarile din instructiunea 3.1 vor avea rezultate de acelasi ordin demarime ca n cazul scalarii cu x, deci nu va exista pericol de depasire superioara,n schimb toate mpartirile se vor efectua exact, neintroducandu-se nici un fel deeroare numerica suplimentara la calculul normei.

  • 28 CAPITOLUL 1. ALGORITMI ELEMENTARI

    AA. Ortogonalitate numerica. Matematic, testul de ortogonalitate a doivectori x, y Rn este foarte clar: se verifica daca xT y = 0. Numeric nsa, sentampla foarte rar ca DOT(x, y) sa fie exact 0; aceasta se datoreaza atat erorilornumerice aparute n executia algoritmului DOT, cat si erorilor de reprezentareasociate elementelor celor doi vectori. De aceea, pentru a considera doi vectorinumeric ortogonali, ne multumim cu conditia

    |DOT(x / x2, y / y2) | < cM ,

    unde c 1 este o constanta mica, adica produsul scalar al vectorilor normalizatisa fie de acelasi ordin de marime cu epsilon masina al formatului virgula mobilautilizat.

    1.3 Matrice

    Matrice. O matrice reala A este un tablou bidimensional (rectangular) denumere reale dispuse pe m linii si n coloane; notand cu aij elementul matricei depe linia i si coloana j, matricea arata astfel

    A =

    a11 a12 . . . a1na21 a22 . . . a2n...

    ......

    am1 am2 . . . amn

    (1.7)

    Daca m = n, matricea se numeste patrata.

    Multimea tuturor matricelor reale (complexe) cu m linii si n coloane va fi notataRmn (respectiv Cmn). Pastram n continuare conventia de a ne referi la cazulcomplex doar atunci cand este diferit de cel real.

    Se numeste diagonala principala a matricei multimea pozitiilor de indici egali dintablou; pentru A Rnn, suma elementelor de pe diagonala principala se numesteurma si se noteaza tr(A)

    def=n

    i=1 aii.

    Operatii. Definim acum cateva operatii elementare cu matrice: suma, produsulcu un scalar, transpunerea.

    Suma a doua matrice A,B Rmn este matricea C = A+B Rmn, definitaprin cij = aij + bij ; asadar, suma se face adunand elementele de pe pozitii cores-pondente.

    Produsul unei matrice A Rmn cu un scalar R este matriceaB = A Rmn, definita prin bij = aij , i = 1 : m, j = 1 : n.

    Cu aceste doua operatii suma si produsul cu un scalar Rmn are o structurade spatiu vectorial de dimensiune mn. O baza este Eij , i = 1 : m, j = 1 : n, undeEij este matricea nula cu exceptia 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 proprietatisimple ale operatiei 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. In functie de modul de utilizare, o matrice poate fiinterpretata n mai multe feluri. De exemplu, o matrice poate fi vazuta ca alaturarede vectori:

    A = [a1 a2 . . . an], (1.8)

    cu a1, a2, . . . , an Rm notandu-se coloanele matricei A. Aceasta interpretare esteutila n special n lucrul cu subspatii.

    Cu notatia (1.8), produsul dintre matricea A Rmn si vectorul x Rn estevectorul y Rm

    ydef= Ax =

    nj=1

    ajxj , (1.9)

    i.e. combinatia liniara a coloanelor lui A cu coeficientii xj . Un caz particular esteprodusul dintre matricea A si vectorul unitate ej , care are ca rezultat coloana j amatricei: Aej = aj .

    Se poate observa ca produsul matrice-vector defineste o transformare liniaraf : Rn Rm, f(x) = Ax, adica o aplicatie cu proprietatile (evident satisfacute ncazul nostru): f(u+ v) = f(u) + f(v), f(u) = f(u), u, v Rn, R.

    Matrice si subspatii liniare. Deoarece matricea A poate fi privita ca omultime de vectori (coloane), se impune o notatie speciala pentru subspatiulgenerat de coloanele matricei, numit imaginea acesteia:

    ImA = {y Rm | x Rn astfel ncat y = Ax}. (1.10)Un alt subspatiu interesant, de data asta n Rn, este cel al vectorilor avand ca

    elemente coeficientii combinatiilor liniare nule ale coloanelor lui A, numit nucleulmatricei A:

    KerA = {x Rn | Ax = 0}. (1.11)O proprietate fundamentala a acestor subspatii este data de

    Teorema 1.1 Daca A Rmn, atunci ImA si KerAT sunt subspatii ortogonale sicomplementare n Rm, i.e.

    1. ImA KerAT .2. Rm = ImAKerAT .

    Demonstratie. 1. Fie y = Ax ImA si 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 , si deci avem ImAT KerA siRn = ImAT KerA.

  • 30 CAPITOLUL 1. ALGORITMI ELEMENTARI

    -y2

    y3

    y1

    6

    QQQQQk

    (0,1,1)

    (1,0,1)

    (1,1,-1)

    KerAT

    ImA

    Fig. 1.5: KerAT este complementul ortogonal al lui ImA. Datele sunt cele dinexemplul 1.1

    Exemplul 1.1 Fie A =

    1 00 1

    1 1

    .

    Atunci, S = ImA = {y R3 | y = x1x2

    x1 + x2

    , x1, x2 R}, adica S este

    planul de ecuatie y3 = y1 + y2.T = KerAT = {y R3 | AT y = 0} = {y R3 | y2 + y3 = 0, y1 + y3 = 0}, deci

    avem T = {y R3 | y = 111

    } = Im

    111

    .

    Vezi figura 1.5.

    Privind n continuare matricea A n forma (1.8), rangul matricei A este dimen-siunea subspatiului ImA generat de coloanele lui A. Asadar rangA = dim(ImA),sau, altfel spus, rangul este numarul maxim de coloane liniar independente din A.

    Se poate demonstra ca rangA = rangAT si deci rangul este totodata si numarulmaxim de linii liniar independente din A. Recapituland:

    dim ImA = dim ImATnot= r,

    dimKerA = n r,dimKerAT = m r.

    (1.12)

    O matrice A Rmn avand coloanele liniar independente se numeste monica;n acest caz, m n, rangA = n si KerA = {0}. Se mai spune ca A are rang maximpe coloane.

    O matrice A Rmn avand liniile liniar independente se numeste epica; atuncim n, rangA = m si ImA = Rm; se spune ca A are rang maxim pe linii.

  • 1.3. MATRICE 31

    O matrice A Rmn avand una din dimensiuni egala cu 1 este un vector; dacan = 1, vectorul este coloana (acceptiunea implicita), iar daca m = 1 vectorul estelinie. Este clar ca transpusa unui vector linie este un vector coloana si reciproc. Inmod analog cu (1.8), o matrice poate fi scrisa evidentiind liniile:

    A =

    aT1aT2...aTm

    . (1.13)

    Atentie: acum aTi e o notatie pentru vectorul format de linia i a m