Sunteți pe pagina 1din 222

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 Monica


Sebastian Corneliu Serban
i

Cuvant 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 Facultatea
de Automatica si Calculatoare a Universitatii Politehnica din Bucuresti. Lucrarea
expune, n maniera eminamente algoritmica, metodele de rezolvare a problemelor
fundamentale de calcul din algebra matriceala, care constituie primele si, de cele
mai 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 poate
fi 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 minime
de 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 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 conditie nu e strict
necesara, dar constituie un avantaj, pentru ca i permite sa se concentreze asupra
ideilor si nu a detaliilor de implementare ale acestora.
Cartea contine 7 capitole, descrise n cateva cuvinte mai jos. La nceput se
afla o bibliografie de baza, cuprinzand lucrari de larga utilizare, referite cu cifre
romane, care ofera o privire de perspectiva asupra ntregului domeniu. In final
se gaseste o a doua bibliografie, n general formata din articole (referite cu cifre
arabe) privind aspecte specifice ale problemelor tratate si destinata cititorului care
doreste sa adanceasca studiul dincolo de textul de fata. Pentru facilitarea lecturii,
recomandam consultarea listelor de notatii si de prescurtari uzuale, aflate cateva
pagini 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 de
fata. 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 perechea
formata din problema de calcul si algoritmul de rezolvare, relativ la care sunt defi-
ii

nite notiunile fundamentale de conditionare si, respectiv, stabilitate numerica. In


ncheiere, este aruncata o privire asupra modului n care arhitectura calculatorului
influenteaza conceptia algoritmilor.
Capitolul 1 este dedicat expunerii notiunilor primare ale algebrei matriceale
(vectori, subspatii, matrice de diverse tipuri si proprietatile acestora), constituind
totodata o introducere n problematica specifica a capitolelor urmatoare. Algoritmii
prezentati rezolva unele probleme simple, dar fundamentale, cum ar fi nmultirea a
doua matrice, sau unele cazuri particulare, de exemplu cel al matricelor triunghiu-
lare, ale unor probleme mai dificile (rezolvarea sistemelor liniare, calculul valorilor
si vectorilor proprii). Acesti algoritmi sunt larg utilizati n continuare, ca elemente
constructive primare.
Capitolul 2 trateaza metodele directe de rezolvare a sistemelor liniare Ax = b,
cu matrice A nesingulara, prezentand procedura de eliminare gaussiana, inclusiv
strategiile de pivotare adecvate, precum si versiunile compacte ale acestei metode
bazate pe factorizarea LU a matricei A. In afara matricelor de forma generala,
sunt studiate si cazurile, des ntalnite n practica, ale matricelor banda, simetrice si
simetric pozitiv definite. De asemenea, sunt abordate probleme conexe, cum ar fi
calculul inversei si al determinantului.
Capitolul 3 descrie metodele de rezolvare n sensul celor mai mici patrate (CMMP)
a sistemelor liniare Ax = b, n care numarul ecuatiilor difera de cel al necunoscutelor,
deci A este o matrice dreptunghiulara de forma generala. In acest caz se utilizeaza
metode de eliminare specifice, bazate pe aplicarea transformarilor ortogonale (re-
flectori Householder, rotatii 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 expe-
rimentale, statistica, identificarea sistemelor etc.
Capitolul 4 expune principalele metode de calcul al valorilor si 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 proprietati matematice sunt usor de analizat, si ajungand la variantele relativ
sofisticate sub care acesta este implementat n programele profesionale. Alaturi de
cazul general este tratat si cel al matricelor simetrice. Nu sunt uitati alti algoritmi
importanti, utili n cazuri particulare, cum ar fi metodele puterii, puterii inverse,
bisectiei sau Jacobi. Cunoasterea valorilor proprii este utila n analiza stabilitatii
sistemelor dinamice, n studiul vibratiilor (pentru cladiri, poduri, avioane) si 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 pro-
bleme din algebra matriceala, cum ar fi determinarea rangului, calculul unor norme
matriceale, constructia bazelor pentru diverse subspatii, 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 considerand unele variante ale problemei CMMP, de
exemplu CMMP totala sau cu restrictii, frecvent ntalnite n aplicatii.
iii

Capitolul 6 considera calculul valorilor si vectorilor proprii generalizati ai unei


perechi de matrice (A, B). Este prezentat algoritmul QZ, care aduce perechea la
forma Schur generalizata, precum si problema conexa a calculului bazelor ortogo-
nale pentru subspatii de deflatie. Notiunile si algoritmii studiati aici sunt de mare
utilitate n probleme care apar, de exemplu, n teoria sistemelor precum si n analiza
circuitelor electrice sau mecanice cu elemente ideale.
Principalele rezultate ale expunerii sunt concretizate sub forma de algoritmi
de calcul descrisi ntr-un pseudocod extrem de apropiat de implementarea directa
ntr-un limbaj de programare de nivel nalt. Algoritmii au fost testati de autori
n mediul de programare MATLAB; cu toate acestea, orice observatii si propuneri
din partea cititorilor, care sa conduca la eliminarea unor erori sau la mbunatatirea
performantelor, 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. Mentionam
ca o alta sectiune expune ntotdeuna informatii despre conditionarea problemelor de
calcul studiate; n acest fel, cititorul va avea o imagine clara a acuratetii cu care se
pot obtine solutiile numerice ale diverselor probleme studiate. De asemenea, fiecare
capitol 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] implementeaza
cei mai eficienti si siguri algoritmi de calcul numeric matriceal si este instrumentul
cel mai utilizat n acest domeniu. MATLAB [XIV] are o componenta didactica
mai pronuntata, mbinand o interfata utilizator simpla cu o calitate remarcabila a
algoritmilor.
De asemenea, fiecare capitol este nsotit de un set de probleme, n total peste
200, ale caror rezolvari complete sau partiale se gasesc n partea finala a lucrarii.
Recomandam cititorului sa consulte indicatiile sau rezolvarea propusa de autori
numai pentru verificarea solutiei personale sau dupa tentative serioase de gasire a
acesteia. In plus, un mare castig pentru cititor l poate reprezenta implementarea
algoritmilor (cei de baza, din lucrare, si cei derivati, n probleme) precum si testarea
functionarii lor pe exemple numerice reprezentative.
Aducem la cunostinta cititorilor ca Grupul de Calcul Numeric din cadrul catedrei
de Automatica si Ingineria Sistemelor de la Facultatea de Automatica si Calcula-
toare, din care autorii fac parte, dispune de o biblioteca de calcul numeric matriceal
scrisa n limbajul C, care contine implementarea tuturor algoritmilor din lucrare.
Cei interesati pot contacta autorii la urmatoarele adrese de e-mail
bogdan,popeea,jora@lucky.schur.pub.ro
Autorii multumesc colegilor lor prof. Paul Flondor si conf.dr.ing. Ioan Tabus
pentru interesul acordat si n special pentru comentariile si observatiile constructive
facute pe marginea lucrarii. De asemenea, autorii aduc multumiri doamnei redactor
Viorica Fatu, de la Editura ALL Educational, pentru atentia acordata acestei carti
n 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 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 conditionarii problemelor de calcul matriceal si al stabilitatii


numerice a algoritmilor aferenti:

[ 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 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. 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 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., Programare
numerica, Ed. Teora, Bucuresti, 1996.

Lista de notatii
N multimea numerelor naturale
Z multimea numerelor ntregi
R multimea numerelor reale
C multimea 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 spatiul liniar n-dimensional al vectorilor (coloana) x cu n componente reale
xi 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
P
(x, y) = y T x = ni=1 xi yi produsul scalar standard a P doi vectori x, y Rn ; n
H n
cazul complex produsul scalar este (x, y) = y x = i=1 xi yi
Pn 2
kxk = (x, x)1/2 = ( i=1 |xi | )1/2 norma euclidiana a vectorului x Rn
vi

P 1/p
kxkp = ( ni=1 |xi |p ) p-normele vectorului n-dimensional x, p 1; n calcule se
utilizeaza n special kxk1 ,kxk2 = kxk si kxk = maxi=1:n |xi |

Matrice
Rmn spatiul liniar al matricelor cu m 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 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 si 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

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


T 1
AT = (A1 ) = (AT )
H 1
AH = (A1 ) = (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 kA1 k numarul de conditie la inversare al matricei A (k k este o


norma matriceala consistenta)

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


1 1
A+ = (ATA) 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


ncat 1 2 . . . p
1 In calcule, vectorii se identifica cu matricele cu o singura coloana, iar scalarii se identifica cu

matricele (sau vectorii) cu un singur element.


vii

(A) multimea {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(B T A) (tr(B H A)) produsul scalar a doua matrice reale (complexe)

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


2 Pm Pn 2 2 Pr
kAkF = i=1 j=1 |aij | sau kAkF = i=1 i 2
P 1/p
|A|p = ( ri=1 i p ) p-normele Schatten, p 1; n calcule se utilizeaza n spe-
Pr
cial norma-urma |A|1 = i=1 i , norma Frobenius |A|2 = kAkF si norma
spectrala |A| = 1 (A)

kAkp = maxkxkp =1 kAxkp p-normele induse; n calcule se utilizeaza n special


Pm
norma kAk1 = maxP j=1:n i=1 |aij |, norma spectrala kAk2 = 1 (A) si norma
n
kAk = maxi=1:m j=1 |aij |

Transformari
SAT transformare de echivalenta (bilaterala) a matricei A Rmn (S si T sunt
matrice patrate nesingulare; transformarea de echivalenta conserva rangul, iar
daca S, T sunt ortogonale, atunci conserva si valorile singulare)

T 1 AT transformare de asemanare a matricei A Rnn (transformarea de


asemanare conserva valorile proprii)

T T AT transformare de congruenta a matricei A Rnn (T este nesingulara; apli-


cata unei matrice A simetrice, transformarea de congruenta conserva rangul
si inertia i.e. numerele de valori proprii negative, nule si, respectiv, pozitive)

Daca T este ortogonala, atunci T 1 = T T si transformarea T T AT se numeste


transformare de asemanare ortogonala

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 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 Concepte fundamentale 1
0.1 Reprezentarea n virgula mobila . . . . . . . . . . . . . . . . . . . . . 2
0.2 Aritmetica n virgula mobila . . . . . . . . . . . . . . . . . . . . . . . 7
0.3 Conditionarea problemelor de calcul . . . . . . . . . . . . . . . . . . 10
0.4 Stabilitatea numerica a algoritmilor . . . . . . . . . . . . . . . . . . 12
0.5 Calitatile unui algoritm numeric . . . . . . . . . . . . . . . . . . . . 15
0.6 Implicatiile arhitecturii calculatoarelor . . . . . . . . . . . . . . . . . 16
0.7 Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

1 Algoritmi elementari 19
1.1 Vectori. Spatiul vectorial Rn . . . . . . . . . . . . . . . . . . . . . . 19
1.2 Produs scalar. Norme. Ortogonalitate . . . . . . . . . . . . . . . . . 24
1.3 Matrice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
1.4 Inmultirea matricelor . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
1.5 Norme matriceale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
1.6 Matrice structurate . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
1.7 Matrice bloc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
1.8 Matrice normale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
1.9 Sisteme de ecuatii liniare . . . . . . . . . . . . . . . . . . . . . . . . . 49
1.10 Valori si vectori proprii . . . . . . . . . . . . . . . . . . . . . . . . . . 59
1.11 Rutinele BLAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
1.12 Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

2 Rezolvarea sistemelor de ecuatii liniare 69


2.1 Transformari elementare . . . . . . . . . . . . . . . . . . . . . . . . . 70
2.2 Triangularizare prin eliminare gaussiana . . . . . . . . . . . . . . . . 72
2.3 Strategii de pivotare . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
2.3.1 Pivotare partiala . . . . . . . . . . . . . . . . . . . . . . . . . 76
2.3.2 Pivotare completa . . . . . . . . . . . . . . . . . . . . . . . . 78
2.4 Factorizari LU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
2.4.1 Factorizari LU rezultate din eliminarea gaussiana . . . . . . . 82
2.4.2 Factorizari LU compacte . . . . . . . . . . . . . . . . . . . . . 84
2.4.3 Factorizari LU prin eliminare gaussiana la nivel de bloc . . . 86
2.4.4 Factorizari LU compacte la nivel de bloc . . . . . . . . . . . . 89
2.5 Rezolvarea sistemelor liniare . . . . . . . . . . . . . . . . . . . . . . . 91
x CUPRINS

2.6 Calculul inversei si al determinantului . . . . . . . . . . . . . . . . . 93


2.6.1 Calculul inversei unei matrice . . . . . . . . . . . . . . . . . . 94
2.6.2 Calculul determinantului . . . . . . . . . . . . . . . . . . . . 97
2.7 Conditionarea sistemelor liniare . . . . . . . . . . . . . . . . . . . . . 97
2.8 Stabilitate numerica . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
2.8.1 Scalarea sistemelor liniare . . . . . . . . . . . . . . . . . . . . 103
2.8.2 Rafinarea iterativa a solutiei calculate . . . . . . . . . . . . . 104
2.9 Sisteme banda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
2.10 Sisteme simetrice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
2.11 Sisteme simetrice pozitiv definite . . . . . . . . . . . . . . . . . . . . 114
2.12 Rutine LAPACK si 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 Rotatii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
3.2 Transformari unitare . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
3.2.1 Reflectori complecsi . . . . . . . . . . . . . . . . . . . . . . . 138
3.2.2 Rotatii 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 pseudosolutiei . . . . . . . . . . . . . . . . . . . . . . 164
3.5.2 Calculul proiectiilor . . . . . . . . . . . . . . . . . . . . . . . 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 Conditionarea problemelor CMMP . . . . . . . . . . . . . . . . . . . 177
3.7.1 Preliminarii . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
3.7.2 Sensibilitatea pseudosolutiei . . . . . . . . . . . . . . . . . . . 180
3.7.3 Sensibilitatea solutiei normale . . . . . . . . . . . . . . . . . . 182
3.8 Stabilitatea algoritmilor de triangularizare . . . . . . . . . . . . . . . 183
3.8.1 Stabilitatea numerica a algoritmilor fundamentali . . . . . . . 184
3.8.2 Acuratetea solutiilor calculate . . . . . . . . . . . . . . . . . . 185
3.8.3 Scalarea problemei CMMP . . . . . . . . . . . . . . . . . . . 186
3.8.4 Rafinarea iterativa a solutiei 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 si 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 si bine precizate de
operatii elementare (cum ar fi adunarea, nmultirea etc.) prin care solutia problemei
este calculata n functie de datele initiale. Desi matematica furnizeaza deseori, n
demonstratiile 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.
Discrepanta ntre corectitudinea matematica a unui algoritm si adecvarea lui la
specificul calculului numeric practic poate proveni din doua cauze importante. Una,
evidenta, consta n (eventuala) complexitate (n ce priveste numarul operatiilor de
executat si memoria ocupata de date), care poate duce fie la timpi de executie foarte
mari, deci nepractici, fie, pur si simplu, la imposibilitatea executiei programului
care implementeaza algoritmul. A doua cauza, mai subtila, o constituie erorile
care nsotesc calculul numeric; prin acumulare, acestea pot periclita acuratetea
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 implicand o infinitate de operatii, din care,
prin trunchiere, se retine doar un numar finit de operatii; n ambele cazuri, prin
natura lucrurilor, algoritmul va furniza o solutie aproximativa.
In fine, exista erori avand cauze specifice calculului numeric, care opereaza cu
numere 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 format
bine precizat si ocupand un numar relativ mic de locatii de memorie, de exemplu
4 sau 8 octeti; astfel, o infinitate de numere este reprezentata printr-un numar
finit 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 memoria
calculatorului, erori numite de rotunjire; aceasta nu se ntampla pentru ca unitatea
2 CAPITOLUL 0. CONCEPTE FUNDAMENTALE

centrala (microprocesorul, de exemplu) ar gresi la calcule, ci, din nou, datorita


faptului 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. Vom
obtine 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 si
ntr-un limbaj de programare pe care nu le precizam adunand 0.1+0.2 si scazand
din rezultat 0.3 nu obtinem 0, asa cum ne-am astepta, ci aproximativ 5.5 1017 ; 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.
In acest capitol ne vom ocupa de aspecte specifice elementare ale calculului
numeric: modul de reprezentare a numerelor reale, felul n care se apreciaza calitatea
unui algoritm numeric, cuantificarea efectului erorilor de rotunjire asupra acuratetii
solutiei numerice a unei probleme; acest ultim scop face obiectul analizei numerice
si 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 prezenta
doua 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 x
= = .
x |x|

Daca x Rn , se nlocuieste n relatiile 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, 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 absoluta
este aceeasi ca n cazul precedent, = 103 , dar eroarea relativa este de o suta de
ori mai mare: = 101 . Raportandu-se la valoarea lui x, eroarea relativa este mult
mai adecvata pentru estimarea calitatii aproximarii x.
Erorile de reprezentare apar datorita memorarii n calculator a numerelor reale
printr-o secventa finita de simboluri (cifre binare). Pentru a prezenta o estimare
a acestor erori, sa reamintim bine cunoscuta reprezentare pozitionala a numerelor
reale. Fie

N, 2, baza de numeratie;

C = {0, 1, . . . , 1}, multimea cifrelor n baza , adica primele numere


naturale.
0.1. REPREZENTAREA IN VIRGULA MOBILA 3

Se stie ca orice numar x R poate fi scris unic sub forma unei secvente infinite

x = san1 an2 . . . a0 .a1 a2 a3 . . . , (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
n1
!
X X
i i
x=s ai + ai . (0.2)
i=0 i=1

Convenim sa eliminam din scriere secventa infinita de zerouri finale, atunci cand
este 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, numarul


exprimat simplu n baza 10:
0.1 = 1 101
are o reprezentare de lungime infinita n baza 2 (verificati din nou egalitatea):

X
0.0001100110011 . . . = (24 + 25 ) 24k .
k=0

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 numar
finit de cifre si deci, prin natura ei, este aproximativa. O buna aproximare printr-o
secventa 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 Format
Virgula 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.f1 f2 . . . ft , f1 6= 0, fi C

este un numar fractionar cu semn (plus sau minus), normalizat (i.e. f1 6= 0), cu
t cifre, denumit mantisa, iar
e = e1 e2 . . . 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 = . . . , unde


| {z }
p
= 1) si U cea maxima (de exemplu U = L). Se observa ca toate numerele
n 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, de
exemplu, = 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 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

si 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 xi1 | / |xi | are aproximativ
aceleasi valori pentru orice i.

Exemplul 0.4 Un FVM pe 32 biti poate fi urmatorul: (, t, p) = (2, 24, 7). Doi
biti sunt atribuiti reprezentarii semnelor mantisei si exponentului; deoarece primul
0.1. REPREZENTAREA IN VIRGULA MOBILA 5
-1.5 -1 -0.5 0.5 1 1.5
0 -
x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12

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

0 1 0 0 1 1 0 0 0 1 1 0 1 0 0 1 1 0 1 1 1 0 0 0 0 0 0 0 1 0 1 1
6 -
exponent (7 biti)
6 mantisa (23+1 biti) -

semn exponent semn numar (mantisa)

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 = 2127 = (210 )13 23 1038 ,
M 1038 (putem aproxima 210 103 ). Aceasta arata ca FVM acopera un domeniu
larg de numere, utilizand un numar relativ mic de cifre binare. Acest exemplu este
foarte apropiat de formatul standard IEEE pentru numere n virgula mobila n
simpla 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 reprezinta


semnul). 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, precum
si unele simboluri speciale despre care se va vorbi mai tarziu, 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), 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 lui
cu un numar x F. Aceasta aproximare poate fi exprimata printr-o functie de
rotunjire.

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


atunci o functie
f l : [M, M ] F
6 CAPITOLUL 0. CONCEPTE FUNDAMENTALE

care asociaza fiecarui x [M, M ] o unica reprezentare n virgula mobila

x = f l(x)

este numita functie de rotunjire. Eroarea relativa de aproximare

|x f l(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, fiecare


x F constituie reprezentarea n VM a unei multimi infinite de numere din
[M, M ]; suntem interesati sa gasim o margine superioara a erorii de reprezentare
pentru o functie de rotunjire data. Exista mai multe functii de rotunjire. O vom
prezenta doar pe cea mai simpla, denumita rotunjire prin taiere. In acest scop, sa
scriem numarul x [M, M ] n forma (0.1) normalizata:

x = f e = 0.f1 f2 . . . ft ft+1 . . . e =
= 0.f1 f2 . . . ft e 0.ft+1 ft+2 . . . et =
= f e + g et ,

unde fi C, f1 6= 0, f = 0.f1 f2 . . . ft , g = 0.ft+1 ft+2 . . .


In mod evident:

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

Functia de rotunjire prin taiere

f l1 : [M, M ] F

este definita prin 


x = f l1 (x) = f e , pentru x 6= 0,
0, pentru x = 0.
Pe scurt, reprezentarea n VM se obtine prin taierea cifrelor mantisei normalizate a
numarului 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 erorii
de reprezentare introduse de f l1 . Intr-adevar, pentru orice x [M, M ] \ {0} avem

|x f l1 (x)| |f e f e | |g| et t
= = e
= e
< 1 = t+1 .
|x| |f | |f |

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 numeratie a FVM) si acesta este motivul pentru care t este
numit precizia reprezentarii n virgula mobila. Numarul t+1 este numit epsilon
masina si reprezinta distanta dintre 1 si urmatorul numar cu reprezentare n FVM
(vezi problema 0.5).
0.2. ARITMETICA IN VIRGULA MOBILA 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 biti pentru mantisa; astfel de numere sunt numite n
dubla precizie. De exemplu, n standardul IEEE, numerele n dubla precizie sunt
memorate pe 64 biti, cu t = 53 si p = 10 (un bit suplimentar este dedicat memorarii
semnului exponentului).
Pentru toate functiile de rotunjire folosite, marginea superioara a erorii de re-
prezentare are forma
t , (0.5)
unde este un numar de ordinul unitatii.
Din (0.5) rezulta existenta unui numar astfel ncat
x = f l(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 repre-
zentat. In baza de numeratie 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 sem-
nificative; n consecinta, eroarea maxima de reprezentare este de aproximativ 107 ,
respectiv 1016 (anume chiar epsilon masina). O prezentare detaliata a standardu-
lui IEEE poate fi gasita n [?].

0.2 Aritmetica n virgula mobila


Calculatoarele cu hardware dedicat operatiilor n virgula mobila sunt prevazute cu
un set de instructiuni pentru implementarea unor operatii cu numere n virgula
mobila ca, de exemplu, adunarea, scaderea, nmultirea sau mpartirea. Trebuie su-
bliniat ca operatiile mentionate difera de cele matematice corespunzatoare deoarece
rezultatul lor apartine ntotdeauna multimii finite F a numerelor n virgula mo-
bila. Asadar operatiile aritmetice nu pot fi executate exact. Eroarea introdusa de
operatiile aritmetice n virgula mobila se numeste eroare de rotunjire. Consecintele
pot fi foarte importante; exista posibilitatea ca erorile de rotunjire sa se acumuleze
si, n calcule lungi, valorile finale sa fie afectate, chiar pana 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). Adunand exact numerele
1.23 si 20.5, amandoua reprezentabile exact n FVM ales, se obtine 21.73. Rotunjit
prin taiere, rezultatul n VM este 21.7, deci diferit de cel exact.
Analiza erorilor de rotunjire se bazeaza pe cunoasterea marginilor superioare ale
erorilor ce apar n operatiile n virgula mobila. Pentru majoritatea calculatoarelor
este valabil urmatorul model al erorilor asociate operatiilor n virgula mobila, bazat
pe evaluarea (0.6): notand cu f l(xy), f l(x/y) si f l(x + y) produsul, catul, respectiv
suma calculate ale numerelor n virgula mobila x si y, atunci, ntr-un FVM cu t cifre
avem
f l(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 unitatii.


Modelul (0.7) este obtinut presupunand ca x op y este calculat exact, apoi rezul-
tatul este transformat n FVM printr-o functie de rotunjire. In realitate, lucrurile nu
stau chiar asa; unitatile specializate pentru calculul n VM nu obtin rezultatul exact,
dar se comporta ca si cum l-ar obtine, lucrand pe baza unor algoritmi nebanali, a
caror cunoastere nu este necesara pentru ntelegerea algoritmilor din aceasta lucrare
si a caror prezentare depaseste cadrul problematicii propuse.
In completarea relatiei (0.7), trebuie sa mentionam ca, atunci cand o operatie
n virgula mobila produce un numar cu un modul prea mare (> M ), apare eroarea
numita de depasire superioara (overflow). Cand rezultatul este prea mic n valoare
absoluta (< m, dar nenula), eroarea se numeste de depasire inferioara (underflow).
Desigur, orice algoritm bine conceput trebuie sa specifice cum se procedeaza n
eventualitatea unor depasiri si, mai ales, sa ncerce evitarea lor (vom explica n
capitolul urmator tehnica folosita scalarea). Depasirea inferioara nu constituie
de regula o eroare grava, de aceea majoritatea calculatoarelor atribuie automat
rezultatului valoarea zero. In cazul unei depasiri superioare, de obicei calculele sunt
oprite sau, cel putin, este afisat un mesaj de avertisment. In standardul IEEE pentru
virgula mobila, exista o valoare speciala, numita Inf (infinit), care este atribuita
rezultatului n cazul unei depasiri superioare; calculele continua cu aceasta valoare;
rezultatele se obtin conform regulilor uzuale de lucru cu infinitati. O alta valoare
speciala 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 calculului
numeric este evaluarea marimii erorii ce afecteaza rezultatul n cazul unei secvente
de 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 = f l(x + y) este
suma 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 semnificative
eronate, iar eroarea relativa aferenta este egala cu 1; totusi, pentru fiecare operatie
n parte, eroarea relativa este mai mica decat 102 .

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

b b2 4ac b + b2 4ac (0.8)
x1 = , x2 = .
2a 2a
Luand b = 10.1, a = 0.0123, c = 32.4, valoarea exacta rotunjita la 3 cifre
semnificative 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, 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. In primul caz anularea trebuie pusa integral
pe seama operatiei matematice de scadere; problema calculului b2 4ac este cauza
erorilor, si nu algoritmul de calcul. In schimb, n al doilea caz, algoritmul de calcul
al 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 ntai
mai 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 urmatoarele
reprezentari (exacte) n baza (d1 6= 0):

x = 0.d1 d2 . . . dk dk+1 . . . dt 1 e ,
y = 0.d1 d2 . . . dk ck+1 . . . ct 0 e .

Rotunjind prin taiere, reprezentarile lor ntr-un FVM cu (, t, p) sunt

x = f l(x) = 0.d1 d2 . . . dk dk+1 . . . dt e ,


y = f l(y) = 0.d1 d2 . . . dk ck+1 . . . ct e .

Diferenta lor, calculata n VM, este

x y = 0.f1 . . . ftk 0 . . . 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 . . . ftk 10 . . . 0 k+e ,

iar eroarea relativa asociata lui este



(x y) (x y) t+1+e
= t1+k .
xy k+e

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 ordinul
t1+k ; atunci cand x si y au multe cifre semnificative identice, deci k aproape de
t, (si acelasi ordin de marime) eroarea asociata rezultatului scaderii poate deveni
uriasa.
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, 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 cand b2 4ac, si deci |b| .
Pentru a evita scaderea unor numere apropiate, se pot folosi formulele

b sgn(b) b2 4ac 2c
x1 = , x2 = . (0.9)
2a b + sgn(b) b2 4ac
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, pornind
de la date de intrare numerice, astfel ncat rezultatele sa poata fi interpretate ca o
aproximatie a solutiei unei probleme matematice pentru datele de intrare respec-
tive. Pentru ca o astfel de problema sa fie bine definita, trebuie asigurate existenta si
unicitatea solutiei. In acest caz, o problema de calcul numeric poate fi ntotdeauna
descrisa ca evaluare a unei functii
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
iesire.
Desigur, aplicatia 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 multime de trei numere reale si

a
x = b D = {x R3 | a 6= 0, b2 4ac 0} R3 .
c
Rezolvarea ecuatiei de gradul II
ay 2 + by + c = 0
este o problema numerica bine definita, deoarece pentru orice x D exista un unic
vector
b sgn(b) b2 4ac
 
y1 2a
R2 ,

y = f (x) = =
y2 2c

2
b + sgn(b) b 4ac
care este solutia problemei.
b) Calculul integralei
Z b
2
et dt,
a
0.3. CONDITIONAREA PROBLEMELOR DE CALCUL 11

unde a, b R sunt date (a 6= b), este de asemenea  o problema numerica bine definita.
a
Intr-adevar, pentru datele de intrare x = D = R2 , exista si este unica
b
R 2
valoarea integralei y R, desi integrala nedefinita et dt nu este exprimabila
prin functii elementare.
Abaterea solutiei calculate fata de solutia exacta a unei probleme numerice poate
avea 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 n
paragraful urmator.
Conditionarea problemei caracterizeaza sensibilitatea solutiei n raport cu pertur-
batiile datelor de intrare. In practica este cunoscuta doar o aproximatie x a datelor
de intrare x si, n cel mai bun caz, presupunand ca toate calculele se efectueaza
exact, putem calcula f (x) n loc de f (x). Daca functia f definind problema noastra
este prea sensibila la variatii ale argumentului, f (x) si 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 conditionata.
Daca ncercam rezolvarea unei probleme rau conditionate pornind de la date
inexacte, atunci solutia obtinuta va fi nsotita de erori mari indiferent de felul n
care este calculata !

Definitia 0.3 Conditionarea numerica sau sensibilitatea locala a unei probleme


f : D Rn Rm ntr-un punct x D este exprimata de amplificarea erorii rel-
ative
kf (x) f (x)k kxk
(x) = , (0.11)
kf (x)k kx xk
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 rau
conditionata.

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

kf (x) f (y)k Lkx yk,

atunci
kxk
(x) L ,
kf (x)k
iar daca f este de clasa C 1 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 conditionarea este o proprietate locala. De obicei, totusi, o
problema este numita bine conditionata daca este bine conditionata n orice punct
x D; de asemenea, este numita rau conditionata, daca exista puncte x D n
care este rau conditionata.
Exemplul 0.11 Problema calculului sumei a doua numere x, y R poate fi
bine sau rau conditionata functie de valorile lui x si y (datele de intrare). (Aici
12 CAPITOLUL 0. CONCEPTE FUNDAMENTALE

 
2 x
f (x, y) = x + y, f : R R; convenim sa scriem si f (x, y) n loc de f ( ),
y
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 + x x, cu |x | 1,
y = y + y y, cu |y | .

Eroarea relativa asociata sumei este (calculul sumei se face exact)

|x + x x + y + y y (x + y)| |x x + y y|
= = . (0.12)
|x + y| |x + y|

Daca x si y au acelasi semn, atunci


|x x| + |y y|

|x| + |y|

si suma este afectata de o eroare de acelasi ordin de marime ca si operanzii; n acest


caz, adunarea este bine conditionata.
Daca x si y au semne diferite, este posibil (atunci cand x si y au si ele semne
diferite) ca si
max(|x|, |y|)
=
|x + y|
sa aiba acelasi ordin de marime. Dar daca |x + y| max(|x|, |y|), ceea ce se
ntampla 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 ilustreaza
aceasta situatie. Pentru a vedea cate subtilitati 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 functia (0.10), un calcu-
lator executa o secventa (finita) bine precizata de operatii denumita algoritm. In
general exista mai multi algoritmi pentru rezolvarea unei probleme. Un algoritm
f pentru problema f produce un raspuns unic determinat pentru date de intrare
fixate 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 sunt
nsotite 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 conditionate
mai 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 marimea
erorilor numerice introduse de un algoritm, n ipoteza ca datele initiale sunt exacte.
0.4. STABILITATEA NUMERICA A ALGORITMILOR 13

x r r
f f (x)
6 I
@@

x r
Eroare napoi f @
? @
@@Eroare nainte
f @
@
Rr
@
@
f (x) = f (x)

Date de intrare Date de iesire

Fig. 0.3: Erori nainte si napoi

Definitia 0.4 Un algoritm f, destinat rezolvarii problemei f , este numeric stabil


daca 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 fie
egal cu f(x), adica solutia calculata de algoritmul f cu date de intrare exacte este
egala 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 datelor
de iesire, iar a doua n spatiul 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
spatiul datelor de intrare, ulterior aplicarii algoritmului. Analiza stabilitatii nu-
merice a unui algoritm nseamna cuantificarea erorilor din definitia 0.4; evaluarea
kf(x)f (x)k este caracteristica analizei nainte (directe); evaluarea kxxk defineste
analiza 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 de
exprimari. In mod sigur, o eroare relativa de ordinul erorii de rotunjire (introduse
de (0.7)) caracterizeaza un algoritm numeric stabil 1 : solutia este calculata cu
precizia intrinseca a FVM utilizat.
Este usor de aratat ca utilizarea unui algoritm stabil la rezolvarea unei probleme
bine conditionate conduce la un rezultat de nalta acuratete 2 .
Intr-adevar, din definitia 0.4 varianta ii), pentru intrarea exacta x exista x astfel
ncat eroarea relativa este (sa zicem) de ordinul erorii de rotunjire

kx xk
t
kxk
1 In
continuare, vom spune algoritm stabil n loc de algoritm numeric stabil.
2 Atragem 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 semnificative
din FVM, iar acuratetea la marimea erorii dintre rezultatul calculat numeric si cel exact.
14 CAPITOLUL 0. CONCEPTE FUNDAMENTALE

si
f (x) = f(x). (0.13)
Problema fiind bine conditionata, din (0.11) rezulta ca

kf (x) f (x)k kx xk
= t , (0.14)
kf (x)k kxk

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

kf (x) f(x)k
t ,
kf (x)k

adica un algoritm stabil nu introduce erori suplimentare semnificative n rezolvarea


unei probleme bine conditionate.
In mod similar, se poate observa ca, n alte situatii (de exemplu pentru probleme
rau conditionate sau pentru algoritmi instabili), marimea erorii asociate rezulta-
tului nu poate fi apreciata. Cand un algoritm stabil este folosit pentru a rezolva
o 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 unei
probleme bine conditionate, solutia calculata f(x) pentru date exacte de intrare
este solutie exacta a problemei cu x departe de x, si tot asa este f (x) de f (x). In
sfarsit, nu e nici o speranta de a obtine erori mici atunci cand un algoritm instabil
este 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 datele
de intrare (vezi exemplul 0.11).
Algoritmul de calcul al sumei n virgula mobila f : R2 R este

f(x, y) = x y = f l(x + y),

unde f l este o functie de rotunjire care respecta relatia (0.7), iar x si 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 usor


perturbati, si 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. In 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 si n baza 10.
0.5. CALITATILE UNUI ALGORITM NUMERIC 15

Definind
p
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 erorilor
de rotunjire ale unui algoritm. In aceasta tehnica se utilizeaza limitele (0.7) ale
erorilor introduse de operatiile n virgula mobila pentru a demonstra ca solutia
calculata a unei probleme este solutia exacta a problemei cu date de intrare usor
perturbate. O astfel de demonstratie garanteaza ca algoritmul este numeric stabil si,
pentru probleme bine conditionate, 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 putini algoritmi pentru care exista o demonstratie
completa a stabilitatii numerice. Totusi, multi algoritmi importanti au fost validati
n practica printr-o experienta de zeci de ani. Cum spunea Wilkinson: scopul
principal al analizei erorilor nu este de a stabili margini precise, ci de a evidentia
instabilitatile potentiale ale unui algoritm, daca ele exista, si, prin aceasta, de a gasi
o 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 ntotdeauna
extrem de tehnica a stabilitatii lor numerice.

0.5 Calitatile unui algoritm numeric


Pentru a ncheia acest capitol, sa precizam criteriile dupa care se apreciaza calitatea
unui algoritm numeric.
Numarul de operatii. Timpul de executie 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 executie permite aprecierea numarului de solutii care se pot
obtine ntr-un anumit timp, de obicei impus.
Desigur, este de dorit a estima timpul de executie al unui program nainte de
crearea sa efectiva, numai pe baza algoritmului implementat de program. O buna
masura este numarul de operatii aritmetice efectuate; n algoritmii numerici ele
constituie de obicei partea majoritara a operatiilor, cele cu ntregi sau logice avand
o 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 necesari
obtinerii rezultatului. Trebuie precizat ca desi numarul de operatii poate indica
doar cu aproximatie timpul de executie 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 operatii Nop al unui algoritm e functie de dimensiunea


problemei 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) = a0 nk + a1 nk1 + . . . + ak . Pentru ca f poate avea o expresie complicata, se
pastreaza doar termenul cel mai semnificativ si se scrie Nop a0 nk . O astfel de
aproximare este cu atat mai buna cu cat n este mai mare. Pentru aprecieri pur
calitative, vom omite a0 si vom scrie3 Nop = O(nk ).
Memoria ocupata. Pentru executia unui algoritm (program) este necesara
memorarea datelor de intrare, rezultatelor, precum si a altor valori intermediare.
Numarul de elemente n FVM necesare n acest scop se numeste memoria ocupata
de 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 executiei
algoritmului pentru a memora rezultate partiale si/sau finale. In acest caz se spune
ca 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 algoritmului
pentru probleme rau conditionate, adica atunci cand erorile datelor de intrare sunt
mult 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 rezultatul
poate fi afectat de erori importante datorate relei conditionari a problemei. Decizia
de a utiliza sau nu un astfel de rezultat revine utilizatorului sau unui program
expert.

0.6 Implicatiile arhitecturii calculatoarelor asupra


organizarii algoritmilor
In consideratiile din sectiunea precedenta am presupus calculatorul pe care se vor
implementa algoritmii ca avand arhitectura clasica von Neumann, schitata n figura
0.4a; pe un astfel de calculator, n principiu, pentru fiecare operatie aritmetica
se aduc operanzii din memoria M n unitatea centrala UC, se executa operatia si
rezultatul este depus napoi n M. Cu acest mod de operare, timpul de executie
e dictat esentialmente de numarul de operatii n virgula mobila, durata traficului
ntre M si UC fiind proportionala cu numarul de flopi.
In ultimele doua decenii au aparut numeroase tipuri de arhitecturi pe care timpul
de executie a unui algoritm nu mai este proportional cu numarul de operatii n
3 Se scrie f (n) = O(g(n)) daca exista doua constante c1 , c2 astfel ncat c1 g(n) f (n) c2 g(n).
0.6. IMPLICATIILE ARHITECTURII CALCULATOARELOR 17

UC

6
?
UC UCS UCV
MR
6 6
6
? ? ?
M M MP

(a) (b) (c)

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 raspandite,


n special n gama calculatoarelor de mare performanta.
Calculatoarele vectoriale au doua (tipuri de) unitati de calcul, ca n figura
0.4b. Una dintre unitati UCS este obisnuita; ea executa operatii scalare, adica
operatiile aritmetice uzuale. Cealalta UCV este dedicata operatiilor vectoriale,
adica unor operatii aritmetice de acelasi 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 diferenta de viteza ntre astfel de operatii, pe
calculatoarele vectoriale se executa mult mai rapid operatiile vectoriale; explicatia e
relativ simpla: UCV e astfel construita ncat 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 operatie intermediara (daca sunt p posturi de lucru, timpul de producere a
unui rezultat este de aproximativ p ori mai mic). La aceasta se adauga si un mod de
comunicatie sofisticat ntre M si UCV, astfel ncat UCV sa poata fi n permanenta
alimentata 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 ales
operatii 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 doua
niveluri. Timpul de acces la memorie creste odata cu distanta dintre unitatea cen-
trala si memoria respectiva; memoria rapida (MR) are un timp de acces sensibil
mai 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 a
memoriei principale (totusi, n mod natural, o memorie mai mica este mai rapida).
Transferurile ntre UC si MR dureaza putin n comparatie cu timpul de executie
al unei operatii n virgula mobila; n schimb, transferurile ntre MR si MP dureaza
mai mult. De aceea, un algoritm eficient pe un calculator cu memorie ierarhica are
un 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 algoritm


este organizarea calculelor la nivel de bloc de matrice, operandu-se intensiv cu date
aflate 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 calculatoare
vectoriale si cu memorie ierarhica. De obicei, este necesara doar o reorganizare
a calculelor; alteori, nsa, algoritmi noi se dovedesc mult mai eficienti pe aceste
arhitecturi.
O alta clasa de arhitecturi de mare performanta cuprinde calculatoarele para-
lele. Acestea au mai multe procesoare identice care pot lucra independent si care
coopereaza printr-un mediu de comunicatie (legaturi directe sau memorie comuna).
Algoritmii eficienti pe arhitecturi paralele au multe caracteristici ce i diferentiaza
net de cei secventiali; 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. 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 sumei
y = 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 intrare
sunt a1 , a2 , b1 , b2 R.
P 0.5 Se considera un FVM definit de (, t, p). Care este distanta ntre 1 si cel mai
apropiat numar reprezentabil n virgula mobila, mai mare ca 1 ?
P 0.6 Gasiti limita (superioara) a erorii relative a functiei de rotunjire care asociaza
fiecarui x [M, M ] cel mai apropiat numar n virgula mobila.
P 0.7 Ce formula recomandati pentru calculul n virgula mobila: x2 y 2 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, n
diverse variante, pe ntreg parcursul lucrarii, precum si descrierii unor primi algo-
ritmi numiti ad-hoc elementari, unii folositi ca unelte mai tarziu, altii deja rezolvand
probleme sau cazuri particulare ale unor probleme semnificative.
Notiunile matematice apartin n mare majoritate algebrei liniare. Am ncercat
o prezentare de sine statatoare, dar, desigur, cunostintele anterioare ale cititorului
sunt binevenite.
Fiecare sectiune a capitolului are doua parti: prima, cu nuanta teoretica, de
parcurgere a unor definitii si proprietati fundamentale; a doua, de aspecte algo-
ritmice, n care sunt prezentati si analizati algoritmi simpli, moduri de memorare
a datelor, artificii numerice etc. Subtitlurile acestor din urma parti vor ncepe cu
sigla 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 matricelor
triunghiulare. Sunt prezentate modalitatile prin care se maresc performantele algo-
ritmilor pe diverse arhitecturi de calculatoare. Capitolul se ncheie cu prezentarea
rutinelor 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 cu
numere reale; majoritatea definitiilor si proprietatilor sunt valabile si pentru numere
complexe; 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.
20 CAPITOLUL 1. ALGORITMI ELEMENTARI

6 6

1
6
x3  x
1
x2   e3
  

 -

 e1 - -
 
 e2
x1 1 1

 +
+
 +

(a) (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 reale


dispuse ordonat ntr-o coloana

x1
x2

x = . , (1.1)
..
xn

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 deseori
x = [x1 . . . xn ]T , unde xT = [x1 . . . xn ] este vectorul linie cu aceleasi elemente ca
n (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, un
vector 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 din
context; geometric, acesta este originea spatiului n-dimensional. Pentru o mai buna
ntelegere, vom ilustra unele concepte n R2 sau R3 ; figura 1.1a prezinta un vector
si semnificatia (de coordonate) a elementelor sale.
Vectorii din Rn care au un element egal cu 1 si celelalte nule se numesc vectori
unitate; ei vor fi notati
ei = [0 . . 0}]T ,
. . 0} 1 0| .{z
| .{z
i1 ni

indicele aratand pozitia valorii 1. Spre exemplu, vectorii unitate din R3 sunt
prezentati 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

:
y



- -

 x + y



 -
x 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 toate
proprietatile 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 fiecare
componenta 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 modifica
doar lungimea vectorului, pastrandu-i directia.
Multimea Rn mpreuna cu operatiile de adunare si produs cu un scalar are
structura de spatiu vectorial, adica, n afara structurii de grup comutativ fata de
adunare, 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 1

x1 , x2 , . . . , xp . Vectorul
p
X
def
y = 1 x1 + 2 x2 + . . . + p xp = i xi (1.2)
i=1

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, vectorii
din X sunt numiti liniar dependenti.
1 Se observa ca acum x este un vector si nu un element de vector; asadar, folosim indicii si
i
pentru a numerota vectorii dintr-o multime.
22 CAPITOLUL 1. ALGORITMI ELEMENTARI

Daca vectorii sunt liniar dependenti, atunci cel putin unul Pp dintre ei se poate
exprima printr-o combinatie P liniara a celorlalti; i.e., daca i=1 i xi = 0, atunci
exista j 6= 0, si deci xj = pi=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 unitate
e1 , . . . , en sunt liniar independenti.
Pp Daca X Rn este o multime de vectori
n
liniar independenti si y = i=1 i xi R 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 liniar
al 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 vectorul
nul (originea).
Fie X Rn o multime de vectori si S multimea tuturor combinatiilor liniare ale
vectorilor din X . Atunci S e un subspatiu liniar, numit subspatiul 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 subspatiul generat este o dreapta.
Fie S Rn un subspatiu; o multime de vectori B S este baza a subspatiului
S 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 genera
subspatiul.
Daca B = {b1 , . . . , bm }, atunci x S se Pscrie n mod unic n forma unei
m
combinatii liniare a vectorilor din baza, x = i=1 i bi . Numerele i se numesc
componentele sau coordonatele, vectorului x n raport cu baza B.
De exemplu, e1 , . . . , en formeaza o baza pentru Rn , numita si baza canonica;
componentele vectorului x, n sensul definitiei
Pn (1.1), sunt componentele n raport
cu aceasta baza, deoarece evident x = i=1 xi ei .
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 dim S, este numarul vectorilor din baza,
adica numarul maxim de vectori din S liniari independenti sau, cum am mentionat
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 subspatii S, T Rn se numesc complementare daca

1. S T = {0}.

2. Rn este generat de S T .
1.1. VECTORI. SPATIUL VECTORIAL RN 23

6
C
 C
 C
 C
C T
SC
C C 
C C
C C -
C CC
 C 
+ C


C 
CC

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

In acest caz vom utiliza notatia Rn = S T . Fiecare dintre cele doua subspatii 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, dim S + dim T = n. De exemplu,
n figura 1.3 sunt reprezentate un plan si o dreapta n R3 , care constituie imaginile
geometrice 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 aceleasi
proprietati, deoarece proprietatile 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 si
i unitatea imaginara.
AA. Saxpy. Vom descrie acum n termeni algoritmici o operatie fundamentala
cu 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 a
acesteia. Vom introduce direct si alte conventii de scriere a algoritmilor, cu premiza
ca cititorul are notiuni 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
2 Notatia provine din initialele variabilelor folosite: x Plus y; n BLAS, initiala S semnifica

faptul ca calculele se efectueaza n Simpla precizie; ea este atasata n mod traditional numelui
operatiei.
24 CAPITOLUL 1. ALGORITMI ELEMENTARI

Comentarii. Instructiunea Pentru i = 1 : n nseamna repetarea executiei, pentru


toate valorile indicate ale indicelui i, a instructiunilor ce i urmeaza (pana la prima
instructiune aflata la acelasi nivel cu Pentru). Instructiunile sunt referite prin
secvente de numere cuprinzand (de la dreapta spre stanga) numarul din algoritm al
instructiunii respective si numerele instructiunilor carora le este subordonata (de la
cea mai apropiata la cea mai departata). In algoritmul Saxpy, prima instructiune
este 1, a doua 1.1.
Contorizand operatiile executate de algoritmul 1.1, constatam ca fiecare executie
a instructiunii 1.1 necesita 2 flopi (o nmultire si o adunare), deci, n total, sunt
necesari Nop = 2n flopi.
In continuare, Saxpy va fi privita ca operatie elementara si va fi apelata prin
Saxpy(, x, y); ea face parte din grupul operatiilor de nivel 1, mpreuna cu alte
operatii, dintre care unele vor fi prezentate ulterior3 .
Asa cum este normal, Saxpy si celelalte operatii de nivel 1 sunt executate
mai eficient pe calculatoare vectoriale. De aceea, pe astfel de calculatoare, exista
tendinta de a scrie toti algoritmii n termeni de operatii de nivel 1 si nu prin operatii
aritmetice 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
not def Pn
prin f (x, y) = y T x, unde y T x = i=1 xi yi . 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 este
valabila o geometrie similara cu cea din R2 si R3 , cunoscuta din liceu).
Norme. Prin norma se asociaza unui vector o marime (lungime). O norma
vectoriala este o functie : Rn R+ , notata de obicei (x) = kxk, care satisface
urmatoarele conditii:
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 si k xk = kxk.
Cea mai utilizata norma vectoriala este cea indusa de produsul scalar si se
numeste norma euclidiana sau norma 2:
v
u n
uX
T
kxk2 = x x = t x2i . (1.3)
i=1

3 Numerotarea nivelelor se face dupa exponentul lui n din expresia numarului de flopi necesari

la 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

'$
6
@  1

@ -
@
&%
@ bb 2

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 defineste prin
n
!1/p
X
p
kxkp = |xi | .
i=1

Alte cazuri particulare de norma p folosite curent sunt normele 1 si infinit,


definite, n ordine, prin
Xn
kxk1 = |xi |,
i=1
kxk = max |xi |.
i=1:n

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 care
kxkp = 1, pentru p = 1, 2, .
Doua norme pe Rn , sa zicem k kq si k kr , se numesc echivalente daca exista
1 , 2 > 0 astfel ncat pentru orice x Rn avem

1 kxkq kxkr 2 kxkq . (1.4)

Oricare doua norme p sunt echivalente. De exemplu (demonstrati !):

kxk kxk1 nkxk ;



kxk kxk2 nkxk ;

kxk2 kxk1 nkxk2 .

Ortogonalitate. Unghiul a doi vectori nenuli x, y Rn se defineste prin


= arccos(y T 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,
T
x y = 0; semnificatia geometrica este cea naturala: ntre cei doi vectori este un
unghi 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, kui k2 = 1,


i = 1 : p, ei sunt numiti ortonormali.
Vectorii ortogonali sunt liniar independenti; justificarea e intuitiva: un vector
ortogonal 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. Folosirea
bazelor ortonormale este recomandabila nu numai datorita proprietatilor matema-
tice, dar si a acuratetii numerice pe care o induc n calcule. Un mod simplu, dar nu
si 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 si 5.
Teorema lui Pitagora se generalizeaza imediat n Rn : vectorii x, y Rn sunt
ortogonali daca si numai daca kx + yk22 = kxk22 + kyk22 .
Notiunea de ortogonalitate poate fi extinsa la subspatii liniare. Vectorul x Rn
este ortogonal pe subspatiul S Rn daca este ortogonal pe orice vector din S. Doua
subspatii S, T Rn sunt ortogonale daca orice vector s S este ortogonal pe orice
vector t T ; vom nota S T .
Un subspatiu S Rn este numit complementul ortogonal al subspatiului
T 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 utilizeaza
notatia S = T ; desigur, avem si T = S .
Particularitati ale spatiului euclidian complex Cn . Produsul scalar uzual
al vectorilor x, y Cn este definit de proprietati usor diferite de cele ale produsului
scalar 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).
Pn
Produsul scalar uzual n Cn se defineste prin y H x = i=1 xi yi .
Doi vectori x, y Cn sunt ortogonali daca y H x = 0.
Norma euclidiana
P k k : Cn R+ se defineste prin kxk2 = xH x, x Cn ,
unde xH x = ni=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 = y T x.)
1. 0
2. Pentru i = 1 : n
1. + xi yi

Comentarii. Algoritmul are 2n operatii si face deci parte din grupul operatiilor
de nivel 1. Il vom apela prin = DOT(x, y).
4 In general vom spune baze ortogonale n loc de ortonormale, presupunand implicit ca normele

vectorilor sunt unitare.


1.2. PRODUS SCALAR. NORME. ORTOGONALITATE 27

Datorita erorilor numerice, la executie algoritmul DOT nu va calcula = y T x,


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 neaparat
mica; daca |y T x| |y|T |x|, atunci eroarea relativa din (1.6) poate fi mare.
AA. Calculul normelor. Normele 1 si se calculeaza usor. 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,
apeland DOT(x, x), si apoi extragand radicalul. Exista nsa posibilitatea ca, desi
kxk2 este reprezentabil n virgula mobila, xT x = kxk22 sa nu fie (de exemplu 1025 este
reprezentabil n simpla precizie, dar 1050 nu) si atunci calculul lui xT x sa conduca
la depasire superioara. Similar poate aparea o depasire inferioara, care antreneaza
pierdere de precizie sau decizii eronate: kxk2 = 0 desi x 6= 0. Pentru a preveni acest
eveniment care ar mpiedica obtinerea 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, si depasirea superioara
este practic imposibila. (Aparitia unor depasiri inferioare la ridicarea la patrat a
unor elemente ale vectorului x nu este suparatoare, deoarece n acest caz rezultatul
se aproximeaza cu zero.) Se obtine urmatorul algoritm.

Algoritmul 1.4 (Nrm2 Calculul normei 2 a unui vector) (Se da


x Rn . Se calculeaza = kxk2 , efectuand o operatie 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 instructiunile 1 si 3.1,


ncarca algoritmul cu n flopi (2) si n comparatii (1); cu toate acestea, siguranta
calculelor impune de regula utilizarea ei, cu exceptia cazurilor n care informatiile
apriorice despre date exclud aparitia depasirii.
Un rafinament al algoritmului 1.4 este de a utiliza pentru scalare nu kxk , ci
cea 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 de
marime ca n cazul scalarii cu kxk , deci nu va exista pericol de depasire superioara,
n schimb toate mpartirile se vor efectua exact, neintroducandu-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
ntampla foarte rar ca DOT(x, y) sa fie exact 0; aceasta se datoreaza atat erorilor
numerice aparute n executia algoritmului DOT, cat si erorilor de reprezentare
asociate elementelor celor doi vectori. De aceea, pentru a considera doi vectori
numeric ortogonali, ne multumim cu conditia

| DOT(x / kxk2 , y / kyk2 ) | < cM ,

unde c 1 este o constanta mica, adica produsul scalar al vectorilor normalizati


sa fie de acelasi ordin de marime cu epsilon masina 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 si n coloane; notand cu aij elementul matricei de
pe linia i si coloana j, matricea arata astfel

a11 a12 ... a1n

a21 a22 ... a2n

A= .. .. .. (1.7)
. . .
am1 am2 . . . amn

Daca m = n, matricea se numeste patrata.


Multimea tuturor matricelor reale (complexe) cu m linii si n coloane va fi notata
Rmn (respectiv Cmn ). Pastram n continuare conventia de a ne referi la cazul
complex doar atunci cand este diferit de cel real.
Se numeste diagonala principala a matricei multimea pozitiilor de indici egali din
tablou; pentru A Rnn , suma elementelor de pe diagonala principala se numeste
def P
urma si se noteaza tr(A) = ni=1 aii .
Operatii. Definim acum cateva operatii 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 ; asadar, suma se face adunand elementele de pe pozitii cores-
pondente.
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 operatii suma si produsul cu un scalar Rmn are o structura
de spatiu vectorial de dimensiune mn. O baza este Eij , i = 1 : m, j = 1 : n, unde
Eij 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 proprietati
simple ale operatiei de transpunere:
1.3. MATRICE 29

1. (AT )T = A, A Rmn ;

2. (A + B)T = AT + B T , A, B Rmn ;

3. (A)T = AT , A Rmn , R.

Produsul matrice-vector. In functie 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 notandu-se coloanele matricei A. Aceasta interpretare este
utila n special n lucrul cu subspatii.
Cu notatia (1.8), produsul dintre matricea A Rmn si vectorul x Rn este
vectorul y Rm
Xn
def
y = Ax = aj xj , (1.9)
j=1

i.e. combinatia liniara a coloanelor lui A cu coeficientii xj . Un caz particular este


produsul dintre matricea A si vectorul unitate ej , care are ca rezultat coloana j a
matricei: Aej = aj .
Se poate observa ca produsul matrice-vector defineste o transformare liniara
f : Rn Rm , f (x) = Ax, adica o aplicatie cu proprietatile (evident satisfacute n
cazul 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 o
multime de vectori (coloane), se impune o notatie speciala pentru subspatiul
generat de coloanele matricei, numit imaginea acesteia:

ImA = {y Rm | x Rn astfel ncat y = Ax}. (1.10)


n
Un alt subspatiu interesant, de data asta n R , este cel al vectorilor avand ca
elemente coeficientii combinatiilor liniare nule ale coloanelor lui A, numit nucleul
matricei 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 si
complementare n Rm , i.e.
1. ImA KerAT .
2. Rm = ImA KerAT .

Demonstratie. 1. Fie y = Ax ImA si z KerAT . Atunci y T z = xT AT z = 0.


2. Fie z ImA. Atunci xT AT z = 0, oricare x Rn , deci AT z = 0.
Evident, teorema poate fi aplicata pentru AT , si deci avem ImAT KerA si
R = ImAT KerA.
n
30 CAPITOLUL 1. ALGORITMI ELEMENTARI

y3
6

(1,0,1)

(0,1,1) k
Q
Q ImA
Q
Q y1
Q -

 

y2 
KerAT

(1,1,-1)

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


1 0
Exemplul 1.1 Fie A = 0 1 .
1 1

x1
Atunci, S = ImA = {y R3 | y = x2 , x1 , x2 R}, adica S este
x1 + x2
planul de ecuatie y3 = y1 + y2 .
T = KerAT = {y R 3
| AT y = 0} = {y

3
R | y2+ y3 = 0, y1 + y3 = 0}, deci
1 1
avem T = {y R3 | y = 1 } = Im 1 .
1 1
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 numarul
maxim de linii liniar independente din A. Recapituland:
not
dim ImA = dim ImAT = r,
dim KerA = n r, (1.12)
dim KerAT = m r.
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 maxim
pe coloane.
O matrice A Rmn avand liniile liniar independente se numeste epica; atunci
m 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; daca
n = 1, vectorul este coloana (acceptiunea implicita), iar daca m = 1 vectorul este
linie. Este clar ca transpusa unui vector linie este un vector coloana si reciproc. In
mod analog cu (1.8), o matrice poate fi scrisa evidentiind liniile:
T
a1
aT2

A = . . (1.13)
..
aTm

Atentie: acum aTi e o notatie pentru vectorul format de linia i a matricei A; ai nu


este coloana i din (1.8). Pentru a evita confuziile, vom folosi si notatiile: 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 usor ca produsul matrice-
vector se poate exprima prin intermediul unor produse scalare:
T
a1 x
..
Ax = . . (1.14)
aTm x

AA. Gaxpy. Vom prezenta acum mai multe implementari ale produsului
5
matrice-vector, sub forma operatiei y Ax + y, numita GaxpyPn .
Din (1.9), la nivel de element, operatia se scrie yi yi + j=1 aij xj , si deci

Algoritmul 1.5 (Gaxpy Produs matrice-vector) (Se dau


A Rmn , x Rn . Se calculeaza y Ax + y Rm utilizand operatii
elementare.)
1. Pentru i = 1 : m
1. Pentru j = 1 : n
1. yi yi + aij xj
Se observa imediat ca bucla interioara reprezinta o operatie DOT, corespun-
zand 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 utilizand operatii DOT.)
1. Pentru i = 1 : m
1. yi yi + DOT(A(i, :), x)
Inversand acum ordinea buclelor din algoritmul 1.5, ceea ce nu afecteaza n nici
un fel rezultatul (ordinea operatiilor pentru calculul fiecarei sume yi n parte este
aceeasi), obtinem

Algoritmul 1.7 (Se dau A Rmn , x Rn . Se calculeaza


y Ax + y Rm utilizand operatii elementare.)
5 Prescurtare pentru General Ax Plus y.
32 CAPITOLUL 1. ALGORITMI ELEMENTARI

1. Pentru j = 1 : n
1. Pentru i = 1 : m
1. yi yi + aij xj
Bucla interioara reprezinta acum o operatie Saxpy, corespunzand 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 operatii Saxpy.)
1. Pentru j = 1 : n
1. y Saxpy(xj , A(:, j), y)
Comentarii. Toti algoritmii de mai sus au 2n2 operatii. De aceea Gaxpy
face parte din grupul operatiilor de nivel 2. Vom face referinta la ea n forma
y = Gaxpy(A, x, y). Desigur, implementarile din algoritmii 1.6 si 1.8 vor fi deosebit
de eficiente pe calculatoare vectoriale.

1.4 Inmultirea matricelor


Dedicam o sectiune separata nmultirii de matrice (si unor notiuni conexe),
deoarece aceasta operatie este specifica (nu se poate defini n general produsul a
doi vectori cu rezultat vector6 ) si apare deseori n constructia algoritmilor de nivel
superior, devenind astfel interesanta atat teoretic, cat si din punctul de vedere al
detaliilor de implementare.

Definitia 1.1 Fie A Rml si B Rln , doua matrice; produsul lor este matricea
C = AB Rmn , definita prin
l
X
cij = aik bkj , i = 1 : m, j = 1 : n.
k=1

Cazuri particulare. Sa discutam ntai cazurile particulare n care cel putin


una dintre dimensiuni este egala cu 1.
not not
Daca m = n = 1, atunci A = xT este un vector linie, B = y este un vector
coloana, ambii n R , iar produsul lor coincide cu simplul produs scalar AB = xT y.
l
not not
Daca l = 1, atunci A = x este un vector coloana n Rm , B = y T este un
vector linie n Rn , iar produsul lor este matricea C = xy T Rmn , definita prin
cij = xi yj ; aceasta operatie cu doi vectori poarta numele de produs exterior si va fi
notata prin OUT(x, y).
not
Daca n = 1, atunci B = y este un vector coloana si operatia AB este o nmultire
matrice-vector.
not
Daca m = 1, atunci A = xT este un vector linie si AB = xT B este un vector
linie (nmultire vector linie - matrice).
6 Produsul vectorial a b este posibil, printr-un accident fericit caruia i este ndatorata

ntreaga fizica clasica, numai n R3 .


1.4. INMULTIREA MATRICELOR 33

Forme ale produsului matriceal. Vom evidentia acum mai multe forme
de prezentare a nmultirii a doua matrice, folosind ca operatii elementare cazurile
particulare prezentate mai sus.
1. Sa privim A ca alaturare de vectori linie, ca n (1.13), si B ca alaturare de
vectori coloana, ca n (1.8). Se observa imediat din definitie ca cij = aTi bj , adica
fiecare element al rezultatului poate fi exprimat printr-un produs scalar (DOT).
2. Privim acum A partitionata pe coloane si B pe linii. Produsul lor se poate
exprima ca o suma de produse exterioare:
T
b1 l
.. X
C = AB = [a1 . . . al ] . = ak bTk . (1.15)
bTl k=1

Pl Pl Pl
Demonstratie: cij = k=1 (ak bTk )ij = k=1 (ak )i (bTk )j = k=1 aik bkj .
3. Punem acum n evidenta numai coloanele matricei B. Atunci

C = AB = A[b1 . . . bn ] = [Ab1 . . . Abn ], (1.16)

deci fiecare coloana a produsului este obtinuta prin nmultirea matrice-vector dintre
matricea A si coloana respectiva a lui B.
4. Fie acum A partitionata pe linii. Atunci
T T
a1 a1 B
C = AB = ... B = ... ,

(1.17)
aTm aTm B

deci fiecare linie a produsului este obtinuta prin nmultirea vector linie - matrice
dintre linia respectiva a lui A si matricea B.
5. Sa exprimam acum coloanele produsului C n functie de coloanele matricei
A. Cu ajutorul relatiei (1.16) se obtine
l
X
cj = Abj = bkj ak , (1.18)
k=1

deci orice coloana din C este combinatie liniara a coloanelor matricei A.


6. In sfarsit, o ultima forma, n care vom exprima liniile produsului C n functie
de liniile matricei B. Din (1.17) rezulta
l
X
cTi = aTi B = aik bTk . (1.19)
k=1

Proprietati. Inmultirea de matrice are unele proprietati imediate, prezentate n


continuare; presupunem ca matricele au dimensiuni potrivite operatiilor efectuate;
demonstratiile sunt lasate cititorului.
1. A(BC) = (AB)C (asociativitate);
2. A(B + C) = AB + AC (distributivitate);
34 CAPITOLUL 1. ALGORITMI ELEMENTARI

3. (AB)T = B T AT .
Trebuie subliniat faptul ca nmultirea de matrice nu este comutativa. Sa detaliem
putin; consideram A Rml si 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 si BA au dimensiuni diferite, deci nu se pune problema egalitatii. In fine, daca
si m = l, deci ambele matrice sunt patrate,
 atunci
 egalitatea
 AB = BA nu are loc,
1 1 1 2
n general; un exemplu simplu: A = ,B= .
1 1 3 4
Matrice patrate. Ne vom ocupa n continuare de unele aspecte specifice ma-
tricelor patrate din Rnn , a caror multime are structura de inel necomutativ. Ma-
tricea unitate de ordinul n are elementele de pe diagonala principala egale cu 1 si
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 ncat
AX = XA = I, atunci X se numeste inversa matricei A si se noteaza cu A1 .
O matrice care are inversa se numeste inversabila; matricea inversa este unica. Se
poate demonstra ca multimea matricelor inversabile din Rnn are o structura de
grup (necomutativ) n raport cu nmultirea, notat GL(n).
Se pune ntrebarea cand este o matrice inversabila ? Vom mentiona deocamdata,
fara a demonstra, ca inversabilitatea este echivalenta cu conditia rangA = n, adica
cu independenta coloanelor (si liniilor) matricei A. (O alta conditie echivalenta este
KerA = {0}, i.e. KerA are dimensiune nula.) Testarea numerica a inversabilitatii
va fi o problema tratata mai mult sau mai putin explicit n capitolele urmatoare,
metodele prezentate fiind din ce n ce mai sigure, dar si mai sofisticate.
O ultima proprietate: inversarea si transpunerea unei matrice sunt operatii care
not
comuta ntre ele, adica (AT )1 = (A1 )T = AT .
Echivalenta. Doua matrice A, B Rmn se numesc echivalente la dreapta
daca exista o matrice T Rnn inversabila astfel ncat B = AT . Avem:

Propozitia 1.1 Daca A, B Rmn sunt echivalente la dreapta, atunci avem ImA =
ImB.

Demonstratie. Din definitie, exista T astfel ncat BP


= AT . Evidentiind coloanele
n
din A si B si folosind (1.18) se obtine bj = Atj = i=1 tij ai , deci orice coloana
din B este combinatie liniara a coloanelor matricei A; atunci bj ImA, pentru
j 1 : n, si deci ImB ImA.
Cum T este inversabila, A = BT 1 , si un rationament similar conduce la con-
cluzia ImA ImB.

Daca matricele echivalente la dreapta A si B au coloanele liniar independente,


atunci coloanele fiecareia formeaza o baza pentru ImA = ImB. In acest caz, ma-
tricea T este numita schimbare de baza (n Rn , din baza A n baza B).
Fie un vectorPx ImA; atunci x se exprima unic n fiecare dintre Pncele doua
n
baze: x = Ac = i=1 i ai , cu c = [1 . . . n ]T si, respectiv, x = Bd = i=1 i bi , cu
1.4. INMULTIREA MATRICELOR 35

d = [1 . . . n ]T ; vectorii c si d contin coordonatele n cele doua baze. Cum B = AT ,


atunci x = Ac = AT d, din unicitate rezultand c = T d, sau d = T 1 c. Aceasta
ultima relatie justifica denumirea de transformare de coordonate data matricei T 1
(din nou, din baza A n baza B).
Desigur, daca A si B sunt echivalente la dreapta, atunci si KerAT = KerB T ,
consecinta a propozitiei de mai sus si a teoremei 1.1.
Deoarece nmultirea de matrice nu este comutativa, are sens notiunea de echiva-
lenta la stanga; matricele A, B Rmn se numesc echivalente la stanga daca exista
o matrice S Rmm inversabila astfel ncat B = SA. In acest caz, ImAT = ImB T
si KerA = KerB.
Daca coloanele fiecareia dintre matricele echivalente la stanga A si 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 ncat B = SAT . S si T se numesc generic transformari (de
echivalenta).
AA. Algoritmi. Vom prezenta mai multe variante de calcul al produsului ma-
triceal, variante ce difera, n esenta, prin ordinea n care sunt efectuate operatiile
scalare. In acest mod punem n evidenta diverse posibilitati de organizare a cal-
culelor n vederea unei exploatari optime a particularitatilor arhitecturale ale cal-
culatorului tinta.
Pentru nceput prezentam un algoritm pentru produsul exterior, singurul caz
particular nedetaliat pana acum n care cel putin o dimensiune a operanzilor nmulti-
rii este 1.
Algoritmul 1.9 (OUT Calculul produsului exterior) (Se dau
x Rm , y Rn . Se calculeaza C = xy T Rmn .)
1. Pentru j = 1 : n
1. Pentru i = 1 : m
1. cij xi yj
In cazul general, o implementare directa a nmultirii de matrice, folosind definitia,
este prezentata n continuare.
Algoritmul 1.10 (MM Inmultire 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 + aik bkj
Rezultatul acestui algoritm nu se modifica daca ordinea celor trei bucle Pentru
este alta. Algoritmul de mai sus se mai numeste forma jik a produsului ma-
triceal. Bucla Pentru cea mai interioara se poate nlocui cu apelul produsului scalar
DOT(A(i, :), B(:, j)), obtinandu-se astfel un algoritm cu operatii vectoriale. Cele
doua bucle Pentru interioare se pot nlocui cu un apel la Gaxpy(A, B(:, j), C(:, j)),
dupa cum sugereaza direct relatia (1.16).
Forma jki pune n evidenta operatii Saxpy, avand la baza relatia (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
evidentiaza produse exterioare.

Algoritmul 1.12 (Se dau A Rml , B Rln . Se calculeaza


C = AB Rmn folosind operatii OUT.)
1. C 0
2. Pentru k = 1 : l
1. C C + OUT(A(:, k), B(k, :))
Apelul rutinei OUT nlocuieste buclele Pentru cu indicii j si i.
Formele ijk, kij si ikj sunt, n aceasta ordine, variante ale celor trei forme
prezentate mai sus. Permutarea buclelor i si j nu este esentiala, deoarece acestea
au rolul de parcurgere a matricei C, pe linii sau pe coloane. Acest lucru poate
deveni important daca se tine 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.
In oricare dintre formele mentionate, nmultirea de matrice necesita 2mnl flopi,
deci 2n3 n cazul matricelor patrate, si face parte din grupul operatiilor de nivel 3.
Vom face referire la ea n forma C = MM(A, B).
Inmultirea matricelor complexe. Algoritmii de mai sus, ca si toate conside-
ratiile care i preced, sunt valabili si pentru nmultirea matricelor complexe
C = AB Cmn , cu A Cml , B Cln . Diferenta consta n numarul de
flopi necesari executiei. Daca adunarea a doua numere complexe se face n doi flopi
(unul pentru partea reala, altul pentru partea imaginara), n schimb nmultirea
necesita sase:
( + i)( + i) = + i( + ). (1.20)
Asadar nmultirea matricelor complexe se executa n aproximativ 8mnl flopi (cate
mnl nmultiri si adunari de scalari complecsi).
Aceeasi observatie poate fi facuta scriind A = A1 + iA2 , cu A1 , A2 Rml ,
B = B1 + iB2 , cu B1 , B2 Rln , si

C = A1 B1 A2 B2 + i(A1 B2 + A2 B1 ). (1.21)

Inmultirea matricelor complexe se poate efectua deci prin patru produse (si doua
adunari) de matrice reale.
Numarul de operatii 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 castiga nimic, deoarece n loc de patru nmultiri si doua adunari


reale, ca n (1.20), avem trei nmultiri si cinci adunari. Egalitatea (1.22) se scrie
nsa identic si n cazul matriceal, nlocuindu-se (1.21) cu

G = A1 B1 ,
H = A2 B2 , (1.23)
C = G H + i((A1 + A2 )(B1 + B2 ) G H).
Asadar C se calculeaza acum cu doar trei nmultiri de matrice, adica 6mnl flopi, si
cinci adunari a caror contributie la numarul de operatii este neglijabila.
Acest algoritm rapid pentru nmultirea matricelor complexe are totusi si un
dezavantaj: stabilitatea sa numerica este mai slaba decat cea a algoritmului clasic
(1.21); cu toate acestea, el poate fi folosit cu succes n majoritatea aplicatiilor.

1.5 Norme matriceale


Produsul scalar matriceal este o generalizare imediata a produsului scalar
a doi vectori. Daca A, B Rmn , produsul lor scalar este
m X
X n
def
(A, B) = aij bij = tr(B T A). (1.24)
i=1 j=1

Se observa ca (1.24) este identica cu produsul scalar al celor doi vectori din Rmn
obtinuti prin vectorizarea matricelor A si B, i.e. prin concatenarea coloanelor lui
A, respectiv B.
Normele matriceale se definesc la fel ca normele vectoriale. O norma ma-
triceala este o functie k k : Rmn R+ care satisface conditiile
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, in-
troducemS notiunea de familie de norme matriceale, care este o functie
k k : m=1,n=1 Rmn R+ astfel ncat, pentru fiecare m, n > 0, restrictia 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 cand produsul AB este definit. (Sa observam ca, n general, A, B si AB au


dimensiuni diferite, deci normele lor sunt functii diferite; de aceea se lucreaza cu
familii de norme.)
Norma Frobenius este norma matriceala indusa de produsul scalar (1.24):
v
um X n
uX
kAkF = t a2ij . (1.26)
i=1 j=1
38 CAPITOLUL 1. ALGORITMI ELEMENTARI

Familia de norme Frobenius este consistenta.


Norme subordonate. O familie de norme matriceale poate fi obtinuta dintr-o
familie de norme vectoriale k k, prin urmatoarea relatie
kAxk
kAk = sup = max kAxk, (1.27)
x6=0 kxk kxk=1

n care norma matriceala kAk se defineste cu ajutorul normelor vectoriale kxk si


kAxk. (Trecerea de la sup la max este justificata de faptul ca hipersfera de ecuatie
kxk = 1 este un compact iar norma vectoriala k k este o functie continua, deci
marginita si si atinge marginile.) Familia de norme matriceale este numita subor-
donata 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 si . Pentru
p = 1, , relatia (1.27) se reduce la expresiile simple
m
!
X
kAk1 = max kAxk1 = max |aij | ,
kxk1 =1 j=1:n
i=1

n (1.28)
X
kAk = max kAxk = max |aij | .

kxk =1 i=1:m
j=1

Pentru norma 2, atat semnificatia cat si modul de calcul vor fi prezentate n


capitolele urmatoare.
Normele p matriceale, aplicate unor vectori priviti ca matrice, dau aceleasi valori
ca normele p vectoriale. Astfel, nu e nici o posibilitate de confuzie n utilizarea
aceluiasi simbol k kp pentru normele matriceale si cele vectoriale.
In sfarsit, normele matriceale subordonate unor norme vectoriale sunt consis-
tente (demonstrati, folosind definitia) si, n plus, au proprietatea kIk = 1.
Echivalenta. Normele matriceale prezentate mai sus sunt echivalente, n sensul
relatiei (1.4). De exemplu (vezi problema 1.10):
1
kAk kAk2 mkAk ,
n

1 (1.29)
kAk1 kAk2 nkAk1 ,
m

kAk2 kAkF nkAk2 .

Cazul complex. O norma matriceala peste spatiul complex Cmn este o functie
cu valori reale pozitive satisfacand cele trei conditii de la nceputul sectiunii. Toate
definitiile si relatiile de mai
P susPraman valabile, cu singura observatie ca acum norma
Frobenius este kAk2F = m i=1
n 2
j=1 |aij | .

AA. Calculul normei 1 se face folosind direct relatiile (1.28):


Algoritmul 1.13 (Nm1 Calculul normei matriceale 1) (Se da
A Rmn . Se calculeaza = kAk1 .)
1.6. MATRICE STRUCTURATE 39

0
0

L U

Fig. 1.6: Matrice inferior si 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 si are aceeasi
complexitate. Calculul normei Frobenius necesita 2mn flopi; desigur, pentru evitarea
depasirilor superioare, n implementarea formulei directe (1.26) se utilizeaza scalarea.
In schimb, dupa cum vom vedea, calculul normei 2 face apel la notiuni mai evolu-
ate si implica O(n3 ) operatii (pentru matrice patrate). De aceea, normele 1, si
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


In numeroase probleme apar matrice ale caror elemente sunt nule n 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 algorit-
milor generali au ca prim obiectiv reducerea matricei initiale la una cu structura
mai simpla.
In aceasta sectiune vom prezenta cateva tipuri de matrice structurate si pro-
prietatile lor principale. Pentru simplitate, vom considera doar matrice patrate,
din Rnn . Extinderea la matrice dreptunghiulare este imediata.
Definitii. 1) O matrice D se numeste diagonala daca elementele nediagonale
sunt nule, adica dij = 0, pentru i 6= j.
2) O matrice T se numeste inferior triunghiulara daca tij = 0, pentru i < j, si
superior triunghiulara daca tij = 0, pentru i > j. Figura 1.6 prezinta astfel de ma-
trice. Evident, o matrice simultan inferior si superior triunghiulara este diagonala.

O matrice se numeste triunghiulara unitate daca este triunghiulara si, n plus,


toate elementele sale diagonale sunt egale cu 1.
O matrice se numeste strict triunghiulara daca este triunghiulara si toate e-
lementele 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 proprietati deosebite care vor fi evidentiate n sectiuni
urmatoare ale acestui capitol.
3) O matrice H se numeste inferior Hessenberg daca hij = 0, pentru j > i + 1,
si superior Hessenberg daca hij = 0, pentru i > j + 1.
4) O matrice A se numeste tridiagonala daca este simultan inferior si superior
Hessenberg, adica aij = 0, pentru |i j| > 1.
In general, o matrice B se numeste banda, de latime inferioara p, daca bij = 0,
pentru i > j+p, si de latime superioara q, daca bij = 0, pentru j > i+q. Daca p = q,
vom spune ca B este matrice banda de latime 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.
Proprietati. Vom prezenta n continuare cateva proprietati utile ale matricelor
structurate.
Este evident ca suma a doua matrice cu structuri identice va avea aceeasi struc-
tura. De asemenea, nmultirea unei matrice cu un scalar conserva structura.
In ce priveste produsul, proprietatile nu mai sunt atat de generale.

Propozitia 1.2 a. Daca D este o matrice diagonala si A este o matrice struc-


turata, atunci matricele DA si 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 si H este inferior (su-
perior) Hessenberg, atunci LH si HL sunt matrice inferior (superior) Hessenberg.

Demonstratie. Vom demonstra doar punctul b n cazul inferior triunghiular, cele-


lalte demonstratii fiind lasate ca exercitiu.
FiePA si B doua matrice inferior triunghiulare, si C = AB. Evident,
cij = nk=1 aik bkj . 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;
asadar, aik bkj = 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 relatia
X i
cij = aik bkj , (1.30)
k=j

deoarece aik = 0 pentru k > i si bkj = 0 pentru k < j.


Daca A si B sunt inferior triunghiulare unitate, atunci particularizand (1.30) se
obtine cii = aii bii = 1, deci si C este inferior triunghiulara unitate.
AA. Inmultirea matricelor triunghiulare. Datorita elementelor nule, algo-
ritmii implicand matrice structurate pot fi simplificati astfel ncat sa fie executate
doar operatiile aritmetice strict necesare.
Vom exemplifica cu algoritmul de nmultire a doua matrice inferior triunghiulare,
A si B. Profitam de faptul ca rezultatul C este inferior triunghiular si calculam cij
numai pentru i j, folosind (1.30) si nu formula generala.
1.6. MATRICE STRUCTURATE 41

Algoritmul 1.14 (TRMM Inmultire de matrice inferior triun-


ghiulare) (Se dau A, B Rnn inferior triunghiulare. Se calculeaza
C = AB.)
1. Pentru i = 1 : n
1. Pentru j = 1 : i
P
1. cij = ik=j aik bkj
Comentarii. Cele doua bucle sunt destinate parcurgerii pe linii a elementelor
triunghiului inferior al matricei C; parcurgerea se poate face si pe coloane, prin:
Pentru j = 1 : n, Pentru i = j : n. Acest algoritm necesita n3 /3 flopi, adica de
sase ori mai putin decat algoritmul general de nmultire de matrice.
AA. Memorarea matricelor structurate se poate face n tablouri n n,
ca pentru toate celelalte matrice, cu dezavantajul stocarii elementelor nule; totusi,
exista si un avantaj: accesul la elementele matricelor se face identic pentru matricele
generale si pentru cele structurate.
Daca se doreste economie de memorie, stocarea elementelor nule se poate evita
usor; acest mod de memorare se numeste compact sau mpachetat (packed). Exem-
plificam n continuare pentru cateva 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 pozitia
i(i1)
2 + j din v.
O matrice tridiagonala T se poate memora n trei vectori a, b, c (n fiecare cate
o diagonala), ceea ce este evident din notatia:

a 1 c1
b 2 a2 c2

T =
.. .. ..
.
. . .
bn1 an1 cn1
bn an

In general, o matrice banda B, de latime p, se poate memora usor ntr-un tablou


cu 2p + 1 linii si n coloane. Exemplificam pentru p = 2:


...

...

B= ...

...

.. .. .. .. .. ...
. . . . .

In stanga se gaseste matricea banda (cu elementele notate generic), n dreapta


tabloul de memorare (prin sunt notate elemente nesemnificative); se observa ca ele-
mentele de pe aceeasi diagonala a matricei se memoreaza pe aceeasi 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. Pana 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 evidentia submatrice sau blocuri, adica matrice de
dimensiuni mai mici continute n A.
In sensul cel mai larg, notiunea de submatrice se defineste dupa cum urmeaza.
Daca A Rmn , iar I = {i1 , i2 , . . . , ir } 1 : m si J = {j1 , j2 , . . . , jp } 1 : n sunt
doua multimi de indici astfel ncat i1 < i2 < . . . < ir , j1 < j2 < . . . < jp , atunci
matricea A de dimensiune r p definita de akl = aik jl , este numita submatrice a
matricei A. Figura 1.7a ilustreaza notiunea.
Se observa ca A este obtinuta prin extragerea elementelor aflate la intersectiile
liniilor si coloanelor din I, respectiv J . Daca indicii din I, respectiv J , sunt
consecutivi, atunci submatricea mai este numita si bloc. Pentru a ne referi la blocul
astfel definit vom folosi si notatia A(i1 : ir , j1 : jp ).
Daca A Rnn si I = J , atunci submatricea A se numeste principala. Daca,
not
n plus, I = {1, 2, . . . , r}, atunci A = A[r] este numita submatrice lider principala
de ordin r a matricei A; aceasta este blocul r r pozitionat stanga-sus n A. Vezi
figurile 1.7b,c.
Partitionari conforme. Vom lucra n continuare cu matrice partitionate n
blocuri, notate astfel

A11 A12 ... A1n B11 B12 . . . B1l

A21 A22 ... A2n


B21 B22 . . . B2l

A= .. .. .. .. , B= .. .. .. .. , (1.31)
. . . . . . . .
Am1 Am2 . . . Amn Bp1 Bp2 . . . Bpl

n care blocurile Aij au dimensiune i j , iar Bij dimensiune i j . Evident,


matricea A are (1 + . . . + m ) linii si (1 + . . . + n ) coloane.
Este interesant sa studiem operatiile cu matrice astfel partitionate, mai precis
modul de partitionare care permite nlocuirea operatiilor cu elemente prin cele cu
blocuri.
1.7. MATRICE BLOC 43

Daca m = p, i = i , i 1 : m, si n = l, cu j = j , j 1 : n, atunci

C11 . . . C1n
.. .. ..
A+B =C = . . . , cu Cij = Aij + Bij . (1.32)
Cm1 . . . Cmn

Daca n = p, i = i , i 1 : n, atunci

D11 . . . D1l n
AB = D = ...
.. .. , cu D = X A B . (1.33)
. . ij ik kj
Dm1 . . . Dml k=1

Partitionarile care permit scrierea relatiilor de mai sus se numesc conforme cu


operatia executata; se observa ca formulele de calcul al sumei si produsului la nivel
de bloc sunt similare celor la nivel de element; evident, suma si produsul a doua
blocuri se calculeaza cu formulele elementare cunoscute.
Intorcandu-ne la sectiunea dedicata nmultirii de matrice, putem acum constata
ca relatiile (1.15)(1.18) sunt cazuri particulare ale relatiei (1.33).
Pentru transpunere avem

AT11 AT21 ... ATm1
AT12 AT22 ... ATm2
AT =

.. .. .. .. . (1.34)
. . . .
AT1n AT2n . . . ATmn

Matrice bloc structurate. O matrice partitionata ca n (1.31) poate fi struc-


turata la nivel de blocuri. Folosim aceleasi definitii ca n sectiunea precedenta,
gandind nsa acum la nivel de blocuri si nu la nivel de element.
Presupunem ca A din 1.31 este patrata, m = n si 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
partitionate conform pentru adunare. Pentru nmultire, este adevarat analogul la
nivel de bloc al propozitiei 1.2, adica, de exemplu, produsul a doua matrice bloc
superior (inferior) triunghiulare partitionate conform este o matrice bloc superior
(inferior) triunghiulare.
AA. Inmultire la nivel de bloc. Pe calculatoarele cu memorie ierarhica, cu
structura sugerata n figura 0.4c, partitionarea matricelor n blocuri si utilizarea unei
relatii de tipul (1.33) poate conduce la o eficienta sporita a nmultirii de matrice.
Consideram, pentru simplitate, matricele patrate A, B Rqq si dorim sa cal-
culam produsul lor C = AB. Partitionam A, B si C ca n (1.31), cu mentiunea
ca acum m = n, p = l, iar toate blocurile sunt patrate si au aceleasi 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
m
X
Cij = Aik Bkj . (1.35)
k=1

Pe un calculator cu memorie ierarhica trebuie minimizat traficul ntre memoria


principala MP si memoria rapida MR. Desigur, matricele A, B, C sunt stocate
n MP. Daca alegem dimensiunea blocurilor r astfel ncat 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 rand,
blocurile Aik , Bkj implicate n suma din (1.35), din MP n MR, si abia apoi de a
efectua nmultirea 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 si
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. In acest algoritm, atribuirile din instructiunea 1.1.2.1 reprezinta de


fapt transferuri din MP n MR; analog, n instructiunea 1.1.3 se executa un transfer
din MR n MP. Operatia matriceala Z Z + X Y din 1.1.2.2 nu este detaliata aici;
ea se executa cu algoritmul 1.10 la nivel de element; esential este faptul ca toate
variabilele implicate se gasesc n MR, deci nu e necesar nici un transfer din/spre MP.
Lucrand la nivel de blocuri, numarul de operatii ramane neschimbat, adica 2q 3 ;
n schimb, numarul de accesuri la MP devine 2r2 m3 = 2q 2 m = 2q 3 /r (instructiunea
1.1.2.1 se executa de m3 ori, de fiecare data transferandu-se doua blocuri cu r2
elemente).
Daca s-ar folosi algoritmul 1.10 la nivel de element pe un calculator cu memorie
ierarhica, fiecare operatie cij cij + aik bkj ar implica cel putin doua transferuri
din MP n MR (putem presupune ca cij ramane n MR cat timp este calculat). Ar
avea loc deci aproximativ 2q 3 accesuri la MP.
In concluzie, fata de versiunea la nivel de element, n algoritmul 1.15 la nivel
de bloc se acceseaza de r ori mai putin memoria principala, ceea ce conduce la o
crestere semnificativa de viteza.
Sa rezumam ideea eficientizarii algoritmilor pe calculatoare cu memorie ier-
arhica; ea va fi folosita si n rezolvarea altor probleme. Se partitioneaza matricele de
intrare n blocuri si se exprima algoritmul n operatii ntre blocuri (aceasta e banal
1.7. MATRICE BLOC 45

la produsul matriceal, dar mai complicat la alte probleme); dimensiunile blocurilor


se aleg cat mai mari (de obicei), dar astfel ncat toate blocurile implicate ntr-o
operatie sa ncapa simultan n MR.
Algoritmul Strassen. Aparent, prin nsasi definitia ei (algoritmul numit
generic standard, n continuare), nmultirea a doua matrice n n reale nece-
sita 2n3 flopi. Exista nsa o multitudine de algoritmi, numiti global rapizi, desi se
bazeaza pe idei diferite, care au o complexitate aritmetica mai mica. Primul dintre
acestia, si singurul dovedit utilizabil n practica (mpreuna cu unele variante), este
cel descoperit n 1969 de Strassen [?].
Fie A, B Rnn si, pentru simplitate, consideram ca n este divizibil cu 2.
Partitionam matricele A, B si C = AB n blocuri de dimensiune n/2 n/2, adica
     
A11 A12 B11 B12 C11 C12
A= , B= , C= . (1.36)
A21 A22 B21 B22 C21 C22

Algoritmul lui Strassen este definit de formulele urmatoare, usor de verificat prin
simpla substitutie:
 
M1 + M2 + M3 M4 M4 + M6
C = AB =
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 nmultiri si 18 adunari
de matrice de dimensiune n/2 n/2, n timp ce n algoritmul standard la nivel de
bloc se fac, pentru aceeasi partitionare (1.36), 8 nmultiri si 4 adunari de blocuri.
3
18n2
Astfel, numarul de operatii pentru algoritmul Strassen este N1 (n) = 14n 8 + 4 .
Este evident ca, pentru n suficient de mare (mai precis n > 18), N1 (n) < 2n3 si deci
algoritmul Strassen este mai rapid decat cel standard. In schimb, implementarea
formulelor (1.37) necesita memorie suplimentara pentru rezultatele intermediare.
Un numar de operatii si mai bun se obtine daca, pentru calculul celor 7 pro-
duse de matrice n/2 n/2 din (1.37) se utilizeaza, recursiv, aceleasi formule ale
lui Strassen. La fiecare nivel de recursie dimensiunea problemei se njumatateste
(simplificand, presupunem acum ca n este o putere a lui 2). Recursia are loc pana
cand se atinge o dimensiune n0 suficient de mica, pentru care algoritmul standard
este mai eficient decat cel al lui Strassen. Numarul de operatii N (n) este definit de
recurenta
n n2
N (n) = 7N ( ) + 18 , N (n0 ) = 2n30 , (1.38)
2 4
a carei solutie, pentru n n0 , este de ordinul

N (n) = O(nlog2 7 ), (log2 7 2.807). (1.39)

Vezi problema 1.20 pentru solutia exacta.


46 CAPITOLUL 1. ALGORITMI ELEMENTARI

In practica, dimensiunea n0 este mai mare decat 18 (dar de obicei n0 < 100),
datorita operatiilor nearitmetice suplimentare necesare n algoritmul Strassen, n
special alocarilor de memorie si apelurilor recursive. Asadar, acest algoritm este
eficient pentru nmultirea matricelor mari, cu dimensiuni de ordinul sutelor sau
miilor.
In privinta stabilitatii numerice algoritmul Strassen este inferior celui standard,
de aceea trebuie utilizat cu anume precautii. Recomandam referintele [IX], [?]
cititorului interesat.

1.8 Matrice normale


In aceasta sectiune vom lucra n principal cu matrice patrate, din Rnn , specificand
explicit celelalte cazuri.
O matrice A Rnn se numeste normala daca AT A = AAT .
Matricele normale au proprietati deosebit de interesante, cu precadere n cateva
cazuri particulare pe care le enumeram acum si 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 AT A = I.

Fie A Rnn ; se numeste forma P P biliniara asociata matricei A functia


f : Rn Rn R, f (x, y) = xT Ay = ni=1 nj=1 aij xi yj . Se observa ca functia 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. Asadar simetria este fata de diagonala principala a matricei; se observa
ca pentru o matrice nepatrata notiunea de simetrie nu are sens, A si AT neavand
aceleasi dimensiuni.
Suma si produsul cu scalari conserva simetria, adica daca matricele A, B sunt
simetrice si R, atunci A + B si A sunt simetrice. In schimb,  n gene-

1 1
ral, produsul AB nu este simetric; considerati, de exemplu, A = si
1 2
 
1 1
B= .
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
Pn P asociata unei matrice simetrice este functia g : Rn R,
T n
g(x) = x Ax = i=1 j=1 aij xi xj . 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 .
7 Formele patratice se asociaza numai matricelor simetrice din urmatorul motiv: daca A nu e

simetrica, luand A = (A + AT )/2 se vede ca xT Ax = xT Ax, x Rn , si A este simetrica. Sa


notam ca B = (A AT )/2 se numeste componenta antisimetrica, iar xT Bx = 0.
1.8. MATRICE NORMALE 47

Matricele simetrice si formele patratice asociate pot avea semn, n sensul


definit n continuare.
O matrice simetrica A este pozitiv definita daca xT Ax > 0, pentru orice vector
x Rn , x 6= 0; se noteaza A > 0, dar, atentie,  aceasta nu nseamna ca toate
2 1
elementele matricei sunt pozitive; de exemplu, este pozitiv definita,
1  2 
1 2
deoarece 2x21 2x1 x2 + 2x22 > 0, [x1 x2 ]T 6= 0, nsa nu este, deoarece
2 1
x21 4x1 x2 + x22 poate avea orice semn cand x1 , x2 R. Matricea A este pozitiv
semidefinita daca xT Ax 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 numeste cu semn nedefinit.
Suma si produsul cu scalari pozitivi conserva semnul; de exemplu, daca A, B
sunt pozitiv definite si > 0, atunci A+B si A sunt pozitiv definite (demonstrati !).

Propozitia 1.3 O submatrice principala a unei matrice pozitiv definite A este po-
zitiv definita. In particular, submatricele lider principale A[k] , k 1 : n, sunt
pozitiv definite si toate elementele diagonale sunt pozitive.

Demonstratie. Fie I = {i1 , i2 , . . . , ir }, multimea 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, si din pozitivitatea matricei A se deduce:
xT A x = y T Ay > 0, adica A este pozitiv definita.
Congruenta. Doua matrice simetrice A, B se numesc congruente daca exista
o matrice nesingulara T Rnn astfel ncat B = T T AT . Evident, A = T T BT 1 .
(Demonstrati ca simetria este conservata de transformarea de congruenta.)
Daca A, B sunt congruente si A > 0, atunci B > 0, adica transformarea de
congruenta conserva semnul. (Intr-adevar, xT Bx = xT T T AT x = (T x)T A(T x) > 0,
pentru ca A > 0 si T x 6= 0, daca x 6= 0, coloanele lui T fiind liniar independente.)
Matrice ortogonale. O matrice patrata Q Rnn este ortogonala daca
Q Q = In ; evident, avem QT = Q1 , deci transpusa matricei este chiar inversa ei,
T

iar QQT = In . Partitionand Q pe coloane si exprimand QT Q prin produse scalare,


definitia este echivalenta cu qiT qj = 0, pentru i 6= j, si kqi k2 = 1, adica matricea Q
are coloanele vectori ortonormali.
In cazul n care matricea nu este patrata, Q Rmn , daca QT Q = In , atunci
matricea are coloanele ortonormale (m > n si QQT 6= Im ). Daca QQT = Im , atunci
matricea are liniile ortogonale (m < n si QT Q 6= In ).
Vom considera n continuare doar matrice ortogonale patrate. Referitor la
operatiile elementare, vom observa ca produsul a doua matrice ortogonale este
o matrice ortogonala; ntr-adevar, daca Q, U sunt amandoua ortogonale, atunci
(QU )T (QU ) = U T QT QU = U T U = I. Asadar, matricele ortogonale formeaza grup
n raport cu nmultirea, notat GO(n).
48 CAPITOLUL 1. ALGORITMI ELEMENTARI

De asemenea, transpusa unei matrice ortogonale este ortogonala, deoarece


(QT )T QT = QQT = I. In schimb, suma a doua matrice ortogonale nu este or-
togonala, nici produsul unei matrice ortogonale cu un scalar diferit de 1.
Matricele ortogonale au proprietatea remarcabila de a conserva normele 2 si
Frobenius.

Propozitia 1.4 Fie matricele ortogonale Q Rnn , U Rmm . Atunci:


1. kQxk2 = kxk2 , x Rn , deci kQk2 = 1.
2. kU AQk2 = kAk2 , kU AQkF = kAkF , A Rmn .

Demonstratie. 1. kQxk22 = (Qx)T (Qx) = xT QT Qx = xT x = kxk2 .


2. Aplicand punctul 1 avem

kU Ak2 = max kU (Ax)k2 = max kAxk2 = kAk2 .


kxk2 =1 kxk2 =1

Deoarece ImQ = Rn , aplicand din nou punctul 1 avem

kAQk2 = max kAQxk2 = max kA(Qx)k2 = kAk2 .


kxk2 =1 kQxk2 =1

Utilizand cele doua rezultate anterioare se obtine kU AQk2 = kAQk2 = kAk2 .


Revenim acum putin la notiunea de echivalenta, prezentata n sectiunea 1.4.
Doua matrice A, B Rmn se numesc ortogonal echivalente la dreapta (stanga),
daca exista o matrice ortogonala Q Rnn (Q Rmm ) astfel ncat A = BQ (A =
QB). A si B se numesc ortogonal echivalente daca exista Q Rmm , P Rnn
ortogonale astfel ncat B = QT AP .
Presupunand A, B de rang maxim (deci coloanele lor sunt baze pentru ImA, re-
spectiv ImB) si amintindu-ne ca A = QB se scrie pe coloane ai = Qbi , sa observam
ca aTi aj = bTi QT Qbj = bTi bj , deci unghiurile dintre vectorii componenti ai bazei se
pastreaza la o transformare de echivalenta ortogonala (la stanga).
Proiectori. Fie o matrice P Rnn si un subspatiu S Rn . P se numeste
proiector pe S daca ImP = S si P 2 = P . Justificare: daca x Rn , atunci P x
ImP = S, deci aplicarea proiectorului unui vector oarecare l va duce pe acesta n S;
P x este proiectia lui x pe S. Mai mult, P (P x) = P x, deci aplicarea proiectorului
nu modifica proiectia.
In general, orice matrice P astfel ncat P 2 = P se zice matrice de proiectie sau
def
proiector, pentru ca ea proiecteaza pe S = ImP . Analog, Q = I P proiecteaza
pe T = ImQ.
Daca, n plus, matricea P este simetrica, atunci P se numeste proiector or-
togonal. Justificare: daca x Rn , atunci P x ImP si P (x P x) = 0, deci
x P x KerP = KerP T , deci P x (x P x), adica x se descompune ca suma a
doi vectori ortogonali ca n figura 1.8.
Daca matricea B Rnr are coloanele ortonormale (formand deci o baza or-
togonala pentru ImB = S), atunci P = BB T este proiectie ortogonala pe S si, mai
mult, este unica (demonstrati !).
Particularitati ale matricelor complexe. Notiunile de simetrie si ortogona-
litate se pot defini si pentru matrice complexe. Avand n vedere definitia produsului
1.9. SISTEME DE ECUATII LINIARE 49


*
6
x 
 x Px

"
"  "
"
" S
"  -
"
" Px "
"
" "

Fig. 1.8: Actiunea unui proiector ortogonal pe S asupra unui vector oarecare x

scalar complex, mai utile sunt notiunile analoage obtinute (formal) prin nlocuirea
transpunerii prin transpunere si complex conjugare. Daca A Cnn , se noteaza
cu AH = AT conjugata transpusei matricei A. Matricea A Cnn se numeste
normala daca AAH = AH A.
Matricea A Cnn se numeste hermitica daca AH = A. In acest caz scalarul
x Ax este real pentru orice x Cn . O matrice hermitica A Cnn este pozitiv
H

definita daca xH Ax > 0, x Cn , x 6= 0. O matrice A Cnn este unitara daca


AH A = 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 jumatati,
mai precis a triunghiului inferior sau a celui superior. Memorarea se poate face n
variantele discutate pentru matrice triunghiulare, n sectiunea 1.6.
Desigur, acest mod de memorare va implica particularizari ale algoritmilor; vom
exemplifica pentru produsul matrice-vector (Gaxpy) y Ax + y, presupunand ca
A este memorata prin triunghiul superior. In exprimarea elementului yi ,
n
X i1
X n
X
yi yi + aij xj = yi + aji xj + aij xj ,
j=1 j=1 j=i

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.
Acelasi mod de memorare, printr-un singur triunghi, se utilizeaza si n cazul
matricelor antisimetrice sau hermitice. Propunem cititorului adaptarea algoritmului
Gaxpy n aceste doua cazuri.

1.9 Sisteme de ecuatii liniare


Un sistem de m ecuatii liniare cu n necunoscute are forma

a11 x1 + a12 x2 + . . . + a1n xn


= b1
a21 x1 + a22 x2 + . . . + a2n xn = b2
, (1.40)

...

am1 x1 + am2 x2 + . . . + amn xn = bm

unde aij R, bi R, pentru i = 1 : m, j = 1 : n, sunt date si xj , j = 1 : n, sunt


50 CAPITOLUL 1. ALGORITMI ELEMENTARI
i

A x

Fig. 1.9: Utilizarea elementelor din triunghiul superior n produsul dintre o matrice
simetrica si un vector

necunoscutele. In forma matriceala, sistemul este

Ax = b, (1.41)

A fiind numita matricea coeficientilor, b termenul liber (sau partea dreapta a sis-
temului), 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 relatia ntre m si n:

cand numarul de ecuatii este mai mare decat numarul de necunoscute (m > n),
sistemul (1.41) se numeste supradeterminat;

cand, 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 solutia sistemului liniar (1.41) nseamna a calcula un vector x Rn astfel


ncat egalitatea Ax = b sa fie satisfacuta. Desigur, aceasta se poate realiza doar
daca sistemul are ntr-adevar (cel putin) o solutie. Daca nu are, vom atribui o noua
semnificatie notiunii de solutie, astfel ncat sistemul sa aiba cel putin una. Daca
exista mai multe solutii, va trebui selectata, ntr-un anume fel, una singura care va
fi calculata.
Conditiile n care sistemul (1.41) are solutie si n care aceasta este unica sunt
bine cunoscute din algebra liniara.

Teorema 1.2 Sistemul liniar (1.41) are solutie daca si numai daca b ImA.
Daca ImA = Rm , adica A este epica (are liniile independente), atunci sistemul
(1.41) are solutie pentru orice termen liber b Rm si reciproc.

Demonstratia este imediata prin definitia lui ImA.


1.9. SISTEME DE ECUATII LINIARE 51

y3
6

b 6 ImA
HbH ImA
Y  1
HH 
HH y1
-

 

y2 
ImA

Fig. 1.10: ImA si posibili b pentru exemplul 1.2


1 0
Exemplul 1.2 Daca A = 1 1 , atunci ImA este planul y2 = y1 + y3 . Daca
0 1
b = [b1 b2 b3 ]T este astfel ncat b2 = b1 + b3 , atunci sistemul Ax = b are solutie
deoarece conditia din teorema 1.2 este ndeplinita. Altfel, sistemul nu are solutie
(vezi figura 1.10).
Cand solutia exista, unicitatea ei rezulta din

Teorema 1.3 1) Daca x0 Rn este o solutie particulara a sistemului liniar (1.41),


atunci multimea tuturor solutiilor sistemului este varietatea liniara

x0 + KerA = {x = x0 + z | z KerA}.

2) Solutia x este unica daca si numai daca KerA = {0}, adica matricea A este
monica (are coloanele independente).

Demonstratie. Daca Ax0 = b, atunci z = x x0 satisface Az = 0, deci z KerA;


reciproc, Az = 0 implica A(x0 + z) = b.

    1
1 1 0 2
Exemplul 1.3 Daca A = si b = , atunci x0 = 1 este
0 1 1 1
0
solutie 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) si P (1, 1, 1). Astfel, vectorii din KerA au forma

1
Ker A z = 1 , R,
1
52 CAPITOLUL 1. ALGORITMI ELEMENTARI

x3
6

x 
:
 x1
O  -

 x@
9
x2 
0
R
@

KerA
x + KerA

Fig. 1.11: Solutiile (x0 solutie particulara, x solutie generala) sistemului din
exemplul 1.3

si deci (vezi figura 1.11),



1+
x + KerA = y = 1 | R .

Corolar 1.1 Cand matricea A este patrata (A Rnn ), atunci urmatoarele afir-
matii sunt echivalente:
i) ImA = Rn , i.e. sistemul (1.41) admite solutie unica pentru orice b Rn ;
ii) KerA = {0};
iii) A este inversabila.
Daca sistemul are solutie, aceasta se poate scrie

x = A1 b. (1.42)

Daca sistemul este omogen, atunci solutia unica este x = 0.

Trebuie subliniat ca (1.42) nu este o formula adecvata calculului numeric al


solutiei sistemului Ax = b. Vom vedea n capitolul 2 metode numerice eficiente si
precise pentru a face acest lucru.
Cand sistemul (1.41) nu are solutie, este convenabil sa definim pseudosolutia x
ca vectorul care minimizeaza o norma a reziduului r = b Ax. Este evident ca daca
b ImA, atunci aceasta pseudosolutie devine solutie adevarata a sistemului.
Cand sistemul (1.41) are mai multe solutii, o posibilitate de a selecta una dintre
ele este de a defini solutia normala x de lungime minima, lungimea fiind definita
printr-o norma adecvata.
Vom reveni asupra acestor definitii n capitolul 3, acolo unde vom prezenta si
algoritmi de calcul al solutiilor astfel definite.
1.9. SISTEME DE ECUATII LINIARE 53

Determinantul. Fie o matrice patrata A Rnn ; determinantul matricei A


not
este un numar real, notat det(A), pe care l vom defini recursiv. Daca A = a R,
atunci det(A) = a. Pentru A Rnn ,
n
X
det(A) = (1)j+1 a1j det(A1j ),
j=1

unde A1j R(n1)(n1) este matricea obtinuta din A prin eliminarea liniei 1 si
coloanei j.
Cateva proprietati importante ale determinantului sunt:
1. det(I) = 1;
2. det(A) = n det(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 numeste nesingulara. Se poate
demonstra ca notiunea de nesingularitate este echivalenta cu cea de inversabili-
tate. 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 si 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 in-
ferior (superior) triunghiular daca matricea A este inferior (superior) triunghiulara.
O matrice triunghiulara este inversabila daca si 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 substitutie numerica.
Sa consideram ntai un sistem inferior triunghiular, Lx = b, unde L Rnn , cu
lij = 0 pentru i < j, lii 6= 0, i 1 : n, si b Rn . Prima ecuatie este l11 x1 = b1 , din
care
x1 = b1 / l11 . (1.43)
In general, daca se cunosc x1 , x2 , . . . , xi1 , se poate rezolva a i-a ecuatie,
i1
X
lij xj + lii xi = bi ,
j=1

pentru a obtine
i1
X
xi = bi lij xj / lii . (1.44)
j=1

Formulele (1.43) si (1.44) definesc un algoritm pentru calculul solutiei sistemului


Lx = b, cunoscut ca metoda substitutiei nainte.

Algoritmul 1.16 (LTRIS Calculul solutiei unui sistem inferior


triunghiular) (Se dau L Rnn , inferior triunghiulara, inversabila, si
b Rn . Se calculeaza solutia 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 lij xj
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 executie a buclei Pentru i necesita
2(i 1) flopi n 2.1.1, pentru calculul sumei Pndin (1.44), si 1 flop pentru mpartirea
din 2.2. In total, sunt necesari NLTRIS = i=1 (2(i 1) + 1) = n(n 1) + n = n2
flopi si MLTRIS = n(n + 1)/2 + 2n + 1 n2 /2 locatii de memorie (pentru elemente
n virgula mobila). Daca vectorul b nu este necesar ulterior, solutia x poate fi
memorata n aceeasi 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 aceleasi proprietati se obtine daca schimbam ordinea celor doua
bucle, ceea ce revine la a parcurge matricea L pe coloane, nu pe linii. Substitutia
decurge acum astfel: dupa calculul lui x1 cu (1.43), se actualizeaza valorile celorlalte
necunoscute xi , i = 2 : n (initializate cu bi ), cu termenul li1 x1 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, si b Rn . Se calculeaza
solutia 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 lij xj

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, executia algoritmului LTRIS nu produce x = L1 b,
ci o solutie aproximativa x. Se poate demonstra ca acest x satisface

(L + F )x = b, cu |fij | nM |lij | + O(2M ), (1.45)

adica x este solutia unui sistem cu matricea coeficientilor usor perturbata fata
de L. Asadar algoritmul LTRIS este numeric stabil. (Acesta este un rezultat tipic
de analiza inversa a erorilor.) Practica numerica arata o acuratete a algoritmului
LTRIS mult superioara celei indicate de (1.45).
Pentru a rezolva sistemul superior triunghiular (nesingular) U x = b, unde
U Rnn este o matrice superior triunghiulara, cu uii 6= 0, i 1 : n, si b Rn , sa
observam ca ultima ecuatie are forma unn xn = bn , iar de aici

xn = bn /unn . (1.46)
1.9. SISTEME DE ECUATII LINIARE 55

Mai mult, daca xn , xn1 , . . . , xi+1 , sunt deja calculate, atunci, din a i-a ecuatie,
n
X
uii xi + uij xj = bi ,
j=i+1

se obtine
n
X
xi = bi uij xj /uii . (1.47)
j=i+1

Din formulele (1.46) si (1.47), care definesc asa numita substitutie napoi, obtinem
direct algoritmul urmator.

Algoritmul 1.18 (UTRIS Calculul solutiei unui sistem superior


triunghiular) (Se dau U Rnn , superior triunghiulara, inversabila, si
b Rn . Se calculeaza solutia x a sistemului U x = b.)
1. x b
2. Pentru i = n : 1 : 1
1. Pentru j = i + 1 : n
1. xi xi uij xj
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, si b Rn . Se calculeaza
solutia x a sistemului U x = b.)
1. x b
2. Pentru j = n : 1 : 1
1. xj xj /ujj
1. Pentru i = 1 : j 1
1. xi xi uij xj

Comentarii. Ca si n cazul inferior triunghiular, efortul de calcul este NUTRIS = n2


flopi, iar memoria ocupata MUTRIS n2 /2 locatii n virgula mobila. Vom apela
acest algoritm prin x = UTRIS(L, b). Si pentru algoritmul UTRIS este valabila
o relatie de genul (1.45), i.e. algoritmul de mai sus este numeric stabil. Rezolvarea
sistemelor triunghiulare este o operatie de nivel 2.
AA. Sisteme triunghiulare cu parte dreapta multipla. Se spune despre
un sistem de forma AX = B, cu A Rnn , B Rnp (rezultand 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 = A1 B. Partitionand X si 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. Partitionam
sistemul astfel
56 CAPITOLUL 1. ALGORITMI ELEMENTARI


A11 0 ... 0 X1 B1

A21 A22 ... 0
X2
B2

.. .. .. .. = .. , (1.48)
. . . 0 . .
Am1 Am2 . . . Amm Xm Bm
n care Aij Rrr , iar Bi , Xi Rrp . Evident, blocurile diagonale Aii sunt inferior
triunghiulare. Se presupune ca r divide n si 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
relatie asemanatoare cu (1.44):
i
X i1
X
Aij Xj = Bi = Aii Xi = Bi Aij Xj , (1.49)
j=1 j=1

din care se poate deduce un algoritm similar cu LTRIS (prin substitutie nainte).
Pe un calculator cu memorie ierarhica (figura 0.4c), A, B si X sunt stocate n
memoria principala MP. Alegem r astfel ncat blocurile Aij , Xj si 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 si apoi a efectuarii
calculelor din (1.49).

Algoritmul 1.20 (Se dau A Rnn , inferior triunghiulara, in-


versabila, si 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
(aplicand de p ori algoritmul LTRIS pentru
Czj = dj , j 1 : p)
5. Xi Z

Comentarii. Toate operatiile aritmetice, n numar de pn2 (de p ori mai multe
decat pentru algoritmul LTRIS aplicat unui sistem Axj = bj ), se efectueaza cu
operanzi din MR. Instructiunile 1.1, 1.2.1, 1.3, 1.5 reprezinta transferuri ntre MP
si MR; numarul acestor transferuri este de

m i1 2 2
(r2 + rp) + r2 + rp pn + n ,
X X

i=1 j=1
2r 2

sensibil mai mic decat n cazul n care operanzii s-ar fi aflat n MP (atunci ar fi fost
aproximativ 2pn2 accesuri la MP).
1.9. SISTEME DE ECUATII LINIARE 57

Rezolvarea sistemelor triunghiulare cu parte dreapta multipla face parte din


grupul operatiilor 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 = L1 , utilizam egalitatea evidenta

LX = In ,

pe care o partitionam 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. Intr-adevar, sistemul (1.50) poate fi partitionat
astfel: " #   
(j)
L11 0 xj 0
= , (1.51)
(j)
L21 L22
(j) xj ej
(j)
unde L11 este submatricea de dimensiune (j 1) (j 1) din coltul stanga sus al
matricei L si
ej = [1 0 . . . 0]T Rnj+1 .
Din (1.51) rezulta (
(j)
L11 xj = 0,
(j) (j) (1.52)
L21 xj + L22 xj = ej .
(j) (j)
Deoarece L este inversabila si, prin urmare, la fel sunt L11 si L22 , relatia (1.52)
devine (
xj = 0,
(j) (1.53)
L22 xj = ej .
Aceasta relatie stabileste un fapt important, dat de

Propozitia 1.5 Inversa unei matrice inferior triunghiulare nesingulare este infe-
rior triunghiulara.

In concluzie, matricele inferior triunghiulare inversabile formeaza grup n raport


cu nmultirea matriceala.
Din (1.53) poate fi dedus un algoritm de calcul al inversei unei matrice nesingu-
lare, avand la baza urmatoarea schema de calcul:

L1 1. Pentru j = 1 : n
1. Daca j > 1 atunci xj = 0
(j)
2. xj = LTRIS(L22 , ej )

Se poate observa ca inversa calculata poate fi memorata n aceeasi zona de


memorie ca matricea L. Explicitand rezolvarea sistemului inferior triunghiular,
obtinem
58 CAPITOLUL 1. ALGORITMI ELEMENTARI

Algoritmul 1.21 (LINV Calculul inversei unei matrice inferior


triunghiulare) (Se da L Rnn , inferior triunghiulara si 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 
Pi1
1. lij xij = k=j lik xkj / lii

Comentarii. Numarul de operatii necesar este


n1 n
X X n3
NLINV = n + 2(i j) .
j=1 i=j+1
3

Memoria necesara este MLINV n2 /2 locatii n virgula mobila. Se vede acum ca


rezolvarea sistemului liniar Lx = b folosind relatia x = L1 b (adica LINV) este
ineficienta n comparatie cu algoritmul direct LTRIS.
Pentru a calcula inversa unei matrice superior triunghiulare nesingulare
U Rnn , trebuie rezolvata ecuatia matriceala U X = In , sau, echivalent, cele
n ecuatii liniare
U xj = ej , j = 1 : n, (1.54)
unde xj este coloana j a matricei X = U 1 .
Utilizand partitia
" #   
(j) (j)
U11 U12 xj ej
(j) = , (1.55)
0 U22 x j 0

(j)
unde U11 este submatricea de dimensiune j j din coltul stanga sus a lui U si
ej = [0 0 . . . 0 1]T Rj , si urmand o cale asemanatoare celei parcurse pentru inver-
sarea matricelor inferior triunghiulare, se obtin analoagele relatiei (1.53), propozitiei
1.5 si algoritmului LINV. Avem:
(
(j)
U11 xj = ej ,
(1.56)
xj = 0.

Propozitia 1.6 Inversa unei matrice superior triunghiulare nesingulare este supe-
rior triunghiulara.

Asadar matricele superior triunghiulare inversabile formeaza grup n raport cu


nmultirea.
Daca sistemele (1.56) sunt rezolvate n ordine inversa (pentru j = n, n1, . . . , 1),
se poate vedea cu usurinta ca elementele matricei inverse se pot memora peste cele
ale matricei originale, pe masura ce sunt calculate. Vom obtine deci urmatorul
algoritm.
1.10. VALORI SI VECTORI PROPRII 59

Algoritmul 1.22 (UINV Calculul inversei unei matrice superior


triunghiulare) (Se da U Rnn , superior triunghiulara si 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 : 1P: 1 
j
1. uij xij = k=i+1 u ik xkj /uii

Comentarii. Ca n cazul inferior triunghiular, NUINV n3 /3 si MUINV n2 /2.


Algoritmii de inversare a matricelor triunghiulare sunt numeric stabili.

1.10 Valori si vectori proprii


Fie A Cnn . Numarul C se numeste valoare proprie a matricei A daca exista
un vector v Cn , v 6= 0, astfel ncat

Av = v. (1.57)

In acest caz, v se numeste vector propriu al matricei A, asociat lui .


Se observa ca daca v este vector propriu al matricei A, atunci si u = v este
vector propriu al lui A, corespunzand aceleiasi valori proprii, oricare C, 6= 0.
Asadar, vectorii proprii sunt determinati numai ca directie, nu si ca marime.
Teorema 1.4 Fie A Cnn . Scalarul C este valoare proprie a matricei A
daca si numai daca matricea I A este singulara. Mai mult, matricea A are
exact n valori proprii (numarand 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 asociati acestor perechi pot fi alesi complex conjugati).

Demonstratie. Daca este valoare proprie a matricei A, atunci exista un vector


v 6= 0 astfel ncat Av = v, deci (In A)v = 0 si n consecinta In A este
singulara. Reciproc, daca pentru un C matricea In A este singulara, atunci
exista v Cn , v 6= 0, astfel ncat (In A)v = 0, adica Av = v si deci este
valoare proprie a matricei A.
Deoarece In A este singulara daca si 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 matri-
cei A. Daca A este reala, polinomul caracteristic p() are coeficienti reali si atunci
zerourile sale complexe apar n perechi complex conjugate (pentru vectori proprii,
vezi problema 1.28).
Ca o consecinta directa a faptului ca valorile proprii sunt radacinile ecuatiei
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)

multimea valorilor proprii ale matricei A Cnn (cu repetarea valorilor proprii
multiple). Multimea (A) se numeste spectrul matricei A.
Transformari de asemanare. Suntem interesati de transformarile care con-
serva 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 nesin-
gulara T Cnn astfel ncat
B = T AT 1. (1.60)
T se numeste transformare de asemanare. Daca T este unitara (ortogonala, n cazul
real), atunci A si B sunt ortogonal asemenea.

Teorema 1.5 Doua matrice asemenea A, B Cnn au acelasi spectru, adica


(A) = (B). Mai mult, daca T este matricea de transformare din (1.60) si 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 aceleiasi valori proprii.

Demonstratie. Daca A si B satisfac (1.60), atunci

det(I B) = det(I T AT 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 T AT 1T vA = T vA , de unde BvB = vB si deci
(1.61) este adevarata.
Matrice simple. O matrice A Cnn care are un set complet de n vectori
proprii liniar independenti se numeste simpla. Acesta este cazul generic si toto-
data cel n care proprietatile 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 si V Cnn matricea ale carei
coloane sunt vectorii proprii ai lui A. Atunci

V 1 AV = Cnn (1.62)

este o matrice diagonala.

Demonstratie. V = [v1 v2 . . . vn ] si Avj = j vj , j 1 : n, unde j sunt valorile


proprii ale lui A. Atunci

AV = [Av1 Av2 . . . Avn ] = [1 v1 2 v2 . . . n vn ] =


1.10. VALORI SI VECTORI PROPRII 61

= [v1 v2 . . . vn ] diag(1 , 2 , . . . , n ) = V .
Deoarece vectorii vj , j 1 : n, sunt liniar independenti, matricea V este nesingulara
si (1.62) este adevarata.
Asadar o matrice simpla poate fi diagonalizata peste C printr-o transformare de
asemanare. Nu aceasta este si abordarea numerica a problemei, care va fi discutata
pe larg n capitolul 4.
Subspatii invariante. Fie A Cnn si un subspatiu S Cn ; spunem ca S
este A-invariant daca Av S, v S. (Definitia este identica pentru A Rnn ,
S Rn .)
Se observa usor ca daca S are o baza formata din vectori proprii ai matricei A,
atunci S este A-invariant. Reciproca acestei afirmatii nu este, n general, adevarata.
AA. Calculul vectorilor proprii ai matricelor triunghiulare. Fie
U Rnn o matrice superior triunghiulara. Asa cum am observat mai sus, valorile
sale proprii sunt i = uii , i 1 : n. Dorim acum sa calculam vectorii proprii.
1. Consideram ntai cazul n care valorile proprii sunt distincte doua cate doua.
Fie T = j I U ; vectorul propriu vj va fi calculat rezolvand sistemul liniar T vj = 0,
care poate fi partitionat

T11 y T13 vj T11 vj + vjj y + T13 vj = 0
0 w T
vjj =0 wT vj = 0 , (1.63)

T33 vj T33 vj = 0

unde vj Rj1 , vj Rnj . Valorile proprii fiind distincte, T11 si T33 sunt nesin-
gulare. Din (1.63), T33 vj = 0, si deci vj = 0. Ecuatia wT vj = 0 este ntotdeauna
satisfacuta iar vjj poate avea o valoare nenula oarecare, sa zicem vjj = 1. In fine,
sistemul superior triunghiular T11 vj = y are solutie unica, care se poate calcula
cu algoritmul UTRIS.
Vectorii proprii astfel calculati sunt liniar independenti, deoarece matricea
V = [v1 v2 . . . vn ] este superior triunghiulara unitate; rezultatul e natural, deoarece
U este simpla. Directiile vectorilor proprii sunt unic definite, marimile lor fiind alese
arbitrar prin constrangerea vjj = 1.
2. Daca exista valori proprii multiple, atunci T va avea mai multe valori di-
agonale nule. Putem alege n continuare, n (1.63), vj = 0, vjj = 1. Acum nsa,
T11 poate fi singulara, deci se pune problema daca sistemul superior triunghiular
T11 vj = y are solutie. Procedand prin substitutie napoi, presupunem ca vjj = 1,
vj1,j , . . . , vi+1,j au fost calculate si scriem ecuatia i a acestui sistem
j1
X
tii vij = ij , cu ij = tij tik vkj . (1.64)
k=i+1

Daca tii 6= 0, evident ca n (1.64) vij = ij / tii si substitutia poate continua. Daca
tii = 0, sunt doua variante: fie ij = 0, si atunci vij din (1.64) poate avea o valoare
arbitrara, de exemplu vij = 1, si substitutia continua; fie ij 6= 0, si atunci (1.64)
nu este satisfacuta, deci sistemul (1.63) nu are solutie vj ; n acest caz, matricea U
este defectiva, adica nu are n vectori proprii liniar independenti.
62 CAPITOLUL 1. ALGORITMI ELEMENTARI

Consideratiile 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 ma-


trice 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
P
1. uij + j1 k=i+1 uik vkj
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. Instructiunile 2.2.2.1, 2.2.2.2, 2.2.2.3 implementeaza cele trei cazuri
posibile n rezolvarea ecuatiei (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
operatii 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. In unele programe de calcul, cazurile de defectivitate sunt pur si simplu
ocolite; atunci cand uii = ujj , se ia fortat n 2.2.2.1 ujj uii = M si se lucreaza ca
si cum matricea U are avea valori proprii distincte. Se obtin astfel ntotdeauna n
vectori proprii distincti; n cazurile de defectivitate, vectorii proprii corespunzatori
aceleiasi valori proprii sunt aproape (cu o aproximatie de ordinul preciziei de calcul)
coliniari.
Cazul matricelor inferior triunghiulare se trateaza analog si e lasat ca exercitiu.

1.11 Rutinele BLAS


Am prezentat n sectiunile anterioare algoritmi simpli adecvati calculatoarelor cu
memorie ierarhica: 1.15 pentru nmultirea de matrice si 1.20 pentru rezolvarea
sistemelor triunghiulare cu parte dreapta multipla. Pentru majoritatea problemelor,
nsa, algoritmii sunt complicati si efortul gasirii unei idei de adaptare poate fi consi-
derabil; programatorul ar fi obligat sa cunoasca detalii arhitecturale si ale sistemului
de operare pentru calculatorul n cauza. In plus, programul realizat ar functiona
doar pe tipul respectiv de calculator, transferul pe un altul implicand rescrierea
partiala.
Pentru a usura sarcina programatorului si pentru a realiza portabilitatea, a
aparut ideea scrierii unor biblioteci de rutine fundamentale, putine 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: Conventii de nume n BLAS: tipuri de date si structuri de matrice

implementate foarte eficient pe majoritatea calculatoarelor (de catre programatori


profesionisti). Atunci, un program obisnuit va folosi cat mai mult aceste rutine, si
cat mai putin alt gen de operatii; eficienta este asigurata, datorita adecvarii rutinelor
de baza la arhitectura, iar efortul de programare este redus, datorita numarului
redus al rutinelor.
Astfel s-au nascut (ncepand din 1973, pana n 1989) bibliotecile BLAS (Basic
Linear Algebra Subroutines rutine de baza n algebra liniara), care s-au impus ca
un standard unanim acceptat si sunt implementate pe marea majoritate a calcula-
toarelor de performanta. Exista trei nivele BLAS, n fapt trei biblioteci distincte
al caror continut trateaza operatii asemanatoare din punct de vedere al datelor
implicate:

nivel 1: dedicat operatiilor vectoriale, de genul Saxpy sau DOT, care necesita
O(n) flopi. BLAS-1 este adecvat calculatoarelor vectoriale.

nivel 2: dedicat operatiilor matrice-vector, de tipul Gaxpy sau rezolvare de


sisteme triunghiulare, care necesita O(n2 ) flops. Si BLAS-2 are aplicabilitate
n special pe calculatoare vectoriale.

nivel 3: operatii matrice-matrice, ca nmultirea 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.

Prezentam n continuare cateva din rutinele BLAS, insistand asupra nivelului 3,


deoarece calculatoarele cu memorie ierarhica sunt tot mai raspandite.
Conventii de nume. Scrise initial n FORTRAN, numele rutinelor sunt foarte
scurte (cel mult sase caractere) si de aceea greu de nteles fara explicatii asupra
conventiilor utilizate pentru stabilirea lor. In tabelul 1.1, prima litera a numelui
unei rutine indica tipul datelor, iar urmatoarele doua (numai pentru nivelele 2 si
3), structura matricelor argumente ale functiei.
In fine, ultimele trei (uneori doua) litere tot pentru nivelele 2 si 3 codifica
operatia executata, dupa cum se va vedea imediat.
BLAS 1. Prezentam n tabelul 1.2 cele mai importante rutine ale nivelului 1 al
BLAS, fara a preciza argumentele lor, ci numai operatia realizata; ca si pana 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 Operatie Prefixe


xSWAP xy S, D, C, Z
xSCAL x x S, D, C, Z
xCOPY xy 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 xH y C, Z
xNRM2 nrm2 kxk2 S, D, C, Z

Tabelul 1.2: Rutine din BLAS 1

Deoarece argumentele functiilor sunt asemanatoare, exemplificam cu un apel


tipic:
SAXPY(N, ALFA, X, INCX, Y, INCY)
INCX reprezinta distanta, n memorie, ntre doua elemente succesive ale vectoru-
lui al carui prim element se gaseste la adresa X. Argumentul INCX permite utilizarea
ca vectori, n SAXPY, atat a coloanelor cat si 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 octeti 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 contine rutine pentru trei operatii: produsul
matrice-vector, rezolvarea sistemelor triunghiulare si produsul exterior, n diverse
variante pe care le enumeram n continuare.
Rutinele care executa nmultire matrice-vector de forma y Ax + y au
numele de tipul xyyMV, n care primele trei litere sunt cele din tabelul 1.1 (toate
combinatiile permise).
Rezolvarea sistemelor (inferior sau superior) triunghiulare este efectuata de ru-
tinele xyySV, unde yy este TR, TB sau TP.
Pentru produsul exterior, rutina de baza este xGER, care executa operatia
A xy T + 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 putine 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 aparenta
banala, nmultire de matrice.
Operatiile implementate de rutinele BLAS nivel 3 sunt esentialmente n numar
de doua: nmultirea de matrice, n cateva variante, si rezolvarea de sisteme triunghiu-
lare cu parte dreapta multipla. Numele rutinelor sunt deja intrate n uzul curent si
1.11. RUTINELE BLAS 65

 K -

6 6

M
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 decat pentru prima rutina prezentata.
In cele ce urmeaza, A, B, C snt matrice oarecare, cu dimensiuni oarecare,
dar adecvate operatiilor, sau simetrice si patrate, T este o matrice triunghiulara,
superior sau inferior, iar si snt scalari.
1. xGEMM (GEneral Matrix Multiplication) nmultirea matrice-matrice, n cazul
general. Modul complet de apel este:
xGEMM(TRANSA, TRANSB, M, N, K, ALFA, A, LDA, B, LDB, BETA, C, LDC)
Operatiile efectuate de rutina snt prezentate n tabelul urmator; C este ntot-
deuna de dimensiune m n.

TRANSA = N TRANSA = T
TRANSB = N C AB + C C AT B + C
A este m k, B este k n A este k m, B este k n
TRANSB = T C AB T + C C AT B T + C
A este m k, B este n k A este k m, B este n k

Argumentele rutinei devin acum mai clare: TRANSA si TRANSB arata daca ma-
tricele A, B se transpun sau nu; M, N, K sunt dimensiunile efective ale matricelor;
LDA, LDB, LDC contin dimensiunea principala a variabilelor n care sunt stocate
matricele, presupuse memorate pe coloane. Semnificatia acestor variabile dimen-
sionale este mai clara n figura 1.12. Elementele de pe aceeasi linie se afla la distanta
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 nmultire a doua matrice, operatia 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 ntampla
asa); la fel, nmultirea matrice-scalar. Cum toate celelalte rutine BLAS nivel 3 au
argumente de apelare asemanatoare, vom prezenta n continuare doar operatia de
baza implementata.
2. xSYMM (SYmetric Matrix Multiplication) nmultire 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 avand rang k.


4. xSYR2K actualizare de rang 2k a unei matrice simetrice:

C AB T + BAT + C. (1.67)

5. xTRMM (TRiangular Matrix Multiplication) nmultire matrice-matrice, cu


una dintre matrice triunghiulara:

B T B. (1.68)

Evident, exista si 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) cal-
culeaza solutia unui sistem liniar triunghiular, cu parte dreapta multipla (T X = B):

X T 1 B. (1.69)

Si pentru aceasta rutina exista versiuni n care necunoscuta este n stanga (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 putin 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 si algoritmi scrisi astfel ncat marea ma-
joritate a operatiilor sa apara n executia unor rutine BLAS de nivel 3. Pentru a
cuantifica eficienta lor, introducem ponderea operatiilor de nivel 3 prin raportul

N3 (n)
P3 (n) = . (1.70)
Ntotal (n)

Ntotal (n) reprezinta numarul total de flopi necesari executiei algoritmului, iar N3 (n)
numarul de flopi executati n rutinele din BLAS-3; ele depind (cel putin) de dimen-
siunea problemei n.
Pe un calculator cu memorie ierarhica, un algoritm este cu atat mai bun cu cat
P3 (n) este mai apropiata de 1; evident, P3 (n) 1. Motivul este clar: pe un astfel
de calculator, operatiile din rutinele BLAS-3 se executa mai rapid decat celelalte
deoarece memoria rapida este utilizata optim.
1.12. PROBLEME 67

1.12 Probleme
P 1.1 Demonstrati ca un subspatiu liniar n Rn este un spatiu vectorial.
P 1.2 Scrieti algoritmi pentru calculul normelor 1 si ale unui vector x Rn .
P 1.3 (Cauchy-Buniakowski-Schwarz) Demonstrati ca |xT y| kxk2 kyk2 , x, y Rn .
P 1.4 Gasiti vectori liniar independenti x, y Rn care sa satisfaca kx+ykp = kxkp +kykp ,
pentru p = 1, 2, .
P 1.5 Demonstrati (1.6) pentru n = 2, apoi n cazul general.
P 1.6 (Ortogonalizare Gram-Schmidt) Fie b1 , . . . , bp o baza a unui subspatiu S Rn .
Sa se gaseasca o baza ortogonala a1 , . . . , ap a lui S procedand prin inductie: a1 = b1 si
ak+1 = ki=1 ik ai + bk+1 . (Evident, baza devine ortonormala prin normalizare.)
P

P 1.7 Fie x Rm si y Rn doi vectori, si A = xy T Rmn produsul lor exterior.


Demonstrati ca rangA = 1.
P 1.8 Fie matricele A Rn1 n2 , B Rn2 n3 , C Rn3 n4 . Sugerati un algoritm de
calcul al produsului ABC.

P 1.9 Demonstrati ca maxi,j |aij | kAk2 mn maxi,j |aij |, A Rmn .
P 1.10 Demonstrati (1.29) si gasiti matrice pentru care inegalitatile (fie cele de majorare,
fie cele de minorare) devin egalitati.
P 1.11 Fie B o submatrice a matricei A. Aratati ca kBkp kAkp .
P 1.12 Demonstrati ca: 1. kAk2 = maxkxk2 =1,kyk2 =1 |y T Ax|; 2. kAT k2 = kAk2 ;
3. kAT Ak2 = kAk22 .
P 1.13 Demonstrati ca daca A Rnn este inversabila, atunci pentru orice norma ma-
triceala subordonata unei norme vectoriale avem 1 / kA1 k = minkxk=1 kAxk.
P 1.14 Fie L Rnn o matrice strict inferior triunghiulara. Demonstrati ca Ln = 0.
P 1.15 Fie A, B Rnn doua matrice banda, prima de latime p, a doua de latime q.
Demonstrati ca AB este o matrice banda de latime p + q si scrieti un algoritm pentru
calculul acestui produs.
P 1.16 Scrieti un algoritm pentru calculul produsului dintre o matrice inferior triunghiu-
lara si una superior triunghiulara.
P 1.17 Aratati ca algoritmul 1.14 de nmultire 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 Aratati ca submatricele lider principale ale unor matrice triunghiulare, Hessen-
berg, simetrice sunt triunghiulare, Hessenberg, respectiv simetrice. Este afirmatia valabila
pentru matrice ortogonale ?
P 1.19 Presupunem ca dispuneti de un algoritm general de rezolvare a sistemelor liniare.
Indicati un mod eficient de rezolvare a sistemului Ax = b atunci cand A, partitionata ca
n (1.31), este patrata si bloc superior triunghiulara.
P 1.20 Demonstrati ca numarul de operatii N (n) al algoritmului Strassen, respectand
recurenta (1.38), este
2n30 + 6n20 log 7
N (n) = n 6n20 .
nlog
0
7
68 CAPITOLUL 1. ALGORITMI ELEMENTARI


P 1.21 Daca A Rnn este simetrica pozitiv definita, demonstrati ca kxkA = xT Ax
este o norma vectoriala. (Indicatie: matricele simetrice sunt ortogonal diagonalizabile.)
P 1.22 Fie A Rnn , simetrica pozitiv definita. Demonstrati ca A este inversabila si ca
A1 este pozitiv definita.
P 1.23 a. Este clar ca o matrice triunghulara si simetrica este diagonala. Cum este o
matrice triunghiulara si antisimetrica ?
b. Demonstrati ca o matrice triunghiulara si ortogonala este diagonala.
c. Puteti extinde rezultatul n cazul matricelor triunghiulare si normale ?
P 1.24 Scrieti algoritmi eficienti pentru rezolvarea sistemului Ax = b, cu A Rnn si
b Rn , n cazurile:
a. A inferior bidiagonala, adica aij = 0 pentru i < j sau i > j + 1.
b. A inferior triunghiulara si banda de latime p (aij = 0 pentru i < j sau i > j + p).
c. A superior bidiagonala.
d. A superior triunghiulara si banda de latime p.
P 1.25 Adaptati algoritmii LINV si UINV pentru inversarea matricelor inferior, respec-
tiv superior bidiagonale.
P 1.26 Propuneti algoritmi de rezolvare a sistemelor inferior (superior) triunghiulare,
folosind operatiile vectoriale DOT sau Saxpy.
P 1.27 Prezentati un algoritm de rezolvare a sistemului inferior triunghiular Lx = b,
stiind 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 si x = u + iv Cn un vector propriu al sau, cu u, v Rn , v = 6 0.
Demonstrati ca:
a. u iv este vector propriu al matricei A.
b. Vectorii u si v sunt liniar independenti iar subspatiul generat de ei n Rn este
A-invariant.
Daca matricea A Q Rnn are spectrul (A)
P 1.29 P = {1 , . . . , n }, atunci
tr(A) = n
i=1 i , iar detA =
n
i=1 i . Puteti generaliza ?

P 1.30 Fie A Rnn , simetrica pozitiv definita. Demonstrati ca toate valorile proprii
ale matricei A sunt (reale si) pozitive.
Capitolul 2

Rezolvarea sistemelor de
ecuatii liniare

In acest capitol vom prezenta principalele metode de rezolvare a sistemelor deter-


minate de ecuatii liniare
Ax = b, (2.1)
unde A Rnn este o matrice inversabila, iar b Rn este un vector dat. Asa cum
am vazut n sectiunea 1.9, n virtutea conditiei de inversabilitate, sistemul (2.1) are
o solutie unica x Rn .
In practica numerica actuala se folosesc doua categorii principale de metode
numerice sigure pentru determinarea acestei solutii:

Metode directe, bazate pe reducerea sistemului (2.1), printr-o secventa finita


de transformari elementare, la unul sau doua sisteme triunghiulare, care se
rezolva utilizand procedurile de substitutie cunoscute din sectiunea 1.9 (al-
goritmii LTRIS si UTRIS). Din aceasta categorie fac parte metodele de
eliminare gaussiana si 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 sir de vectori care
converge catre solutia sistemului (2.1). Aceste metode sunt recomandate pen-
tru sisteme de dimensiuni foarte mari, sau/si atunci cand 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 sectiuni ale capitolului vom trata
aceste transformari ca subiect de sine statator. Algoritmii descrisi vor fi utilizati
n sectiunea 2.5 pentru rezolvarea efectiva a unui sistem (2.1), de forma generala.
Ca probleme conexe, n sectiunea 2.6 vor fi prezentati algoritmi de calcul al in-
versei si determinantului unei matrice. Urmatoarele doua sectiuni sunt dedicate
70 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUATII LINIARE

analizei conditionarii unui sistem liniar si respectiv stabilitatii numerice a algo-


ritmilor prezentati. De asemenea, sunt descrise unele metode de mbunatatire a
acuratetii solutiei numerice obtinute. In fine, ultimele sectiuni ale capitolului se
ocupa de cazuri particulare de sisteme liniare cu structura banda, bloc, simetrice
si pozitiv definite care apar frecvent n practica.

2.1 Transformari elementare


Transformarile matricei A necesare pentru rezolvarea sistemului (2.1) se pot descrie
concis si elegant n termeni de operatii matriceale, mai precis ca produs ntre A
si anumite matrice elementare. (In loc de produs sau nmultire, vom vorbi despre
aplicarea asupra lui A a matricei de transformare corespunzatoare.)

Definitia 2.1 O matrice inferior triunghiulara elementara (ITE) de ordin n si in-


dice k este o matrice de forma

Mk = In mk eTk , (2.2)

unde
mk = [0 0 . . . 0 k+1,k . . . nk ]T (2.3)
este un vector avand primele k componente nule, iar ek este vectorul unitate de
indice k.

Din motive ce vor fi evidente ulterior, Mk se mai numeste transformare ele-


mentara sau gaussiana, mk se numeste vector Gauss, iar scalarii ik se numesc
multiplicatori (gaussieni).
Structura unei matrice elementare inferior triunghiulare de ordinul n si indice k
este
1 0 ... 0 ... 0
0 1 ... 0 ... 0

..

. ...

Mk = 0 0 . . .
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 proprietati ale
unei astfel de matrice sunt rezumate n urmatoarea propozitie.

Propozitia 2.1 a) O matrice ITE este inversabila si

Mk1 = In + mk eTk . (2.4)


2.1. TRANSFORMARI ELEMENTARE 71

b) Fie x Rn un vector dat, iar Mk o matrice ITE precizata. Atunci vectorul


transformat y = Mk x are elementele

xi , pentru i = 1 : k,
(Mk x)i = (2.5)
xi ik xk , pentru i = k + 1 : n.
c) Fie x Rn . Daca xk 6= 0, atunci exista o matrice ITE Mk astfel ncat
vectorul transformat y = Mk x are ultimele n k componente nule, mai precis

xi , pentru i = 1 : k,
(Mk x)i = (2.6)
0, pentru i = k + 1 : n.
Daca xk = 0, atunci pentru orice Mk
Mk x = x. (2.7)

Demonstratie. a) Evident, det(Mk ) = 1, adica Mk este inversabila. Mai mult,


Mk (In + mk eTk ) = (In mk eTk )(In + mk eTk ) = In mk (eTk mk )eTk = In
deoarece, din (2.3), eTk mk = 0. Deci (2.4) este adevarata.
b) Utilizand (2.2), obtinem
Mk x = (In mk eTk )x = x mk eTk x = xi xk mk .
Scriind relatia de mai sus pe componente si tinand seama de (2.3), obtinem (2.5).
c) Tinand seama de (2.5) si alegand
ik = xi /xk , i = k + 1 : n, (2.8)
rezulta (Mk x)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 sectiunea urmatoare, proprietatile (2.6) si (2.7) sunt
cruciale n reducerea unei matrice la forma triunghiulara.
Similar se introduce notiunea de matrice superior triunghiulara elementara (STE)
sau transformare elementara retrograda, n care vectorul mk are ultimele k com-
ponente nule. Propunem cititorului formularea si demonstrarea analoagei propo-
zitiei 2.1.
Vom introduce acum notiunea de matrice de permutare, care permite descrierea
concisa a interschimbarilor de linii sau coloane n termeni de operatii matriceale.

Definitia 2.2 O matrice Pij Rnn obtinuta din matricea unitate In prin inter-
schimbarea a doua coloane (sau linii) i si j, adica o matrice de forma (aici i < j):

Ii1

0 1

Pij = [e1 e2 . . . ei1 ej ei+1 . . . ej1 ei ej+1 . . . en ] =
Iji1

1 0
Inj
72 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUATII LINIARE

n care toate elementele nefigurate sunt nule, se numeste (matrice de) permutare
elementara (PE).

Daca (i1 , i2 , . . . , in ) este o permutare a multimii 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 si, reciproc, orice matrice de
permutare se poate exprima ca produs de matrice PE.
Proprietatile matricelor elementare de permutare sunt expuse n urmatoarea
propozitie, a carei demonstratie e evidenta.

Propozitia 2.2 a) O PE este ortogonala si simetrica, deci Pij1 = Pij , iar


det Pij = 1.
b) Premultiplicarea unei matrice A cu PE Pij interschimba linia i cu linia j din
A, adica: T
ek A, pentru k 6= i, j,
eTk (Pij A) = eTj A, pentru k = i,
T
ei A, pentru k = j.
c) Postmultiplicarea unei matrice A cu PE Pij interschimba coloana i cu coloana
j din A, adica:
(
Aek , pentru k 6= i, j,
(APij )ek = Aej , pentru k = i,
Aei , pentru k = j.

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 stanga lui A a unei secvente Mk , k = 1 : n 1,
de matrice ITE, fiecare aleasa astfel ncat sa anuleze elementele subdiagonale n
coloana corespunzatoare ak a matricei A.
Pentru prezentarea metodei avem nevoie de doua rezultate cu caracter tehnic,
a caror demonstratie e lasata cititorului.

Propozitia 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
[k] [k]
(L1 L2 . . . Lp A)[k] = L1 L2 . . . L[k] [k]
p A .

Urmatoarea teorema stabileste conditiile n care este posibila reducerea unei


matrice la forma triunghiulara, utilizand transformari ITE.

1 Reamintim def
ca A[k] = 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 conditia


(i) submatricele lider principale A[k] , k = 1 : n 1, sunt nesingulare,
atunci exista o matrice inferior triunghiulara unitate M astfel ncat matricea

MA = U

este superior triunghiulara. Daca A este nesingulara, atunci U este nesingulara.

Demonstratia este constructiva, adica descrie o procedura pentru reducerea efectiva


a matricei A la forma superior triunghiulara U . Procedura consta n n 1 pasi.
[1]
Pasul 1. Fie A1 = A si a1 = Ae1 prima sa coloana. Prin ipoteza, A1 = A[1] =
= a11 6= 0. Din propozitia 2.1, exista o matrice ITE M1 astfel ncat

a11 , pentru i = 1,
(M1 a1 )i =
0, pentru i = 2 : n,

adica matricea A2 = M1 A1 are toate elementele subdiagonale ale primei coloane


egale cu zero: (2)
(2) (2)
a11 a12 ... a1n
(2) (2)
0 a22 ... a2n
(2) (2)
A2 = 0 a32 ... a3n .

... ... ... ...
(2) (2)
0 an2 ... ann
Pasul k. Presupunem ca matricea curenta

Ak = Mk1 . . . M2 M1 A

este superior triunghiulara n primele k 1 coloane, i.e. are toate elementele sub-
diagonale ale acestor coloane egale cu zero. Aplicand propozitia 2.3, obtinem
[k] [k] [k]
Ak = Mk1 . . . M1 A[k] ,
[k] [k]
unde matricele Mi sunt toate inferior triunghiulare unitate, deci det(Mi ) = 1,
[k]
i = 1 : k 1. Deoarece Ak este superior triunghiulara, n virtutea conditiei (i) din
enuntul teoremei avem
k
Y
[k] (k)
det(Ak ) = aii = det(A[k] ) 6= 0,
i=1

(k)
adica elementul akk , numit pivot, este nenul. Consideram partitionarea pe coloane
a matricei Ak :
(k) (k) (k)
Ak = [ a1 a2 . . . ak . . . a(k)
n ].

Putem utiliza acum propozitia 2.1 pentru a conchide ca exista o matrice ITE Mk
(k)
astfel ncat (Mk ak )i = 0, pentru i = k + 1 : n. Mai mult, premultiplicarea cu
Mk a matricei Ak nu altereaza primele k 1 coloane si n particular zerourile deja
74 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUATII LINIARE

(k)
introduse la pasii anteriori, deoarece akj = 0, pentru j = 1 : k 1 (vezi propozitia
2.1, punctul c). Prin urmare matricea

Ak+1 = Mk Ak (2.9)

este superior triunghiulara n primele k coloane.


Astfel, procedura de introducere a zerourilor subdiagonale, nceputa la pasul 1
si continuata pana la pasul n 1 (inclusiv), are ca rezultat matricea
def
U = An = Mn1 Mn2 . . . M1 A, (2.10)

evident superior triunghiulara. Mai mult, deoarece produsul matriceal conserva


structura inferior triunghiulara unitate (vezi propozitia 1.2), matricea

M = Mn1 Mn2 . . . M1

este inferior triunghiulara unitate iar, daca A este nesingulara, atunci si U rezulta
nesingulara, ca produs a doua matrice nesingulare.
Demonstratia de mai sus furnizeaza o procedura de triangularizare a unei ma-
trice, cunoscuta sub numele de eliminare gaussiana. Procedura este bazata pe
urmatoarea schema, n care calculele se desfasoara 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 ncat (Mk A)i = 0, pentru i = k + 1 : n
2. Se calculeaza A Mk A

La pasul 1.1, multiplicatorii gaussieni ik sunt calculati conform (2.8) prin


(k) (k)
ik = aik /akk , i = k + 1 : n, (2.11)

si pot fi memorati pe pozitiile elementelor anulate. Prin instructiunea 1.2 a schemei


de mai sus, toate rezultatele intermediare sunt depuse n spatiul de memorie ocupat
de matricea A; vezi si figura 2.1.
La pasul 1.2, transformarea A Mk A este echivalenta cu calculul aj Mk aj ,
pentru toate coloanele aj = Aej ale matricei A. Transformarea poate fi efectuata
eficient tinand cont ca primele k1 coloane ale matricei A nu sunt afectate. Coloana
k este modificata prin anularea elementelor subdiagonale. Pentru restul submatricei,
tinand seama de propozitia 2.1b, coloana transformata are elementele

aij (Mk aj )i = ((In mk eTk )aj )i = aij ik akj , i = k + 1 : n, (2.12)

unde j = k + 1 : n. Relatiile (2.11) si (2.12) mpreuna cu schema de calcul ElG


definesc algoritmul de eliminare gaussiana detaliat n continuare. Conditia de ter-
(k)
minare corecta a algoritmului este ca numerele akk , k = 1 : n 1, numite elemente
pivot, sa fie nenule, adica submatricele lider principale A[k] , k = 1 : n 1, ale
matricei initiale, sa fie nesingulare.
2.2. TRIANGULARIZARE PRIN ELIMINARE GAUSSIANA 75


u11 u12 . . . u1k u1,k+1 . . . u1n u11 u12 . . . u1k . . . u1n
21 u22 . . . u2k u2,k+1 . . . u2n 21
u22 . . . u2k . . . u2n

... ...
... ...
k1
k2 . . . ukk uk,k+1 . . . ukn k1 k2 . . . ukk . . . ukn
(k+1) (k+1)

k+1,1 k+1,2 . . . k+1,k ak+1,k+1 . . . ak+1,n

... ...


... ... ... ...
(k+1) (k+1) n1 n2 . . . nk . . . unn
n1 n2 . . . nk an,k+1 . . . ann

Dupa pasul k In final

Fig. 2.1: Continutul matricei A dupa pasul k al eliminarii gaussiene si la terminarea


executiei algoritmului

Algoritmul 2.1 (G Eliminare gaussiana) (Se da A Rnn , cu


submatricele lider principale A[k] , k = 1 : n 1, nesingulare. Se cal-
culeaza matricea superior triunghiulara U si matricele ITE M1 , . . . ,
Mn1 , astfel ncat U = Mn1 Mn2 . . . M1 A. Matricea U se memoreaza
n triunghiul superior al lui A, inclusiv diagonala, iar multiplicatorii
gaussieni ik care definesc transformarile Mk se memoreaza n triunghiul
inferior al matricei A, pe pozitiile 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 ik akj

O forma vectoriala a eliminarii gaussiene se poate deduce imediat din cea de


mai sus, prin nlocuirea buclelor 1.1 si 1.2.1 cu operatiile corespunzatoare: scalare,
respectiv Saxpy (aceasta din urma putand fi dedusa din (2.12), care se mai scrie
Mk aj = aj akj mk ). 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. In oricare dintre cele doua forme de mai sus, algoritmul necesita
n1
X n(n 1) n(n 1)(2n 1) 2n3
NG = (n k + 2(n k)2 ) = +2 ,
2 6 3
k=1
76 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUATII LINIARE

operatii n virgula mobila (flopi), iar memoria ocupata este de MG = n2 locatii


(elemente n virgula mobila).
Algoritmul G poate fi utilizat pentru rezolvarea sistemului liniar Ax = b atunci
cand A are toate submatricele lider principale nesingulare (inclusiv A[n] = A).
Intr-adevar, sistemul Ax = b are aceeasi solutie ca sistemul superior triunghiular

U x = Mn1 Mn2 . . . M1 b,

n care matricea U este furnizata de algoritmul G. Acest sistem triunghiular poate


fi rezolvat cu algoritmul UTRIS.
Semnificatia operatiilor din algoritmul G este imediata; introducerea de zero-
uri subdiagonale n coloana k nseamna eliminarea necunoscutei xk din ecuatiile
k + 1 : n; buclele 1.2 si 1.2.1 reprezinta scaderea din ecuatiile i = k + 1 : n a ecuatiei
k nmultite, pe rand, cu multiplicatorii ik , cu scopul de a elimina xk din fiecare
ecuatie i.
Totusi, nesingularitatea submatricelor lider principale ale matricei A nu este o
conditie necesara pentru existenta si unicitatea solutiei sistemului (2.2). De aceea,
algoritmul G trebuie modificat astfel ncat sa produca rezultatul dorit si atunci
cand 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
(k)
de eliminare gaussiana, pivotul akk este nul; deci, conform propozitiei 2.1c, nu exista
nici o matrice ITE Mk 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/si coloane), care aduce
n pozitia pivotului un element nenul. Un alt motiv pentru permutarea de linii si
coloane este asigurarea stabilitatii numerice a procesului de calcul. O explicatie
intuitiva este ca, atunci cand un proces matematic nu poate fi definit pentru o
anumita valoare critica a unui parametru (de exemplu A[k] singulara), exista
sanse mari ca procesul numeric corespunzator sa fie instabil atunci cand parametrul
efectiv este n vecinatatea valorii critice. In cazul nostru, trebuie evitati pivotii
mici (n modul), corespunzatori cazului n care submatricele lider principale sunt
aproape singulare; astfel se mbunatateste stabilitatea numerica a algoritmului.

2.3.1 Pivotare partiala


Vom modifica algoritmul G dupa cum urmeaza. La pasul k al procedurii de trian-
gularizare a matricei A Rnn (vezi demonstratia teoremei 2.1), se alege ca pivot
primul element maxim n modul din coloana k. Presupunand ca acest element
(k)
se gaseste n linia ik si este nenul, i.e. aik k 6= 0, interschimbarea liniilor k si ik ,
(k)
obtinuta matriceal prin nmultirea la stanga a lui Ak cu PE Pkik , va muta aik k n
pozitia (k, k), astfel ncat acest element devine noul pivot. Pentru a evita alterarea
structurii matricei obtinute pana 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


u11 . . . u1k . . . u1n u11 . . . u1k . . . u1n
0 ... 0 ...

...
...

(k) (k) (k) (k)
akk . . . akn aik k . . . aik n
Ak =
0 ...
Pkik Ak =
0 ...

(k) (k) (k) (k)
aik k . . . aik n akk . . . akn

0 ... 0 ...
(k) (k) (k) (k)
ank . . . ann ank . . . ann

(k)
Fig. 2.2: Pasul k al eliminarii gaussiene cu interschimbare de linii; akk este nul
(k)
sau prea aproape de zero; n Pkik Ak , noul pivot este aik k si are o valoare buna
(suficient de mare, n modul)

Pentru simplitate, vom nota matricea Pik k cu Pk . Pasul k al algoritmului G


devine
1. Se determina cel mai mic (primul) ik k astfel ncat |aik k | = maxi=k:n |aik |.
2. Se interschimba liniile ik si k, adica A Pk A.
3. Se determina matricea ITE Mk astfel ncat (Mk A)ik = 0, i = k + 1 : n.
4. Se aplica transformarea A Mk A.
Astfel la pasul k are loc transformarea

A Ak+1 = Mk Pk Ak , (2.13)

unde matricea Tk = Mk Pk se numeste transformare elementara stabilizata.


Procesul global, cunoscut sub numele de eliminare gaussiana cu pivotare partiala,
conduce n cele din urma la matricea superior triunghiulara
def
U = An = Mn1 Pn1 Mn2 Pn2 . . . M1 P1 A. (2.14)

Aceasta egalitate afirma ca orice matrice A este echivalenta la stanga cu o ma-


trice 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 partiala)


(Se da A Rnn , nesingulara. Se calculeaza matricea superior triun-
ghiulara U , matricele ITE M1 , . . . , Mn1 si PE P1 , . . . , Pn1 astfel
ncat (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. Intregii ik care definesc PE Pk , sunt memorati ntr-un vector p de
dimensiune n 1, cu elementele p(k) = ik , pentru k = 1 : n 1.)
78 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUATII LINIARE

1. Pentru k = 1 : n 1
1. Se determina cel mai mic ik k : n astfel ncat
|aik k | = maxi=k:n |aik |.
2. p(k) ik
3. Pentru j = k : n % interschimba liniile k si ik
1. akj aik j
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 ik akj

Comentarii. Operatiile suplimentare necesare n algoritmul GPP, fata de algorit-


mul G, apar numai n cautarea pivotului si constau n comparatiile necesare gasirii
maximului din instructiunea 1.1; numarul de comparatii este
n1
X
(n k + 1) n2 /2 2n3 /3,
k=1

deci pivotarea partiala nu este costisitoare (relativ la numarul de operatii aritme-


tice). 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.

Demonstratie. Algoritmul GPP nu se executa complet daca, la un pas k, ele-


mentul pivot aik k = 0. Intr-un astfel de caz, deoarece pivotul este maxim n modul
pe coloana (sub diagonala), toate elementele aik , i = k : n, sunt nule, deci matricea
[k]
Ak este singulara (vezi structura matricei Ak , cu Ak superior triunghiulara).
Matricele ITE si PE fiind nesingulare, singularitatea matricei

Ak = Mk1 Pk1 . . . M1 P1 A

implica A singulara; contradictie. Deci, toti pivotii aik k 6= 0 si algoritmul se exe-


cuta complet. Nesingularitatea matricei U rezulta din nesingularitatea tuturor ma-
tricelor din termenul drept din (2.14).

2.3.2 Pivotare completa


Proprietati numerice superioare se pot obtine daca, la pasul k al eliminarii gaussiene,
(k)
pivotul maxim n modul este cautat printre elementele aij , i = k : n, j = k : n,
adica n ntregul colt dreapta jos al matricei Ak . Primul element cu modul maxim
2.3. STRATEGII DE PIVOTARE 79


u11 . . . u1k . . . u1jk . . . u1n u11 . . . u1jk . . . u1k . . . u1n
. .
0 .. 0 ..

... ...
... ...

(k) (k) (k) (k) (k) (k)

akk . . . akjk . . . akn
aik jk . . . aik k . . . aik n
Ak =
0 ... Pki Ak Qkj
k k
=
0 ...

(k) (k) (k) (k) (k) (k)
aik k . . . aik jk . . . aik n akjk . . . akk . . . akn

0 ... 0 ...
(k) (k) (k) (k) (k) (k)
ank . . . anjk . . . ann anjk . . . ank . . . ann

Fig. 2.3: Pasul k al eliminarii gaussiene, cu interschimbari de linii si coloane

(e.g. n ordinea explorarii pe coloane), sa zicem aik jk , este mutat n pozitia pivot
(k, k), prin intermediul a doua interschimbari, una de linii, cealalta de coloane,
exprimate matriceal prin nmultirea lui Ak la stanga, respectiv la dreapta, cu PE
Pkik , respectiv Qkjk ; vezi figura 2.3.
Notand Pkik cu Pk si Qkjk cu Qk , pasul k al algoritmului G devine:
1. Se determina cei mai mici ik si jk astfel ncat |aik jk | = maxi=k:n,j=k:n |aij |.
2. Se interschimba liniile ik si k, adica A Pk A.
3. Se interschimba coloanele jk si k, adica A AQk .
4. Se determina matricea ITE Mk astfel ncat (Mk A)ik = 0, i = k + 1 : n.
5. Se aplica transformarea A Mk A.
Astfel, la pasul k are loc transformarea

A Ak+1 = Mk Pk Ak Qk , (2.15)

iar procesul global de calcul, cunoscut sub numele de eliminare gaussiena cu pivotare
completa, conduce la matricea superior triunghiulara
def
A U = Mn1 Pn1 . . . M1 P1 AQ1 . . . Qn1 . (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 triun-
ghiulara U , matricele ITE M1 , . . . , Mn1 si PE P1 , Q1 , . . . , Pn1 ,
Qn1 , astfel ncat (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 in-
ferior al matricei A. Intregii ik si jk , definind PE Pk , respectiv Qk , sunt
memorati n vectorii p, respectiv q, de dimensiune n 1, astfel ncat
p(k) = ik si q(k) = jk , pentru k = 1 : n 1.)
80 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUATII LINIARE

1. Pentru k = 1 : n 1
1. Se determina ik k : n si jk k : n astfel ncat
|aik jk | = maxi=k:n,j=k:n |aij |.
2. p(k) ik
3. q(k) jk
4. Pentru j = k : n % interschimba liniile k si ik
1. akj aik j
5. Pentru i = 1 : n % interschimba coloanele k si 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 ik akj

Comentarii. Operatiile suplimentare ce apar n algoritmul GPC, fata de algorit-


mul G, sunt doar cele necesare cautarii pivotului, ca si la pivotarea partiala; acum
nsa, numarul de comparatii este
n1
X n
X
(n k + 1)2 = k 2 n3 /3;
k=1 k=2

spre deosebire de pivotarea partiala, pivotarea completa introduce un numar de


comparatii de acelasi ordin de marime cu numarul operatiilor aritmetice; aceasta
poate conduce la cresterea semnificativa a timpului de executie, de aceea pivotarea
completa trebuie folosita doar atunci cand se doreste o mare siguranta n calculul
rezultatului. Vom prezenta ulterior argumentele care conduc la alegerea strategiei
de pivotare. Necesarul de memorie este si aici MGPC = n2 .
Teorema urmatoare corespunde teoremei 2.2, demonstratia 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.

Observatia 2.1 Algoritmii GPP si GPC pot fi modificati cu usurinta pentru a


putea triangulariza si matrice singulare.
In GPP, dupa pasul 1.1, trebuie adaugata urmatoarea conditie: daca aik k = 0,
adica aik = 0, i = k : n, atunci pentru acest k, instructiunile 1.2 1.5 nu trebuie
executate. In acest caz matricea U = An poate avea elemente diagonale nule
In GPC, daca aik jk = 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 toleranta de trunchiere astfel ncat |aik jk | <
sa fie considerat pivot nul, algoritmul GPC nu se foloseste pentru determinarea
rangului unei matrice; proceduri mai sigure sunt oferite de algoritmii de factorizare
QR cu pivotarea coloanelor si DVS, vezi capitolele 3 si 5.
2.4. FACTORIZARI LU 81

2.4 Factorizari LU
In multe situatii, este convenabil a exprima o matrice data ca produs a doua matrice
triunghiulare. Aceasta forma poate fi utilizata pentru a simplifica anumite calcule
implicand matricea respectiva.

Definitia 2.3 Fie A Rnn . Daca exista o matrice inferior triunghiulara


L Rnn si o matrice superior triunghiulara U Rnn astfel ncat

A = LU (2.17)

atunci se spune ca A admite o factorizare (sau descompunere) LU. L si U se numesc


factori triunghiulari ai matricei A.
In general, orice exprimare a matricei A ca produs de doua matrice triunghiulare
(cu eventuale permutari) se numeste factorizare triunghiulara.

Daca A Rnn este o matrice care are o factorizare LU, iar D este o matrice
diagonala nesingulara, atunci, D1 fiind de asemenea diagonala, (2.17) poate fi
scrisa n forma
A = LU = LDD1 U = L U , (2.18)
unde L = LD este inferior triunghiulara si U = D1 U este superior triunghiulara.
Daca D 6= I, atunci factorizarile (2.17) si (2.18) difera si deci factorizarea LU, daca
exista, nu este unica. De aceea este util a se introduce definitia urmatoare.

Definitia 2.4 Fie A Rnn . Daca exista matricele L Rnn inferior triunghiu-
lara unitate, U Rnn superior triunghiulara unitate si D Rnn diagonala astfel
ncat
A = LDU,
atunci expresia de mai sus este numita factorizare LDU a matricei A.

Aratam n continuare n ce conditii o factorizare LDU exista si este unica.

Teorema 2.4 O matrice A Rnn are o unica factorizare LDU daca si numai
daca submatricele lider principale A[k] , k = 1 : n 1, sunt nesingulare.

Demonstratie. Demonstram aici doar existenta factorizarii LDU, pentru unicitate


vezi problema 2.5.
In conditiile enuntate, din teorema 2.1, care constituie baza eliminarii gaussiene,
rezulta ca exista M inferior triunghiulara unitate (deci inversabila) astfel ncat
M A = U , cu U superior triunghiulara. Cu notatia L = M 1 , matrice inferior
triunghiulara unitate, avem A = LU . Notand acum

D = diag(u11 , u22 , . . . , unn ),


U = D1 U,

atunci A = LDU , cu L, D, U satisfacand conditiile descompunerii LDU.


82 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUATII 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 dia-
gonala D din cu una dintre matricele U , L ale factorizarii LDU. Astfel se obtin,
respectiv:
factorizarea Doolittle A = LU , cu L inferior triunghiulara unitate si U superior
triunghiulara,
factorizarea Crout A = LU , cu L inferior triunghiulara si U superior triun-
ghiulara unitate.
Din teorema 2.4 rezulta ca ambele factorizari, Doolittle si Crout, exista si sunt
unice daca si numai daca submatricele lider principale A[k] , k = 1 : n 1, sunt
nesingulare. Vom pastra n continuare aceasta ipoteza, specificand 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 gaus-
siana ! Este una din surprizele placute ale calculului numeric.
Teorema 2.5 Algoritmul G, aplicat matricei A Rnn , cu det A[k] 6= 0,
k = 1 : n 1, calculeaza factorizarea Doolittle A = LU , cu L inferior triunghiulara
unitate si U superior triunghiulara. Factorii L (mai putin elementele diagonale) si
U sunt memorati peste A.

Demonstratie. Algoritmul G produce matricele ITE Mk , k = 1 : n 1, astfel


ncat din (2.10) rezulta A = LU , cu L = (Mn1 . . . M2 M1 )1 si U memorata peste
A. Asadar
L = M11 M21 . . . Mn1
1
.
Dar (vezi propozitia 2.1), Mk1 = In + mk eTk , deci
n1
X
L = (In + m1 eT1 )(In + m2 eT2 ) . . . (In + mn1 eTn1 ) = In + mk eTk + S,
k=1

unde S este o suma de matrice de forma


T = . . . mp eTp mq eTq . . .
cu p < q. Deoarece eTp mq = 0, pentru orice p < q, obtinem T = 0 si S = 0. Astfel,

1 0 ... 0 0
21 1 . . . 0 0

n1 31 . . . 0 0
X 32
mk eTk =

L = In + . ,
... .. ...
k=1
n1,1 n1,2 . . . 1 0
n1 n2 . . . n,n1 1
2.4. FACTORIZARI LU 83

deci matricea L este formata chiar din multiplicatorii gaussieni memorati n A, n


algoritmul G.
Vom studia acum legatura ntre algoritmul GPP de eliminare gaussiana cu pi-
votare partiala si factorizarile LU.
Teorema 2.6 Triangularizarea (2.14) (Mn1 Pn1 . . . M1 P1 A = U ) a matricei
A Rnn , obtinuta prin algoritmul GPP, este echivalenta cu factorizarea Doolittle
a matricei A cu liniile permutate, adica
P A = LU, (2.19)
unde P = Pn1 . . . P1 . In partea subdiagonala, coloana k 1 : n 1 a matri-
cei L este o permutare a vectorului Gauss corespunzator mk ; mai precis, daca
hk = Pn1 . . . Pk+1 mk , atunci L(k + 1 : n, k) = hk (k + 1 : n).

Demonstratie. Se poate verifica usor echivalenta dintre (2.14) si


Mn1 . . . M1 P A = U, (2.20)
unde Mn1 = Mn1 si, pentru k < n 1,
Mk = Pn1 . . . Pk+1 Mk Pk+1 . . . Pn1 =
= I Pn1 . . . Pk+1 mk eTk Pk+1 . . . Pn1 =
= I Pn1 . . . Pk+1 mk eTk = I hk eTk .
In relatiile de mai sus am tinut seama ca Mk = I mk eTk si Ps1 = Ps ; n plus,
eTk Ps = eTk , pentru s > k, deoarece Ps este o PE de indici s si t s. Deci Mk este o
matrice ITE definita de vectorul Gauss hk . Deoarece (2.20) si (2.10) sunt analoage,
rezulta, ca n teorema 2.5, ca matricea L = M11 . . . Mn1
1
este inferior triunghiulara
unitate cu coloanele egale n partea subdiagonala cu vectorii hk , k 1 : n 1. Prin
urmare relatia (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 instructiunea 1.3 a GPP din Pentru j = k : n
n Pentru j = 1 : n, adica, ceea ce e echivalent cu afirmatia anterioara, fiecare
permutare Pk se aplica si tuturor vectorilor Gauss anteriori mj , cu j 1 : k 1.
Dupa executia algoritmului GPP astfel modificat, matricele triunghiulare L si U
din (2.19) se vor afla n A.
Cazul eliminarii gaussiane cu pivotare completa este acum clar si vom lasa de-
taliile ca exercitiu pentru cititor (problema 2.8). Modificand algoritmul GPC n
acelasi mod ca pe GPP, se va obtine pe loc n matricea A o factorizare LU a unei
matrice obtinute din A prin permutari de linii si coloane:
P AQ = LU, (2.21)
unde P , L si U au aceeasi semnificatie (dar nu aceleasi elemente) ca n teorema
2.6, iar Q = Q1 . . . Qn1 este construita din matricele de permutare elementara din
relatia (2.16).
84 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUATII LINIARE

elemente calculate
1 ?
0
akk . . . akj . . . = lkk 1 . . . ukj . . .
.. ..
. .
aik i lik 0
.. .. 1
.  .
k
elemente calculate

Fig. 2.4: Stadiu intermediar al factorizarii Crout.

2.4.2 Factorizari LU compacte


Factorizarea Crout poate fi calculata luand n relatia (2.18) expresia LU ca fiind fac-
torizarea Doolittle si D = diag(u11 , u12 , . . . , unn ). Atunci, L U este descompunerea
Crout a matricei A.
Totusi, exista si alte posibilitati 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 , calculand succesiv cate o coloana din
L si cate o linie din U . Procedura poate fi initializata considerand prima coloana a
identitatii A = LU , i.e.
Ae1 = LU e1 = Le1 ,
de unde
li1 = ai1 , i = 1 : n, (2.22)
respectiv prima linie a aceleiasi identitati,
eT1 A = eT1 LU = l11 eT1 U,
adica
a1j = l11 u1j , j = 2 : n.
Deoarece l11 = a11 = A[1] 6= 0, din relatia anterioara rezulta
u1j = a1j / l11 , j = 2 : n. (2.23)
Presupunem acum ca primele k 1 coloane din L si primele k 1 linii din U
sunt cunoscute (calculate); vezi figura 2.4. Din identitatea A = LU obtinem
k1
X
aik = lis usk + lik , i = k : n,
s=1

n care singura necunoscuta este scalarul lik . Deci,


k1
X
lik = aik lis usk , i = k : n. (2.24)
s=1
2.4. FACTORIZARI LU 85

De asemenea,
k1
X
akj = lks usj + lkk ukj , j = k + 1 : n,
s=1

n care acum singura necunoscuta este scalarul ukj . Din propozitia 2.3 rezulta
A[k] = L[k] U [k] , unde A[k] , deci si L[k] sunt nesingulare, adica lkk 6= 0. Asadar,
k1
!
X
ukj = akj lks usj / lkk , j = k + 1 : n. (2.25)
s=1

Astfel, procedura initiata prin (2.22) si (2.23) poate fi continuata prin (2.24) si
(2.25); daca submatricele A[k] , k = 1 : n 1, sunt nesingulare, ceea ce garanteaza
ca mpartirea din (2.25) poate fi executata, procedura va calcula complet factorii
L si U . Observand ca (2.22) si (2.23) sunt cazuri particulare ale (2.24), respectiv
(2.25), putem include primul pas n bucla generala, rezultand 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 si U
superior triunghiulara unitate. Matricele L si U sunt memorate peste
elementele corespunzatoare din A, mai putin elementele diagonale ale
lui U , egale cu 1.)
1. Pentru k = 1 : n
1. Pentru i = k : n
P
1. aik lik = aik k1
s=1 lis usk
2. Pentru j = k + 1 : n 
P
1. akj ukj = akj k1 l u
s=1 ks sj / lkk

Comentarii. Numarul de operatii n virgula mobila este NCROUT 2n3 /3 la fel


ca n algoritmii G, GPP sau GPC, iar memoria ocupata este MCROUT n2 .
Ca si algoritmul G de eliminare gaussiana, algoritmul CROUT esueaza pe
parcurs daca se obtine 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 instructiunea 1.2.1 precum si la erori numerice
inadmisibile n rezultat.
Pentru a preveni aceasta situatie se introduce pivotarea partiala (pe linii). Spre
deosebire de algoritmul G unde, la pasul k, permutarea liniilor se efectua naintea
celorlaltor operatii, aici permutarea poate avea loc doar dupa calcularea elementelor
lik , cu i k : n, pentru a putea aduce cea mai convenabila valoare n pozitia (k, k).
(Sa observam ca pivotarea completa este acum imposibila, deoarece ar implica an-
ticiparea calculelor pentru toata matricea.) Aceasta revine la nmultirea la stanga
a matricei A cu o PE Pkik , cu ik k, la fiecare pas k si, global, la o factorizare
P A = LU , cu P = Pn1 . . . P1 . Algoritmul corespunzator este urmatorul.

Algoritmul 2.6 (CROUTP Factorizare Crout cu pivotare par-


tiala) (Se da A Rnn nesingulara. Se calculeaza factorizarea Crout
86 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUATII LINIARE

P A = LU , cu L inferior triunghiulara, U superior triunghiulara uni-


tate si P = Pn1 . . . P1 matrice de permutare. Matricele L si U sunt
memorate peste elementele corespunzatoare din A, mai putin elementele
diagonale ale lui U , egale cu 1. Intregii ik definind PE Pk sunt memorati
ntr-un vector p astfel ncat p(k) = ik , k = 1 : n 1.)
1. Pentru k = 1 : n
1. Pentru i = k : n
Pk1
1. aik lik = aik s=1 lis usk
2. Se determina ik k : n astfel ncat |lik k | = maxi=k:n |lik |
3. Pentru j = 1 : n {interschimba liniile k si ik }
1. akj aik j
4. Pentru j = k + 1 : n 
Pk1
1. akj ukj = akj s=1 lks usj / lkk

Comentarii. Desigur, numarul comparatiilor efectuate n instructiunea 1.2 este


de ordinul O(n2 ), adica neglijabil fata de cel al operatiilor 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 cat mai mult operatii din setul BLAS nivel 3, anume
GEMM si TRSM. Abordarea problemei se face n mod natural prin partitionarea ma-
tricelor n blocuri. Vom prezenta ntai varianta fara pivotare, deci presupunem ca
submatricele A[k] sunt nesingulare, pentru k 1 : n 1.
Partitionam matricea A astfel
 
A11 A12 }r
A =
A21 A22 } nr , (2.26)
|{z} |{z}
r nr

alegerea lui r urmand a fi precizata ulterior.


In ideea calculului la nivel de bloc al factorizarii LU, sa ncepem prin a determina
L11 , L21 , U11 , U12 , astfel ncat sa fie satisfacuta egalitatea:
       
A11 A12 L11 0 Ir 0 U11 U12
= . (2.27)
A21 A22 L21 Inr 0 B 0 Inr

Din aceasta egalitate, privita pe rand pentru cele patru blocuri componente, se pot
deduce usor blocurile dorite din L si U :

1. A11 = L11 U11 , deci L11 si U11 provin din factorizarea LU la nivel de element
a matricei A11 .
1
2. A21 = L21 U11 L21 = A21 U11 . Deci, U11 fiind cunoscut de la pasul
anterior, L21 poate fi calculat prin rezolvarea unui sistem superior triunghiular
cu parte dreapta multipla.
2.4. FACTORIZARI LU 87

3. A12 = L11 U12 U12 = L1 11 A12 . Deci, U12 este solutia unui sistem inferior
triunghiular cu parte dreapta multipla.
4. A22 = L21 U12 + B B = A22 L21 U12 ; 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).
Procedand mai departe n mod similar cu matricea B, se poate calcula o facto-
rizare LU a acesteia, adica
B = L22 U22 . (2.28)
In acest caz, egalitatea (2.27) devine o factorizare LU a matricei A, cu
   
L11 0 U11 U12
L= ; U= . (2.29)
L21 L22 0 U22
Pe scurt, aplicand n mod repetat pasii 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 r r, factorizarea ntregii matrice A fiind terminata.
Algoritmul de factorizare LU va consta deci dintr-o bucla continand pasii 1-4. In
figura 2.5 sunt reprezentate blocurile de interes pe parcursul unei iteratii.

Algoritmul 2.7 (Gbl Eliminare gaussiana la nivel de bloc) (Se


dau A Rnn , cu A[k] , k = 1 : n 1, nesingulare, si r N astfel ncat
n = mr. Se calculeaza factorizarea Doolittle A = LU , prin operatii 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 instructiunea 1.3, factorizarea LU a blocului


A(s : f, s : f ), de dimensiune r r, trebuie explicitata cu operatii la nivel de
element; n rest, n instructiunile 1.4 si 1.6 se foloseste 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 instructiunea 1.3. In acest
caz, ponderea operatiilor de nivel 3 este
2n3 /3 2nr2 /3 r2
P 3LU (n, r) = 3
= 1 2. (2.30)
2n /3 n
88 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUATII LINIARE
deja factorizat
B
B s f n
B
BN
U
?
s
L   curent
6
f

HH
Y
H de factorizat
H
n
curent

Fig. 2.5: Structura blocurilor ntr-un pas al factorizarii Doolittle la nivel de bloc

Cum, n general, se alege r n (si deci, cu atat mai mult, r2 n2 ), ponderea


operatiilor de nivel 3 este apropiata de 1, deci putem estima o buna comportare
a algoritmului pe un calculator cu memorie ierarhica. Totusi, alegerea dimensiunii
blocurilor r se face n urma unui compromis: pe de o parte, din (2.30) e de dorit
ca r sa fie cat 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, tinandu-se seama ca n (2.27) apare
n plus o matrice de permutare P1 :
       
A11 A12 L11 0 Ir 0 U11 U12
P1 = . (2.31)
A21 A22 L21 Inr 0 B 0 Inr
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 stanga):
   
A11 L11
P1 = U11 . (2.32)
A21 L21
(Se aplica algoritmul GPP, chiar daca matricea n cauza este n r; cautarea
pivotului se face pe toata portiunea subdiagonala a unei coloane. Vezi pro-
blema 2.9.)
2. Se aplica permutarea restului matricei A (cele doua blocuri din dreapta),
obtinandu-se    
A12 A12
= P1 .
A22 A22
2.4. FACTORIZARI LU 89

3. Din A12 = L11 U12 se poate calcula U12 = L1


11 A12 , prin rezolvarea unui sistem
inferior triunghiular cu parte dreapta multipla (se apeleaza TRSM).
4. Mai ramane B = A22 L21 U12 , termenii din dreapta fiind toti deja calculati;
deci B se poate obtine n urma unui apel la GEMM.
Lasam cititorului detalierea ideii algoritmice de mai sus, ca si calculul ponderii
operatiilor de nivel 3; desi acum vor fi mai multe operatii la nivel de element fata de
cazul factorizarii fara pivotare, totusi numarul lor ramane 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.
Rationamentul este absolut identic cu cel la nivel de element. La nivel de bloc,
egalitatea A = LU se poate scrie

A11 A12 . . . A1m L11 0 . . . 0 U11 U12 . . . U1m
A21 A22 . . . A2m L21 L22 . . . 0 0 U22 . . . U2m

.. .. . . .. = .. .. . . .. .. .. . . .. ,
. . . . . . . . . . . .
Am1 Am2 . . . Amm Lm1 Lm2 . . . Lmm 0 0 . . . Umm
(2.33)
Pmin(i,j)
ceea ce, pentru blocul cu indici i, j, revine la Aij = t=1 Lit Utj .
Detaliind aceasta relatie, distingem urmatoarele cazuri:
k k1
!
X X
i = j = k Akk = Lkt Utk Lkk Ukk = Akk Lkt Utk . (2.34)
t=1 t=1

k k1
!
X X
1
i > j = k Aik = Lit Utk Lik = Aik Lit Utk Ukk ; (2.35)
t=1 t=1
k k1
!
X X
k = i < j Akj = Lkt Utj Ukj = L1
kk Akj Lkt Utj . (2.36)
t=1 t=1
Ordinea n care se aplica formulele de mai sus este aceeasi ca n algoritmul la
nivel de element: se calculeaza ntai prima bloc coloana din L si prima bloc linie din
U ; diferenta este ca acum trebuie calculate doua blocuri diagonale, L11 si 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 si a doua bloc linie din U etc.
Procesul de calcul va decurge conform urmatoarei scheme:
1. Pentru k = 1 : m
1. Se calculeaza Lkk si Ukk factorizand 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 ECUATII LINIARE

Pentru a detalia algoritmul si a-l scrie n mod cat mai eficient prin apeluri la
rutine BLAS-3, sa observam ca sumele din relatiile (2.342.36) se pot scrie compact;
exemplificam doar pentru una dintre sume, cea din (2.35), notand s = (k 1)r + 1,
f = kr, si = (i 1)r + 1, fi = ir:

k1
X
Lit Utk L(si : fi , 1 : s 1) U (1 : s 1, s : f ).
t=1

Mai mult, putem scrie compact toate relatiile 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
1
singura atribuire (profitand de faptul ca Ukk nu depinde de i), anume:

L(f +1 : n, s : f ) [A(f +1 : n, s : f ) L(f +1 : n, 1 : s1) U (1 : s1, s : f )]


U (s : f, s : f )1

In fine, combinand forma de mai sus cu termenul drept din (2.34), obtinem instruc-
tiunea 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 si r N astfel ncat n = mr. Se calculeaza factori-
zarea A = LU , utilizand operatii 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 : s1)U (1 : s1, 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, nmultirile matriceale din instructiunile 1.3 si 1.7 se vor


executa prin apeluri la GEMM, iar rezolvarile de sisteme triunghiulare din 1.5 si 1.8,
prin apeluri la TRSM. Ponderea operatiilor de nivel 3 este aceeasi ca pentru algoritmul
2.7, diferenta fiind ca aici se executa mai multe apeluri la GEMM, ceea ce ar putea
mari timpul de executie, dar probabil numai ntr-o masura nesemnificativa.
Algoritmul de mai sus poate calcula si o factorizare LU Doolittle daca n in-
structiunea 1.4 se utilizeaza algoritmul G n loc de CROUT.
2.5. REZOLVAREA SISTEMELOR LINIARE 91

2.5 Rezolvarea sistemelor liniare


Teoremele 2.2 si 2.3 arata ca algoritmii GPP si GPC constituie un bun instrument
pentru rezolvarea sistemului liniar nesingular Ax = b.
Sa consideram urmatoarea sintaxa neformala pentru utilizarea algoritmilor GPP
si 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 si q sunt vectori de
ntregi definind permutarile de linii si, respectiv, coloane. Desi matricele M si U se
memoreaza peste A (asa cum am si procedat n GPP si GPC), vom utiliza sintaxa
de mai sus pentru claritate.
Rezolvarea sistemelor utilizand GPP. Consideram sistemul liniar Ax = b,
cu A nesingulara si utilizam GPP pentru triangularizarea matricei A conform
relatiei (2.14). Doarece toate matricele Mk si Pk sunt nesingulare, sistemul Ax = b
este echivalent (are aceeasi solutie) cu sistemul

Mn1 Pn1 . . . M1 P1 Ax = Mn1 Pn1 . . . M1 P1 b. (2.37)

In consecinta, (2.37) se scrie n forma

U x = d,

unde matricea superior triunghiulara U se afla n A, iar vectorul

d = Mn1 Pn1 . . . M1 P1 b, (2.38)

se poate calcula pe loc n b, utilizand urmatoarea schema de calcul:

b 1. Pentru k = 1 : n 1
1. b Pk b
2. b Mk b

In definitiv, solutia x a sistemului Ax = b se obtine rezolvand (pe loc n b) sis-


temul superior triunghiular U x = b. Evident, n acest scop se utilizeaza algoritmul
UTRIS, cu sintaxa
x = UTRIS(U, b).

Pentru detalierea schemei facem apel la propozitiile 2.1 si 2.2. Se obtine algo-
ritmul de mai jos.

Algoritmul 2.9 (S GPP Calculul solutiei unui sistem liniar uti-


lizand GPP) (Se dau A Rnn nesingulara si b Rn . Se calculeaza
solutia x Rn a sistemului liniar Ax = b, utilizand procedura de elimi-
nare gaussiana cu pivotare partiala.)
92 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUATII 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 ik bk
3. x = UTRIS(U, b)

Comentarii. Numarul de operatii este:


n1
X 2n3 2n3
NS GPP = NGPP + 2(n k) + NUTRIS + n2 + n2 NGPP ,
3 3
k=1

si deci principalul efort consta n triangularizarea matricei A. Evident, memoria


necesara este MS GPP n2 .
Rezolvarea sistemelor utilizand GPC. Alternativ, dar mai costisitor, putem
utiliza GPC, vezi (2.16); n acest caz, sistemul Ax = b este echivalent cu

Mn1 Pn1 . . . M1 P1 AQ1 . . . Qn1 Qn1 . . . Q1 x = Mn1 Pn1 . . . M1 P1 b. (2.39)

Notand
Qn1 . . . Q1 x = y, (2.40)
din (2.16) rezulta ca vectorul y poate fi calculat prin rezolvarea sistemului superior
triunghiular
U y = d, (2.41)
unde d este vectorul dat de (2.38). In final, din (2.40), si stiind ca Q1
k = Qk ,
obtinem
x = Q1 Q2 . . . Qn1 y. (2.42)
Din relatiile (2.38)(2.42), rezulta algoritmul urmator.

Algoritmul 2.10 (S GPC Calculul solutiei unui sistem liniar


utilizand GPC) (Se dau A Rnn nesingulara si b Rn . Se cal-
culeaza solutia x Rn a sistemului liniar Ax = b, utilizand 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 ik bk
3. x = UTRIS(U, b)
4. Pentru k = n 1 : 1 : 1
1. xk xq(k)

Comentarii. Complexitatea acestui algoritm este asimptotic aceeasi cu cea a


algoritmului GPC.
2.6. CALCULUL INVERSEI SI AL DETERMINANTULUI 93

Observatia 2.2 Eliminarea gaussiana, prezentata aici ntr-un mod sistematic,


este binecunoscuta metoda de calcul manual prin reducere si substitutie. Pivotarea
pe linii corespunde unei reordonari a ecuatiilor 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 ecuatii liniare
nesingulare de forma generala. Stabilitatea numerica a acestor algoritmi va fi dis-
cutata ulterior.

Este clar ca sistemul Ax = b se poate rezolva si recurgand explicit la factorizarea


LU a matricei A. Presupunand, pentru simplitate, ca nu a fost utilizata pivotarea,
factorizarea este A = LU . Avem LU x = b, sau Ly = b, unde am notat U x = y.
Prin urmare, solutia 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 U x = y

Efortul de calcul este acelasi ca n eliminarea gaussiana si 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 aceeasi dimensiune; sistemul AX = B
poate fi redus la p sisteme cu parte dreapta simpla, Axj = bj , j = 1 : p, unde
vectorii bj si 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 aceeasi pentru toate cele p sisteme, factorizarea LU
sau, n general, triangularizarea matricei A, se efectueaza o singura data, ramanand
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 U xj = y

Numarul de operatii va de numai aproximativ 2n3 /3 + 2pn2 flopi, mentinandu-


se complexitatea O(n3 ). Desigur, n practica este recomandat a se folosi pivotarea,
efectuand o factorizare LU de forma P A = LU sau apeland algoritmul GPP.
Modificarea corespunzatoare a schemelor de calcul prezentate mai sus este propusa
cititorului (vezi problema 2.15).

2.6 Calculul inversei si al determinantului


unei matrice
Grupam n aceasta sectiune doua probleme care au n comun metoda de rezolvare
utilizata eliminarea gaussiana, precum si recomandarea de a calcula inversa sau
determinantul unei matrice doar atunci cand acestea se doresc explicit. Repetam
94 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUATII LINIARE

U U 1
A A
M M

Fig. 2.6: Memorarea datelor n inversarea matriceala

ca, de exemplu, inversa nu se calculeaza atunci cand 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 pi-
votare partiala se termina cu succes si produce o matrice superior triunghiulara
nesingulara U astfel ncat

Mn1 Pn1 . . . M1 P1 A = U, (2.43)

unde Mk sunt matrice ITE si Pk sunt matrice elementare de permutare. Din (2.43)
rezulta
X A1 = U 1 Mn1 Pn1 . . . M1 P1 ,
deci inversa matricei A poate fi calculata astfel

A1 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 si multiplicatorii gaussieni ik ,


k = 1 : n 1, i = k + 1 : n, notati global cu M n schema de mai sus, se memoreaza
peste matricea A ca n partea stanga a figurii 2.6. In algoritmul UINV, am vazut
ca U 1 se poate memora peste U , astfel ca, dupa instructiunea 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 instructiuni necesita memorie aditionala doar pentru vectorul p
Rn1 , n care se memoreaza permutarile de linii din GPP. Analizam acum bucla
Pentru din instructiunea 3. Prima atribuire, X XMk , poate fi detaliata utilizand
o partitionare pe linii a lui X:

xTi Mk = xTi (In mk eTk ) = xTi (xTi mk )eTk (2.44)


T
= [xi1 xi2 . . . xi,k1 xik xi 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 SI AL DETERMINANTULUI 95

(1)
u1k ... ...
U 1 .. ... U 1 . ...
. ..
(1)
ukk ... X XMk Pk ...
-
k+1,k
M ... M ...
.. ..
. .
nk ... ...
k k

Fig. 2.7: Memorarea datelor n pasul k al inversarii matriceale

A doua instructiune a buclei Pentru, X XPk , interschimba coloanele k si ik


(ik k).
Tinand cont de toate aceste consideratii si de ordinea inversa de calcul a coloa-
nelor, pasul k al buclei Pentru din schema de mai sus, adica X XMk Pk , poate fi
descris ca n figura 2.7, unde U 1 si M reprezinta elementele din U 1 si, respectiv,
multiplicatorii gaussieni care nu au fost utilizati (si nici modificati) n executia buclei
pana la pasul curent; elementele modificate (parte a lui X) sunt notate prin .
Astfel, singura informatie care trebuie salvata consta n multiplicatorii gaussieni
din coloana curenta, ik , i = k + 1 : n, necesari pentru calculul din (2.45).
In acest fel, inversarea matricei A poate fi executata utilizand doar doi vec-
tori suplimentari de lungime (n 1), anume p pentru memorarea permutarilor si,
sa zicem, g pentru salvarea temporara a multiplicatorilor gaussieni de pe coloana
curenta.
Algoritmul care implementeaza consideratiile de mai sus este:

Algoritmul 2.11 (INV GPP Calculul inversei unei matrice) (Se


da A Rnn nesingulara. Se calculeaza matricea A1 peste A. Algo-
ritmul utilizeaza algoritmii GPP pentru triangularizarea gaussiana si
UINV pentru inversarea unei matrice superior triunghiulare.)

1. [M, U, p] = GPP(A) % M si 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 P
n
1. aik aik t=k+1 ait gt % relatia (2.45), primele k linii
3. Pentru i = k P +1:n
n
1. aik t=k+1 ait gt % relatia (2.45), celelalte linii
4. Daca p(k) 6= k atunci
1. Pentru i = 1 : n % interschimba coloanele k si p(k)
1. aik ai,p(k)
96 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUATII LINIARE

Comentarii. Numarul de operatii n virgula mobila este


n1
X 2n3 n3
NINV GPP = NGPP + NUINV + 2n(n k) + + n3 = 2n3
3 3
k=1

si memoria utilizata MINV GPP = n2 .


Este remarcabil faptul ca inversarea matriceala nu este mai complexa (ca numar
de operatii) decat nmultirea de matrice.
O acuratete mai buna a matricei inverse calculate se poate obtine utilizand
algoritmul GPC n locul lui GPP. In acest caz,

Mn1 Pn1 . . . M1 P1 AQ1 Q2 . . . Qn1 = U,

si deci
X A1 = Q1 Q2 . . . Qn1 U 1 Mn1 Pn1 . . . M1 P1 .
Scrierea algoritmului corespunzator este lasata n sarcina cititorului.
In practica, acuratetea obtinuta cu INV GPP este suficient de buna pentru
majoritatea aplicatiilor.
Observatia 2.3 Efortul de calcul necesar inversarii unei matrice este de aproxi-
mativ trei ori mai mare decat cel pentru rezolvarea unui sistem liniar de aceeasi
dimensiune. De aceea, de cate ori e posibil, inversarea matriceala trebuie evitata
si nlocuita de rezolvarea de sisteme liniare. De exemplu, pentru calculul scalarului
real
= cT A1 b,
unde A Rnn , b, c Rn , schema recomandata este

cT A1 b 1. Se rezolva sistemul Ax = b % rezulta x = A1 b


2. cT x

sensibil mai eficienta decat varianta cu inversarea matricei A


Este clar ca inversa matricei A se poate calcula si recurgand explicit la factori-
zarea LU a matricei. Presupunand ca A = LU , avem

A1 = U 1 L1 ,

iar o procedura de inversare ar putea consta n:

1. A = LU (se calculeaza factorizarea LU)


2. U X = U 1
3. L Y = L1
3. A1 XY

Numarul de operatii este tot 2n3 . Desigur, n practica este indicat a se folosi o
factorizare LU cu pivotare.
2.7. CONDITIONAREA SISTEMELOR LINIARE 97

2.6.2 Calculul determinantului


Algoritmii GPP si GPC sunt utili si 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 elemen-
tara, atunci det(P ) = 1. In plus, matricele ITE Mk , k = 1 : n 1, din (2.43), au
elementele diagonale egale cu 1 si deci det(Mk ) = 1. Asadar
n
Y
det(A) = (1)s det(U ) = (1)s uii ,
i=1

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, utilizand 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 executia


algoritmului GPP. Desigur, algoritmul GPC poate fi utilizat n loc de GPP,
obtinandu-se, de regula, o acuratete superioara a rezultatului. Scrierea algoritmului
corespunzator este propusa cititorului.
Daca este disponibila
Qon factorizare
Qn LU a matricei A, atunci det(A) = det(LU ) =
= det(L) det(U ) = ( i=1 lii ) ( i=1 uii ), ceea ce permite evaluarea imediata a
determinantului.

2.7 Conditionarea sistemelor liniare


Dupa cum am vazut n capitolul 0, conditionarea unei probleme de calcul, n cazul
nostru rezolvarea sistemului liniar determinat nesingular Ax = b, este cruciala n
aprecierea acuratetii rezultatelor obtinute. Sa consideram o perturbatie a datelor
de intrare ale sistemului

(A, b) (A + A, b + b) (A, b),

care va avea ca efect o perturbatie a solutiei x

x x + x x, (2.45)

astfel ncat
(A + A)(x + x) = b + b. (2.46)
98 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUATII LINIARE

Consideram doar perturbatii mici, respectand kAk kAk, kbk kbk (unde
k k este o norma consistenta oarecare), i.e. efectuam o analiza a sensibilitatii locale
a solutiei n raport cu variatia datelor.

Teorema 2.7 Presupunem ca x 6= 0. Eroarea relativa a solutiei (2.45) a sistemului


perturbat (2.46) este marginita conform relatiei
 
kxk kAk kbk
(A) + , (2.47)
kxk kAk kbk
unde
(A) = kA1 k kAk (2.48)
se numeste numar de conditionare (la inversare) al matricei A.

Cu alte cuvinte, erorile relative kAk / kAk si kbk / kbk ale datelor de intrare
pot fi amplificate de (A) ori n solutie, presupunand ca toate calculele se efectueaza
exact (deci indiferent de algoritmul folosit).
Demonstratie. Deoarece Ax = b, din (2.46) rezulta

A x + A x + A x = b.

Neglijand produsul A x (deoarece perturbatiile sunt mici), obtinem

x A1 A x + A1 b.

Utilizand o familie consistenta de norme matriceale k k, din relatia de mai sus


rezulta
kxk kA1 k kAk kxk + kA1 k kbk.
Prin urmare, daca x 6= 0, o limita superioara a erorii relative este data de
kxk kAk kbk
kA1 k kAk + kA1 k kAk
kxk kAk kAk kxk
 
kAk kbk
kA1 k kAk + ,
kAk kbk

ceea ce demonstreaza (2.47). (Am tinut seama ca kbk = kAxk kAk kxk.)
Asadar numarul de conditionare (A) definit n (2.48) furnizeaza o masura a
conditionarii problemei rezolvarii unui sistem liniar Ax = b. Un (A) mic cores-
punde unei bune conditionari, adica unei sensibilitati reduse a solutiei n raport cu
perturbatiile datelor. Vom prezenta n sectiunea urmatoare un rezultat care permite
aprecierea mai precisa a conditionarii n functie de valoarea (A). Se observa ca
doar matricea A determina conditionarea unui sistem, termenul liber b neavand
nici un rol; de aceea vorbim de conditionarea matricei A n loc de conditionarea
sistemului. Vom atasa un indice notatiei (A) atunci cand vom preciza norma
folosita n (2.48); de exemplu, (A) = kA1 k kAk . Intre norme echivalente,
alegerea uneia anume pentru evaluarea lui (A) nu este relevanta, ordinul de marime
al rezultatului fiind acelasi; de obicei, dintre normele p se alege (A) pentru
2.7. CONDITIONAREA SISTEMELOR LINIARE 99

usurinta calculului (vezi mai jos). Sa notam ca p (A) 1 si 2 (A) = 1 daca si


numai daca A este ortogonala (demonstrati !).
Este intuitiv faptul ca un sistem este cu atat mai rau conditionat cu cat matricea
A este mai aproape de o matrice singulara. Trebuie subliniat ca masura acestei
apropieri este data de numarul de conditionare si nu de determinantul matricei A.
Exemplul 2.1 Sa consideram matricele D, T Rnn

0.1 1 1 . . . 1

0.1


1 . . . 1
D= .. , T = .. .. .
. . .
0.1 1
Fiind diagonala, este evident ca D este bine conditionata; se verifica imediat ca
(D) = 1, n schimb det(D) = 10n , adica, daca de exemplu n = 20, o va-
loare foarte mica. Pentru matricea triunghiulara T situatia este contrara: desi
det(A) = 1, matricea este rau conditionata pentru ca (T ) = n2n1 (U = T 1
este inferior triunghiulara unitate cu elementele uij = 2ji1 , pentru j > i, deci
kT 1 k = 1 + 2 + 22 + . . . + 2n2 = 2n1 1. Pe de alta parte, kT k = n).
Un mod uzual dar naiv de verificare a posteriori a calitatii solutiei calculate
x a unui sistem liniar Ax = b consta n a calcula norma reziduului r = b Ax, i.e.
krk = kb Axk
si de a conchide ca daca krk este mic, atunci x este o solutie precisa. De fapt,
aceasta concluzie, corecta pentru matricele bine conditionate, poate sa nu fie (si
de cele mai multe ori nu este) adevarata daca matricea A este rau conditionata.
Intr-adevar, solutia exacta este x = A1 b, astfel ca avem
x x = A1 b A1 (b r) = A1 r,
deci eroarea relativa este marginita conform relatiei
kx xk kA1 rk kA1 k krk krk krk
= (A) (A) ,
kxk kA1 bk kA1 rk kAk kA1 bk kbk
pentru orice norma consistenta k k. Astfel, testul r este mic e valid doar daca
matricea A este bine conditionata.
Exemplul 2.2 Matricele Hilbert Hn Rnn , definite prin hij = 1/(i + j 1) sunt
rau conditionate, (Hn ) crescand foarte repede cu n. De exemplu, (H3 ) 748.
Daca luam

8.27 11.646 . . . 0.0128
x = 4.60 , b = 6.475 . . . , d = 0.0714 , x = x + d,
3.23 4.552 . . . 0.0689
atunci x este solutia sistemului H3 x = b (n acest exemplu am ales x si am calculat
b). Pentru solutia aproximativa x avem
kb H3 xk kx xk
1.7 105 , 8.6 103 .
kbk kxk
100 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUATII LINIARE

Deci, desi reziduul kb H3 xk este relativ mic fata de b, eroarea relativa a solutiei
aproximative x este mult mai mare, de aproximativ 510 ori, i.e. cu un factor de
marime de ordinul lui (H3 ).

Estimarea numarului de conditionare


Un algoritm bun de calcul al solutiei sistemului Ax = b indica si cat de sigura este
solutia obtinuta, n conditiile perturbarii inerente a datelor de intrare. Numarul
de conditionare (A) (se alege norma doar pentru usurinta calculului) poate
furniza informatii sigure asupra acuratetii solutiei. In continuare, presupunem ca
rezolvarea sistemului se face prin intermediul unei factorizari cu pivotare P A = LU ,
de exemplu cu algoritmul GPP modificat dupa cum este sugerat n sectiunea 2.4.1,
dar concluziile pot fi extinse si n celelalte cazuri.
Calculul exact al (A), utilizand relatia de definitie, (2.48) este prea costisitor.
Daca kAk se obtine simplu n O(n2 ) flopi conform (1.28), a calcula kA1 k
implica o inversare matriceala care necesita de trei ori mai multe operatii decat
rezolvarea sistemului, adica inacceptabil de mult. Deoarece (A) indica numai o
limita superioara, si nu valoarea exacta a amplificarii erorii datelor de intrare, ne
punem problema estimarii numarului de conditionare cu doar O(n2 ) operatii.
Cline et al. [?] au propus o metoda eficienta prin care se obtin estimatii de buna
calitate ale normei kA1 k . Metoda se bazeaza pe implicatia

kA1 f k kyk
Ay = d kA1 k = sup .
f 6=0 kf k 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 substitutie 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) si
de a alege n expresia
i1
X
yi = (di aij yj )/aii
j=1

acea valoare di care produce cel mai mare |yi |. Schema de calcul poate fi rezumata
astfel:

kA1 k 1. Pentru i = 1 : n
Pi1
1. j=1 aij yj
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
Psus, majo-
i
rarea n modul nu numai a lui yi , ci si a tuturor sumelor partiale zki = j=1 akj yj ,
2.7. CONDITIONAREA SISTEMELOR LINIARE 101

cu k > i, contribuind astfel la majorarea tuturor yk , si deci a lui kyk . Putem


realiza aceasta alegand valoarea di = 1 care corespunde celei mai mari dintre
sumele
Xn
s+ = |yi+ | + +
|zki |,
k=i+1
Xn
s = |yi | +
|zki |,
k=i+1

unde elementele yi+ , yi corespund alegerii di = 1, respectiv di = 1, iar sumele


Pi1
partiale au valorile zki = j=1 akj yj + aki yi . Algoritmul rezultat pentru estimarea
numarului de conditionare (A) = kAk kA1 k 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 conditionare)
(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. yi+ (1 i )/aii
2. yi (1 i )/aii
3. Pentru k = i + 1 : n
1. k+ k + aki yi+
2. k k P
+ aki yi
n
4. s |yi | + Pk=i+1 |k+ |
+ +
n
5. s |yi | + k=i+1 |k |

6. Daca s+ s atunci
1. yi yi+
2. Pentru k = i + 1 : n
1. k k+
altfel
3. yi yi
4. Pentru k = i + 1 : n
1. k k
3. kyk kAk
Executia algoritmului necesita aproximativ 3n2 flopi.
Consideram acum cazul general al unei matrice A Rnn a carei factorizare
P A = LU este cunoscuta. Numarul de conditionare (A) se poate estima uti-
lizand urmatoarea schema de calcul, a carei justificare depaseste cadrul acestei
lucrari.
(A) 1. Se aplica algoritmul 2.13 pentru a obtine o solutie de
norma cat mai mare a sistemului U T y = d
2. Se rezolva sistemele triunghiulare LT r = y, Lv = P r,
Uw = v
3. kAk kwk / krk
102 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUATII LINIARE

Algoritmul necesita aproximativ 7n2 flopi si s-a dovedit excelent n practica,


valorile obtinute fiind de regula de cel mult 2-5 ori mai mici decat (A), ceea ce
constituie o aproximatie acceptabila, mai ales n situatiile critice cand (A) are
valori foarte mari.

2.8 Stabilitatea numerica a algoritmilor de


eliminare gaussiana
Vom prezenta n aceasta sectiune caracterizari ale stabilitatii numerice a algoritmilor
de eliminare gaussiana (G, GPP, GPC), precum si modalitati de mbunatatire a
rezultatelor numerice obtinute.
Un algoritm de rezolvare a sistemului liniar determinat Ax = b produce o solutie
calculata x afectata de erori numerice. Vectorul x este solutia aceluiasi sistem cu
datele perturbate, i.e.
(A + H)x = b. (2.49)
Vom evalua marimea matricei H pentru algoritmii mentionati, 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 demonstratie. In plus, aceste margini sunt mult mai mari
decat erorile numerice ntalnite n practica; ele au rolul de a preciza cazurile cand
erorile pot fi importante, nu de a cuantifica cu precizie aceste erori.
Nu trebuie uitat nici o clipa ca, chiar n prezenta unor valori ale kHk foarte
mici, acuratetea solutiei este asigurata doar daca matricea A este bine conditionata.
Altfel, kHk / kAk mic poate implica (kx xk) / kxk mare, indiferent de algoritmul
utilizat.
In contextul teoremei 2.1, notam cu Ak si Mk matricele Ak , respectiv Mk , calcu-
late efectiv de algoritmul de eliminare gaussiana G. Introducem n plus urmatoarele
notatii:
(k)
k = max |aij |, k 1 : n,
i,j

maxk=1:n k
= .
1
Numarul real este numit factor de crestere, deoarece arata cat de mult cresc
valorile elementelor matricei A n cursul transformarilor efectuate de algoritmul G.

Teorema 2.8 Matricele M1 , M2 , . . . , Mn1 , An = U calculate n algoritmul G


satisfac
M11 . . . Mn1
1
U = A + E, cu |eij | n 1 M , (2.50)
cu o constanta de ordinul unitatii, independenta de A.

Deoarece procedura de rezolvare a sistemelor triunghiulare prin substitutie 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 crestere . Pentru algoritmii GPP si GPC sunt valabile margini identice cu
(2.50), dar cu valori maxime diferite pentru .

In algoritmul G, factorul de crestere poate avea valori oricat de mari; asadar


acest algoritm este numeric instabil.
Introducerea pivotarii partiale conduce la 2n1 . Desi teoretic aceasta
margine este mare chiar pentru valori modeste ale lui n, totusi algoritmul
GPP produce rezultate precise n marea majoritate a cazurilor uzuale (unele
exceptii sunt prezentate n [?]); marginea este atinsa numai pentru anumite
matrice patologice, special construite n acest scop; un exemplu este prezen-
tat n problema 2.24. De aceea, GPP poate fi considerat practic stabil.
In cazul pivotarii complete avem [n 21 31/2 41/3 . . . n1/(n1) ]1/2 .
Aceasta margine creste lent cu n si practic se poate considera n, ceea ce
nseamna ca algoritmul GPC este neconditionat stabil.

Combinand constatarile de mai sus cu efortul de calcul cerut de algoritmii


studiati, putem conchide ca algoritmul GPP este cel mai recomandat pentru re-
zolvarea sistemelor liniare. In cazuri speciale, cand se doreste o siguranta deosebita
a rezultatului, se pot utiliza algoritmul GPC sau metodele prezentate n continuare.
Pentru ca marginea superioara (2.50) e relativ complicata, sa deducem un rezul-
tat euristic, si deci aproximativ, dar cu aplicatii practice clare si imediate. Daca n
rezolvarea sistemului Ax = b se foloseste o strategie de pivotare, atunci este sufi-
cient de mic; pe de alta parte, 1 kAk , dar de acelasi ordin de marime (n orice
caz, n1 kAk ). Atunci (2.50) este esential echivalenta cu afirmatia grosiera

kEk kHk kAk M . (2.51)

Combinand (2.51) cu (2.47) (n care A = H, b = 0, x = x x), se obtine


aproximatia
kx xk
(A) M , (2.52)
kxk
care conduce la urmatoarea regula de apreciere a acuratetii rezolvarii unui sistem:
Daca M 10t si (A) 10q , atunci solutia calculata are aproximativ t q
cifre zecimale corecte (restul de q fiind nesigure).
Altfel spus, un numar de conditionare de ordinul 10q antreneaza pierderea a q
cifre semnificative n solutie. Aceasta constatare subliniaza importanta cunoasterii
unei evaluari a lui (A) pentru aprecierea acuratetii solutiei calculate.

2.8.1 Scalarea sistemelor liniare


Fie D1 , D2 Rnn doua matrice diagonale nesingulare ale caror elemente sunt pu-
teri ale bazei de numeratie a formatului virgula mobila utilizat. Evident, sistemul
Ax = b este echivalent cu sistemul

D1 AD2 y = D1 b, unde x = D2 y. (2.53)


104 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUATII LINIARE

Transformarea A D1 AD2 , b D1 b, prin care sistemul Ax = b se aduce la forma


(2.53) se numeste 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
si strategia de alegere a factorilor de scala D1 , D2 .
Daca elementele din A sunt de marimi foarte diferite, atunci, marginea din (2.50)
fiind aceeasi 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 ncat sa minimizam
(D1 AD2 ). Acest obiectiv este dificil de realizat n general si imposibil cu restrictia
de cost impusa; de altfel, nu are sens a optimiza pornind de la o relatie aproximativa.
Tinand seama de cele spuse mai sus precum si de cerinta evidenta ca D1 si D2
sa fie calculate cu O(n2 ) operatii, s-au impus cateva modalitati de scalare:

scalare pe linii: D2 = I si D1 se alege astfel ncat liniile matricei D1 A sa aiba


aproximativ aceeasi norma .

echilibrare linii-coloane: D1 si D2 se aleg astfel ncat fiecare linie si coloana


din D1 AD2 sa aiba norma cuprinsa n intervalul [1/, 1] (vezi problema
2.26).

De obicei, solutia calculata a sistemului (2.53) astfel scalat este mai precisa decat
solutia calculata a sistemului initial, dar n general nu exista nici o garantie n acest
sens, de aceea scalarea nu trebuie privita ca panaceu universal ci aplicata n functie
de problema.

2.8.2 Rafinarea iterativa a solutiei calculate


O alta metoda de mbunatatire a acuratetii solutiei calculate x a sistemului Ax = b
este prezentata n continuare. Presupunem ca sistemul a fost rezolvat folosind un
algoritm cu pivotare partiala si deci ca o factorizare P A = 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, obtinand solutia e, si apoi


sa calculam o noua solutie
xnou = x + e, (2.55)
sperand ca aceasta este mai precisa decat x (daca nu ar exista erori numerice n
rezolvarea sistemului Ae = r, atunci e = e, deci xnou = x). Procedura poate fi
repetata pentru noua solutie, pana la atingerea unei acurateti multumitoare sau
pana cand nu se mai obtine o mbunatatire a acesteia. (Nu discutam aici modali-
tatea tehnica de estimare a acuratetii solutiei, care depaseste nivelul acestei lucrari.)
Aparent, asa cum rezulta din (2.52), sistemele Ax = b si Ae = r se rezolva
cu acurateti asemanatoare, n esenta dictate de (A), iar adunarea solutiilor 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 iteratii) la solutia aproximativa x satisfacand

kx xk
2n cond(A, x) M , (2.56)
kxk
unde
def k |A1 | |A| |x| k
cond(A, x) = , (2.57)
kxk
iar |A| este matricea cu elementele |aij |.
Comparand acum (2.52) si (2.56) constatam ca n general rafinarea iterativa
conduce ntr-adevar la mbunatatirea acuratetii solutiei calculate deoarece

cond(A, x) (A). (2.58)

(Pentru demonstrarea acestei inegalitati vezi problema 2.25.) Cresterea acuratetii


solutiei este cu atat mai mare cu cat raportul dintre cei doi termeni ai inegalitatii
(2.58) este mai mic.
Rafinarea iterativa da rezultate si mai bune daca se calculeaza reziduul r n
dubla precizie (utilizand un format virgula mobila cu mai multe cifre semnificative
decat cel utilizat la rezolvarea Ax = b). Mai precis, daca (A)M 1, atunci prin
rafinare se obtine 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 decat x.
Pentru a rezuma, o iteratie a schemei de rafinare are forma (beneficiind de
factorizarea P A = LU disponibila)

xnou 1. Se calculeaza r = b Ax (eventual n dubla precizie)


2. Se rezolva sistemele triunghiulare Ly = P r, U z = y
3. x x + z

Numarul de operatii este de O(n2 ), deci cateva iteratii au un cost semnificativ


mai mic decat cel al eliminarii gaussiene. Exista si dezavantaje: trebuie pastrata o
copie a matricei A pentru calculul reziduului, iar implementarea calculelor n dubla
precizie poate fi dependenta de masina (desi standardul IEEE este respectat pe ma-
joritatea 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


In aceasta sectiune vom considera sisteme Ax = b, n care A Rnn este o matrice
banda nesingulara, de latime inferioara r si superioara q. Astfel de matrice apar
deseori n practica, de exemplu la solutionarea numerica a ecuatiilor cu derivate
partiale. Vom vedea n continuare ca aplicarea adecvata a procedurii de eliminare
gaussiana poate aduce o mare reducere a numarului de operatii, fata de cazul ma-
tricelor oarecare.
106 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUATII LINIARE



0
k=1 k=2 k=3
0
0 . . .


0

Fig. 2.8: Eliminarea gaussiana aplicata unei matrice banda de latime inferioara 2
si 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 latime inferioara r si superioara q, nesingulara si cu A[k] nesin-
gulare, k = 1 : n 1, atunci n egalitatea (2.10) (Mn1 . . . M1 A = U ), matricea U
este superior triunghiulara banda de latime q, iar matricele ELT Mk = I mk eTk
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 latime 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 furnizati de
procedura.
Demonstratie. Figura 2.8 ilustreaza procesul de eliminare gaussiana. Deoarece
i1 = ai1 /a11 , rezulta i1 = 0 pentru i > 1 + r. In atribuirea A M1 A scrisa
detaliat
aij aij i1 a1j , pentru i, j = 2 : n,
se observa ca aij ramane nemodificat pentru i > 1+r (deoarece i1 = 0) si j > 1+q
(deoarece a1j = 0). Asadar, se modifica doar blocul A(2 : 1 + r, 1 : 1 + q) (n prima
coloana sunt introduse zerouri subdiagonale) si matricea A, inferior triunghiulara
n prima coloana, ramane banda de latime inferioara r si superioara q.
Procesul continua analog pentru k = 2, . . . , n 1, la fiecare pas k modificandu-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 pastrandu-si structura banda, ceea ce
asigura forma enuntata a matricelor ITE.
Algoritmul rezultat este prezentat n continuare.

Algoritmul 2.14 (Gb Eliminare gaussiana pentru matrice banda)


(Se da A Rnn , banda de latime inferioara r si superioara q, cu A[k]
nesingulare, k = 1 : n 1. Se calculeaza matricea superior triunghiulara
U si matricele ITE M1 , . . . , Mn1 astfel ncat U = Mn1 Mn2 . . . M1 A.)

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 ik akj

Lasam cititorului calculul unei formule pentru numarul de operatii; 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 U x = d, cu U banda
de latime superioara q. Adaptarea UTRIS la acest caz este imediata, elementele
xi calculandu-se prin substitutie napoi cu formula

min(i+q,n)
X
xi = di uij xj /uii .
j=i+1

Vom vedea acum ce efect are pivotarea asupra structurii banda.

Teorema 2.10 Daca eliminarea gaussiana cu pivotare partiala (algoritmul GPP)


este aplicata matricei A Rnn banda de latime inferioara r si superioara q, nesin-
gulara, atunci n egalitatea (2.14) (Mn1 Pn1 . . . M1 P1 A = U ), matricea U este
superior triunghiulara banda de latime q + r, iar matricele ITE Mk = I mk eTk
sunt caracterizate de ik = 0, pentru i > k + r.

Demonstratia va fi doar schitata, 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 si i1 (operatia A P1 A) 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. In atribuirea
A M1 A scrisa detaliat

aij aij i1 a1j , pentru i, j = 2 : n,

aij ramane nemodificat pentru i > 1 + r (deoarece i1 = 0) si j > 1 + q + r


(deoarece a1j = 0). Asadar se modifica doar blocul A(2 : 1 + r, 1 : 1 + q + r).
Matricea A ramane banda de latime inferioara r; n prima linie, A este banda de
latime superioara q + r, iar n liniile 1 + r : n banda de latime superioara q.
Procesul continua asemanator pentru k = 2, . . . , n 1; dupa A Pk A, n linia
k rezulta akj = 0 pentru j > k + q + r; operatia A Mk A modifica doar blocul
A(k + 1 : k + r, k : k + r + q). In final, U si matricele ITE Mk au structura prezentata
n enunt.
Observam ca pivotarea partiala conduce la o matrice U superior triunghiulara
banda de latime mai mare decat cea a matricei initiale A. Mai mult, n factorizarea
rezultata P A = LU , matricea inferior triunghiulara L nu mai este banda, ca n
lipsa pivotarii; tinand seama de teorema 2.6, deoarece o coloana a matricei L este
o permutare a vectorului mk (ce defineste matricea ITE Mk = I mk eTk ), coloana
respectiva are doar r elemente nediagonale nenule, dar n pozitii ce difera de la caz
la caz.
Prezentam mai jos algoritmul sugerat de demonstratia teoremei 2.10.
108 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUATII LINIARE



0

P1
M1 0


















P2 M2 0 P3

. . .
0


Fig. 2.9: Eliminarea gaussiana cu pivotare partiala aplicata unei matrice banda
de latime inferioara 2 si superioara 1. S-a presupus ca la pasul k se efectueaza
permutarea liniilor k (curenta) si k + 2 (cea mai departata posibil de cea curenta)

Algoritmul 2.15 (GPPb Eliminare gaussiana cu pivotare par-


tiala pentru matrice banda) (Se da A Rnn , banda de latime infe-
rioara r si superioara q, nesingulara. Se calculeaza matricea superior
triunghiulara U , matricele ITE M1 , . . . , Mn1 (memorate peste A)
si matricele PE P1 , . . . , Pn1 (memorate n vectorul p), astfel ncat
U = Mn1 Pn1 . . . M1 P1 A.)
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 ncat |aik k | = maxi=k:r1 |aik |
3. p(k) ik
4. Pentru j = k : q1
1. akj aik j
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 ik akj

Comentarii. Numarul de operatii este mai mare decat pentru algoritmul 2.14,
dar, daca r n sau q n, acesta este totusi 2n3 /3.
Lasam cititorului problema scrierii unui algoritm eficient de rezolvare a sistemu-
lui Ax = b, atunci cand A are structura banda, utilizand algoritmul 2.15.
In final, precizam ca pivotarea completa distruge structura banda si deci nu este
recomandata n acest caz.
2.10. SISTEME SIMETRICE 109

Factorizarea Crout aplicata unei matrice A Rnn banda de latime inferioara


r si superioara q are proprietati similare cu cele ale eliminarii gaussiane; cititorul
este invitat sa demonstreze afirmatiile urmatoare.
Algoritmul CROUT produce o matrice L inferior triunghiulara banda de latime
r si o matrice U superior triunghiulara (unitate) banda de latime q.
Algoritmul CROUTP (cu pivotare partiala) produce o matrice L inferior tri-
unghiulara si o matrice U superior triunghiulara (unitate) banda de latime q + r.
In plus, fiecare coloana a matricei L are cel mult r elemente nediagonale nenule.

2.10 Sisteme simetrice


Ne ocupam n aceasta sectiune de rezolvarea sistemului Ax = b, cu A inversabila
si simetrica, n general de semn nedefinit. Nucleul rezolvarii sistemului este fac-
torizarea matricei A, chiar daca eventual ea nu se face explicit. Presupunand ca
matricea A are factorizare LDU, deoarece A = AT si factorizarea este unica (n
conditiile teoremei 2.4), rezulta imediat ca U = LT . Se pune ntrebarea cum putem
profita de simetrie pentru a reduce numarul operatiilor de la 2n3 /3 (cazul general)
la, speram, jumatate, adica n3 /3.
Dificultatile problemei. Aplicarea ca atare a procedurii de eliminare gaus-
siana (algoritmul G) pare a avea inconvenientul major de a distruge simetria ma-
tricei A. Sa explicitam primul pas al eliminarii gaussiene; se calculeaza A M1 A,
unde M1 = I m1 eT1 este matricea ITE pentru care (M1 A)i1 = 0, i 2 : n. Ma-
tricea M1 A nu este simetrica: prima coloana are elementele subdiagonale nule, n
schimb prima linie are elemente n general nenule. Totusi submatricea (M1 A)2:n,2:n
este simetrica, ceea ce se observa si detaliind instructiunea 1.2.1.1 din algoritmul G
(cu k = 1), adica,
aij aij ai1 a1j /a11
care se aplica identic si elementului aji = aij

aji aji aj1 a1i /a11 = aij ai1 a1j /a11 .

Asadar nu este necesara modificarea tuturor elementelor matricei, ci doar a celor din
(sa zicem) triunghiul inferior; numarul de operatii se reduce astfel la aproximativ
jumatate.
Pentru a pastra simetria sunt necesare transformari de congruenta, adica se
aplica transformarile ITE de ambele parti ale matricei A. Primul pas al eliminarii
gaussiene (modificate) va fi acum A M1 AM1T = M1 A (M1 A)e1 mT1 ; deoarece
(M1 A)e1 = a11 e1 , se observa ca nmultirea la dreapta cu M1T , adica (M1 A)M1T ,
nu afecteaza decat prima linie a matricei M1 A (identica cu prima linie a matricei
A), anume introducand zerouri n toate pozitiile din dreapta diagonalei. Asadar,
din punctul de vedere al implementarii, nmultirea la dreapta cu M1T nu necesita
calcule.
Continuand analog pentru celelalte coloane, se obtine echivalentul relatiei (2.10)
n cazul simetric
def
D = Mn1 . . . M2 M1 AM1T M2T . . . Mn1
T
, (2.59)
110 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUATII LINIARE

unde D este evident o matrice diagonala.


Modificand algoritmul G astfel ncat sa se acceseze doar triunghiul inferior al
matricei A, se obtine factorizarea A = LDLT , cu L = M11 M21 . . . Mn11
inferior
triunghiulara unitate si 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 aik tj

Vectorul auxiliar t se foloseste pentru salvarea elementelor coloanei curente k,


egale cu cele de pe linia k n triunghiul superior, pe pozitiile carora se memoreaza
multiplicatorii.
Ca si n cazul general, chiar daca A este inversabila, se pot obtine pivoti
 nuli

[k] 0 1
daca det(A ) = 0 pentru un k 1 : n 1. Un exemplu evident este A = .
1 0
In plus, algoritmul este numeric instabil. De aceea se impune pivotarea.
Din pacate, strategiile de pivotare (partiala sau completa) propuse anterior pen-
tru eliminarea gaussiana distrug simetria. O prima idee ar fi de a aplica permutarile
elementare de ambele parti ale matricei A, asa cum am procedat si cu transformarile
ITE; de exemplu, la primul pas, sa se calculeze A P1 AP1T . O astfel de permutare
nu poate aduce pe pozitia pivotului decat unul dintre elementele diagonale; exem-
plul de mai sus dovedeste ca aceasta strategie poate da gres n situatii 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 si simetrica. Atunci exis-


ta o matrice inferior triunghiulara unitate L Rnn , o matrice cvasi-diagonala
D Rnn cu blocuri diagonale de dimensiune 1 1 sau 2 2, si o matrice de
permutare P Rnn astfel ncat

P AP T = LDLT . (2.60)

Desigur, matricea D este inversabila. Expresia de mai sus este numita factorizare
cvasi-diagonala a matricei A.

Demonstratia este constructiva. Vom descrie modul de calcul al factorizarii cvasi-


diagonale fara a preciza strategia de permutare mai mult decat este matematic
necesar demonstratiei. Desigur, ntr-un algoritm de calcul efectiv matricea de per-
mutare 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


 
E CT
P1 AP1T = , (2.61)
C B

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 ncat 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 si P1 permutand liniile 2 si j se obtine
det(E) = a21j 6= 0.
Pentru a determina primele s coloane ale factorilor L si D, se utilizeaza o relatie
asemanatoare cu (2.31):
   
Is 0 E 0 Is E 1 C T
P1 AP1T = (2.62)
CE 1 Ins 0 B CE 1 C T 0 Ins

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
calculand direct  
1 e22 e21
E 1 = (2.63)
det(E) e21 e11
si apoi nmultind C si E 1 ; evident, blocul B CE 1 C T se calculeaza acum banal,
printr-un produs si o adunare matriceale, dar numai n partea sa inferior triunghiu-
lara, deoarece este simetric.
Procedura continua identic pentru matricea B CE 1 C T de dimensiune
(n s) (n s), si asa mai departe pana la obtinerea factorizarii cvasi-diagonale
(2.60).
Algoritmul corespunzator este prezentat n continuare. Se vede usor ca proce-
dura se poate executa pe loc n A; totusi, la fel ca n schema LDLT , e necesara
alocarea unui spatiu 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 si inversabila. Se calculeaza matricea inferior tri-
unghiulara unitate L, matricea D Rnn cvasi-diagonala, cu blocuri de
dimensiune 1 1 sau 2 2, si matricea de permutare P Rnn astfel
ncat relatia (2.60) sa fie satisfacuta. Matricele L si 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 si s.
2. Se efectueaza permutarea (simetrica) A Pk APkT
3. Daca s = 1 atunci
1. Pentru i = k + 1 : n
1. ti1 aik
112 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUATII LINIARE

2. aik aik /akk


altfel
   
e11 1 ak+1,k+1
2. akk ak+1,k+1 a2
e21 e22 k+1,k ak+1,k akk
3. Pentru i = k + 2 : n
1. ti1 aik , ti2 ai,k+1
2. aik aik e11 + ai,k+1 e21
3. ai,k+1 ti1 e21 + ai,k+1 e22
4. Pentru j = k + s : n
1. Pentru i = j : n
1. Daca s = 1 atunci
1. aij aij aik tj1
altfel
2. aij aij aik tj1 ai,k+1 tj2
5. k k + s

Comentarii. Numarul de operatii 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, completand astfel algoritmul FCD cu detalierea instructiunii 1.1.
Ne vom limita la descrierea primei etape din procedura de factorizare. Prin exten-
sie de terminologie, numim pivot blocul E din (2.61) si pivotare permutarea din
instructiunea 1.2.
Pivotare completa. Spre deosebire de eliminarea gaussiana, la procedura de
factorizare cvasi-diagonala pivotarea completa se poate descrie mai usor decat cea
partiala. Matricea P1 si 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 ncat n (2.61) |e11 | = 1
altfel
2. s = 2, se alege P1 astfel ncat 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 (depasind un prag dictat de
constanta ). Altfel pivotul este
 
a11 ar1
E= , unde |ar1 | = 0 . (2.64)
ar1 arr

Notand A = B CE 1 C T , se poate demonstra ca (vezi problema 2.31):


( 
1 + 1 
0, daca s = 1,
|aij | 2 (2.65)
1 + 1 0 , daca s = 2.
2.10. SISTEME SIMETRICE 113

2  
Constanta se determina impunand conditia 1 + 1 = 1 + 1 2
, ceea ce
va conduce la factori de crestere (vezi sectiunea 2.8) asemanatori indiferent de di-
mensiunile pivotilor. Se obtine = (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/(n1) ]1/2 ; aceasta margine pentru factorul de crestere
este putin mai mare decat cea pentru eliminarea gaussiana cu pivotare completa
(algoritmul GPC).
Costul pivotarii complete este de O(n3 ) comparatii, la fel ca pentru algoritmul
GPC, ceea ce constituie un efort de calcul important. De aceea este interesanta
gasirea unei strategii de pivotare partiala.
Pivotare partiala. Se poate demonstra ca alegerea pivotului cautand pe o sin-
gura coloana (si eventual pe diagonala) nu poate avea succes. Surprinzator, cautand
pe doua coloane se poate descrie o strategie de pivotare partiala 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 | (si |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 ncat n (2.61) e11 = arr
altfel
3. s = 2, se alege P1 astfel ncat n (2.61) |e21 | =

Pentru a ntelege ideea pivotarii,


este util a considera matricea

a11 . . . ... ... ...
.. ..
. .

... arr . . . . . .

.. ..
. .

.
..

.. ..
. .
 
a11 ar1
si a observa ca pivotul este a11 sau arr cand s = 1, sau cand s = 2.
ar1 arr
Se poate demonstra ca relatia (2.65) ramane n continuare adevarata, deci se va
alege aceeasi valoare pentru . Factorul de crestere din (2.50) va fi acum limitat de
(1 + 1/)n1 (2.57)n1 , o margine ceva mai larga decat pentru algoritmul
GPP. In practica, algoritmul de factorizare cvasi-diagonala cu pivotare partiala
114 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUATII LINIARE

are o stabilitate numerica satisfacatoare. Cum numarul de comparatii este redus


acum la O(n2 ), pivotarea partiala 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 si a unuia cvasi-diagonal; lasam cititorului detaliile de
implementare.
De asemenea, (2.60) se poate utiliza pentru calculul inversei matricei A, tinand
seama ca
A1 = P T LT D1 L1 P.
Remarcam faptul ca si matricea A1 este simetrica.
Cazul complex. In cazul n care A Cnn este hermitica (A = AH ), factori-
zarea sa cvasi-diagonala are forma (analoaga cu (2.60))

P AP T = 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) si hermitica.
Algoritmul FCD si pastreaza forma generala; trebuie luat nsa n considerare
faptul ca n cazul complex transpunerea este nsotita si de conjugare. De exemplu,
(2.61) devine
 
T E CH
P1 AP1 = , (2.66)
C B
iar E este hermitica, adica, n cazul 2 2,
 
e11 e21
E= .
e21 e22

Instructiunile algoritmului FCD se modifica corespunzator, de exemplu 1.4.1.1.1


are forma aij aij aik ajk .

2.11 Sisteme simetrice pozitiv definite


Consideram acum sistemul Ax = b, unde matricea A Rnn este simetrica si
pozitiv definita. Ideea de baza a rezolvarii lui este data de teorema urmatoare.

Teorema 2.12 Pentru orice matrice simetrica si pozitiv definita A Rnn , exista
o unica matrice inferior triunghiulara L Rnn , cu elemente diagonale pozitive,
astfel ncat
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 = RT R, unde R = LT este superior


triunghiulara. De asemenea, factorizarile A = LT L, respectiv A = RRT , se numesc
tot Cholesky.
Demonstratie. Deoarece A este pozitiv definita atunci, conform propozitiei 1.3,
submatricele lider principale A[k] , k = 1 : n 1, sunt pozitiv definite, deci nesingu-
lare. Atunci A are o unica factorizare LDU (vezi teorema 2.4), A = L DU si, din
motive de simetrie, U = (L )T . Dar A si 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. Notand L = L F , prima parte a teoremei este demonstrata
(lii = dii , i = 1 : n).
Reciproca este evidenta; fie x Rn nenul, altfel arbitrar; atunci avem xT Ax =
x LLT x = kLT xk22 > 0 (deoarece L este nesingulara, LT x 6= 0).
T

Exista mai multi 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 fac-
torizarii Crout, n care elementele factorului Cholesky L sunt calculate n ordinea
(crescatoare a) coloanelor. Din identitatea A = LLT (doar triunghiul inferior stang
al lui A este reprezentat, deoarece A este simetrica)

a11 l11 l11 . . . lk1 . . . ln1
.. . . .. . . .. . ..
.
.

.
. 0
. .. .

ak1 . . . akk = lk1 . . . lkk lkk . . . lnk

. .. . . . .. . . .. .
.. . . .. . . 0 . ..
an1 . . . ank . . . ann ln1 . . . lnk . . . lnn lnn
obtinem pentru prima coloana:
2
a11 = l11 l11 = a11 ,
(2.68)
ai1 = li1 l11 li1 = ai1 / l11 , i = 2 : n,
si deci procesul de calcul poate fi initiat.
Acum, presupunand ca primele k1 coloane din L au fost calculate, identificarea
elementului din pozitia (k, k) n A = LLT furnizeaza
k1
X
2 2
akk = lkj + lkk , (2.69)
j=1

n care singura necunoscuta este lkk . Conform teoremei 2.12, daca A este pozitiv
definita, atunci exista un unic lkk pozitiv astfel ncat (2.69) sa aiba loc. Atunci,
k1
X
2
akk lkj >0 (2.70)
j=1

si v
u k1
u X
lkk = takk 2 .
lkj (2.71)
j=1
116 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUATII LINIARE

De asemenea,
k1
X
aik = lij lkj + lik lkk , i = k + 1 : n,
j=1

n care, n ordinea de calcul considerata, singura necunoscuta este lik . Asadar



k1
X
lik = aik lij lkj / lkk , i = k + 1 : n. (2.72)
j=1

Formulele (2.68), (2.71) si (2.72) definesc algoritmul de mai jos; pentru concizie,
am inclus si primul pas n bucla de parcurgere a coloanelor. Totodata, acest algoritm
este cel mai bun mijloc de testare a pozitivitatii unei matrice; testul se bazeaza pe
faptul ca factorizarea Cholesky a unei matrice poate fi calculata daca si numai
daca matricea este pozitiv definita (teorema 2.12); asadar, daca termenul stang al
inegalitatii (2.70) nu este pozitiv, atunci matricea A nu este pozitiv definita.

Algoritmul 2.17 (CHOL factorizare Cholesky) (Se da A Rnn


simetrica. Se stabileste daca A este pozitiv definita si, n acest caz,
se scrie peste triunghiul inferior al lui A matricea L din factorizarea
Cholesky A = LLT .)
1. Pentru k = 1 : n
P
1. akk k1 2
j=1 lkj
2. Daca 0 atunci
1. Tipareste A nu este pozitiv definita
2. Stop
3. akk lkk =
4. Pentru i = k + 1: n 
Pk1
1. aik lik = aik j=1 lij lkj / lkk

Comentarii. In mod evident, instructiunea 1.4.1 reprezinta o operatie DOT. O


alta ordonare a calculelor, care, n varianta vectoriala, conduce la operatii Saxpy,
este propusa n problema 2.33. Tot ca exercitiu 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, prezentati n sectiunea 2.4.
Algoritmul CHOL necesita aproximativ NCHOL = n3 /3 flopi si, 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 perturbatia E satisface limita (2.50) pentru = 1; deci,
stabilitatea este mai buna decat 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 SI MATLAB 117

efectuandu-se de doua ori mai putine operatii decat daca s-ar aplica algoritmul de
eliminare gaussiana.
In privinta conditionarii, problema rezolvarii sistemului pozitiv definit Ax = b
satisface inegalitatea (2.47).
Inversa (care este tot simetrica si pozitiv definita) si determinantul unei matrice
simetrice pozitiv definite se calculeaza adaptand ideile din sectiunea 2.6 la contextul
factorizarii Cholesky A = LLT .
Matrice banda. Daca A Rnn este o matrice simetrica, pozitiv definita
si banda de latime r, atunci factorul Cholesky este inferior triunghiular banda de
latime r. Aceasta se poate observa cu usurinta din relatia (2.72), n care un element
lik depinde de valorile lij aflate la stanga sa pe linia i (i.e. j < k); asadar, li1 = ai1 ,
deci n prima coloana se mosteneste 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 mosteneste si n coloana s. In concluzie, linia i are, n portiunea
subdiagonala, aceeasi structura n A si L.
Adaptarea algoritmului CHOL la cazul matricelor banda este un exercitiu re-
lativ simplu pe care l lasam cititorului (vezi problema 2.36).
Cazul complex. Daca matricea A Cnn este hermitica si pozitiv definita,
atunci factorizarea sa Cholesky este unica si are forma

A = LLH ,

unde L Cnn este inferior triunghiulara, cu elementele diagonale reale si pozi-


tive (si A are elementele diagonale reale, fiind hermitica, si pozitive, fiind pozitiv
definita). Factorul Cholesky se poate calcula cu algoritmul CHOL usor modificat,
deoarece (2.71) si (2.72) se transforma n
v
u k1
u X
lkk = takk lkj lkj , (2.73)
j=1

respectiv
k1
X
lik = aik lij lkj / lkk , i = k + 1 : n. (2.74)
j=1

2.12 Rutine LAPACK si MATLAB


Prezentam pe scurt n continuare rutinele din biblioteca LAPACK si instructiunile
sau functiile limbajului MATLAB care rezolva problemele tratate n acest capitol.
LAPACK (Linear Algebra PACKage) [XV] este o biblioteca de rutine scrise
initial n FORTRAN dar apelabile din mai multe limbaje de programare. Rutinele
implementeaza n special algoritmi la nivel de bloc (apeland rutinele BLAS de nivel
3) si de aceea ating maximul de performanta pe calculatoare cu memorie ierarhica.
Pentru fiecare problema au fost alesi algoritmii cei mai fiabili si rapizi dintre cei
cunoscuti, buna parte dintre acestia fiind adaptarea celor din bibliotecile LINPACK
118 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUATII LINIARE

[XIII] (dedicata n special rezolvarii sistemelor liniare) si EISPACK [XI,XII] (pentru


calculul valorilor proprii si probleme conexe), cele mai performante si folosite pa-
chete de programe de calcul numeric ale anilor 7080. De aceea se poate aprecia ca
LAPACK este cel mai modern si puternic instrument de calcul n algebra matriceala.
In plus, sursele LAPACK sunt disponibile gratuit (vezi http://www.netlib.org).
Numele rutinelor LAPACK respecta conventiile BLAS (vezi sectiunea 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 operatia executata.
Rutinele LAPACK sunt mpartite n trei categorii:

rutine driver, care rezolva o problema completa, de exemplu aflarea solutiei


unui sistem liniar;

rutine de calcul, care rezolva subprobleme sau completeaza rezolvarea unei


probleme, de exemplu calculul factorizarii LU sau rafinarea iterativa a solutiei
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 AT X = B. De exemplu, xGESV se utilizeaza pentru
matrice A oarecare (implementand eliminarea gaussiana la nivel de bloc), xPOSV se
utilizeaza cand matricea A este simetrica pozitiv definita (implementand 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 conditionare al matricei A;

rafineaza iterativ solutia.

In contextul rezolvarii de sisteme, rutinele de calcul cele mai importante sunt


urmatoarele:

1. xyyTRF calculeaza factorizarea P A = LU n cazul general (yy=GE), factori-


zarea Cholesky A = LLT pentru matrice simetrice (hermitice) pozitiv definite
(yy=PO), factorizarea cvasi-diagonala P AP T = LDLT pentru matrice sime-
trice (hermitice) (yy=SY, yy=HE). In toate cazurile de mai sus exista rutine si
pentru matrice banda.

2. xyyTRS utilizeaza rezultatul factorizarii (iesirea rutinei xyyTRF corespunzatoa-


re) pentru a calcula solutia unui sistem liniar.

3. xyyEQU scaleaza matricea A.

4. xyyRFS rafineaza iterativ solutia unui sistem liniar.


2.13. PROBLEME 119

5. xyyCON estimeaza inversul numarului de conditionare, adica 1/(A).


6. xyyTRI calculeaza inversa unei matrice, utilizand rezultatul factorizarii.

MATLAB (MATrix LABoratory) [XIV] are o interfata mai simpla, dar rutinele
sale implementeaza de asemenea algoritmi de mare performanta.
Rezolvarea sistemului liniar (eventual cu parte dreapta multipla) AX = B se
face apeland la operatorul de mpartire la stanga; daca A si B sunt variabilele
memorand matricea coeficientilor sistemului si, respectiv, termenul sau drept, atunci
solutia se calculeaza cu A\B. Sistemul (cu necunoscuta la stanga) XA = B se rezolva
utilizand operatorul de mpartire la dreapta, solutia fiind B/A. In ambele cazuri,
algoritmul implementat este eliminarea gaussiana cu pivotare partiala, indiferent
de tipul matricei.
Factorizarea P A = LU este calculata de functia lu, iar factorizarea Cholesky
de functia chol. Nu exista o functie dedicata factorizarii cvasi-diagonale.
Inversa unei matrice se calculeaza cu functia inv, iar determinantul cu det.
Reamintim ca n nici un caz solutia unui sistem AX = B nu se calculeaza cu
inv(A)*B.
Pentru calculul numarului de conditionare exista mai multe functii; cond cal-
culeaza exact 2 (A), ceea ce necesita mai multe operatii decat rezolvarea sistemului
liniar Ax = b (algoritmul va fi prezentat n capitolul 5); rcond estimeaza 1/ (A),
utilizand algoritmul din finalul sectiunii 2.7; n fine, condest estimeaza 1/1 (A) cu
un algoritm neprezentat n aceasta lucrare.

2.13 Probleme
P 2.1 Descrieti o varianta a eliminarii gaussiene n care se introduc zerouri n coloanele
lui A, deasupra diagonalei, n ordinea n : 1 : 2, si care produce factorizarea A = U L,
unde U este superior triunghiulara unitate si L este inferior triunghiulara.
P 2.2 Scrieti variantele vectoriale ale algoritmilor GPP si GPC, utilizand apeluri la
functii din biblioteca BLAS 1.
nn
PnA R
P 2.3 Fie o matrice strict diagonal dominanta pe coloane, i.e. cu proprietatea
|ajj | > i=1,i6=j |aij |. Demonstrati ca pivotarea partiala nu este necesara n procesul de
eliminare gaussiana si ca toti multiplicatorii gaussieni sunt subunitari (n modul).
P 2.4 Fie matricea de transformare elementara Gauss-Jordan Mk = In mk eTk , definita
de vectorul mk = [1k . . . k1,k 0 k+1,k . . . nk ]T .
a. Fie x Rn , cu xk 6= 0. Determinati mk astfel ncat Mk x = xk ek .
b. Fie A Rnn , avand submatricele lider principale A[k] nesingulare, k = 1 : n 1.
Scrieti un algoritm care, utilizand transformari Gauss-Jordan, diagonalizeaza matricea A,
i.e. genereaza M1 , M2 , . . . , Mn1 astfel ncat Mn1 . . . M2 M1 A = D, cu D diagonala.
Care este numarul de operatii ?
c. Introduceti pivotarea n algoritmul anterior.
P 2.5 Demonstrati unicitatea factorizarii LDU n conditiile teoremei 2.4.
P 2.6 Demonstrati ca daca A Rnn admite o factorizare LDU unica, atunci subma-
tricele lider principale A[k] , k = 1 : n 1, sunt nesingulare. (Indicatie: utilizati reducerea
la absurd.)
120 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUATII LINIARE

P 2.7 Demonstrati ca algoritmul GPP modificat conform descrierii din sectiunea 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 si pe coloane de forma P AQ = LU ? Demonstrati
ca |ukk | |ukj |, pentru j > k (n plus, |lik | 1, pentru i > k).

P 2.9 Adaptati algoritmul de eliminare gaussiana cu pivotare partiala astfel ncat sa


calculeze factorizarea (2.32).

P 2.10 Scrieti o varianta la nivel de bloc a algoritmului de factorizare Crout cu pivotare


CROUTP.

P 2.11 Cum trebuie modificati algoritmii 2.7 si 2.8 astfel ncat sa functioneze corect si
atunci cand dimensiunea n a matricei nu este multiplu al dimensiunii r a blocurilor ?

P 2.12 Prezentati o varianta a algoritmului de rezolvare a sistemelor liniare de forma


Ax = b prin eliminare gaussiana cu pivotare partiala, 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, adaptati algo-
ritmul de eliminare gaussiana pentru rezolvarea sistemului liniar Hx = b, unde b Rn ;
calculati numarul de operatii.
b. Adaptati algoritmul GPP pentru aceeasi problema.
c. Adaptati algoritmul Crout de factorizare LU.

P 2.14 Se considera doua matrice: H Rnn , superior Hessenberg nesingulara, si


R Rnn , superior triunghiulara unitate. Prezentati algoritmi eficienti pentru:
a. rezolvarea sistemului liniar HRx = b, cu b Rn .
b. Atunci cand toate submatricele lider principale ale lui H sunt nesingulare, factori-
zarea Crout A = HR poate fi obtinuta 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 = U R.
Care dintre ele este mai eficienta ?

P 2.15 a. Propuneti un algoritm pentru rezolvarea sistemului liniar Ax = b, unde


A Rnn este nesingulara si b Cn , utilizand numai aritmetica reala.
b. Prezentati un algoritm pentru rezolvarea ecuatiei matriceale AX = B, n care
A Rnn este nesingulara si B Rnm . (Indicatie: utilizati GPP.)
c. Idem, dar pentru ecuatia XA = B, cu A Rnn , B Rmn .

P 2.16 Se da matricea A Rnn nesingulara. Utilizand rezultatul algoritmului de elim-


inare gaussiana cu pivotare partiala (Mn1 Pn1 . . . M1 P1 A = U ) sau factorizarea LU
(P A = LU ), scrieti algoritmii pentru rezolvarea sistemelor AT y = c, AT Y = C, unde
c Rn , C Rnm .

P 2.17 Prezentati un algoritm eficient pentru rezolvarea sistemului liniar Ak x = b, unde


A Rnn este nesingulara, b Rn si k N, k > 1.

P 2.18 Daca A, B Rnn sunt matrice nesingulare, prezentati un algoritm eficient de


rezolvare a sistemului liniar (AB)k x = 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 x u
=
B A y v

Ce este preferabil: (a) rezolvarea sistemului Cz = w cu operatii complexe sau (b) rezolvarea
sistemului decomplexificat cu operatii reale ?

P 2.20 Se presupune ca A Rnn are o factorizare LU si ca L si U sunt cunoscuti.


Prezentati un algoritm care calculeaza elementul din pozitia (i, j) a matricei A1 , cu
aproximativ (n j)2 + (n i)2 flopi.

P 2.21 Detaliati algoritmii de calcul al inversei unei matrice A Rnn si al det(A),


utilizand eliminarea gaussiana cu pivotare completa.

P 2.22 Se dau A Rnn , B Rnr , C Rrn , D Rrr , matricele A si D fiind


inversabile. Fie A+ = A+BD1 C (actualizare de rang r a matricei A). Cazuri particulare:
1 A, D simetrice pozitiv definite, C = B T ; 2 r = 1, adica A+ = A + bcT / (actualizare
de rang 1).
a. Demonstrati ca are loc formula (Sherman-Morrison-Woodbury):

A1
+ = A
1
A1 BD+
1
CA1 , unde D+ = D + CA1 B.

b. Scrieti un algoritm de calcul al matricei A1 + , presupunand A


1
cunoscuta (actu-

alizarea inversei). Considerati cazurile
particulare
1 si 2 . Evaluati numarul de operatii.
A B
c. Se considera matricea H = . Demonstrati ca
C D

A1 A1 BD+1

H 1 = 1
+
1 .
D+ CA1 D+

P 2.23 Fie u, v Rn doi vectori nenuli si matricea A = In + uv T .


a. Prezentati un algoritm eficient pentru calculul determinantului matricei A. Cand
este A nesingulara ?
b. Daca A este nesingulara si b Rn , scrieti 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 crestere atinge valoarea maxima n algoritmul GPP.

1 0 ... 0 1
2 3
6 1 1 ... 0 1 7
.. .. .. ..
6 7
A=6
6 .. 7.
7
6 . . . . . 7
4 1 1 ... 1 1 5
1 1 ... 1 1

Demonstrati ca n algoritmul GPP nu se efectueaza nici o permutare si ca = 2n1 .

P 2.25 Fie A Rnn si x Rn . Demonstrati inegalitatea cond(A, x) (A) (relatia


(2.58)).
122 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUATII LINIARE

P 2.26 Se da A Rnn . Sa se gaseasca matricele diagonale D1 si D2 astfel ncat fiecare


linie si coloana din D1 AD2 sa aiba norma egala cu 1. (Impunandu-se restrictia ca
elementele matricelor D1 si D2 sa fie puteri ale bazei de numeratie , sa se construiasca
D1 si D2 astfel ncat liniile si coloanele lui D1 AD2 sa aiba norma cuprinsa n intervalul
[1/, 1].)

A 0
P 2.27 Fie B = , cu A, R Rnn , nesingulare, R superior triunghiulara. Se
R A
presupune ca factorizarea LU a lui A exista si este cunoscuta (A = LU ).
a. Scrieti un algoritm pentru calculul factorizarii LU a lui B, B = LU .
b. Propuneti un algoritm pentru rezolvarea sistemului liniar Bx = d, n care d R2n .
Calculati numarul de operatii pentru ambii algoritmi.
P 2.28 Fie A R2n2n o matrice nesingulara cu toate submatricele lider principale nesin-
A1 A2
gulare, de forma A = , cu A1 , A2 , A3 , A4 Rnn si A3 superior triunghiulara.
A3 A4
a. Scrieti un algoritm pentru rezolvarea sistemului liniar Ax = b, cu b R2n .
b. Aceeasi problema, dar presupunand 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. Adaptati algoritmul de eliminare gaussiana la acest tip de matrice.
b. Prezentati un algoritm care rezolva sistemul Ax = b, cu b Rn .
c. Daca matricea A este simetrica si pozitiv definita, adaptati algoritmul de factorizare
Cholesky pentru A.
P 2.30 Detaliati o procedura de calcul al matricei F = CE 1 din (2.62), pentru cazul
s = 2, utilizand eliminarea gaussiana cu pivotare partiala.
P 2.31 Demonstrati relatia (2.65) (care margineste cresterea elementelor matricei sime-
trice A n timpul executiei algoritmul FCD, de factorizare cvasi-diagonala cu pivotare
completa).
P 2.32 Detaliati permutarile efectuate n algoritmul de factorizare cvasi-diagonala cu pi-
votare completa (schema FCDPC1 ), operand numai n triunghiul inferior al matricei si-
metrice date.
P 2.33 Scrieti un algoritm de calcul al factorului Cholesky L al unei matrice A Rnn
pozitiv definite, n care elementele lui L sa fie calculate prin operatii Saxpy (si nu DOT,
ca n algoritmul CHOL). Indicatie: algoritmul este asemanator eliminarii gaussiene.
P 2.34 Scrieti 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, si T = AAT . Prezentati
un algoritm eficient pentru calculul factorizarii Cholesky a matricei T (demonstrati ntai
ca T este simetrica si pozitiv definita).
P 2.36 Adaptati algoritmul CHOL pentru factorizarea matricelor simetrice pozitiv de-
finite banda de latime r.
P 2.37 Daca matricea A Rnn este simetrica si pozitiv definita, propuneti un algo-
ritm pentru factorizarea Cholesky A = RRT , unde R este superior triunghiulara si are
elementele diagonale pozitive.
P 2.38 Fie A Rnn o matrice simetrica si pozitiv definita. Scrieti un algoritm de calcul
al factorizarii A = LDLT , cu L inferior triunghiulara unitate si D diagonala. (A = LDLT
mai este numita factorizare Cholesky fara radical.)
Capitolul 3

Problema celor mai mici


patrate

In acest capitol vom prezenta principalele metode numerice de rezolvare a sistemelor


de ecuatii liniare
Ax = b, (3.1)
n care matricea A Rmn si vectorul b Rm sunt date, iar m 6= n, adica
numarul ecuatiilor este diferit de cel al necunoscutelor. Intrucat, de regula, un
sistem supradeterminat (cu m > n) nu are solutii, iar un sistem subdeterminat (cu
m < n) nu are solutie unica, pentru a asigura buna formulare a problemei de calcul,
n prima situatie trebuie sa redefinim, iar n a doua trebuie sa precizam notiunea
de solutie a sistemului (3.1).
In cazul m > n, o reformulare naturala a problemei (3.1) consta n a cere deter-
minarea unei solutii aproximative a sistemului (3.1), adica a unui vector
x Rn astfel ncat reziduul corespunzator r = b Ax sa fie, ntr-un anumit
sens, cat mai mic. (Altfel spus, vectorul b trebuie sa fie aproximat cat mai bine
printr-o combinatie liniara a coloanelor lui A.) Intr-o exprimare mai precisa, aceasta
nseamna ca x trebuie sa minimizeze functia

(x) = (b Ax), (3.2)

unde () este o norma pe Rm , aleasa n mod adecvat.


In cazul m < n, un criteriu natural de selectie a unei singure solutii x Rn a
sistemului (3.1) impune ca aceasta sa fie, ntr-un anumit sens, cat mai economica,
de exemplu sa aiba o lungime, adica o norma, cat mai mica. Altfel spus, x trebuie
sa minimizeze functia
(x) = (x)|Ax=b , (3.3)
unde () este o norma pe Rn 1 .
1 Notatia din (3.3) spune ca este restrictia normei pe multimea X a solutiilor sistemului

(3.1). Desigur, pentru ca problema minimizarii functiei sa aiba sens, este necesar sa presupunem
ca sistemul liniar (3.1) are cel putin o solutie, i.e. b ImA.
124 CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE

Subliniem din start ca alegerea normelor din (3.2) si (3.3) depinde de natura
problemei considerate si, n acelasi timp, determina specificul metodelor de calcul
utilizate pentru rezolvarea ei. (De exemplu, n cazul normelor k k1 sau k k
se obtin probleme de programare liniara, care se rezolva prin metodele expuse n
capitolul 2, vezi [X]).
In acest capitol vom considera ca normele si coincid cu norma euclidiana
k k = k k2 , iar terminologia utilizata va fi urmatoarea.
1. In cazul m n problema de minimizare
kb Ax k = minn kb Axk (3.4)
xR

a normei euclidiene a reziduului r = b Ax se numeste problema (liniara) a


celor mai mici patrate (CMMP), iar solutia ei x este, prin definitie, pseudo-
solutia sistemului (3.1) n sensul CMMP. Vectorul b = Ax constituie cea
mai buna aproximare a lui b printr-o combinatie liniara a coloanelor matricei
A, i.e. pe ImA, iar reziduul de norma minima r = b Ax reprezinta eroarea
de aproximare optimala.
2. In cazul m n solutia problemei de minimizare cu restrictii liniare
kx k = min kxk (3.5)
Ax=b

este, prin definitie, solutia normala n sensul CMMP (i.e. solutia de norma
euclidiana minima) a sistemului (3.1).
Problemele de tip CMMP enuntate mai sus apar sub diverse forme (inclusiv cu
date complexe) n multe aplicatii care, de exemplu, vizeaza aproximarea functiilor,
prelucrarea statistica a datelor experimentale, modelarea si identificarea sistemelor
dinamice, prelucrarea semnalelor etc.
Exemplul 3.1 Consideram un proces descris printr-o dependenta functionala
y = f0 (u), cunoscuta doar partial din date experimentale constand ntr-o multime
de perechi intrare-iesire (ui , yi ), unde yi = f0 (ui ), i = 1 : m.
Se pune problema gasirii unei expresii analitice aproximative f pentru functia
f0 , sub forma unei combinatii liniare cu coeficientii c1 , c2 , . . . , cn a n functii date
g1 , g2 , . . . , gn , i.e.
Xn
f (u) = cj gj (u),
j=1

astfel ncat erorile de aproximare (sau reziduurile)


ri = yi f (ui ), i = 1 : m,
evaluate n punctele date (ui , yi ), sa fie cat mai mici.
In cazul tipic m > n, formularea n sens CMMP a problemei de aproximare
considerate mai sus consta n determinarea coeficientilor cj , j = 1 : n, astfel ncat
eroarea medie patratica
2
Xm X m Xn
2
krk = ri2 = yi cj gj (ui ) (3.6)
i=1 i=1 j=1
3.1. TRANSFORMARI ORTOGONALE 125

sa fie minima.
Introducand matricea A Rmn cu elementele aij = gj (ui ), i = 1 : m,
j = 1 : n, precum si vectorii b = [ y1 y2 . . . ym ]T Rm si x = [ c1 c2 . . . cn ]T Rn ,
problema minimizarii lui (3.6) se scrie evident sub forma sintetica (3.4).

Exemplul 3.2 In problemele de identificare si estimare a parametrilor, relatiile


din exemplul anterior apar scrise sub forma
n
X
yi = cj gj (ui ) + ri , i = 1 : m,
j=1

n care acum reziduurile ri reprezinta erori (sau zgomote) de masura si, n consecinta,
au o descriere statistica. Se poate arata ca, n anumite conditii standard, estimarile
optimale ale parametrilor x = [c1 . . . cn ]T sunt solutii ale problemei CMMP (3.6)
cu exact aceleasi date A, b ca mai sus. In general, probleme de modelare sistemica
extrem de complicate admit o dubla interpretare, ca probleme de aproximare sau de
estimare, si n consecinta se trateaza n spiritul principiului CMMP. Pentru detalii
si aplicatii specifice, cititorul poate consulta [?, ?].
Teoria problemelor CMMP este intim legata de geometria spatiului euclidian
Rm , n special de notiunea de ortogonalitate, care dupa cum vom vedea mai de-
parte da un sens (geometric) clar si extrem de intuitiv problemelor de minimizare
formulate mai sus. In 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 sectiuni ale acestui capitol, vom introduce transformarile
ortogonale utilizate n calcule si vom descrie procedurile corespunzatoare de trian-
gularizare ortogonala. Pe aceasta baza, n continuare vom prezenta procedurile de
rezolvare a problemelor CMMP de tip (3.4) si (3.5), insistand totodata asupra unor
aspecte practice importante privind conditionarea problemelor considerate precum
si stabilitatea numerica a algoritmilor de calcul propusi.

3.1 Transformari ortogonale


In aceasta sectiune vom defini cele doua tipuri de transformari ortogonale utilizate
n calculul numeric si vom descrie proprietatile lor importante.

3.1.1 Reflectori
Consideram spatiul Rm cu produsul scalar (x, y) = y T x si notam cu kxk = (xT x)1/2
norma euclidiana indusa. Amintim ca o matrice U Rmm se numeste ortogonala
daca U T U = Im .
2 Aicieste esential faptul ca norma euclidiana considerata n (3.4) si (3.5) este invarianta n
raport cu grupul transformarilor ortogonale. In legatura cu aceste notiuni, cititorul este invitat sa
consulte capitolul 1.
126 CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE

Definitia 3.1 Fie u Rm un vector normat, i.e. kuk = 1. O matrice U Rmm


de forma
U = Im 2uuT (3.7)
se numeste reflector elementar de ordinul m sau transformare Householder 3 .
Se constata imediat ca orice reflector elementar U este o matrice simetrica si
ortogonala. Intr-adevar, produsul exterior uuT este evident o matrice simetrica, iar
n virtutea conditiei de normare, kuk2 = uT u = 1, avem
 
U T U = U 2 = Im 2uuT Im 2uuT = Im 4uuT + 4u(uT u)uT = Im .
Asadar, un reflector elementar este o transformare involutiva, i.e. coincide cu pro-
pria sa inversa.
In cele ce urmeaza vom fixa un ntreg k 1 : m 1 si 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
uuT def 1
Uk = Im , = kuk2 (3.8)
2
unde
u = [ 0 . . . 0 uk . . . um ]T (3.9)
si vom spune ca Uk este un reflector de ordin m si indice k. Vectorul u se numeste
vector Householder, iar este factorul de normare corespunzator. (Uneori, n loc de
se utilizeaza scalarul = 1 . Vom reveni asupra acestei chestiuni n sectiunea
urmatoare.) Observam ca datorita zerourilor din (3.9) matricea Uk are structura
 
Ik1 0
Uk = , (3.10)
0 U1

n care U1 este evident un reflector de ordin m k + 1 si indice 1.


Reflectorii Uk cu structura precizata mai sus au doua proprietati importante 4 .
AA. Fiind dati un reflector Uk si un vector x Rm , aplicarea transformarii
Uk , i.e. calculul vectorului transformat y = Uk x, se face simplu, observand ca
uuT u(uT x)
Uk x = (Im )x = x = x u, (3.11)

unde, evident
uT x
= . (3.12)

Relatia (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 = Uk x se efectueaza avantajos pe loc n x, conform schemei
x y = Uk x. Considerand ca reflectorul Uk este definit de vectorul u Rm precum
si de scalarul , procedura de calcul este urmatoarea.
3 Transformarile de tip (3.7) au fost introduse n calculul numeric de A. Householder n 1958.

De regula, mai departe vom omite calificativul elementar.


4 La fel ca n capitolul 1, sigla AA indica expunerea unor aspecte algoritmice semnificative.
3.1. TRANSFORMARI ORTOGONALE 127

Uk x Y
H
H * x


H 
HH 
HH 
HH 
HH 
 H - -
u 0 u (uT x)u

Fig. 3.1: Efectul aplicarii unui reflector U asupra unui vector x, n R2

Algoritmul 3.1 (Se dau un reflector Uk si un vector x Rm . Se


aplica transformarea
P x Uk x).
1. = ( m i=k ui xi ) /.
2. xi xi ui , pentru i = k : m
Comentarii. In esenta, la pasul 1 se calculeaza un produs scalar (de exemplu,
utilizand functia DOT), iar la pasul 2 se face o actualizare de tip Saxpy a lui x
(functiile DOT si Saxpy au fost definite n capitolul 1). De fiecare data se opereaza
asupra unor vectori de dimensiune m k + 1. Prin urmare, numarul de operatii
necesar este aproximativ Nop = 4(m k).
Semnificatia geometrica a transformarii (3.11) rezulta din figura 3.1, unde pentru
claritate am considerat m = 2 si kuk = 1, deci = 2uT x (vezi (3.12)), iar (uT x)u
este proiectia ortogonala a lui x pe directia lui u. In general, transformarea Uk
reprezinta simetria (reflexia) n raport cu hiperplanul H (oglinda) care trece
prin origine si are vectorul normal u.
In practica, algoritmul 3.1 apare extrem de frecvent.
Aplicarea transformarii B = Uk A, unde A Rmn este o matrice cu n coloane,
iar Uk actioneaza la stanga, se face partitionand A pe coloane. Avem
A = [a1 a2 . . . an ] Uk A = [Uk a1 Uk a2 . . . Uk an ],
deci calculul se poate desfasura pe loc n tabloul A, utilizand algoritmul 3.1 pentru
actualizarea fiecarei coloane a matricei A.
% Se aplica transformarea A Uk A
1. Pentru j = 1 : n
1. aj Uk aj
Conform celor spuse mai sus, premultiplicarea cu Uk nu modifica primele k 1
linii ale matricei A. Mai precis, partitionand A conform cu Uk din (3.10), avem
   
B B
A= Uk A = .
C U1 C
128 CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE

Pe de alta parte, n forma compacta, similara cu (3.11), avem evident

uuT AT u
Uk A = (Im )A = A uv T , unde v= .

Altfel spus, matricea transformata B = Uk A este o modificare de rang 1 a lui A.
Aplicarea transformarii C = AUk , unde acum A Rlm are m coloane,
iar Uk actioneaza la dreapta, se face partitionand A pe linii si observand ca, n
T
virtutea simetriei lui Uk , avem AUk = (Uk AT ) . Prin urmare, asupra coloanelor
lui AT , adica a liniilor lui A, are loc aceeasi transformare ca mai sus. In particular,
postmultiplicarea cu Uk nu modifica primele k 1 coloane ale matricei A.
AA. In 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 ncat ultimele m k componente ale vectorului
transformat sa fie nule, i.e. (Uk x)i = 0, pentru i = k + 1 : m. Formularea precisa a
acestui fapt esential trebuie retinuta.

Propozitia 3.1 Fixam un ntreg k 1 : m 1 si fie x Rm un vector astfel ncat


m
X
2 def
= x2i 6= 0. (3.13)
i=k

Vectorul Householder u Rm avand componentele


(
0, pentru i = 1 : k 1
ui = xk + , pentru i = k (3.14)
xi , pentru i = k + 1 : m
precum si scalarul
1
def
= kuk2 = uk (3.15)
2
definesc un reflector Uk de ordin m si indice k astfel ncat
(
xi , pentru i = 1 : k 1
(Uk x)i = , pentru i = k (3.16)
0, pentru i = k + 1 : m.

Demonstratie. Intr-adevar, datorita alegerii (3.14), avem


m m
!
1X 2 1 2
X
= ui = (xk + ) + xi = 2 + xk = uk ,
2
2 2
i=k i=k+1

deci (3.15) are loc. Mai departe, din (3.12) rezulta


P
xk (xk + ) + m
Pm 2
i=1 ui xi i=k+1 xi 2 + xk
= = = = 1.

In virtutea acestui fapt, (3.16) rezulta imediat din (3.11) si (3.14).


3.1. TRANSFORMARI ORTOGONALE 129

Relatiile (3.13)(3.15) furnizeaza un algoritm aproape complet pentru calculul


reflectorului Uk cu proprietatea ceruta. Constanta este determinata, mai putin
semnul, de faptul ca Uk este o matrice ortogonala, deci kUk xk = kxk (vezi (3.13) si
(3.16)). Pentru a evita pierderea de cifre semnificative la calculul componentei
uk = xk + , semnul lui se alege acelasi cu cel al lui xk . (Mentionam ca
aceasta alegere este esentiala pentru stabilitatea numerica a algoritmului rezultat.)
Consideratiile de mai sus pot fi rezumate astfel.
Algoritmul 3.2 (Se dau un ntreg k 1 : m 1 si un vector
x Rm cu proprietatea (3.13). Se determina un reflector Uk astfel
ncat (Uk x)i = 0, pentru i = k+ 1 : m.)
Pm 2 1/2
1. = sgn(xk ) i=k xi
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 si al scalarului . Ultimele componente
ui , i = k + 1 : m, ale lui u se memoreaza natural pe pozitiile elementelor anulate
din x, dupa aplicarea transformarii (vezi pasii 2 si 4). Componenta uk si scalarul
se memoreaza separat. Numarul de operatii necesar este Nop 2(m k) (plus o
extragere de radical), vezi pasul 1.
5
Implementarea algoritmului 3.2 tine seama de urmatoarele considerente speci-
fice.
1 . Pentru a evita eventualele depasiri n 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 indicatii mai precise, vezi sectiunea 3.1.2.)
2 . Daca n situatia 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 si sa semnalam aceasta situatie punand = 0. (Matricea
unitate Im este ortogonala si poate fi asimilata cu un reflector impropriu). Aceeasi
conventie se adopta daca algoritmul 3.2 este apelat pentru k = m.
3 . Deoarece vectorul Householder u este esential determinat numai ca directie,
la pasul 2 se poate face scalarea acestuia, e.g. luand
xk xi
2 . uk = 1 + ; ui = , i = k + 1 : m.

Se vede usor ca n acest caz rezulta = uk , deci organizarea procedurala a calculelor
se simplifica, n particular se memoreaza separat un singur numar 6 . (Cresterea
numarului de operatii este fara importanta.) Rezumand cele de mai sus, obtinem
5 Convenim ca functia sgn : R R utilizata n algoritmii ce urmeaza este definita de

1, daca x < 0
sgn(x) = . Atragem atentia ca utilizarea unor functii sgn predefinite n di-
1, daca x 0
verse limbaje de nivel nalt (pentru care de regula sgn(0) = 0) poate conduce la rezultate eronate.
6 Alternativ, u poate fi scalat astfel ncat u = 1. Aceasta posibilitate va fi discutata mai
k
departe.
130 CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE

% Forma implementabila a algoritmului 3.2.


1. = 0
2. Daca k < m
Pm 2 1/2
1. = i=k xi
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 esentiala a vectorului u, se
memoreaza pe pozitiile corespunzatoare din x. In final, se calculeaza si se memo-
reaza separat scalarul = uk , iar componenta de indice k a vectorului transformat
este returnata pe pozitia corespunzatoare xk , vezi (3.16).
Observatia 3.1 In unele aplicatii apar reflectori modificati 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 . . . umk+1 0 . . . 0 ]T . (3.17)
In consecinta, matricea Uk are acum structura
 
U1 0
Uk = , (3.18)
0 Ik1
deci, n procesul de aplicare a transformarii x Uk x, 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 ncat primele m k componente ale vectorului transformat sa fie nule, i.e.
(Uk x)i = 0, i = 1 : m k. Scrierea algoritmilor de transformare si generare a
reflectorilor modificati, perfect similari cu algoritmii 3.1 si 3.2 stabiliti anterior, este
propusa ca exercitiu.

Proceduri de calcul cu reflectori


In problemele de calcul numeric relativ simple, algoritmii 3.1 si 3.2 (ultimul, sub
forma sa implementabila) pot fi utilizati ca atare. In practica profesionala, cal-
culele se organizeaza procedural, exploatand faptul ca algoritmii mentionati sunt
vectorizati 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 actioneaza 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 astfel ncat (U1 x)i =
0, i = 2 : m, adica
U1 x = e1 , (3.19)
se face utilizand forma implementabila a algoritmului 3.2 n care punem k = 1.
3.1. TRANSFORMARI ORTOGONALE 131


x1 x1
.. ..
x1

.


.

xk1 xk1

x2
U1

u2
Uk
.. .. xk







. . xk+1 uk+1

xm um . .
.. ..
xm um

Fig. 3.2: Efectul aplicarii procedurii RFG asupra vectorului x Rm ; n stanga,


= RFG(x); n dreapta, = RFG(x(k : m))

RFG % Se da x Rm . Se genereaza un reflector U1 cu proprie-


tatea (3.19) si se aplica transformarea. Partea esentiala ui ,
i = 2 : m, a vectorului Householder u se memoreaza pe
pozitiile 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, spe-
cifica procedurii RFG. Avand n vedere considerente de eficienta, la pasii mentionati
se recomanda utilizarea procedurilor NRM2 si SCAL din BLAS. Observam ca daca
vectorul dat x este nul sau are o singura componenta, atunci algoritmul returneaza
= 0, ceea ce, conform conventiei adoptate anterior, nseamna ca U1 = Im .
Modul de apel al procedurii de generare (evidentiind argumentele de intrare si
iesire) este [u, , x] = RFG(x). Pentru a sublinia ca, dupa cum am spus, partea
esentiala 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/iesire. In consecinta, executia instructiunilor
= 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 U1 x (3.20)
132 CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE

Transformare Functie Mod de apel Apel rapid Obs.


Reflector U1 x = e1 [u, , x] = RFG(x) = RFG(x)
def
U1 = (u, ) u1 =
x Rm x U1 x x = RF(u, , x) RF(u, , x)
Reflector
modificat U1 x = em [u, , x] = mRFG(x) = mRFG(x)
def um =
U1 = (u, ) x U1 x x = mRF(u, , x) mRF(u, , x)
x Rm

Tabelul 3.1: Proceduri de calcul cu reflectori

se face avand n vedere algoritmul 3.1 precum si conventia specifica de memorare


a vectorului Householder u. Notand = si tinand seama ca u1 = , vectorul
transformat poate fi calculat efectuand numai adunari si nmultiri.

RF % Se dau un reflector U1 generat de RFG si un vector


x Rm . Se aplica transformarea x U1 x.
1. Daca 6= 0 atunci
1. t = u1
2. u1 = P
m
3. = ( i=1 ui xi )/ % 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 contine informatii despre vectorul transformat n procesul de generare a reflec-
torului.
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 modificati se scriu similar. De exemplu, gene-
rarea unui reflector (modificat) U1 astfel ncat (U1 x)i = 0, i = 1 : m 1, adica

U1 x = em ,

se face nlocuind pur si simplu x1 cu xm n RFG. (Desigur, acum partea esentiala


a vectorului Householder u este ui , i = 1 : m 1, iar um = .) Scrierea detaliata
a procedurilor de generare si aplicare a reflectorilor modificati, notate mai departe
mRFG si respectiv mRF, este propusa cititorului ca exercitiu.
Procedurile de calcul cu reflectori sunt prezentate sintetic n tabelul 3.1.
Subliniem ca, n general, procedurile de generare si aplicare a reflectorilor apar
n perechi, modificarea conventiei de memorare a vectorului Householder din RFG
antrenand dupa sine o modificare corespunzatoare n RF.
Ilustram utilizarea procedurilor prin doua exemple simple, dar extrem de im-
portante pentru ntreaga expunere ulterioara.
3.1. TRANSFORMARI ORTOGONALE 133

Exemplul 3.3 Se da o matrice A Rmn . Vom determina un reflector


mm
U1 R astfel ncat elementele subdiagonale din prima coloana a matricei
B = U1 A sa fie nule; apoi, vom calcula matricea transformata A B = U1 A.
Deoarece transformarea se aplica la stanga, partitionam A pe coloane. Notand
aj = A(:, j), j = 1 : n, trebuie sa avem U1 a1 = e1 , deci U1 se determina aplicand
procedura RFG primei coloane a1 a matricei A. Totodata are loc si transformarea
acestei coloane, i.e. scalarul este returnat pe prima pozitie a11 . In continuare
transformarea celorlalte coloane aj , j = 2 : n, se face aplicand repetat procedura
RF. Prin urmare, rezultatul dorit se obtine pe loc n A utilizand algoritmul

QR1 1. = RFG(A(:, 1))


2. Pentru j = 2 : n
1. RF(A(:, 1), , A(:, j)).

Desigur, reflectorul U1 obtinut la pasul 1 poate fi aplicat mai departe unei alte
matrice, atata timp cat partea esentiala A(2 : m, 1) a vectorului Householder u
precum si scalarul sunt disponibili. De exemplu, daca C Rlm , atunci trans-
formarea la dreapta C CU1 se efectueaza partitionand 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


nn
Z1 R astfel ncat 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, partitionam A pe linii. Rationand
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 evidentia avantajele organizarii procedurale, propunem cititorului sa
scrie detaliat algoritmii de calcul stabiliti mai sus, nlocuind apelurile la procedurile
RFG si RF cu secventele de instructiuni scalare corespunzatoare. Avand n
vedere expunerea ulterioara, mentionam ca acesti algoritmi efectueaza prima etapa
de triangularizare a matricei A prin transformari ortogonale la stanga si respectiv
la dreapta (vezi sectiunile 3.3 si 3.6).

3.1.2 Rotatii
Dupa cum se stie, n cazul m = 2 o rotatie (plana) de unghi se reprezinta prin
matricea  
cos sin
P = . (3.21)
sin cos

In cazul general m 2, vom adopta urmatoarea definitie.


134 CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE

Definitia 3.2 Fixam doi ntregi i 6= k 1 : m. O matrice Pki Rmm de forma



Ik1

c s

Pki =
Iik1 , unde c2 + s2 = 1 (3.22)

s c
Imi

se numeste rotatie de ordinul m n planul (k, i) sau transformare Givens 7 .

Se constata imediat ca orice rotatie Pki este o matrice ortogonala.


Rotatiile Pki cu structura precizata mai sus au doua proprietati importante.
AA. Fiind date o rotatie Pki si un vector x Rm , aplicarea transformarii Pki ,
i.e. calculul vectorului transformat y = Pki x, se face extrem de simplu. Din (3.22)
se vede ca Pki modifica numai elementele lui x cu aceiasi indici, deci calculele se
desfasoara avantajos pe loc n x, utilizand urmatoarea procedura.

Algoritmul 3.3 (Se dau o rotatie Pki si un vector x Rm . Se


aplica transformarea x Pki x).
1. t = xk
2. xk = ct + sxi
3. xi = cxi st
Numarul de operatii necesar este Nop = 6.
Aplicarea transformarii B = Pki A, unde A Rmn este o matrice cu n coloane,
se face utilizand algoritmul 3.3 pentru actualizarea fiecarei coloane.

% Se aplica transformarea A Pki A


1. Pentru j = 1 : n
1. aj Pki aj
T
Aplicarea transformarii C = APki se face similar, partitionand A pe linii.
In legatura cu algoritmul 3.3, este important sa retinem ca, spre deosebire de
T
reflectori, rotatiile nu sunt matrice simetrice. Mai precis, transformarea x Pki x
difera de transformarea x Pki x, considerata mai sus, prin semnul scalarului s.
AA. La fel ca n cazul reflectorilor, generarea rotatiilor vizeaza introducerea de
zerouri ntr-un vector. Mai precis, fiind dat un vector x Rm , putem determina
o rotatie Pki astfel ncat componenta i a vectorului transformat sa fie nula, i.e.
(Pki x)i = 0.

Propozitia 3.2 Fixam doi ntregi i 6= k 1 : m si fie x Rm un vector astfel


ncat
def
r2 = x2k + x2i 6= 0. (3.23)
7 Desi cunoscute din secolul trecut si utilizate de Jacobi, Rotatiile 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 acceptiunea noastra, o rotatie este definita de
doua numere reale c, s, satisfacand conditia c2 + s2 = 1. Evident, n acest fel se evita utilizarea
n calcule a functiilor trigonometrice.
3.1. TRANSFORMARI ORTOGONALE 135

Numerele reale
xk xi
c= , s= (3.24)
r r
definesc o rotatie Pki de ordin m n planul (k, i) astfel ncat
(
xl , pentru l 6= k, i
(Pki x)l = r, pentru l = k (3.25)
0, pentru l = i.

Demonstratia este imediata observand ca avem


    
c s xk r
= , (3.26)
s c xi 0

precum si c2 + s2 = 1.
Precizand (deocamdata arbitrar) semnul lui r, relatiile (3.23) si (3.24) conduc
la urmatorul algoritm de calcul al rotatiei Pki cu proprietatea ceruta.

Algoritmul 3.4 (Se dau i 6= k 1 : m si un vector x Rm . Se


calculeaza o rotatie Pki astfel ncat (Pki x)i = 0).
p
1. r = x2k + x2i
2. c = xk /r, s = xi /r
% vectorul transformat
3. xk = r; xi = 0
Numarul de operatii necesar este Nop = 6.
Semnificatia geometrica a rotatiei Pki calculate de algoritmul 3.4 apare n figura
3.3, unde m = 2, k = 1, i = 2.
Implementarea algoritmului 3.4 tine seama de urmatoarele considerente.
1 . La pasul 1 se recomanda scalarea componentelor xk si xi , de exemplu prin
mpartire la N = |xk | + |xi |.
2 . Daca N = 0 sau r = 0, i.e. ambele componente xk si xi sunt deja nule,
atunci se ia Pki = Im , punand c = 1, s = 0.
3 . Semnul lui r se alege astfel ncat r si cel mai mare (n valoare absoluta)
dintre cele doua numere xk si xi sa aiba acelasi semn.
Aceasta conventie, adoptata n BLAS, nu este importanta n sine, dar are avan-
tajul de a permite reconstructia numeric stabila a parametrilor c, s, dintr-un singur
numar z. (Desigur, n acest fel devine posibila memorarea rotatiei Pki pe pozitia
elementului xi anulat prin aplicarea transformarii la pasul 3). Precizarile necesare
vor fi facute mai departe.
Observatia 3.2 Retinem ca, desi rotatiile sunt transformari considerabil mai
simple decat reflectorii, ele sunt n acelasi timp si mai putin eficiente decat acestia,
ntrucat o rotatie permite anularea unei singure componente a vectorului transfor-
mat. (Tocmai de aceea rotatiile se utilizeaza mai ales n probleme cu date struc-
turate, asupra carora ele au un efect de rezolutie fina a zerourilor.)
In caz de nevoie, un efect similar cu al reflectorului Uk determinat de algoritmul
3.2 poate fi obtinut utilizand o secventa de rotatii, e.g.
136 CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE

2
x2 6 x
>




r 



 - -
x1 P12 x 1

Fig. 3.3: Efectul aplicarii unei rotatii P12 asupra unui vector x R2

Pk = Pkm . . . Pk,k+2 Pk,k+1 , (3.27)


n care rotatiile Pki se determina succesiv (aplicand algoritmul 3.4) pentru a anula
componentele corespunzatoare xi , i = k + 1 : m. (Scrierea algoritmului de calcul
este propusa ca exercitiu.) Alternativ, n acelasi scop poate fi utilizata secventa

Pk = Pk,k+1 Pk+1,k+2 . . . Pm1,m , (3.28)

n care rotatiile Pki anuleaza aceleasi componente n ordine inversa, adica xi ,


i = m : 1 : k + 1.
Mentionam ca n practica se utilizeaza frecvent secvente de rotatii disjuncte care
au proprietati numerice mai bune, vezi problemele 3.14 si 3.22 8 .

Proceduri de calcul cu rotatii


In continuare dam cateva indicatii privind organizarea procedurala a calculelor cu
rotatii 9 . Deoarece partea activa a unei rotatii Pki de forma (3.22) este evident o
rotatie plana ce actioneaza asupra unui vector x R2 , n continuare vom considera
m = 2 si vom nota P12 = P .
AA. Fie x R2 un vector dat. Generarea unei rotatii P astfel ncat (P x)2 = 0,
adica     
c s x1 r
= , (3.29)
s c x2 0
se face tinand seama de indicatiile de implementare ce nsotesc algoritmul 3.4.

ROTG % Se da x R2 . Se genereaza o rotatie P cu proprietatea


(3.29) si se aplica transformarea. Totodata, pe pozitia ele-
mentului anulat x2 se returneaza scalarul z, pe baza caruia
este posibila reconstructia numeric stabila a parametrilor
c, s.
1. r = kxk
2. Daca r = 0 atunci
8 Doua rotatii Pki , Plj se numesc disjuncte daca toti indicii sunt diferiti.
9 Subliniem ca, ntrucat opereaza asupra unor vectori cu doua componente, procedurile de calcul
cu rotatii sunt de tip scalar.
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 rotatie 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 reconstructia lor pe baza scalarului z, utilizand secventa urmatoare.
138 CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE

Transformare Functie Mod de apel Apel rapid Obs.


ar
Rotatie P x = re1 [c, s, a, b] = ROTG(a, b) [c, s] = ROTG(a, b)
bz
def
P =(c, s)
 x Px [a, b] = ROT(c, s, a, b) ROT(c, s, a, b)
a
x=
b x P T x [a, b] = ROT(c, s, a, b) ROT(c, s, a, b)

Tabelul 3.2: Proceduri de calcul cu rotatii. (N.B. Semnificatia lui z este precizata
n text)

% Reconstructia 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 esenta cu algoritmul 3.3.

ROT % Se aplica transformarea x P x.


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 rotatii sunt prezentate sintetic n tabelul 3.2. (Si n
cazul rotatiilor, ca si al reflectorilor, mai departe vom utiliza notatiile procedurale
prescurtate indicate n penultima coloana a tabelului.)

3.2 Transformari unitare


In aceasta sectiune vom prezenta principalele transformari unitare utilizate n cal-
culele cu matrice complexe. Avand n vedere ca proprietatile structurale ale acestor
transformari sunt aceleasi cu proprietatile similare ale transformarilor ortogonale
descrise n sectiunea anterioara, expunerea va fi orientata n principal asupra as-
pectelor procedurale specifice.

3.2.1 Reflectori complecsi


Consideram spatiul complex Cm cu produsul scalar (x, y) = y H x si norma euclidiana

Xm
kxk = (xH x)1/2 = ( |xi |2 )1/2 .
i=1
3.2. TRANSFORMARI UNITARE 139

Im 6
'$
9

0rr r Re-

&%
= 1 = 2
kuk2

Fig. 3.4: Cercul n planul complex

Amintim ca o matrice Q Cmm se numeste unitara daca QH Q = Im .


Fie u Cm un vector Householder, u 6= 0. Consideram matrice complexe de
forma
not uuH
U1 = QH1 = Im , (3.31)

respectiv
Q1 = Im uuH , (3.32)
unde si sunt doi parametri legati prin relatia = 1 . Avem
QH H H H 2 H H
1 Q1 = (Im uu )(Im uu ) = Im ( + )uu + | | u(u u)u ,

deci matricea Q1 este unitara daca si numai daca


2Re = | |2 kuk2 , (3.33)
i.e. scalarul apartine cercului din planul complex care trece prin origine si are
raza egala cu 1/kuk2 (vezi figura 3.4). Pe de alta parte, matricea Q1 este hermitica
daca si numai daca R. Asociind cele doua proprietati, pentru = 0 obtinem
Q1 = Im , iar pentru
1 2
= = , (3.34)
kuk2
din (3.31) sau (3.32) obtinem reflectorii hermitici care constituie generalizarea di-
recta a reflectorilor reali din (3.8).
Pentru toate celelalte valori ( 6= 0 si 6= 2/kuk2), matricele de forma
(3.32) sunt unitare si de aceea se numesc (abuziv dar comod) reflectori complecsi.
Subliniem ca, n aceasta acceptiune mai larga, reflectorii complecsi nu sunt her-
mitici, deci necesita o manipulare relativ mai atenta decat omologii lor reali (acum
not
U1 = QH 1 6= Q1 !).
AA. Fie x Cm un vector dat. Vom determina un reflector Q1 astfel ncat
H
(Q1 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
= kxk (3.36)
|x1 |
140 CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE

sau
= sgn(Rex1 )kxk. (3.37)
(Retinem ca n primul caz C, iar n al doilea R.)
In continuare scriem ca de obicei
uuH
QH
1 x = (Im )x = x u, (3.38)

unde
uH x
= . (3.39)

Prin urmare, relatia (3.35) are loc daca si numai daca u = (x + e1 )/, sau pe
componente
x1 + xi
u1 = ; ui = , i = 2 : m. (3.40)

De asemenea, trebuie sa avem

uH x (xH + eT1 )x kxk2 + x1


= = = ,
||2 ||2

unde, conform celor spuse mai sus, kxk2 = ||2 , deci


x1 +
= . (3.41)

Pentru a determina complet reflectorul U1 cu proprietatea (3.35) ramane sa
precizam valoarea parametrului de scalare 6= 0 din (3.40) si (3.41).
a) Daca luam = 1 si alegem din (3.36) (sau din (3.37)), atunci obtinem
analogul complex al algoritmului 3.1.
b) Pe de alta parte, daca dorim simplificarea relatiei (3.41), atunci sunt posibile
doua alegeri, i.e. = si = x1 + , care conduc la
(
x1 xi
u1 = 1 + ; ui = , i = 2 : m
(3.42)
= u1

si respectiv
xi
u1 = 1;
ui = , i=2:m
x1 + (3.43)
x 1
= 1 + 1 , ( = ).


In practica numerica actuala se ntalnesc doua versiuni de implementare a rela-
tiilor de calcul stabilite mai sus.
In LINPACK [XIII] se asociaza relatiile (3.36) si (3.42). In consecinta, para-
metrul = u1 rezulta real, deci reflectorul obtinut este hermitic, QH 1 = Q1 . In
schimb, prima componenta a vectorului transformat

x1
3.2. TRANSFORMARI UNITARE 141

este complexa. Procedura de generare a reflectorului hermitic Q1 difera de proce-


dura reala RFG numai prin modul de calcul al lui , vezi (3.36).
In LAPACK [XV] se asociaza relatiile (3.37) si (3.43). Instrumentul fun-
damental de lucru este acum reflectorul complex Q1 , n care parametrul rezulta
complex; n schimb faptul ca u1 = 1 si R poate fi exploatat avantajos n multe
situatii concrete. Procedura de generare a reflectorului Q1 este urmatoarea.

CRFG % Se da x Cm . Se genereaza un reflector complex Q1 cu pro-


prietatea (3.35) si se aplica transformarea. Componentele
ui , i = 2 : m, ale vectorului Householder u se memoreaza
pe pozitiile 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 utilizand functia
complexa CNRM2 din BLAS 1.
AA. Fie acum x Cm un vector arbitrar, iar Q1 un reflector dat. Aplicarea
transformarilor
x QH1 x, x Q1 x (3.44)
se face tinand seama de relatiile (3.38), (3.39) precum si de tipul reflectorului con-
siderat.
Daca Q1 este un reflector hermitic, atunci cele doua transformari (3.44) co-
incid, iar procedura corespunzatoare difera de procedura reala RF numai prin uti-
lizarea produsului scalar complex la pasul 1.1, vezi (3.39).
Daca Q1 este un reflector complex, generat de procedura CRFG, atunci se
tine seama ca prima componenta u1 = 1 a vectorului Householder nu este memorata
ca atare. Scrierea procedurii de transformare corespunzatoare primei relatii (3.44),
de exemplu notata CRF, este propusa ca exercitiu.
Procedurile de calcul cu reflectori complecsi 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.
Presupunand ca tabloul A e dimensionat adecvat, n general exista patru tipuri
de transformari posibile, doua la stanga (QA si QH A) si doua la dreapta (AQ si
AQH ). In primul caz A se partitioneaza pe coloane si fiecarei coloane i se aplica
transformarea corespunzatoare. In al doilea caz A se partitioneaza pe linii. 11
10 Procedurile de calcul cu reflectori complecsi modificati, e.g. CmRFG etc. se scriu similar cu

cazul real. Detaliile sunt lasate n sarcina cititorului interesat.


11 Pentru a acoperi toate aceste situatii cu o singura procedura CLARF, n LAPACK (ca si n
142 CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE

Transformare Functie Mod de apel Apel rapid Obs.


Reflector C
QH
1 x = e1 [u, , x] = CRFG(x) = CRFG(x)
complex R
def
Q = (, u) x QH1 x x = CRF(u, , x) CRF(u, , x)
1
x Cm x Q1 x x = CRF(u, , x) CRF(u, , x)

Tabelul 3.3: Proceduri de calcul cu reflectori complecsi. Procedurile de calcul cu


reflectori hermitici sunt similare cu RFG si RF

3.2.2 Rotatii complexe


Consideram spatiul complex C2 cu norma euclidiana kxk = (|x1 |2 + |x2 |2 )1/2 .
O rotatie complexa este o matrice de forma
 
c s
P = , (3.45)
s c

n care parametrii c, s satisfac relatia

|c|2 + |s|2 = 1. (3.46)

Se verifica usor ca matricea P este unitara, i.e. P H P = I2 .


AA. Fie x C2 un vector dat. Vom determina o rotatie complexa P astfel
ncat     
c s x1 r
= , (3.47)
s c x2 0
unde r este un scalar astfel ncat |r| = kxk. O analiza simpla arata ca aici, ca si n
cazul reflectorilor complecsi, sunt posibile doua optiuni.
Putem alege r complex, e.g.
x1
r= kxk, (3.48)
|x1 |

si n acest caz obtinem


|x1 | x1 x2
c= , s= , (3.49)
kxk |x1 | kxk

deci parametrul c rezulta real pozitiv. Procedura de calcul este urmatoarea.

CROTG % Se da x R2 . Se genereaza o rotatie complexa P cu pro-


prietatea (3.47) si se efectueaza transformarea.
1. Daca |x1 | = 0 atunci
1. c = 0, s = 1
BLAS3) se utilizeaza optiunile TRANS si SIDE, vezi sectiunea 1.11. Subliniem ca urmarirea acestor
detalii, aparent pur tehnice, este esentiala pentru asigurarea corectitudinii si optimizarea calcula-
torie a algoritmilor de calcul obtinuti.
3.3. TRIANGULARIZAREA ORTOGONALA 143

Transformare Functie Mod de apel Apel rapid Obs.


Rotatie cR
P x = re1 [c, s, a, b] = CROTG(a, b) [c, s] = CROTG(a, b)
complexa rC
def
P =(c, s)
 x Px [a, b] = CROT(c, s, a, b) CROT(c, s, a, b)
a H
x= x P x [a, b] = CROT(c, s, a, b) CROT(c, s, a, b)
b

Tabelul 3.4: Proceduri de calcul cu rotatii 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)

si n acest caz ambii parametri


x1 x2
c= , s= (3.51)
r r
rezulta complecsi. (Mentionam ca n practica se ntalnesc ambele optiuni (3.48) si
(3.50), implementate sub diverse forme relativ sofisticate.)
AA. Fie acum P o rotatie complexa data, generata de CROTG, iar x C2 un
vector arbitrar. Procedura de transformare

x P x, (3.52)

de exemplu notata CROT, se scrie cu usurinta n maniera algoritmului 3.3, dar,


desigur, tinand seama de forma actuala (3.45) a lui P .
Procedurile de calcul cu rotatii complexe sunt prezentate sintetic n tabelul 3.4.

3.3 Triangularizarea ortogonala


In aceasta sectiune vom descrie principalele proceduri de triangularizare a unei
matrice A Cmn prin transformari unitare de echivalenta la stanga. In cazul real
A Rmn , n acelasi scop se utilizeaza transformari ortogonale. Pentru concizia
expunerii vom considera ambele cazuri n paralel.
not
Teorema 3.1 Oricare ar fi A Cmn , exista o matrice unitara U = QH Cmm
astfel ncat matricea
U A = R, respectiv QH A = R (3.53)
144 CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE

este superior triunghiulara.


In cazul real A Rmn , matricea de transformare U = QT poate fi aleasa reala
si ortogonala, deci R rezulta reala.

Pe scurt, orice matrice este unitar echivalenta (la stanga) cu o matrice superior
triunghiulara. A doua relatie arata ca A poate fi scrisa sub forma unui produs
A = QR, unde Q este unitara, iar R este superior triunghiulara. In calculul numeric,
aceasta relatie se numeste factorizare QR, de aceea procedurile de calcul stabilite
pe baza relatiei fundamentale (3.53) vor fi notate cu sigla QR. (Asupra factorizarii
QR vom reveni pe larg n sectiunea urmatoare.)
Demonstratia va fi constructiva, conducand la o procedura de triangularizare
ortogonala a matricei A utilizand reflectori sau rotatii. Pentru precizare, n cele ce
urmeaza alegem prima posibilitate.
In cazul real, ne referim la faptele stabilite n sectiunea 3.1.1 si pentru claritate
consideram succesiv doua situatii cu semnificatii structurale distincte.
In cazul m > n matricea de transformare va fi un produs de reflectori, i.e.

U = Q T = Un . . . U2 U1 ,

unde reflectorii Uk ce se determina prin metodele cunoscute pentru a introduce


zerourile necesare n coloanele corespunzatoare ak , k = 1 : n, ale matricei A.
In consecinta, 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
propozitiei 3.1, exista un reflector U1 Rmm de ordinul m si indice 1, astfel ncat

(U1 a1 )i = 0, i = 2 : m.

In virtutea acestui fapt, matricea transformata



r11 r12 . . . r1n
(2) (2)
0 a22 . . . a2n
(2) (2)
A2 = U1 A1 = [U1 a1 U1 a2 . . . U1 an ] = 0 a32 . . . a3n

...
(2) (2)
0 am2 . . . amn

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 si simplu U1 = Im si trecem la etapa urmatoare. (Matricea unitate Im este
ortogonala !)
Etapa k, k = 2 : n. Presupunem ca dupa desfasurarea primelor k 1 etape ale
procedurii am obtinut matricea

Ak = Uk1 . . . U2 U1 A
3.3. TRIANGULARIZAREA ORTOGONALA 145

superior triunghiulara n primele k 1 coloane, i.e.



r11 r12 . . . r1,k1 r1k ... r1n

r22 . . . r2,k1 r2k ... r2n

.. .. .. ..
. . . .

(k) (k)
rk1,k1 rk1,k . . . rk1,n
Ak = [a1 . . . ak . . . a(k)

n ]= (k)
akk . . . akn
(k) .

(k) (k)
0 ak+1,k . . . ak+1,n

.. ..
. .
(k) (k)
amk . . . amn

(k)
Acum, daca elementele aik , i = k + 1 : m, nu sunt toate nule, atunci exista un
reflector Uk Rmm de ordinul m si indice k, astfel ncat
(k)
(Uk ak )i = 0, i = k + 1 : m.

(Altfel, luam Uk = Im si trecem la etapa urmatoare.) Tinand 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
(k) (k)
Ak+1 = Uk Ak = [Uk a1 . . . U k ak . . . Uk a(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 raman
nemodificate.
Asadar, procedura de anulare a elementelor subdiagonale poate fi initializata,
ca n etapa 1, si, o data pornita, poate fi continuata, ca n etapa k. Astfel, cand
m > n, dupa n etape, obtinem matricea
 
def R
R = An+1 = Un Un1 . . . U2 U1 A = , (3.54)
0

unde R Rnn este superior triunghiulara de ordin n.


In cazul m n, procedand similar, dupa m 1 etape obtinem matricea superior
trapezoidala
def
R = Am = Um1 . . . U2 U1 A = [ R S ], (3.55)
unde R Rmm este superior triunghiulara de ordin m, iar S Rm(nm) este
un bloc dreptunghiular fara particularitati de structura.
Demonstratia teoremei n cazul real este ncheiata.
In cazul complex rationamentul este identic, iar detaliile pot fi completate cu
usurinta de cititorul interesat prin referire la sectiunea 3.2.1.
Observatia 3.3 Atat enuntul cat si demonstratia 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 PATRATE

nu trebuie sa fie neaparat superior triunghiulara. De exemplu, n cazul m = n, ma-


tricea A poate fi adusa la forma inferior triunghiulara utilizand reflectorii modificati
din observatia 3.1. Aceasta posibilitate va fi discutata n finalul sectiunii urmatoare.
De asemenea, transformarile unitare de echivalenta pot fi aplicate la dreapta matri-
cei A, dupa cum vom arata n sectiunea 3.6. In toate cazurile, tehnica de lucru este
aceeasi, 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 demonstratiei de
mai sus este similara cu procedura de eliminare gaussiana, cunoscuta din capitolul
anterior, si, la fel ca aceasta, se poate desfasura pe loc n tabloul A, astfel ncat n
final matricea R sa fie memorata n triunghiul superior al lui A.
In cazul real, relatiile (3.54) si (3.55) conduc la urmatoarea schema de calcul.

QR RF % Triangularizarea matricei A utilizand reflectori


1. Pentru k = 1 : min (m 1, n)
1. Se determina Uk a.. (Uk A)ik = 0, i = k + 1 : m
2. A Uk A.

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. In
consecinta, pentru a determina reflectorul Uk (adica vectorul Householder uk si
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. Combinand 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
Pm 2 1/2
1. = sgn(akk ) i=k aik
2. ukk = akk + ; uik = aik , pentru i = k + 1 : m
3. k = ukk
% se aplica Uk
4. Pentru j P=k+1:n
1. = ( m i=k uik aij ) /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) operatii,


care n principal se consuma la pasul 1.4 pentru actualizarea coloanelor A(k : m, j),
j = k + 1 : n, ale matricei ramase. In particular, daca m = n, atunci
NQR = (4/3)n3 este dublu fata de algoritmul de eliminare gaussiana.
3.3. TRIANGULARIZAREA ORTOGONALA 147

In general, fie acum A Cmn o matrice oarecare. Pentru uniformizarea scrierii,


def
n cazul m n completam sirul de transformari din (3.55) cu Um = Im . De aseme-
H
nea, notam s = min(m, n), precum si Uk = Qk , unde Qk sunt reflectorii com-
plecsi (n particular hermitici) utilizati pentru anularea elementelor subdiagonale la
etapele k = 1 : s. Cu aceste notatii, relatiile (3.54) si (3.55) pot fi scrise mpreuna
sub forma (3.53), unde
U = QH = QH H H
s . . . Q2 Q1 , (3.56)
iar schema de triangularizare devine

QR % Schema generala de triangularizare QR


1. Pentru k = 1 : s
1. Se genereaza QH H
k a.. (Qk A)ik = 0, i = k + 1 : m
H
2. A Qk A.

In 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 si RF din
tabelul 3.1. Componentele uik , i = k + 1 : m, ale vectorilor Householder uk se
memoreaza natural pe pozitiile elementelor anulate, iar scalarii k se memoreaza
ntr-un vector suplimentar, ca n urmatoarea diagrama corespunzatoare situatiei 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

u (k+1) (k+1)
k+1,1 uk+1,2 . . . uk+1,k ak+1,k+1 . . . ak+1,n

.. .. .. .. ..

. . . . .
(k+1) (k+1)
um1 um2 . . . umk am,k+1 . . . amn
 
1 2 ... k
Algoritmul rezultat se redacteaza astfel.

Algoritmul 3.5 (QR triangularizare ortogonala cu reflectori her-


mitici) (Se da A Cmn . Se efectueaza triangularizarea ortogonala a
matricei A, i.e. QH A = R, unde QH = Qs . . . Q2 Q1 , iar Qk sunt reflec-
tori hermitici. Partea esentiala uk (k + 1 : m) a vectorilor Householder
uk se memoreaza pe pozitiile corespunzatoare A(k + 1 : m, k). La apli-
carea ulterioara a transformarilor se tine seama ca ukk = k , k = 1 : s.
Elementele nenule ale matricei superior triunghiulare R suprascriu ele-
mentele 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 PATRATE

2. Daca 6= 0 atunci
akk
1. Daca akk 6= 0 atunci
|akk |
2. aik uik = aik /, pentru i = k : m
3. k ukk = 1 + akk
4. Pentru j = P k+1:n
1. = ( m i=k uik aij ) /k
2. aij aij + uik , pentru i = k : m
% elementul diagonal
5. akk =

Comentarii. In cazul real, algoritmul 3.5 necesita NQR operatii 12 si este numeric
stabil, dupa cum vom arata n sectiunea 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-iesire. Subliniem ca algoritmul 3.5 nu calculeaza explicit reflectorii Qk
din (3.56), si cu atat mai putin matricea de transformare QH , ci doar memoreaza
(extrem de economic) toate elementele necesare pentru definirea acestora.

Exemplul 3.5 In cazul matricelor cu structura speciala, algoritmul general prezen-


tat mai sus se adapteaza n mod corespunzator, avand n vedere conservarea struc-
turii si exploatarea acesteia
  n scopul reducerii numarului de operatii. In acest sens
R
fie matricea A+ = , n care blocul lider R Cnn este deja superior tri-
C
unghiular, iar C C(mn)n este un bloc dat cu l = m n 1 linii. Schema de
triangularizare ortogonala este
 
H R+
Q A+ = , QH = QH H H
n . . . Q2 Q1 ,
0

n care Qk sunt reflectori definiti de vectorii Householder

uk = [0 . . . 0 ukk 0 . . . 0 un+1,k . . . umk ]T .

La fiecare etapa, elementele k = ukk si uik , i = n + 1 : m, se determina ca n


algoritmul 3.5 pentru a anula elementele corespunzatoare din coloana k a blocului
C. In plus, datorita structurii suplimentare de zerouri, aplicarea transformarii lasa
nemodificate liniile i = k + 1 : n ale matricei A+ , deci conserva structura supe-
rior triunghiulara a blocului lider. In consecinta, numarul de operatii se reduce la
2(m n)n2 . Detaliile de implementare si analiza unor cazuri particulare semnifica-
tive sunt propuse n problema 3.20.

In cazul utilizarii reflectorilor complecsi de forma generala (3.32),


implementarea schemei QR se face utilizand direct procedurile CRFG si CRF
din tabelul 3.3.
12 In cazul complex, notand N = mn2 n3 /3, algoritmul 3.5 cere N adunari complexe si N

nmultiri complexe. Deoarece o adunare complexa este echivalenta cu 2 adunari (reale), iar o
nmultire complexa este echivalenta cu doua adunari si patru nmultiri, algoritmul 3.5 cere 4N
adunari si 4N nmultiri, adica 8N (sau 4NQR ) operatii reale (flopi).
3.4. FACTORIZAREA QR 149

CQR % Algoritmul de triangularizare ortogonala cu reflectori com-


plecsi, i.e. QH A = R, unde QH = QH H H
s . . . Q2 Q1 .
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 rotatii


Procesul de triangularizare definit prin relatia (3.53) poate fi implementat alternativ
utilizand rotatii.
De exemplu, n cazul real, pentru anularea elementelor subdiagonale se utilizeaza
secvente de rotatii Pk de forma (3.26), n care la fiecare etapa k rotatiile Pki se
determina utilizand algoritmul 3.4 pentru a introduce zerourile necesare n pozitiile
corespunzatoare aik , i = k + 1 : m, ale matricei curente A. Actualizarea coloanelor
urmatoare se face utilizand algoritmul 3.3.
Procedura de triangularizare se poate desfasura pe loc n tabloul A, utilizand
urmatoarea schema de calcul.

QR ROT % Triangularizarea matricei A utilizand rotatii


1. Pentru k = 1 : min (m 1, n)
1. Pentru i = k + 1 : m
1. Se determina Pki astfel ncat (Pki A)ik = 0
2. A Pki A

Detaliile de justificare precum si scrierea algoritmului n forma sa implementabila


sunt propuse ca exercitii. Mentionam ca numarul de operatii efectuat aici este dublu
fata de algoritmul similar care utilizeaza reflectori, de aceea acesta din urma este
n general preferabil. In cazul complex, schema de mai sus ramane valabila, cu
mentiunea ca rotatiile Pki se calculeaza ca n sectiunea 3.2.2.

3.4 Factorizarea QR
In aceasta sectiune vom utiliza procedurile de triangularizare ortogonala stabilite
n sectiunea anterioara pentru a construi factorizarea QR a unei matrice A Cmn
de forma generala. Notam ca de obicei s = min(m, n).
In cazul m n din (3.53) si (3.56) rezulta
 
R }n
A = QR, R = (3.57)
0 }m n

unde matricea
Q = Q1 Q2 . . . Qn (3.58)
150 CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE

este unitara iar R este superior triunghiulara ca n (3.54). (In particular, daca
m = n atunci R = R .) Partitionand Q conform cu R, i.e.

Q = [ Q Q ], (3.59)
|{z} |{z}
n mn

din (3.57) deducem


A = Q R , (3.60)
unde acum Q are coloanele ortogonale, pe scurt QH Q = 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 definitie, relatia (3.60) constituie factorizarea QR a matricei A. Daca A
este monica, atunci R rezulta inversabila si reciproc. In acest caz, factorizarea
QR este unica daca n plus impunem conditia ca factorul triunghiular R sa aiba
elemente diagonale (reale si) pozitive.

Demonstratie. Pentru a demonstra a doua afirmatie, sa ne amintim ca matricea


A este monica daca si numai daca Ax 6= 0, oricare ar fi x Cn , x 6= 0, deci
xH AH Ax = kAxk2 > 0 pentru orice x 6= 0, adica matricea hermitica G = AH A
este pozitiv definita. Atunci, conform teoremei de factorizare Cholesky, exista si
este unica matricea R1 superior triunghiulara cu elemente diagonale pozitive astfel
ncat G = R1H R1 . Fie Q1 = AR11 . Avem
H H 1 H H 1
QH
1 Q1 = R1 A AR1 = R1 R1 R1 R1 = In ,

adica Q1 are coloanele ortogonale, si n plus A = Q1 R1 . Prin urmare, unicitatea


factorizarii QR rezulta din unicitatea factorizarii Cholesky, i.e. daca R satisface
conditia din enunt atunci R = R1 si Q = Q1 . (Conditia ca elementele diagonale
ale lui R sa fie pozitive poate fi ntotdeauna satisfacuta, dar, de obicei, nu prezinta
interes n practica.)

Observatia 3.4 In general, matricea hermitica pozitiv semidefinita G = AH A


se numeste gramian al (coloanelor) matricei A. Demonstratia teoremei 3.2 arata
ca daca matricea A este monica, atunci factorul triunghiular R al lui A coincide
n esenta cu factorul Cholesky R1 al lui G. In principiu, acest rezultat extrem de
important poate fi exploatat n doua sensuri.
a) Factorizarea QR a matricei A poate fi determinata relativ economic efectuand
n prealabil factorizarea Cholesky a matricei G. Schema de calcul, dedusa direct
din demonstratia teoremei amintite, este urmatoarea

QR Ch 1. Se formeaza G = AH A
2. Se calculeaza R1 efectuand factorizarea Cholesky G = R1H R1
3. Se calculeaza Q1 = AR11 rezolvand sistemul supe-
rior triunghiular Q1 R1 = A
3.4. FACTORIZAREA QR 151

Trebuie nsa sa subliniem ca aceasta metoda, desi 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 conditionata, vezi mai departe
propozitia 3.5. In consecinta, rezultatele calculate la pasii 2 si 3 sunt afectate de erori
straine de problema si eventual catastrofale, independent de calitatea algoritmilor
utilizati. Ca regula generala, formarea gramianului G = AH A trebuie sistematic
evitata n favoarea operarii directe asupra matricei date A.
b) O serie de probleme de calcul, vizand de exemplu actualizarea unor factorizari
LU sau Cholesky, pot fi reformulate n termenii unei factorizari QR echivalente si
rezolvate n consecinta aplicand 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, traditional 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 = RH R o matrice hermitica pozitiv definita al carei factor Cholesky supe-
rior triunghiular R Cnn este cunoscut. Problema de actualizare a factorizarii
Cholesky consta n a calcula factorul Cholesky R+ al matricei modificate

G+ = G + C H C,

n care C Cln este o matrice data. In 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+ ,
observand ca
 
H H H H R
G+ = R R + C C = [R C ] = AH + A+ ,
C

i.e. G+ este gramianul matricei A din exemplul 3.5. In consecinta, factorul Cholesky
cautat R+ poate fi determinat efectuand triangularizarea ortogonala a matricei A+ ,
construite direct cu elementele date R si 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) dati.


Daca matricea A este monica, atunci factorul ortogonal Q al lui A are o
semnificatie geometrica remarcabila. Din (3.60) rezulta
not
y = Ax = Q (R x), x Cn , (3.61)

unde R este superior triunghiulara inversabila. Prin urmare, coloanele matricelor


not
A si Q genereaza acelasi subspatiu liniar S = ImA. Mai precis, prin ipoteza A are
coloanele independente, deci constituie o baza a lui S, iar prin constructie Q are
coloanele ortogonale, deci constituie o baza ortogonala a lui S. Proiectorul ortogonal
pe S este P1 = A(AH A)1 AH sau, mai simplu, P1 = Q QH . (Prin calcul direct
152 CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE

S
q3
6

 
 - q2 S 
  
 
q1 
 
 

Fig. 3.5: Baze ortogonale pentru ImA si KerAH . Q = [q1 q2 | q3 ], m = 3, n = 2

se verifica usor ca P12 = P1 si P1H = P1 , iar faptul ca ImP1 = S este evident.


Echivalenta celor doua expresii ale lui P1 rezulta din (3.60).)
In mod similar, matricea Q Cm(mn) (care, n (3.59), completeaza Q pana
la o matrice unitara Q), constituie o baza ortogonala a subspatiului complementar
S = KerAH . Proiectorul ortogonal pe S este P2 = Q QH si, n plus, avem
P1 + P2 = Im .
Pe scurt, partitia (3.59) a matricei unitare Q corespunde descompunerii ortogo-
nale fundamentale
Cm = ImA KerAH , (3.62)
furnizand baze ortogonale pentru ambele subspatii. Cazul m = 3, n = 2 este ilustrat
n figura 3.5. In consecinta, orice vector b Cm se scrie unic sub forma b = b1 + b2 ,
unde bi = Pi b, i = 1 : 2, sunt proiectiile ortogonale ale lui b pe S si, respectiv, S .
In cazul m < n, din (3.53) si (3.56) rezulta
A = QR, R = [R S], (3.63)

unde Q = Q1 Q2 . . . Qm este unitara, iar R este superior trapezoidala ca n (3.55).


Utilizand partitia conforma A = [A B] obtinem factorizarea

A = QR , (3.64)
unde, evident, A = A[m] este submatricea lider principala a matricei A.
Daca A este inversabila, atunci R are aceeasi proprietate, iar din (3.64) si
B = QS rezulta B = A (R )1 S. Altfel spus, ntre coloanele matricei A exista
relatia B = A X, unde X = (R )1 S este solutia sistemului triunghiular R X = S,
prin urmare matricea  
X
N=
Imn
not
constituie o baza (neortogonala) a subspatiului N = KerA Cn . (Se constata
imediat ca A este epica si AN = 0.)
Trebuie nsa sa observam ca, n absenta unei strategii adecvate de pivotare a
coloanelor, conditia de inversabilitate mentionata mai sus nu este ndeplinita, astfel
3.4. FACTORIZAREA QR 153

ncat n cazul m < n, utilitatea practica a procedurii de triangularizare ortogonala


(la stanga) precum si a factorizarii QR asociate sunt limitate.
Avand n vedere rezultatele teoretice stabilite mai sus, care evidentiaza clar
importanta factorizarii QR, n continuare ne vom concentra atentia asupra as-
pectelor procedurale privind calculul si aplicatiile practice ale acestei factorizari.

3.4.1 Acumularea transformarilor


In cazul m n, factorizarea QR a matricei A poate fi determinata utilizand pro-
cedurile de triangularizare ortogonala stabilite n sectiunea anterioara. Intr-adevar,
n urma executiei acestor proceduri, factorul triunghiular R se obtine ca atare n
triunghiul superior al matricei A iar, n acord cu relatiile (3.58) si (3.59), factorul
ortogonal Q poate fi calculat sub forma
   
In In
Q = Q = Q1 Q2 . . . Qn , (3.65)
0 0

aplicand urmatoarea schema caracteristica de acumulare a transformarilor.

GQR % Acumularea primelor n coloane Q ale matricei


Q = Q1 Q2 .. . Qn , m n.
In
1. Q =
0
2. Pentru k = n : 1 : 1
1. Q Qk Q

Cu referire la algoritmul 3.5, implementarea schemei GQR este simpla. Tinand


seama de particularitatile de structura ale matricei Q si utilizand elementele defi-
nitorii ale transformarilor Qk , memorate n triunghiul inferior strict al matricei A
precum si n vectorul , procesul de calcul poate fi organizat astfel ncat Q sa
rezulte pe loc n tabloul A 13 .

Algoritmul 3.6 (GQR) (Utilizand iesirea algoritmului 3.5, se efec-


tueaza acumularea pe loc n A a primelor n coloane Q ale matricei
Q = Q1 Q2 . . . 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 = Pk+1:n
1. = ( m i=k uik aij ) /k
2. aij aij + uik , pentru i = k : m
13 In caz de nevoie, factorul triunghiular R sau chiar ntregul tablou A sunt n prealabil salvate.

Acest mod de lucru se justifica avand n vedere ca, n general, un anumit algoritm de calcul trebuie
sa manevreze un numar cat mai mic de tablouri de lucru.
154 CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE

% 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. In cazul real, algoritmul 3.6 necesita NQR operatii, 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, ). Retinem ca determinarea explicita a factorizarii
QR a matricei A prin apelarea succesiva a procedurilor QR si GQR necesita n
total 2NQR operatii, 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).
In contextul procedurii de triangularizare CQR, care utilizeaza reflectori complecsi,
schema de acumulare GQR ramane 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 = Q1 Q2 . . . Qn ,
m n, unde Qk sunt reflectori complecsi.
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, ncepand cu ultima coloana. (Un calcul simplu arata
ca, n cazul m = n, algoritmul GCQR necesita Nop = 2n3 operatii complexe, adica cu
50% mai mult decat algoritmul 3.6.) Modificarile necesare pentru a corecta acest defect,
permitand 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 pana la o matrice unitara, poate fi calculata
sub forma    
0 0
Q =Q = Q1 Q2 . . . Qn , (3.66)
Imn Imn
utilizand o schema de acumulare similara, dar mai putin eficienta. (Evident, acum
tabloul A trebuie extins cu m n coloane necesare pentru a memora Q .)14
In final, subliniem ca formarea matricelor Q , Q sau Q prin acumularea trans-
formarilor este relativ costisitoare. De aceea, n contextul aplicatiilor 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.
14 In cazul m < n, cu referire la (3.64), calculul matricei Q se poate face apeland direct procedura

GQR sub forma A(:, 1 : m) = GQR(A(:, 1 : m), ). Dupa executie, rezultatul dorit Q suprascrie
blocul lider A al matricei A.
3.4. FACTORIZAREA QR 155

3.4.2 Aplicarea transformarilor


In practica, matricea unitara QH generata sub forma (3.56) de procedurile de tri-
angularizare ortogonala aplicate matricei A, se utilizeaza pentru a transforma n
mod adecvat o alta matrice data B. Ca regula generala, cele patru tipuri de trans-
formari posibile, doua la stanga (QH B si QB) si doua la dreapta (BQ si BQH ), se
efectueaza pe loc n B fara a forma explicit matricele QH sau Q.
Aplicarea transformarilor

B QH B = QH H H
s . . . Q2 Q1 B (3.67)

si
B QB = Q1 Q2 . . . Qs B (3.68)
se face partitionand B pe coloane.
In cazul (3.67), schema de calcul este evident urmatoarea.

MQR % Aplicarea transformarii B QH B, unde Q = Q1 Q2 . . . Qs .


1. Pentru k = 1 : s
1. B QH k B

Cu referire la algoritmul 3.5, implementarea schemei MQR are la baza o pro-


cedura de tip RF pentru actualizarea fiecarei coloane a matricei B. Desigur, la
pasul 1.1, transformarea se aplica efectiv numai daca k 6= 0, utilizand vectorul
Householder uk memorat n A(k : m, k).

Algoritmul 3.7 (MQR) (Se da B Cmp . Utilizand iesirea algo-


ritmului 3.5, se aplica transformarea B QH B, unde Q = Q1 Q2 . . . 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 = P 1:p
1. = ( m i=k uik bij ) /k
2. bij bij + uik , pentru i = k : m
4. akk = t

Comentarii. In cazul real cu m n, algoritmul 3.7 necesita Nop = pNm operatii,


unde am notat cu Nm = 2n(2m n) numarul de operatii necesar pentru a aplica
transformarea (3.67) unui vector b cu m componente.
In contextul procedurii de triangularizare CQR, schema MQR se implementeaza astfel.

MCQR % Aplicarea transformarii B QH B, unde Q = Q1 Q2 . . . Qs , iar


Qk sunt reflectori complecsi.
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 PATRATE

In 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 trans-
formarilor. Avand n vedere simplificarea redactarii unor proceduri ulterioare, vom
presupune ca ambele transformari (3.67) si (3.68) pot fi efectuate apeland 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) con-
situie un exercitiu usor.
Aplicarea transformarilor la dreapta B BQ si B BQH se face partitionand
B pe linii si tinand seama de precizarile facute n finalul sectiunii 3.2.1. Scrierea
procedurii corespunzatoare, de exemplu notata MQRd, este propusa ca exercitiu.
(La nevoie, cele doua proceduri MQR si MQRd pot fi reunite ntr-una singura
introducand o variabila suplimentara SIDE, asa cum se procedeaza n LAPACK.)
In concluzia expunerii de pana acum, subliniem ca procedurile de triangularizare,
acumulare si transformare, notate generic QR, GQR si MQR, apar ntotdeauna n
triplete, orice modificare a procedurii fundamentale de triangularizare QR, n ceea
ce priveste calculul si memorarea transformarilor Qk , k = 1 : s, antrenand dupa sine
modificari corespunzatoare n procedurile asociate GQR si MQR. Avand n vedere
recomandarile facute n finalul sectiunii precedente, procedura de acumulare GQR
se utilizeaza numai n caz de stricta necesitate. Aproape ntotdeauna, obiectivele
urmarite prin calcul pot fi atinse utilizand 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 aceeasi cu a procedurilor
bloc de factorizare LU, descrise n sectiunea 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, partitionata pe coloane, utilizand reflectori complecsi.
Dupa cum am vazut, aceasta procedura este bogata n operatii vectoriale, iar efortul
principal de calcul se consuma la pasul 1.2 pentru actualizarea coloanelor urmatoare.
Avand n vedere accelerarea acestui proces pe seama reducerii numarului de apeluri
la memoria principala, procedura bloc opereaza asupra matricei A partitionate n
blocuri de coloane, cu scopul de a efectua operatiile indicate utilizand procedurile
de nmultire matriceala (la nivel de bloc) de tip GEMM din BLAS 3.
Consideram A Cmn cu m n si n = nb , unde nb e dimensiunea comuna a
blocurilor (de coloane), iar este numarul total de blocuri. Procedura de triangu-
larizare 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, efectuand
transformarea A QH b A. In consecinta, se considera partitia A = [Ab B], unde

Ab = A(1 : m, 1 : nb ), B = A(1 : m, nb + 1 : n) (3.69)

si 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 b B

Evident, la pasul 1 se aplica procedura uzuala CQR blocului Ab . Matricea Qb


rezultata este de forma
Qb = Q1 Q2 . . . Qnb , (3.70)
unde Qi = Im i ui uH i sunt reflectorii complecsi determinati 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 executiei
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
 
R S
A= ,
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 efectuand
transformarea A QH b A, unde

Qb = Qk Qk+1 . . . Qk+nb 1 ,

iar fiecare reflector Qi are o structura de tip (3.10), deci


 
Ik1 0
Qb = .
0 Qb

In consecinta, se considera partitia A = [Ab B], unde acum

Ab = A(k : m, k : k + nb 1), B = A(k : m, k + nb : n),

si se aplica procedura Bl1 cu noile date. Matricea Qb rezultata este de forma

Qb = Q1 Q2 . . . Qnb ,

iar problemele de calcul la pasii 2 si 3 sunt aceleasi ca mai sus.


Pentru precizare, n continuare ne vom referi la partitia (3.69) si vom descrie
cele doua tipuri de reprezentari structurate ale matricelor Qb de tip (3.70), utilizate
15 Procedurile uzuale de tip vectorial, expuse n sectiunile anterioare, nu satisfac acest deziderat.

Aplicarea succesiva a transformarilor Qi , i = 1 : nb , n maniera MQR, este eficienta (numarul


de operatii este 2nb (2m nb )(n nb )) dar nu conduce la operatii 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 2
b B cere 2m (n nb ) operatii, unde tipic, m nb , adica cu un ordin mai mult decat
este necesar. In plus, un asemenea mod de lucru cere un spatiu considerabil pentru memorarea
matricei Qb .
De aceea, n practica, se utilizeaza reprezentari speciale ale matricelor de tip Qb care poarta
numele de reflectori bloc si care vor fi descrise n continuare.
158 CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE

n practica. (Indicele b va fi omis.) Aceste reprezentari se numesc reflectori bloc, iar


elementele lor definitorii se construiesc exploatand relatia recurenta

Q = Q1 , Q Q+ = QQi , i = 2 : nb .

a. Reprezentarea WY este de forma QH = I W Y H , respectiv

Q = I Y W H, (3.71)

unde W, Y Cmnb sunt doua matrice ce urmeaza a fi determinate.


Initial avem Q = I 1 u1 uH
1 , deci putem lua

W = u1 , Y = 1 u1 .

Mai departe putem scrie

Q+ = QQi = (I Y W H )(I i ui uH
i )=
= I Y W H i(I Y W H H
 )ui ui =
  W H
= I Y zi =
uHi
H
= I Y+ W+ ,

deci
W+ = [W ui ], Y+ = [Y zi ],
H
unde zi = i (I Y W )ui . Matricea W , formata prin alaturarea vectorilor House-
holder ui , este produsa si memorata ca atare de catre procedura CQR pe pozitiile
subdiagonale din tabloul Ab . (Intrucat primele i 1 componente ale vectorilor
Householder ui sunt nule, iar uii = 1, W este chiar inferior trapezoidala unitate.)
In consecinta, reprezentarea WY este complet definita de tabloul Y , a carui proce-
dura de formare (vezi pasul 2 al schemei Bl1 ) este urmatoarea.

% Formarea lui Y
1. Y (:, 1) = 1 u1
2. Pentru i = 2 : nb
1. Y (:, i) = (i ui ) Y (W H (i ui ))

La pasul 3 al procedurii Bl1 , reflectorul bloc n reprezentarea WY se aplica


matricei B conform schemei

B QH B = (I W Y H )B = B W (Y H B), (3.72)

respectiv

1. N = Y H B
2. B B W N

Ambele produse se efectueaza utilizand GEMM si cer 4mnb (n nb ) operatii. Sin-


gurul 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 W2 T sau triunghiulara este de forma QH = I W T H W H ,


respectiv
Q = I WTWH (3.73)
unde, dupa cum vom vedea, W este acelasi ca mai sus, iar T Cnb nb rezulta
superior triunghiulara.
Initial avem Q = I 1 u1 uH
1 , deci putem lua

W = u1 , T = 1 .
Mai departe putem scrie
Q+ = QQi = (I W T W H )(I i ui uH
i )=
= I W T W H i ui uH
i + W(i T W H ui )uH
i =
  T ti WH
= I W ui =
0 i uHi
= I W+ T+ W+H
deci avem  
T ti
W+ = [W ui ], T+ = ,
0 i
unde ti = i T (W H ui ).
Procedura de formare a tabloului triunghiular T , care defineste complet repre-
zentarea W2 T, este urmatoarea.
% Formarea lui T
1. T (1, 1) = 1
2. Pentru i = 2 : nb
1. T (1 : i 1, i) = i T (W H ui )
2. T (i, i) = i
La pasul 3 al procedurii Bl1 , reflectorul bloc n reprezentarea W2 T se aplica
matricei B conform schemei
B QH B = (I W T W H )B = B W T (W H B), (3.74)
respectiv
1. N = W H B
2. N T H N
3. B B W N
O analiza simpla arata ca n acest caz este suficient un singur tablou de lucru de
dimensiune nb n, relativ mica. In primele nb coloane ale acestuia se formeaza T ,
iar n coloanele urmatoare se depune produsul intermediar N = W H B. (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 operatii este
(4m+nb )nb (nnb ). Cresterea numarului de operatii este compensata de memorarea
mai compacta a reprezentarii triunghiulare.
Combinand ideile de mai sus, procedura de triangularizare ortogonala la nivel
de bloc poate fi rezumata astfel.
160 CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE

CQR Bl % Triangularizare la nivel de bloc, utilizand reflectori complecsi.


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) = i T (W H ui )
2. T (i, i) = i
% aplicarea transformarii
3. B = A(k : m, f + 1 : n)
4. N = W H B
5. N T H N
6. B B W N
7. A(k : m, f + 1 : n) = B

In redactarea de mai sus, Ab este tabloul de lucru din memoria rapida n care
se efectueaza triangularizarea blocului curent, iar B si N sunt blocurile utilizate de
GEMM n procesul de aplicare a transformarii. (In caz de necesitate, blocul B poate
fi tratat sub forma partitionata.) Amintim ca tabloul W este format si memorat
ca atare n triunghiul strict inferior al blocului Ab obtinut la pasul 1.3. Evident, n
cazul nb = 1 procedura de mai sus se reduce la CQR. Instructiunile 1.2, 1.4, 1.5.3
si 1.5.7 efectueaza transferul datelor ntre memoria principala si cea rapida.
In final, subliniem ca procedurile de acumulare si transformare GCQR si
MCQR pot fi de asemenea reformulate la nivel de bloc, procedand n esenta 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 utilizand pro-
cedurile de ortogonalizare de tip Gram-Schmidt, care constituie analogul schemelor
compacte Crout si Doolittle, cunoscute din sectiunea 2.4.
Considerand relatia A = Q R si partitionand A si Q pe coloane, putem scrie

r11 . . . r1j . . . r1n
.. .. ..

. . .
[a1 . . . aj . . . an ] = [q1 . . . qj . . . qn ]
rjj . . . rjn .
. . ..
. .
rnn

Egaland primele coloane avem


a1 = q1 r11 ,
3.4. FACTORIZAREA QR 161

unde vectorul q1 este normat, i.e. kq1 k = 1, deci r11 = ka1 k si q1 = a1 /r11 . In
general avem
aj = q1 r1j + . . . + qj1 rj1,j + qj rjj ,

unde qk qj , deci qkH aj = rkj , k = 1 : j 1, iar qj este si el normat, deci

j1
X
rjj = kaj qk rkj k.
k=1

Procedura de ortogonalizare Gram-Schmidt astfel obtinuta este urmatoarea.

GS % Procedura Gram-Schmidt (schema jk)


1. Pentru j = 1 : n
1. qj = aj
2. Pentru k = 1 : j 1
1. rkj = qkH qj
P
3. qj qj j1 k=1 qk rkj
4. rjj = kqj k
5. qj qj /rjj

Prin rearanjarea buclelor procedurii GS si actualizarea coloanei curente qj ime-


diat dupa calculul unui coeficient rkj , se obtine procedura de ortogonalizare Gram-
Schmidt modificata.

MGS % Procedura Gram-Schmidt modificata (schema kj)


1. Pentru k = 1 : n
1. qk = ak
2. Pentru k = 1 : n
1. rkk = kqk k
2. qk qk /rkk
3. Pentru j = k + 1 : n
1. rkj = qkH qj
2. qj qj qk rkj

Aici este important sa subliniem ca, desi cele doua proceduri sunt echivalente din
punct de vedere matematic, iar numarul de operatii este acelasi n ambele cazuri,
NGS = 2mn2 , totusi performantele lor numerice sunt diferite. Procedura GS este
numeric instabila atat ca mijloc de calcul al factorizarii QR cat si ca metoda de
rezolvare a problemei CMMP. In schimb, procedura MGS furnizeaza o factorizare
QR satisfacatoare (n sensul ca, de regula, vectorii calculati qj rezulta ortogonali
n precizia de lucru) si constituie totodata un algoritm numeric stabil pentru re-
zolvarea problemei CMMP. De aceea, n multe situatii, procedura MGS (imple-
mentata ngrijit) poate constitui o alternativa viabila fata de perechea QR, GQR,
relativ mai costisitoare.
162 CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE

3.4.5 Factorizarea QL
In unele aplicatii matricea A este adusa la forma inferior triunghiulara n raport cu
diagonala secundara care ncepe din coltul dreapta-jos, i.e.
QH A = 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, ncepand cu
ultima si anuleaza elementele situate deasupra diagonalei secundare utilizand reflec-
tori modificati. Notand reflectorii cu indicele coloanei n care se pastreaza vectorii
Householder corespunzatori, putem scrie
QH = QH H H
1 Q2 . . . Qn , (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 k A
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,
utilizand procedura corespunzatoare mRF.
Aplicatiile procedurii de triangularizare QL sunt perfect similare cu aplicatiile
descrise mai sus ale procedurii QR (vezi problemele 3.42, 3.43).

3.5 Rezolvarea problemei CMMP


Revenim acum la problema (3.4) din sectiunea introductiva a acestui capitol si, pen-
tru generalitate, consideram versiunea ei complexa. Fie A Cmn o matrice data si
b Cm un vector arbitrar. Problema CMMP consta n determinarea pseudosolutiei
x Cn a sistemului Ax = b astfel ncat norma euclidiana a reziduului r = b Ax
sa fie minima, i.e.
kb Ax k = minn kb Axk. (3.77)
xC

In primul rand, vom stabili conditiile n care problema (3.77) este bine definita,
i.e. are o solutie unica.
Teorema 3.3 Oricare ar fi vectorul b Cm , problema (3.77) are o solutie unica
daca si numai daca matricea A Cmn este monica, i.e. m n si rangA = n.
In acest caz, pseudosolutia n sensul CMMP a sistemului Ax = b poate fi scrisa
n forma
x = A+ b, (3.78)
n care matricea A+ Cnm este prin definitie pseudoinversa lui A si are expresia

A+ = (AT A)1 AT (3.79)


3.5. REZOLVAREA PROBLEMEI CMMP 163

Demonstratie. Vom stabili pe rand a) existenta si b) unicitatea pseudosolutiei x .


a) Pentru a demonstra existenta, nu e necesar sa presupunem ca matricea A
este monica. Consideram subspatiul S = ImA si fie S = KerAH complementul
sau ortogonal n Cm . Vectorul b poate fi scris n mod unic sub forma b = b1 + b2 ,
unde b1 S si b2 S sunt proiectiile ortogonale ale lui b pe S si respectiv S .
Avem
r = b Ax = b2 + (b1 Ax), (3.80)
unde b1 S, Ax S implica b1 Ax S, deci b2 si b1 Ax sunt ortogonali,
x Cn , vezi figura 3.6. Aplicand teorema lui Pitagora obtinem

kb Axk2 = kb1 Ax + b2 k2 = kb1 Axk2 + kb2 k2 kb2 k2 , x Cn . (3.81)

Intrucat b1 S = ImA, exista (cel putin) un x Cn astfel ncat

Ax = b1 , (3.82)

iar din (3.81) se vede ca orice astfel de x are proprietatea (3.77) si reciproc.
Existenta pseudosolutiei x este demonstrata.
Relatia (3.82) arata ca cea mai buna aproximare b = Ax a lui b pe S = ImA
coincide cu proiectia ortogonala b1 , deci b = b1 exista ntotdeauna si este unic
determinata oricare ar fi A. Aceasta afirmatie constituie lema proiectiei ortogonale
si reprezinta generalizarea unui fapt binecunoscut din geometria elementara. Pe
scurt (vezi (3.77) si figura 3.6), distanta minima de la un punct b la un subspatiu
S este lungimea (euclidiana) a perpendicularei duse din b pe S.
Consideratiile geometrice de mai sus pot fi exprimate analitic. Notand
r = b Ax , din (3.80) si (3.82) se vede ca r = b2 , unde b2 S = KerAH ,
deci AH r = 0. Prin urmare avem
    
Im A r b
= , (3.83)
AH 0 x 0

de unde, eliminand r ntre cele doua ecuatii, rezulta

AH Ax = AH b. (3.84)

b) Din (3.82), pseudosolutia x e unic determinata daca si numai daca


A(x x ) = 0 implica x = x , adica KerA = {0}, sau, echivalent, A este monica.
In acest caz, gramianul G = AH A este o matrice pozitiv definita, deci inversabila
(vezi demonstratia teoremei 3.2), iar din (3.84) rezulta imediat (3.78) si (3.79).

Observatia 3.5 Sistemul liniar (3.83), de ordin m + n, se numeste sistemul extins


asociat problemei CMMP. Matricea acestui sistem este hermitica de semn nedefinit
si are o structura particulara remarcabila. Prin rezolvarea acestui sistem putem
calcula atat pseudosolutia x cat si reziduul de norma minima r . Procedurile de
calcul corespunzatoare vor fi expuse mai jos 16 .
16 In principiu, sistemul extins poate fi rezolvat utilizand procedurile de factorizare cvasi-

diagonala descrise n sectiunea 2.10, dar acestea nu sunt eficiente n cazul de fata deoarece nu
exploateaza structura speciala a sistemului considerat (vezi problema 3.52).
164 CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE

OCC
6  C
b C b Ax
b2  C
 C
 C
 C
 b 1 1
 C
o
S
 

X S b1C Ax
XXX
X SC
Ax XX z
XSC
S = ImA

T = S

Fig. 3.6: Lema proiectiei ortogonale

Sistemul liniar (3.84), de ordin n, se numeste sistemul de ecuatii normale, pe


scurt sistemul normal asociat problemei CMMP. Daca matricea A e monica, grami-
anul G este o matrice hermitica pozitiv definita, iar pseudosolutia x coincide cu
solutia sistemului normal. La fel ca n observatia 3.4, aceasta echivalenta poate fi
exploatata n doua sensuri.
a) Pseudosolutia x a sistemului Ax = b poate fi determinata prin rezolvarea
sistemului normal asociat. Schema de calcul este urmatoarea:

S Ch 1. Se formeaza c = AH b
2. Se formeaza G = AH A
3. Se efectueaza factorizarea Cholesky G = R1H R1
4. Se calculeaza x rezolvand succesiv sistemele
triunghiulare R1H y = c si R1 x = y.

Trebuie nsa sa subliniem ca, la fel ca n observatia 3.4, aceasta metoda (desi
relativ economica si extrem de compacta) nu este recomandabila din punct de vedere
numeric, deoarece matricea G = AH A este rau conditionata. Cu precautie, ea poate
fi avuta n vedere, n special daca m n, iar economia de memorie realizata prin
formarea lui G constituie un obiectiv esential.
b) Solutiile unor sisteme liniare cu matrice pozitiv definite avand structura de
gramian pot fi determinate aplicand ideea algoritmilor de radacina patrata bazati
pe utilizarea transformarilor unitare (vezi observatia 3.4). Acest mod de lucru,
frecvent utilizat n practica actuala, este ilustrat prin problema 3.46.

3.5.1 Calculul pseudosolutiei


Avand 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 utilizand informatia furnizata de


algoritmul de triangularizare ortogonala QR, i.e.
 
R }n
QH A = , QH = QH H H
n . . . Q2 Q1 , (3.85)
0 }m n

unde Q este unitara, iar R este superior triunghiulara inversabila. Aplicand trans-
formarea QH ambilor membri ai sistemului Ax = b si notand
 
H d }n
Q b = d, d = , (3.86)
d }m n

obtinem sistemul unitar echivalent


   
R d }n
x= . (3.87)
0 d }m n

In general, n (3.87) avem d 6= 0, deci sistemul dat Ax = b este incompatibil.


Pentru a determina pseudosolutia x , consideram reziduul r = b Ax. Din
(3.87) rezulta  
d R x
QH r = , (3.88)
d
unde matricea QH este unitara, deci krk = kQH rk. Prin urmare

krk2 = kQH rk2 = kd R xk2 + kd k2 kd k2 , x Cn . (3.89)

Efectuand minimizarea n raport cu x indicata n (3.77) obtinem

R x = d , (3.90)

deci solutia n sens CMMP a sistemului supradeterminat Ax = b coincide cu solutia


sistemului superior triunghiular nesingular reprezentat de primele n ecuatii din
(3.87) 17 . Pe scurt, avem
x = [(R )1 0]QH b (3.91)
sau echivalent
x = (R )1 QH b. (3.92)
Procedural, solutia problemei CMMP (3.77) este determinata de relatiile (3.86)
si (3.90). Tinand cont de structura lui QH din (3.85), se vede usor ca transformarile
(3.86) pot fi efectuate (pe loc n b), utilizand o procedura de tip MQR. Schema de
calcul astfel obtinuta este urmatoarea

SQR % Calculul pseudosolutiei x = A+ b


1. Pentru k = 1 : n
1.b QH k b
2. Se rezolva sistemul triunghiular R x = b(1 : n)
17 Rationamentul de mai sus constituie o noua demonstratie, de data aceasta constructiva, a

teoremei 3.3. Relatiile (3.80-3.82) si (3.88-3.90) se corespund n mod evident.


166 CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE

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 . Utilizand iesirea algoritmului 3.5, se calculeaza
n x solutia 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 uP kk = k
m
3. = ( i=k uik bi ) /k
4. bi bi + uik , pentru i = k : m
5. akk = t
% calculul solutiei problemei CMMP
2. Pentru k = n : 1Pn: 1
1. xk = (bk j=k+1 akj xj )/akk

Comentarii. In cazul real, algoritmul 3.8 necesita Nop = Nm + n2 = 4mn n2


operatii. Modul de apel este x = SQR(A, , b). Retinem ca determinarea pseudo-
solutiei prin apelarea succesiva a procedurilor QR si SQR necesita asimptotic NQR
operatii, i.e. principalul efort de calcul se consuma pentru triangularizarea ortogo-
nala a matricei A.

In cazul utilizarii algoritmului CQR, implementarea schemei SQR este urmatoarea.

SCQR % Calculul pseudosolutiei.


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 informatiilor furnizate de schema SQR, putem calcula usor si reziduul


de norma minima r = b Ax , obtinand astfel solutia completa a sistemului extins
(3.83). Din (3.88) si (3.90) obtinem imediat
 
0
r =Q , (3.93)
d

n care d are semnificatia din (3.86). Prin urmare, avand n vedere ca vectorul
transformat b d = QH b a fost deja calculat la pasul 1, r poate fi obtinut (pe loc
n b) completand schema SQR cu secventa

3. b(1 : n) = 0
4. Pentru k = n : 1 : 1
1. b Qk b
3.5. REZOLVAREA PROBLEMEI CMMP 167

In rezumat, fiind date matricea A si vectorul b, calculul pseudosolutiei x a


sistemului Ax = b si al reziduului de norma minima r consta n triangularizarea
ortogonala a matricei A, urmata de aplicarea schemei SQR completata asa cum am
spus mai sus. Utilizand procedurile cunoscute QR, MQR si 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 pseudosolutia x nu se calculeaza pe locul membrului
drept b, tocmai avand n vedere utilizarea acestui spatiu la pasii 3 si 4 pentru
memorarea lui r . Deseori n practica, pentru aprecierea gradului de incompati-
bilitate a sistemului Ax = b, este suficient calculul normei = kr k. Evident,
avem = kb(n + 1 : m)k, unde b este vectorul transformat obtinut la pasul 1 al
procedurilor SQR sau CMMP.

3.5.2 Calculul proiectiilor


In numeroase aplicatii prezinta interes calculul proiectiilor ortogonale b1 si b2 ale
unui vector b pe subspatiile S = ImA si respectiv S = KerAH .
Din demonstratia teoremei 3.5 (vezi figura 3.6) a rezultat ca proiectia b2 a lui b pe
S coincide cu reziduul de norma minima r , deci se calculeaza aplicand procedura
CMMP din care pasul 2 se omite 18 .
In mod similar proiectia b1 a lui b pe S, care coincide cu vectorul de cea mai
buna aproximatie b = Ax , are expresia
 
d
b =Q , (3.94)
0
deci se calculeaza aplicand aceeasi procedura CMMP n care pasul 3 se nlocuieste
cu
3 . b(n + 1 : m) = 0.
Subliniem ca, pentru siguranta calculului, proiectiile b1 = b si b2 = r se
determina ntotdeauna utilizand relatiile (3.86), (3.93) si (3.94), n care au loc numai
transformari ortogonale. In special, nu se recomanda utilizarea relatiilor evidente
b = Ax si 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
esential sa retinem ca determinarea proiectiilor precum si calculul pseudosolutiei
se efectueaza operand direct asupra vectorului b, fara a forma explicit proiectorii
ortogonali P1 , P2 sau pseudoinversa A+ .
18 Tocmai n virtutea acestei semnificatii geometrice remarcabile, reziduul r = b Ax poate fi

calculat fara a determina n prealabil pseudosolutia x . In general, toate calculele se fac utilizand
exclusiv informatiile obtinute la pasii 0 si 1 ai procedurii CMMP, fara nici o referire la datele
initiale A, b care, de altfel, au si fost distruse.
168 CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE

3.5.3 Problema CMMP cu membru drept multiplu


Fie acum A Cmn o matrice data si 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 pseudosolutiei X Cnp astfel ncat
norma Frobenius a reziduului matriceal R = B AX sa fie minima, pe scurt

kB AX kF = min kB AXkF . (3.95)


XCnp

Analiza acestei probleme este simpla. Partitionand matricele B, X si R pe


coloane, cu notatii clare putem scrie rj = bj Axj , j = 1 : p. Pe de alta parte, prin
definitia normei Frobenius avem
p
X
kRk2F = krj k2 . (3.96)
j=1

In consecinta, problema de minimizare (3.95) este echivalenta cu p probleme CMMP


de tip (3.77), avand aceeasi matrice A si membri drepti diferiti, i.e.

kbj Axj k = minn kbj Axk, j = 1 : p. (3.97)


xC

Prin urmare, daca matricea A este monica, atunci conform teoremei 3.3 fiecare
problema (3.97) are o solutie unica xj = A+ bj , j = 1 : p, iar matricea
X = [x1 . . . xp ], rezultata prin agregarea acestora constituie solutia unica

X = A+ B (3.98)

a problemei (3.95).
Procedural, pseudosolutia X Cnp se calculeaza simplu, efectuand o sin-
gura data triangularizarea ortogonala a matricei A si aplicand apoi repetat algo-
ritmul de rezolvare SQR fiecarei coloane B(:, j), j = 1 : p, a matricei B. Daca
n plus se doreste calculul reziduului de norma Frobenius minima R = B AX ,
atunci se aplica procedura CMMP n care vectorul b se nlocuieste peste tot cu ma-
tricea B. Desigur, n acest nou context pot fi aplicate avantajos (pe calculatoarele
cu memorie ierarhica) procedurile bloc de triangularizare ortogonala si aplicare a
transformarilor, expuse n sectiunea 3.4.4.

3.5.4 Calculul pseudoinversei


Matricea pseudoinversa A+ , definita prin (3.78) are multe proprietati interesante
si, n principiu, poate fi calculata n multe feluri.
In primul rand, utilizand relatia (3.79), constatam imediat ca

1 A+ A = In
2 AA+ = (AA+ )H .

Prima relatie afirma ca A+ este o inversa la stanga a matricei A; n particular,


rangA+ = n, deci A+ este epica. A doua relatie, n combinatie cu prima, arata
3.5. REZOLVAREA PROBLEMEI CMMP 169

ca matricea hermitica P1 = AA+ coincide cu proiectorul ortogonal pe subspatiul


S = ImA. Prin urmare, relatiile 1 si 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 = AH A.
In al doilea rand, punand B = Im din (3.98) gasim X = A+ . Prin urmare,
avand n vedere (3.95), A+ este solutia unica a problemei de minimizare

kIm AA+ kF = min kIm AXkF . (3.99)


XCnm

Nici aceasta constatare, desi teoretic extrem de interesanta, nu are nsa utilitate
calculatorie. Determinarea lui A+ prin rezolvarea sistemului AX = Im utilizand
procedura CMMP este evident neeficienta, deoarece aplicarea transformarilor de la
pasul 1 nu tine seama de structura speciala a membrului drept B = Im .
In sfarsit, din (3.78), prin identificare cu (3.91), (3.92) rezulta

A+ = [(R )1 0]QH , respectiv A+ = (R )1 QH , (3.100)

n care apar direct elementele factorizarii QR a matricei A. In consecinta, A+


poate fi calculata efectuand triangularizarea ortogonala a matricei A si utilizand
informatia astfel obtinuta pentru a explicita oricare dintre relatiile (3.100).
a) In primul caz se calculeaza inversa matricei triunghiulare R si apoi se aplica
transformarea QH la dreapta inversei extinse cu zerouri, utilizand o procedura de
tip MQRd.
b) In al doilea caz se acumuleaza matricea Q utilizand procedura GQR si apoi
se rezolva sistemul superior triunghiular R A+ = QH 19 .
Detaliile de implementare precum si analiza algoritmilor de calcul astfel obtinuti
sunt propuse cititorului ca exercitii.
Intrucat 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
observatie similara este valabila relativ la proiectorii P1 si P2 . Calculul proiectiilor
se face direct, dupa cum am aratat n sectiunea 3.5.2.

3.5.5 Alte metode de rezolvare a problemei CMMP


Calculul pseudosolutiei x a sistemului Ax = b se poate face utilizand factorizarea
QR a matricei furnizata de procedura Gram-Schmidt modificata din sectiunea 3.4.4.
Pe scurt, avem A = Q R , unde ambele matrice Q si R sunt formate explicit de
procedura MGS, iar relatia (3.92) spune ca x = (R )1 QH b. Partitionand Q pe
coloane, schema de calcul este urmatoarea.

SMGS % Calculul pseudosolutiei.


1. Pentru j = 1 : n
1. xj dj = qjH b
2. Se rezolva sistemul triunghiular R x = d
19 Amintim ca procedura GQR calculeaza Q pe loc n A. Prin urmare, matricea Y = (A+ )H

poate fi obtinuta tot n A, rezolvand sistemul inferior triunghiular Y (R )H = Q .


170 CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE

Numarul de operatii este Nop = 2mn + n2 , prin urmare calculul pseudosolutiei


prin apelarea succesiva a procedurilor MGS si SMGS cere asimptotic NGS > NQR
operatii.
Desigur, procedura de triangularizare ortogonala este mai economica deoarece
nu formeaza explicit matricea Q , totusi simplitatea procedurii MGS este uneori
atractiva. Realmente neplacuta aici este absenta matricei de completare Q pe
care procedura MGS nu o poate calcula. In consecinta, calculul reziduului de norma
minima nu se poate face acum decat pe baza relatiei r = b Ax , ceea ce necesita
pastrarea unor copii ale datelor de intrare A, b. In plus, daca sistemul Ax = b este
aproape compatibil, i.e. vectorii b si b = Ax sunt apropiati, atunci calculul
lui r este amenintat de erori catastrofale si, de aceea, trebuie efectuat lucrand n
dubla precizie (vezi sectiunea 2.7).

3.6 Sisteme liniare subdeterminate


Rezolvarea sistemelor liniare subdeterminate necesita o procedura specifica de tri-
angularizare ortogonala la dreapta, pe care o vom expune n prima parte a acestei
sectiuni. In 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


not
Propozitia 3.3 Oricare ar fi A Cmn , exista o matrice unitara V H = Z
Cnn astfel ncat matricea

AV H = L, respectiv AZ = L, (3.101)

este inferior triunghiulara.


In cazul real A Rmn , matricea de transformare V T = Z poate fi aleasa (reala
si) ortogonala, deci L rezulta reala.

Pe scurt, orice matrice A este unitar echivalenta la dreapta cu o matrice inferior


triunghiulara. Prima relatie arata ca A poate fi scrisa sub forma unui produs
A = LV , unde V este unitara, iar L este inferior triunghiulara. In calculul numeric
o relatie de acest tip se numeste factorizare LQ, de aceea procedurile de calcul
stabilite pe baza relatiei fundamentale (3.101) vor fi notate cu sigla LQ.
Demonstratia rezulta imediat aplicand teorema 3.1 matricei B = AH .
Intr-adevar, daca V AH = R este superior triunghiulara, atunci are loc (3.101),
unde L = RH este evident inferior triunghiulara 20 .
Avand n vedere ca operatia de transpunere si conjugare este costisitoare, n
practica profesionala se opereaza direct asupra matricei date A Cmn . Notam ca
de obicei s = min(m, n) si fie Zk reflectorii utilizati n scopul anularii elementelor
20 Corespondenta A AH se numeste dualitate, iar rezultatele si relatiile asociate prin aceasta

corespondenta se numesc duale. De exemplu, relatiile (3.53) si (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 = Z1 Z2 . . . 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 .

In cazul real sau n cazul utilizarii reflectorilor hermitici (Zk = ZkH ), compo-
nentele vkj , j = k + 1 : n, ale vectorilor Householder vk se memoreaza natural pe
pozitiile elementelor anulate. Algoritmul rezultat poate fi redactat astfel.

Algoritmul 3.9 (LQ triangularizare ortogonala la dreapta cu re-


flectori hermitici) (Se da A Cmn . Se efectueaza triangularizarea
ortogonala la dreapta a matricei A, i.e. AZ = L, unde Z = Z1 Z2 . . . Zs ,
iar Zk sunt reflectori hermitici. Partea esentiala vk (k+1 : n) a vectorilor
Householder vk se memoreaza pe pozitiile corespunzatoare A(k, k + 1 : n).
La aplicarea ulterioara a transformarilor se tine seama ca vkk = k ,
k = 1 : s. Elementele nenule ale matricei inferior triunghiulare L
suprascriu elementele corespunzatoare din triunghiul inferior al matri-
cei 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
akk
1. Daca akk 6= 0 atunci
|akk |
2. akj vkj = akj /, pentru j = k : n
3. k vkk = 1 + akk
4. Pentru i =k + 1 : m 
Pn
1. = j=k aij vkj /k
2. aij aij + vkj , pentru j = k : n
% elementul diagonal
5. akk =

Comentarii. In cazul real algoritmul 3.9 necesita NLQ = 2nm2 m3 /3 operatii


si este numeric stabil, dupa cum vom arata n sectiunea 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-iesire.
In cazul utilizarii reflectorilor complecsi, detaliile sunt propuse cititorului ca
exercitiu.
172 CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE

3.6.2 Factorizarea LQ
In aceasta sectiune construim factorizarea LQ a unei matrice A Cmn de forma
generala.
In cazul m n, relatiile (3.101) si (3.102) pot fi scrise sub forma

L |{z}
A = LV, L = [|{z} 0 ], (3.103)
m nm

unde matricea
H
V = Zm . . . Z2H Z1H (3.104)
este unitara, iar L este inferior triunghiulara de ordin m. Partitionand V = Z H
conform cu L, i.e.
 
V }m
V = , Z = [|{z} Z ]
Z |{z} (3.105)
V }n m
m nm

din (3.103) deducem


A = L V , (3.106)
unde evident V = Z H are liniile ortogonale, i.e. V V H = Im .

Propozitia 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 definitie, relatia (3.106) constituie factorizarea LQ a ma-
tricei A. Daca A este epica, atunci L rezulta inversabila si reciproc.

Demonstratia ultimei afirmatii este evidenta. Mai mult, daca A este epica,
atunci matricea hermitica G = AAH este pozitiv definita, prin urmare considerand
1
factorizarea Cholesky G = L1 LH 1 si definind V1 = L1 A, putem stabili cu usurinta
unicitatea factorizarii LQ, n care factorul triunghiular L are elementele diagonale
pozitive.
In general, matricea hermitica pozitiv semidefinita G = AAH se numeste gramian
al (liniilor) lui A. Observatia 3.4 se reformuleaza corespunzator n noul context.
Daca matricea A este epica, atunci matricea Z din (3.105) are o semnificatie
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(nm) are coloanele ortogonale, deci constituie o baza ortogonala
a subspatiului N = KerA. Proiectorul ortogonal pe N este P2 = Z Z H .
In mod similar, matricea Z Cnm (care, n (3.105), completeaza Z pana
la o matrice ortogonala) constituie o baza ortogonala a subspatiului complementar
N = ImAH . Proiectorul ortogonal pe S este P1 = AH (AAH )1 A sau mai simplu
P1 = Z Z H . Pe scurt, partitia (3.105) corespunde descompunerii ortogonale

Cn = ImAH KerA. (3.108)


3.6. SISTEME LINIARE SUBDETERMINATE 173

Acumularea transformarilor
In cazul m n, factorizarea LQ a matricei A poate fi determinata utilizand pro-
cedura de triangularizare ortogonala la dreapta din sectiunea anterioara. Factorul
triunghiular L se obtine ca atare n triunghiul inferior al matricei A, iar factorul
ortogonal V poate fi calculat sub forma

V = [Im 0]V = [Im 0]Zm


H
. . . Z2H Z1H , (3.109)

aplicand urmatoarea schema evidenta de acumulare a transformarilor.

GLQ % Acumularea primelor n linii V ale matricei V = Z H , m n.


1. V = [In 0]
2. Pentru k = m : 1 : 1
1. V V ZkH

Cu referire la algoritmul 3.9, calculul poate fi organizat pe loc n tabloul A,


iar procedura poate fi scrisa cu usurinta de cititorul interesat. Mentionam 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 sectiunea 3.4, matricea unitara Z generata de algoritmul de triangu-
larizare LQ aplicat matricei A se utilizeaza pentru a transforma adecvat o alta
matrice data B.
Aplicarea transformarii

B ZB = Z1 Z2 . . . Zs B (3.110)

se face partitionand B pe coloane:

MLQ % Aplicarea transformarii B ZB, unde Z = Z1 Z2 . . . Zs .


1. Pentru k = s : 1 : 1
1. B Zk B

Procedand n acelasi spirit, toate rezultatele din sectiunea 3.4 pot fi reformulate
n contextul factorizarii LQ. Stabilirea versiunii la nivel de bloc a procedurii de
triangularizare la dreapta precum si a procedurilor de ortogonalizare Gram-Schmidt
sunt propuse cititorului ca exercitii.

Factorizarea RQ
In unele aplicatii matricea A este adusa la forma superior triunghiulara n raport
cu diagonala secundara care ncepe din coltul 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 PATRATE

Procesul de triangularizare la dreapta parcurge liniile n ordine inversa, ncepand


cu ultima si anuleaza elementele situate la stanga diagonalei secundare utilizand
reflectori modificati. Notand reflectorii cu indicele liniei n care se pastreaza vectorii
Householder corespunzatori, putem scrie

Z = Zm . . . Z2 Z1 , (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,
utilizand procedura corespunzatoare mRF.
Aplicatiile procedurii de triangularizare RQ sunt perfect similare cu aplicatiile
descrise mai sus ale procedurii LQ.

3.6.3 Rezolvarea sistemelor subdeterminate


Revenim acum la problema (3.5) din sectiunea introductiva a acestui capitol. Fie
A Cmn si b Cn . Problema consta n determinarea solutiei normale a sistemului
Ax = b, i.e. a unui vector x Cn astfel ncat

kx k = min kxk. (3.113)


Ax=b

Conditiile de existenta si unicitate ale solutiei normale pot fi formulate astfel.

Teorema 3.4 Oricare ar fi b Rm , problema (3.113) are o solutie unica daca si


numai daca A este epica, i.e. m n si rangA = m.
In acest caz, solutia normala x a sistemului Ax = b poate fi scrisa n forma

x = A+ b, (3.114)

n care matricea A+ este prin definitie (pseudo)inversa normala a lui A si are


expresia
A+ = AT (AAT )1 . (3.115)

Demonstratia rezulta usor (cel putin n cazul real) utilizand metodele clasice de
minimizare cu restrictii (problema (3.113) este extrem de simpla). Noi vom proceda
direct, stabilind pe rand a) unicitatea si b) existenta globala a solutiei 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. multimea X a solutiilor sistemului Ax = b nu e vida. Desigur, n limbaj
geometric, X este planul (sau varietatea liniara) de ecuatie Ax = b. Mai precis,
3.6. SISTEME LINIARE SUBDETERMINATE 175

 N = KerA  planul
 
  Ax = b
 
 
  x
 x2   :

  
  
  
  
  

  
 - 

N 0  x = x1 

 
 
 
 
 

Fig. 3.7: Forma generala a solutiilor sistemului subdeterminat Ax = b

teorema 1.3 din capitolul 1 afirma ca X = x0 + KerA, unde x0 este o solutie par-
ticulara. In consecinta, conform lemei proiectiei ortogonale, solutia x a problemei
(3.113) coincide cu piciorul perpendicularei din origine pe planul X si ca atare este
unic determinata, vezi figura 3.7.
La fel ca n demonstratia teoremei 3.3, aceste consideratii geometrice pot fi
exprimate analitic. Planul X este paralel cu subspatiul N = KerA, deci x KerA
sau x N = ImAH , i.e. exista (cel putin) un y Cm astfel ncat x = AH y .
(In interpretare variationala, y este vectorul multiplicatorilor Lagrange asociati
restrictiilor egalitate Ax = b din (3.113).) In definitiv avem
    
In AH x 0
= , (3.117)
A 0 y b
de unde, eliminand x rezulta
AAH y = b, x = AH y . (3.118)
b) Existenta globala a lui x este asigurata, i.e. (3.116) are loc oricare ar fi
b Cm , daca si numai daca A este epica. In acest caz, matricea G = AAH este
pozitiv definita deci inversabila, iar (3.114) si (3.115) rezulta din (3.118).
Observatia 3.6 Sistemul extins (3.117) si sistemul normal (3.118) au o semnificatie
similara cu cea a sistemelor (3.83) si respectiv (3.84) din observatia anterioara. Si
aici gramianul G = AAH este o matrice rau conditionata, astfel ncat, n general,
calculul solutiei normale prin rezolvarea sistemului (3.118) nu este recomandabil.

Calculul solutiei normale


Rezolvarea problemei de minimizare cu restrictii (3.113) se poate face utilizand
informatiile furnizate de algoritmul de triangularizare ortogonala
AZ = [L 0], Z = Z1 Z2 . . . Zm , (3.119)
176 CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE

unde Z este unitara, iar L este inferior triunghiulara inversabila. Notam


 
u }m
x = Zu, u = (3.120)
u }n m

si scriem sistemul Ax = b sub forma echivalenta


 
u
[L 0] = b, (3.121)
u

Relatia 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 solutia normala x , consideram (3.120), unde Z este orto-
gonala, deci kZuk = kuk. Avem

kxk2 = kZuk2 = ku k2 + ku k2 ku k2 . (3.123)

Efectuand minimizarea n raport cu u , obtinem evident

u = 0. (3.124)

Prin urmare solutia normala este


 
(L )1 b
x =Z , (3.125)
0
sau
x = Z (L )1 b. (3.126)
Tinand seama de structura matricei Z din (3.119), se vede usor ca transformarea
(3.125) poate fi efectuata pe loc n x utilizand o procedura de tip MLQ. Schema de
calcul este urmatoarea

SLQ % Calculul solutiei normale x = A+ b


1. Se rezolva sistemul triunghiular L x(1 : m) = n
2. x(m + 1 : n) = 0
3. Pentru k = m : 1 : 1
x Zk x

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 . Utilizand iesirea algoritmului 3.9, se calculeaza
solutia normala x a sistemului liniar Ax = b. Se presupune ca matricea
A este epica.)
3.7. CONDITIONAREA PROBLEMELOR CMMP 177

% se rezolva sistemul inferior triunghiular (3.122)


1. Pentru k = 1 : m
Pk1
1. xk = (bk j=1 akj xj )/akk
% calculul solutiei normale
2. x(m + 1 : n) 0
3. Pentru k = m : 1 : 1
1. t = akk
2. akk = k 
Pn
3. j=k vkj xj /k
4. Pentru j = k : n
1. xj xj + vkj
5. akk = t

Calculul proiectiilor (pe ImAH si KerA), rezolvarea sistemelor subdeterminate


cu membru drept multiplu precum si calculul pseudoinversei normale A+ se fac
adaptand n mod corespunzator metodologia din sectiunea 3.5. Desigur, acum A+
este o inversa la dreapta a lui A, i.e. AA+ = I.

3.7 Conditionarea problemelor CMMP


In aceasta sectiune prezentam cateva rezultate privind sensibilitatea solutiilor pro-
blemelor de calcul abordate anterior n raport cu variatia datelor de intrare 21 .

3.7.1 Preliminarii
Consideram sistemul liniar
Ax = b, (3.127)
unde A Rmn este o matrice data, iar b Rn este un vector arbitrar. Notam
r = rangA si presupunem ca matricea A este de rang maxim, i.e. r = s, unde
s = min(m, n) 22 . In consecinta, conform teoremelor 3.5 si 3.6, sistemul (3.127) are
o solutie n sens CMMP unica
x = A+ b, (3.128)
unde matricea A+ are expresii diferite dupa cum m n sau m n.
Avand n vedere concizia expunerii, n cele ce urmeaza vom adopta o terminolo-
gie precum si notatii cat mai uniforme. Vom spune ca A+ este inversa (n sens
21 Deoarece 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.
22 O proprietate P definita pe Rmn se numeste tipica daca este generica si structural stabila,

adica are loc aproape peste tot (n afara unei varietati algebrice) si se conserva oricare ar fi
micile variatii ale (elementelor) matricei considerate.
De exemplu, n cazul m = n, proprietatea de inversabilitate este generica (are loc peste tot
n afara varietatii definite de ecuatia detA = 0) si structural stabila (daca detA 6= 0, atunci
det(A + E) 6= 0, oricare ar fi perturbatia 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 PATRATE

CMMP a) matricei A si vom defini numarul de conditionare (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
def
kAk = max kAxk. (3.130)
kxk=1

Desigur, n cazul m = n avem A+ = A1 , deci (3.129) se reduce la definitia cunos-


cuta a lui (A) din sectiunea 2.7 23 .
Direct din (3.129) si (3.130),
(i) daca matricea A este ortogonala, atunci (A) = 1, i.e. matricele ortogonale
sunt perfect conditionate la inversare.
Pe de alta parte, norma euclidiana precum si norma spectrala sunt ortogonal
invariante, deci
(ii) transformarile ortogonale nu modifica conditionarea datelor, i.e. avem
(A) = (QT AZ), oricare ar fi matricele ortogonale Q si Z.
Proprietatile remarcabile (i) si (ii) explica folosirea intensiva a matricelor or-
togonale n calculul numeric. (Aceleasi proprietati de invarianta apar si n norma
Frobenius k kF , care este si ea ortogonal invarianta. Numarul de conditionare
evaluat folosind aceasta norma este notat F (A).)
Revenim acum la sistemul (3.127), n care prin ipoteza matricea A este de rang
maxim si facem urmatoarele precizari.
In cazul m n matricea A este monica, iar A+ = (AT A)1 AT este epica.
Evident, avem A+ A = In , deci A+ este o inversa la stanga a lui A, dar AA+ 6= Im ,
mai precis P1 = AA+ si P2 = Im P1 sunt proiectorii (ortogonali) pe subspatiile
S = ImA si respectiv S = KerA. De asemenea, este adevarat ca kAk2 = kAT Ak
sau, pe scurt,
kAk2 = kGk, (3.131)
unde matricea simetrica G = AT A este gramianul (coloanelor) matricei A.
In 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 si P2 = Im P1 sunt proiectorii pe subspatiile N = ImAT si respectiv
N = KerA. De asemenea, are loc relatia (3.131), unde matricea G = AAT este
gramianul (liniilor) matricei A.
Putem acum formula concis primele noastre rezultate.

Propozitia 3.5 Daca A Rmn este de rang maxim, atunci

(G) = 2 (A), (3.132)

unde G este gramianul matricei A.


23 Acolo am evaluat (A) utilizand normele k k sau k k , relativ mai simple. In acelasi scop,
1
aici vom utiliza norma spectrala, care, dupa cum stim din capitolul 1, este ortogonal invarianta.
Anticipand 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 conditionare este
(A) = 1 /r 1, unde r este cea mai mica valoare singulara nenula a lui A.
3.7. CONDITIONAREA PROBLEMELOR CMMP 179

Demonstratie. Notam cu H gramianul lui A+ . In cazul m n, A+ este epica,


deci
H = A+ (A+ )T = (AT A)1 AT A(AT A)1 = (AT A)1 = G1 .
Aplicand acum (3.131) lui A+ gasim

kA+ k2 = kHk = kG1 k, (3.133)

deci (3.132) rezulta direct, utilizand definitia lui (G) precum si relatiile (3.131) si
(3.133). Cazul m n este similar; desigur acum H = (A+ )T A+ .

Propozitia 3.6 Daca A Rmn este de rang maxim, atunci matricea A = A + E


are aceeasi proprietate, oricare ar fi perturbatia E astfel ncat

kEk < 1 (A)kAk. (3.134)

Demonstratie. In 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 si A sunt echivalente (la stanga), deci A rezulta monica o data cu A. In cazul
m n scriem A = A(In + A+ E) si rationam similar.
Propozitia 3.5 arata ca sistemele normale (3.84) si (3.118) 24 sunt mult mai
rau conditionate decat sistemul dat (3.127) si explica de ce determinarea solutiei
x prin rezolvarea acestor sisteme este ntotdeauna contraindicata din punct de
vedere numeric. Propozitia 3.6 arata ca solutia x este robusta, i.e. continua sa
fie bine definita chiar daca matricea A a sistemului (3.127) sufera perturbatii E
relativ importante. Conform relatiei (3.134), aceste perturbatii 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 perturbatiile admisibile n A sunt numai de ordinul kEk < 103 .
Concluziile obtinute mai sus subliniaza importanta deosebita a numarului de
conditionare (A) pentru caracterizarea din punct de vedere numeric a problemei
(3.127). In continuare vom preciza aceste concluzii, efectuand analiza cantitativa a
sensibilitatii (locale) a solutiei x n raport cu perturbatiile datelor. In consecinta,
vom considera sistemul perturbat

(A + E)x = b + f, (3.135)

n care perturbatiile E si f sunt relativ mici n raport cu nivelul maxim admisibil,


e.g. avem
kEk A kAk, kf k b kbk, (3.136)
unde tipic A si b sunt de acelasi ordin de marime si, n orice caz, A < 1 (A).
Notand cu x solutia n sens CMMP a sistemului perturbat (3.136), problema
de analiza a sensibilitatii consta pe scurt n a evalua diferenta x = x x .
24 A caror matrice este evident G = AT A, respectiv G = AAT .
180 CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE

b  >

 r = b2





 b1 = Ax

Fig. 3.8: este unghiul dintre vectorul b si subspatiul ImA

3.7.2 Sensibilitatea pseudosolutiei


Consideram sistemul (3.127) n care presupunem ca A Rmn este monica, iar
AT b 6= 0.

Teorema 3.5 Sensibilitatea relativa a pseudosolutiei x 6= 0 a sistemului (3.127)


n raport cu perturbatiile (3.136) poate fi evaluata acoperitor prin
kx x k (A) b
(2 (A)tg + (A))A + , (3.137)
kx k cos
unde are semnificatia din figura 3.8.

Demonstratie. Conform teoremei 3.5, pseudosolutia x = x + x a sistemului


perturbat (3.135) satisface relatia
(AT + E T )(A + E)(x + x) = (AT + E T )(b + f ).

Desfacand parantezele si tinand seama ca AT Ax = AT b, obtinem

(AT E + E T A)x + (AT A)x = E T b + AT f + . . . ,


unde + . . . indica termeni neglijabili n prima aproximatie, ca produs a doua can-
titati mici. Prin urmare putem scrie
x = (AT A)1 E T (b Ax ) A+ Ex + A+ f, (3.138)

unde evident AT A = G este gramianul lui A, iar b Ax = r este reziduul de


norma minima. Evaluand n norma ambii membri ai relatiei (3.138), gasim
kxk kG1 k kEk kr k + kA+ k kEk kx k + kA+ k kf k,

de unde, tinand seama de relatiile (3.133) si (3.136), rezulta imediat


 
kxk + 2 2 kr k kbk
kA k kAk + kA k kAk A + kA+ k kAk
+
b .
kx k kAk kx k kAk kx k

In sfarsit, avem b1 = Ax , deci kb1 k kAk kx k, iar din figura 3.8 se vede ca
kr k kbk 1
= tg, = .
kb1 k kb1 k cos
3.7. CONDITIONAREA PROBLEMELOR CMMP 181

Demonstratia este terminata.

Observatia 3.7 Putem obtine usor o evaluare mai fina decat (3.137), tinand
seama ca n (3.138) perturbatiile E si f actioneaza diferentiat. In acest scop scriem
E = E1 + E2 , unde E = P E, = 1 : 2, sunt proiectiile (coloanelor) lui
E pe subspatiile S si respectiv S . Avem A+ E = A+ E1 (deoarece A+ P2 =
= A+ (I AA+ ) = 0) precum si E T r = E2T r (deoarece r = P2 b iar P2 este
proiector ortogonal, i.e. P22 = P2 si P2T = P2 ). In mod similar avem f = f1 + f2 ,
unde f = P f , = 1 : 2, iar A+ f = A+ f1 . Prin urmare, relatia (3.138) poate fi
scrisa sub forma echivalenta, dar mai precisa

x = G1 E2T r A+ E1 x + A+ f1 , (3.139)

unde E1 , E2 si f1 apar acum ca perturbatii independente, iar f2 a disparut. Prin


urmare, daca n locul relatiei (3.136) consideram ca pentru = 1 : 2 avem

kP Ek A b
kAk, kP f k kbk, (3.140)

atunci concluzia teoremei este


 
kx x k A b1
(A) 1 + + 2 (A) tg A
2. (3.141)
kx k cos
Mai departe vom utiliza relatiile (3.137) si (3.141) sub forma relativ mai simpla
kx x k
1 (A) + 2 2 (A)tg, (3.142)
kx k
unde, n acord cu (3.140), , = 1 : 2, reprezinta estimari (n norma spectrala)
ale perturbatiilor datelor A si b la nivelul subspatiilor S si S .
In esenta, relatia (3.142) arata ca, din punctul de vedere al sensibilitatii pseudo-
solutiei x , exista doua clase distincte de probleme CMMP, avand caracteristici
numerice net diferite.
Prima clasa contine problemele CMMP aproape compatibile, la care reziduul
r este mic n norma fata de membrul drept b, deci 0. In acest caz, al doilea
termen din (3.142) este neglijabil, deci practic sensibilitatea locala a pseudosolutiei
x este proportionala cu numarul de conditionare (A) al lui A. In particular, daca
m = n, atunci avem exact r = 0 si = 0, iar (3.142) se reduce la relatia (2.47)
stabilita n sectiunea 2.7. Concluziile de acolo se aplica evident si aici.
A doua clasa de probleme CMMP corespunde sistemelor (3.127) cu reziduu
de norma minima r mare n norma fata de membrul drept b 25 . In acest caz al
doilea termen din (3.142) este evident dominant, deci practic sensibilitatea locala
a pseudosolutiei x este proportionala cu patratul numarului de conditionare (A).
Aceste probleme, specific de tip CMMP, sunt considerabil mai dificile din punct de
vedere numeric decat cele din prima clasa si necesita luarea unor masuri speciale
de precautie (vezi sectiunea urmatoare).
25 Aceasta situatie poate fi usor detectata n practica calculand kbk si = kr k, vezi comentariile

la algoritmul 3.8. Subliniem ca n acest caz sensibilitatea pseudosolutiei x depinde nu numai de


matricea A a sistemului (3.127) ci si de membrul drept b (prin intermediul lui ).
182 CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE

In orice caz, relatia (3.142) subliniaza ca elementul determinant n stabilirea


sensibilitatii pseudosolutiei este numarul de conditionare (A), de aceea n practica
se recomanda insistent evaluarea lui (A) n cursul procesului de calcul. Desigur,
daca am efectuat triangularizarea ortogonala QT A = R a lui A, atunci, beneficiind
de invarianta ortogonala a normei spectrale, avem

(A) = (R), (3.143)

deci (A) poate fi estimat extrem de simplu, utilizand estimatorul de conditie pentru
matrice triunghiulare descris n sectiunea 2.7. Acelasi rezultat poate fi obtinut
aplicand procedura de triangularizare ortogonala cu pivotarea coloanelor, descrisa
n sectiunea 3.9. In acest caz, o (sub)evaluare a lui (A) poate fi obtinuta prin simpla
inspectie, 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, reexaminand formula fundamentala (3.142), este util sa retinem
ca influenta perturbatiilor E si f asupra pseudosolutiei x depinde de localizarea
acestora n raport cu subspatiile S si S . De exemplu, daca ImE ImA, atunci evi-
dent E2 = P2 E = 0, deci sensibilitatea lui x este dictata de (A) (iar nu de 2 (A)),
chiar daca reziduul r este important. In unele aplicatii, aceste circumstante pot fi
realizate printr-o filtrare prealabila adecvata a datelor de intrare, dar discutarea
acestor tehnici depaseste scopurile expunerii de fata. In alta ordine de idei, este
evident ca perturbatiile inerente datorate erorilor de rotunjire actioneaza n gen-
eral aleator si n orice caz nediferentiat n raport cu S si S , astfel ncat de fapt
dependenta de 2 (A) nu poate fi niciodata eliminata complet n situatiile practice,
indiferent de masurile de precautie luate.
In rezumat, sensibilitatea pseudosolutiei este determinata de conditionarea ma-
tricei A precum si de clasa a problemei CMMP considerate. De asemenea, ea
depinde de tipul structural al perturbatiilor considerate.

3.7.3 Sensibilitatea solutiei normale


Consideram sistemul (3.127) n care presupunem ca matricea A Rmn este epica,
iar b 6= 0.

Teorema 3.6 Sensibilitatea relativa a solutiei normale x 6= 0 a sistemului (3.127)


poate fi evaluata acoperitor prin

kx x k
1 (A), unde 1 = 2A + b . (3.144)
kx k

Demonstratie. Procedam ca n demonstratia teoremei 3.5. Conform cu teorema


3.4, solutia normala x = x + x a sistemului perturbat (3.135) satisface relatiile

(A + E)(x + x) = b + f, x + x = (AT + E T )(y + y),

unde Ax = b si x = AT y . Prin urmare, n prima aproximatie avem

Ax + Ex = f, x = AT y + E T y .
3.8. STABILITATEA ALGORITMILOR DE TRIANGULARIZARE 183

Eliminand y ntre aceste relatii si notand A+ = AT (AAT )1 , obtinem

x = (In A+ A)E T y A+ Ex + A+ f, (3.145)

unde y = (AAT )1 b = (A+ )T x , iar n paranteza din membrul drept recunoastem


proiectorul ortogonal P2 = In A+ A pe subspatiul N = KerA. Deoarece P2 este o
matrice simetrica cu valorile proprii 0 si 1, avem kP2 k = 1. In consecinta, evaluand
n norma ambii membri ai relatiei (3.145), gasim 26

kxk kEk kA+ k kx k + kA+ k kEk kx k + kA+ k kf k,

de unde, tinand seama de (3.136), rezulta (3.145).

Observatia 3.8 Considerand proiectiile E = EP , = 1 : 2, ale liniilor matricei


E pe subspatiile N si N si procedand ca n observatia 3.7, putem si aici scrie mai
precis
x = (In A+ A)E2T y A+ E1 x + A+ f. (3.146)

Avand nsa n vedere structura extrem de simpla a relatiei (3.145), utilitatea prac-
tica a acestei precizari este aici limitata.

In esenta, relatia (3.144) spune ca sensibilitatea locala a solutiei normale x este


proportionala cu numarul de conditionare (A) al matricei A.
Avand n vedere ca, n ipoteza teoremei 3.6, sistemele subdeterminate sunt
ntotdeauna compatibile, relatia (3.144) poate fi considerata caz particular al relatiei
(3.137), n care r = 0, deci = 0. Observam totusi ca demonstratiile celor doua
teoreme se bazeaza pe relatii diferite, iar coeficientul 2 din (3.144) nu apare n
(3.137). Prin urmare, apelul la (3.137) ofera mai curand o confirmare intuitiva,
decat o justificare ferma a relatiei (3.144). In rest, implicatiile practice ale relatiei
(3.144) sunt similare cu cele cunoscute din sectiunea 2.7.
In rezumat, sensibilitatea solutiei normale este dictata numai de conditionarea
matricei A. In acest sens, problema rezolvarii sistemelor subdeterminate este relativ
simpla.

3.8 Stabilitatea numerica a algoritmilor de


triangularizare ortogonala
In aceasta sectiune oferim cateva informatii de baza privind stabilitatea numerica a
algoritmilor de calcul prezentati anterior n acest capitol. De asemenea, sprijiniti pe
analiza sensibilitatii problemelor de calcul din sectiunea precedenta, facem cateva
consideratii privind acuratetea solutiilor calculate si descriem o procedura de ra-
finare iterativa a acestor solutii.
26 Amintim ca, n norma spectrala avem ntotdeauna kAk = kAT k.
184 CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE

3.8.1 Stabilitatea numerica a algoritmilor fundamentali


In general, analiza stabilitatii numerice a algoritmilor de calcul din acest capitol nu
prezinta dificultati de esenta, ci numai obstacole pur tehnice. In principiu, ncepand
cu algoritmii de baza 3.1-3.4, ntregul proces de calcul se reduce la o succesiune
determinata de operatii aritmetice elementare, inclusiv extrageri de radical, pentru
care erorile de rotunjire sunt de ordinul M 10t , unde t este precizia de lucru,
adica numarul de cifre zecimale semnificative, vezi capitolul 0. Prin urmare, efectul
(cumulat al) acestor erori asupra rezultatelor obtinute n urma unui proces de calcul
liniar poate fi apreciat utilizand parametrul generic

cm = cmM , (3.147)

unde m reprezinta numarul de operatii efectuate, iar c este o constanta de ordinul


unitatii, n general diferita de la caz la caz. Aici este esential sa subliniem ca ntreaga
tehnica de analiza inversa a erorilor consta n a converti acest efect direct al erorilor
de rotunjire asupra solutiei calculate n perturbatii echivalente la nivelul datelor.
In consecinta, algoritmul analizat este (invers) numeric stabil daca solutia calculata
coincide cu solutia exacta a problemei de calcul cu datele putin perturbate 27 .
Rezultatele analizei pot fi sintetizate astfel. (Pentru demonstratii si rezultate
aditionale, 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 kuk 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 = U1 x. Vectorul transformat y, calculat de procedura RF, utilizand un
vector Householder aproximativ u de tip (3.148) satisface relatia

y = (U1 + U )x, unde kU kF cm . (3.149)

In continuare, utilizand rezultatele fundamentale 1 si 2 , se poate demonstra


afirmatia urmatoare. (Vezi schema de calcul MQR din sectiunea 3.4.)
3 Fie A Rmn o matrice data, QT = Us . . . U2 U1 o secventa de s reflectori
definiti de vectorii Householder uk , k = 1 : s, iar B = QT A. Matricea transformata
B, calculata utilizand schema de calcul
1. B = A
2. Pentru k = 1 : s
1. B Uk B
cu vectori Householder aproximativi uk de tip (3.148), satisface relatia

B = QT (A + A), unde kAkF scm kAkF . (3.150)


27 Peste tot mai departe notiunea de stabilitate numerica a unui algoritm concret va fi nteleasa

n acest sens, deci este implicit legata de o anume problema de calcul precizata.
3.8. STABILITATEA ALGORITMILOR DE TRIANGULARIZARE 185

Pe scurt, algoritmul de aplicare a unei secvente de reflectori este (invers) numeric


stabil, iar perturbatia echivalenta relativa la nivelul matricei date A este
A = scm , (3.151)
unde s este lungimea secventei, m este ordinul reflectorilor iar c este o constanta de
ordinul unitatii.
Pe baza proprietatii 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 ncat
QT (A + A) = R, unde kAkF ncm kAkF . (3.152)
O afirmatie similara este valabila relativ la algoritmul LQ de triangularizare ortog-
onala la dreapta precum si la toti algoritmii de calcul derivati (cum ar fi GQR,
MQR, SQR etc.). Subliniem ca, n ultima instanta, toate procedurile mentionate
sunt de tip 3 , unde parametrii s = min(m, n) si m iau valori adecvate. In consecinta
5 Procedurile SQR (respectiv CMMP) si SLQ, care calculeaza pseudosolutia si
respectiv solutia normala x a sistemului Ax = b, sunt numeric stabile. Perturbatiile
echivalente relative la nivelul datelor sunt de ordinul
(SQR) A,b = ncm , (m n), (3.153)
si respectiv
(SLQ) A,b = mcn , (m n). (3.154)
Rezultate asemanatoare sunt valabile pentru procedurile de calcul ce utilizeaza
reflectori bloc, respectiv rotatii 28 .

3.8.2 Acuratetea solutiilor calculate


Vom combina acum rezultatele privind sensibilitatea solutiilor de tip CMMP, sta-
bilite n sectiunea 3.7, cu estimarile perturbatiilor echivalente la nivelul datelor, in-
troduse de procedurile de calcul analizate mai sus. In acest fel vom obtine evaluari a
priori ale acuratetei solutiilor calculate, i.e. ale abaterilor relative ale acestor solutii
fata de solutiile exacte.
Consideram problema calculului pseudosolutiei x a sistemului (3.127), n care
matricea A este monica. Daca rezolvam aceasta problema utilizand procedura
SQR, bazata pe algoritmul de triangularizare ortogonala QR, atunci n virtutea
stabilitatii numerice inverse a acestei proceduri, pseudosolutia calculata x coin-
cide cu solutia exacta a problemei (3.127) cu datele perturbate n acord cu (3.153).
Aplicand teorema 3.5 (vezi relatiile (3.137)) conchidem ca
kx x k
1 (A) + 2 2 (A)tg, (3.155)
kx k
28 In cazul secventelor de rotatii disjuncte, estimarea (3.151) este independenta de lungimea

secventei [IX].
186 CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE

unde (
not b
1
1 = A + cos = ncm (1 + cos ),
not A (3.156)
2 = tg = ncm tg.
Relatia (3.155) arata ca n final acuratetea solutiei calculate x depinde atat de
conditionarea (A) si clasa ale problemei CMMP considerate, cat si de nivelul
erorilor , = 1 : 2, introduse de algoritmul folosit pentru rezolvarea ei. Conform
relatiilor (3.155) si (3.136), acest nivel este determinat de dimensiunile m, n ale
problemei precum si de precizia de lucru M continuta implicit de parametrul generic
cm (vezi (3.147)).
In general, evaluarile de tip (3.155), (3.156) sunt extrem de acoperitoare, dar
totodata au marele merit de a sublinia ca n situatiile dificile (care, dupa cum am
vazut, pot fi detectate relativ usor n practica) sunt necesare actiuni suplimentare
(vizand e.g. lucrul n dubla precizie, rafinarea iterativa a solutiei calculate x etc.),
chiar daca aceasta se obtine utilizand un algoritm numeric stabil cum este SQR.
Consideram acum problema, relativ mai simpla, a calculului solutiei normale
x a sistemului (3.127), n care matricea A este epica. Conform relatiilor (3.154) si
(3.144), solutia normala calculata x satisface o relatie de forma

kx x k
1 (A), (3.157)
kx k

unde
not
1 = 2A + b = mcm . (3.158)
Mentionam ca, n practica, acuratetea solutiei calculate n acest mod se dovedeste
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
sectiunea 2.8, scalarea acestui sistem consta n nlocuirea sa cu sistemul echivalent

D1 AD2 x = D1 b, (3.159)

n care D1 si 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 = D2 x. Prin urmare D2 nu altereaza pseudosolutia n sens
CMMP a sistemului considerat, mai precis daca x este pseudosolutia sistemului
scalat, atunci pseudosolutia sistemului initial poate fi recuperata utilizand relatia
x = D2 x .
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 si deci
a pseudosolutiei corespunzatoare. Intr-adevar, notand cu r = D1 b D1 Ax reziduul
sistemului scalat, avem r = D1 r, deci
not
krk2 = rT Sr = krk2S , S = D1T 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 numeste problema CMMP ponderata, iar
rezolvarea ei se face aplicand sistemului scalat tehnicile de calcul expuse ante-
rior. Subliniem ca pseudosolutia x astfel obtinuta nu coincide cu pseudosolutia
x a problemei CMMP n norma standard (corespunzatoare alegerii D1 = Im ).
In consecinta, scalarea pe linii n problemele CMMP la care se doreste calculul
pseudosolutiei 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 semnificatie statistica precisa.
In problemele care privesc rezolvarea n sens CMMP a sistemelor subdetermi-
nate Ax = b, n care matricea A este epica, situatia se inverseaza. Matricea D1
realizeaza o simpla scalare (pe linii) a sistemului de restrictii Ax = b si ca atare este
permisa ntotdeauna. Din contra, matricea D2 modifica norma din Rn considerata
la definirea solutiei normale, mai precis
not
kxk2 = xT T x = kxk2T , T = D2T D21 ,
de aceea scalarea pe coloane a sistemelor subdeterminate la care se doreste calculul
solutiei normale n raport cu norma standard este interzisa.
Din punctul de vedere al calculului numeric, alegerea matricelor de scalare D1 ,
D2 urmareste echilibrarea sistemului n sensul uniformizarii nivelului de eroare
n elementele matricei A. In acest scop se recomanda evaluarea erorilor initiale
E = [ij ] care afecteaza elementele lui A precum si determinarea matricelor D1 , D2
astfel ncat elementele matricei scalate D1 ED2 sa aiba acelasi ordin de marime .
(Daca matricea A este cunoscuta exact, atunci se poate lua ij = M aij .) Pentru
detalii vezi [XIII].

3.8.4 Rafinarea iterativa a solutiei CMMP


Consideram din nou problema CMMP (3.127), n care matricea A este monica.
Pentru simplitate, n continuare omitem indicele superior , notand solutiile n sens
CMMP x si x cu x si respectiv x.
Presupunem ca am obtinut solutia aproximativa x, utilizand procedura CMMP,
bazata pe algoritmul de triangularizare ortogonala
 
R1
A QT A = , QT = Un . . . U2 U1 . (3.160)
0

In general, problema rafinarii iterative a solutiei aproximative x consta n con-


structia recurenta a unui sir xk , k = 0, 1, 2, . . ., convergent (n precizia de lucru)
catre solutia exacta x a problemei de calcul considerate.
In cazul m = n, stim din sectiunea 2.8 ca un pas al procesului de rafinare se
desfasoara conform urmatoarei scheme de principiu. (Pentru simplitate, omitem
indicele de iterare k.)
% Se da x. Se determina aproximatia urmatoare x+ .
1. Se calculeaza reziduul r = b Ax
2. Se determina corectia x rezolvand sistemul Ax = r
3. Se actualizeaza aproximatia x x+ = x + x
188 CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE

In cazul m > n, schema de mai sus este, n principiu, aplicabila ca atare sistemu-
lui (3.127), dar ea se dovedeste eficienta numai daca acest sistem este aproape com-
patibil, i.e. 0 (vezi discutia din sectiunea 3.7.2). In caz contrar, influenta rezidu-
ului asupra solutiei este determinanta (n acord cu relatiile (3.137) si (3.138)), deci
rafinarea iterativa trebuie sa se faca corectand simultan evolutia ambelor marimi.
Altfel spus, n problemele specific CMMP, cu reziduu mare, schema de corectie
prezentata mai sus trebuie aplicata nu sistemului dat (3.127), ci sistemului extins
(3.83).
In consecinta, presupunand data o solutie aproximativa (x, r) a sistemului extins,
n primul rand vom calcula reziduul corespunzator
      
s b Im A r
= , (3.161)
t 0 AT 0 x
iar apoi vom determina corectiile r si x rezolvand sistemul
    
Im A r s
= . (3.162)
AT 0 x t

Desigur, n acest scop vom folosi triangularizarea ortogonala (3.160) a matricei A,


deja calculata n urma aplicarii procedurii CMMP, iar solutia (r, x) va fi obtinuta
n locul membrului drept (s, t).
Pentru a vedea cum este posibil acest lucru, consideram prima ecuatie (3.162),
i.e. r + Ax = s, pe care o premultiplicam cu QT , vezi (3.160). Notand
QT r = z, efectuand pe loc n s transformarea

s QT s (3.163)

si utilizand pentru vectorii z si s partitii adecvate, putem scrie


     
z1 R1 s1
+ x = ,
z2 0 s2
de unde deducem imediat

R1 x = s1 z1 , z 2 = s2 . (3.164)

In continuare, pentru a determina z1 si x, consideram a doua ecuatie (3.148),


i.e. AT r = t. Aici avem r = Qz, iar din (3.160) rezulta AT Q = [R1T 0], deci

R1T z1 = t. (3.165)

Acum este clar ca dezideratele formulate mai sus relativ la rezolvarea sistemului
extins (3.162) pot fi realizate procedand n ordinea (3.163), (3.165), (3.164), dupa
care r rezulta utilizand relatia
 
z1
r = Q . (3.166)
z2

In 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 aproximatia 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 = RT t
5. s1 s1 z1
6. t x = R1 s1
7. s1 = z1
8. s r = Qs
% se actualizeaza aproximatia
9. r r+ = r + r
10. x x+ = x + x

Implementarea schemei se face de regula lucrand n precizie mixta. Reziduul


(s, t) se calculeaza n precizie dubla, apoi se rotunjeste la precizia de lucru n care se
fac restul calculelor. Conditia de oprire a algoritmului este kxk , krk cM ,
sau efectuarea unui numar maxim de iteratii. Practic, schema e utila atunci cand
problema nu este prea rau conditionata. Pentru amanunte consultati [?].

3.9 Descompunerea ortogonala completa


Procedurile de triangularizare ortogonala prezentate n sectiunile anterioare con-
stituie instrumente eficiente si 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 semnificatia obisnuita s = min(m, n).) In aceasta
sectiune vom considera cazul general r s si vom descrie un set de proceduri (di-
recte), capabile sa determine rangul efectiv al matricei A n prezenta erorilor de
rotunjire si sa utilizeze aceasta informatie.
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 influenteaza decisiv si ireversibil ntregul
proces de calcul ulterior. Avand n vedere reducerea riscurile mentionate, actual-
mente se considera ca cel mai sigur instrument de determinare a rangului este des-
compunerea valorilor singulare (DVS), care va fi prezentata pe larg n capitolul 5.
(Constructia acestei descompuneri are la baza tehnici iterative de determinare a va-
lorilor 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 si ca atare se aplica n situatiile n care simplitatea
primeaza iar deciziile de rang nu sunt critice. In esenta, procedura se desfasoara n
trei etape.
In prima etapa are loc triangularizarea ortogonala a matricei date A, utilizand
o strategie adecvata de pivotare (permutare) a coloanelor, cu scopul de a evidentia
190 CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE

n coltul dreapta-jos al factorului triunghiular R partea neglijabila, corespunzatoare


eventualului defect de rang.
In a doua etapa are loc determinarea rangului prin trunchierea lui R, adica
prin identificarea si eliminarea partii 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 initiale cu care elementele matricei A
au fost calculate sau determinate experimental si reprezentate n calculator precum
si (ii) erorilor de rotunjire comise pe parcursul procesului de calcul. Prin urmare,
n realitate, este ntotdeauna necesara corectarea fortata a rezultatului calculat R
si tocmai acest lucru se face prin trunchierea mentionata. Desigur, n acest scop
este necesar un criteriu de decizie, care n principiu este formulat de utilizator n
functie de situatia concreta precum si de obiectivele urmarite prin calcul. Indicatii
mai precise vor fi date la momentul potrivit.
In a treia etapa (n anumite situatii, facultativa) matricea superior trapezoidala
ramasa dupa trunchierea lui R este adusa la forma superior triunghiulara printr-o
procedura de tip RQ (vezi sectiunea 3.6.2).
Trecem acum la descrierea succinta a etapelor procedurii de triangularizare com-
pleta, dupa care vom prezenta cateva aplicatii 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
si o matrice de permutare astfel ncat matricea

QH A = R (3.167)

este superior triunghiulara, iar pentru fiecare k = 1 : s sunt satisfacute conditiile


min(j,m)
X
|rkk |2 |rij |2 , j = k + 1 : n. (3.168)
i=k

In consecinta, |r11 | |r22 | . . . |rss |, i.e. elementele diagonale ale matricei R


sunt ordonate descrescator.

Relatia (3.167) afirma ca matricele A si R sunt ortogonal echivalente, n par-


ticular au acelasi rang. Prin urmare, daca A este de rang r s, atunci n mod
necesar rkk = 0, k = r + 1 : s, deci n virtutea relatiilor (3.168) ultimele m r linii
ale lui R sunt nule. In consecinta,

Corolar 3.1 Dupa o permutare convenabila a coloanelor sale, orice matrice


A Cmn de rang r este echivalenta (la stanga) cu o matrice superior trapezoidala,
i.e.  
H T
Q A = , (3.169)
0
unde T = R(1 : r, :), iar blocul lider T (:, 1 : r) este inversabil. In consecinta, primele
r coloane ale matricei A sunt independente.
3.9. DESCOMPUNEREA ORTOGONALA COMPLETA 191

Avand n vedere ca situatia din corolar nu poate fi realizata exact, n continuare


ne vom concentra atentia asupra conditiilor (3.168). Problema determinarii rangului
va fi discutata ulterior.
Demonstratia teoremei 3.7. Procedura de triangularizare ortogonala cu pivotare
are s etape. Fie A1 = A. Vom determina matricea unitara

QH = QH H H
s . . . Q2 Q1 (3.170)

procedand ca n sectiunea 3.3 (vezi demonstratia teoremei 3.1), dar actionand la


fiecare etapa k = 1 : s asupra unei matrice Ak k , cu coloanele permutate n scopul
satisfacerii conditiei (3.168).
Tinand seama de invarianta normei euclidiene n raport cu transformarile unitare
(3.170), aceasta nseamna ca la etapa k, n pozitia 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, notand
(k)
j = kAk (k : m, j)k, j = k : n, (3.171)

strategia de pivotare a coloanelor este


(k) (k)
1. Se determina cel mai mic jk astfel ncat jk = maxj=k:n j
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 si
aplicarea sa coloanelor urmatoare. Astfel se obtine tabloul transformat

Ak+1 = QH
k (Ak k ), (3.172)

asupra caruia se va opera similar la etapa urmatoare. In final, matricea R = As+1


este superior triunghiulara si satisface (3.168).
Avand n vedere implementarea eficienta a procedurii descrise, tinem seama de
invarianta normelor (3.171) n raport cu transformarile (3.172) si constatam ca
(k) (k+1) 2 (k+1) 2
(j )2 = (j ) + |akj | . (3.173)

Prin urmare, calculul repetat si costisitor al normelor (3.171) poate fi evitat, uti-
lizand n schimb relatiile de actualizare relativ simple 29
v
u !2
u (k+1)
(k+1) (k) u |akj |
j = j t 1 (k)
. (3.174)
j

Intregul proces de calcul se desfasoara pe loc n tabloul A conform urmatoarei


scheme de principiu.
29 Subliniem ca desi scrierea (3.174) evita depasirile superioare, totusi utilizarea ei nu este lipsita
(k+1) (k)
de riscuri daca |akj | si j au valori apropiate. In acest caz, pentru siguranta se recomanda
(k+1)
recalcularea normelor j , j = k + 1 : n, vezi [XIII, pag. 9.17].
192 CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE

QRP % Schema de triangularizare ortogonala cu pivotarea coloanelor


% initializarea 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 H
k a.. (Qk A)ik = 0, i = k + 1 : m
H
4. A Qk A
% actualizarea
r normelor
 2
|a |
5. j j 1 kjj , pentru j = k + 1 : n

In ceea ce priveste permutarile de coloane, ele pot fi memorate ntr-un vector


astfel ncat k = jk , k = 1 : s, la fel ca n procedurile de eliminare gaussiana din
capitolul 2. Pentru a putea identifica direct pozitia n tabloul initial A a coloanelor
matricei (permutate) A, aici vom aplica o conventie de memorare diferita. Vec-
torul este initializat cu indicii coloanelor lui A n ordinea naturala, iar continutul
sau este actualizat dupa fiecare permutare de coloane efectuata. Forma finala a
procedurii de triangularizare se obtine aplicand algoritmul 3.5 la pasii 2.3, 2.4 si
plasand instructiunea 2.5 la locul potrivit.

Algoritmul 3.11 (QRP) (Se da A Cmn . Se efectueaza tri-


angularizarea ortogonala cu pivotarea coloanelor a matricei A utilizand
reflectori hermitici, i.e. QH A = R, vezi algoritmul 3.5. Permutarile
de coloane se memoreaza n vectorul astfel ncat 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 % initializarea 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
akk
1. Daca akk 6= 0 atunci
|akk |
2. aik uik = aik /, pentru i = k : m
3. k ukk = 1 + akk
4. Pentru j = P k+1:n
m
1. = ( i=k uik aij ) /k
2. aij aij + uik , pentru i = k : m
% actualizarea
r normei
 2
|a |
3. j j 1 kjj
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 aplicatiile algoritmului 3.11 sunt similare cu
aplicatiile algoritmului 3.5. In plus, dupa cum am mentionat n sectiunea anterioara,
ordonarea coloanelor lui A n acord cu (3.168) permite estimarea rapida (ca ordin de
marime) a numarului de conditionare 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 constructia unor baze pentru subspatiile N = KerA
si N = ImAH precum si determinarea unei solutii particulare a sistemului Ax = b
se poate face aproape prin inspectie.
De aceea, mai departe ne vom concentra atentia asupra cazului general n care
matricea A nu este de rang maxim.

3.9.2 Determinarea rangului


Aplicam procedura QRP matricei date A si consideram matricea superior triun-
ghiulara calculata
QH A = R. (3.175)
30 Tipic, aceasta relatie furnizeaza o subevaluare de 23 ori mai mica decat valoarea adevarata

(A).
194 CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE

In cazul m n, R are structura



R1 R12 }r
not
R = 0 R2 } nr
0 0 } mn (3.176)
|{z} |{z}
r nr

n care elementele satisfac relatiile (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, punand
R2 = 0, (3.177)
n acord cu (3.169), n care evident matricea superior trapezoidala ramasa este

T = [R1 R12 ]. (3.178)

In 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] pre-
supune scalarea prealabila a liniilor si coloanelor lui A astfel ncat erorile la nivel
de element sa fie de acelasi ordin de marime (vezi sectiunea 3.8.3). In acest caz,
prin definitie, rangul numeric (sau efectiv) al lui A este primul ntreg k 1 : s astfel
ncat
|rk+1,k+1 | |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 conditionare al matricei A (de rang r s) poate fi estimat
ca fiind
|r11 |
(A) = < 1 . (3.180)
|rrr |
Relatia (3.169) are cateva aplicatii specifice extrem de importante. Notand
Q = Q(:, 1 : r) primele r coloane ale matricei unitare Q = Q1 Q2 . . . Qs , din (3.169)
obtinem imediat factorizarea QR cu pivotarea coloanelor

A = Q T. (3.181)

In virtutea structurii lui T , matricea Q constituie o baza ortogonala a subspa-


tiului 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 selectia
31 Realizarea practica a acestei coincidente este conditionata de alegerea judicioasa a tolerantei

. (Valoarea = 0 nu este interzisa, dar de obicei conduce la decizia r = s.) Pe de alta parte,
gradul de siguranta al deciziei de rang poate fi nesatisfacator, mai ales daca modulele rkk scad
uniform, fara sa nregistreze vreun salt semnificativ. In asemenea situatii dificile se recomanda
determinarea rangului pe baza descompunerii valorilor singulare, vezi capitolul 5.
3.9. DESCOMPUNEREA ORTOGONALA COMPLETA 195

unui set de r coloane liniar independente ale matricei initiale A, iar Q constituie
versiunea lor ortogonalizata. In mod corespunzator, matricea Q = Q(:, r + 1 : n)
constituie o baza ortogonala a subspatiului 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 mentiunea ca
acumularea transformarilor ortogonale este identica cu aceea din algoritmul GQR.)
Pe de alta parte, considerand gramianul G = AH A si tinand seama de (3.181),
n care matricea Q are coloanele ortogonale, deducem

T G = T H T. (3.182)

Aceasta relatie se numeste factorizare Cholesky cu pivotare si afirma ca, dupa


o permutare congruenta a liniilor si 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 .
In multe situatii constatarile de mai sus prezinta un interes intrinsec. Avand 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 si Z = V H Rnn precum si o matrice de permutare astfel
ncat matricea
QH AZ = S (3.183)
are structura  
S 0 }r
S =
0 0 } mr (3.184)
|{z} |{z}
r nr
rr
n care blocul lider S C este superior triunghiular inversabil.

Demonstratia este simpla. Consideram matricea superior trapezoidala T din


(3.178) si o aducem la forma triunghiulara utilizand transformari unitare la dreapta.
Aceasta etapa se numeste compresie si poate fi efectuata n multe feluri. De exem-
plu, aplicand o procedura de tip RQ (vezi sectiunea 3.6.2), obtinem

T Z = [S1 0], (3.185)

n care S1 este superior triunghiulara iar

Z = Zr . . . Z2 Z1 . (3.186)

Acum relatiile (3.183) si (3.184) rezulta aplicand Z la dreapta n (3.169) si tinand


not
seama de (3.185). Evident, matricea S = S1 rezulta inversabila, transformarile
32 Subliniem ca aceasta factorizare poate fi calculata direct, aplicand matricei G procedura

CHOLDC din LINPACK [XIII].


196 CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE

unitare Q si Z au expresiile (3.168) si 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, ncepand cu ultima, iar
anularea elementelor are n vedere conservarea structurii preexistente de zerouri.
In consecinta, reflectorii Zk sunt de tipul celor din exemplul 3.5, dar aici vectorii
Householder sunt notati vk , iar partea lor esentiala vkj , j = m+1 : n, este memorata
pe pozitiile 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 utilizand o
procedura de tip RQ cu reflectori hermitici, i.e. A AZ = [R 0], unde
Z = Zm . . . Z2 Z1 , iar R rezulta superior triunghiulara. Partea esentiala
vkj , j = m + 1 : n, a vectorilor Householder se memoreaza pe pozitiile
corespunzatoare A(k, m + 1 : n) din tabloul A. La aplicarea ulterioara
a transformarilor se tine seama ca vkk = k , k = 1 : m.)
1. Pentru k = m : 1 : 1
1. k = 0
 Pn 1/2
1. = |akk |2 + j=m+1 |akj |2
2. Daca 6= 0
1. Daca akk 6= 0 atunci |aakk kk |

2. akj vkj = akj /, pentru j = k, m + 1 : n
3. k vkk = 1 + akk
4. Pentru i =1 : k 1 
Pn
1. = aik vkk + j=m+1 aij vkj /k
2. aij aij + vkj , pentru j = k, m + 1 : n
5. akk =

Comentarii. In cazul real, algoritmul cere 2m2 (n m) operatii. Modul de apel


este [A, ] = TZRQ(A).
In sinteza ntregii expuneri de pana acum, procedura de triangularizare ortogo-
nala completa, corespunzatoare relatiilor (3.183) si (3.184), este urmatoarea.

QRX % Procedura de triangularizare ortogonala completa a matri-


cei A Cmn ; este o toleranta data, utilizata la deter-
minarea rangului.
% triangularizarea ortogonala cu pivotarea coloanelor
1. [A, , ] = QRP(A)
3.9. DESCOMPUNEREA ORTOGONALA COMPLETA 197

% trunchierea si determinarea rangului


2. k = 1
at timp k s si |akk | > |a11 |
3. C^
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, ). Subliniem ca toata informatia


despre transformarile unitare Q si Z, generate la pasii 1 si 5, este memorata (extrem
de compact) n tabloul A.

3.9.4 Descompunerea ortogonala completa


Pentru a facilita expunerea, notam X = Z si scriem relatiile (3.183) si (3.184) sub
forma  
S 0
A=Q XH. (3.187)
0 0
Partitionand Q si X conform cu S, obtinem

A = Q S X H , (3.188)

unde matricele Q = Q(:, 1 : r) si X = X(:, 1 : r) au coloanele ortogonale, iar S


este superior triunghiulara inversabila de ordin r = rangA s.
Relatia (3.188) constituie descompunerea ortogonala completa a matricei
A Cmn si reprezinta, n cazul general r s = min(m, n), echivalentul fac-
torizarilor QR si LQ (sau RQ), specifice matricelor de rang maxim. Subliniem ca,
desi descompunerea (3.188) este relativ elementara si are un evident caracter proce-
dural, totusi ea constituie un instrument pretios de rezolvare a numeroase probleme
de calcul, n general inabordabile prin metode clasice, de tip Cholesky sau Gram-
Schmidt. In plus, performantele numerice ale algoritmilor bazati pe aceasta de-
scompunere sunt apropiate de performantele algoritmilor similari, derivati pe baza
descompunerii valorilor singulare din capitolul 5.
Aplicatiile descompunerii ortogonale complete sunt extrem de variate (vezi pro-
blemele 3.613.63, precum si capitolul 5). Ne vom multumi aici sa mentionam ca,
la fel ca n sectiunile 3.4 si 3.6.2, matricele Q si Q = Q(:, r + 1 : m) constituie
baze ortogonale pentru subspatiile descompunerii Cm = ImA KerAH , iar ma-
tricele X si 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 PATRATE

CMMP, pe scurt CMMPX, consta n determinarea pseudosolutiei normale a sis-


temului Ax = b, i.e. a unui vector x Cn astfel ncat

kx k = min kxk, (3.189)


xX

unde X este multimea pseudosolutiilor 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 solutie unica


x Cn . Pseudosolutia normala a sistemului Ax = b poate fi scrisa sub forma

x = A+ b, (3.190)

unde, prin definitie, matricea A+ Cnm este pseudoinversa normala (sau Moore-
Penrose) a lui A.

Demonstratie. Conform partii a) a teoremei 3.3, sistemul Ax = b are ntotdeauna


pseudosolutii care satisfac sistemul Ax = b1 , unde b1 S = ImA, vezi (3.82).
Conform partii a) a teoremei 3.4, acest sistem are ntotdeauna o solutie normala
unica x N = ImAH . Altfel spus, restrictia lui A la N , vazuta ca aplicatie
liniara A de la N la S este inversabila. Inversa A1 : S N , prelungita cu 0
pe S , constituie pseudoinversa A+ a lui A.
Pseudosolutia normala x a sistemului Ax = b, poate fi determinata utilizand
informatia furnizata de procedura de triangularizare ortogonala completa
 
S 0
QH AZ = , (3.191)
0 0

n care matricele Q si Z sunt unitare, iar S este superior triunghiulara inversabila


de ordin r = rangA. Aplicand transformarea QH ambilor membri ai sistemului si
notand    
H d u
Q b= , x = Z , (3.192)
d u
obtinem sistemul ortogonal echivalent
    
S 0 u d
= . (3.193)
0 0 u d
La fel ca n sectiunea 3.5.1, pentru a determina pseudosolutiile consideram
reziduul  
H d S u
Q r= , (3.194)
d
n care matricea Q este unitara, deci minimul normei krk = kQH rk se atinge pentru
S u = d . In continuare, la fel ca n sectiunea 3.6.3, din (3.192), n care matricea
Z este unitara, rezulta u = 0. Prin urmare, pseudosolutia normala a sistemului
Ax = b este unic determinata prin relatia
 
(S )1 d
x = Z , (3.195)
0
3.10. RUTINE LAPACK SI MATLAB 199

sau  
(S )1 0
x = Z QH b, (3.196)
0 0
din care expresia pseudoinversei A+ este evidenta.
Exploatand forma factorizata a transformarilor unitare QH si Z, schema de
calcul al pseudosolutiei normale se stabileste imediat.

SQRX % Calculul pseudosolutiei normale x = A+ b


1. Pentru k = 1 : s
1. b = QH k b
2. Se rezolva sistemul triunghiular S x(1 : r) = b(1 : r) % r = rangA
3. x(r + 1 : n) = 0
4. Pentru k = 1 : r
x Zk x
5. x x

Detalierea procedurii de permutare, necesare la pasul 5 pentru plasarea compo-


nentelor lui x pe pozitiile naturale, precum si completarea schemei SQRX n scopul
obtinerii reziduului de norma minima r = b Ax sau a vectorului de cea mai
buna aproximatie b = Ax sunt propuse cititorului ca exercitii.

3.10 Rutine LAPACK si MATLAB


Primele implementari profesionale si de larga circulatie ale procedurilor de triangu-
larizare ortogonala au fost rutinele xQRDC si xQRSL din LINPACK, care corespund
(ca organizare si tip de reflectori) procedurilor QRP (algoritmul 3.11) si CMMP din
sectiunile 3.9 si, respectiv, 3.5.
In LAPACK procedurile de calcul sunt mai diversificate.
Pentru fiecare dintre cele 4 scheme de triangularizare standard zz = (QR, QL,
LQ sau RQ) 33 exista cate trei rutine de calcul, care efectueaza triangularizarea
propriu-zisa, acumularea si aplicarea transformarilor; numele rutinelor se obtin
adaugand literele F, G si respectiv M la combinatia 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 si cores-
pund versiunilor la nivel de bloc ale procedurilor CQR, GCQR, respectiv MCQR
din sectiunile 3.3 si 3.4. (Amintim ca n LAPACK se opereaza cu reflectori n scrierea
Q1 = I uuH , vezi sectiunea 3.2.) Numele celorlalte rutine se formeaza analog.
Pentru calculul descompunerii ortogonale complete din sectiunea 3.9 se utilizeaza
rutinele xGEQPF si xTZRQF, care corespund schemelor QRP, respectiv TZRQ din text.
Rezolvarea problemelor de tip CMMP de rang maxim, relativ la sistemele Ax = b
sau AH x = b se efectueaza cu driverul xGELS, iar pentru rezolvarea problemei gene-
rale CMMP se utilizeaza driverul expert xGELSX. (Primul reuneste versiunile bloc
ale schemelor SQR si SLQ din sectiunile 3.5 si 3.6, iar al doilea corespunde schemei
SQRX din sectiunea 3.9.) Un al treilea driver (xGELSS) utilizeaza descompunerea
valorilor singulare.
33 Pentru conventiile de compunere a numelor rutinelor LAPACK, a se revedea sectiunea 2.12.
200 CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE

In MATLAB, functia qr realizeaza triangularizarea ortogonala (n diverse ver-


siuni) a matricei A. Organizarea riguroasa a spatiului de memorie (specifica imple-
mentarilor LINPACK si LAPACK) este de regula sacrificata n favoarea unei ma-
nipulari mai comode de catre utilizator, dar performantele numerice sunt aceleasi.
Apelul R = qr(A) calculeaza factorul superior triunghiular R returnand totodata,
n partea inferioara a aceluiasi tablou, vectorii Householder corespunzatori reflec-
torilor Q1 , . . . , Qn . Prin [Q,R] = qr(A) se acumuleaza n plus Q, iar comanda
[Q,R,P] = qr(A) efectueaza triangularizarea ortogonala cu pivotare, formand to-
todata explicit matricele Q si P = .
Rezolvarea n sens CMMP a sistemului liniar Ax = b, cu m 6= n se face utilizand
comanda x=A\b, unde \ este operatorul de mpartire la stanga. (Daca m > n,
atunci x este pseudosolutia sistemului Ax = b, iar daca m < n, atunci x este o
solutie particulara a aceluiasi sistem.)

3.11 Probleme
P 3.1 In planul R2 se da vectorul x = [3 4]T si se considera reflectorul elementar
U = I 2uuT , unde kuk = 1.
a. Fie u = e1 . Sa se construiasca vectorul transformat y = U x si sa se reprezinte grafic
transformarea. Ce modificari apar daca u = e2 ?
b. Sa se determine vectorul Householder normat u astfel ncat U x = e1 . Cate solutii
exista ? Cat rezulta ?
c. Explicati de ce n calcule este mai bine sa presupunem ca vectorul u nu este neaparat
normat, introducand scalarul ca n (3.8). Rezolvati din nou punctul b aplicand algoritmul
3.2 si observand ca = . Justificati alegerea semnului lui recomandata n text. Ce
se ntampla daca x = [3 105 ] ?
d. Aplicati n acest caz simplu indicatiile de implementare ce nsotesc algoritmul
3.2. Aratati cum se face scalarea vectorului Householder u = [u1 u2 ]T astfel ncat sa
obtinem u1 = , respectiv u1 = 1. Verificati ca n fiecare caz are loc transformarea dorita
U x = e1 .
e. Ilustrati grafic diversele situatii semnificative ntalnite la punctele bd.
P 3.2 Rezolvati problema anterioara n R3 , considerand de exemplu vectorii x = [3 4 0]T
sau x = [3 4 5]T .
P 3.3 Fie x, y Rm doi vectori dati. In ce conditii exista un scalar si un reflector U
astfel ncat U x = y ? Ce restrictii apar daca impunem conditia suplimentara = 1 ?
Scrieti algoritmii de generare a reflectorului U n cele doua situatii.
P 3.4 Fie x Rm un vector dat, x 6= 0.
a. Sa se determine un reflector U astfel ncat prima coloana U e1 a lui U sa fie un
multiplu scalar de x, i.e. U e1 = x. Cat trebuie sa fie ? Cate solutii exista ?
b. Ce semnificatie geometrica au celelalte coloane U ej , j = 2 : m, ale lui U ?
c. Scrieti algoritmul de calcul al unei baze ortogonale B = [b1 b2 . . . bm ] a lui Rm ,
unde b1 = x este un vector dat, kxk = 1.
d. Reformulati 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. Precizati structura
lui U precum si structura bazei ortogonale B astfel obtinute. Ilustrati grafic constructia,
considerand m = 3, k = 2.
e. Reveniti la punctul a si ncercati sa determinati U astfel ncat U em = 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 independenti yj astfel ncat xT yj = 0,
j = 2 : m.
b. Cum se construiesc vectorii de la punctul a daca n plus ei trebuie sa fie ortogonali
doi cate doi, i.e. yiT yj = 0, i 6= j ? (Indicatie. Asimiland xT cu o matrice cu o singura
linie, problema consta n a construi o baza ortogonala a subspatiului N = KerxT , i.e. o
matrice Y Rm(m1) cu coloane ortogonale astfel ncat xT Y = 0. Se tine seama de
punctul b al problemei anterioare.)
c. Utilizand rezultatele de la punctele a si b, descrieti multimea tuturor solutiilor
ecuatiei xT y = 1. Ilustrati grafic situatia n cazul m = 2, considerand de exemplu x = e1
si x = [3 4]T .
d. Determinati solutia normala y a ecuatiei xT y = 1. Aratati ca y este de forma
x si precizati interpretarea geometrica
Pm a lui y . (Indicatie. Orice vector y Rm poate fi
scris unic sub forma y = x + i=2 i yi , unde yi , i = 2 : m, sunt vectorii de la punctele
a sau b.)
e. Scrieti algoritmii de calcul ce rezolva punctele b si d. Ce simplificari apar daca
kxk = 1 ?

P 3.6 Se dau doi vectori x, y Rm , x 6= 0.


a. Determinati pseudosolutia a sistemului x = y, astfel ncat norma euclidiana a
not
reziduului () = ky xk sa fie minima. Evaluati r = y x si ( ) = kr k.
b. Scrieti algoritmul de calcul corespunzator si gasiti interpretarea geometrica a vec-
torilor y = x si r .
c. Reluati punctul a presupunand ca xi = 0, i = 2 : m. Ce simplificari apar ? Puteti
realiza aceasta conditie aplicand o transformare adecvata T ambilor vectori dati x si y ?
Cum trebuie sa fie T pentru ca functia () sa ramana neschimbata (invarianta) ?

P 3.7 Considerati un reflector U = I 2uuT , kuk = 1.


a. Calculati detU .
b. Determinati valorile si vectorii proprii ai lui U .
c. Determinati n vectori vi , i = 1 : n, astfel ncat U vi = ei si U ei = vi , i = 1 : n.
Observatie. In general, se numeste reflector elementar (nu neaparat ortogonal) orice
matrice U Rmm de forma U = Im 2uv T , n care u, v Rm sunt doi vectori astfel
ncat v T u = 1. Multe dintre proprietatile reflectorilor (ortogonali) considerate mai sus se
pastreaza (sau se reformuleaza adecvat) n acest cadru mai general.

P 3.8 Aratati 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 spatiul vectorial Rm cu produsul scalar (x, y)S = y T Sx si norma euclidiana
kxk2S = (x, x)S . Doi vectori x, y Rm se numesc S-ortogonali daca (x, y)S = 0. Matricea
A se numeste S-simetrica daca (y, Ax)S = (Ay, x)S , x, y Rm , adica SA = AT S sau
A = S 1 AT S. Matricea U Rmm se numeste S-ortogonala daca pastreaza produsul
scalar (, )S , i.e. (U x, U y)S = (x, y)S , x, y Rm , adica U T SU = S.
a. Sa se arate ca orice matrice S-ortogonala este asemenea cu o matrice ortogo-
nala. Sa se deduca de aici ca, n general, dupa o transformare de coordonate convenabila,
proprietatile geometrice ale spatiului Rm dotat cu produsul scalar (, )S se reduc la pro-
prietatile euclidiene uzuale.
b. Sa se defineasca notiunea de S-reflector elementar si sa se studieze principalele
proprietati ale acestui tip de transformari. Cum se implementeaza avantajos algoritmii de
generare si aplicare a reflectorilor S-ortogonali ?
202 CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE

P 3.10 Pastram aceeasi terminologie ca n problema anterioara chiar daca matricea si-
metrica (inversabila) S este de semn nedefinit. In particular, fie S = J, unde

Ip 0
J= , p + q = m. (3.197)
0 Iq

Observatie. Spatiul Rm cu produsul scalar nedefinit (, )J se numeste spatiu pseu-


doeuclidian (sau spatiu hiperbolic) de signatura (p, q). Multimea vectorilor din Rm cu
proprietatea
p m
X X
kxk2J = 0 x2i x2i = 0 (3.198)
i=1 i=p+1

se numeste con izotrop 34 .


a. Fie x Rm un vector dat, iar U un J-reflector de forma

uuT J 1
U = Im , = kuk2J . (3.199)
2
Sa se scrie algoritmul de aplicare a transformarii x y = U x si sa se verifice prin calcul
direct ca kU xkJ = kxkJ .
b. Fie x Rm un vector dat. Sa se stabileasca n ce conditii exista un J-reflector de
forma (3.199) astfel ncat
U x = e1 , R {0} (3.200)
si sa se scrie algoritmul de generare a lui U . Discutie.
c. Fie S o matrice simetrica inversabila. Sa se stabileasca n ce conditii S admite
factorizari de forma S = RT JR sau S = LT JL, n care R si L sunt matrice superior,
respectiv inferior triunghiulare. Sa se scrie algoritmii de factorizare Cholesky cu semn,
corespunzatori celor doua relatii de mai sus.
d. Aratati ca daca exista doua matrice patrate A si B (nu neaparat triunghiulare)
astfel ncat S = AT JA = B T JB, atunci exista o matrice J-ortogonala Q astfel ncat
B = QA. Altfel spus, oricare doi factori cu semn ai lui S sunt J-ortogonal echivalenti.
P 3.11 In planul R2 se da vectorul x = [3 4]T si se considera rotatia plana P = P12 cu
parametrii c, s.
a. Fie c = 3/2, s = 1/2. Sa se calculeze vectorul transformat y = P x si sa se
reprezinte grafic transformarea.
b. Sa se determine c, s astfel ncat P x = re1 . Cate solutii exista ? Cat rezulta r ?
P 3.12 Fie x, y Rm doi vectori dati. In ce conditii exista un scalar si o rotatie Pki
astfel ncat Pki x = y ?
P 3.13 Fie P o rotatie plana. Calculati detP si determinati valorile si vectorii proprii ai
matricei P .
P 3.14 Fie x Rm un vector dat.
a. Scrieti algoritmii de generare a unei secvente de rotatii P astfel ncat P x = re1 .
Analizati diversele variante posibile.
b. Acelasi enunt, utilizand o grupare convenabila a rotatiilor n secvente de rotatii
disjuncte (vezi observatia 3.2).
P 3.15 Se da o matrice A Rmm . Sa se scrie algoritmii de aplicare a transformarilor
A P A si A AP T , unde P sunt secventele de rotatii generate n problema 3.14.
34 Cel mai simplu exemplu este planul Lobacevski R2 cu p = 1, q = 1. Spatiul Minkovsky din

teoria relativitatii este R4 cu p = 1, q = 3. In acest caz (3.198) se numeste con de lumina, iar
transformarile J-ortogonale formeaza grupul Poincare al lui R4 .
3.11. PROBLEME 203

P 3.16 O matrice P de forma



c s
P = , c2 s2 = 1
s c

se numeste rotatie hiperbolica (plana) 35 .


a. Aratati ca P este o transformare J-ortogonala, i.e. P T JP = J. Cat este J ?
b. Fie x R2 un vector dat. In ce conditii exista o rotatie hiperbolica astfel ncat
P x = re1 , respectiv P x = re2 ? Scrieti algoritmul de generare a lui P si discutati
aplicabilitatea lui practica 36 .
P 3.17 In planul C2 se da vectorul x = [1 + i 2 + i]T .
a. Sa se determine un reflector complex Q astfel ncat Qx = e1 .
b. Sa se determine o rotatie complexa P astfel ncat P x = re1 .
P 3.18 Formulati si rezolvati versiunile complexe ale problemelor anterioare 3.33.10 si
3.123.14, semnaland n fiecare caz modificarile de notatie si de terminologie introduse.
P 3.19 Demonstrati ca orice matrice ortogonala se poate exprima ca produs de reflectori
elementari.

R
P 3.20 Scrieti algoritmul de triangularizare ortogonala a matricei A+ = , n care
C
(mn)n
blocul R este superior triunghiular de ordin n, iar C R este un bloc oarecare.
Evaluati numarul de operatii. Precizati 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 procedati daca blocul lider R al matricei A+ din problema precedenta este
inferior triunghiular ? Scrieti algoritmul corespunzator.
P 3.22 Scrieti algoritmul de triangularizare cu rotatii a unei matrice A Rmn , utilizand
diverse strategii de anulare a elementelor subdiagonale (vezi problema 3.14).
P 3.23 Scrieti algoritmul de triangularizare cu rotatii a unei matrice A Rnn a) superior
Hessenberg, b) tridiagonale.
In al doilea caz, presupuneti ca A este memorata mpachetat (prin trei vectori). Ce
dificultati apar n ceea ce priveste memorarea informatiei generate de algoritm ?
P 3.24 Fie R Rnn o matrice superior triunghiulara, iar b, c Rn doi vectori. Scrieti
un algoritm eficient de triangularizare a matricei A+ = R + bcT , i.e. QT A+ = R+ , unde
R+ este superior triunghiulara.
Fie k 1 : n 1. Cum procedati daca ultimele n k elemente ale vectorului b sunt
nule ?
P 3.25 Cum procedati n problema precedenta daca A+ = R + BC T , unde B, C Rnp ,
cu p > 1 ?
P 3.26 Se considera relatia P+ = AT P A + C T C, unde A Rnn si C Rln sunt doua
matrice date, iar P = RT R este o matrice pozitiv definita al carei factor Cholesky superior
triunghiular R este cunoscut. Scrieti o procedura (de tip radacina patrata) care calculeaza
factorul Cholesky R+ al matricei P+ , fara a forma explicit P+ .
35 Denumirea se justifica observand ca putem ntotdeauna considera c = ch, s = sh.
36 Observati ca rotatia hiperbolica este o transformare simetrica.
204 CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE

P 3.27 Ce simplificari apar n problema precedenta daca A este superior Hessenberg, iar
C = cT este un vector linie avand numai ultima componenta nenula ?
P 3.28 Fie A Rmn monica, cu m > n. Utilizand informatia furnizata de algoritmul de
triangularizare cu reflectori Un . . . U2 U1 A = R, scrieti algoritmul de acumulare a primelor
p coloane ale matricei Q = U1 U2 . . . Un , unde p 1 : m este un ntreg dat. Calculati
numarul de operatii n functie de p. Cum memorati rezultatul ? Discutati cazul n care
matricea A nu este neaparat monica.
P 3.29 Aceeasi problema ca mai sus, utilizand algoritmul de triangularizare ortogonala
cu rotatii.
P 3.30 Fie Q matricea din problema 3.28. Precizati care dintre schemele urmatoare
realizeaza mai eficient acumularea lui Q si de ce.

1. Q = Im 1. Q = Im
2. Pentru k = 1 : n 2. Pentru k = n : 1 : 1
1. Q QUk 1. Q Uk Q

P 3.31 a. Construiti reprezentarile WY si W2 T ale reflectorilor bloc Q = U1 U2 . . . Unb ,


considerand relatia de recurenta
1. Q = Unb
2. Pentru k = nb 1 : 1 : 1
1. Q Uk Q

Ce diferente apar fata de solutia adoptata n sectiunea 3.4.3 ?


b. Scrieti reprezentarea W2 T sub forma Q = I W S 1 W T , unde S 1 = T . Precizati
structura si scrieti procedura de constructie a matricei S. Care dintre cele doua forme de
reprezentare este preferabila si de ce ?
P 3.32 Fie A Rmn (m > n) o matrice superior Hessenberg. Prezentati algoritmi
pentru:
a. calculul factorizarii QR a matricei A;
b. rezolvarea sistemului liniar supradeterminat Ax = b, cu b Rm dat.
c. Cum procedati daca A este banda de latime inferioara p > 1 ?
Utilizati reflectori si rotatii. Comparati cele doua versiuni.
P 3.33 Aceeasi problema, cand A Rmn este inferior Hessenberg, repectiv banda de
latime 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 . Prezentati algoritmi
pentru
a. calculul factorizarii QR a matricei A+ ;
b. rezolvarea sistemului A+ x+ = b, cu b Rm dat.
c. Stabiliti o relatie ntre pseudosolutiile x+ si x ale sistemelor A+ x+ = b, respectiv
Ax = b.
d. Considerati cazul general A+ = [A Y ], cu Y Rmp .
P 3.35 Fie AT Rmn , m n, o matrice de rang n a carei factorizare QR este cunoscuta.
z
Fie A+ = , cu z Rn dat. Aratati ca coloanele lui A+ sunt liniar independente.
A
Prezentati algoritmi pentru
a. calculul factorizarii QR a matricei A+ .
3.11. PROBLEME 205



b. rezolvarea sistemului A+ x+ = b+ , unde b+ = , cu b Rm si R dati.
b
c. Stabiliti o relatie ntre pseudosolutiile x+ si x ale sistemelor A+ x+ = b+ , respectiv
Ax = b.
Z
d. Considerati cazul general A+ = , cu Z Rpn .
A

P 3.36 Scrieti algoritmi eficienti de aplicare a transformarilor B QT B si B QB,


unde Q este matricea din problema 3.28 iar B Rmp este superior sau inferior triun-
ghiulara. Evaluati numarul de operatii n cele patru situatii.

P 3.37 Aceeasi problema ca mai sus, pentru transformarile la dreapta, B BQ si


B BQT .

P 3.38 Fie B Rmp o matrice data, iar Q = Q1 Q2 . . . Qn matricea din problema 3.28.
Scrieti algoritmul de aplicare a transformarilor B QT B si B QB la nivel de bloc.

P 3.39 Aceeasi problema ca mai sus, pentru transformarile la dreapta, B BQ si


B BQT .

P 3.40 In conditiile problemei 3.28, scrieti un algoritm pentru calculul vectorului y = Ax,
cu x Rn dat. (N.B. Matricea A a fost distrusa n urma executiei algoritmului de
triangularizare.)

P 3.41 In conditiile problemei 3.28, scrieti algoritmi pentru


a. rezolvarea sistemului AT Ax = c, cu c Rn dat;
b. calculul inversei H = (AT A)1 ;
c. calculul scalarului = cT (AT A)1 c, c Rn .

P 3.42 Scrieti procedurile GQL si MQL de acumulare si aplicare a transformarilor gene-


rate de algoritmul de triangularizare QL.

P 3.43 Scrieti algoritmul de triangularizare ortogonala QL la nivel de bloc.

P 3.44 Fie A Rmn o matrice monica. Scrieti procedurile de ortogonalizare GS si


MGS care calculeaza factorizarea A = Q L , unde Q are coloanele ortogonale, iar L
este inferior triunghiulara.

P 3.45 Rezolvati problemele 3.24-3.26 nlocuind peste tot matricele superior triunghiulare
R si R+ cu matrice inferior triunghiulare. Reformulati n acelasi spirit problema 3.27.

P 3.46 a. Sa se scrie un algoritm eficient de rezolvare a sistemului

(G + C T C)x+ = c + C T y,

n care G = RT R este o matrice simetrica pozitiv definita al carei factor Cholesky superior
triunghiular R este cunoscut, iar matricea C Rln precum si vectorii c Rn , y Rl
sunt dati. Stabiliti o relatie ntre x+ si solutia x a sistemului Gx = c.
b. Aceeasi 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. Scrieti algoritmul de calcul al pseudosolutiei sistemului


Ax = b cu b Rm dat, utilizand informatia furnizata de algoritmul de triangularizare
ortogonala QL.
206 CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE

P 3.48 Scrieti algoritmul de triangularizare ortogonala la dreapta a matricei A+ = [L B],


n care blocul L este inferior triunghiular de ordin m iar B Rm(nm) este o matrice
oarecare. Precizati 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.
Observatie. Evident, aceasta problema reprezinta o simpla formulare prin dualitate a
problemei 3.20. Propunem cititorului ca, procedand n mod similar, sa obtina si sa rezolve
dualele problemelor 3.213.47 (sau ale celor mai interesante dintre acestea), comentand n
fiecare caz paralelismele observate.
P 3.49 Fie A Rmn o matrice de rang maxim.
a. Discutati existenta si unicitatea inverselor la stanga (dreapta) ale matricei A. Puteti
descrie printr-o formula multimea acestor inverse ?
b. Evaluati expresiile kIm AA+ kF si 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 dati.
Utilizand informatia furnizata de algoritmul de triangularizare ortogonala QT A = R,
scrieti o procedura care rezolva (n sensul CMMP) ambele sisteme Ax = b si AT x = c.
b. Aceeasi problema ca mai sus, daca A este epica, utilizand algoritmul de triangu-
larizare la dreapta AZ = L.
c. Aceleasi probleme ca mai sus, relativ la sistemele cu membru drept multiplu
AX = B si AT Y = C, n care B si C sunt doua matrice date, dimensionate corespunzator.

P 3.51 Fie A Rmn cu m 6= n. Scrieti algoritmii de triangularizare prin eliminare


gaussiana M A = U , respectiv AN = L si indicati cateva aplicatii. Ce strategii de pivotare
recomandati n fiecare caz ?

Im A R
P 3.52 Fie H = , cu A = Q monica (Q Cmm , R Rnn ).
AH 0 0
a. Aratati ca factorizarea cvasi-diagonala a matricei H este de forma T HT H = J,
unde
J1
2 3
6 .. 7
1 1

J =6
6 . 7,
7
Jk = , k = 1 : n.
4 Jn 5 1 0
Imn
b. Aratati ca H este inversabila si
P2 (A+ )H

1
H = ,
A+ G1

unde G = AH A, A+ = (AH A)1 AH , P2 = I AA +


. CatH este
detH ?
In A
c. Formulati rezultatele a si b pentru H = , cu A epica.
A 0
n
P 3.53 Considerati functia patratica F : R R definita prin
1 T
F (x) = x Gx xT c,
2
unde G Rnn este o matrice simetrica pozitiv definita, iar c Rn .
a. Scrieti conditiile necesare de minim si aratati ca F are un punct de minim unic
x Rn care satisface sistemul Gx = c. (Indicatie: x F
i
= 0, i = 1 : n.)
not
b. Scrieti un algoritm care calculeaza x si = F (x ).
3.11. PROBLEME 207

P 3.54 Fie A Rmn , b Rm . De asemenea, fie S Rmm si T Rnn doua matrice


pozitiv definite. Considerati functia patratica
F (x) = kb Axk2S + kxk2T ,
unde notatiile sunt cele din problema 3.9.
a. Aratati ca F are un punct de minim unic x si scrieti un algoritm care calculeaza
x si = F (x ).

b. Analizati separat problema CMMP ponderata, n care F (x) = kb Axk2S . (Aici S


se numeste traditional matrice pondere.)
P 3.55 Considerati problema de minimizare cu restrictii liniare
F (x ) = min F (x),
Ax=b

unde F este functia patratica din problema 3.53, matricea A Rmn este epica, iar
b Rm .
a. Scrieti conditiile necesare de minim utilizand metoda multiplicatorilor Lagrange.
Puteti arata ca problema considerata are solutie unica ? Analizati cazul general n care
matricea G nu este neaparat pozitiv definita.
b. Scrieti un algoritm care calculeaza x si = F (x ).
P 3.56 Fie A Rmn monica, B Rmp epica si b Rm . Rezolvati problema CMMP
generalizata
ky k2 = min kyk2 .
Ax+By=b
not
Observatie. Daca p = m si B = Im , atunci evident y = r = b Ax, deci se obtine
problema CMMP din sectiunea 3.5.
P 3.57 Fie A Rmn monica, C Rln epica si b Rm , d Rl . Rezolvati problema
CMMP cu restrictii liniare
kb Ax k = min kb Axk.
Cx=d

P 3.58 Considerati vectorul de permutari produs de algoritmul 3.11 si fie x Rn .


Scrieti procedurile de permutare pe loc x x si x T x.
P 3.59 Se dau doi vectori b Rm si c Rn . Scrieti algoritmi de determinare a proiectiilor
ortogonale ale acestor vectori pe subspatiile descompunerilor ortogonale
Rm = ImA KerAT si respectiv Rn = ImAT KerA, utilizand informatia furnizata
de procedura de triangularizare ortogonala QRX.
P 3.60 a. Cu notatiile din sectiunea 3.9.5, aratati ca matricea
(S )1 0

not
X = A+ = Z QH
0 0

satisface conditiile (Moore-Penrose) 1 AXA = X, 2 XAX = X, 3 AX = (AX)H ,


4 XA = (XA)H .
b. Precizati ce forma iau aceste conditii daca A este monica (epica).
c. Demonstrati ca 5 (A+ )H = (AH )+ , 6 (A+ )+ A = A, 7 A+ = (AH A)+ AH ,
8 A+ = AH (AAH )+ .

d. Puteti indica o metoda de calcul al pseudoinversei unei matrice hermitice (vezi


proprietatile 7 si 8 ) fara a utiliza triangularizarea ortogonala completa ?
e. Tinand seama de forma factorizata a matricelor Q si Z, scrieti un algoritm pentru
calculul pseudoinversei A+ .
208 CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE

P 3.61 a. Aratati ca orice matrice A Cmn poate fi scrisa sub oricare din formele
(i) A = Q C, (ii) A = BV , unde Q are coloanele ortogonale, C este epica, respectiv B
este monica, iar V are liniile ortogonale.
b. Scrieti algoritmi pentru determinarea factorizarilor (i) si (ii).
c. Aratati ca A+ = C + (Q )H , respectiv A+ = (V )H B + .
d. Scrieti algoritmi pentru calculul pseudoinversei normale a sistemului Ax = b, cu
b Rm dat, utilizand factorizarile (i) si (ii).
P 3.62 O matrice A Cmn se numeste (ad-hoc) pseudounitara (sau partial izometrica)
daca exista doua matrice cu coloane ortogonale U Cmr si V Cnr astfel ncat
A = UV H.
a. Ce structura au gramienii G1 = AH A si G2 = AAH ? Interpretare geometrica.
b. Aratati ca A+ = V U H .
c. Aratati ca o matrice A Cmn este pseudounitara daca si 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. Scrieti un algoritm de triangularizare ortogonala la dreapta cu pivotarea liniilor, i.e.
AZ = L, unde L rezulta inferior triunghiulara. Precizati strategia de pivotare utilizata.
b. Indicati cateva aplicatii posibile ale acestui algoritm si explicati de ce n practica
algoritmul QRP din sectiunea 3.9 este ntotdeauna suficient.
P 3.64 Fie A Rmn , B Rmp monice.
a. Explicati de ce n general matricea M = [A B] nu este monica. Aratati ca
ImM = ImA + ImB.
b. Efectuati
triangularizarea ortogonala completa a matricei M , i.e.
H S 0
Q M Z = , unde S este inversabila de ordin r = rangM . Ce semnificatie
0 0
geometrica au r si Q ?
c. Notam S = ImA, T =TImB. Utilizand rezultatele de la punctul b, precizati cum
poate fi verificata conditia S T = .
d. Idem, indicati o baza ortogonala pentru subspatiul (S + T ) .
e. Cum se schimba concluziile de la punctele bd daca matricele initiale nu sunt
neaparat monice ? 2 3 2 3
1 1 1
Pentru exemplificare, fie A = 4 0 5, B = 4 0 1 5. Cine sunt S, T si S + T ?
0 0 0

P 3.65 Fie A Rmn , C Rln epice.


A
a. Explicati de ce n general matricea N = nu este epica. Aratati ca
T C
KerN = KerA KerC.
b. Formulati prin dualitate si rezolvati punctele bd din problema precedenta.
c. Fie x Rn . Scrieti algoritmul T de calcul al proiectiilor ortogonale ale lui x pe
subspatiile N si N , unde N = KerA KerC.
1 0 0
Pentru exemplificare, fie A = [1 0 0], C = . Cine sunt KerA, KerC si
T 1 1 0
KerA KerC ?

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