Professional Documents
Culture Documents
NUMERIC MATRICEAL.
ALGORITMI
FUNDAMENTALI
Bogdan Dumitrescu Corneliu Popeea Boris Jora
Partea I
Tuturor studenţilor, foşti, actuali sau viitori,
precum şi copiilor noştri
Cuvânt introductiv
Lucrarea de faţă, prima de o asemenea amploare ı̂n limba română, este con-
struită pe structura cursului de Calcul numeric, predat de autori la Facultatea
de Automatică şi Calculatoare a Universităţii Politehnica din Bucureşti. Lucrarea
expune, ı̂n manieră eminamente algoritmică, metodele de rezolvare a problemelor
fundamentale de calcul din algebra matriceală, care constituie primele şi, de cele
mai multe ori, principalele componente ale celor mai diverse aplicaţii din inginerie,
economie şi numeroase alte ramuri ale ştiinţei.
În afara studenţilor din facultăţile cu profil tehnic sau economic, lucrarea poate
fi utilă tuturor celor care, fie ei studenţi, cadre didactice, ingineri sau cercetători,
doresc să utilizeze cele mai moderne instrumente de calcul numeric matriceal. Pen-
tru ı̂nţelegerea noţiunilor prezentate, cititorul trebuie să posede cunoştinţe minime
de matematică, la nivelul celor dobândite ı̂n liceu sau ı̂n primul an de facultate.
Pentru orientare, fiecare capitol ı̂ncepe cu o trecere ı̂n revistă a bazelor matematice
ale problemelor de calcul studiate. De asemenea, cititorul ar trebui să fie capabil a
se exprima ı̂ntr-un limbaj de programare de nivel ı̂nalt; această condiţie nu e strict
necesară, dar constituie un avantaj, pentru că ı̂i permite să se concentreze asupra
ideilor şi nu a detaliilor de implementare ale acestora.
Cartea conţine 7 capitole, descrise ı̂n câteva cuvinte mai jos. La ı̂nceput se
află o bibliografie de bază, cuprinzând lucrări de largă utilizare, referite cu cifre
romane, care oferă o privire de perspectivă asupra ı̂ntregului domeniu. În final
se găseşte o a doua bibliografie, ı̂n general formată din articole (referite cu cifre
arabe) privind aspecte specifice ale problemelor tratate şi destinată cititorului care
doreşte să adâncească studiul dincolo de textul de faţă. Pentru facilitarea lecturii,
recomandăm consultarea listelor de notaţii şi de prescurtări uzuale, aflate câteva
pagini mai departe.
Capitolul 0, numerotat astfel pentru a sublinia caracterul său de iniţiere ı̂n dome-
niu, prezintă specificul calculului numeric şi justifică necesitatea existenţei cărţii de
faţă. Este vorba aici despre: reprezentarea numerelor reale ı̂n virgulă mobilă, pro-
prietăţile (uneori neaşteptate ale) operaţiilor cu astfel de numere precum şi meca-
nismele de apariţie inevitabilă a erorilor numerice. Este apoi considerată perechea
formată din problema de calcul şi algoritmul de rezolvare, relativ la care sunt defi-
ii
Autorii
iv
Bibliografie generală
• Pentru chestiuni teoretice de calcul matriceal:
[ 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)
Lista de notaţii
N – mulţimea numerelor naturale
Z – mulţimea numerelor ı̂ntregi
R – mulţimea numerelor reale
C – mulţimea numerelor complexe
• Vectori
ni : p : nf – vectorul cu elementele ı̂ntregi ni , ni + p, ni + 2p, . . . , nf ; dacă p = 1,
vectorul se scrie simplu ni : nf
Rn – spaţiul liniar n-dimensional al vectorilor (coloană) x cu n componente reale
xi ∈ R, i = 1 : n
Cn – spaţiul liniar n-dimensional al vectorilor (coloană) x cu n componente com-
plexe xi ∈ C, i = 1 : n
ek , k = 1 : n – baza standard a spaţiului liniar Rn , respectiv Cn
xi , x(i) – elementul vectorului x aflat ı̂n poziţia i
x(i1 : i2 ) – vectorul format din elementele din poziţiile 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 ȳi
Pn 2
kxk = (x, x)1/2 = ( i=1 |xi | )1/2 – norma euclidiană a vectorului x ∈ Rn
vi
P 1/p
kxkp = ( ni=1 |xi |p ) – p-normele vectorului n-dimensional x, p ≥ 1; ı̂n calcule se
utilizează ı̂n special kxk1 ,kxk2 = kxk şi kxk∞ = maxi=1:n |xi |
• Matrice
Rm×n – spaţiul liniar al matricelor cu m linii şi n coloane cu elemente reale aij ∈ R,
i = 1 : m, j = 1 : n
λ(A) – spectrul (de valori proprii) {λ1 (A), λ2 (A), . . . , λn (A)} al matricei A
σ(A) – mulţimea {σ1 (A), σ2 (A), . . . , σp (A)} a valorilor singulare ale matricei A
(A, B) = tr(B T A) (tr(B H A)) – produsul scalar a două matrice reale (complexe)
kAkp = maxkxkp =1 kAxkp – p-normele induse; ı̂n calcule se utilizează ı̂n special
Pm
norma kAk1 = maxP j=1:n i=1 |aij |, norma spectrală kAk2 = σ1 (A) şi norma
n
kAk∞ = maxi=1:m j=1 |aij |
• Transformări
SAT – transformare de echivalenţă (bilaterală) a matricei A ∈ Rm×n (S şi T sunt
matrice pătrate nesingulare; transformarea de echivalenţă conservă rangul, iar
dacă S, T sunt ortogonale, atunci conservă şi valorile singulare)
• Prescurtări
i.e. – (id est) adică
LU – factorizarea LU
PE – matrice de permutare elementară
QR – factorizarea QR
• Alfabetul grec
0 Concepte fundamentale 1
0.1 Reprezentarea ı̂n virgulă mobilă . . . . . . . . . . . . . . . . . . . . . 2
0.2 Aritmetica ı̂n virgulă mobilă . . . . . . . . . . . . . . . . . . . . . . . 7
0.3 Condiţionarea problemelor de calcul . . . . . . . . . . . . . . . . . . 10
0.4 Stabilitatea numerică a algoritmilor . . . . . . . . . . . . . . . . . . 12
0.5 Calităţile unui algoritm numeric . . . . . . . . . . . . . . . . . . . . 15
0.6 Implicaţiile arhitecturii calculatoarelor . . . . . . . . . . . . . . . . . 16
0.7 Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1 Algoritmi elementari 19
1.1 Vectori. Spaţiul vectorial Rn . . . . . . . . . . . . . . . . . . . . . . 19
1.2 Produs scalar. Norme. Ortogonalitate . . . . . . . . . . . . . . . . . 24
1.3 Matrice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
1.4 Înmulţirea 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 ecuaţii liniare . . . . . . . . . . . . . . . . . . . . . . . . . 49
1.10 Valori şi vectori proprii . . . . . . . . . . . . . . . . . . . . . . . . . . 59
1.11 Rutinele BLAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
1.12 Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
∆ = |x − x̂|.
• β ∈ N, β ≥ 2, baza de numeraţie;
Se ştie că orice număr x ∈ R poate fi scris unic sub forma unei secvenţe infinite
care nu se termină printr-o secvenţă infinită de cifre egale cu β − 1 şi ı̂n care ai ∈ C,
iar s este semnul, s ∈ {+, −}. Valoarea lui x este
n−1 ∞
!
X X
i −i
x=s ai β + a−i β . (0.2)
i=0 i=1
Convenim să eliminăm din scriere secvenţa infinită de zerouri finale, atunci când
este cazul. Să exemplificăm relaţiile (0.1) şi (0.2).
Exemplul 0.2 Numărul ı̂n baza 10
În ambele baze, reprezentările au un număr finit de cifre. În schimb, numărul
exprimat simplu ı̂n baza 10:
0.1 = 1 · 10−1
are o reprezentare de lungime infinită ı̂n baza 2 (verificaţi din nou egalitatea):
∞
X
0.0001100110011 . . . = (2−4 + 2−5 ) 2−4k .
k=0
0.99999 . . .
1.00000 . . .
0.11111 . . .
1.00000 . . .
Un bun compromis ı̂n satisfacerea acestor cerinţe este dat de aşa numitul Format
Virgulă Mobilă (FVM).
Definiţia 0.1 Un Format Virgulă Mobilă (FVM) este definit de trei ı̂ntregi (β, t, p),
cu următoarea semnificaţie:
β – baza de numeraţie (β ≥ 2);
t – precizia, adică numărul de cifre semnificative (”lungimea” mantisei);
p – numărul de cifre ale exponentului.
Un număr ı̂n virgulă mobilă este o pereche (f, e), unde
f = ±0.f1 f2 . . . ft , f1 6= 0, fi ∈ C
este un număr fracţionar cu semn (plus sau minus), normalizat (i.e. f1 6= 0), cu
t cifre, denumit mantisă, iar
e = ±e1 e2 . . . ep
este un ı̂ntreg cu semn, cu p cifre, numit exponent. Valoarea reală asociată număru-
lui ı̂n virgulă mobilă (f, e) este
x = f · βe.
β L−1 = m ≤ |x| ≤ M = β U (1 − β −t )
adică domeniul reprezentării ı̂n virgulă mobilă este intervalul R = [−M, M ]. De-
sigur, pentru majoritatea reprezentărilor pe calculator, β = 2 (se mai foloseşte, de
exemplu, β = 16 şi chiar β = 10).
Exemplul 0.3 Să considerăm FVM cu (β, t, p) = (2, 2, 1). Atunci L = −1, U = 1,
m = 2−2 = 0.2510 , M = 2(1 − 2−2 ) = 1.510 . Numerele reale care au o reprezentare
exactă ı̂n acest FVM sunt:
x1 = (−0.11, +1) = −1.510 x7 = (+0.10, −1) = 0.2510
x2 = (−0.10, +1) = −1.010 x8 = (+0.11, −1) = 0.37510
x3 = (−0.11, 0) = −0.7510 x9 = (+0.10, 0) = 0.510
x4 = (−0.10, 0) = −0.510 x10 = (+0.11, 0) = 0.7510
x5 = (−0.11, −1) = −0.37510 x11 = (+0.10, +1) = 1.010
x6 = (−0.10, −1) = −0.2510 x12 = (+0.11, +1) = 1.510
şi vor fi folosite pentru reprezentarea (aproximativă) a tuturor numerelor reale din
intervalul [−1.5, 1.5]. Reprezentarea geometrică a tuturor acestor numere pe axa
reală este prezentată ı̂n figura 0.1. Numerele cu reprezentare exactă ı̂n virgulă
mobilă sunt relativ uniform distribuite; mai precis, |xi − xi−1 | / |xi | are aproximativ
aceleaşi valori pentru orice i. ♦
Exemplul 0.4 Un FVM pe 32 biţi poate fi următorul: (β, t, p) = (2, 24, 7). Doi
biţi sunt atribuiţi reprezentării semnelor mantisei şi exponentului; deoarece primul
0.1. REPREZENTAREA ÎN VIRGULĂ MOBILĂ 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 virgulă mobilă 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 biţi)
6 mantisa (23+1 biţi) -
Fig. 0.2: Structura unui număr ı̂n virgulă mobilă, pentru (β, t, p) = (2, 24, 7)
bit al mantisei are ı̂ntotdeauna valoarea 1, semnul mantisei se memorează ı̂n locul
acestui bit, economisind astfel un bit al reprezentării. Un exemplu de număr ı̂n
virgulă mobilă ı̂n acest format este prezentat ı̂n figura 0.2.
Pentru acest FVM avem: L = −127, U = 127, m = 2−127 = (2−10 )13 23 ≈ 10−38 ,
M ≈ 1038 (putem aproxima 210 ≈ 103 ). Aceasta arată că FVM acoperă un domeniu
larg de numere, utilizând un număr relativ mic de cifre binare. Acest exemplu este
foarte apropiat de formatul standard IEEE pentru numere ı̂n virgulă mobilă ı̂n
simplă precizie.
În formatul din acest exemplu, numărul real 0.1 are mantisa
0.110011001100110011001100
şi exponentul 10000011 (−3 ı̂n baza 10; prima cifră 1 a exponentului reprezintă
semnul). Aşadar numărul 0.1 este reprezentat aproximativ (vezi exemplul 0.2). ♦
Definiţia 0.2 Dacă (β, t, p) este un FVM şi F este mulţimea definită ı̂n (0.3),
atunci o funcţie
f l : [−M, M ] → F
6 CAPITOLUL 0. CONCEPTE FUNDAMENTALE
x̂ = f l(x)
|x − f l(x)|
|x|
x = f · β e = ±0.f1 f2 . . . ft ft+1 . . . · β e =
= ±0.f1 f2 . . . ft · β e ± 0.ft+1 ft+2 . . . · β e−t =
= fˆ · β e + ĝ · β e−t ,
f l1 : [−M, M ] → F
Exemplul 0.7 Dacă polinomul de gradul II are rădăcini reale, acestea se calculează
de obicei utilizând formulele
√ √
−b − b2 − 4ac −b + b2 − 4ac (0.8)
x1 = , x2 = .
2a 2a
Luând b = 10.1, a = 0.0123, c = 32.4, valoarea exactă rotunjită la 3 cifre
semnificative a lui x2 este −3.22. Efectuând calculele ı̂n formatul ales, obţinem
∆ = b ⊗ b ⊖ 4 ⊗ a ⊗ c = 100 (ı̂n loc de 100.41, dar eroarea relativă e ı̂ncă de ordinul
0.2. ARITMETICA ÎN VIRGULĂ MOBILĂ 9
√
10−3 ); dar −b ⊕ SQRT (∆) = −0.1, ı̂n timp ce −b + b2 − 4ac = −0.0792, eroarea
relativă fiind acum 0.26. Valoarea calculată a rădăcinii x2 este −4.06, ı̂n timp ce
valoarea exactă este −3.22; din nou toate cifrele semnificative ale rezultatului sunt
eronate. ♦
Se observă că, ı̂n ambele exemple, erorile mari apar după scăderea a două numere
de valori apropiate. Se produce o anulare catastrofală, adică o pierdere completă a
cifrelor semnificative ale rezultatului. În primul caz anularea trebuie pusă integral
pe seama operaţiei matematice de scădere; problema calculului b2 − 4ac este cauza
erorilor, şi nu algoritmul de calcul. În schimb, ı̂n al doilea caz, algoritmul de calcul
al rădăcinilor este de vină, deoarece nu evită scăderea a două numere apropiate,
deşi aceasta este posibil, după cum vom vedea puţin mai târziu. Să studiem ı̂ntâi
mai amănunţit ce se ı̂ntâmplă la scăderea a două numere apropiate.
Exemplul 0.8 Considerăm două numere reale, x şi y, de acelaşi ordin de mărime
(cu x > y, pentru simplitate), ale căror prime k cifre coincid, cu următoarele
reprezentări (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 .
Observăm că x̂ − ŷ = x̂ ⊖ ŷ, deci scăderea se efectuează fără erori. În schimb,
rezultatul scăderii cu valorile exacte ale operanzilor este
În concluzie, observăm că operanzii scăderii sunt afectaţi de erori relative de repre-
zentare de ordinul β −t−1 , ı̂n timp ce rezultatul ei are o eroare relativă de ordinul
β −t−1+k ; atunci când x şi y au multe cifre semnificative identice, deci k aproape de
t, (şi acelaşi ordin de mărime) eroarea asociată rezultatului scăderii poate deveni
uriaşă. ♦
Exemplul 0.8 arată că adunarea (scăderea) nu introduce erori mari prin ea ı̂nsăşi,
ci potenţează — ı̂n anumite cazuri — erorile operanzilor.
De aceea, scăderea numerelor apropiate trebuie evitată. Pentru aceasta, dacă
este posibil, algoritmul de calcul este cel care trebuie modificat.
10 CAPITOLUL 0. CONCEPTE FUNDAMENTALE
Exemplul 0.9 Am constatat, ı̂n exemplul 0.7, că formulele (0.8) nu sunt √ cele
mai bune din punct de vedere numeric, mai ales când b2 ≫ 4ac, şi deci |b| ≈ ∆.
Pentru a evita scăderea unor numere apropiate, se pot folosi formulele
√
−b − sgn(b) b2 − 4ac −2c
x1 = , x2 = √ . (0.9)
2a b + sgn(b) b2 − 4ac
Utilizând ı̂n (0.9) valorile numerice din exemplul 0.7, se obţine, ı̂n FVM de lucru,
un rezultat cu toate cifrele semnificative exacte. ♦
unde a, b ∈ R sunt date (a 6= b), este de asemenea o problemă numerică bine definită.
a
Într-adevăr, pentru datele de intrare x = ∈ D = R2 , există şi este unică
b
R 2
valoarea integralei y ∈ R, deşi integrala nedefinită e−t dt nu este exprimabilă
prin funcţii elementare. ♦
Abaterea soluţiei calculate faţă de soluţia exactă a unei probleme numerice poate
avea două surse esenţial diferite, legate de problemă ı̂n sine şi, respectiv, de algorit-
mul de calcul utilizat. De prima sursă de erori — numită condiţionarea problemei
— ne ocupăm ı̂n continuare, de cea de-a doua — stabilitatea algoritmului — ı̂n
paragraful următor.
Condiţionarea problemei caracterizează sensibilitatea soluţiei ı̂n raport cu pertur-
baţiile datelor de intrare. În practică este cunoscută doar o aproximaţie x̂ a datelor
de intrare x şi, ı̂n cel mai bun caz, presupunând că toate calculele se efectuează
exact, putem calcula f (x̂) ı̂n loc de f (x). Dacă funcţia f definind problema noastră
este prea sensibilă la variaţii ale argumentului, f (x̂) şi f (x) pot diferi semnificativ
chiar ı̂n cazul unei erori relative mici kx − x̂k / kxk a datelor de intrare (k · k este o
normă adecvată). O astfel de problemă este numită rău condiţionată.
Dacă ı̂ncercăm rezolvarea unei probleme rău condiţionate pornind de la date
inexacte, atunci soluţia obţinută va fi ı̂nsoţită de erori mari indiferent de felul ı̂n
care este calculată !
Observaţia 0.2 Dacă f este Lipschitz continuă, i.e. există L astfel ı̂ncât
atunci
kxk
κ(x) ≤ L ,
kf (x)k
iar dacă f este de clasă 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 că condiţionarea este o proprietate locală. De obicei, totuşi, o
problemă este numită bine condiţionată dacă este bine condiţionată ı̂n orice punct
x ∈ D; de asemenea, este numită rău condiţionată, dacă există puncte x ∈ D ı̂n
care este rău condiţionată.
Exemplul 0.11 Problema calculului sumei a două numere x, y ∈ R poate fi
bine sau rău condiţionată funcţie de valorile lui x şi y (datele de intrare). (Aici
12 CAPITOLUL 0. CONCEPTE FUNDAMENTALE
2 x
f (x, y) = x + y, f : R −→ R; convenim să scriem şi f (x, y) ı̂n loc de f ( ),
y
cum ar cere (0.10).)
Presupunem că x̂, ŷ sunt aproximări ale lui x, respectiv y, afectate de erori
relative de acelaşi ordin de mărime, γ; mai precis,
x̂ = x + εx x, cu |εx | ≤ γ ≪ 1,
ŷ = y + εy y, cu |εy | ≤ γ.
|x + εx x + y + εy y − (x + y)| |εx x + εy y|
ε= = . (0.12)
|x + y| |x + y|
şi suma este afectată de o eroare de acelaşi ordin de mărime ca şi operanzii; ı̂n acest
caz, adunarea este bine condiţionată.
Dacă x şi y au semne diferite, este posibil (atunci când εx şi εy au şi ele semne
diferite) ca ε şi
γ · max(|x|, |y|)
θ=
|x + y|
să aibă acelaşi ordin de mărime. Dar dacă |x + y| ≪ max(|x|, |y|), ceea ce se
ı̂ntâmplă atunci când x şi y au valori apropiate, atunci θ ≫ γ. În acest caz,
problema calculului sumei este rău condiţionată. Exemplele 0.6, 0.7, 0.8 ilustrează
această situaţie. Pentru a vedea câte subtilităţi ascunde calculul aparent simplu al
unei sume, cititorul este invitat să consulte [?]. ♦
fˆ : D ∩ F ⊂ Rn −→ Rm .
Deoarece execuţia unui algoritm se face folosind numere ı̂n FVM şi calculele sunt
ı̂nsoţite de erori, este clar că fˆ(x) este de regulă diferit de f (x). De asemenea, nu ne
putem aştepta ca algoritmul fˆ să calculeze soluţia unei probleme rău condiţionate
mai precis decât o garantează datele de intrare. Totuşi, e de dorit ca fˆ să nu in-
troducă erori exagerat de mari. Noţiunea de stabilitate numerică exprimă mărimea
erorilor numerice introduse de un algoritm, ı̂n ipoteza că datele iniţiale sunt exacte.
0.4. STABILITATEA NUMERICĂ A ALGORITMILOR 13
x r r
f f (x)
6 I
@@
x̂ r
Eroare ”ı̂napoi” fˆ @
? @
@@Eroare ”ı̂nainte”
f @
@
Rr ˆ
@
@
f (x) = f (x̂)
Definiţia 0.4 Un algoritm fˆ, destinat rezolvării problemei f , este numeric stabil
dacă una dintre următoarele două condiţii alternative este ı̂ndeplinită:
i) fˆ(x) este aproape de f (x) pentru orice intrare x, adică soluţia calculată aproxi-
mează bine soluţia exactă.
ii) pentru orice intrare x, există un x̂ ∈ D apropiat de x astfel ı̂ncât f (x̂) să fie
egal cu fˆ(x), adică soluţia calculată de algoritmul fˆ cu date de intrare exacte este
egală cu soluţia exactă pentru nişte date de intrare uşor perturbate.
Altfel, algoritmul este numeric instabil.
Cele două condiţii sunt similare, doar că prima se formulează ı̂n spaţiul datelor
de ieşire, iar a doua ı̂n spaţiul datelor de intrare, după cum se poate remarca
ı̂n figura 0.3; ı̂n mod plastic, eroarea (absolută) fˆ(x) − f (x) este numită eroare
”ı̂nainte”, deoarece corespunde sensului de calcul al algoritmului, iar x̂ − x eroare
”ı̂napoi”, deoarece găsirea unui x̂ care să satisfacă ii) ı̂nseamnă ı̂ntoarcerea ı̂n
spaţiul datelor de intrare, ulterior aplicării algoritmului. Analiza stabilităţii nu-
merice a unui algoritm ı̂nseamnă cuantificarea erorilor din definiţia 0.4; evaluarea
kfˆ(x)−f (x)k este caracteristică analizei ı̂nainte (directe); evaluarea kx̂−xk defineşte
analiza ı̂napoi (inversă).
Noţiunea vagă ”aproape” se poate reexprima prin cea de eroare relativă mică
(noţiune destul de vagă şi ea); ı̂n calculul numeric se folosesc deseori astfel de
exprimări. În mod sigur, o eroare relativă de ordinul erorii de rotunjire (introduse
de (0.7)) caracterizează un algoritm numeric stabil 1 : soluţia este calculată cu
precizia intrinsecă a FVM utilizat.
Este uşor de arătat că utilizarea unui algoritm stabil la rezolvarea unei probleme
bine condiţionate conduce la un rezultat de ı̂naltă acurateţe 2 .
Într-adevăr, din definiţia 0.4 varianta ii), pentru intrarea exactă x există x̂ astfel
ı̂ncât eroarea relativă este (să zicem) de ordinul erorii de rotunjire
kx − x̂k
≤ µβ −t
kxk
1 În
continuare, vom spune ”algoritm stabil” ı̂n loc de ”algoritm numeric stabil”.
2 Atragem atenţia asupra sensurilor diferite pe care le au ı̂n calculul numeric termenii precizie şi
acurateţe, aproape sinonimi ı̂n limbajul uzual. Precizia se referă la numărul de cifre semnificative
din FVM, iar acurateţea la mărimea erorii dintre rezultatul calculat numeric şi cel exact.
14 CAPITOLUL 0. CONCEPTE FUNDAMENTALE
şi
f (x̂) = fˆ(x). (0.13)
Problema fiind bine condiţionată, din (0.11) rezultă că
unde κ şi µ sunt de ordinul unităţii. Deci, din (0.13) şi (0.14),
kf (x) − fˆ(x)k
≤ κµβ −t ,
kf (x)k
unde f l este o funcţie de rotunjire care respectă relaţia (0.7), iar x şi y sunt numere
ı̂n FVM; deci, ı̂n conformitate cu (0.7),
cu |ρ| de ordinul β −t , adică suma calculată este suma exactă a operanzilor uşor
perturbaţi, şi deci algoritmul de sumare este stabil. ♦
cu |ρ1 |, |ρ2 |, |ρ3 | de ordinul β −t ; am presupus că 4 ⊗ a se calculează fără erori, ceea
ce e adevărat ı̂n baza 2, dar nu şi ı̂n baza 10.
0.5. CALITĂŢILE UNUI ALGORITM NUMERIC 15
Definind
p
â = a(1 + ρ2 ), b̂ = b (1 + ρ1 )(1 + ρ3 ), ĉ = c(1 + ρ3 ),
constatăm că
fˆ(a, b, c) = b̂2 − 4âĉ,
şi â, b̂, ĉ sunt aproape de a, b, respectiv c (ı̂n sensul |â − a|/|a| de ordinul β −t etc.).
Condiţia ii) a definiţiei 0.4 este ı̂ndeplinită, deci algoritmul este stabil. ♦
Exemplul de mai sus este o ilustrare foarte simplă a analizei inverse a erorilor
de rotunjire ale unui algoritm. În această tehnică se utilizează limitele (0.7) ale
erorilor introduse de operaţiile ı̂n virgulă mobilă pentru a demonstra că soluţia
calculată a unei probleme este soluţia exactă a problemei cu date de intrare uşor
perturbate. O astfel de demonstraţie garantează că algoritmul este numeric stabil şi,
pentru probleme bine condiţionate, sunt asigurate erori relative mici ale rezultatelor
calculate.
Pentru probleme nebanale, a arăta că un anume algoritm este stabil poate fi
o sarcină dificilă. Există foarte puţini algoritmi pentru care există o demonstraţie
completă a stabilităţii numerice. Totuşi, mulţi algoritmi importanţi au fost validaţi
ı̂n practică printr-o experienţă de zeci de ani. Cum spunea Wilkinson: ”scopul
principal al analizei erorilor nu este de a stabili margini precise, ci de a evidenţia
instabilităţile potenţiale ale unui algoritm, dacă ele există, şi, prin aceasta, de a găsi
o cale de ı̂mbunătăţire a algoritmului” [IV].
În această lucrare vom fi interesaţi mai mult de prezentarea celor mai buni algo-
ritmi care rezolvă o problemă, şi mai puţin de demonstrarea — aproape ı̂ntotdeauna
extrem de ”tehnică” — a stabilităţii lor numerice.
UC
6
?
UC UCS UCV
MR
6 6
6
? ? ?
M M MP
Fig. 0.4: Arhitecturi de calculatoare: (a) von Neumann; (b) vectorială; (c) cu
memorie ierarhică
virgulă mobilă. Vom exemplifica ı̂n continuare cu două arhitecturi larg răspândite,
ı̂n special ı̂n gama calculatoarelor de mare performanţă.
Calculatoarele vectoriale au două (tipuri de) unităţi de calcul, ca ı̂n figura
0.4b. Una dintre unităţi – UCS – este obişnuită; ea execută operaţii scalare, adică
operaţiile aritmetice uzuale. Cealaltă – UCV – este dedicată operaţiilor vectoriale,
adică unor operaţii aritmetice de acelaşi tip repetate pentru mai multe perechi de
date; de exemplu, adunarea a n perechi de numere, xi + yi , i ∈ 1 : n. Dacă pe un
calculator von Neumann nu e nici o diferenţă de viteză ı̂ntre astfel de operaţii, pe
calculatoarele vectoriale se execută mult mai rapid operaţiile vectoriale; explicaţia e
relativ simplă: UCV e astfel construită ı̂ncât datele o parcurg ca pe o bandă rulantă
cu mai multe posturi de lucru, fiecare pereche de date suferind la un moment dat
o altă operaţie intermediară (dacă sunt p posturi de lucru, timpul de producere a
unui rezultat este de aproximativ p ori mai mic). La aceasta se adaugă şi un mod de
comunicaţie sofisticat ı̂ntre M şi UCV, astfel ı̂ncât UCV să poată fi ı̂n permanenţă
alimentată cu date. În schimb, UCS prelucrează doar o pereche de date la un mo-
ment dat. Deci, un algoritm eficient pe un calculator vectorial va conţine mai ales
operaţii de tip vectorial.
Calculatoarele cu memorie ierarhică au structura sugerată ı̂n figura 0.4c. Prin-
cipala noutate a acestei arhitecturi este organizarea memoriei pe cel puţin două
niveluri. Timpul de acces la memorie creşte odată cu distanţa dintre unitatea cen-
trală şi memoria respectivă; memoria rapidă (MR) are un timp de acces sensibil
mai mic decât cel al memoriei principale (MP), dar şi o capacitate mult mai mică;
aceste caracteristici provin mai ales din tehnologia de realizare, diferită de cea a
memoriei principale (totuşi, ı̂n mod natural, o memorie mai mică este mai rapidă).
Transferurile ı̂ntre UC şi MR durează puţin ı̂n comparaţie cu timpul de execuţie
al unei operaţii ı̂n virgulă mobilă; ı̂n schimb, transferurile ı̂ntre MR şi MP durează
mai mult. De aceea, un algoritm eficient pe un calculator cu memorie ierarhică are
un număr cât mai mic de transferuri implicând MP, acesta fiind criteriul principal de
18 CAPITOLUL 0. CONCEPTE FUNDAMENTALE
0.7 Probleme
P 0.1 Următorul exemplu arată că adunarea ı̂n virgulă mobilă nu este asociativă. Să
considerăm numerele x1 = 0.001, x2 = 1, x3 = −1, reprezentate ı̂ntr-un FVM cu β = 10,
t = 3. Cât de mare este eroarea relativă atunci când se calculează y = x1 + x2 + x3 ?
P 0.2 Găsiţi o limită a erorii relative pentru calculul ı̂n virgulă mobilă al sumei
y = x1 + x2 + x3 ; presupuneţi că x1 , x2 , x3 sunt numere ı̂n virgulă mobilă.
P 0.3 Să considerăm problema calculului soluţiei ecuaţiei liniare ax + b = 0, cu a, b ∈ R,
a 6= 0. Pentru ce valori ale datelor de intrare a, b este această problemă rău condiţionată ?
”Algoritmul” pentru calculul soluţiei este x = −b/a; este acest algoritm numeric stabil ?
P 0.4 Aceeaşi ı̂ntrebare pentru ecuaţia (a1 + a2 )x + (b1 + b2 ) = 0, ı̂n care datele de intrare
sunt a1 , a2 , b1 , b2 ∈ R.
P 0.5 Se consideră un FVM definit de (β, t, p). Care este distanţa ı̂ntre 1 şi cel mai
apropiat număr reprezentabil ı̂n virgulă mobilă, mai mare ca 1 ?
P 0.6 Găsiţi limita (superioară) a erorii relative a funcţiei de rotunjire care asociază
fiecărui x ∈ [−M, M ] cel mai apropiat număr ı̂n virgulă mobilă.
P 0.7 Ce formulă recomandaţi pentru calculul ı̂n virgulă mobilă: x2 −y 2 sau (x−y)(x+y) ?
(Se presupune că x şi y sunt numere ı̂n FVM.)
Capitolul 1
Algoritmi elementari de
calcul numeric
Acest capitol este dedicat prezentării noţiunilor matematice aflate la baza dez-
voltărilor ulterioare, formulării problemelor de calcul pe care le vom rezolva, ı̂n
diverse variante, pe ı̂ntreg parcursul lucrării, precum şi descrierii unor primi algo-
ritmi numiţi ad-hoc elementari, unii folosiţi ca unelte mai târziu, alţii deja rezolvând
probleme sau cazuri particulare ale unor probleme semnificative.
Noţiunile matematice aparţin ı̂n mare majoritate algebrei liniare. Am ı̂ncercat
o prezentare de sine stătătoare, dar, desigur, cunoştinţele anterioare ale cititorului
sunt binevenite.
Fiecare secţiune a capitolului are două părţi: prima, cu nuanţă teoretică, de
parcurgere a unor definiţii şi proprietăţi fundamentale; a doua, de ”aspecte algo-
ritmice”, ı̂n care sunt prezentaţi şi analizaţi algoritmi simpli, moduri de memorare
a datelor, artificii numerice etc. Subtitlurile acestor din urmă părţi vor ı̂ncepe cu
sigla AA.
Principalii algoritmi prezentaţi rezolvă următoarele probleme: produsul ma-
triceal (cu diversele lui cazuri particulare: produsul scalar, produsul exterior, pro-
dusul matrice-vector), calculul normelor vectoriale şi matriceale, rezolvarea sis-
temelor liniare triunghiulare şi calculul valorilor şi vectorilor proprii ai matricelor
triunghiulare. Sunt prezentate modalităţile prin care se măresc performanţele algo-
ritmilor pe diverse arhitecturi de calculatoare. Capitolul se ı̂ncheie cu prezentarea
rutinelor BLAS, extrem de utilizate ı̂n calculul numeric.
6 6
1
6
x3 x
1
x2 e3
-
e1 - -
e2
x1 1 1
+
+
+
(a) (b)
Fig. 1.1: (a) Un vector ı̂n R3 şi coordonatele sale; (b) vectorii unitate ı̂n R3
indicele arătând poziţia valorii 1. Spre exemplu, vectorii unitate din R3 sunt
prezentaţi ı̂n figura 1.1b.
Doi vectori sunt egali când toate componentele lor de acelaşi indice sunt egale;
deci, dacă x, y ∈ Rn , atunci x = y când xi = yi , ∀i ∈ 1 : n.
1.1. VECTORI. SPAŢIUL 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
x1 , x2 , . . . , xp . Vectorul
p
X
def
y = α1 x1 + α2 x2 + . . . + αp xp = αi xi (1.2)
i=1
Dacă vectorii sunt liniar dependenţi, atunci cel puţin unul Pp dintre ei se poate
exprima printr-o combinaţie P liniară a celorlalţi; i.e., dacă i=1 αi xi = 0, atunci
există αj 6= 0, şi deci xj = − pi=1,i6=j (αi /αj )xi .
Evident, ı̂ntr-o mulţime de vectori independenţi, nici unul dintre ei nu se poate
exprima printr-o combinaţie liniară a celorlalţi. De exemplu, vectorii unitate
e1 , . . . , en sunt liniar independenţi.
Pp Dacă X ⊂ Rn este o mulţime de vectori
n
liniar independenţi şi y = i=1 αi xi ∈ R este o combinaţie liniară a acestora,
atunci coeficienţii combinaţiei liniare sunt unici (demonstraţi).
Subspaţiu liniar. O mulţime S de vectori din Rn este numită subspaţiu liniar
al spaţiului Rn dacă sunt ı̂ndeplinite următoarele două condiţii:
1. x + y ∈ S, ∀x, y ∈ S;
2. αx ∈ S, ∀α ∈ R, ∀x ∈ S.
Aşadar, orice combinaţie liniară a unor vectori din S aparţine tot lui S; altfel spus,
S e invariant la combinaţii liniare. Evident, orice subspaţiu liniar conţine vectorul
nul (originea).
Fie X ⊂ Rn o mulţime de vectori şi S mulţimea tuturor combinaţiilor liniare ale
vectorilor din X . Atunci S e un subspaţiu liniar, numit subspaţiul generat de X . De
exemplu, ı̂n R3 doi vectori generează de regulă un plan; dacă vectorii sunt coliniari
(adică există scalarul α a.ı̂. y = αx), atunci subspaţiul generat este o dreaptă.
Fie S ⊂ Rn un subspaţiu; o mulţime de vectori B ⊂ S este bază a subspaţiului
S dacă:
1. elementele lui B sunt liniar independente;
2. S e generat de B.
Aşadar o bază conţine numărul minim de vectori cu ajutorul cărora se poate genera
subspaţiul.
Dacă B = {b1 , . . . , bm }, atunci ∀x ∈ S se Pscrie ı̂n mod unic ı̂n forma unei
m
combinaţii liniare a vectorilor din bază, x = i=1 αi bi . Numerele αi se numesc
componentele sau coordonatele, vectorului x ı̂n raport cu baza B.
De exemplu, e1 , . . . , en formează o bază pentru Rn , numită şi baza canonică;
componentele vectorului x, ı̂n sensul definiţiei
Pn (1.1), sunt componentele ı̂n raport
cu această bază, deoarece evident x = i=1 xi ei .
Un subspaţiu are o infinitate de baze, dar toate au acelaşi număr de elemente.
Evident, un vector x 6= 0 are coordonate diferite ı̂n raport cu aceste baze.
Dimensiunea unui subspaţiu, notată dim S, este numărul vectorilor din bază,
adică numărul maxim de vectori din S liniari independenţi sau, cum am menţionat
deja, numărul minim de vectori care generează S.
De exemplu, Rn are dimensiunea n, numărul de vectori din baza canonică; un
plan ı̂n R3 are dimensiunea 2.
Două subspaţii S, T ⊂ Rn se numesc complementare dacă
1. S ∩ T = {0}.
2. Rn este generat de S ∪ T .
1.1. VECTORI. SPAŢIUL VECTORIAL RN 23
6
C
C
C
C
C T
SC
C C
C C
C C -
C CC
C
+ C
C
CC
În acest caz vom utiliza notaţia Rn = S ⊕ T . Fiecare dintre cele două subspaţii 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 şi o dreaptă ı̂n R3 , care constituie imaginile
geometrice a două subspaţii complementare.
Să observăm că subspaţiul complementar al unui subspaţiu nu este, ı̂n general,
unic. În exemplul din figura 1.3, orice dreaptă care nu aparţine planului este com-
plementara acestuia.
Spaţiul vectorial complex Cn se defineşte analog cu spaţiul Rn şi are aceleaşi
proprietăţi, deoarece proprietăţile corpului numerelor reale folosite mai sus sunt
identice cu cele ale corpului numerelor complexe.
Desigur, orice vector x ∈ Cn se poate scrie ı̂n forma x = u + iv, cu u, v ∈ Rn şi
i unitatea imaginară.
AA. Saxpy. Vom descrie acum ı̂n termeni algoritmici o operaţie fundamentală
cu vectori, anume y ← αx + y, cu x, y ∈ Rn , α ∈ R, operaţie numită Saxpy2 .
Notaţia ←, citită ”ia valoarea”, are semnificaţia de atribuire. Cu alte cuvinte,
ı̂ntr-un program ce realizează operaţia şi ı̂n care vectorii x şi y reprezintă variabile,
vectorul calculat αx + y este depus ı̂n variabila y, suprascriind valoarea iniţială a
acesteia. Vom introduce direct şi alte convenţii de scriere a algoritmilor, cu premiza
că cititorul are noţiuni elementare despre limbajele de programare de nivel ı̂nalt.
faptul că calculele se efectuează ı̂n Simplă precizie; ea este ataşată ı̂n mod tradiţional numelui
operaţiei.
24 CAPITOLUL 1. ALGORITMI ELEMENTARI
3 Numerotarea nivelelor se face după exponentul lui n din expresia numărului de flopi necesari
la execuţie; operaţiile de nivel 1 necesită O(n) flopi, cele de nivel 2 necesită O(n2 ) flopi etc.
1.2. PRODUS SCALAR. NORME. ORTOGONALITATE 25
'$
6
∞ @ 1
@ -
@
&%
@ bb 2
Denumirea de normă 2 este justificată de faptul că (1.3) este un caz particular
de normă p (sau normă Hölder). Pentru p ≥ 1, norma p se defineşte prin
n
!1/p
X
p
kxkp = |xi | .
i=1
Alte cazuri particulare de normă p folosite curent sunt normele 1 şi 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 prezintă ”cer-
curile” de rază 1 ı̂n R2 , adică locul geometric al punctelor x ∈ R2 pentru care
kxkp = 1, pentru p = 1, 2, ∞.
Două norme pe Rn , să zicem k · kq şi k · kr , se numesc echivalente dacă există
γ1 , γ2 > 0 astfel ı̂ncât pentru orice x ∈ Rn avem
Dacă, ı̂n plus faţă de (1.5), vectorii ui au norme euclidiene unitare, kui k2 = 1,
∀i = 1 : p, ei sunt numiţi ortonormali.
Vectorii ortogonali sunt liniar independenţi; justificarea e intuitivă: un vector
ortogonal pe toţi ceilalţi este ortogonal şi pe orice combinaţie liniară a lor.
Orice subspaţiu de dimensiune mai mare ca unu are o infinitate de baze ortonor-
male 4 . De exemplu, baza canonică a Rn , e1 , . . . , en , este ortonormală. Folosirea
bazelor ortonormale este recomandabilă nu numai datorită proprietăţilor matema-
tice, dar şi a acurateţii numerice pe care o induc ı̂n calcule. Un mod simplu, dar nu
şi numeric stabil, de a construi o bază ortonormală, pornind de la o bază oarecare,
este sugerat ı̂n problema 1.6 (algoritmul Gram-Schmidt); metode numeric stabile
vor fi prezentate ı̂n capitolele 3 şi 5.
Teorema lui Pitagora se generalizează imediat ı̂n Rn : vectorii x, y ∈ Rn sunt
ortogonali dacă şi numai dacă kx + yk22 = kxk22 + kyk22 .
Noţiunea de ortogonalitate poate fi extinsă la subspaţii liniare. Vectorul x ∈ Rn
este ortogonal pe subspaţiul S ⊂ Rn dacă este ortogonal pe orice vector din S. Două
subspaţii S, T ⊂ Rn sunt ortogonale dacă orice vector s ∈ S este ortogonal pe orice
vector t ∈ T ; vom nota S ⊥ T .
Un subspaţiu S ⊂ Rn este numit complementul ortogonal al subspaţiului
T ⊂ Rn dacă cele două subspaţii sunt ortogonale şi complementare. (∀x ∈ Rn ,
există vectorii unici s ∈ S, t ∈ T astfel ı̂ncât x = t + s şi t ⊥ s.) Se utilizează
notaţia S = T ⊥ ; desigur, avem şi T = S ⊥ .
Particularităţi ale spaţiului euclidian complex Cn . Produsul scalar uzual
al vectorilor x, y ∈ Cn este definit de proprietăţi uşor diferite de cele ale produsului
scalar din Rn ; mai precis, notând cu α complex conjugatul scalarului complex α,
proprietăţile 1 şi 3 devin:
1’. f (x, y) = f (y, x);
3’. f (x, αy) = αf (x, y).
Pn
Produsul scalar uzual ı̂n Cn se defineşte prin y H x = i=1 xi yi .
Doi vectori x, y ∈ Cn sunt ortogonali dacă y H x = 0. √
Norma euclidiană
P k · k : Cn → R+ se defineşte prin kxk2 = xH x, ∀x ∈ Cn ,
unde xH x = ni=1 |xi |2 , iar |α| este modulul scalarului complex α.
AA. Calculul produsului scalar. Urmând (1.3), produsul scalar se calculează
astfel:
Comentarii. Algoritmul are 2n operaţii şi face deci parte din grupul operaţiilor
de nivel 1. Îl vom apela prin α = DOT(x, y).
4 În general vom spune baze ortogonale ı̂n loc de ortonormale, presupunând implicit că normele
unde |x| este vectorul modulelor elementelor vectorului x. Eroarea nu este neapărat
mică; dacă |y T x| ≪ |y|T |x|, atunci eroarea relativă din (1.6) poate fi mare. ♦
AA. Calculul normelor. Normele 1 şi ∞ se calculează uşor. De exemplu,
kxk∞ se calculează astfel:
Comentarii. Se observă că scalarea, care se efectuează ı̂n instrucţiunile 1 şi 3.1,
ı̂ncarcă algoritmul cu n flopi (2) şi n comparaţii (1); cu toate acestea, siguranţa
calculelor impune de regulă utilizarea ei, cu excepţia cazurilor ı̂n care informaţiile
apriorice despre date exclud apariţia depăşirii.
Un rafinament al algoritmului 1.4 este de a utiliza pentru scalare nu kxk∞ , ci
cea mai apropiată putere a bazei de numeraţie a formatului virgulă mobilă utilizat
(de regulă 2). Scalările din instrucţiunea 3.1 vor avea rezultate de acelaşi ordin de
mărime ca ı̂n cazul scalării cu kxk∞ , deci nu va exista pericol de depăşire superioară,
ı̂n schimb toate ı̂mpărţirile se vor efectua exact, neintroducându-se nici un fel de
eroare numerică suplimentară la calculul normei. ♦
28 CAPITOLUL 1. ALGORITMI ELEMENTARI
1.3 Matrice
Matrice. O matrice reală A este un tablou bidimensional (rectangular) de
numere reale dispuse pe m linii şi n coloane; notând cu aij elementul matricei de
pe linia i şi coloana j, matricea arată astfel
a11 a12 ... a1n
a21 a22 ... a2n
A= .. .. .. (1.7)
. . .
am1 am2 . . . amn
1. (AT )T = A, ∀A ∈ Rm×n ;
Teorema 1.1 Dacă A ∈ Rm×n , atunci ImA şi KerAT sunt subspaţii ortogonale şi
complementare ı̂n Rm , i.e.
1. ImA ⊥ KerAT .
2. Rm = ImA ⊕ KerAT .
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}, adică S este
x1 + x2
planul de ecuaţie 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 subspaţiului ImA generat de coloanele lui A. Aşadar rangA = dim(ImA),
sau, altfel spus, rangul este numărul maxim de coloane liniar independente din A.
Se poate demonstra că rangA = rangAT şi deci rangul este totodată şi numărul
maxim de linii liniar independente din A. Recapitulând:
not
dim ImA = dim ImAT = r,
dim KerA = n − r, (1.12)
dim KerAT = m − r.
O matrice A ∈ Rm×n având coloanele liniar independente se numeşte monică;
ı̂n acest caz, m ≥ n, rangA = n şi KerA = {0}. Se mai spune că A are rang maxim
pe coloane.
O matrice A ∈ Rm×n având liniile liniar independente se numeşte epică; atunci
m ≤ n, rangA = m şi ImA = Rm ; se spune că A are rang maxim pe linii.
1.3. MATRICE 31
O matrice A ∈ Rm×n având una din dimensiuni egală cu 1 este un vector; dacă
n = 1, vectorul este coloană (accepţiunea implicită), iar dacă m = 1 vectorul este
linie. Este clar că transpusa unui vector linie este un vector coloană şi reciproc. În
mod analog cu (1.8), o matrice poate fi scrisă evidenţiind liniile:
T
a1
aT2
A = . . (1.13)
..
aTm
AA. Gaxpy. Vom prezenta acum mai multe implementări ale produsului
5
matrice-vector, sub forma operaţiei y ← Ax + y, numită GaxpyPn .
Din (1.9), la nivel de element, operaţia se scrie yi ← yi + j=1 aij xj , şi deci
1. Pentru j = 1 : n
1. Pentru i = 1 : m
1. yi ← yi + aij xj
Bucla interioară reprezintă acum o operaţie Saxpy, corespunzând exprimării
produsului matrice-vector ı̂n forma (1.9), care este o sumă de vectori. Algoritmul
1.7 se rescrie deci ı̂n forma vectorială:
Definiţia 1.1 Fie A ∈ Rm×l şi B ∈ Rl×n , două matrice; produsul lor este matricea
C = AB ∈ Rm×n , definită prin
l
X
cij = aik bkj , i = 1 : m, j = 1 : n.
k=1
Cazuri particulare. Să discutăm ı̂ntâi cazurile particulare ı̂n care cel puţin
una dintre dimensiuni este egală cu 1.
not not
Dacă m = n = 1, atunci A = xT este un vector linie, B = y este un vector
coloană, ambii ı̂n R , iar produsul lor coincide cu simplul produs scalar AB = xT y.
l
not not
Dacă l = 1, atunci A = x este un vector coloană ı̂n Rm , B = y T este un
vector linie ı̂n Rn , iar produsul lor este matricea C = xy T ∈ Rm×n , definită prin
cij = xi yj ; această operaţie cu doi vectori poartă numele de produs exterior şi va fi
notată prin OUT(x, y).
not
Dacă n = 1, atunci B = y este un vector coloană şi operaţia AB este o ı̂nmulţire
matrice-vector.
not
Dacă m = 1, atunci A = xT este un vector linie şi AB = xT B este un vector
linie (ı̂nmulţire vector linie - matrice).
6 Produsul ”vectorial” a × b este posibil, printr-un accident fericit căruia ı̂i este ı̂ndatorată
Forme ale produsului matriceal. Vom evidenţia acum mai multe forme
de prezentare a ı̂nmulţirii a două matrice, folosind ca operaţii elementare cazurile
particulare prezentate mai sus.
1. Să privim A ca alăturare de vectori linie, ca ı̂n (1.13), şi B ca alăturare de
vectori coloană, ca ı̂n (1.8). Se observă imediat din definiţie că cij = aTi bj , adică
fiecare element al rezultatului poate fi exprimat printr-un produs scalar (DOT).
2. Privim acum A partiţionată pe coloane şi B pe linii. Produsul lor se poate
exprima ca o sumă de produse exterioare:
T
b1 l
.. X
C = AB = [a1 . . . al ] . = ak bTk . (1.15)
bTl k=1
Pl Pl Pl
Demonstraţie: cij = k=1 (ak bTk )ij = k=1 (ak )i (bTk )j = k=1 aik bkj .
3. Punem acum ı̂n evidenţă numai coloanele matricei B. Atunci
deci fiecare coloană a produsului este obţinută prin ı̂nmulţirea matrice-vector dintre
matricea A şi coloana respectivă a lui B.
4. Fie acum A partiţionată pe linii. Atunci
T T
a1 a1 B
C = AB = ... B = ... ,
(1.17)
aTm aTm B
deci fiecare linie a produsului este obţinută prin ı̂nmulţirea vector linie - matrice
dintre linia respectivă a lui A şi matricea B.
5. Să exprimăm acum coloanele produsului C ı̂n funcţie de coloanele matricei
A. Cu ajutorul relaţiei (1.16) se obţine
l
X
cj = Abj = bkj ak , (1.18)
k=1
3. (AB)T = B T AT .
Trebuie subliniat faptul că ı̂nmulţirea de matrice nu este comutativă. Să detaliem
puţin; considerăm A ∈ Rm×l şi B ∈ Rl×n , cazul cel mai general pentru care este
definit produsul AB; dacă m 6= n, atunci produsul BA nici măcar nu este definit.
Dacă m = n, atunci AB ∈ Rm×l , iar BA ∈ Rl×m ; prin urmare, dacă m 6= l, atunci
AB şi BA au dimensiuni diferite, deci nu se pune problema egalităţii. În fine, dacă
şi m = l, deci ambele matrice sunt pătrate,
atunci
egalitatea
AB = BA nu are loc,
1 1 1 2
ı̂n general; un exemplu simplu: A = ,B= .
1 1 3 4
Matrice pătrate. Ne vom ocupa ı̂n continuare de unele aspecte specifice ma-
tricelor pătrate din Rn×n , a căror mulţime are structură de inel necomutativ. Ma-
tricea unitate de ordinul n are elementele de pe diagonala principală egale cu 1 şi
toate celelalte elemente nule; ea este notată prin In , sau numai I dacă dimensiunea
rezultă din context; scrisă pe coloane, matricea unitate are forma In = [e1 . . . en ].
Fie o matrice A ∈ Rn×n ; dacă există o matrice X ∈ Rn×n astfel ı̂ncât
AX = XA = I, atunci X se numeşte inversa matricei A şi se notează cu A−1 .
O matrice care are inversă se numeşte inversabilă; matricea inversă este unică. Se
poate demonstra că mulţimea matricelor inversabile din Rn×n are o structură de
grup (necomutativ) ı̂n raport cu ı̂nmulţirea, notat GL(n).
Se pune ı̂ntrebarea când este o matrice inversabilă ? Vom menţiona deocamdată,
fără a demonstra, că inversabilitatea este echivalentă cu condiţia rangA = n, adică
cu independenţa coloanelor (şi liniilor) matricei A. (O altă condiţie echivalentă este
KerA = {0}, i.e. KerA are dimensiune nulă.) Testarea numerică a inversabilitaţii
va fi o problemă tratată mai mult sau mai puţin explicit ı̂n capitolele următoare,
metodele prezentate fiind din ce ı̂n ce mai sigure, dar şi mai sofisticate.
O ultimă proprietate: inversarea şi transpunerea unei matrice sunt operaţii care
not
comută ı̂ntre ele, adică (AT )−1 = (A−1 )T = A−T .
Echivalenţă. Două matrice A, B ∈ Rm×n se numesc echivalente la dreapta
dacă există o matrice T ∈ Rn×n inversabilă astfel ı̂ncât B = AT . Avem:
Propoziţia 1.1 Dacă A, B ∈ Rm×n sunt echivalente la dreapta, atunci avem ImA =
ImB.
d = [δ1 . . . δn ]T ; vectorii c şi d conţin coordonatele ı̂n cele două baze. Cum B = AT ,
atunci x = Ac = AT d, din unicitate rezultând c = T d, sau d = T −1 c. Această
ultimă relaţie justifică denumirea de transformare de coordonate dată matricei T −1
(din nou, din baza A ı̂n baza B).
Desigur, dacă A şi B sunt echivalente la dreapta, atunci şi KerAT = KerB T ,
consecinţă a propoziţiei de mai sus şi a teoremei 1.1.
Deoarece ı̂nmulţirea de matrice nu este comutativă, are sens noţiunea de echiva-
lenţă la stânga; matricele A, B ∈ Rm×n se numesc echivalente la stânga dacă există
o matrice S ∈ Rm×m inversabilă astfel ı̂ncât B = SA. În acest caz, ImAT = ImB T
şi KerA = KerB.
Dacă coloanele fiecăreia dintre matricele echivalente la stânga A şi B formează
o bază pentru ImA = ImB, atunci din (1.16) aj = Sbj , deci matricea S transformă
vectorii unei baze ı̂n vectorii celeilalte.
Două matrice sunt echivalente (bilateral) dacă există S ∈ Rm×m , T ∈ Rn×n
inversabile astfel ı̂ncât B = SAT . S şi T se numesc generic transformări (de
echivalenţă).
AA. Algoritmi. Vom prezenta mai multe variante de calcul al produsului ma-
triceal, variante ce diferă, ı̂n esenţă, prin ordinea ı̂n care sunt efectuate operaţiile
scalare. În acest mod punem ı̂n evidenţă diverse posibilităţi de organizare a cal-
culelor ı̂n vederea unei exploatări optime a particularităţilor arhitecturale ale cal-
culatorului ţintă.
Pentru ı̂nceput prezentăm un algoritm pentru produsul exterior, singurul caz
particular nedetaliat până acum ı̂n care cel puţin o dimensiune a operanzilor ı̂nmulţi-
rii este 1.
Algoritmul 1.9 (OUT – Calculul produsului exterior) (Se dau
x ∈ Rm , y ∈ Rn . Se calculează C = xy T ∈ Rm×n .)
1. Pentru j = 1 : n
1. Pentru i = 1 : m
1. cij ← xi yj
În cazul general, o implementare directă a ı̂nmulţirii de matrice, folosind definiţia,
este prezentată ı̂n continuare.
Algoritmul 1.10 (MM – Înmulţire matriceală) (Se dau
A ∈ Rm×l , B ∈ Rl×n . Se calculează C = AB ∈ Rm×n .)
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 modifică dacă ordinea celor trei bucle Pentru
este alta. Algoritmul de mai sus se mai numeşte ”forma jik” a produsului ma-
triceal. Bucla Pentru cea mai interioară se poate ı̂nlocui cu apelul produsului scalar
DOT(A(i, :), B(:, j)), obţinându-se astfel un algoritm cu operaţii vectoriale. Cele
două bucle Pentru interioare se pot ı̂nlocui cu un apel la Gaxpy(A, B(:, j), C(:, j)),
după cum sugerează direct relaţia (1.16).
Forma jki pune ı̂n evidenţă operaţii Saxpy, având la bază relaţia (1.18):
36 CAPITOLUL 1. ALGORITMI ELEMENTARI
C = A1 B1 − A2 B2 + i(A1 B2 + A2 B1 ). (1.21)
Înmulţirea matricelor complexe se poate efectua deci prin patru produse (şi două
adunări) de matrice reale.
Numărul de operaţii se poate reduce printr-un mic artificiu de calcul; o formă
echivalentă cu (1.20) este
Aparent, nu se câştigă nimic, deoarece ı̂n loc de patru ı̂nmulţiri şi două adunări
reale, ca ı̂n (1.20), avem trei ı̂nmulţiri şi cinci adunări. Egalitatea (1.22) se scrie
ı̂nsă identic şi ı̂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).
Aşadar C se calculează acum cu doar trei ı̂nmulţiri de matrice, adică 6mnl flopi, şi
cinci adunări a căror contribuţie la numărul de operaţii este neglijabilă.
Acest algoritm rapid pentru ı̂nmulţirea matricelor complexe are totuşi şi un
dezavantaj: stabilitatea sa numerică este mai slabă decât cea a algoritmului ”clasic”
(1.21); cu toate acestea, el poate fi folosit cu succes ı̂n majoritatea aplicaţiilor.
Se observă că (1.24) este identică cu produsul scalar al celor doi vectori din Rmn
obţinuţi prin vectorizarea matricelor A şi B, i.e. prin concatenarea coloanelor lui
A, respectiv B.
Normele matriceale se definesc la fel ca normele vectoriale. O normă ma-
triceală este o funcţie k · k : Rm×n → R+ care satisface condiţiile
1. kAk > 0, ∀A ∈ Rm×n , A 6= 0 (pozitivitate);
2. kαAk = |α| · kAk, ∀A ∈ Rm×n , ∀α ∈ R (omogenitate);
3. kA + Bk ≤ kAk + kBk, ∀A, B ∈ Rm×n (inegalitatea triunghiului).
Pentru a utiliza normele matriceale independent de dimensiunile matricelor, in-
troducemS∞ noţiunea de familie de norme matriceale, care este o funcţie
k · k : m=1,n=1 Rm×n → R+ astfel ı̂ncât, pentru fiecare m, n > 0, restricţia lui
k · k la Rm×n este o normă matriceală. Dacă n = 1, atunci k · k este o familie de
norme vectoriale.
O familie k · k de norme matriceale este consistentă dacă
atunci când produsul AB este definit. (Să observăm că, ı̂n general, A, B şi AB au
dimensiuni diferite, deci normele lor sunt funcţii diferite; de aceea se lucrează cu
familii de norme.)
Norma Frobenius este norma matriceală indusă de produsul scalar (1.24):
v
um X n
uX
kAkF = t a2ij . (1.26)
i=1 j=1
38 CAPITOLUL 1. ALGORITMI ELEMENTARI
ı̂n care norma matriceală kAk se defineşte cu ajutorul normelor vectoriale kxk şi
kAxk. (Trecerea de la sup la max este justificată de faptul că hipersfera de ecuaţie
kxk = 1 este un compact iar norma vectorială k · k este o funcţie continuă, deci
mărginită şi ı̂şi atinge marginile.) Familia de norme matriceale este numită subor-
donată celei de norme vectoriale sau indusă de aceasta.
Astfel, folosind (1.27), se pot defini normele p matriceale subordonate normelor
p (Hölder) vectoriale. Cele mai utilizate norme p sunt normele 1, 2 şi ∞. Pentru
p = 1, ∞, relaţia (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, atât semnificaţia cât şi modul de calcul vor fi prezentate ı̂n
capitolele următoare.
Normele p matriceale, aplicate unor vectori priviţi ca matrice, dau aceleaşi valori
ca normele p vectoriale. Astfel, nu e nici o posibilitate de confuzie ı̂n utilizarea
aceluiaşi simbol k · kp pentru normele matriceale şi cele vectoriale.
În sfârşit, normele matriceale subordonate unor norme vectoriale sunt consis-
tente (demonstraţi, folosind definiţia) şi, ı̂n plus, au proprietatea kIk = 1.
Echivalenţă. Normele matriceale prezentate mai sus sunt echivalente, ı̂n sensul
relaţiei (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 normă matriceală peste spaţiul complex Cm×n este o funcţie
cu valori reale pozitive satisfăcând cele trei condiţii de la ı̂nceputul secţiunii. Toate
definiţiile şi relaţiile de mai
P susPrămân valabile, cu singura observaţie că acum norma
Frobenius este kAk2F = m i=1
n 2
j=1 |aij | .
0
0
L U
1. ν ← 0
2. Pentru j = 1 : n
1. α ← 0
2. Pentru i = 1 : m
1. α ← α + |aij |
3. Dacă α > ν atunci ν ← α
Algoritmul necesită mn flopi. Calculul normei ∞ este asemănător şi are aceeaşi
complexitate. Calculul normei Frobenius necesită 2mn flopi; desigur, pentru evitarea
depăşirilor superioare, ı̂n implementarea formulei directe (1.26) se utilizează scalarea.
În schimb, după cum vom vedea, calculul normei 2 face apel la noţiuni mai evolu-
ate şi implică O(n3 ) operaţii (pentru matrice pătrate). De aceea, normele 1, ∞ şi
Frobenius sunt cele mai folosite ı̂n calculul numeric elementar. Toate aceste norme
fiind echivalente, criteriul de alegere primordial este efortul de calcul.
O matrice se numeşte triunghiulară unitate dacă este triunghiulară şi, ı̂n plus,
toate elementele sale diagonale sunt egale cu 1.
O matrice se numeşte strict triunghiulară dacă este triunghiulară şi toate e-
lementele sale diagonale sunt nule. De exemplu, o matrice A este strict inferior
40 CAPITOLUL 1. ALGORITMI ELEMENTARI
Propoziţia 1.2 a. Dacă D este o matrice diagonală şi A este o matrice struc-
turată, atunci matricele DA şi AD vor avea structura matricei A.
b. Produsul a două matrice inferior (superior) triunghiulare (unitate) este o
matrice inferior (superior) triunghiulară (unitate).
c. Dacă L este o matrice inferior (superior) triunghiulară şi H este inferior (su-
perior) Hessenberg, atunci LH şi HL sunt matrice inferior (superior) Hessenberg.
Demonstraţie. Vom demonstra doar punctul b ı̂n cazul inferior triunghiular, cele-
lalte demonstraţii fiind lăsate ca exerciţiu.
FiePA şi B două matrice inferior triunghiulare, şi C = AB. Evident,
cij = nk=1 aik bkj . Considerăm i < j. A fiind inferior triunghiulară, aik = 0 pentru
k > i; ı̂n plus, bkj = 0, pentru k ≤ i < j, deoarece B este inferior triunghiulară;
aşadar, aik bkj = 0, pentru oricare k ∈ 1 : n, deci cij = 0 pentru i < j, adică C este
inferior triunghiulară.
Elementele posibil nenule ale matricei C (pentru i ≥ j) se calculează economic
cu relaţia
X i
cij = aik bkj , (1.30)
k=j
În general, o matrice bandă B, de lăţime p, se poate memora uşor ı̂ntr-un tablou
cu 2p + 1 linii şi n coloane. Exemplificăm pentru p = 2:
α β γ
δ α β γ ∗ ∗ γ ... γ γ γ
ε δ α β γ ∗ β β ... β β β
B= ε δ α β γ α α α ... α α α
ε δ α β γ δ δ δ ... δ δ ∗
.. .. .. .. .. ε ε ε ... ε ∗ ∗
. . . . .
În stânga se găseşte matricea bandă (cu elementele notate generic), ı̂n dreapta
tabloul de memorare (prin ∗ sunt notate elemente nesemnificative); se observă că ele-
mentele de pe aceeaşi diagonală a matricei se memorează pe aceeaşi linie a tabloului.
Elementul bij se memorează pe linia p + i − j + 1, coloana j.
42 CAPITOLUL 1. ALGORITMI ELEMENTARI
× • • × •
× × × × ×
× • • × •
× • • × •
• Dacă 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
adică Aij ∈ Rr×r , r fiind numită dimensiunea blocurilor, iar m = q/r numărul de
blocuri; presupunem că r divide dimensiunea matricelor q doar pentru a simplifica
expunerea.
Exprimăm produsul matriceal ca ı̂n (1.33), deci
m
X
Cij = Aik Bkj . (1.35)
k=1
Algoritmul lui Strassen este definit de formulele următoare, uşor de verificat prin
simplă substituţie:
M1 + M2 + M3 − M4 M4 + M6
C = A·B =
M3 + M5 M1 − M5 + M6 + M7
În practică, dimensiunea n0 este mai mare decât 18 (dar de obicei n0 < 100),
datorită operaţiilor nearitmetice suplimentare necesare ı̂n algoritmul Strassen, ı̂n
special alocărilor de memorie şi apelurilor recursive. Aşadar, acest algoritm este
eficient pentru ı̂nmulţirea matricelor mari, cu dimensiuni de ordinul sutelor sau
miilor.
În privinţa stabilităţii numerice algoritmul Strassen este inferior celui standard,
de aceea trebuie utilizat cu anume precauţii. Recomandăm referinţele [IX], [?]
cititorului interesat.
simetrică, luând à = (A + AT )/2 se vede că xT Ax = xT Ãx, ∀x ∈ Rn , şi à este simetrică. Să
notăm că B = (A − AT )/2 se numeşte componenta antisimetrică, iar xT Bx = 0.
1.8. MATRICE NORMALE 47
Matricele simetrice şi formele pătratice asociate pot avea ”semn”, ı̂n sensul
definit ı̂n continuare.
O matrice simetrică A este pozitiv definită dacă xT Ax > 0, pentru orice vector
x ∈ Rn , x 6= 0; se notează A > 0, dar, atenţie, aceasta nu ı̂nseamnă că toate
2 −1
elementele matricei sunt pozitive; de exemplu, este pozitiv definită,
−1 2
1 2
deoarece 2x21 − 2x1 x2 + 2x22 > 0, ∀[x1 x2 ]T 6= 0, ı̂nsă nu este, deoarece
2 1
x21 − 4x1 x2 + x22 poate avea orice semn când x1 , x2 ∈ R. Matricea A este pozitiv
semidefinită dacă xT Ax ≥ 0, ∀x ∈ Rn , ceea ce se notează A ≥ 0.
O matrice simetrică A este negativ (semi)definită dacă −A este pozitiv (semi)-
definită. O matrice simetrică care nu se ı̂ncadrează ı̂n nici una dintre categoriile de
mai sus se numeşte cu semn nedefinit.
Suma şi produsul cu scalari pozitivi conservă semnul; de exemplu, dacă A, B
sunt pozitiv definite şi α > 0, atunci A+B şi αA sunt pozitiv definite (demonstraţi !).
Propoziţia 1.3 O submatrice principală a unei matrice pozitiv definite A este po-
zitiv definită. În particular, submatricele lider principale A[k] , k ∈ 1 : n, sunt
pozitiv definite şi toate elementele diagonale sunt pozitive.
*
6
x
x − Px
"
" "
"
" S
" -
"
" Px "
"
" "
Fig. 1.8: Acţiunea unui proiector ortogonal pe S asupra unui vector oarecare x
scalar complex, mai utile sunt noţiunile analoage obţinute (formal) prin ı̂nlocuirea
transpunerii prin transpunere şi complex conjugare. Dacă A ∈ Cn×n , se notează
cu AH = AT conjugata transpusei matricei A. Matricea A ∈ Cn×n se numeşte
normală dacă AAH = AH A.
Matricea A ∈ Cn×n se numeşte hermitică dacă AH = A. În acest caz scalarul
x Ax este real pentru orice x ∈ Cn . O matrice hermitică A ∈ Cn×n este pozitiv
H
ı̂nlocuim elementele matricei A din linia i aflate ı̂n triunghiul inferior, prin cele egale
aflate pe coloana i, ı̂n triunghiul superior, după cum este sugerat ı̂n figura 1.9.
Acelaşi mod de memorare, printr-un singur triunghi, se utilizează şi ı̂n cazul
matricelor antisimetrice sau hermitice. Propunem cititorului adaptarea algoritmului
Gaxpy ı̂n aceste două cazuri.
A x
Fig. 1.9: Utilizarea elementelor din triunghiul superior ı̂n produsul dintre o matrice
simetrică şi un vector
Ax = b, (1.41)
A fiind numită matricea coeficienţilor, b termenul liber (sau partea dreaptă a sis-
temului), iar x vectorul necunoscutelor.
Dacă termenul liber al sistemului este vectorul nul (b = 0), sistemul este numit
omogen.
Prima caracteristică importantă a unui sistem liniar este relaţia ı̂ntre m şi n:
• când numărul de ecuaţii este mai mare decât numărul de necunoscute (m > n),
sistemul (1.41) se numeşte supradeterminat;
• când, dimpotrivă, numărul de necunoscute este mai mare (n > m), sistemul
este numit subdeterminat;
• ı̂n cazul unei matrice A pătrate (m = n), sistemul (1.41) este determinat.
Teorema 1.2 Sistemul liniar (1.41) are soluţie dacă şi numai dacă b ∈ ImA.
Dacă ImA = Rm , adică A este epică (are liniile independente), atunci sistemul
(1.41) are soluţie pentru orice termen liber b ∈ Rm şi reciproc.
y3
6
b 6∈ ImA
HbH∈ ImA
Y 1
HH
HH y1
-
y2
ImA
1 0
Exemplul 1.2 Dacă A = 1 1 , atunci ImA este planul y2 = y1 + y3 . Dacă
0 1
b = [b1 b2 b3 ]T este astfel ı̂ncât b2 = b1 + b3 , atunci sistemul Ax = b are soluţie
deoarece condiţia din teorema 1.2 este ı̂ndeplinită. Altfel, sistemul nu are soluţie
(vezi figura 1.10). ♦
Când soluţia există, unicitatea ei rezultă din
x0 + KerA = {x = x0 + z | z ∈ KerA}.
2) Soluţia x este unică dacă şi numai dacă KerA = {0}, adică matricea A este
monică (are coloanele independente).
care trece prin punctele O(0, 0, 0) şi P (1, −1, 1). Astfel, vectorii din KerA au forma
1
Ker A ∋ z = α −1 , α ∈ R,
1
52 CAPITOLUL 1. ALGORITMI ELEMENTARI
x3
6
P•
x
:
x1
O -
•
x@
9
x2
0
R
@
KerA
x + KerA
Fig. 1.11: Soluţiile (x0 – soluţie particulară, x – soluţie generală) sistemului din
exemplul 1.3
Corolar 1.1 Când matricea A este pătrată (A ∈ Rn×n ), atunci următoarele afir-
maţii sunt echivalente:
i) ImA = Rn , i.e. sistemul (1.41) admite soluţie unică pentru orice b ∈ Rn ;
ii) KerA = {0};
iii) A este inversabilă.
Dacă sistemul are soluţie, aceasta se poate scrie
x = A−1 b. (1.42)
unde Ā1j ∈ R(n−1)×(n−1) este matricea obţinută din A prin eliminarea liniei 1 şi
coloanei j.
Câteva proprietăţi 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 ∈ Rn×n pentru care det(A) 6= 0 se numeşte nesingulară. Se poate
demonstra că noţiunea de nesingularitate este echivalentă cu cea de inversabili-
tate. Să notăm de acum că ı̂n rezolvarea numerică a sistemului determinat Ax = b
nesingularitatea matricei A nu se verifică prin calculul determinantului, ci prin alte
mijloace, mult mai eficiente şi sigure, după cum se va vedea ı̂n capitolul 2. De aceea
mai departe vom spune de cele mai multe ori inversabilă ı̂n loc de nesingulară.
AA. Rezolvarea sistemelor triunghiulare. Sistemul Ax = b este numit in-
ferior (superior) triunghiular dacă matricea A este inferior (superior) triunghiulară.
O matrice triunghiulară este inversabilă dacă şi numai dacă toate elementele
sale diagonale sunt nenule.
Algoritmii pentru rezolvarea sistemelor triunghiulare sunt foarte simpli, deoarece
necunoscutele pot fi calculate, ı̂ntr-o ordine precizată, prin substituţie numerică.
Să considerăm ı̂ntâi un sistem inferior triunghiular, Lx = b, unde L ∈ Rn×n , cu
lij = 0 pentru i < j, lii 6= 0, i ∈ 1 : n, şi b ∈ Rn . Prima ecuaţie este l11 x1 = b1 , din
care
x1 = b1 / l11 . (1.43)
În general, dacă se cunosc x1 , x2 , . . . , xi−1 , se poate rezolva a i-a ecuaţie,
i−1
X
lij xj + lii xi = bi ,
j=1
pentru a obţine
i−1
X
xi = bi − lij xj / lii . (1.44)
j=1
Formulele (1.43) şi (1.44) definesc un algoritm pentru calculul soluţiei sistemului
Lx = b, cunoscut ca metoda substituţiei ı̂nainte.
1. x ← b
2. Pentru i = 1 : n
1. Pentru j = 1 : i − 1
1. xi ← xi − lij xj
2. xi ← xi / lii
adică x̂ este soluţia unui sistem cu matricea coeficienţilor uşor perturbată faţă
de L. Aşadar algoritmul LTRIS este numeric stabil. (Acesta este un rezultat tipic
de analiză inversă a erorilor.) Practica numerică arată o acurateţe a algoritmului
LTRIS mult superioară celei indicate de (1.45).
Pentru a rezolva sistemul superior triunghiular (nesingular) U x = b, unde
U ∈ Rn×n este o matrice superior triunghiulară, cu uii 6= 0, i ∈ 1 : n, şi b ∈ Rn , să
observăm că ultima ecuaţie are forma unn xn = bn , iar de aici
xn = bn /unn . (1.46)
1.9. SISTEME DE ECUAŢII LINIARE 55
Mai mult, dacă xn , xn−1 , . . . , xi+1 , sunt deja calculate, atunci, din a i-a ecuaţie,
n
X
uii xi + uij xj = bi ,
j=i+1
se obţine
n
X
xi = bi − uij xj /uii . (1.47)
j=i+1
Din formulele (1.46) şi (1.47), care definesc aşa numita substituţie ı̂napoi, obţinem
direct algoritmul următor.
Comentarii. Ca şi ı̂n cazul inferior triunghiular, efortul de calcul este NUTRIS = n2
flopi, iar memoria ocupată MUTRIS ≈ n2 /2 locaţii ı̂n virgulă mobilă. Vom apela
acest algoritm prin x = UTRIS(L, b). Şi pentru algoritmul UTRIS este valabilă
o relaţie de genul (1.45), i.e. algoritmul de mai sus este numeric stabil. Rezolvarea
sistemelor triunghiulare este o operaţie de nivel 2. ♦
AA. Sisteme triunghiulare cu parte dreaptă multiplă. Se spune despre
un sistem de forma AX = B, cu A ∈ Rn×n , B ∈ Rn×p (rezultând X ∈ Rn×p ), cu
p > 1, că este un sistem cu parte dreaptă multiplă. Desigur, a rezolva AX = B este
matematic echivalent cu a calcula X = A−1 B. Partiţionând X şi B pe coloane,
rezolvarea sistemului AX = B se poate reduce rezolvarea a p sisteme de forma
(1.41), Axj = bj , j ∈ 1 : p.
Considerăm A inferior triunghiulară. Prezentăm o variantă bloc de rezolvare a
sistemului AX = B, adecvată calculatoarelor cu memorie ierarhică. Partiţionăm
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 ∈ Rr×r , iar Bi , Xi ∈ Rr×p . Evident, blocurile diagonale Aii sunt inferior
triunghiulare. Se presupune că r divide n şi fie m = n/r.
Sistemul (1.48) se rezolvă ı̂n mod analog cu sistemul inferior triunghiular cu o
singură parte dreaptă, tratat mai sus. Bloc linia i a sistemului (1.48) conduce la o
relaţie asemănătoare cu (1.44):
i
X i−1
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 substituţie ı̂nainte).
Pe un calculator cu memorie ierarhică (figura 0.4c), A, B şi X sunt stocate ı̂n
memoria principală MP. Alegem r astfel ı̂ncât blocurile Aij , Xj şi Bi să poată fi
stocate simultan ı̂n memoria rapidă MR (deci r2 + 2rp < dim(MR)). Algoritmul
următor se bazează pe ideea aducerii acestor blocuri ı̂n MR şi apoi a efectuării
calculelor din (1.49).
Comentarii. Toate operaţiile aritmetice, ı̂n număr de pn2 (de p ori mai multe
decât pentru algoritmul LTRIS aplicat unui sistem Axj = bj ), se efectuează cu
operanzi din MR. Instrucţiunile 1.1, 1.2.1, 1.3, 1.5 reprezintă transferuri ı̂ntre MP
şi MR; numărul acestor transferuri este de
m i−1 2 2
(r2 + rp) + r2 + rp ≈ pn + n ,
X X
i=1 j=1
2r 2
sensibil mai mic decât ı̂n cazul ı̂n care operanzii s-ar fi aflat ı̂n MP (atunci ar fi fost
aproximativ 2pn2 accesuri la MP).
1.9. SISTEME DE ECUAŢII LINIARE 57
LX = In ,
Lxj = ej , j ∈ 1 : n, (1.50)
xj = Xej fiind cea de-a j-a coloană a matricei X. Sistemul inferior triunghiular
(1.50) poate fi rezolvat ı̂n mod eficient prin adaptarea algoritmului LTRIS la forma
particulară a termenului drept. Într-adevăr, sistemul (1.50) poate fi partiţionat
astfel: " #
(j)
L11 0 x′j 0
= , (1.51)
(j)
L21 L22
(j) x′′j e′′j
(j)
unde L11 este submatricea de dimensiune (j − 1) × (j − 1) din colţul stânga sus al
matricei L şi
e′′j = [1 0 . . . 0]T ∈ Rn−j+1 .
Din (1.51) rezultă (
(j)
L11 x′j = 0,
(j) (j) (1.52)
L21 x′j + L22 x′′j = e′′j .
(j) (j)
Deoarece L este inversabilă şi, prin urmare, la fel sunt L11 şi L22 , relaţia (1.52)
devine (
x′j = 0,
(j) (1.53)
L22 x′′j = e′′j .
Această relaţie stabileşte un fapt important, dat de
Propoziţia 1.5 Inversa unei matrice inferior triunghiulare nesingulare este infe-
rior triunghiulară.
În concluzie, matricele inferior triunghiulare inversabile formează grup ı̂n raport
cu ı̂nmulţirea matriceală.
Din (1.53) poate fi dedus un algoritm de calcul al inversei unei matrice nesingu-
lare, având la bază următoarea schemă de calcul:
L−1 1. Pentru j = 1 : n
1. Dacă j > 1 atunci x′j = 0
(j)
2. x′′j = LTRIS(L22 , e′′j )
Se poate observa că inversa calculată poate fi memorată ı̂n aceeaşi zonă de
memorie ca matricea L. Explicitând rezolvarea sistemului inferior triunghiular,
obţinem
58 CAPITOLUL 1. ALGORITMI ELEMENTARI
Memoria necesară este MLINV ≈ n2 /2 locaţii ı̂n virgulă mobilă. Se vede acum că
rezolvarea sistemului liniar Lx = b folosind relaţia x = L−1 b (adică LINV) este
ineficientă ı̂n comparaţie cu algoritmul direct LTRIS. ♦
Pentru a calcula inversa unei matrice superior triunghiulare nesingulare
U ∈ Rn×n , trebuie rezolvată ecuaţia matriceală U X = In , sau, echivalent, cele
n ecuaţii liniare
U xj = ej , j = 1 : n, (1.54)
unde xj este coloana j a matricei X = U −1 .
Utilizând partiţia
" # ′
(j) (j)
U11 U12 x′j ej
(j) ′′ = , (1.55)
0 U22 x j 0
(j)
unde U11 este submatricea de dimensiune j × j din colţul stânga sus a lui U şi
e′j = [0 0 . . . 0 1]T ∈ Rj , şi urmând o cale asemănătoare celei parcurse pentru inver-
sarea matricelor inferior triunghiulare, se obţin analoagele relaţiei (1.53), propoziţiei
1.5 şi algoritmului LINV. Avem:
(
(j)
U11 x′j = e′j ,
′′ (1.56)
xj = 0.
Propoziţia 1.6 Inversa unei matrice superior triunghiulare nesingulare este supe-
rior triunghiulară.
Av = λv. (1.57)
Dacă A ∈ Rn×n , valorile proprii apar ı̂n perechi complex conjugate (iar vectorii
proprii asociaţi acestor perechi pot fi aleşi complex conjugaţi).
Notăm prin
mulţimea valorilor proprii ale matricei A ∈ Cn×n (cu repetarea valorilor proprii
multiple). Mulţimea λ(A) se numeşte spectrul matricei A.
Transformări de asemănare. Suntem interesaţi de transformările care con-
servă spectrul unei matrice date; se observă că valorile proprii nu sunt conservate
ı̂n urma premultiplicării sau postmultiplicării cu o altă matrice.
Două matrice A, B ∈ Cn×n sunt numite asemenea dacă există o matrice nesin-
gulară T ∈ Cn×n astfel ı̂ncât
B = T AT −1. (1.60)
T se numeşte transformare de asemănare. Dacă T este unitară (ortogonală, ı̂n cazul
real), atunci A şi B sunt ortogonal asemenea.
Teorema 1.6 Fie A ∈ Cn×n o matrice simplă şi V ∈ Cn×n matricea ale cărei
coloane sunt vectorii proprii ai lui A. Atunci
V −1 AV = Λ ∈ Cn×n (1.62)
= [v1 v2 . . . vn ] diag(λ1 , λ2 , . . . , λn ) = V Λ.
Deoarece vectorii vj , j ∈ 1 : n, sunt liniar independenţi, matricea V este nesingulară
şi (1.62) este adevărată. ♦
Aşadar o matrice simplă poate fi diagonalizată peste C printr-o transformare de
asemănare. Nu aceasta este şi abordarea numerică a problemei, care va fi discutată
pe larg ı̂n capitolul 4.
Subspaţii invariante. Fie A ∈ Cn×n şi un subspaţiu S ⊂ Cn ; spunem că S
este A-invariant dacă Av ∈ S, ∀v ∈ S. (Definiţia este identică pentru A ∈ Rn×n ,
S ⊂ Rn .)
Se observă uşor că dacă S are o bază formată din vectori proprii ai matricei A,
atunci S este A-invariant. Reciproca acestei afirmaţii nu este, ı̂n general, adevărată.
AA. Calculul vectorilor proprii ai matricelor triunghiulare. Fie
U ∈ Rn×n o matrice superior triunghiulară. Aşa cum am observat mai sus, valorile
sale proprii sunt λi = uii , i ∈ 1 : n. Dorim acum să calculăm vectorii proprii.
1. Considerăm ı̂ntâi cazul ı̂n care valorile proprii sunt distincte două câte două.
Fie T = λj I −U ; vectorul propriu vj va fi calculat rezolvând sistemul liniar T vj = 0,
care poate fi partiţionat
′
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′ ∈ Rj−1 , vj′′ ∈ Rn−j . Valorile proprii fiind distincte, T11 şi T33 sunt nesin-
gulare. Din (1.63), T33 vj′′ = 0, şi deci vj′′ = 0. Ecuaţia wT vj′′ = 0 este ı̂ntotdeauna
satisfăcută iar vjj poate avea o valoare nenulă oarecare, să zicem vjj = 1. În fine,
sistemul superior triunghiular T11 vj′ = −y are soluţie unică, care se poate calcula
cu algoritmul UTRIS.
Vectorii proprii astfel calculaţi sunt liniar independenţi, deoarece matricea
V = [v1 v2 . . . vn ] este superior triunghiulară unitate; rezultatul e natural, deoarece
U este simplă. Direcţiile vectorilor proprii sunt unic definite, mărimile lor fiind alese
arbitrar prin constrângerea vjj = 1.
2. Dacă există 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 ı̂nsă,
T11 poate fi singulară, deci se pune problema dacă sistemul superior triunghiular
T11 vj′ = −y are soluţie. Procedând prin substituţie ı̂napoi, presupunem că vjj = 1,
vj−1,j , . . . , vi+1,j au fost calculate şi scriem ecuaţia i a acestui sistem
j−1
X
tii vij = βij , cu βij = −tij − tik vkj . (1.64)
k=i+1
Dacă tii 6= 0, evident că ı̂n (1.64) vij = βij / tii şi substituţia poate continua. Dacă
tii = 0, sunt două variante: fie βij = 0, şi atunci vij din (1.64) poate avea o valoare
arbitrară, de exemplu vij = 1, şi substituţia continuă; fie βij 6= 0, şi atunci (1.64)
nu este satisfăcută, deci sistemul (1.63) nu are soluţie vj ; ı̂n acest caz, matricea U
este defectivă, adică nu are n vectori proprii liniar independenţi.
62 CAPITOLUL 1. ALGORITMI ELEMENTARI
Consideraţiile de mai sus conduc la următorul algoritm general, ı̂n care matricea
T = λj − U nu se formează explicit
Tabelul 1.1: Convenţii de nume ı̂n BLAS: tipuri de date şi structuri de matrice
• nivel 1: dedicat operaţiilor vectoriale, de genul Saxpy sau DOT, care necesită
O(n) flopi. BLAS-1 este adecvat calculatoarelor vectoriale.
Prezentăm ı̂n continuare câteva din rutinele BLAS, insistând asupra nivelului 3,
deoarece calculatoarele cu memorie ierarhică sunt tot mai răspândite.
Convenţii de nume. Scrise iniţial ı̂n FORTRAN, numele rutinelor sunt foarte
scurte (cel mult şase caractere) şi de aceea greu de ı̂nţeles fără explicaţii asupra
convenţiilor utilizate pentru stabilirea lor. În tabelul 1.1, prima literă a numelui
unei rutine indică tipul datelor, iar următoarele două (numai pentru nivelele 2 şi
3), structura matricelor argumente ale funcţiei.
În fine, ultimele trei (uneori două) litere — tot pentru nivelele 2 şi 3 — codifică
operaţia executată, după cum se va vedea imediat.
BLAS 1. Prezentăm ı̂n tabelul 1.2 cele mai importante rutine ale nivelului 1 al
BLAS, fără a preciza argumentele lor, ci numai operaţia realizată; ca şi până acum,
x, y sunt vectori ı̂n Rn sau Cn , iar α scalar. Prima literă a numelui, care arată tipul
datelor, este precizată ı̂n ultima coloană.
64 CAPITOLUL 1. ALGORITMI ELEMENTARI
K -
6 6
M
LDA
?
respectă regulile din tabelul 1.1; pentru a nu ı̂ncărca expunerea, nu vom prezenta
modul efectiv de apel decât pentru prima rutină prezentată.
În cele ce urmează, A, B, C sı̂nt matrice oarecare, cu dimensiuni oarecare,
dar adecvate operaţiilor, sau simetrice şi pătrate, T este o matrice triunghiulară,
superior sau inferior, iar α şi β sı̂nt scalari.
1. xGEMM (GEneral Matrix Multiplication) – ı̂nmulţirea matrice-matrice, ı̂n cazul
general. Modul complet de apel este:
xGEMM(TRANSA, TRANSB, M, N, K, ALFA, A, LDA, B, LDB, BETA, C, LDC)
Operaţiile efectuate de rutină sı̂nt prezentate ı̂n tabelul următor; C este ı̂ntot-
deuna de dimensiune m × n.
Argumentele rutinei devin acum mai clare: TRANSA şi TRANSB arată dacă ma-
tricele A, B se transpun sau nu; M, N, K sunt dimensiunile efective ale matricelor;
LDA, LDB, LDC conţin dimensiunea principală a variabilelor ı̂n care sunt stocate
matricele, presupuse memorate pe coloane. Semnificaţia acestor variabile dimen-
sionale este mai clară ı̂n figura 1.12. Elementele de pe aceeaşi linie se află la distanţă
LDA ı̂n memorie. Se mai poate observa că patru variabile (analog cu A, M, K, LDA)
sunt suficiente pentru utilizarea oricărei submatrice a matricei din figură.
Rutina acoperă toate variantele de ı̂nmulţire a două matrice, operaţia de bază
fiind C ← αAB + βC; transpunerea nu este lăsată utilizatorului, deoarece poate
fi mare consumatoare de timp dacă se execută explicit (ı̂n xGEMM nu se ı̂ntâmplă
aşa); la fel, ı̂nmulţirea matrice-scalar. Cum toate celelalte rutine BLAS nivel 3 au
argumente de apelare asemănătoare, vom prezenta ı̂n continuare doar operaţia de
bază implementată.
2. xSYMM (SYmetric Matrix Multiplication) – ı̂nmulţire matrice-matrice, cu una
din matrice simetrică:
66 CAPITOLUL 1. ALGORITMI ELEMENTARI
B ← αT B. (1.68)
Evident, există şi varianta ı̂n care T este la dreapta; de asemenea, T poate fi inferior
sau superior triunghiulară.
6. xTRSM (TRiangular system Solver, with Multiple right hand term) – cal-
culează soluţia unui sistem liniar triunghiular, cu parte dreaptă multiplă (T X = B):
X ← αT −1 B. (1.69)
Şi pentru această rutină există versiuni ı̂n care necunoscuta este ı̂n stânga (de genul
XT = B); T este fie superior, fie inferior triunghiulară.
Ca pentru orice standard, alegerea setului de mai sus poate părea mai mult sau
mai puţin arbitrară; principala justificare a alegerii este numărul mare de algoritmi
din algebra liniară care folosesc rutine din setul propus.
Vom prezenta ı̂n cursul acestei lucrări şi algoritmi scrişi astfel ı̂ncât marea ma-
joritate a operaţiilor să apară ı̂n execuţia unor rutine BLAS de nivel 3. Pentru a
cuantifica eficienţa lor, introducem ponderea operaţiilor de nivel 3 prin raportul
N3 (n)
P3 (n) = . (1.70)
Ntotal (n)
Ntotal (n) reprezintă numărul total de flopi necesari execuţiei algoritmului, iar N3 (n)
numărul de flopi executaţi ı̂n rutinele din BLAS-3; ele depind (cel puţin) de dimen-
siunea problemei n.
Pe un calculator cu memorie ierarhică, un algoritm este cu atât mai bun cu cât
P3 (n) este mai apropiată de 1; evident, P3 (n) ≤ 1. Motivul este clar: pe un astfel
de calculator, operaţiile din rutinele BLAS-3 se execută mai rapid decât celelalte
deoarece memoria rapidă este utilizată optim.
1.12. PROBLEME 67
1.12 Probleme
P 1.1 Demonstraţi că un subspaţiu liniar ı̂n Rn este un spaţiu vectorial.
P 1.2 Scrieţi algoritmi pentru calculul normelor 1 şi ∞ ale unui vector x ∈ Rn .
P 1.3 (Cauchy-Buniakowski-Schwarz) Demonstraţi că |xT y| ≤ kxk2 kyk2 , ∀x, y ∈ Rn .
P 1.4 Găsiţi vectori liniar independenţi x, y ∈ Rn care să satisfacă kx+ykp = kxkp +kykp ,
pentru p = 1, 2, ∞.
P 1.5 Demonstraţi (1.6) pentru n = 2, apoi ı̂n cazul general.
P 1.6 (Ortogonalizare Gram-Schmidt) Fie b1 , . . . , bp o bază a unui subspaţiu S ⊂ Rn .
Să se găsească o bază ortogonală a1 , . . . , ap a lui S procedând prin inducţie: a1 = b1 şi
ak+1 = ki=1 αik ai + bk+1 . (Evident, baza devine ortonormală prin normalizare.)
P
P 1.7 Fie x ∈ Rm şi y ∈ Rn doi vectori, şi A = xy T ∈ Rm×n produsul lor exterior.
Demonstraţi că rangA = 1.
P 1.8 Fie matricele A ∈ Rn1 ×n2 , B ∈ Rn2 ×n3 , C ∈ Rn3 ×n4 . Sugeraţi un algoritm de
calcul al produsului ABC.
√
P 1.9 Demonstraţi că maxi,j |aij | ≤ kAk2 ≤ mn maxi,j |aij |, ∀A ∈ Rm×n .
P 1.10 Demonstraţi (1.29) şi găsiţi matrice pentru care inegalităţile (fie cele de majorare,
fie cele de minorare) devin egalităţi.
P 1.11 Fie B o submatrice a matricei A. Arătaţi că kBkp ≤ kAkp .
P 1.12 Demonstraţi că: 1. kAk2 = maxkxk2 =1,kyk2 =1 |y T Ax|; 2. kAT k2 = kAk2 ;
3. kAT Ak2 = kAk22 .
P 1.13 Demonstraţi că dacă A ∈ Rn×n este inversabilă, atunci pentru orice normă ma-
triceală subordonată unei norme vectoriale avem 1 / kA−1 k = minkxk=1 kAxk.
P 1.14 Fie L ∈ Rn×n o matrice strict inferior triunghiulară. Demonstraţi că Ln = 0.
P 1.15 Fie A, B ∈ Rn×n două matrice bandă, prima de lăţime p, a doua de lăţime q.
Demonstraţi că AB este o matrice bandă de lăţime p + q şi scrieţi un algoritm pentru
calculul acestui produs.
P 1.16 Scrieţi un algoritm pentru calculul produsului dintre o matrice inferior triunghiu-
lară şi una superior triunghiulară.
P 1.17 Arătaţi că algoritmul 1.14 de ı̂nmulţire 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 Arătaţi că submatricele lider principale ale unor matrice triunghiulare, Hessen-
berg, simetrice sunt triunghiulare, Hessenberg, respectiv simetrice. Este afirmaţia valabilă
pentru matrice ortogonale ?
P 1.19 Presupunem că dispuneţi de un algoritm general de rezolvare a sistemelor liniare.
Indicaţi un mod eficient de rezolvare a sistemului Ax = b atunci când A, partiţionată ca
ı̂n (1.31), este pătrată şi bloc superior triunghiulară.
P 1.20 Demonstraţi că numărul de operaţii N (n) al algoritmului Strassen, respectând
recurenţa (1.38), este
2n30 + 6n20 log 7
N (n) = n − 6n20 .
nlog
0
7
68 CAPITOLUL 1. ALGORITMI ELEMENTARI
√
P 1.21 Dacă A ∈ Rn×n este simetrică pozitiv definită, demonstraţi că kxkA = xT Ax
este o normă vectorială. (Indicaţie: matricele simetrice sunt ortogonal diagonalizabile.)
P 1.22 Fie A ∈ Rn×n , simetrică pozitiv definită. Demonstraţi că A este inversabilă şi că
A−1 este pozitiv definită.
P 1.23 a. Este clar că o matrice triunghulară şi simetrică este diagonală. Cum este o
matrice triunghiulară şi antisimetrică ?
b. Demonstraţi că o matrice triunghiulară şi ortogonală este diagonală.
c. Puteţi extinde rezultatul ı̂n cazul matricelor triunghiulare şi normale ?
P 1.24 Scrieţi algoritmi eficienţi pentru rezolvarea sistemului Ax = b, cu A ∈ Rn×n şi
b ∈ Rn , ı̂n cazurile:
a. A inferior bidiagonală, adică aij = 0 pentru i < j sau i > j + 1.
b. A inferior triunghiulară şi bandă de lăţime p (aij = 0 pentru i < j sau i > j + p).
c. A superior bidiagonală.
d. A superior triunghiulară şi bandă de lăţime p.
P 1.25 Adaptaţi algoritmii LINV şi UINV pentru inversarea matricelor inferior, respec-
tiv superior bidiagonale.
P 1.26 Propuneţi algoritmi de rezolvare a sistemelor inferior (superior) triunghiulare,
folosind operaţiile vectoriale DOT sau Saxpy.
P 1.27 Prezentaţi un algoritm de rezolvare a sistemului inferior triunghiular Lx = b,
ştiind că matricea L este memorată compact, pe linii (i.e. sunt memorate doar elementele
din triunghiul inferior, ı̂n ordinea l11 , l21 , l22 , l31 etc. Dar dacă L este memorată pe
coloane ?
P 1.28 Fie A ∈ Rn×n şi x = u + iv ∈ Cn un vector propriu al său, cu u, v ∈ Rn , v = 6 0.
Demonstraţi că:
a. u − iv este vector propriu al matricei A.
b. Vectorii u şi v sunt liniar independenţi iar subspaţiul generat de ei ı̂n Rn este
A-invariant.
Dacă matricea A Q∈ Rn×n are spectrul λ(A)
P 1.29 P = {λ1 , . . . , λn }, atunci
tr(A) = n
i=1 λi , iar detA =
n
i=1 λi . Puteţi generaliza ?
P 1.30 Fie A ∈ Rn×n , simetrică pozitiv definită. Demonstraţi că toate valorile proprii
ale matricei A sunt (reale şi) pozitive.
Capitolul 2
Rezolvarea sistemelor de
ecuaţii liniare
În acest capitol vom prezenta principalele metode de rezolvare a sistemelor deter-
minate de ecuaţii liniare
Ax = b, (2.1)
unde A ∈ Rn×n este o matrice inversabilă, iar b ∈ Rn este un vector dat. Aşa cum
am văzut ı̂n secţiunea 1.9, ı̂n virtutea condiţiei de inversabilitate, sistemul (2.1) are
o soluţie unică x ∈ Rn .
În practica numerică actuală se folosesc două categorii principale de metode
numerice sigure pentru determinarea acestei soluţii:
Acest capitol este dedicat prezentării celor mai importante metode directe de
rezolvare a sistemelor liniare.
Deoarece ı̂n reducerea sistemului (2.1) la formă triunghiulară transformările
matricei A sunt primordiale, ı̂n primele patru secţiuni ale capitolului vom trata
aceste transformări ca subiect de sine stătător. Algoritmii descrişi vor fi utilizaţi
ı̂n secţiunea 2.5 pentru rezolvarea efectivă a unui sistem (2.1), de formă generală.
Ca probleme conexe, ı̂n secţiunea 2.6 vor fi prezentaţi algoritmi de calcul al in-
versei şi determinantului unei matrice. Următoarele două secţiuni sunt dedicate
70 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUAŢII LINIARE
analizei condiţionării unui sistem liniar şi respectiv stabilităţii numerice a algo-
ritmilor prezentaţi. De asemenea, sunt descrise unele metode de ı̂mbunătăţire a
acurateţii soluţiei numerice obţinute. În fine, ultimele secţiuni ale capitolului se
ocupă de cazuri particulare de sisteme liniare cu structură — bandă, bloc, simetrice
şi pozitiv definite — care apar frecvent ı̂n practică.
Definiţia 2.1 O matrice inferior triunghiulară elementară (ITE) de ordin n şi 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 având primele k componente nule, iar ek este vectorul unitate de
indice k.
Notăm de acum faptul că o matrice ITE este complet definită de vectorul mk
din (2.3); ı̂n orice algoritm, matricea Mk nu se memorează integral, ci doar prin
vectorul mk , i.e. prin multiplicatorii µik , i = k + 1 : n. Principalele proprietăţi ale
unei astfel de matrice sunt rezumate ı̂n următoarea propoziţie.
Definiţia 2.2 O matrice Pij ∈ Rn×n obţinută din matricea unitate In prin inter-
schimbarea a două coloane (sau linii) i şi j, adică o matrice de forma (aici i < j):
Ii−1
0 1
Pij = [e1 e2 . . . ei−1 ej ei+1 . . . ej−1 ei ej+1 . . . en ] =
Ij−i−1
1 0
In−j
72 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUAŢII LINIARE
ı̂n care toate elementele nefigurate sunt nule, se numeşte (matrice de) permutare
elementară (PE).
Propoziţia 2.2 a) O PE este ortogonală şi simetrică, deci Pij−1 = Pij , iar
det Pij = −1.
b) Premultiplicarea unei matrice A cu PE Pij interschimbă linia i cu linia j din
A, adică: 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 interschimbă coloana i cu coloana
j din A, adică:
(
Aek , pentru k 6= i, j,
(APij )ek = Aej , pentru k = i,
Aei , pentru k = j.
Următoarea teoremă stabileşte condiţiile ı̂n care este posibilă reducerea unei
matrice la formă triunghiulară, utilizând transformări ITE.
1 Reamintim def
că A[k] = A(1 : k, 1 : k) este submatricea lider principală de ordin k a matricei A.
2.2. TRIANGULARIZARE PRIN ELIMINARE GAUSSIANĂ 73
MA = U
Ak = Mk−1 . . . M2 M1 A
este superior triunghiulară ı̂n primele k − 1 coloane, i.e. are toate elementele sub-
diagonale ale acestor coloane egale cu zero. Aplicând propoziţia 2.3, obţinem
[k] [k] [k]
Ak = Mk−1 . . . 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 triunghiulară, ı̂n virtutea condiţiei (i) din
enunţul teoremei avem
k
Y
[k] (k)
det(Ak ) = aii = det(A[k] ) 6= 0,
i=1
(k)
adică elementul akk , numit pivot, este nenul. Considerăm partiţionarea pe coloane
a matricei Ak :
(k) (k) (k)
Ak = [ a1 a2 . . . ak . . . a(k)
n ].
Putem utiliza acum propoziţia 2.1 pentru a conchide că există o matrice ITE Mk
(k)
astfel ı̂ncât (Mk ak )i = 0, pentru i = k + 1 : n. Mai mult, premultiplicarea cu
Mk a matricei Ak nu alterează primele k − 1 coloane şi ı̂n particular zerourile deja
74 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUAŢII LINIARE
(k)
introduse la paşii anteriori, deoarece akj = 0, pentru j = 1 : k − 1 (vezi propoziţia
2.1, punctul c). Prin urmare matricea
Ak+1 = Mk Ak (2.9)
M = Mn−1 Mn−2 . . . M1
este inferior triunghiulară unitate iar, dacă A este nesingulară, atunci şi U rezultă
nesingulară, ca produs a două matrice nesingulare. ♦
Demonstraţia de mai sus furnizează o procedură de triangularizare a unei ma-
trice, cunoscută sub numele de eliminare gaussiană. Procedura este bazată pe
următoarea schemă, ı̂n care calculele se desfăşoară pe loc ı̂n tabloul A
ElG 1. Pentru k = 1 : n − 1
1. Se calculează matricea ITE Mk (adică multiplicatorii µik ,
i = k + 1 : n), astfel ı̂ncât (Mk A)i = 0, pentru i = k + 1 : n
2. Se calculează A ← Mk A
La pasul 1.1, multiplicatorii gaussieni µik sunt calculaţi conform (2.8) prin
(k) (k)
µik = aik /akk , i = k + 1 : n, (2.11)
şi pot fi memoraţi pe poziţiile elementelor anulate. Prin instrucţiunea 1.2 a schemei
de mai sus, toate rezultatele intermediare sunt depuse ı̂n spaţiul de memorie ocupat
de matricea A; vezi şi figura 2.1.
La pasul 1.2, transformarea A ← Mk A este echivalentă cu calculul aj ← Mk aj ,
pentru toate coloanele aj = Aej ale matricei A. Transformarea poate fi efectuată
eficient ţinând cont că primele k−1 coloane ale matricei A nu sunt afectate. Coloana
k este modificată prin anularea elementelor subdiagonale. Pentru restul submatricei,
ţinând seama de propoziţia 2.1b, coloana transformată are elementele
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
Fig. 2.1: Conţinutul matricei A după pasul k al eliminării gaussiene şi la terminarea
execuţiei algoritmului
Comentarii. În oricare dintre cele două forme de mai sus, algoritmul necesită
n−1
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 ECUAŢII LINIARE
operaţii ı̂n virgulă mobilă (flopi), iar memoria ocupată este de MG = n2 locaţii
(elemente ı̂n virgulă mobilă). ♦
Algoritmul G poate fi utilizat pentru rezolvarea sistemului liniar Ax = b atunci
când A are toate submatricele lider principale nesingulare (inclusiv A[n] = A).
Într-adevăr, sistemul Ax = b are aceeaşi soluţie ca sistemul superior triunghiular
U x = Mn−1 Mn−2 . . . M1 b,
ı̂n care matricea U este furnizată de algoritmul G. Acest sistem triunghiular poate
fi rezolvat cu algoritmul UTRIS.
Semnificaţia operaţiilor din algoritmul G este imediată; introducerea de zero-
uri subdiagonale ı̂n coloana k ı̂nseamnă eliminarea necunoscutei xk din ecuaţiile
k + 1 : n; buclele 1.2 şi 1.2.1 reprezintă scăderea din ecuaţiile i = k + 1 : n a ecuaţiei
k ı̂nmulţite, pe rând, cu multiplicatorii µik , cu scopul de a elimina xk din fiecare
ecuaţie i.
Totuşi, nesingularitatea submatricelor lider principale ale matricei A nu este o
condiţie necesară pentru existenţa şi unicitatea soluţiei sistemului (2.2). De aceea,
algoritmul G trebuie modificat astfel ı̂ncât să producă rezultatul dorit şi atunci
când unele submatrice lider principale sunt singulare, dar A este nesingulară.
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 eliminării gaussiene cu interschimbare de linii; akk este nul
(k)
sau prea aproape de zero; ı̂n Pkik Ak , noul pivot este aik k şi are o valoare ”bună”
(suficient de mare, ı̂n modul)
A ← Ak+1 = Mk Pk Ak , (2.13)
Această egalitate afirmă că orice matrice A este echivalentă la stânga cu o ma-
trice superior triunghiulară, iar matricea de transformare poate fi un produs de
transformări elementare stabilizate.
Algoritmul corespunzător este prezentat ı̂n continuare.
1. Pentru k = 1 : n − 1
1. Se determină cel mai mic ik ∈ k : n astfel ı̂ncât
|aik k | = maxi=k:n |aik |.
2. p(k) ← ik
3. Pentru j = k : n % interschimbă liniile k şi 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
Ak = Mk−1 Pk−1 . . . M1 P1 A
implică A singulară; contradicţie. Deci, toţi pivoţii aik k 6= 0 şi algoritmul se exe-
cută complet. Nesingularitatea matricei U rezultă din nesingularitatea tuturor ma-
tricelor din termenul drept din (2.14). ♦
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
(e.g. ı̂n ordinea explorării pe coloane), să zicem aik jk , este mutat ı̂n poziţia pivot
(k, k), prin intermediul a două interschimbări, una de linii, cealaltă de coloane,
exprimate matriceal prin ı̂nmulţirea lui Ak la stânga, respectiv la dreapta, cu PE
Pkik , respectiv Qkjk ; vezi figura 2.3.
Notând Pkik cu Pk şi Qkjk cu Qk , pasul k al algoritmului G devine:
1. Se determină cei mai mici ik şi jk astfel ı̂ncât |aik jk | = maxi=k:n,j=k:n |aij |.
2. Se interschimbă liniile ik şi k, adică A ← Pk A.
3. Se interschimbă coloanele jk şi k, adică A ← AQk .
4. Se determină matricea ITE Mk astfel ı̂ncât (Mk A)ik = 0, i = k + 1 : n.
5. Se aplică 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 gaussienă cu pivotare
completă, conduce la matricea superior triunghiulară
def
A ← U = Mn−1 Pn−1 . . . M1 P1 AQ1 . . . Qn−1 . (2.16)
1. Pentru k = 1 : n − 1
1. Se determină ik ∈ k : n şi jk ∈ k : n astfel ı̂ncât
|aik jk | = maxi=k:n,j=k:n |aij |.
2. p(k) ← ik
3. q(k) ← jk
4. Pentru j = k : n % interschimbă liniile k şi ik
1. akj ↔ aik j
5. Pentru i = 1 : n % interschimbă coloanele k şi jk
1. aik ↔ aijk
6. Pentru i = k + 1 : n
1. aik ← µik = aik /akk
7. Pentru j = k + 1 : n
1. Pentru i = k + 1 : n
1. aij ← aij − µik akj
Teorema 2.3 Dacă A ∈ Rn×n este nesingulară, atunci algoritmul GPC se execută
complet, iar matricea superior triunghiulară rezultată U din (2.16) este nesingulară.
Observaţia 2.1 Algoritmii GPP şi GPC pot fi modificaţi cu uşurinţă pentru a
putea triangulariza şi matrice singulare.
În GPP, după pasul 1.1, trebuie adăugată următoarea condiţie: dacă aik k = 0,
adică aik = 0, i = k : n, atunci pentru acest k, instrucţiunile 1.2 – 1.5 nu trebuie
executate. În acest caz matricea U = An poate avea elemente diagonale nule
În GPC, dacă aik jk = 0, adică aij = 0, i = k : n, j = k : n, atunci algoritmul
se termină la pasul k, deoarece matricea U = Ak este deja superior triunghiulară,
mai precis superior trapezoidală, iar rangA = k − 1. Desigur, datorită erorilor de
rotunjire inerente, găsirea unui pivot nul este un eveniment destul de rar. Deoarece
este dificil de stabilit, ı̂n general, o toleranţă de trunchiere ǫ astfel ı̂ncât |aik jk | < ǫ
să fie considerat pivot nul, algoritmul GPC nu se foloseşte pentru determinarea
rangului unei matrice; proceduri mai sigure sunt oferite de algoritmii de factorizare
QR cu pivotarea coloanelor şi DVS, vezi capitolele 3 şi 5. ♦
2.4. FACTORIZĂRI LU 81
2.4 Factorizări LU
În multe situaţii, este convenabil a exprima o matrice dată ca produs a două matrice
triunghiulare. Această formă poate fi utilizată pentru a simplifica anumite calcule
implicând matricea respectivă.
A = LU (2.17)
atunci se spune că A admite o factorizare (sau descompunere) LU. L şi U se numesc
factori triunghiulari ai matricei A.
În general, orice exprimare a matricei A ca produs de două matrice triunghiulare
(cu eventuale permutări) se numeşte factorizare triunghiulară.
Dacă A ∈ Rn×n este o matrice care are o factorizare LU, iar D este o matrice
diagonală nesingulară, atunci, D−1 fiind de asemenea diagonală, (2.17) poate fi
scrisă ı̂n forma
A = LU = LDD−1 U = L′ U ′ , (2.18)
unde L′ = LD este inferior triunghiulară şi U ′ = D−1 U este superior triunghiulară.
Dacă D 6= I, atunci factorizările (2.17) şi (2.18) diferă şi deci factorizarea LU, dacă
există, nu este unică. De aceea este util a se introduce definiţia următoare.
Definiţia 2.4 Fie A ∈ Rn×n . Dacă există matricele L ∈ Rn×n inferior triunghiu-
lară unitate, U ∈ Rn×n superior triunghiulară unitate şi D ∈ Rn×n diagonală astfel
ı̂ncât
A = LDU,
atunci expresia de mai sus este numită factorizare LDU a matricei A.
Arătăm ı̂n continuare ı̂n ce condiţii o factorizare LDU există şi este unică.
Teorema 2.4 O matrice A ∈ Rn×n are o unică factorizare LDU dacă şi numai
dacă submatricele lider principale A[k] , k = 1 : n − 1, sunt nesingulare.
deci matricea L este formată chiar din multiplicatorii gaussieni memoraţi ı̂n A, ı̂n
algoritmul G. ♦
Vom studia acum legătura ı̂ntre algoritmul GPP de eliminare gaussiană cu pi-
votare parţială şi factorizările LU.
Teorema 2.6 Triangularizarea (2.14) (Mn−1 Pn−1 . . . M1 P1 A = U ) a matricei
A ∈ Rn×n , obţinută prin algoritmul GPP, este echivalentă cu factorizarea Doolittle
a matricei A cu liniile permutate, adică
P A = LU, (2.19)
unde P = Pn−1 . . . P1 . În partea subdiagonală, coloana k ∈ 1 : n − 1 a matri-
cei L este o permutare a vectorului Gauss corespunzător mk ; mai precis, dacă
hk = Pn−1 . . . Pk+1 mk , atunci L(k + 1 : n, k) = hk (k + 1 : n).
elemente calculate
1 ?
0
akk . . . akj . . . = lkk 1 . . . ukj . . .
.. ..
. .
aik i lik 0
.. .. 1
. .
k
elemente calculate
De asemenea,
k−1
X
akj = lks usj + lkk ukj , j = k + 1 : n,
s=1
ı̂n care acum singura necunoscută este scalarul ukj . Din propoziţia 2.3 rezultă
A[k] = L[k] U [k] , unde A[k] , deci şi L[k] sunt nesingulare, adică lkk 6= 0. Aşadar,
k−1
!
X
ukj = akj − lks usj / lkk , j = k + 1 : n. (2.25)
s=1
Astfel, procedura iniţiată prin (2.22) şi (2.23) poate fi continuată prin (2.24) şi
(2.25); dacă submatricele A[k] , k = 1 : n − 1, sunt nesingulare, ceea ce garantează
că ı̂mpărţirea din (2.25) poate fi executată, procedura va calcula complet factorii
L şi U . Observând că (2.22) şi (2.23) sunt cazuri particulare ale (2.24), respectiv
(2.25), putem include primul pas ı̂n bucla generală, rezultând algoritmul următor.
Comentarii. Numărul de operaţii ı̂n virgulă mobilă este NCROUT ≈ 2n3 /3 la fel
ca ı̂n algoritmii G, GPP sau GPC, iar memoria ocupată este MCROUT ≈ n2 . ♦
Ca şi algoritmul G de eliminare gaussiană, algoritmul CROUT eşuează pe
parcurs dacă se obţine un lkk = 0 (ceea ce este echivalent cu A[k] singulară); mai
mult, valori apropiate de zero ale unui lkk conduc la valori absolute foarte mari ale
elementelor matricei U calculate ı̂n instrucţiunea 1.2.1 precum şi la erori numerice
inadmisibile ı̂n rezultat.
Pentru a preveni această situaţie se introduce pivotarea parţială (pe linii). Spre
deosebire de algoritmul G unde, la pasul k, permutarea liniilor se efectua ı̂naintea
celorlaltor operaţii, aici permutarea poate avea loc doar după calcularea elementelor
lik , cu i ∈ k : n, pentru a putea aduce cea mai convenabilă valoare ı̂n poziţia (k, k).
(Să observăm că pivotarea completă este acum imposibilă, deoarece ar implica an-
ticiparea calculelor pentru toată matricea.) Aceasta revine la ı̂nmulţirea la stânga
a matricei A cu o PE Pkik , cu ik ≥ k, la fiecare pas k şi, global, la o factorizare
P A = LU , cu P = Pn−1 . . . P1 . Algoritmul corespunzător este următorul.
Din această egalitate, privită pe rând pentru cele patru blocuri componente, se pot
deduce uşor blocurile dorite din L şi U :
1. A11 = L11 U11 , deci L11 şi 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 dreaptă multiplă.
2.4. FACTORIZĂRI LU 87
3. A12 = L11 U12 ⇒ U12 = L−1 11 A12 . Deci, U12 este soluţia unui sistem inferior
triunghiular cu parte dreaptă multiplă.
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).
Procedând mai departe ı̂n mod similar cu matricea B, se poate calcula o facto-
rizare LU a acesteia, adică
B = L22 U22 . (2.28)
În 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, aplicând ı̂n mod repetat paşii 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 constă
ı̂n factorizarea LU a unui bloc r × r, factorizarea ı̂ntregii matrice A fiind terminată.
Algoritmul de factorizare LU va consta deci dintr-o buclă conţinând paşii 1-4. În
figura 2.5 sunt reprezentate blocurile de interes pe parcursul unei iteraţii.
HH
Y
H de factorizat
H
n
curent
Fig. 2.5: Structura blocurilor ı̂ntr-un pas al factorizării Doolittle la nivel de bloc
Cum, ı̂n general, se alege r ≪ n (şi deci, cu atât mai mult, r2 ≪ n2 ), ponderea
operaţiilor de nivel 3 este apropiată de 1, deci putem estima o bună comportare
a algoritmului pe un calculator cu memorie ierarhică. Totuşi, alegerea dimensiunii
blocurilor r se face ı̂n urma unui compromis: pe de o parte, din (2.30) e de dorit
ca r să fie cât mai mic, pe de alta, pentru ca rutinele din BLAS-3 să fie eficiente
trebuie ca r să fie suficient de mare; valoarea ideală se determină fie din estimări
teoretice, fie, mai ales, prin ı̂ncercări experimentale. ♦
Introducerea pivotării se face relativ simplu, ţinându-se seama că ı̂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 In−r 0 B 0 In−r
Reducerea calculului factorizării LU a matricei A la un calcul analog pentru
matricea de dimensiuni mai mici B se face ı̂n felul următor:
1. Se calculează, de exemplu prin eliminare gaussiană, factorizarea LU (rezultată
din (2.31), pentru cele două blocuri din stânga):
A11 L11
P1 · = · U11 . (2.32)
A21 L21
(Se aplică algoritmul GPP, chiar dacă matricea ı̂n cauză este n × r; căutarea
pivotului se face pe toată porţiunea subdiagonală a unei coloane. Vezi pro-
blema 2.9.)
2. Se aplică permutarea restului matricei A (cele două blocuri din dreapta),
obţinându-se
Ã12 A12
= P1 · .
Ã22 A22
2.4. FACTORIZĂRI LU 89
k k−1
!
X X
−1
i > j = k ⇒ Aik = Lit Utk ⇒ Lik = Aik − Lit Utk Ukk ; (2.35)
t=1 t=1
k k−1
!
X X
k = i < j ⇒ Akj = Lkt Utj ⇒ Ukj = L−1
kk Akj − Lkt Utj . (2.36)
t=1 t=1
Ordinea ı̂n care se aplică formulele de mai sus este aceeaşi ca ı̂n algoritmul la
nivel de element: se calculează ı̂ntâi prima bloc coloană din L şi prima bloc linie din
U ; diferenţa este că acum trebuie calculate două blocuri diagonale, L11 şi U11 (ı̂n
algoritmul la nivel de element, u11 = 1); aceasta se face printr-o factorizare Crout
LU; se continuă apoi cu a doua bloc coloană din L şi a doua bloc linie din U etc.
Procesul de calcul va decurge conform următoarei scheme:
1. Pentru k = 1 : m
1. Se calculează Lkk şi Ukk factorizând LU termenul drept din (2.34)
2. Pentru i = k + 1 : m
1. Se calculează Lik ca ı̂n (2.35)
3. Pentru j = k + 1 : m
1. Se calculează Ukj ca ı̂n (2.36)
90 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUAŢII LINIARE
Pentru a detalia algoritmul şi a-l scrie ı̂n mod cât mai eficient prin apeluri la
rutine BLAS-3, să observăm că sumele din relaţiile (2.34–2.36) se pot scrie compact;
exemplificăm doar pentru una dintre sume, cea din (2.35), notând s = (k − 1)r + 1,
f = kr, si = (i − 1)r + 1, fi = ir:
k−1
X
Lit Utk ≡ L(si : fi , 1 : s − 1) · U (1 : s − 1, s : f ).
t=1
Mai mult, putem scrie compact toate relaţiile 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 transformă ı̂ntr-o
−1
singură atribuire (profitând de faptul că Ukk nu depinde de i), anume:
În fine, combinând forma de mai sus cu termenul drept din (2.34), obţinem instruc-
ţiunea 1.3 din algoritmul detaliat ı̂n continuare (calculele se pot efectua pe loc ı̂n
matricea A, dar, pentru claritate, nu procedăm astfel).
Comentarii. Desigur, ı̂nmulţirile matriceale din instrucţiunile 1.3 şi 1.7 se vor
executa prin apeluri la GEMM, iar rezolvările de sisteme triunghiulare din 1.5 şi 1.8,
prin apeluri la TRSM. Ponderea operaţiilor de nivel 3 este aceeaşi ca pentru algoritmul
2.7, diferenţa fiind că aici se execută mai multe apeluri la GEMM, ceea ce ar putea
mări timpul de execuţie, dar probabil numai ı̂ntr-o măsură nesemnificativă.
Algoritmul de mai sus poate calcula şi o factorizare LU Doolittle dacă ı̂n in-
strucţiunea 1.4 se utilizează algoritmul G ı̂n loc de CROUT. ♦
2.5. REZOLVAREA SISTEMELOR LINIARE 91
U x = d,
b 1. Pentru k = 1 : n − 1
1. b ← Pk b
2. b ← Mk b
În definitiv, soluţia x a sistemului Ax = b se obţine rezolvând (pe loc ı̂n b) sis-
temul superior triunghiular U x = b. Evident, ı̂n acest scop se utilizează algoritmul
UTRIS, cu sintaxa
x = UTRIS(U, b).
Pentru detalierea schemei facem apel la propoziţiile 2.1 şi 2.2. Se obţine algo-
ritmul de mai jos.
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)
şi deci principalul efort constă ı̂n triangularizarea matricei A. Evident, memoria
necesară este MS GPP ≈ n2 . ♦
Rezolvarea sistemelor utilizând GPC. Alternativ, dar mai costisitor, putem
utiliza GPC, vezi (2.16); ı̂n acest caz, sistemul Ax = b este echivalent cu
Notând
Qn−1 . . . Q1 x = y, (2.40)
din (2.16) rezultă că vectorul y poate fi calculat prin rezolvarea sistemului superior
triunghiular
U y = d, (2.41)
unde d este vectorul dat de (2.38). În final, din (2.40), şi ştiind că Q−1
k = Qk ,
obţinem
x = Q1 Q2 . . . Qn−1 y. (2.42)
Din relaţiile (2.38)–(2.42), rezultă algoritmul următor.
Este clar că sistemul Ax = b se poate rezolva şi recurgând explicit la factorizarea
LU a matricei A. Presupunând, pentru simplitate, că nu a fost utilizată pivotarea,
factorizarea este A = LU . Avem LU x = b, sau Ly = b, unde am notat U x = y.
Prin urmare, soluţia sistemului poate fi găsită după următoarea schemă:
Efortul de calcul este acelaşi ca ı̂n eliminarea gaussiană şi partea sa cea mai
importantă se consumă ı̂n procesul de factorizare.
Dacă sistemul liniar are parte dreaptă multiplă, adică este de forma AX = B
cu B ∈ Rn×p , p > 1, atunci X va rezulta de aceeaşi dimensiune; sistemul AX = B
poate fi redus la p sisteme cu parte dreaptă simplă, Axj = bj , j = 1 : p, unde
vectorii bj şi xj sunt coloanele j din B, respectiv X. Utilizarea naivă 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 aceeaşi pentru toate cele p sisteme, factorizarea LU
sau, ı̂n general, triangularizarea matricei A, se efectuează o singură dată, rămânând
apoi de rezolvat doar sisteme triunghiulare. Ideea algoritmului, ı̂n cazul factorizării
LU, este următoarea:
U U −1
A← ⇒ A←
M M
că, de exemplu, inversa nu se calculează atunci când se rezolvă sisteme liniare, după
cum nu se calculează determinantul pentru a testa nesingularitatea unei matrice.
unde Mk sunt matrice ITE şi Pk sunt matrice elementare de permutare. Din (2.43)
rezultă
X ≡ A−1 = U −1 Mn−1 Pn−1 . . . M1 P1 ,
deci inversa matricei A poate fi calculată astfel
Ne amintim că ı̂n algoritmul GPP, matricea U şi multiplicatorii gaussieni µik ,
k = 1 : n − 1, i = k + 1 : n, notaţi global cu M ı̂n schema de mai sus, se memorează
peste matricea A ca ı̂n partea stângă a figurii 2.6. În algoritmul UINV, am văzut
că U −1 se poate memora peste U , astfel că, după instrucţiunea 2 a schemei de mai
sus, datele sunt memorate ca ı̂n partea dreaptă a figurii 2.6.
Pornind de la schema precedentă, vom prezenta un algoritm care calculează
inversa matricei A, folosind minimum de memorie. Pentru aceasta, observăm că
primele două instrucţiuni necesită memorie adiţională doar pentru vectorul p ∈
Rn−1 , ı̂n care se memorează permutările de linii din GPP. Analizăm acum bucla
Pentru din instrucţiunea 3. Prima atribuire, X ← XMk , poate fi detaliată utilizând
o partiţionare pe linii a lui X:
(−1)
u1k × ... × × × ... ×
Ū −1 .. ... Ū −1 . ...
. ..
(−1)
ukk × ... × X ← XMk Pk × × ... ×
-
µk+1,k ×
M̄ ... M̄ ...
.. ..
. .
µnk × ... × × × ... ×
k k
şi deci
X ≡ A−1 = Q1 Q2 . . . Qn−1 U −1 Mn−1 Pn−1 . . . M1 P1 .
Scrierea algoritmului corespunzător este lăsată ı̂n sarcina cititorului.
În practică, acurateţea obţinută cu INV GPP este suficient de bună pentru
majoritatea aplicaţiilor.
Observaţia 2.3 Efortul de calcul necesar inversării unei matrice este de aproxi-
mativ trei ori mai mare decât cel pentru rezolvarea unui sistem liniar de aceeaşi
dimensiune. De aceea, de câte ori e posibil, inversarea matriceală trebuie evitată
şi ı̂nlocuită de rezolvarea de sisteme liniare. De exemplu, pentru calculul scalarului
real
α = cT A−1 b,
unde A ∈ Rn×n , b, c ∈ Rn , schema recomandată este
A−1 = U −1 L−1 ,
Numărul de operaţii este tot 2n3 . Desigur, ı̂n practică este indicat a se folosi o
factorizare LU cu pivotare.
2.7. CONDIŢIONAREA SISTEMELOR LINIARE 97
Principalul efort de calcul ı̂n algoritmul de mai sus este efectuat ı̂n execuţia
algoritmului GPP. Desigur, algoritmul GPC poate fi utilizat ı̂n loc de GPP,
obţinându-se, de regulă, o acurateţe superioară a rezultatului. Scrierea algoritmului
corespunzător este propusă cititorului.
Dacă este disponibilă
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 imediată a
determinantului.
x −→ x + ∆x ≡ x̂, (2.45)
astfel ı̂ncât
(A + ∆A)(x + ∆x) = b + ∆b. (2.46)
98 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUAŢII LINIARE
Considerăm doar perturbaţii mici, respectând k∆Ak ≪ kAk, k∆bk ≪ kbk (unde
k · k este o normă consistentă oarecare), i.e. efectuăm o analiză a sensibilităţii locale
a soluţiei ı̂n raport cu variaţia datelor.
Cu alte cuvinte, erorile relative k∆Ak / kAk şi k∆bk / kbk ale datelor de intrare
pot fi amplificate de κ(A) ori ı̂n soluţie, presupunând că toate calculele se efectuează
exact (deci indiferent de algoritmul folosit).
Demonstraţie. Deoarece Ax = b, din (2.46) rezultă
A · ∆x + ∆A · x + ∆A · ∆x = ∆b.
ceea ce demonstrează (2.47). (Am ţinut seama că kbk = kAxk ≤ kAk · kxk.) ♦
Aşadar numărul de condiţionare κ(A) definit ı̂n (2.48) furnizează o măsură a
condiţionării problemei rezolvării unui sistem liniar Ax = b. Un κ(A) mic cores-
punde unei bune condiţionări, adică unei sensibilităţi reduse a soluţiei ı̂n raport cu
perturbaţiile datelor. Vom prezenta ı̂n secţiunea următoare un rezultat care permite
aprecierea mai precisă a condiţionării ı̂n funcţie de valoarea κ(A). Se observă că
doar matricea A determină condiţionarea unui sistem, termenul liber b neavând
nici un rol; de aceea vorbim de ”condiţionarea matricei A” ı̂n loc de ”condiţionarea
sistemului”. Vom ataşa un indice notaţiei κ(A) atunci când vom preciza norma
folosită ı̂n (2.48); de exemplu, κ∞ (A) = kA−1 k∞ · kAk∞ . Între norme echivalente,
alegerea uneia anume pentru evaluarea lui κ(A) nu este relevantă, ordinul de mărime
al rezultatului fiind acelaşi; de obicei, dintre normele p se alege κ∞ (A) pentru
2.7. CONDIŢIONAREA SISTEMELOR LINIARE 99
uşurinţa calculului (vezi mai jos). Să notăm că κp (A) ≥ 1 şi κ2 (A) = 1 dacă şi
numai dacă A este ortogonală (demonstraţi !).
Este intuitiv faptul că un sistem este cu atât mai rău condiţionat cu cât matricea
A este mai ”aproape” de o matrice singulară. Trebuie subliniat că măsura acestei
apropieri este dată de numărul de condiţionare şi nu de determinantul matricei A.
Exemplul 2.1 Să considerăm matricele D, T ∈ Rn×n
0.1 1 −1 . . . −1
0.1
1 . . . −1
D= .. , T = .. .. .
. . .
0.1 1
Fiind diagonală, este evident că D este bine condiţionată; se verifică imediat că
κ(D) = 1, ı̂n schimb det(D) = 10−n , adică, dacă de exemplu n = 20, o va-
loare foarte mică. Pentru matricea triunghiulară T situaţia este contrară: deşi
det(A) = 1, matricea este rău condiţionată pentru că κ∞ (T ) = n2n−1 (U = T −1
este inferior triunghiulară unitate cu elementele uij = 2j−i−1 , pentru j > i, deci
kT −1 k∞ = 1 + 2 + 22 + . . . + 2n−2 = 2n−1 − 1. Pe de altă parte, kT k∞ = n). ♦
Un mod uzual dar naiv de verificare a posteriori a ”calităţii” soluţiei calculate
x̂ a unui sistem liniar Ax = b constă ı̂n a calcula norma reziduului r = b − Ax̂, i.e.
krk = kb − Ax̂k
şi de a conchide că dacă krk este ”mic”, atunci x̂ este o soluţie precisă. De fapt,
această concluzie, corectă pentru matricele bine condiţionate, poate să nu fie (şi
de cele mai multe ori nu este) adevărată dacă matricea A este rău condiţionată.
Într-adevăr, soluţia exactă este x = A−1 b, astfel că avem
x − x̂ = A−1 b − A−1 (b − r) = A−1 r,
deci eroarea relativă este mărginită conform relaţiei
kx − x̂k kA−1 rk kA−1 k · krk krk krk
= ≤ ≤ κ(A) ≤ κ(A) ,
kxk kA−1 bk kA−1 rk kAk · kA−1 bk kbk
pentru orice normă consistentă k · k. Astfel, testul ”r este mic” e valid doar dacă
matricea A este bine condiţionată.
Exemplul 2.2 Matricele Hilbert Hn ∈ Rn×n , definite prin hij = 1/(i + j − 1) sunt
rău condiţionate, κ(Hn ) crescând foarte repede cu n. De exemplu, κ∞ (H3 ) ≈ 748.
Dacă luăm
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 soluţia sistemului H3 x = b (ı̂n acest exemplu am ales x şi am calculat
b). Pentru soluţia ”aproximativă” x̂ avem
kb − H3 x̂k∞ kx − x̂k∞
≈ 1.7 · 10−5 , ≈ 8.6 · 10−3 .
kbk∞ kxk∞
100 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUAŢII LINIARE
Deci, deşi reziduul kb − H3 x̂k este relativ mic faţă de b, eroarea relativă a soluţiei
aproximative x̂ este mult mai mare, de aproximativ 510 ori, i.e. cu un factor de
mărime de ordinul lui κ∞ (H3 ). ♦
kA−1 f k∞ kyk∞
Ay = d ⇒ kA−1 k∞ = sup ≥ .
f 6=0 kf k∞ kdk∞
Problema este de a găsi un vector d care conduce la un y suficient de mare ı̂n normă.
Considerăm cazul simplu ı̂n care A este inferior triunghiulară. Deoarece sistemul
Ay = d se rezolvă prin substituţie ı̂nainte (algoritmul LTRIS), elementele lui d nu
trebuie precizate toate de la ı̂nceput ci se pot alege convenabil pe măsură ce sistemul
este rezolvat. O primă idee constă ı̂n a considera di ∈ {1, −1} (deci kdk∞ = 1) şi
de a alege ı̂n expresia
i−1
X
yi = (di − aij yj )/aii
j=1
acea valoare di care produce cel mai mare |yi |. Schema de calcul poate fi rezumată
astfel:
ν ≈ kA−1 k∞ 1. Pentru i = 1 : n
Pi−1
1. ζ ← j=1 aij yj
2. Dacă ζ ≥ 0 atunci di ← −1
altfel di ← 1
3. yi ← (di − ζ)/aii
2. ν ← kyk∞
cu k > i, contribuind astfel la majorarea tuturor yk , şi deci a lui kyk∞ . Putem
realiza aceasta alegând 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
± Pi−1
parţiale au valorile zki = j=1 akj yj + aki yi± . Algoritmul rezultat pentru estimarea
numărului de condiţionare κ∞ (A) = kAk∞ kA−1 k∞ este prezentat mai jos; pentru
k fixat, sumele zki de mai sus se memorează ı̂ntr-un scalar notat ζk .
Algoritmul 2.13 (COND – Estimarea numărului de condiţionare)
(Se dă A ∈ Rn×n , inferior triunghiulară nesingulară. Se calculează 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. Dacă 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∞
Execuţia algoritmului necesită aproximativ 3n2 flopi.
Considerăm acum cazul general al unei matrice A ∈ Rn×n a cărei factorizare
P A = LU este cunoscută. Numărul de condiţionare κ∞ (A) se poate estima uti-
lizând următoarea schemă de calcul, a cărei justificare depăşeşte cadrul acestei
lucrări.
κ̄ ≈ κ∞ (A) 1. Se aplică algoritmul 2.13 pentru a obţine o soluţie de
normă cât mai mare a sistemului U T y = d
2. Se rezolvă sistemele triunghiulare LT r = y, Lv = P r,
Uw = v
3. κ̄ ← kAk∞ kwk∞ / krk∞
102 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUAŢII LINIARE
Algoritmul necesită aproximativ 7n2 flopi şi s-a dovedit excelent ı̂n practică,
valorile obţinute fiind de regulă de cel mult 2-5 ori mai mici decât κ∞ (A), ceea ce
constituie o aproximaţie acceptabilă, mai ales ı̂n situaţiile critice când κ∞ (A) are
valori foarte mari.
maxk=1:n βk
γ= .
β1
Numărul real γ este numit factor de creştere, deoarece arată cât de mult cresc
valorile elementelor matricei A ı̂n cursul transformărilor efectuate de algoritmul G.
Teorema 2.8 Matricele M̂1 , M̂2 , . . . , M̂n−1 , Ân = Û calculate ı̂n algoritmul G
satisfac
M̂1−1 . . . M̂n−1
−1
Û = A + E, cu |eij | ≤ nτ β1 γεM , (2.50)
cu τ o constantă de ordinul unităţii, independentă de A.
Se observă că valoarea marginii din (2.50) este determinată ı̂n special de factorul
de creştere γ. Pentru algoritmii GPP şi GPC sunt valabile margini identice cu
(2.50), dar cu valori maxime diferite pentru γ.
• În algoritmul G, factorul de creştere γ poate avea valori oricât de mari; aşadar
acest algoritm este numeric instabil.
• Introducerea pivotării parţiale conduce la γ ≤ 2n−1 . Deşi teoretic această
margine este mare chiar pentru valori modeste ale lui n, totuşi algoritmul
GPP produce rezultate precise ı̂n marea majoritate a cazurilor uzuale (unele
excepţii sunt prezentate ı̂n [?]); marginea este atinsă 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.
• În cazul pivotării complete avem γ ≤ [n · 21 · 31/2 · 41/3 · . . . · n1/(n−1) ]1/2 .
Această margine creşte lent cu n şi practic se poate considera γ ≤ n, ceea ce
ı̂nseamnă că algoritmul GPC este necondiţionat stabil.
• scalare pe linii: D2 = I şi D1 se alege astfel ı̂ncât liniile matricei D1 A să aibă
aproximativ aceeaşi normă ∞.
• echilibrare linii-coloane: D1 şi D2 se aleg astfel ı̂ncât fiecare linie şi coloană
din D1 AD2 să aibă norma ∞ cuprinsă ı̂n intervalul [1/β, 1] (vezi problema
2.26).
De obicei, soluţia calculată a sistemului (2.53) astfel scalat este mai precisă decât
soluţia calculată a sistemului iniţial, dar ı̂n general nu există nici o garanţie ı̂n acest
sens, de aceea scalarea nu trebuie privită ca panaceu universal ci aplicată ı̂n funcţie
de problemă.
Ae = Ax − Ax̂ = b − (b − r) = r. (2.54)
Această egalitate sugerează să rezolvăm sistemul Ae = r, obţinând soluţia ê, şi apoi
să calculăm o nouă soluţie
x̂nou = x̂ + ê, (2.55)
sperând că aceasta este mai precisă decât x̂ (dacă nu ar exista erori numerice ı̂n
rezolvarea sistemului Ae = r, atunci ê = e, deci x̂nou = x). Procedura poate fi
repetată pentru noua soluţie, până la atingerea unei acurateţi mulţumitoare sau
până când nu se mai obţine o ı̂mbunătăţire a acesteia. (Nu discutăm aici modali-
tatea tehnică de estimare a acurateţii soluţiei, care depăşeşte nivelul acestei lucrări.)
Aparent, aşa cum rezultă din (2.52), sistemele Ax = b şi Ae = r se rezolvă
cu acurateţi asemănătoare, ı̂n esenţă dictate de κ∞ (A), iar adunarea soluţiilor lor
ı̂n (2.55) nu ar produce un rezultat mai precis. Se poate ı̂nsă demonstra că, dacă
2.9. SISTEME BANDĂ 105
κ∞ (A)εM ≪ 1, atunci schema de rafinare iterativă sugerată mai sus conduce (de
obicei ı̂ntr-un număr foarte mic de iteraţii) la soluţia aproximativă x̂ satisfăcând
kx̂ − xk∞
≤ 2n · cond(A, x) · εM , (2.56)
kxk∞
unde
def k |A−1 | · |A| · |x| k∞
cond(A, x) = , (2.57)
kxk∞
iar |A| este matricea cu elementele |aij |.
Comparând acum (2.52) şi (2.56) constatăm că ı̂n general rafinarea iterativă
conduce ı̂ntr-adevăr la ı̂mbunătăţirea acurateţii soluţiei calculate deoarece
× × × × × ×
× × × 0 ∗ × × ×
k=1 k=2 k=3
× × × × ∗ × × 0 ∗ ×
−→ 0 −→ −→ . . .
× × × × ×× × × 0 ∗ × ×
× × × × × × × ××
Fig. 2.8: Eliminarea gaussiană aplicată unei matrice bandă de lăţime inferioară 2
şi superioară 1. S-au notat cu ∗ elementele modificate la pasul respectiv, cu 0 cele
anulate, iar cu × cele rămase nemodificate
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 BANDĂ 107
1. Pentru j = k + 1 : min(k + q, n)
1. aij ← aij − µik akj
× × ∗ ∗ ∗ ∗ ×× × ×
× × × × × × 0 ∗ ∗ ∗
× × ×× P1 ∗ ∗
M1 0 ∗ ∗ ∗
−→ −→
× ×× ×
× × ××
× × × ×
×× × × × ×× × × × × ×
× × × ×× × × × ×
× ×× × × × ××
∗ ∗ ∗ ∗
× ×× ×
P2 × × × M2 0 ∗ ∗ ∗ P3
−→ −→
−→ . . .
∗ ∗ ∗ 0 ∗ ∗ ∗
× × × × × × × ×
× × × × × ×
Fig. 2.9: Eliminarea gaussiană cu pivotare parţială aplicată unei matrice bandă
de lăţime inferioară 2 şi superioară 1. S-a presupus că la pasul k se efectuează
permutarea liniilor k (curentă) şi k + 2 (cea mai depărtată posibil de cea curentă)
Comentarii. Numărul de operaţii este mai mare decât pentru algoritmul 2.14,
dar, dacă r ≪ n sau q ≪ n, acesta este totuşi ≪ 2n3 /3. ♦
Lăsăm cititorului problema scrierii unui algoritm eficient de rezolvare a sistemu-
lui Ax = b, atunci când A are structură bandă, utilizând algoritmul 2.15.
În final, precizăm că pivotarea completă distruge structura bandă şi deci nu este
recomandată ı̂n acest caz.
2.10. SISTEME SIMETRICE 109
Aşadar nu este necesară modificarea tuturor elementelor matricei, ci doar a celor din
(să zicem) triunghiul inferior; numărul de operaţii se reduce astfel la aproximativ
jumătate.
Pentru a păstra simetria sunt necesare transformări de congruenţă, adică se
aplică transformările ITE de ambele părţi ale matricei A. Primul pas al eliminării
gaussiene (modificate) va fi acum A ← M1 AM1T = M1 A − (M1 A)e1 mT1 ; deoarece
(M1 A)e1 = a11 e1 , se observă că ı̂nmulţirea la dreapta cu M1T , adică (M1 A)M1T ,
nu afectează decât prima linie a matricei M1 A (identică cu prima linie a matricei
A), anume introducând zerouri ı̂n toate poziţiile din dreapta diagonalei. Aşadar,
din punctul de vedere al implementării, ı̂nmulţirea la dreapta cu M1T nu necesită
calcule.
Continuând analog pentru celelalte coloane, se obţine echivalentul relaţiei (2.10)
ı̂n cazul simetric
def
D = Mn−1 . . . M2 M1 AM1T M2T . . . Mn−1
T
, (2.59)
110 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUAŢII LINIARE
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
Teorema 2.11 Fie A ∈ Rn×n o matrice inversabilă şi simetrică. Atunci exis-
tă o matrice inferior triunghiulară unitate L ∈ Rn×n , o matrice cvasi-diagonală
D ∈ Rn×n cu blocuri diagonale de dimensiune 1 × 1 sau 2 × 2, şi o matrice de
permutare P ∈ Rn×n astfel ı̂ncât
P AP T = LDLT . (2.60)
Desigur, matricea D este inversabilă. Expresia de mai sus este numită factorizare
cvasi-diagonală a matricei A.
2
Constanta α se determină impunând condiţia 1 + α1 = 1 + 1−α 2
, ceea ce
va conduce la factori de creştere (vezi secţiunea √ 2.8) asemănători indiferent de di-
mensiunile pivoţilor. Se obţine α = (1 + 17)/8 ≈ 0.64.
Această strategie de pivotare face ca algoritmul FCD să fie numeric stabil.
O analiză inversă a erorilor conduce la o margine similară cu cea din (2.50), cu
γ ≤ 3n · [21 · 31/2 · 41/3 · . . . · n1/(n−1) ]1/2 ; această margine pentru factorul de creştere
γ este puţin mai mare decât cea pentru eliminarea gaussiană cu pivotare completă
(algoritmul GPC).
Costul pivotării complete este de O(n3 ) comparaţii, la fel ca pentru algoritmul
GPC, ceea ce constituie un efort de calcul important. De aceea este interesantă
găsirea unei strategii de pivotare parţială.
Pivotare parţială. Se poate demonstra că alegerea pivotului căutând pe o sin-
gură coloană (şi eventual pe diagonală) nu poate avea succes. Surprinzător, căutând
pe două coloane se poate descrie o strategie de pivotare parţială eficientă (vezi [?]),
detaliată de schema (ne ocupăm din nou doar de primul pas al factorizării):
P AP T = LDLH ,
Teorema 2.12 Pentru orice matrice simetrică şi pozitiv definită A ∈ Rn×n , există
o unică matrice inferior triunghiulară L ∈ Rn×n , cu elemente diagonale pozitive,
astfel ı̂ncât
A = LLT , (2.67)
expresie care este numită factorizare Cholesky (iar L este numit factorul Cholesky
al matricei A). Reciproc, dacă factorizarea Cholesky există, atunci A este pozitiv
definită.
2.11. SISTEME SIMETRICE POZITIV DEFINITE 115
ı̂n care singura necunoscută este lkk . Conform teoremei 2.12, dacă A este pozitiv
definită, atunci există un unic lkk pozitiv astfel ı̂ncât (2.69) să aibă loc. Atunci,
k−1
X
2
akk − lkj >0 (2.70)
j=1
şi v
u k−1
u X
lkk = takk − 2 .
lkj (2.71)
j=1
116 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUAŢII LINIARE
De asemenea,
k−1
X
aik = lij lkj + lik lkk , i = k + 1 : n,
j=1
ı̂n care, ı̂n ordinea de calcul considerată, singura necunoscută este lik . Aşadar
k−1
X
lik = aik − lij lkj / lkk , i = k + 1 : n. (2.72)
j=1
Formulele (2.68), (2.71) şi (2.72) definesc algoritmul de mai jos; pentru concizie,
am inclus şi primul pas ı̂n bucla de parcurgere a coloanelor. Totodată, acest algoritm
este cel mai bun mijloc de testare a pozitivităţii unei matrice; testul se bazează pe
faptul că factorizarea Cholesky a unei matrice poate fi calculată dacă şi numai
dacă matricea este pozitiv definită (teorema 2.12); aşadar, dacă termenul stâng al
inegalităţii (2.70) nu este pozitiv, atunci matricea A nu este pozitiv definită.
efectuându-se de două ori mai puţine operaţii decât dacă s-ar aplica algoritmul de
eliminare gaussiană.
În privinţa condiţionării, problema rezolvării sistemului pozitiv definit Ax = b
satisface inegalitatea (2.47).
Inversa (care este tot simetrică şi pozitiv definită) şi determinantul unei matrice
simetrice pozitiv definite se calculează adaptând ideile din secţiunea 2.6 la contextul
factorizării Cholesky A = LLT .
Matrice bandă. Dacă A ∈ Rn×n este o matrice simetrică, pozitiv definită
şi bandă de lăţime r, atunci factorul Cholesky este inferior triunghiular bandă de
lăţime r. Aceasta se poate observa cu uşurinţă din relaţia (2.72), ı̂n care un element
lik depinde de valorile lij aflate la stânga sa pe linia i (i.e. j < k); aşadar, li1 = ai1 ,
deci ı̂n prima coloană se moşteneşte structura matricei A; dacă, pentru un indice
de coloană s, avem lij = 0 pentru j = 1 : s − 1, atunci este evident că lis = ais /lss ,
deci structura se moşteneşte şi ı̂n coloana s. În concluzie, linia i are, ı̂n porţiunea
subdiagonală, aceeaşi structură ı̂n A şi L.
Adaptarea algoritmului CHOL la cazul matricelor bandă este un exerciţiu re-
lativ simplu pe care ı̂l lăsăm cititorului (vezi problema 2.36).
Cazul complex. Dacă matricea A ∈ Cn×n este hermitică şi pozitiv definită,
atunci factorizarea sa Cholesky este unică şi are forma
A = LLH ,
unde L ∈ Cn×n este inferior triunghiulară, cu elementele diagonale reale şi pozi-
tive (şi A are elementele diagonale reale, fiind hermitică, şi pozitive, fiind pozitiv
definită). Factorul Cholesky se poate calcula cu algoritmul CHOL uşor modificat,
deoarece (2.71) şi (2.72) se transformă ı̂n
v
u k−1
u X
lkk = takk − lkj lkj , (2.73)
j=1
respectiv
k−1
X
lik = aik − lij lkj / lkk , i = k + 1 : n. (2.74)
j=1
[XIII] (dedicată ı̂n special rezolvării sistemelor liniare) şi EISPACK [XI,XII] (pentru
calculul valorilor proprii şi probleme conexe), cele mai performante şi folosite pa-
chete de programe de calcul numeric ale anilor ’70–’80. De aceea se poate aprecia că
LAPACK este cel mai modern şi puternic instrument de calcul ı̂n algebra matriceală.
În plus, sursele LAPACK sunt disponibile gratuit (vezi http://www.netlib.org).
Numele rutinelor LAPACK respectă convenţiile BLAS (vezi secţiunea 1.11),
adică au forma xyyzzz, unde x codifică formatul de reprezentare a datelor, yy
reprezintă tipul matricei (vezi tabelul 1.1 pentru cele mai importante tipuri), iar
zzz arată operaţia executată.
Rutinele LAPACK sunt ı̂mpărţite ı̂n trei categorii:
• rutine auxiliare.
Rezolvării sistemelor liniare ı̂i sunt dedicate ı̂n LAPACK două tipuri de rutine
driver:
1. Driverul simplu, cu numele de forma xyySV, rezolvă sistemele (cu parte
dreaptă multiplă) AX = B sau AT X = B. De exemplu, xGESV se utilizează pentru
matrice A oarecare (implementând eliminarea gaussiană la nivel de bloc), xPOSV se
utilizează când matricea A este simetrică pozitiv definită (implementând algoritmul
Cholesky la nivel de bloc) etc.
2. Driverul expert, cu numele xyySVX, care, ı̂n plus
În contextul rezolvării de sisteme, rutinele de calcul cele mai importante sunt
următoarele:
MATLAB (MATrix LABoratory) [XIV] are o interfaţă mai simplă, dar rutinele
sale implementează de asemenea algoritmi de mare performanţă.
Rezolvarea sistemului liniar (eventual cu parte dreaptă multiplă) AX = B se
face apelând la operatorul de ”ı̂mpărţire” la stânga; dacă A şi B sunt variabilele
memorând matricea coeficienţilor sistemului şi, respectiv, termenul său drept, atunci
soluţia se calculează cu A\B. Sistemul (cu necunoscuta la stânga) XA = B se rezolvă
utilizând operatorul de ”ı̂mpărţire” la dreapta, soluţia fiind B/A. În ambele cazuri,
algoritmul implementat este eliminarea gaussiană cu pivotare parţială, indiferent
de tipul matricei.
Factorizarea P A = LU este calculată de funcţia lu, iar factorizarea Cholesky
de funcţia chol. Nu există o funcţie dedicată factorizării cvasi-diagonale.
Inversa unei matrice se calculează cu funcţia inv, iar determinantul cu det.
Reamintim că ı̂n nici un caz soluţia unui sistem AX = B nu se calculează cu
inv(A)*B.
Pentru calculul numărului de condiţionare există mai multe funcţii; cond cal-
culează exact κ2 (A), ceea ce necesită mai multe operaţii decât rezolvarea sistemului
liniar Ax = b (algoritmul va fi prezentat ı̂n capitolul 5); rcond estimează 1/κ∞ (A),
utilizând algoritmul din finalul secţiunii 2.7; ı̂n fine, condest estimează 1/κ1 (A) cu
un algoritm neprezentat ı̂n această lucrare.
2.13 Probleme
P 2.1 Descrieţi o variantă a eliminării gaussiene ı̂n care se introduc zerouri ı̂n coloanele
lui A, deasupra diagonalei, ı̂n ordinea n : −1 : 2, şi care produce factorizarea A = U L,
unde U este superior triunghiulară unitate şi L este inferior triunghiulară.
P 2.2 Scrieţi variantele vectoriale ale algoritmilor GPP şi GPC, utilizând apeluri la
funcţii din biblioteca BLAS 1.
n×n
PnA ∈ R
P 2.3 Fie o matrice strict diagonal dominantă pe coloane, i.e. cu proprietatea
|ajj | > i=1,i6=j |aij |. Demonstraţi că pivotarea parţială nu este necesară ı̂n procesul de
eliminare gaussiană şi că toţi multiplicatorii gaussieni sunt subunitari (ı̂n modul).
P 2.4 Fie matricea de transformare elementară Gauss-Jordan M̃k = In − m̃k eTk , definită
de vectorul m̃k = [µ1k . . . µk−1,k 0 µk+1,k . . . µnk ]T .
a. Fie x ∈ Rn , cu xk 6= 0. Determinaţi m̃k astfel ı̂ncât M̃k x = xk ek .
b. Fie A ∈ Rn×n , având submatricele lider principale A[k] nesingulare, k = 1 : n − 1.
Scrieţi un algoritm care, utilizând transformări Gauss-Jordan, diagonalizează matricea A,
i.e. generează M̃1 , M̃2 , . . . , M̃n−1 astfel ı̂ncât M̃n−1 . . . M̃2 M̃1 A = D, cu D diagonală.
Care este numărul de operaţii ?
c. Introduceţi pivotarea ı̂n algoritmul anterior.
P 2.5 Demonstraţi unicitatea factorizării LDU ı̂n condiţiile teoremei 2.4.
P 2.6 Demonstraţi că dacă A ∈ Rn×n admite o factorizare LDU unică, atunci subma-
tricele lider principale A[k] , k = 1 : n − 1, sunt nesingulare. (Indicaţie: utilizaţi reducerea
la absurd.)
120 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUAŢII LINIARE
P 2.7 Demonstraţi că algoritmul GPP modificat conform descrierii din secţiunea 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 ∈ Rn×n pentru a furniza
factorizarea LU cu permutări pe linii şi pe coloane de forma P AQ = LU ? Demonstraţi
că |ukk | ≥ |ukj |, pentru j > k (ı̂n plus, |lik | ≤ 1, pentru i > k).
P 2.9 Adaptaţi algoritmul de eliminare gaussiană cu pivotare parţială astfel ı̂ncât să
calculeze factorizarea (2.32).
P 2.11 Cum trebuie modificaţi algoritmii 2.7 şi 2.8 astfel ı̂ncât să funcţioneze corect şi
atunci când dimensiunea n a matricei nu este multiplu al dimensiunii r a blocurilor ?
Ce este preferabil: (a) rezolvarea sistemului Cz = w cu operaţii complexe sau (b) rezolvarea
sistemului decomplexificat cu operaţii reale ?
P 2.20 Se presupune că A ∈ Rn×n are o factorizare LU şi că L şi U sunt cunoscuţi.
Prezentaţi un algoritm care calculează elementul din poziţia (i, j) a matricei A−1 , cu
aproximativ (n − j)2 + (n − i)2 flopi.
P 2.21 Detaliaţi algoritmii de calcul al inversei unei matrice A ∈ Rn×n şi al det(A),
utilizând eliminarea gaussiană cu pivotare completă.
A−1
+ = A
−1
− A−1 BD+
−1
CA−1 , unde D+ = D + CA−1 B.
P 2.24 Matricea A ∈ Rn×n de mai jos este un exemplu (construit special ı̂n acest scop)
ı̂n care factorul de creştere γ atinge valoarea maximă ı̂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
Demonstraţi că ı̂n algoritmul GPP nu se efectuează nici o permutare şi că γ = 2n−1 .
P 2.26 Se dă A ∈ Rn×n . Să se găsească matricele diagonale D1 şi D2 astfel ı̂ncât fiecare
linie şi coloană din D1 AD2 să aibă norma ∞ egală cu 1. (Impunându-se restricţia ca
elementele matricelor D1 şi D2 să fie puteri ale bazei de numeraţie β, să se construiască
D1 şi D2 astfel ı̂ncât liniile şi coloanele lui D1 AD2 să aibă norma ∞ cuprinsă ı̂n intervalul
[1/β, 1].)
» –
A 0
P 2.27 Fie B = , cu A, R ∈ Rn×n , nesingulare, R superior triunghiulară. Se
R A
presupune că factorizarea LU a lui A există şi este cunoscută (A = LU ).
a. Scrieţi un algoritm pentru calculul factorizării LU a lui B, B = L̃Ũ .
b. Propuneţi un algoritm pentru rezolvarea sistemului liniar Bx = d, ı̂n care d ∈ R2n .
Calculaţi numărul de operaţii pentru ambii algoritmi.
P 2.28 Fie A ∈ R2n×2n » o matrice– nesingulară cu toate submatricele lider principale nesin-
A1 A2
gulare, de forma A = , cu A1 , A2 , A3 , A4 ∈ Rn×n şi A3 superior triunghiulară.
A3 A4
a. Scrieţi un algoritm pentru rezolvarea sistemului liniar Ax = b, cu b ∈ R2n .
b. Aceeaşi problemă, dar presupunând doar că A este nesingulară.
P 2.29 Fie A ∈ Rn×n o matrice nesingulară tridiagonală (aij = 0, pentru i > j + 1 sau
i < j − 1).
a. Adaptaţi algoritmul de eliminare gaussiană la acest tip de matrice.
b. Prezentaţi un algoritm care rezolvă sistemul Ax = b, cu b ∈ Rn .
c. Dacă matricea A este simetrică şi pozitiv definită, adaptaţi algoritmul de factorizare
Cholesky pentru A.
P 2.30 Detaliaţi o procedură de calcul al matricei F = CE −1 din (2.62), pentru cazul
s = 2, utilizând eliminarea gaussiană cu pivotare parţială.
P 2.31 Demonstraţi relaţia (2.65) (care mărgineşte creşterea elementelor matricei sime-
trice A ı̂n timpul execuţiei algoritmul FCD, de factorizare cvasi-diagonală cu pivotare
completă).
P 2.32 Detaliaţi permutările efectuate ı̂n algoritmul de factorizare cvasi-diagonală cu pi-
votare completă (schema FCDPC1 ), operând numai ı̂n triunghiul inferior al matricei si-
metrice date.
P 2.33 Scrieţi un algoritm de calcul al factorului Cholesky L al unei matrice A ∈ Rn×n
pozitiv definite, ı̂n care elementele lui L să fie calculate prin operaţii Saxpy (şi nu DOT,
ca ı̂n algoritmul CHOL). Indicaţie: algoritmul este asemănător eliminării gaussiene.
P 2.34 Scrieţi o variantă la nivel de bloc a algoritmului de factorizare Cholesky a unei
matrice simetrice pozitiv definite.
P 2.35 Fie A ∈ Rn×n o matrice nesingulară inferior bidiagonală, şi T = AAT . Prezentaţi
un algoritm eficient pentru calculul factorizării Cholesky a matricei T (demonstraţi ı̂ntâi
că T este simetrică şi pozitiv definită).
P 2.36 Adaptaţi algoritmul CHOL pentru factorizarea matricelor simetrice pozitiv de-
finite bandă de lăţime r.
P 2.37 Dacă matricea A ∈ Rn×n este simetrică şi pozitiv definită, propuneţi un algo-
ritm pentru factorizarea Cholesky A = RRT , unde R este superior triunghiulară şi are
elementele diagonale pozitive.
P 2.38 Fie A ∈ Rn×n o matrice simetrică şi pozitiv definită. Scrieţi un algoritm de calcul
al factorizării A = LDLT , cu L inferior triunghiulară unitate şi D diagonală. (A = LDLT
mai este numită factorizare Cholesky ”fără radical”.)
Capitolul 3
În acest capitol vom prezenta principalele metode numerice de rezolvare a sistemelor
de ecuaţii liniare
Ax = b, (3.1)
ı̂n care matricea A ∈ Rm×n şi vectorul b ∈ Rm sunt date, iar m 6= n, adică
numărul ecuaţiilor este diferit de cel al necunoscutelor. Întrucât, de regulă, un
sistem supradeterminat (cu m > n) nu are soluţii, iar un sistem subdeterminat (cu
m < n) nu are soluţie unică, pentru a asigura buna formulare a problemei de calcul,
ı̂n prima situaţie trebuie să redefinim, iar ı̂n a doua trebuie să precizăm noţiunea
de ”soluţie” a sistemului (3.1).
În cazul m > n, o reformulare naturală a problemei (3.1) constă ı̂n a cere deter-
minarea unei soluţii aproximative a sistemului (3.1), adică a unui vector
x∗ ∈ Rn astfel ı̂ncât reziduul corespunzător r∗ = b − Ax∗ să fie, ı̂ntr-un anumit
sens, cât mai mic. (Altfel spus, vectorul b trebuie să fie aproximat cât mai bine
printr-o combinaţie liniară a coloanelor lui A.) Într-o exprimare mai precisă, aceasta
ı̂nseamnă că x∗ trebuie să minimizeze funcţia
(3.1). Desigur, pentru ca problema minimizării funcţiei φ să aibă sens, este necesar să presupunem
că sistemul liniar (3.1) are cel puţin o soluţie, i.e. b ∈ ImA.
124 CAPITOLUL 3. PROBLEMA CELOR MAI MICI PĂTRATE
Subliniem din start că alegerea normelor din (3.2) şi (3.3) depinde de natura
problemei considerate şi, ı̂n acelaşi timp, determină specificul metodelor de calcul
utilizate pentru rezolvarea ei. (De exemplu, ı̂n cazul normelor k · k1 sau k · k∞
se obţin probleme de programare liniară, care se rezolvă prin metodele expuse ı̂n
capitolul 2, vezi [X]).
În acest capitol vom considera că normele ν şi µ coincid cu norma euclidiană
k · k = k · k2 , iar terminologia utilizată va fi următoarea.
1. În cazul m ≥ n problema de minimizare
kb − Ax∗ k = minn kb − Axk (3.4)
x∈R
este, prin definiţie, soluţia normală ı̂n sensul CMMP (i.e. soluţia de normă
euclidiană minimă) a sistemului (3.1).
Problemele de tip CMMP enunţate mai sus apar sub diverse forme (inclusiv cu
date complexe) ı̂n multe aplicaţii care, de exemplu, vizează aproximarea funcţiilor,
prelucrarea statistică a datelor experimentale, modelarea şi identificarea sistemelor
dinamice, prelucrarea semnalelor etc.
Exemplul 3.1 Considerăm un proces descris printr-o dependenţă funcţională
y = f0 (u), cunoscută doar parţial din date experimentale constând ı̂ntr-o mulţime
de perechi intrare-ieşire (ui , yi ), unde yi = f0 (ui ), i = 1 : m.
Se pune problema găsirii unei expresii analitice aproximative f pentru funcţia
f0 , sub forma unei combinaţii liniare cu coeficienţii c1 , c2 , . . . , cn a n funcţii date
g1 , g2 , . . . , gn , i.e.
Xn
f (u) = cj gj (u),
j=1
ı̂n care acum reziduurile ri reprezintă erori (sau zgomote) de măsură şi, ı̂n consecinţă,
au o descriere statistică. Se poate arăta că, ı̂n anumite condiţii standard, estimările
optimale ale parametrilor x = [c1 . . . cn ]T sunt soluţii ale problemei CMMP (3.6)
cu exact aceleaşi date A, b ca mai sus. În general, probleme de modelare sistemică
extrem de complicate admit o dublă interpretare, ca probleme de aproximare sau de
estimare, şi ı̂n consecinţă se tratează ı̂n spiritul principiului CMMP. Pentru detalii
şi aplicaţii specifice, cititorul poate consulta [?, ?]. ♦
Teoria problemelor CMMP este intim legată de geometria spaţiului euclidian
Rm , ı̂n special de noţiunea de ortogonalitate, care – după cum vom vedea mai de-
parte – dă un sens (geometric) clar şi extrem de intuitiv problemelor de minimizare
formulate mai sus. În mod corespunzător, practica numerică actuală recomandă
rezolvarea acestor probleme prin metode directe de triangularizare a matricei A,
bazate pe utilizarea transformărilor ortogonale 2 .
De aceea, ı̂n primele secţiuni ale acestui capitol, vom introduce transformările
ortogonale utilizate ı̂n calcule şi vom descrie procedurile corespunzătoare de trian-
gularizare ortogonală. Pe această bază, ı̂n continuare vom prezenta procedurile de
rezolvare a problemelor CMMP de tip (3.4) şi (3.5), insistând totodată asupra unor
aspecte practice importante privind condiţionarea problemelor considerate precum
şi stabilitatea numerică a algoritmilor de calcul propuşi.
3.1.1 Reflectori
Considerăm spaţiul Rm cu produsul scalar (x, y) = y T x şi notăm cu kxk = (xT x)1/2
norma euclidiană indusă. Amintim că o matrice U ∈ Rm×m se numeşte ortogonală
dacă U T U = Im .
2 Aicieste esenţial faptul că norma euclidiană considerată ı̂n (3.4) şi (3.5) este invariantă ı̂n
raport cu grupul transformărilor ortogonale. În legătură cu aceste noţiuni, cititorul este invitat să
consulte capitolul 1.
126 CAPITOLUL 3. PROBLEMA CELOR MAI MICI PĂTRATE
Uk x Y
H
H * x
H
HH
HH
HH
HH
H - -
−νu 0 u (uT x)u
Fig. 3.1: Efectul aplicării unui reflector U asupra unui vector x, ı̂n R2
uuT AT u
Uk A = (Im − )A = A − uv T , unde v= .
β β
Altfel spus, matricea transformată B = Uk A este o modificare de rang 1 a lui A.
• Aplicarea transformării C = AUk , unde acum A ∈ Rl×m are m coloane,
iar Uk acţionează la dreapta, se face partiţionând A pe linii şi observând că, ı̂n
T
virtutea simetriei lui Uk , avem AUk = (Uk AT ) . Prin urmare, asupra coloanelor
lui AT , adică a liniilor lui A, are loc aceeaşi transformare ca mai sus. În particular,
postmultiplicarea cu Uk nu modifică primele k − 1 coloane ale matricei A.
AA. În calculul numeric generarea reflectorilor se face ı̂n scopul introducerii
de zerouri ı̂ntr-un vector. Pe scurt, fiind dat un vector x ∈ Rm , putem determina
un reflector Uk de forma (3.8) astfel ı̂ncât ultimele m − k componente ale vectorului
transformat să fie nule, i.e. (Uk x)i = 0, pentru i = k + 1 : m. Formularea precisă a
acestui fapt esenţial trebuie reţinută.
În virtutea acestui fapt, (3.16) rezultă imediat din (3.11) şi (3.14). ♦
3.1. TRANSFORMĂRI ORTOGONALE 129
x1 x1
.. ..
x1 −σ
.
.
xk−1 xk−1
x2
U1
u2
Uk
.. −→ .. xk
−→
−σ
. . xk+1 uk+1
xm um . .
.. ..
xm um
Fig. 3.2: Efectul aplicării procedurii RFG asupra vectorului x ∈ Rm ; ı̂n stânga,
β = RFG(x); ı̂n dreapta, β = RFG(x(k : m))
x ← U1 x (3.20)
132 CAPITOLUL 3. PROBLEMA CELOR MAI MICI PĂTRATE
se face având ı̂n vedere algoritmul 3.1 precum şi convenţia specifică de memorare
a vectorului Householder u. Notând α = −ν şi ţinând seama că u1 = β, vectorul
transformat poate fi calculat efectuând numai adunări şi ı̂nmulţiri.
U1 x = −σem ,
se face ı̂nlocuind pur şi simplu x1 cu xm ı̂n RFG. (Desigur, acum partea esenţială
a vectorului Householder u este ui , i = 1 : m − 1, iar um = β.) Scrierea detaliată
a procedurilor de generare şi aplicare a reflectorilor modificaţi, notate mai departe
mRFG şi respectiv mRF, este propusă cititorului ca exerciţiu.
Procedurile de calcul cu reflectori sunt prezentate sintetic ı̂n tabelul 3.1.
Subliniem că, ı̂n general, procedurile de generare şi aplicare a reflectorilor apar
ı̂n perechi, modificarea convenţiei de memorare a vectorului Householder din RFG
antrenând după sine o modificare corespunzătoare ı̂n RF.
Ilustrăm utilizarea procedurilor prin două exemple simple, dar extrem de im-
portante pentru ı̂ntreaga expunere ulterioară.
3.1. TRANSFORMĂRI ORTOGONALE 133
Desigur, reflectorul U1 obţinut la pasul 1 poate fi aplicat mai departe unei alte
matrice, atâta timp cât partea esenţială A(2 : m, 1) a vectorului Householder u
precum şi scalarul β sunt disponibili. De exemplu, dacă C ∈ Rl×m , atunci trans-
formarea la dreapta C ← CU1 se efectuează partiţionând C pe linii, i.e.
1. Pentru i = 1 : l
1. RF(A(:, 1), β, C(i, :)).
♦
3.1.2 Rotaţii
După cum se ştie, ı̂n cazul m = 2 o rotaţie (plană) de unghi θ se reprezintă prin
matricea
cos θ − sin θ
P = . (3.21)
sin θ cos θ
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 că, ı̂n accepţiunea noastră, o rotaţie este definită de
două numere reale c, s, satisfăcând condiţia c2 + s2 = 1. Evident, ı̂n acest fel se evită utilizarea
ı̂n calcule a funcţiilor trigonometrice.
3.1. TRANSFORMĂRI ORTOGONALE 135
Numerele reale
xk xi
c= , s= (3.24)
r r
definesc o rotaţie Pki de ordin m ı̂n planul (k, i) astfel ı̂ncât
(
xl , pentru l 6= k, i
(Pki x)l = r, pentru l = k (3.25)
0, pentru l = i.
precum şi c2 + s2 = 1. ♦
Precizând (deocamdată arbitrar) semnul lui r, relaţiile (3.23) şi (3.24) conduc
la următorul algoritm de calcul al rotaţiei Pki cu proprietatea cerută.
2
x2 6 x
>
r
- -
x1 P12 x 1
Fig. 3.3: Efectul aplicării unei rotaţii P12 asupra unui vector x ∈ R2
ı̂n care rotaţiile Pki anulează aceleaşi componente ı̂n ordine inversă, adică xi ,
i = m : −1 : k + 1.
Menţionăm că ı̂n practică se utilizează frecvent secvenţe de rotaţii disjuncte care
au proprietăţi numerice mai bune, vezi problemele 3.14 şi 3.22 8 . ♦
1. c = 1, s = 0
altfel
2. Dacă |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. Dacă c = 0 atunci
1. z = 1
altfel dacă |x2 | ≥ |x1 | atunci
2. z = 1/c
altfel
3. z = s
6. x2 = z
x ← Px (3.30)
se face direct numai dacă parametrii c, s sunt disponibili ca atare; ı̂n caz contrar, ı̂n
prealabil are loc reconstrucţia lor pe baza scalarului z, utilizând secvenţa următoare.
138 CAPITOLUL 3. PROBLEMA CELOR MAI MICI PĂTRATE
Tabelul 3.2: Proceduri de calcul cu rotaţii. (N.B. Semnificaţia lui z este precizată
ı̂n text)
Xm
kxk = (xH x)1/2 = ( |xi |2 )1/2 .
i=1
3.2. TRANSFORMĂRI UNITARE 139
Im 6
'$Γ
9
0rr r Re-
&%
τ = β1 = 2
kuk2
sau
σ = sgn(Rex1 )kxk. (3.37)
(Reţinem că ı̂n primul caz σ ∈ C, iar ı̂n al doilea σ ∈ R.)
În continuare scriem ca de obicei
uuH
QH
1 x = (Im − )x = x − νu, (3.38)
β
unde
uH x
ν= . (3.39)
β
Prin urmare, relaţia (3.35) are loc dacă şi numai dacă u = (x + σe1 )/ν, sau pe
componente
x1 + σ xi
u1 = ; ui = , i = 2 : m. (3.40)
ν ν
De asemenea, trebuie să avem
şi respectiv
xi
u1 = 1;
ui = , i=2:m
x1 + σ (3.43)
x 1
τ = 1 + 1 , (β = ).
σ τ̄
În practica numerică actuală se ı̂ntâlnesc două versiuni de implementare a rela-
ţiilor de calcul stabilite mai sus.
• În LINPACK [XIII] se asociază relaţiile (3.36) şi (3.42). În consecinţă, para-
metrul β = u1 rezultă real, deci reflectorul obţinut este hermitic, QH 1 = Q1 . În
schimb, prima componentă a vectorului transformat
x1 ← −σ
3.2. TRANSFORMĂRI UNITARE 141
Comentarii. Calculul normei euclidiene la pasul 2.1 se poate face utilizând funcţia
complexă CNRM2 din BLAS 1. ♦
AA. Fie acum x ∈ Cm un vector arbitrar, iar Q1 un reflector dat. Aplicarea
transformărilor
x ← QH1 x, x ← Q1 x (3.44)
se face ţinând seama de relaţiile (3.38), (3.39) precum şi de tipul reflectorului con-
siderat.
• Dacă Q1 este un reflector hermitic, atunci cele două transformări (3.44) co-
incid, iar procedura corespunzătoare diferă de procedura reală RF numai prin uti-
lizarea produsului scalar complex la pasul 1.1, vezi (3.39).
•• Dacă Q1 este un reflector complex, generat de procedura CRFG, atunci se
ţine seama că prima componentă u1 = 1 a vectorului Householder nu este memorată
ca atare. Scrierea procedurii de transformare corespunzătoare primei relaţii (3.44),
de exemplu notată CRF, este propusă ca exerciţiu.
Procedurile de calcul cu reflectori complecşi sunt prezentate ı̂n tabelul 3.3 10 .
La fel ca ı̂n cazul real, tipic procedura CRFG se utilizează pentru a introduce
zerouri ı̂ntr-o anumită coloană a unei matrice A, iar procedura CRF se utilizează
pentru a transforma ı̂n mod corespunzător celelalte coloane.
Presupunând că tabloul A e dimensionat adecvat, ı̂n general există patru tipuri
de transformări posibile, două la stânga (QA şi QH A) şi două la dreapta (AQ şi
AQH ). În primul caz A se partiţionează pe coloane şi fiecărei coloane i se aplică
transformarea corespunzătoare. În al doilea caz A se partiţionează pe linii. 11
10 Procedurile de calcul cu reflectori complecşi modificaţi, e.g. CmRFG etc. se scriu similar cu
2. x1 ← r = x2 , x2 = 0
altfel
3. α = x1 / |x1 |
4. ρ = kxk
5. c = |x1 | / ρ, s = αx̄2 / ρ
6. x1 ← r = αρ, x2 = 0
x ← P x, (3.52)
de exemplu notată CROT, se scrie cu uşurinţă ı̂n maniera algoritmului 3.3, dar,
desigur, ţinând seama de forma actuală (3.45) a lui P .
Procedurile de calcul cu rotaţii complexe sunt prezentate sintetic ı̂n tabelul 3.4.
Pe scurt, orice matrice este unitar echivalentă (la stânga) cu o matrice superior
triunghiulară. A doua relaţie arată că A poate fi scrisă sub forma unui produs
A = QR, unde Q este unitară, iar R este superior triunghiulară. În calculul numeric,
această relaţie se numeşte factorizare QR, de aceea procedurile de calcul stabilite
pe baza relaţiei fundamentale (3.53) vor fi notate cu sigla QR. (Asupra factorizării
QR vom reveni pe larg ı̂n secţiunea următoare.)
Demonstraţia va fi constructivă, conducând la o procedură de triangularizare
ortogonală a matricei A utilizând reflectori sau rotaţii. Pentru precizare, ı̂n cele ce
urmează alegem prima posibilitate.
În cazul real, ne referim la faptele stabilite ı̂n secţiunea 3.1.1 şi pentru claritate
considerăm succesiv două situaţii cu semnificaţii structurale distincte.
În cazul m > n matricea de transformare va fi un produs de reflectori, i.e.
U = Q T = Un . . . U2 U1 ,
(U1 a1 )i = 0, i = 2 : m.
are toate elementele subdiagonale ale primei coloane egale cu zero, i.e. este superior
triunghiulară ı̂n prima coloană. Dacă ai1 = 0 pentru i = 2 : m, atunci luăm
pur şi simplu U1 = Im şi trecem la etapa următoare. (Matricea unitate Im este
ortogonală !)
Etapa k, k = 2 : n. Presupunem că după desfăşurarea primelor k − 1 etape ale
procedurii am obţinut matricea
Ak = Uk−1 . . . U2 U1 A
3.3. TRIANGULARIZAREA ORTOGONALĂ 145
(k)
Acum, dacă elementele aik , i = k + 1 : m, nu sunt toate nule, atunci există un
reflector Uk ∈ Rm×m de ordinul m şi indice k, astfel ı̂ncât
(k)
(Uk ak )i = 0, i = k + 1 : m.
(Altfel, luăm Uk = Im şi trecem la etapa următoare.) Tinând cont de faptul că
orice reflector de indice k nu modifică un vector ale cărui ultime m − k + 1 elemente
sunt nule (vezi (3.11), unde ν = 0), rezultă că matricea
(k) (k)
Ak+1 = Uk Ak = [Uk a1 . . . U k ak . . . Uk a(k)
n ]
nu trebuie să fie neapărat superior triunghiulară. De exemplu, ı̂n cazul m = n, ma-
tricea A poate fi adusă la forma inferior triunghiulară utilizând reflectorii modificaţi
din observaţia 3.1. Această posibilitate va fi discutată ı̂n finalul secţiunii următoare.
De asemenea, transformările unitare de echivalenţă pot fi aplicate la dreapta matri-
cei A, după cum vom arăta ı̂n secţiunea 3.6. În toate cazurile, tehnica de lucru este
aceeaşi, iar alegerea procedurii de triangularizare adecvate este dictată de structura
problemei considerate. ♦
Dacă matricea A este monică, i.e. are coloane independente, atunci la fiecare
etapă elementele aik , i = k : m, ale matricei curente A nu sunt toate nule. În
consecinţă, pentru a determina reflectorul Uk (adică vectorul Householder uk şi
scalarul βk ), la pasul 1.1 se utilizează algoritmul 3.2, aplicat vectorului x = A(:, k).
(Componentele nenule ale vectorilor Householder uk vor fi notate uik , i = k : m.)
Pentru calculul transformării de la pasul 1.2 se utilizează algoritmul 3.1 aplicat
vectorilor x = A(:, j), j = k + 1 : n. Combinând ideile de mai sus, rezultă imediat
În general, fie acum A ∈ Cm×n o matrice oarecare. Pentru uniformizarea scrierii,
def
ı̂n cazul m ≤ n completăm şirul de transformări din (3.55) cu Um = Im . De aseme-
H
nea, notăm s = min(m, n), precum şi Uk = Qk , unde Qk sunt reflectorii com-
plecşi (ı̂n particular hermitici) utilizaţi pentru anularea elementelor subdiagonale la
etapele k = 1 : s. Cu aceste notaţii, relaţiile (3.54) şi (3.55) pot fi scrise ı̂mpreună
sub forma (3.53), unde
U = QH = QH H H
s . . . Q2 Q1 , (3.56)
iar schema de triangularizare devine
• În cazul real sau ı̂n cazul utilizării reflectorilor hermitici de forma (3.31) avem
QH k = Qk , iar implementarea schemei QR are la bază procedurile RFG şi RF din
tabelul 3.1. Componentele uik , i = k + 1 : m, ale vectorilor Householder uk se
memorează natural pe poziţiile elementelor anulate, iar scalarii βk se memorează
ı̂ntr-un vector suplimentar, ca ı̂n următoarea diagramă corespunzătoare situaţiei de
după 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 redactează astfel.
2. Dacă σ 6= 0 atunci
akk
1. Dacă 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 ūik aij ) /βk
2. aij ← aij + αuik , pentru i = k : m
% elementul diagonal
5. akk = −σ
Comentarii. În cazul real, algoritmul 3.5 necesită NQR operaţii 12 şi este numeric
stabil, după cum vom arăta ı̂n secţiunea 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-ieşire. Subliniem că algoritmul 3.5 nu calculează explicit reflectorii Qk
din (3.56), şi cu atât mai puţin matricea de transformare QH , ci doar memorează
(extrem de economic) toate elementele necesare pentru definirea acestora. ♦
Exemplul 3.5 În cazul matricelor cu structură specială, algoritmul general prezen-
tat mai sus se adaptează ı̂n mod corespunzător, având ı̂n vedere conservarea struc-
turii şi exploatarea acesteia
ı̂n scopul reducerii numărului de operaţii. În acest sens
R
fie matricea A+ = , ı̂n care blocul lider R ∈ Cn×n este deja superior tri-
C
unghiular, iar C ∈ C(m−n)×n este un bloc dat cu l = m − n ≥ 1 linii. Schema de
triangularizare ortogonală este
H R+
Q A+ = , QH = QH H H
n . . . Q2 Q1 ,
0
ı̂nmulţiri complexe. Deoarece o adunare complexă este echivalentă cu 2 adunări (reale), iar o
ı̂nmulţire complexă este echivalentă cu două adunări şi patru ı̂nmulţiri, algoritmul 3.5 cere 4N
adunări şi 4N ı̂nmulţiri, adică 8N (sau 4NQR ) operaţii reale (flopi).
3.4. FACTORIZAREA QR 149
Modul de apel este [τ, A] = CQR(A), unde τ este acum vectorul complex cu
componentele τk , k = 1 : s.
3.4 Factorizarea QR
În această secţiune vom utiliza procedurile de triangularizare ortogonală stabilite
ı̂n secţiunea anterioară pentru a construi factorizarea QR a unei matrice A ∈ Cm×n
de formă generală. Notăm ca de obicei s = min(m, n).
În cazul m ≥ n din (3.53) şi (3.56) rezultă
′
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 PĂTRATE
este unitară iar R este superior triunghiulară ca ı̂n (3.54). (În particular, dacă
m = n atunci R = R′ .) Partiţionând Q conform cu R, i.e.
Q = [ Q′ Q′′ ], (3.59)
|{z} |{z}
n m−n
Teorema 3.2 Orice matrice A ∈ Cm×n cu m ≥ n poate fi scrisă sub forma (3.60),
unde Q′ ∈ Cm×n are coloane ortogonale, iar R′ ∈ Cn×n este superior triunghiulară.
Prin definiţie, relaţia (3.60) constituie factorizarea QR a matricei A. Dacă A
este monică, atunci R′ rezultă inversabilă şi reciproc. În acest caz, factorizarea
QR este unică dacă ı̂n plus impunem condiţia ca factorul triunghiular R′ să aibă
elemente diagonale (reale şi) pozitive.
adică Q1 are coloanele ortogonale, şi ı̂n plus A = Q1 R1 . Prin urmare, unicitatea
factorizării QR rezultă din unicitatea factorizării Cholesky, i.e. dacă R′ satisface
condiţia din enunţ atunci R′ = R1 şi Q′ = Q1 . (Condiţia ca elementele diagonale
ale lui R′ să fie pozitive poate fi ı̂ntotdeauna satisfăcută, dar, de obicei, nu prezintă
interes ı̂n practică.) ♦
QR Ch 1. Se formează G = AH A
2. Se calculează R1 efectuând factorizarea Cholesky G = R1H R1
3. Se calculează Q1 = AR1−1 rezolvând sistemul supe-
rior triunghiular Q1 R1 = A
3.4. FACTORIZAREA QR 151
Trebuie ı̂nsă să subliniem că această metodă, deşi conceptual extrem de simplă,
nu este recomandabilă din punct de vedere numeric deoarece matricea G, rezultată
la pasul 1 prin ”ridicarea la pătrat” a lui A, este rău condiţionată, vezi mai departe
propoziţia 3.5. În consecinţă, rezultatele calculate la paşii 2 şi 3 sunt afectate de erori
străine de problemă şi eventual catastrofale, independent de calitatea algoritmilor
utilizaţi. Ca regulă generală, formarea gramianului G = AH A trebuie sistematic
evitată ı̂n favoarea operării directe asupra matricei date A.
b) O serie de probleme de calcul, vizând de exemplu actualizarea unor factorizări
LU sau Cholesky, pot fi reformulate ı̂n termenii unei factorizări QR echivalente şi
rezolvate ı̂n consecinţă aplicând procedurile numeric stabile bazate pe utilizarea
transformărilor ortogonale. Spre deosebire de abordarea de la punctul a), această
idee, care constituie baza unei ı̂ntregi familii de metode de calcul, tradiţional numite
”de rădăcină pătrată”, este larg aplicată ı̂n practică. ♦
G+ = G + C H C,
ı̂n care C ∈ Cl×n este o matrice dată. În particular, dacă l = 1, i.e. C = cT este
un vector linie, atunci G+ este o modificare de rang 1 a lui G.
Această problemă poate fi rezolvată extrem de simplu, fără a forma explicit G+ ,
observând că
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. În consecinţă, factorul Cholesky
căutat R+ poate fi determinat efectuând triangularizarea ortogonală a matricei A+ ,
construite direct cu elementele date R şi C.
O idee asemănătore se aplică pentru a efectua actualizarea factorizării Cholesky
ı̂n cazul unei modificări de rang 2, i.e.
S⊥
q3
6
- q2 S
q1
se verifică uşor că P12 = P1 şi P1H = P1 , iar faptul că ImP1 = S este evident.
Echivalenţa celor două expresii ale lui P1 rezultă din (3.60).)
În mod similar, matricea Q′′ ∈ Cm×(m−n) (care, ı̂n (3.59), completează Q′ până
la o matrice unitară Q), constituie o bază ortogonală a subspaţiului complementar
S ⊥ = KerAH . Proiectorul ortogonal pe S ⊥ este P2 = Q′′ Q′′H şi, ı̂n plus, avem
P1 + P2 = Im .
Pe scurt, partiţia (3.59) a matricei unitare Q corespunde descompunerii ortogo-
nale fundamentale
Cm = ImA ⊕ KerAH , (3.62)
furnizând baze ortogonale pentru ambele subspaţii. Cazul m = 3, n = 2 este ilustrat
ı̂n figura 3.5. În consecinţă, orice vector b ∈ Cm se scrie unic sub forma b = b1 + b2 ,
unde bi = Pi b, i = 1 : 2, sunt proiecţiile ortogonale ale lui b pe S şi, respectiv, S ⊥ .
În cazul m < n, din (3.53) şi (3.56) rezultă
A = QR, R = [R′ S], (3.63)
A′ = QR′ , (3.64)
unde, evident, A′ = A[m] este submatricea lider principală a matricei A.
Dacă A′ este inversabilă, atunci R′ are aceeaşi proprietate, iar din (3.64) şi
B = QS rezultă B = A′ (R′ )−1 S. Altfel spus, ı̂ntre coloanele matricei A există
relaţia B = A′ X, unde X = (R′ )−1 S este soluţia sistemului triunghiular R′ X = S,
prin urmare matricea
−X
N=
Im−n
not
constituie o bază (neortogonală) a subspaţiului N = KerA ∈ Cn . (Se constată
imediat că A este epică şi AN = 0.)
Trebuie ı̂nsă să observăm că, ı̂n absenţa unei strategii adecvate de pivotare a
coloanelor, condiţia de inversabilitate menţionată mai sus nu este ı̂ndeplinită, astfel
3.4. FACTORIZAREA QR 153
Acest mod de lucru se justifică având ı̂n vedere că, ı̂n general, un anumit algoritm de calcul trebuie
să manevreze un număr cât mai mic de tablouri de lucru.
154 CAPITOLUL 3. PROBLEMA CELOR MAI MICI PĂTRATE
% coloana k
3. aik ← −aik , i = k : m
4. akk = 1 + akk
altfel
5. aik = 0, pentru i = k + 1 : m
6. akk = 1
Comentarii. În cazul real, algoritmul 3.6 necesită NQR operaţii, care (la fel ca
ı̂n algoritmul 3.5) se consumă pentru actualizarea coloanelor la pasul 2.1.2. Modul
de apel este A = GQR(A, β). Reţinem că determinarea explicită a factorizării
QR a matricei A prin apelarea succesivă a procedurilor QR şi GQR necesită ı̂n
total 2NQR operaţii, deci este relativ costisitoare. Pentru utilizare ı̂n capitolele
următoare, sintaxa unei astfel de proceduri de factorizare QR este [Q, R] = FQR(A)
(lăsăm cititorului micile detalii de implementare). ♦
În contextul procedurii de triangularizare CQR, care utilizează reflectori complecşi,
schema de acumulare GQR rămâne evident valabilă. Implementarea ei ”directă”, bazată
pe aplicarea la pasul 2 a procedurii de transformare CRF pentru actualizarea coloanelor
lui Q′ , este extrem de simplă.
GCQR % Acumularea primelor n coloane Q′ ale matricei Q = Q1 Q2 . . . Qn ,
m ≥ n, unde Qk sunt reflectori complecşi.
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 ı̂nsă că procedura GCQR ı̂n forma scrisă mai sus este neeficientă deoarece
nu exploatează structura specială a matricei Q′ care, pe măsura aplicării transformărilor
la pasul 2, se ”umple” progresiv, ı̂ncepând cu ultima coloană. (Un calcul simplu arată
că, ı̂n cazul m = n, algoritmul GCQR necesită Nop = 2n3 operaţii complexe, adică cu
50% mai mult decât algoritmul 3.6.) Modificările necesare pentru a corecta acest defect,
permiţând totodată formarea lui Q′ pe loc ı̂n tabloul A, pot fi aduse de către cititorul
interesat, eventual după o analiză comparativă cu algoritmul 3.6.
Matricea Q′′ , care completează Q′ până la o matrice unitară, poate fi calculată
sub forma
′′ 0 0
Q =Q = Q1 Q2 . . . Qn , (3.66)
Im−n Im−n
utilizând o schemă de acumulare similară, dar mai puţin eficientă. (Evident, acum
tabloul A trebuie extins cu m − n coloane necesare pentru a memora Q′′ .)14
În final, subliniem că formarea matricelor Q′ , Q′′ sau Q prin acumularea trans-
formărilor este relativ costisitoare. De aceea, ı̂n contextul aplicaţiilor considerate
ı̂n acest capitol, se recomandă evitarea acestui calcul ı̂n favoarea utilizării formei
factorizate (3.58) a matricei Q, furnizată ca atare de algoritmii de triangularizare
QR.
14 În cazul m < n, cu referire la (3.64), calculul matricei Q se poate face apelând direct procedura
GQR sub forma A(:, 1 : m) = GQR(A(:, 1 : m), β). După execuţie, rezultatul dorit Q suprascrie
blocul lider A′ al matricei A.
3.4. FACTORIZAREA QR 155
B ← QH B = QH H H
s . . . Q2 Q1 B (3.67)
şi
B ← QB = Q1 Q2 . . . Qs B (3.68)
se face partiţionând B pe coloane.
În cazul (3.67), schema de calcul este evident următoarea.
Comentarii. În cazul real cu m ≥ n, algoritmul 3.7 necesită Nop = pNm operaţii,
unde am notat cu Nm = 2n(2m − n) numărul de operaţii necesar pentru a aplica
transformarea (3.67) unui vector b cu m componente. ♦
În contextul procedurii de triangularizare CQR, schema MQR se implementează astfel.
În cazul (3.68) se procedează analog. Dacă Qk sunt reflectori hermitici, atunci
algoritmul rezultat diferă de algoritmul 3.7 numai prin ordinea de aplicare a trans-
formărilor. Având ı̂n vedere simplificarea redactării unor proceduri ulterioare, vom
presupune că ambele transformări (3.67) şi (3.68) pot fi efectuate apelând o singură
procedură, al cărei mod de apel este B = MQR(TRANS, A, β, B), unde TRANS
este o variabilă logică cu valorile ’da’ ı̂n cazul (3.67), respectiv ’nu’ ı̂n cazul (3.68).
Scrierea acestei proceduri (din care jumătatea ’da’ coincide cu algoritmul 3.7) con-
situie un exerciţiu uşor.
Aplicarea transformărilor la dreapta B ← BQ şi B ← BQH se face partiţionând
B pe linii şi ţinând seama de precizările făcute ı̂n finalul secţiunii 3.2.1. Scrierea
procedurii corespunzătoare, de exemplu notată MQRd, este propusă ca exerciţiu.
(La nevoie, cele două proceduri MQR şi MQRd pot fi reunite ı̂ntr-una singură
introducând o variabilă suplimentară SIDE, aşa cum se procedează ı̂n LAPACK.)
În concluzia expunerii de până acum, subliniem că procedurile de triangularizare,
acumulare şi transformare, notate generic QR, GQR şi MQR, apar ı̂ntotdeauna ı̂n
triplete, orice modificare a procedurii fundamentale de triangularizare QR, ı̂n ceea
ce priveşte calculul şi memorarea transformărilor Qk , k = 1 : s, antrenând după sine
modificări corespunzătoare ı̂n procedurile asociate GQR şi MQR. Având ı̂n vedere
recomandările făcute ı̂n finalul secţiunii precedente, procedura de acumulare GQR
se utilizează numai ı̂n caz de strictă necesitate. Aproape ı̂ntotdeauna, obiectivele
urmărite prin calcul pot fi atinse utilizând procedura de transformare MQR care
operează direct cu forma factorizată a matricei Q.
Qb = Qk Qk+1 . . . Qk+nb −1 ,
şi se aplică procedura Bl1 cu noile date. Matricea Q̃b rezultată este de forma
ı̂n practică. (Indicele b va fi omis.) Aceste reprezentări se numesc reflectori bloc, iar
elementele lor definitorii se construiesc exploatând relaţia recurentă
Q = Q1 , Q ← Q+ = QQi , i = 2 : nb .
Q = I − Y W H, (3.71)
W = u1 , Y = τ1 u1 .
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 , formată prin alăturarea vectorilor House-
holder ui , este produsă şi memorată ca atare de către procedura CQR pe poziţiile
subdiagonale din tabloul Ab . (Întrucât primele i − 1 componente ale vectorilor
Householder ui sunt nule, iar uii = 1, W este chiar inferior trapezoidală unitate.)
În consecinţă, reprezentarea WY este complet definită de tabloul Y , a cărui proce-
dură de formare (vezi pasul 2 al schemei Bl1 ) este următoarea.
% Formarea lui Y
1. Y (:, 1) = τ1 u1
2. Pentru i = 2 : nb
1. Y (:, i) = (τi ui ) − Y (W H (τi ui ))
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 efectuează utilizând GEMM şi cer 4mnb (n − nb ) operaţii. Sin-
gurul neajuns al reprezentării WY constă ı̂n necesitatea formării tabloului de lucru
suplimentar Y de dimensiune m × nb , relativ mare.
3.4. FACTORIZAREA QR 159
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 defineşte complet repre-
zentarea W2 T, este următoarea.
% 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 aplică
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 analiză simplă arată că ı̂n acest caz este suficient un singur tablou de lucru de
dimensiune nb × n, relativ mică. În primele nb coloane ale acestuia se formează T ,
iar ı̂n coloanele următoare se depune produsul intermediar N = W H B. (Subliniem
că blocurile T utilizate ı̂n etapele succesive ale procedurii de triangularizare nu se
memorează, ci se formează pe măsură ce sunt necesare.) Numărul de operaţii este
(4m+nb )nb (n−nb ). Creşterea numărului de operaţii este compensată de memorarea
mai compactă a reprezentării triunghiulare.
Combinând ideile de mai sus, procedura de triangularizare ortogonală la nivel
de bloc poate fi rezumată astfel.
160 CAPITOLUL 3. PROBLEMA CELOR MAI MICI PĂTRATE
În redactarea de mai sus, Ab este tabloul de lucru din memoria rapidă ı̂n care
se efectuează triangularizarea blocului curent, iar B şi N sunt blocurile utilizate de
GEMM ı̂n procesul de aplicare a transformării. (În caz de necesitate, blocul B poate
fi tratat sub formă partiţionată.) Amintim că tabloul W este format şi memorat
ca atare ı̂n triunghiul strict inferior al blocului Ab obţinut la pasul 1.3. Evident, ı̂n
cazul nb = 1 procedura de mai sus se reduce la CQR. Instrucţiunile 1.2, 1.4, 1.5.3
şi 1.5.7 efectuează transferul datelor ı̂ntre memoria principală şi cea rapidă.
În final, subliniem că procedurile de acumulare şi transformare GCQR şi
MCQR pot fi de asemenea reformulate la nivel de bloc, procedând ı̂n esenţă ca la
pasul 1.5 al algoritmului de mai sus.
unde vectorul q1 este normat, i.e. kq1 k = 1, deci r11 = ka1 k şi q1 = a1 /r11 . În
general avem
aj = q1 r1j + . . . + qj−1 rj−1,j + qj rjj ,
j−1
X
rjj = kaj − qk rkj k.
k=1
Aici este important să subliniem că, deşi cele două proceduri sunt echivalente din
punct de vedere matematic, iar numărul de operaţii este acelaşi ı̂n ambele cazuri,
NGS = 2mn2 , totuşi performanţele lor numerice sunt diferite. Procedura GS este
numeric instabilă atât ca mijloc de calcul al factorizării QR cât şi ca metodă de
rezolvare a problemei CMMP. În schimb, procedura MGS furnizează o factorizare
QR satisfăcătoare (ı̂n sensul că, de regulă, vectorii calculaţi qj rezultă ortogonali
ı̂n precizia de lucru) şi constituie totodată un algoritm numeric stabil pentru re-
zolvarea problemei CMMP. De aceea, ı̂n multe situaţii, procedura MGS (imple-
mentată ı̂ngrijit) poate constitui o alternativă viabilă faţă de perechea QR, GQR,
relativ mai costisitoare.
162 CAPITOLUL 3. PROBLEMA CELOR MAI MICI PĂTRATE
3.4.5 Factorizarea QL
În unele aplicaţii matricea A este adusă la forma inferior triunghiulară ı̂n raport cu
diagonala secundară care ı̂ncepe din colţul dreapta-jos, i.e.
QH A = L, (3.75)
unde lij = 0, i < m − n + j, j = 1 : n, iar Q este unitară. (Pentru simplitate am
presupus m ≥ n.)
Procesul de triangularizare parcurge coloanele ı̂n ordine inversă, ı̂ncepând cu
ultima şi anulează elementele situate deasupra diagonalei secundare utilizând reflec-
tori modificaţi. Notând reflectorii cu indicele coloanei ı̂n care se păstrează vectorii
Householder corespunzători, putem scrie
QH = QH H H
1 Q2 . . . Qn , (3.76)
iar procedura de calcul poate fi rezumată astfel.
QL % Schema de triangularizare QL, cazul m ≥ n
1. Pentru k = n : −1 : 1
1. Se generează Qk a.ı̂. (QH
k A)ik = 0, i = 1 : m − n + k − 1
2. A ← QH k A
La pasul 1.1 se utilizează o procedură de tip mRFG (vezi tabelul 3.1), iar la
pasul 1.2 se modifică numai primele m − n + k elemente din coloanele j = 1 : k − 1,
utilizând procedura corespunzătoare mRF.
Aplicaţiile procedurii de triangularizare QL sunt perfect similare cu aplicaţiile
descrise mai sus ale procedurii QR (vezi problemele 3.42, 3.43).
În primul rând, vom stabili condiţiile ı̂n care problema (3.77) este bine definită,
i.e. are o soluţie unică.
Teorema 3.3 Oricare ar fi vectorul b ∈ Cm , problema (3.77) are o soluţie unică
dacă şi numai dacă matricea A ∈ Cm×n este monică, i.e. m ≥ n şi rangA = n.
În acest caz, pseudosoluţia ı̂n sensul CMMP a sistemului Ax = b poate fi scrisă
ı̂n forma
x∗ = A+ b, (3.78)
ı̂n care matricea A+ ∈ Cn×m este prin definiţie pseudoinversa lui A şi are expresia
Ax∗ = b1 , (3.82)
iar din (3.81) se vede că orice astfel de x∗ are proprietatea (3.77) şi reciproc.
Existenţa pseudosoluţiei x∗ este demonstrată.
Relaţia (3.82) arată că cea mai bună aproximare b∗ = Ax∗ a lui b pe S = ImA
coincide cu proiecţia ortogonală b1 , deci b∗ = b1 există ı̂ntotdeauna şi este unic
determinată oricare ar fi A. Această afirmaţie constituie lema proiecţiei ortogonale
şi reprezintă generalizarea unui fapt binecunoscut din geometria elementară. Pe
scurt (vezi (3.77) şi figura 3.6), distanţa minimă de la un punct b la un subspaţiu
S este lungimea (euclidiană) a perpendicularei duse din b pe S.
Consideraţiile geometrice de mai sus pot fi exprimate analitic. Notând
r∗ = b − Ax∗ , din (3.80) şi (3.82) se vede că r∗ = b2 , unde b2 ∈ S ⊥ = KerAH ,
deci AH r∗ = 0. Prin urmare avem
∗
Im A r b
= , (3.83)
AH 0 x∗ 0
AH Ax∗ = AH b. (3.84)
diagonală descrise ı̂n secţiunea 2.10, dar acestea nu sunt eficiente ı̂n cazul de faţă deoarece nu
exploatează structura specială a sistemului considerat (vezi problema 3.52).
164 CAPITOLUL 3. PROBLEMA CELOR MAI MICI PĂTRATE
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⊥
S Ch 1. Se formează c = AH b
2. Se formează G = AH A
3. Se efectuează factorizarea Cholesky G = R1H R1
4. Se calculează x∗ rezolvând succesiv sistemele
triunghiulare R1H y = c şi R1 x∗ = y.
Trebuie ı̂nsă să subliniem că, la fel ca ı̂n observaţia 3.4, această metodă (deşi
relativ economică şi extrem de compactă) nu este recomandabilă din punct de vedere
numeric, deoarece matricea G = AH A este rău condiţionată. Cu precauţie, ea poate
fi avută ı̂n vedere, ı̂n special dacă m ≫ n, iar economia de memorie realizată prin
formarea lui G constituie un obiectiv esenţial.
b) Soluţiile unor sisteme liniare cu matrice pozitiv definite având structură de
gramian pot fi determinate aplicând ideea algoritmilor de rădăcină pătrată bazaţi
pe utilizarea transformărilor unitare (vezi observaţia 3.4). Acest mod de lucru,
frecvent utilizat ı̂n practica actuală, este ilustrat prin problema 3.46. ♦
unde Q este unitară, iar R′ este superior triunghiulară inversabilă. Aplicând trans-
formarea QH ambilor membri ai sistemului Ax = b şi notând
′
H d }n
Q b = d, d = , (3.86)
d′′ }m − n
În general, ı̂n (3.87) avem d′′ 6= 0, deci sistemul dat Ax = b este incompatibil.
Pentru a determina pseudosoluţia x∗ , considerăm reziduul r = b − Ax. Din
(3.87) rezultă ′
d − R′ x
QH r = , (3.88)
d′′
unde matricea QH este unitară, deci krk = kQH rk. Prin urmare
R′ x∗ = d′ , (3.90)
teoremei 3.3. Relaţiile (3.80-3.82) şi (3.88-3.90) se corespund ı̂n mod evident.
166 CAPITOLUL 3. PROBLEMA CELOR MAI MICI PĂTRATE
În cazul utilizării algoritmului CQR, implementarea schemei SQR este următoarea.
Pe baza informaţiilor furnizate de schema SQR, putem calcula uşor şi reziduul
de normă minimă r∗ = b − Ax∗ , obţinând astfel soluţia completă a sistemului extins
(3.83). Din (3.88) şi (3.90) obţinem imediat
∗ 0
r =Q , (3.93)
d′′
ı̂n care d′′ are semnificaţia din (3.86). Prin urmare, având ı̂n vedere că vectorul
transformat b ← d = QH b a fost deja calculat la pasul 1, r∗ poate fi obţinut (pe loc
ı̂n b) completând schema SQR cu secvenţa
3. b(1 : n) = 0
4. Pentru k = n : −1 : 1
1. b ← Qk b
3.5. REZOLVAREA PROBLEMEI CMMP 167
calculat fără a determina ı̂n prealabil pseudosoluţia x∗ . În general, toate calculele se fac utilizând
exclusiv informaţiile obţinute la paşii 0 şi 1 ai procedurii CMMP, fără nici o referire la datele
iniţiale A, b care, de altfel, au şi fost distruse.
168 CAPITOLUL 3. PROBLEMA CELOR MAI MICI PĂTRATE
Prin urmare, dacă matricea A este monică, atunci conform teoremei 3.3 fiecare
problemă (3.97) are o soluţie unică x∗j = A+ bj , j = 1 : p, iar matricea
X ∗ = [x∗1 . . . x∗p ], rezultată prin agregarea acestora constituie soluţia unică
X ∗ = A+ B (3.98)
a problemei (3.95).
Procedural, pseudosoluţia X ∗ ∈ Cn×p se calculează simplu, efectuând o sin-
gură dată triangularizarea ortogonală a matricei A şi aplicând apoi repetat algo-
ritmul de rezolvare SQR fiecărei coloane B(:, j), j = 1 : p, a matricei B. Dacă
ı̂n plus se doreşte calculul reziduului de normă Frobenius minimă R∗ = B − AX ∗ ,
atunci se aplică procedura CMMP ı̂n care vectorul b se ı̂nlocuieşte peste tot cu ma-
tricea B. Desigur, ı̂n acest nou context pot fi aplicate avantajos (pe calculatoarele
cu memorie ierarhică) procedurile bloc de triangularizare ortogonală şi aplicare a
transformărilor, expuse ı̂n secţiunea 3.4.4.
1◦ A+ A = In
2◦ AA+ = (AA+ )H .
Prima relaţie afirmă că A+ este o inversă la stânga a matricei A; ı̂n particular,
rangA+ = n, deci A+ este epică. A doua relaţie, ı̂n combinaţie cu prima, arată
3.5. REZOLVAREA PROBLEMEI CMMP 169
Nici această constatare, deşi teoretic extrem de interesantă, nu are ı̂nsă utilitate
calculatorie. Determinarea lui A+ prin rezolvarea sistemului AX = Im utilizând
procedura CMMP este evident neeficientă, deoarece aplicarea transformărilor de la
pasul 1 nu ţine seama de structura specială a membrului drept B = Im .
În sfârşit, din (3.78), prin identificare cu (3.91), (3.92) rezultă
AV H = L, respectiv AZ = L, (3.101)
corespondenţă se numesc duale. De exemplu, relaţiile (3.53) şi (3.101) sunt duale.
3.6. SISTEME LINIARE SUBDETERMINATE 171
V H = Z = Z1 Z2 . . . Zs (3.102)
• În cazul real sau ı̂n cazul utilizării reflectorilor hermitici (Zk = ZkH ), compo-
nentele vkj , j = k + 1 : n, ale vectorilor Householder vk se memorează natural pe
poziţiile elementelor anulate. Algoritmul rezultat poate fi redactat astfel.
Comentarii. În cazul real algoritmul 3.9 necesită NLQ = 2nm2 − m3 /3 operaţii
şi este numeric stabil, după cum vom arăta ı̂n secţiunea 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-ieşire. ♦
•• În cazul utilizării reflectorilor complecşi, detaliile sunt propuse cititorului ca
exerciţiu.
172 CAPITOLUL 3. PROBLEMA CELOR MAI MICI PĂTRATE
3.6.2 Factorizarea LQ
În această secţiune construim factorizarea LQ a unei matrice A ∈ Cm×n de formă
generală.
În cazul m ≤ n, relaţiile (3.101) şi (3.102) pot fi scrise sub forma
L′ |{z}
A = LV, L = [|{z} 0 ], (3.103)
m n−m
unde matricea
H
V = Zm . . . Z2H Z1H (3.104)
este unitară, iar L′ este inferior triunghiulară de ordin m. Partiţionând V = Z H
conform cu L, i.e.
′
V }m
V = , Z = [|{z} Z ′′ ]
Z ′ |{z} (3.105)
V ′′ }n − m
m n−m
Demonstraţia ultimei afirmaţii este evidentă. Mai mult, dacă A este epică,
atunci matricea hermitică G = AAH este pozitiv definită, prin urmare considerând
−1
factorizarea Cholesky G = L1 LH 1 şi definind V1 = L1 A, putem stabili cu uşurinţă
unicitatea factorizării LQ, ı̂n care factorul triunghiular L′ are elementele diagonale
pozitive. ♦
În general, matricea hermitică pozitiv semidefinită G = AAH se numeşte gramian
al (liniilor) lui A. Observaţia 3.4 se reformulează corespunzător ı̂n noul context.
Dacă matricea A este epică, atunci matricea Z ′′ din (3.105) are o semnificaţie
geometrică remarcabilă. Din (3.101) sau (3.103) rezultă AZ = [L′ 0], unde Z are
structura (3.105), deci
AZ ′′ = 0. (3.107)
Mai mult, Z ′′ ∈ Cn×(n−m) are coloanele ortogonale, deci constituie o bază ortogonală
a subspaţiului N = KerA. Proiectorul ortogonal pe N este P2 = Z ′′ Z ′′H .
În mod similar, matricea Z ′ ∈ Cn×m (care, ı̂n (3.105), completează Z ′′ până
la o matrice ortogonală) constituie o bază ortogonală a subspaţiului complementar
N ⊥ = ImAH . Proiectorul ortogonal pe S este P1 = AH (AAH )−1 A sau mai simplu
P1 = Z ′ Z ′H . Pe scurt, partiţia (3.105) corespunde descompunerii ortogonale
Acumularea transformărilor
În cazul m ≤ n, factorizarea LQ a matricei A poate fi determinată utilizând pro-
cedura de triangularizare ortogonală la dreapta din secţiunea anterioară. Factorul
triunghiular L′ se obţine ca atare ı̂n triunghiul inferior al matricei A, iar factorul
ortogonal V ′ poate fi calculat sub forma
Aplicarea transformărilor
La fel ca ı̂n secţiunea 3.4, matricea unitară Z generată de algoritmul de triangu-
larizare LQ aplicat matricei A se utilizează pentru a transforma adecvat o altă
matrice dată B.
Aplicarea transformării
B ← ZB = Z1 Z2 . . . Zs B (3.110)
Procedând ı̂n acelaşi spirit, toate rezultatele din secţiunea 3.4 pot fi reformulate
ı̂n contextul factorizării LQ. Stabilirea versiunii la nivel de bloc a procedurii de
triangularizare la dreapta precum şi a procedurilor de ortogonalizare Gram-Schmidt
sunt propuse cititorului ca exerciţii.
Factorizarea RQ
În unele aplicaţii matricea A este adusă la forma superior triunghiulară ı̂n raport
cu diagonala secundară care ı̂ncepe din colţul dreapta-jos, i.e.
AZ = R, (3.111)
Z = Zm . . . Z2 Z1 , (3.112)
La pasul 1.1 se utilizează o procedură de tip mRFG (vezi tabelul 3.1), iar la
pasul 1.2 se modifică numai primele n − m + k elemente din liniile i = 1 : k − 1,
utilizând procedura corespunzătoare mRF.
Aplicaţiile procedurii de triangularizare RQ sunt perfect similare cu aplicaţiile
descrise mai sus ale procedurii LQ.
Condiţiile de existenţă şi unicitate ale soluţiei normale pot fi formulate astfel.
Teorema 3.4 Oricare ar fi b ∈ Rm , problema (3.113) are o soluţie unică dacă şi
numai dacă A este epică, i.e. m ≤ n şi rangA = m.
În acest caz, soluţia normală x∗ a sistemului Ax = b poate fi scrisă ı̂n forma
x∗ = A+ b, (3.114)
ı̂n care matricea A+ este prin definiţie (pseudo)inversa normală a lui A şi are
expresia
A+ = AT (AAT )−1 . (3.115)
Demonstraţia rezultă uşor (cel puţin ı̂n cazul real) utilizând metodele clasice de
minimizare cu restricţii (problema (3.113) este extrem de simplă). Noi vom proceda
direct, stabilind pe rând a) unicitatea şi b) existenţa globală a soluţiei x∗ .
a) Pentru a demonstra unicitatea, nu e necesar să presupunem că matricea A
este epică, ci doar că
b ∈ ImA, (3.116)
i.e. mulţimea X a soluţiilor sistemului Ax = b nu e vidă. Desigur, ı̂n limbaj
geometric, X este planul (sau varietatea liniară) de ecuaţie Ax = b. Mai precis,
3.6. SISTEME LINIARE SUBDETERMINATE 175
N = KerA ”planul”
Ax = b
x
x2 :
-
N⊥ 0 x = x1
∗
teorema 1.3 din capitolul 1 afirmă că X = x0 + KerA, unde x0 este o soluţie par-
ticulară. În consecinţă, conform lemei proiecţiei ortogonale, soluţia x∗ a problemei
(3.113) coincide cu piciorul perpendicularei din origine pe planul X şi ca atare este
unic determinată, vezi figura 3.7.
La fel ca ı̂n demonstraţia teoremei 3.3, aceste consideraţii geometrice pot fi
exprimate analitic. Planul X este paralel cu subspaţiul N = KerA, deci x∗ ⊥ KerA
sau x∗ ∈ N ⊥ = ImAH , i.e. există (cel puţin) un y ∗ ∈ Cm astfel ı̂ncât x∗ = AH y ∗ .
(În interpretare variaţională, y ∗ este vectorul multiplicatorilor Lagrange asociaţi
restricţiilor egalitate Ax = b din (3.113).) În definitiv avem
∗
In AH x 0
= , (3.117)
A 0 −y ∗ b
de unde, eliminând x∗ rezultă
AAH y ∗ = b, x∗ = AH y ∗ . (3.118)
b) Existenţa globală a lui x∗ este asigurată, i.e. (3.116) are loc oricare ar fi
b ∈ Cm , dacă şi numai dacă A este epică. În acest caz, matricea G = AAH este
pozitiv definită deci inversabilă, iar (3.114) şi (3.115) rezultă din (3.118). ♦
Observaţia 3.6 Sistemul extins (3.117) şi sistemul normal (3.118) au o semnificaţie
similară cu cea a sistemelor (3.83) şi respectiv (3.84) din observaţia anterioară. Si
aici gramianul G = AAH este o matrice rău condiţionată, astfel ı̂ncât, ı̂n general,
calculul soluţiei normale prin rezolvarea sistemului (3.118) nu este recomandabil. ♦
Relaţia de mai sus arată că, ı̂n procesul de minimizare din (3.113), vectorul u′ = u′∗
este fixat prin
Lu′∗ = b, (3.122)
iar u′′ este liber.
Pentru a determina soluţia normală x∗ , considerăm (3.120), unde Z este orto-
gonală, deci kZuk = kuk. Avem
u′′∗ = 0. (3.124)
3.7.1 Preliminarii
Considerăm sistemul liniar
Ax = b, (3.127)
unde A ∈ Rm×n este o matrice dată, iar b ∈ Rn este un vector arbitrar. Notăm
r = rangA şi presupunem că matricea A este de rang maxim, i.e. r = s, unde
s = min(m, n) 22 . În consecinţă, conform teoremelor 3.5 şi 3.6, sistemul (3.127) are
o soluţie ı̂n sens CMMP unică
x∗ = A+ b, (3.128)
unde matricea A+ are expresii diferite după cum m ≥ n sau m ≤ n.
Având ı̂n vedere concizia expunerii, ı̂n cele ce urmează vom adopta o terminolo-
gie precum şi notaţii cât mai uniforme. Vom spune că A+ este inversa (ı̂n sens
21 Deoarece această tematică are un caracter pur matematic, i.e. nu vizează calitatea algoritmilor
de calcul, pe parcurs vom utiliza formulele cele mai convenabile pentru scopul propus.
22 O proprietate P definită pe Rm×n se numeşte tipică dacă este generică şi structural stabilă,
adică are loc ”aproape peste tot” (ı̂n afara unei varietăţi algebrice) şi se conservă oricare ar fi
micile variaţii ale (elementelor) matricei considerate.
De exemplu, ı̂n cazul m = n, proprietatea de inversabilitate este generică (are loc peste tot
ı̂n afara varietăţii definite de ecuaţia detA = 0) şi structural stabilă (dacă detA 6= 0, atunci
det(A + E) 6= 0, oricare ar fi perturbaţia E suficient de mică). Pe scurt, matricele inversabile sunt
tipice ı̂n Rn×n . Similar, matricele de rang maxim sunt tipice ı̂n Rm×n .
178 CAPITOLUL 3. PROBLEMA CELOR MAI MICI PĂTRATE
CMMP a) matricei A şi vom defini numărul de condiţionare (la inversare) al lui A
prin
κ(A) = kAkkA+ k, (3.129)
unde k · k = k · k2 este norma spectrală, indusă de norma (vectorială) euclidiană
kxk = (xT x)1/2 , adică
def
kAk = max kAxk. (3.130)
kxk=1
Desigur, ı̂n cazul m = n avem A+ = A−1 , deci (3.129) se reduce la definiţia cunos-
cută a lui κ(A) din secţiunea 2.7 23 .
Direct din (3.129) şi (3.130),
(i) dacă matricea A este ortogonală, atunci κ(A) = 1, i.e. matricele ortogonale
sunt perfect condiţionate la inversare.
Pe de altă parte, norma euclidiană precum şi norma spectrală sunt ortogonal
invariante, deci
(ii) transformările ortogonale nu modifică condiţionarea datelor, i.e. avem
κ(A) = κ(QT AZ), oricare ar fi matricele ortogonale Q şi Z.
Proprietăţile remarcabile (i) şi (ii) explică folosirea intensivă a matricelor or-
togonale ı̂n calculul numeric. (Aceleaşi proprietăţi de invarianţă apar şi ı̂n norma
Frobenius k · kF , care este şi ea ortogonal invariantă. Numărul de condiţionare
evaluat folosind această normă este notat κF (A).)
Revenim acum la sistemul (3.127), ı̂n care prin ipoteză matricea A este de rang
maxim şi facem următoarele precizări.
• În cazul m ≥ n matricea A este monică, iar A+ = (AT A)−1 AT este epică.
Evident, avem A+ A = In , deci A+ este o inversă la stânga a lui A, dar AA+ 6= Im ,
mai precis P1 = AA+ şi P2 = Im − P1 sunt proiectorii (ortogonali) pe subspaţiile
S = ImA şi respectiv S ⊥ = KerA. De asemenea, este adevărat că kAk2 = kAT Ak
sau, pe scurt,
kAk2 = kGk, (3.131)
unde matricea simetrică G = AT A este gramianul (coloanelor) matricei A.
•• În cazul m ≤ n matricea A este epică, iar A+ = AT (AAT )−1 este monică.
Evident, acum avem AA+ = Im , deci A+ este o inversa la dreapta a lui A, iar
P1 = A+ A şi P2 = Im − P1 sunt proiectorii pe subspaţiile N ⊥ = ImAT şi respectiv
N = KerA. De asemenea, are loc relaţia (3.131), unde matricea G = AAT este
gramianul (liniilor) matricei A.
Putem acum formula concis primele noastre rezultate.
deci (3.132) rezultă direct, utilizând definiţia lui κ(G) precum şi relaţiile (3.131) şi
(3.133). Cazul m ≤ n este similar; desigur acum H = (A+ )T A+ . ♦
Demonstraţie. În cazul m ≥ n putem scrie  = (Im + EA+ )A, unde, conform
unui rezultat cunoscut, matricea Im + EA+ este inversabilă dacă kEA+ k < 1. Dar
ı̂ntotdeauna avem kEA+ k ≤ kEk · kA+ k. Prin urmare, dacă (3.134) are loc, atunci
A şi  sunt echivalente (la stânga), deci  rezultă monică o dată cu A. În cazul
m ≤ n scriem  = A(In + A+ E) şi raţionăm similar. ♦
Propoziţia 3.5 arată că sistemele normale (3.84) şi (3.118) 24 sunt mult mai
rău condiţionate decât sistemul dat (3.127) şi explică de ce determinarea soluţiei
x∗ prin rezolvarea acestor sisteme este ı̂ntotdeauna contraindicată din punct de
vedere numeric. Propoziţia 3.6 arată că soluţia x∗ este robustă, i.e. continuă să
fie bine definită chiar dacă matricea A a sistemului (3.127) suferă perturbaţii E
relativ importante. Conform relaţiei (3.134), aceste perturbaţii sunt strict limitate
ı̂n normă numai de κ(A). Pentru orientare, dacă κ(A) = 103 , atunci κ(G) = 106 ,
deci la rezolvarea ı̂n simplă precizie (i.e. cu t = 7 cifre zecimale semnificative) a
sistemului normal se pierd aproape toate cifrele semnificative. Pe de altă parte, dacă
kAk ≈ 1, atunci perturbaţiile admisibile ı̂n A sunt numai de ordinul kEk < 10−3 .
Concluziile obţinute mai sus subliniază importanţa deosebită a numărului de
condiţionare κ(A) pentru caracterizarea din punct de vedere numeric a problemei
(3.127). În continuare vom preciza aceste concluzii, efectuând analiza cantitativă a
sensibilităţii (locale) a soluţiei x∗ ı̂n raport cu perturbaţiile datelor. În consecinţă,
vom considera sistemul perturbat
(A + E)x = b + f, (3.135)
ı̂n care perturbaţiile E şi 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 şi ǫb sunt de acelaşi ordin de mărime şi, ı̂n orice caz, ǫA < κ−1 (A).
Notând cu x̂∗ soluţia ı̂n sens CMMP a sistemului perturbat (3.136), problema
de analiză a sensibilităţii constă pe scurt ı̂n a evalua diferenţa ∆x = x̂∗ − x∗ .
24 A căror matrice este evident G = AT A, respectiv G = AAT .
180 CAPITOLUL 3. PROBLEMA CELOR MAI MICI PĂTRATE
b >
r ∗ = b2
θ
b1 = Ax∗
În sfârşit, avem b1 = Ax∗ , deci kb1 k ≤ kAk · kx∗ k, iar din figura 3.8 se vede că
kr∗ k kbk 1
= tgθ, = .
kb1 k kb1 k cos θ
3.7. CONDIŢIONAREA PROBLEMELOR CMMP 181
Observaţia 3.7 Putem obţine uşor o evaluare mai fină decât (3.137), ţinând
seama că ı̂n (3.138) perturbaţiile E şi f acţionează diferenţiat. În acest scop scriem
E = E1 + E2 , unde Eα = Pα E, α = 1 : 2, sunt proiecţiile (coloanelor) lui
E pe subspaţiile S şi respectiv S ⊥ . Avem A+ E = A+ E1 (deoarece A+ P2 =
= A+ (I − AA+ ) = 0) precum şi E T r∗ = E2T r∗ (deoarece r∗ = P2 b iar P2 este
proiector ortogonal, i.e. P22 = P2 şi P2T = P2 ). În mod similar avem f = f1 + f2 ,
unde fα = Pα f , α = 1 : 2, iar A+ f = A+ f1 . Prin urmare, relaţia (3.138) poate fi
scrisă sub forma echivalentă, dar mai precisă
kPα Ek ≤ ǫA b
α kAk, kPα f k ≤ ǫα kbk, (3.140)
la algoritmul 3.8. Subliniem că ı̂n acest caz sensibilitatea pseudosoluţiei x∗ depinde nu numai de
matricea A a sistemului (3.127) ci şi de membrul drept b (prin intermediul lui θ).
182 CAPITOLUL 3. PROBLEMA CELOR MAI MICI PĂTRATE
În orice caz, relaţia (3.142) subliniază că elementul determinant ı̂n stabilirea
sensibilităţii pseudosoluţiei este numărul de condiţionare κ(A), de aceea ı̂n practică
se recomandă insistent evaluarea lui κ(A) ı̂n cursul procesului de calcul. Desigur,
dacă am efectuat triangularizarea ortogonală QT A = R a lui A, atunci, beneficiind
de invarianţa ortogonală a normei spectrale, avem
deci κ(A) poate fi estimat extrem de simplu, utilizând estimatorul de condiţie pentru
matrice triunghiulare descris ı̂n secţiunea 2.7. Acelaşi rezultat poate fi obţinut
aplicând procedura de triangularizare ortogonală cu pivotarea coloanelor, descrisă
ı̂n secţiunea 3.9. În acest caz, o (sub)evaluare a lui κ(A) poate fi obţinută prin simplă
inspecţie, sub forma κ̂(A) = r11 /rnn , unde rkk , k = 1 : n, sunt elementele diagonale
ale factorului triunghiular R, dispuse pe diagonală ı̂n ordine descrescătoare.
Pe de altă parte, reexaminând formula fundamentală (3.142), este util să reţinem
că influenţa perturbaţiilor E şi f asupra pseudosoluţiei x∗ depinde de localizarea
acestora ı̂n raport cu subspaţiile S şi S ⊥ . De exemplu, dacă ImE ⊂ ImA, atunci evi-
dent E2 = P2 E = 0, deci sensibilitatea lui x∗ este dictată de κ(A) (iar nu de κ2 (A)),
chiar dacă reziduul r∗ este important. În unele aplicaţii, aceste circumstanţe pot fi
realizate printr-o ”filtrare” prealabilă adecvată a datelor de intrare, dar discutarea
acestor tehnici depăşeşte scopurile expunerii de faţă. În altă ordine de idei, este
evident că perturbaţiile inerente datorate erorilor de rotunjire acţionează ı̂n gen-
eral aleator şi ı̂n orice caz nediferenţiat ı̂n raport cu S şi S ⊥ , astfel ı̂ncât de fapt
dependenţa de κ2 (A) nu poate fi niciodată eliminată complet ı̂n situaţiile practice,
indiferent de măsurile de precauţie luate.
În rezumat, sensibilitatea pseudosoluţiei este determinată de condiţionarea ma-
tricei A precum şi de clasa θ a problemei CMMP considerate. De asemenea, ea
depinde de tipul structural al perturbaţiilor considerate.
kx̂∗ − x∗ k
≤ ǫ1 κ(A), unde ǫ1 = 2ǫA + ǫb . (3.144)
kx∗ k
A∆x + Ex∗ = f, ∆x = AT ∆y + E T y ∗ .
3.8. STABILITATEA ALGORITMILOR DE TRIANGULARIZARE 183
unde y ∗ = (AAT )−1 b = (A+ )T x∗ , iar ı̂n paranteza din membrul drept recunoaştem
proiectorul ortogonal P2 = In − A+ A pe subspaţiul N = KerA. Deoarece P2 este o
matrice simetrică cu valorile proprii 0 şi 1, avem kP2 k = 1. În consecinţă, evaluând
ı̂n normă ambii membri ai relaţiei (3.145), găsim 26
Având ı̂nsă ı̂n vedere structura extrem de simplă a relaţiei (3.145), utilitatea prac-
tică a acestei precizări este aici limitată. ♦
În esenţă, relaţia (3.144) spune că sensibilitatea locală a soluţiei normale x∗ este
proporţională cu numărul de condiţionare κ(A) al matricei A.
Având ı̂n vedere că, ı̂n ipoteza teoremei 3.6, sistemele subdeterminate sunt
ı̂ntotdeauna compatibile, relaţia (3.144) poate fi considerată caz particular al relaţiei
(3.137), ı̂n care r∗ = 0, deci θ = 0. Observăm totuşi că demonstraţiile celor două
teoreme se bazează pe relaţii diferite, iar coeficientul 2 din (3.144) nu apare ı̂n
(3.137). Prin urmare, apelul la (3.137) oferă mai curând o confirmare intuitivă,
decât o justificare fermă a relaţiei (3.144). În rest, implicaţiile practice ale relaţiei
(3.144) sunt similare cu cele cunoscute din secţiunea 2.7.
În rezumat, sensibilitatea soluţiei normale este dictată numai de condiţionarea
matricei A. În acest sens, problema rezolvării sistemelor subdeterminate este relativ
simplă.
ı̂n acest sens, deci este implicit legată de o anume problemă de calcul precizată.
3.8. STABILITATEA ALGORITMILOR DE TRIANGULARIZARE 185
secvenţei [IX].
186 CAPITOLUL 3. PROBLEMA CELOR MAI MICI PĂTRATE
unde (
not ǫ b
1
ǫ1 = ǫA + cos θ = nγcm (1 + cos θ ),
not A (3.156)
ǫ2 = ǫ tgθ = nγcm tgθ.
Relaţia (3.155) arată că ı̂n final acurateţea soluţiei calculate x∗ depinde atât de
condiţionarea κ(A) şi clasa θ ale problemei CMMP considerate, cât şi de nivelul
erorilor ǫα , α = 1 : 2, introduse de algoritmul folosit pentru rezolvarea ei. Conform
relaţiilor (3.155) şi (3.136), acest nivel este determinat de dimensiunile m, n ale
problemei precum şi de precizia de lucru εM conţinută implicit de parametrul generic
γcm (vezi (3.147)).
În general, evaluările de tip (3.155), (3.156) sunt extrem de acoperitoare, dar
totodată au marele merit de a sublinia că ı̂n situaţiile dificile (care, după cum am
văzut, pot fi detectate relativ uşor ı̂n practică) sunt necesare acţiuni suplimentare
(vizând e.g. lucrul ı̂n dublă precizie, rafinarea iterativă a soluţiei calculate x̂∗ etc.),
chiar dacă aceasta se obţine utilizând un algoritm numeric stabil cum este SQR.
•• Considerăm acum problema, relativ mai simplă, a calculului soluţiei normale
x∗ a sistemului (3.127), ı̂n care matricea A este epică. Conform relaţiilor (3.154) şi
(3.144), soluţia normală calculată x̂∗ satisface o relaţie de forma
kx̂∗ − x∗ k
≤ ǫ1 κ(A), (3.157)
kx∗ k
unde
not
ǫ1 = 2ǫA + ǫb = mγcm . (3.158)
Menţionăm că, ı̂n practică, acurateţea soluţiei calculate ı̂n acest mod se dovedeşte
de cele mai multe ori satisfăcătoare.
D1 AD2 x̃ = D1 b, (3.159)
ı̂n care D1 şi D2 sunt matrice inversabile (ı̂n particular diagonale sau triunghiulare)
alese ı̂n mod adecvat.
Matricea D2 realizează scalarea coloanelor lui A, iar introducerea ei se reduce la
schimbarea de variabilă x = D2 x̃. Prin urmare D2 nu alterează pseudosoluţia ı̂n sens
CMMP a sistemului considerat, mai precis dacă x̃∗ este pseudosoluţia sistemului
scalat, atunci pseudosoluţia sistemului iniţial poate fi recuperată utilizând relaţia
x∗ = D2 x̃∗ .
Din contra, matricea D1 , care realizează scalarea liniilor lui A, atrage după sine
modificarea normei din Rm ı̂n raport cu care se formulează problema CMMP şi deci
a pseudosoluţiei corespunzătoare. Într-adevăr, notând cu r̃ = D1 b − D1 Ax reziduul
sistemului scalat, avem r̃ = D1 r, deci
not
kr̃k2 = rT Sr = krk2S , S = D1T D1 ,
3.8. STABILITATEA ALGORITMILOR DE TRIANGULARIZARE 187
În general, problema rafinării iterative a soluţiei aproximative x̂ constă ı̂n con-
strucţia recurentă a unui şir x̂k , k = 0, 1, 2, . . ., convergent (ı̂n precizia de lucru)
către soluţia exactă x a problemei de calcul considerate.
În cazul m = n, ştim din secţiunea 2.8 că un pas al procesului de rafinare se
desfăşoară conform următoarei scheme de principiu. (Pentru simplitate, omitem
indicele de iterare k.)
% Se dă x̂. Se determină aproximaţia următoare x̂+ .
1. Se calculeaza reziduul r = b − Ax̂
2. Se determină corecţia ∆x rezolvând sistemul A∆x = r
3. Se actualizează aproximaţia x̂ ← x̂+ = x̂ + ∆x
188 CAPITOLUL 3. PROBLEMA CELOR MAI MICI PĂTRATE
În cazul m > n, schema de mai sus este, ı̂n principiu, aplicabilă ca atare sistemu-
lui (3.127), dar ea se dovedeşte eficientă numai dacă acest sistem este aproape com-
patibil, i.e. θ ≈ 0 (vezi discuţia din secţiunea 3.7.2). În caz contrar, influenţa rezidu-
ului asupra soluţiei este determinantă (ı̂n acord cu relaţiile (3.137) şi (3.138)), deci
rafinarea iterativă trebuie să se facă corectând simultan evoluţia ambelor mărimi.
Altfel spus, ı̂n problemele specific CMMP, cu reziduu mare, schema de corecţie
prezentată mai sus trebuie aplicată nu sistemului dat (3.127), ci sistemului extins
(3.83).
În consecinţă, presupunând dată o soluţie aproximativă (x̂, r̂) a sistemului extins,
ı̂n primul rând vom calcula reziduul corespunzător
s b Im A r̂
= − , (3.161)
t 0 AT 0 x̂
iar apoi vom determina corecţiile ∆r şi ∆x rezolvând sistemul
Im A ∆r s
= . (3.162)
AT 0 ∆x t
Desigur, ı̂n acest scop vom folosi triangularizarea ortogonală (3.160) a matricei A,
deja calculată ı̂n urma aplicării procedurii CMMP, iar soluţia (∆r, ∆x) va fi obţinută
ı̂n locul membrului drept (s, t).
Pentru a vedea cum este posibil acest lucru, considerăm prima ecuaţie (3.162),
i.e. ∆r + A∆x = s, pe care o premultiplicăm cu QT , vezi (3.160). Notând
QT ∆r = z, efectuând pe loc ı̂n s transformarea
s ← QT s (3.163)
R1 ∆x = s1 − z1 , z 2 = s2 . (3.164)
În continuare, pentru a determina z1 şi ∆x, considerăm a doua ecuaţie (3.148),
i.e. AT ∆r = t. Aici avem ∆r = Qz, iar din (3.160) rezultă AT Q = [R1T 0], deci
R1T z1 = t. (3.165)
Acum este clar că dezideratele formulate mai sus relativ la rezolvarea sistemului
extins (3.162) pot fi realizate procedând ı̂n ordinea (3.163), (3.165), (3.164), după
care ∆r rezultă utilizând relaţia
z1
∆r = Q . (3.166)
z2
QH AΠ = R (3.167)
În consecinţă, |r11 | ≥ |r22 | ≥ . . . ≥ |rss |, i.e. elementele diagonale ale matricei R
sunt ordonate descrescător.
Relaţia (3.167) afirmă că matricele A şi R sunt ortogonal echivalente, ı̂n par-
ticular au acelaşi rang. Prin urmare, dacă A este de rang r ≤ s, atunci ı̂n mod
necesar rkk = 0, k = r + 1 : s, deci ı̂n virtutea relaţiilor (3.168) ultimele m − r linii
ale lui R sunt nule. În consecinţă,
Având ı̂n vedere că situaţia din corolar nu poate fi realizată exact, ı̂n continuare
ne vom concentra atenţia asupra condiţiilor (3.168). Problema determinării rangului
va fi discutată ulterior.
Demonstraţia teoremei 3.7. Procedura de triangularizare ortogonală cu pivotare
are s etape. Fie A1 = A. Vom determina matricea unitară
QH = QH H H
s . . . Q2 Q1 (3.170)
procedând ca ı̂n secţiunea 3.3 (vezi demonstraţia teoremei 3.1), dar acţionând la
fiecare etapă k = 1 : s asupra unei matrice Ak Πk , cu coloanele permutate ı̂n scopul
satisfacerii condiţiei (3.168).
Ţinând seama de invarianţa normei euclidiene ı̂n raport cu transformările unitare
(3.170), aceasta ı̂nseamnă că la etapa k, ı̂n poziţia pivot (adică ı̂n coloana k) trebuie
să se găsească acea coloană j ≥ k a tabloului curent Ak pentru care norma euclidiană
a vectorului Ak (k : m, j) este maximă. Pe scurt, notând
(k)
ρj = kAk (k : m, j)k, j = k : n, (3.171)
Ak+1 = QH
k (Ak Πk ), (3.172)
asupra căruia se va opera similar la etapa următoare. În final, matricea R = As+1
este superior triunghiulară şi satisface (3.168). ♦
Având ı̂n vedere implementarea eficientă a procedurii descrise, ţinem seama de
invarianţa normelor (3.171) ı̂n raport cu transformările (3.172) şi constatăm că
(k) (k+1) 2 (k+1) 2
(ρj )2 = (ρj ) + |akj | . (3.173)
Prin urmare, calculul repetat şi costisitor al normelor (3.171) poate fi evitat, uti-
lizând ı̂n schimb relaţiile de actualizare relativ simple 29
v
u !2
u (k+1)
(k+1) (k) u |akj |
ρj = ρj t 1− (k)
. (3.174)
ρj
În ceea ce priveşte permutările de coloane, ele pot fi memorate ı̂ntr-un vector π
astfel ı̂ncât πk = jk , k = 1 : s, la fel ca ı̂n procedurile de eliminare gaussiană din
capitolul 2. Pentru a putea identifica direct poziţia ı̂n tabloul iniţial A a coloanelor
matricei (permutate) AΠ, aici vom aplica o convenţie de memorare diferită. Vec-
torul π este iniţializat cu indicii coloanelor lui A ı̂n ordinea naturală, iar conţinutul
său este actualizat după fiecare permutare de coloane efectuată. Forma finală a
procedurii de triangularizare se obţine aplicând algoritmul 3.5 la paşii 2.3, 2.4 şi
plasând instrucţiunea 2.5 la locul potrivit.
κ(A).
194 CAPITOLUL 3. PROBLEMA CELOR MAI MICI PĂTRATE
ı̂n care elementele satisfac relaţiile (3.168), blocul lider R1 este superior triunghiular
inversabil, dar blocul R̂2 nu rezultă nul datorită erorilor de calcul inerente. Pentru a
determina rangul r al matricei A, trebuie să efectuăm corect trunchierea factorului
triunghiular R̂, punând
R̂2 = 0, (3.177)
ı̂n acord cu (3.169), ı̂n care evident matricea superior trapezoidală rămasă este
AΠ = Q′ T. (3.181)
ǫ. (Valoarea ǫ = 0 nu este interzisă, dar de obicei conduce la decizia r = s.) Pe de altă parte,
gradul de siguranţă al deciziei de rang poate fi nesatisfăcător, mai ales dacă modulele rkk scad
uniform, fără să ı̂nregistreze vreun ”salt” semnificativ. În asemenea situaţii dificile se recomandă
determinarea rangului pe baza descompunerii valorilor singulare, vezi capitolul 5.
3.9. DESCOMPUNEREA ORTOGONALĂ COMPLETĂ 195
unui set de r coloane liniar independente ale matricei iniţiale A, iar Q′ constituie
”versiunea” lor ortogonalizată. În mod corespunzător, matricea Q′′ = Q(:, r + 1 : n)
constituie o bază ortogonală a subspaţiului complementar S ⊥ = KerAH . (Vom
folosi sintaxa [Q, R, π] = FQRP(A) pentru apelul procedurii de calcul al factorizării
QR cu pivotarea coloanelor; implementarea este lăsată cititorului, cu menţiunea că
acumularea transformărilor ortogonale este identică cu aceea din algoritmul GQR.)
Pe de altă parte, considerând gramianul G = AH A şi ţinând seama de (3.181),
ı̂n care matricea Q′ are coloanele ortogonale, deducem
ΠT GΠ = T H T. (3.182)
Această relaţie se numeşte factorizare Cholesky cu pivotare şi afirmă că, după
o permutare congruentă a liniilor şi coloanelor sale, orice matrice hermitică pozitiv
semidefinită G de rang r admite o factorizare Cholesky ı̂n care factorul superior
trapezoidal T are structura (3.178) 32 .
În multe situaţii constatările de mai sus prezintă un interes intrinsec. Având ı̂n
vedere abordarea problemei generale CMMP, descriem ı̂n continuare ultima fază a
procedurii de triangularizare ortogonală completă.
Z = Zr . . . Z2 Z1 . (3.186)
Acum relaţiile (3.183) şi (3.184) rezultă aplicând Z la dreapta ı̂n (3.169) şi ţinând
not
seama de (3.185). Evident, matricea S ′ = S1 rezultă inversabilă, transformările
32 Subliniem că această factorizare poate fi calculată direct, aplicând matricei G procedura
unitare Q şi Z au expresiile (3.168) şi respectiv (3.186), iar Π este permutarea
produsă de procedura QRP. ♦
Cu referire la o matrice superior trapezoidală oarecare A ∈ Cm×n cu m < n,
schema de triangularizare RQ este următoarea.
Desigur, liniile lui A sunt parcurse ı̂n ordine inversă, ı̂ncepând cu ultima, iar
anularea elementelor are ı̂n vedere conservarea structurii preexistente de zerouri.
În consecinţă, reflectorii Zk sunt de tipul celor din exemplul 3.5, dar aici vectorii
Householder sunt notaţi vk , iar partea lor esenţială vkj , j = m+1 : n, este memorată
pe poziţiile elementelor anulate din liniile lui A, la fel ca ı̂n algoritmul 3.9. Procedura
rezultată din combinarea acestor idei se redactează astfel.
Comentarii. În cazul real, algoritmul cere 2m2 (n − m) operaţii. Modul de apel
este [A, β] = TZRQ(A). ♦
În sinteza ı̂ntregii expuneri de până acum, procedura de triangularizare ortogo-
nală completă, corespunzătoare relaţiilor (3.183) şi (3.184), este următoarea.
Modul de apel este [r, A, β, π, γ] = QRX(A, ǫ). Subliniem că toată informaţia
despre transformările unitare Q şi Z, generate la paşii 1 şi 5, este memorată (extrem
de compact) ı̂n tabloul A.
A = Q′ S ′ X ′H , (3.188)
x∗ = A+ b, (3.190)
unde, prin definiţie, matricea A+ ∈ Cn×m este pseudoinversa normală (sau Moore-
Penrose) a lui A.
ı̂n care matricele Q şi ΠZ sunt unitare, iar S ′ este superior triunghiulară inversabilă
de ordin r = rangA. Aplicând transformarea QH ambilor membri ai sistemului şi
notând ′ ′
H d u
Q b= , x = ΠZ , (3.192)
d′′ u′′
obţinem sistemul ortogonal echivalent
′ ′ ′
S 0 u d
= . (3.193)
0 0 u′′ d′′
La fel ca ı̂n secţiunea 3.5.1, pentru a determina pseudosoluţiile considerăm
reziduul ′
H d − S ′ u′
Q r= , (3.194)
d′′
ı̂n care matricea Q este unitară, deci minimul normei krk = kQH rk se atinge pentru
S ′ u′∗ = d′ . În continuare, la fel ca ı̂n secţiunea 3.6.3, din (3.192), ı̂n care matricea
ΠZ este unitară, rezultă u′′∗ = 0. Prin urmare, pseudosoluţia normală a sistemului
Ax = b este unic determinată prin relaţia
(S ′ )−1 d′
x∗ = ΠZ , (3.195)
0
3.10. RUTINE LAPACK ŞI MATLAB 199
sau
∗ (S ′ )−1 0
x = ΠZ QH b, (3.196)
0 0
din care expresia pseudoinversei A+ este evidentă.
Exploatând forma factorizată a transformărilor unitare QH şi Z, schema de
calcul al pseudosoluţiei normale se stabileşte imediat.
3.11 Probleme
P 3.1 În planul R2 se dă vectorul x = [3 4]T şi se consideră reflectorul elementar
U = I − 2uuT , unde kuk = 1.
a. Fie u = e1 . Să se construiască vectorul transformat y = U x şi să se reprezinte grafic
transformarea. Ce modificări apar dacă u = e2 ?
b. Să se determine vectorul Householder normat u astfel ı̂ncât U x = ρe1 . Câte soluţii
există ? Cât rezultă ρ ?
c. Explicaţi de ce ı̂n calcule este mai bine să presupunem că vectorul u nu este neapărat
normat, introducând scalarul β ca ı̂n (3.8). Rezolvaţi din nou punctul b aplicând algoritmul
3.2 şi observând că ρ = −σ. Justificaţi alegerea semnului lui σ recomandată ı̂n text. Ce
se ı̂ntâmplă dacă x = [3 10−5 ] ?
d. Aplicaţi ı̂n acest caz simplu indicaţiile de implementare ce ı̂nsoţesc algoritmul
3.2. Arătaţi cum se face scalarea vectorului Householder u = [u1 u2 ]T astfel ı̂ncât să
obţinem u1 = β, respectiv u1 = 1. Verificaţi că ı̂n fiecare caz are loc transformarea dorită
U x = −σe1 .
e. Ilustraţi grafic diversele situaţii semnificative ı̂ntâlnite la punctele b–d.
P 3.2 Rezolvaţi problema anterioară ı̂n R3 , considerând de exemplu vectorii x = [3 4 0]T
sau x = [3 4 5]T .
P 3.3 Fie x, y ∈ Rm doi vectori daţi. În ce condiţii există un scalar ρ şi un reflector U
astfel ı̂ncât U x = ρy ? Ce restricţii apar dacă impunem condiţia suplimentară ρ = 1 ?
Scrieţi algoritmii de generare a reflectorului U ı̂n cele două situaţii.
P 3.4 Fie x ∈ Rm un vector dat, x 6= 0.
a. Să se determine un reflector U astfel ı̂ncât prima coloană U e1 a lui U să fie un
multiplu scalar de x, i.e. U e1 = ρx. Cât trebuie să fie ρ ? Câte soluţii există ?
b. Ce semnificaţie geometrică au celelalte coloane U ej , j = 2 : m, ale lui U ?
c. Scrieţi algoritmul de calcul al unei baze ortogonale B = [b1 b2 . . . bm ] a lui Rm ,
unde b1 = x este un vector dat, kxk = 1.
d. Reformulaţi ı̂n mod avantajos punctele a–c de mai sus ı̂n cazul ı̂n care vectorul
dat x are primele k − 1 componente nule, i.e. xi = 0, i = 1 : k − 1. Precizaţi structura
lui U precum şi structura bazei ortogonale B astfel obţinute. Ilustraţi grafic construcţia,
considerând m = 3, k = 2.
e. Reveniţi la punctul a şi ı̂ncercaţi să determinaţi U astfel ı̂ncât U em = ρx. Ce se
schimbă la punctele b–d ?
3.11. PROBLEME 201
P 3.9 Fie S ∈ Rm×m o matrice simetrică pozitiv definită, arbitrară dar fixată. Se
consideră spaţiul vectorial Rm cu produsul scalar (x, y)S = y T Sx şi norma euclidiană
kxk2S = (x, x)S . Doi vectori x, y ∈ Rm se numesc S-ortogonali dacă (x, y)S = 0. Matricea
A se numeşte S-simetrică dacă (y, Ax)S = (Ay, x)S , ∀x, y ∈ Rm , adică SA = AT S sau
A = S −1 AT S. Matricea U ∈ Rm×m se numeşte S-ortogonală dacă păstrează produsul
scalar (·, ·)S , i.e. (U x, U y)S = (x, y)S , ∀x, y ∈ Rm , adică U T SU = S.
a. Să se arate că orice matrice S-ortogonală este asemenea cu o matrice ortogo-
nală. Să se deducă de aici că, ı̂n general, după o transformare de coordonate convenabilă,
proprietăţile geometrice ale spaţiului Rm dotat cu produsul scalar (·, ·)S se reduc la pro-
prietăţile euclidiene ”uzuale”.
b. Să se definească noţiunea de S-reflector elementar şi să se studieze principalele
proprietăţi ale acestui tip de transformări. Cum se implementează avantajos algoritmii de
generare şi aplicare a reflectorilor S-ortogonali ?
202 CAPITOLUL 3. PROBLEMA CELOR MAI MICI PĂTRATE
P 3.10 Păstrăm aceeaşi terminologie ca ı̂n problema anterioară chiar dacă matricea si-
metrică (inversabilă) S este de semn nedefinit. În particular, fie S = J, unde
» –
Ip 0
J= , p + q = m. (3.197)
0 −Iq
Observaţie. Spaţiul Rm cu produsul scalar ”nedefinit” (·, ·)J se numeşte spaţiu pseu-
doeuclidian (sau spaţiu hiperbolic) de signatură (p, q). Mulţimea vectorilor din Rm cu
proprietatea
p m
X X
kxk2J = 0 ⇔ x2i − x2i = 0 (3.198)
i=1 i=p+1
uuT J 1
U = Im − , β= kuk2J . (3.199)
β 2
Să se scrie algoritmul de aplicare a transformării x ← y = U x şi să se verifice prin calcul
direct că kU xkJ = kxkJ .
b. Fie x ∈ Rm un vector dat. Să se stabilească ı̂n ce condiţii există un J-reflector de
forma (3.199) astfel ı̂ncât
U x = −σe1 , σ ∈ R − {0} (3.200)
şi să se scrie algoritmul de generare a lui U . Discuţie.
c. Fie S o matrice simetrică inversabilă. Să se stabilească ı̂n ce condiţii S admite
factorizări de forma S = RT JR sau S = LT JL, ı̂n care R şi L sunt matrice superior,
respectiv inferior triunghiulare. Să se scrie algoritmii de factorizare Cholesky ”cu semn”,
corespunzători celor două relaţii de mai sus.
d. Arătaţi că dacă există două matrice pătrate A şi B (nu neapărat triunghiulare)
astfel ı̂ncât S = AT JA = B T JB, atunci există o matrice J-ortogonală Q astfel ı̂ncât
B = QA. Altfel spus, oricare doi factori ”cu semn” ai lui S sunt J-ortogonal echivalenţi.
P 3.11 În planul R2 se dă vectorul x = [3 4]T şi se consideră rotaţia plană P = P12 cu
parametrii c, s. √
a. Fie c = 3/2, s = 1/2. Să se calculeze vectorul transformat y = P x şi să se
reprezinte grafic transformarea.
b. Să se determine c, s astfel ı̂ncât P x = re1 . Câte soluţii există ? Cât rezultă r ?
P 3.12 Fie x, y ∈ Rm doi vectori daţi. În ce condiţii există un scalar ρ şi o rotaţie Pki
astfel ı̂ncât Pki x = ρy ?
P 3.13 Fie P o rotaţie plană. Calculaţi detP şi determinaţi valorile şi vectorii proprii ai
matricei P .
P 3.14 Fie x ∈ Rm un vector dat.
a. Scrieţi algoritmii de generare a unei secvenţe de rotaţii P astfel ı̂ncât P x = re1 .
Analizaţi diversele variante posibile.
b. Acelaşi enunţ, utilizând o grupare convenabilă a rotaţiilor ı̂n secvenţe de rotaţii
disjuncte (vezi observaţia 3.2).
P 3.15 Se dă o matrice A ∈ Rm×m . Să se scrie algoritmii de aplicare a transformărilor
A ← P A şi A ← AP T , unde P sunt secvenţele de rotaţii generate ı̂n problema 3.14.
34 Cel mai simplu exemplu este planul Lobacevski R2 cu p = 1, q = 1. Spaţiul Minkovsky din
teoria relativităţii este R4 cu p = 1, q = 3. În acest caz (3.198) se numeşte con de lumină, iar
transformările J-ortogonale formează grupul Poincaré al lui R4 .
3.11. PROBLEME 203
P 3.27 Ce simplificări apar ı̂n problema precedentă dacă A este superior Hessenberg, iar
C = cT este un vector linie având numai ultima componentă nenulă ?
P 3.28 Fie A ∈ Rm×n monică, cu m > n. Utilizând informaţia furnizată de algoritmul de
triangularizare cu reflectori Un . . . U2 U1 A = R, scrieţi algoritmul de acumulare a primelor
p coloane ale matricei Q = U1 U2 . . . Un , unde p ∈ 1 : m este un ı̂ntreg dat. Calculaţi
numărul de operaţii ı̂n funcţie de p. Cum memoraţi rezultatul ? Discutaţi cazul ı̂n care
matricea A nu este neapărat monică.
P 3.29 Aceeaşi problemă ca mai sus, utilizând algoritmul de triangularizare ortogonală
cu rotaţii.
P 3.30 Fie Q matricea din problema 3.28. Precizaţi care dintre schemele următoare
realizează mai eficient acumularea lui Q şi de ce.
1. Q = Im 1. Q = Im
2. Pentru k = 1 : n 2. Pentru k = n : −1 : 1
1. Q ← QUk 1. Q ← Uk Q
» –
δ
b. rezolvarea sistemului A+ x+ = b+ , unde b+ = , cu b ∈ Rm şi δ ∈ R daţi.
b
c. Stabiliţi o relaţie ı̂ntre pseudosoluţiile x∗+ şi x∗ ale sistemelor A+ x+ = b+ , respectiv
Ax = b. » –
Z
d. Consideraţi cazul general A+ = , cu Z ∈ Rp×n .
A
P 3.38 Fie B ∈ Rm×p o matrice dată, iar Q = Q1 Q2 . . . Qn matricea din problema 3.28.
Scrieţi algoritmul de aplicare a transformărilor B ← QT B şi B ← QB la nivel de bloc.
P 3.40 În condiţiile problemei 3.28, scrieţi un algoritm pentru calculul vectorului y = Ax,
cu x ∈ Rn dat. (N.B. Matricea A a fost distrusă ı̂n urma execuţiei algoritmului de
triangularizare.)
P 3.42 Scrieţi procedurile GQL şi MQL de acumulare şi aplicare a transformărilor gene-
rate de algoritmul de triangularizare QL.
P 3.45 Rezolvaţi problemele 3.24-3.26 ı̂nlocuind peste tot matricele superior triunghiulare
R şi R+ cu matrice inferior triunghiulare. Reformulaţi ı̂n acelaşi spirit problema 3.27.
(G + C T C)x+ = c + C T y,
ı̂n care G = RT R este o matrice simetrică pozitiv definită al cărei factor Cholesky superior
triunghiular R este cunoscut, iar matricea C ∈ Rl×n precum şi vectorii c ∈ Rn , y ∈ Rl
sunt daţi. Stabiliţi o relaţie ı̂ntre x+ şi soluţia x a sistemului Gx = c.
b. Aceeaşi problemă 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.54 Fie A ∈ Rm×n , b ∈ Rm . De asemenea, fie S ∈ Rm×m şi T ∈ Rn×n două matrice
pozitiv definite. Consideraţi funcţia pătratică
F (x) = kb − Axk2S + kxk2T ,
unde notaţiile sunt cele din problema 3.9.
a. Arătaţi că F are un punct de minim unic x∗ şi scrieţi un algoritm care calculează
x şi ρ = F (x∗ ).
∗
b. Analizaţi separat problema CMMP ponderată, ı̂n care F (x) = kb − Axk2S . (Aici S
se numeşte tradiţional matrice pondere.)
P 3.55 Consideraţi problema de minimizare cu restricţii liniare
F (x∗ ) = min F (x),
Ax=b
unde F este funcţia pătratică din problema 3.53, matricea A ∈ Rm×n este epică, iar
b ∈ Rm .
a. Scrieţi condiţiile necesare de minim utilizând metoda multiplicatorilor Lagrange.
Puteţi arăta că problema considerată are soluţie unică ? Analizaţi cazul general ı̂n care
matricea G nu este neapărat pozitiv definită.
b. Scrieţi un algoritm care calculează x∗ şi ρ = F (x∗ ).
P 3.56 Fie A ∈ Rm×n monică, B ∈ Rm×p epică şi b ∈ Rm . Rezolvaţi problema CMMP
generalizată
ky ∗ k2 = min kyk2 .
Ax+By=b
not
Observaţie. Dacă p = m şi B = Im , atunci evident y = r = b − Ax, deci se obţine
problema CMMP din secţiunea 3.5.
P 3.57 Fie A ∈ Rm×n monică, C ∈ Rl×n epică şi b ∈ Rm , d ∈ Rl . Rezolvaţi problema
CMMP cu restricţii liniare
kb − Ax∗ k = min kb − Axk.
Cx=d
P 3.61 a. Arătaţi că orice matrice A ∈ Cm×n poate fi scrisă sub oricare din formele
(i) A = Q′ C, (ii) A = BV ′ , unde Q′ are coloanele ortogonale, C este epică, respectiv B
este monică, iar V ′ are liniile ortogonale.
b. Scrieţi algoritmi pentru determinarea factorizărilor (i) şi (ii).
c. Arătaţi că A+ = C + (Q′ )H , respectiv A+ = (V ′ )H B + .
d. Scrieţi algoritmi pentru calculul pseudoinversei normale a sistemului Ax = b, cu
b ∈ Rm dat, utilizând factorizările (i) şi (ii).
P 3.62 O matrice A ∈ Cm×n se numeşte (ad-hoc) pseudounitară (sau parţial izometrică)
dacă există două matrice cu coloane ortogonale U ∈ Cm×r şi V ∈ Cn×r astfel ı̂ncât
A = UV H.
a. Ce structură au gramienii G1 = AH A şi G2 = AAH ? Interpretare geometrică.
b. Arătaţi că A+ = V U H .
c. Arătaţi că o matrice A ∈ Cm×n este pseudounitară dacă şi numai dacă A+ = AH .
d. Cum se poate testa faptul că o anumită matrice dată A ∈ Cm×n este 1) monică,
2) epică, 3) pseudounitară, 4) proiector ortogonal ?
P 3.63 Fie A ∈ Cm×n .
a. Scrieţi un algoritm de triangularizare ortogonală la dreapta cu pivotarea liniilor, i.e.
ΠAZ = L, unde L rezultă inferior triunghiulară. Precizaţi strategia de pivotare utilizată.
b. Indicaţi câteva aplicaţii posibile ale acestui algoritm şi explicaţi de ce ı̂n practică
algoritmul QRP din secţiunea 3.9 este ı̂ntotdeauna suficient.
P 3.64 Fie A ∈ Rm×n , B ∈ Rm×p monice.
a. Explicaţi de ce ı̂n general matricea M = [A B] nu este monică. Arătaţi că
ImM = ImA + ImB.
b. Efectuaţi
» ′ –triangularizarea ortogonală completă a matricei M , i.e.
H S 0
Q M ΠZ = , unde S este inversabilă de ordin r = rangM . Ce semnificaţie
0 0
geometrică au r şi Q ?
c. Notăm S = ImA, T =TImB. Utilizând rezultatele de la punctul b, precizaţi cum
poate fi verificată condiţia S T = ∅.
d. Idem, indicaţi o bază ortogonală pentru subspaţiul (S + T )⊥ .
e. Cum se schimbă concluziile de la punctele b–d dacă matricele iniţiale nu sunt
neapărat monice ? 2 3 2 3
1 1 1
Pentru exemplificare, fie A = 4 0 5, B = 4 0 1 5. Cine sunt S, T şi S + T ?
0 0 0