Sunteți pe pagina 1din 222

METODE DE CALCUL

NUMERIC MATRICEAL.
ALGORITMI
FUNDAMENTALI
Bogdan Dumitrescu

Corneliu Popeea

Partea I

Boris Jora

Tuturor studentilor, fosti, actuali sau viitori,


precum si copiilor nostri
Andrei
Sebastian

Octavia
Corneliu

Monica
S
erban

Cuv
ant introductiv
Lucrarea de fata, prima de o asemenea amploare n limba romana, este construita pe structura cursului de Calcul numeric, predat de autori la Facultatea
de Automatica si Calculatoare a Universitatii Politehnica din Bucuresti. Lucrarea
expune, n maniera eminamente algoritmica, metodele de rezolvare a problemelor
fundamentale de calcul din algebra matriceala, care constituie primele si, de cele
mai multe ori, principalele componente ale celor mai diverse aplicatii din inginerie,
economie si numeroase alte ramuri ale stiintei.
In afara studentilor din facult
atile cu profil tehnic sau economic, lucrarea poate
fi utila tuturor celor care, fie ei studenti, cadre didactice, ingineri sau cercetatori,
doresc sa utilizeze cele mai moderne instrumente de calcul numeric matriceal. Pentru ntelegerea notiunilor prezentate, cititorul trebuie sa posede cunostinte minime
de matematica, la nivelul celor dobandite n liceu sau n primul an de facultate.
Pentru orientare, fiecare capitol ncepe cu o trecere n revista a bazelor matematice
ale problemelor de calcul studiate. De asemenea, cititorul ar trebui sa fie capabil a
se exprima ntr-un limbaj de programare de nivel nalt; aceasta conditie nu e strict
necesara, dar constituie un avantaj, pentru ca i permite sa se concentreze asupra
ideilor si nu a detaliilor de implementare ale acestora.
Cartea contine 7 capitole, descrise n cateva cuvinte mai jos. La nceput se
afla o bibliografie de baza, cuprinzand lucrari de larga utilizare, referite cu cifre
romane, care ofera o privire de perspectiva asupra ntregului domeniu. In final
se gaseste o a doua bibliografie, n general formata din articole (referite cu cifre
arabe) privind aspecte specifice ale problemelor tratate si destinata cititorului care
doreste sa adanceasca studiul dincolo de textul de fata. Pentru facilitarea lecturii,
recomandam consultarea listelor de notatii si de prescurtari uzuale, aflate cateva
pagini mai departe.
Capitolul 0, numerotat astfel pentru a sublinia caracterul sau de initiere n domeniu, prezinta specificul calculului numeric si justifica necesitatea existentei cartii de
fata. Este vorba aici despre: reprezentarea numerelor reale n virgula mobila, proprietatile (uneori neasteptate ale) operatiilor cu astfel de numere precum si mecanismele de aparitie inevitabila a erorilor numerice. Este apoi considerata perechea
formata din problema de calcul si algoritmul de rezolvare, relativ la care sunt defi-

ii
nite notiunile fundamentale de conditionare si, respectiv, stabilitate numeric
a. In
ncheiere, este aruncata o privire asupra modului n care arhitectura calculatorului
influenteaza conceptia algoritmilor.
Capitolul 1 este dedicat expunerii notiunilor primare ale algebrei matriceale
(vectori, subspatii, matrice de diverse tipuri si proprietatile acestora), constituind
totodata o introducere n problematica specifica a capitolelor urmatoare. Algoritmii
prezentati rezolva unele probleme simple, dar fundamentale, cum ar fi nmultirea a
dou
a matrice, sau unele cazuri particulare, de exemplu cel al matricelor triunghiulare, ale unor probleme mai dificile (rezolvarea sistemelor liniare, calculul valorilor
si vectorilor proprii). Acesti algoritmi sunt larg utilizati n continuare, ca elemente
constructive primare.
Capitolul 2 trateaza metodele directe de rezolvare a sistemelor liniare Ax = b,
cu matrice A nesingulara, prezentand procedura de eliminare gaussiana, inclusiv
strategiile de pivotare adecvate, precum si versiunile compacte ale acestei metode
bazate pe factorizarea LU a matricei A. In afara matricelor de forma generala,
sunt studiate si cazurile, des ntalnite n practica, ale matricelor banda, simetrice si
simetric pozitiv definite. De asemenea, sunt abordate probleme conexe, cum ar fi
calculul inversei si al determinantului.
Capitolul 3 descrie metodele de rezolvare n sensul celor mai mici patrate (CMMP)
a sistemelor liniare Ax = b, n care numarul ecuatiilor difera de cel al necunoscutelor,
deci A este o matrice dreptunghiulara de forma generala. In acest caz se utilizeaza
metode de eliminare specifice, bazate pe aplicarea transformarilor ortogonale (reflectori Householder, rotatii Givens etc.) iar conceptul central este cel de factorizare
QR. Daca matricea A nu este de rang maxim, se recomanda utilizarea factorizarii
ortogonale complete, care are la baza un algoritm de triangularizare cu pivotarea
coloanelor. Sistemele liniare de acest tip apar frecvent n prelucrarea datelor experimentale, statistica, identificarea sistemelor etc.
Capitolul 4 expune principalele metode de calcul al valorilor si vectorilor proprii
ai unei matrice A. Este prezentat n detaliu algoritmul QR, care aduce matricea A la
forma Schur, reala sau complexa, pornind de la forma de principiu a algoritmului, ale
carei proprietati matematice sunt usor de analizat, si ajungand la variantele relativ
sofisticate sub care acesta este implementat n programele profesionale. Alaturi de
cazul general este tratat si cel al matricelor simetrice. Nu sunt uitati alti algoritmi
importanti, utili n cazuri particulare, cum ar fi metodele puterii, puterii inverse,
bisectiei sau Jacobi. Cunoasterea valorilor proprii este utila n analiza stabilitatii
sistemelor dinamice, n studiul vibratiilor (pentru cl
adiri, poduri, avioane) si n
multe alte probleme aplicative majore.
Capitolul 5 prezinta metodele de calcul al descompunerii valorilor singulare
(DVS), care constituie instrumentul cel mai sigur de rezolvare a numeroase probleme din algebra matriceala, cum ar fi determinarea rangului, calculul unor norme
matriceale, constructia bazelor pentru diverse subspatii, rezolvarea n sensul celor
mai mici patrate a sistemelor cu matrice de rang nemaxim. Algoritmul DVS este
o adaptare ingenioasa a algoritmului QR simetric, cunoscut din capitolul anterior.
Utilizarea DVS este ilustrata considerand unele variante ale problemei CMMP, de
exemplu CMMP totala sau cu restrictii, frecvent ntalnite n aplicatii.

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

Autorii

iv

Bibliografie general
a
Pentru chestiuni teoretice de calcul matriceal:
[ I ] Gantmaher F.R. Teoriia matrit
(editia a 2-a), Ed. Nauka, Moscova,
1966. (The Theory of Matrices, vols. 1-2, Chelsea, New York, 1959).
[ II ] Horn R.A., Johnson C.R.
Press, Cambridge UK, 1985.

Matrix Analysis, Cambridge University

[ III ] Strang G. Introduction to Linear Algebra, Wellesley-Cambridge


Press, Wellesley, MA, USA, 1993.
Pentru algoritmi de calcul matriceal:
[ IV ] Wilkinson J.H. The Algebraic Eigenvalue Problem, Clarendon Press,
Oxford, 1965.
[ V ] Stewart G. W. Introduction to Matrix Computations, Academic
Press, New York and London, 1973.
[ VI ] Golub G. H., Van Loan Ch. F. Matrix Computations, Second edition,
The John Hopkins University Press, Baltimore, Maryland, 1989.
[ VII ] Lawson C.L., Hanson R.J. Solving Least Squares Problems, SIAM,
Philadelphia, PA, USA, 1995.
Pentru studiul condition
arii problemelor de calcul matriceal si al stabilit
atii
numerice a algoritmilor aferenti:
[ VIII ] Stewart G.W., Sun J. Matrix Perturbation Theory, Academic
Press, London, 1990.
[ IX ] Higham N.J. Accuracy and Stability of Numerical Algorithms,
SIAM, Philadelphia PA, 1996.
Pentru programe de calcul si indicatii de utilizare:
[ X ] Wilkinson J.H., Reinsch C. Handbook for Automatic Computation. Linear Algebra, Springer-Verlag Berlin, 1971.
[ XI ] Smith B.T., Boyle J.M., Ikebe Y., Klema V.C., Moler C.B. Matrix
Eigensystem Routines: EISPACK Guide, 2-nd ed., SpringerVerlag,
New York, 1974.
[ XII ] Garbow B.S., Boyle J.M., Dongarra J.J., Moler C.B. Matrix
Eigensystem Routines: EISPACK Guide Extension, SpringerVerlag,
New York, 1977.
[ XIII ] Dongarra J.J., Bunch J.R., Moler C.B., Stewart G.W. LINPACK
Users Guide, SIAM Publications, Philadelphia, PA, 1978.
[ XIV ] MATLAB Users Guide, The MathWorks Inc., Natick, MA, USA, 1992.

v
[ XV ] Anderson E., Bai Z., Bischof C., Demmel J., Dongarra J.,
Du Croz J., Greenbaum A., Hammarling S., McKenney A.,
Ostrouchov S., Sorensen D. LAPACK Users Guide, Second Edition,
SIAM, Philadelphia PA, 1995. (http://www.netlib.org/lapack/lug)
Lucr
ari n limba rom
an
a:
[ XVI ] Br
anz
anescu V., St
an
asil
a O. Matematici speciale teorie,
exemple, aplicat
ii, Ed. ALL, Bucuresti, 1994.
[ XVII ] Bucur C.M., Popeea C.A., Simion Gh.Gh. Matematici speciale.
Calcul numeric, E.D.P., Bucuresti, 1983.
.
[ XVIII ] Ionescu V., Varga A. Teoria sistemelor. Sinteza robusta
Metode numerice de calcul., Ed. ALL, Bucuresti, 1994.
[ XIX ] Iorga V., Jora B., Nicolescu C., Lop
atan I., F
atu I., Programare
, Ed. Teora, Bucuresti, 1996.
numerica

Lista de notatii
N multimea numerelor naturale
Z multimea numerelor ntregi
R multimea numerelor reale
C multimea numerelor complexe

Vectori
ni : p : nf vectorul cu elementele ntregi ni , ni + p, ni + 2p, . . . , nf ; daca p = 1,
vectorul se scrie simplu ni : nf
Rn spatiul liniar n-dimensional al vectorilor (coloana) x cu n componente reale
xi R, i = 1 : n
Cn spatiul liniar n-dimensional al vectorilor (coloana) x cu n componente complexe xi C, i = 1 : n
ek , k = 1 : n baza standard a spatiului liniar Rn , respectiv Cn
xi , x(i) elementul vectorului x aflat n pozitia i
x(i1 : i2 ) vectorul format din elementele din pozitiile de la i1 la i2 ale vectorului x
P
doi vectori x, y Rn ; n
(x, y) = y T x = ni=1 xi yi produsul scalar standard a P
n
H
cazul complex produsul scalar este (x, y) = y x = i=1 xi yi
Pn
2
kxk = (x, x)1/2 = ( i=1 |xi | )1/2 norma euclidiana a vectorului x Rn

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

Matrice

Rmn spatiul liniar al matricelor cu m linii si n coloane cu elemente reale aij R,


i = 1 : m, j = 1 : n
Cmn spatiul liniar al matricelor cu m linii si n coloane cu elemente complexe
aij C, i = 1 : m, j = 1 : n 1
In matricea unitate de ordinul n
aij , A(i, j) elementul matricei A situat n linia i, coloana j
A(i1 : i2 , j1 : j2 ) blocul matricei A format din liniile de la i1 la i2 si coloanele de
la j1 la j2 . Indicele :, fara alta precizare, semnifica luarea tuturor liniilor
sau coloanele
AT transpusa matricei (reale sau complexe) A
AH conjugata hermitica a matricei (complexe) A, i.e. AH = AT , unde A este
conjugata complexa a lui A
A1 inversa matricei patrate nesingulare A, i.e. AA1 = A1 A = In
T

AT = (A1 ) = (AT )
H

AH = (A1 )

= (AH )

trA urma matricei patrate A, i.e. suma elementelor diagonale


detA determinantul matricei p
atrate A
i (A), i = 1 : n valorile proprii ale matricei patrate A de ordin n
(A) spectrul (de valori proprii) {1 (A), 2 (A), . . . , n (A)} al matricei A
(A) = maxi=1:n |i (A)| raza spectrala a matricei A
cond(A) = kAk kA1 k numarul de conditie la inversare al matricei A (k k este o
norma matriceala consistenta)
A+ pseudoinversa normala (Moore-Penrose) a matricei A; daca A este monica
1
1
A+ = (ATA) AT , daca A este epica, atunci A+ = AT(AAT )
i (A), i = 1 : p, p = min(m, n) valorile singulare ale matricei A ordonate astfel
ncat 1 2 . . . p
1
In calcule, vectorii se identific
a cu matricele cu o singur
a coloan
a, iar scalarii se identific
a cu
matricele (sau vectorii) cu un singur element.

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

P
1/p
|A|p = ( ri=1 i p )
p-normele Schatten, p 1; n calcule se utilizeaza n spePr
cial norma-urma |A|1 =
si norma
i=1 i , norma Frobenius |A|2 = kAkF
spectrala |A| = 1 (A)
kAkp = maxkxkp =1 kAxkp p-normele induse; n calcule se utilizeaza n special
Pm
norma kAk1 = maxP
a kAk2 = 1 (A) si norma
j=1:n
i=1 |aij |, norma spectral
n
kAk = maxi=1:m j=1 |aij |

Transform
ari

SAT transformare de echivalenta


(bilaterala) a matricei A Rmn (S si T sunt
matrice patrate nesingulare; transformarea de echivalenta conserva rangul, iar
daca S, T sunt ortogonale, atunci conserva si valorile singulare)
T 1 AT transformare de asem
anare a matricei A Rnn (transformarea de
asemanare conserva valorile proprii)
T T AT transformare de congruenta
a matricei A Rnn (T este nesingulara; aplicata unei matrice A simetrice, transformarea de congruenta conserva rangul
si inertia i.e. numerele de valori proprii negative, nule si, respectiv, pozitive)
Daca T este ortogonala, atunci T 1 = T T si transformarea T T AT se numeste
transformare de asem
anare ortogonal
a

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

viii
LU factorizarea LU
PE matrice de permutare elementara
QR factorizarea QR

Alfabetul grec
Majuscule

Minuscule

A
B

E
Z
H

I
K

M
N

Denumire
alfa
beta
gamma
delta
epsilon
zeta
eta
theta
iota
kappa
lambda
m
u
n
u
xi
omicron
pi
rho
sigma
tau
upsilon
phi
hi
psi
omega

Corespondentul
latin
A, a
B, b
G, g
D, d
E, e
Z, z
E, e
I, i
K, k
L, l
M, m
N, n
X, x
O, o
P, p
R, r
S, s
T, t
U, u
F, f
H, h
O, o

Cuprins
0 Concepte fundamentale
0.1 Reprezentarea n virgula mobila . . . .
0.2 Aritmetica n virgula mobila . . . . . .
0.3 Conditionarea problemelor de calcul .
0.4 Stabilitatea numerica a algoritmilor .
0.5 Calitatile unui algoritm numeric . . .
0.6 Implicatiile arhitecturii calculatoarelor
0.7 Probleme . . . . . . . . . . . . . . . .
1 Algoritmi elementari
1.1 Vectori. Spatiul vectorial Rn . . . . .
1.2 Produs scalar. Norme. Ortogonalitate
1.3 Matrice . . . . . . . . . . . . . . . . .
1.4 Inmultirea matricelor . . . . . . . . . .
1.5 Norme matriceale . . . . . . . . . . . .
1.6 Matrice structurate . . . . . . . . . . .
1.7 Matrice bloc . . . . . . . . . . . . . . .
1.8 Matrice normale . . . . . . . . . . . .
1.9 Sisteme de ecuatii liniare . . . . . . . .
1.10 Valori si vectori proprii . . . . . . . . .
1.11 Rutinele BLAS . . . . . . . . . . . . .
1.12 Probleme . . . . . . . . . . . . . . . .

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

1
2
7
10
12
15
16
18

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

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

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

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

19
19
24
28
32
37
39
42
46
49
59
62
67

2 Rezolvarea sistemelor de ecuatii liniare


2.1 Transformari elementare . . . . . . . . . . . . . . . . . . . . . .
2.2 Triangularizare prin eliminare gaussiana . . . . . . . . . . . . .
2.3 Strategii de pivotare . . . . . . . . . . . . . . . . . . . . . . . .
2.3.1 Pivotare partiala . . . . . . . . . . . . . . . . . . . . . .
2.3.2 Pivotare completa . . . . . . . . . . . . . . . . . . . . .
2.4 Factorizari LU . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.4.1 Factorizari LU rezultate din eliminarea gaussiana . . . .
2.4.2 Factorizari LU compacte . . . . . . . . . . . . . . . . . .
2.4.3 Factorizari LU prin eliminare gaussiana la nivel de bloc
2.4.4 Factorizari LU compacte la nivel de bloc . . . . . . . . .
2.5 Rezolvarea sistemelor liniare . . . . . . . . . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

69
70
72
76
76
78
81
82
84
86
89
91

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

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

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

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

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

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

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

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

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

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

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

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

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

CUPRINS
2.6

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

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

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

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

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

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

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

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

93
94
97
97
102
103
104
105
109
114
117
119

3 Problema celor mai mici p


atrate
3.1 Transformari ortogonale . . . . . . . . . . . . . . . . . .
3.1.1 Reflectori . . . . . . . . . . . . . . . . . . . . . .
3.1.2 Rotatii . . . . . . . . . . . . . . . . . . . . . . . .
3.2 Transformari unitare . . . . . . . . . . . . . . . . . . . .
3.2.1 Reflectori complecsi . . . . . . . . . . . . . . . .
3.2.2 Rotatii complexe . . . . . . . . . . . . . . . . . .
3.3 Triangularizarea ortogonala . . . . . . . . . . . . . . . .
3.4 Factorizarea QR . . . . . . . . . . . . . . . . . . . . . .
3.4.1 Acumularea transformarilor . . . . . . . . . . . .
3.4.2 Aplicarea transformarilor . . . . . . . . . . . . .
3.4.3 Triangularizarea ortogonala la nivel de bloc . . .
3.4.4 Alte metode de ortogonalizare . . . . . . . . . .
3.4.5 Factorizarea QL . . . . . . . . . . . . . . . . . .
3.5 Rezolvarea problemei CMMP . . . . . . . . . . . . . . .
3.5.1 Calculul pseudosolutiei . . . . . . . . . . . . . . .
3.5.2 Calculul proiectiilor . . . . . . . . . . . . . . . .
3.5.3 Problema CMMP cu membru drept multiplu . .
3.5.4 Calculul pseudoinversei . . . . . . . . . . . . . .
3.5.5 Alte metode de rezolvare a problemei CMMP . .
3.6 Sisteme liniare subdeterminate . . . . . . . . . . . . . .
3.6.1 Triangularizarea ortogonala la dreapta . . . . . .
3.6.2 Factorizarea LQ . . . . . . . . . . . . . . . . . .
3.6.3 Rezolvarea sistemelor subdeterminate . . . . . .
3.7 Conditionarea problemelor CMMP . . . . . . . . . . . .
3.7.1 Preliminarii . . . . . . . . . . . . . . . . . . . . .
3.7.2 Sensibilitatea pseudosolutiei . . . . . . . . . . . .
3.7.3 Sensibilitatea solutiei normale . . . . . . . . . . .
3.8 Stabilitatea algoritmilor de triangularizare . . . . . . . .
3.8.1 Stabilitatea numerica a algoritmilor fundamentali
3.8.2 Acuratetea solutiilor calculate . . . . . . . . . . .
3.8.3 Scalarea problemei CMMP . . . . . . . . . . . .
3.8.4 Rafinarea iterativ
a a solutiei CMMP . . . . . . .

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

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

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

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

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

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

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

123
125
125
133
138
138
142
143
149
153
155
156
160
162
162
164
167
168
168
169
170
170
172
174
177
177
180
182
183
184
185
186
187

2.7
2.8

2.9
2.10
2.11
2.12
2.13

Calculul inversei si al determinantului . . . .


2.6.1 Calculul inversei unei matrice . . . . .
2.6.2 Calculul determinantului . . . . . . .
Conditionarea sistemelor liniare . . . . . . . .
Stabilitate numerica . . . . . . . . . . . . . .
2.8.1 Scalarea sistemelor liniare . . . . . . .
2.8.2 Rafinarea iterativ
a a solutiei calculate
Sisteme banda . . . . . . . . . . . . . . . . .
Sisteme simetrice . . . . . . . . . . . . . . . .
Sisteme simetrice pozitiv definite . . . . . . .
Rutine LAPACK si MATLAB . . . . . . . . .
Probleme . . . . . . . . . . . . . . . . . . . .

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

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

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

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

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

xi

CUPRINS
3.9

Descompunerea ortogonala completa . . . . . . . . . . . . .


3.9.1 Triangularizarea ortogonala cu pivotarea coloanelor .
3.9.2 Determinarea rangului . . . . . . . . . . . . . . . . .
3.9.3 Triangularizarea ortogonala completa . . . . . . . .
3.9.4 Descompunerea ortogonala completa . . . . . . . . .
3.9.5 Problema general
a CMMP . . . . . . . . . . . . . .
3.10 Rutine LAPACK si MATLAB . . . . . . . . . . . . . . . . .
3.11 Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . .

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

189
190
193
195
197
197
199
200

CUPRINS

Capitolul 0

Concepte fundamentale ale


calculului numeric
Rezolvarea numerica cu ajutorul calculatorului a unei probleme de calcul se face
ntotdeauna pe baza unui algoritm, i.e. a unei succesiuni finite si bine precizate de
operatii elementare (cum ar fi adunarea, nmultirea etc.) prin care solutia problemei
este calculata n functie de datele initiale. Desi matematica furnizeaza deseori, n
demonstratiile numite constructive, algoritmi de rezolvare a problemelor pe care le
trateaza, s-a dovedit ca de multe ori implementarile numerice ale acestor algoritmi
au dezavantaje majore care i fac de nefolosit.
Discrepanta ntre corectitudinea matematica a unui algoritm si adecvarea lui la
specificul calculului numeric practic poate proveni din doua cauze importante. Una,
evidenta, consta n (eventuala) complexitate (n ce priveste numarul operatiilor de
executat si memoria ocupata de date), care poate duce fie la timpi de executie foarte
mari, deci nepractici, fie, pur si simplu, la imposibilitatea executiei programului
care implementeaza algoritmul. A doua cauza, mai subtil
a, o constituie erorile
care nsotesc calculul numeric; prin acumulare, acestea pot periclita acuratetea
rezultatului.
O serie de erori sunt inerente, cum ar fi cele care apar la determinarea datelor
din masuratori experimentale. Altele sunt legate de algoritmul de calcul utilizat,
care se poate baza pe simplificari n modelarea unor fenomene fizice sau poate
proveni dintr-o metoda matematica implicand o infinitate de operatii, din care,
prin trunchiere, se retine doar un numar finit de operatii; n ambele cazuri, prin
natura lucrurilor, algoritmul va furniza o solutie aproximativa.
In fine, exista erori avand cauze specifice calculului numeric, care opereaza cu
numere reale (si nu doar cu numere ntregi); de acestea ne vom ocupa mai pe larg.
Desigur, numerele reale sunt reprezentate n memoria calculatorului ntr-un format
bine precizat si ocupand un num
ar relativ mic de locatii de memorie, de exemplu
4 sau 8 octeti; astfel, o infinitate de numere este reprezentata printr-un numar
finit de combinatii de biti. De aici o prima sursa de erori, cele de reprezentare.
Apoi, pot aparea erori si la efectuarea operatiilor cu numere reale aflate n memoria
calculatorului, erori numite de rotunjire; aceasta nu se ntampla pentru ca unitatea

CAPITOLUL 0. CONCEPTE FUNDAMENTALE

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


faptului ca numerele reale sunt reprezentate ntr-un format finit, atat n memorie,
cat si n unitatea centrala.
Prin aceasta, calculul cu numere reale difera fundamental de cel cu ntregi. Vom
obtine 1 + 2 = 3 pe orice calculator, n schimb 0.1 + 0.2 6= 0.3 pe orice calculator
(doar daca nu se folosesc programe speciale !); de exemplu pe un calculator si
ntr-un limbaj de programare pe care nu le precizam adun
and 0.1+0.2 si scazand
din rezultat 0.3 nu obtinem 0, asa cum ne-am astepta, ci aproximativ 5.5 1017 ; e
drept, eroarea este infima. Pericolul apare n cazul acumularii unor astfel de mici
erori, acumulare care poate duce la degradarea uneori fatala a rezultatului
produs.
In acest capitol ne vom ocupa de aspecte specifice elementare ale calculului
numeric: modul de reprezentare a numerelor reale, felul n care se apreciaza calitatea
unui algoritm numeric, cuantificarea efectului erorilor de rotunjire asupra acuratetii
solutiei numerice a unei probleme; acest ultim scop face obiectul analizei numerice
si este, n general, dificil de atins.

0.1

Reprezentarea n virgul
a mobil
a

Fie x si x
numere reale, x
fiind interpretat ca o aproximare a lui x. Vom prezenta
dou
a masuri naturale ale calitatii aproximarii.
Eroarea absolut
a (cu care x
aproximeaza x) se defineste prin
= |x x|.
Daca x 6= 0, atunci eroarea relativ
a se defineste prin


x x

=
=
.
x |x|

Daca x Rn , se nlocuieste n relatiile de mai sus valoarea absoluta | | cu o


norma vectoriala k k (vom discuta despre norme vectoriale n capitolul 1).
Exemplul 0.1 Fie x = 1.0, si x
= 0.999 o aproximare a sa. Atunci = 103 si
3
= 10 . Daca y = 0.009 este o aproximatie a lui y = 0.01, atunci eroarea absoluta
este aceeasi ca n cazul precedent, = 103 , dar eroarea relativa este de o suta de
ori mai mare: = 101 . Raportandu-se la valoarea lui x, eroarea relativa este mult
mai adecvata pentru estimarea calitatii aproximarii x
.

Erorile de reprezentare apar datorita memorarii n calculator a numerelor reale


printr-o secventa finita de simboluri (cifre binare). Pentru a prezenta o estimare
a acestor erori, sa reamintim bine cunoscuta reprezentare pozitionala a numerelor
reale. Fie
N, 2, baza de numeratie;
C = {0, 1, . . . , 1}, multimea cifrelor n baza , adica primele numere
naturale.

MOBILA

0.1. REPREZENTAREA IN VIRGULA

Se stie ca orice numar x R poate fi scris unic sub forma unei secvente infinite
x = san1 an2 . . . a0 .a1 a2 a3 . . . ,

(0.1)

care nu se termina printr-o secventa infinita de cifre egale cu 1 si n care ai C,


iar s este semnul, s {+, }. Valoarea lui x este
!

n1
X
X
i
i
x=s
ai +
ai
.
(0.2)
i=0

i=1

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

Numarul n baza 10
3.25 = 3 100 + 2 101 + 5 102

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


11.01 = 1 21 + 1 20 + 0 21 + 1 22 .
In ambele baze, reprezentarile au un numar finit de cifre. In schimb, numarul
exprimat simplu n baza 10:
0.1 = 1 101
are o reprezentare de lungime infinita n baza 2 (verificati din nou egalitatea):
0.0001100110011 . . . = (24 + 25 )

24k .

k=0

In baza 10, urmatoarele doua secvente


0.99999 . . .
1.00000 . . .
reprezinta acelasi numar real. Reprezentarile binare corespunzatoare sunt
0.11111 . . .
1.00000 . . .
In ambele situatii, reprezentarea acceptata este 1.0000 . . .

Evident, reprezentarea numerelor reale pe calculator poate avea doar un numar


finit de cifre si deci, prin natura ei, este aproximativa. O buna aproximare printr-o
secventa finita de lungime fixata trebuie sa asigure:
un domeniu suficient de mare de numere reprezentate;
o eroare relativa de reprezentare suficient de mica;
o distributie uniforma a erorii relative de reprezentare.

CAPITOLUL 0. CONCEPTE FUNDAMENTALE

Un bun compromis n satisfacerea acestor cerinte este dat de asa numitul Format
Virgul
a Mobil
a (FVM).
Definitia 0.1 Un Format Virgul
a Mobila (FVM) este definit de trei ntregi (, t, p),
cu urm
atoarea semnificatie:
baza de numeratie ( 2);
t precizia, adic
a num
arul de cifre semnificative (lungimea mantisei);
p num
arul de cifre ale exponentului.
Un numar n virgula mobila este o pereche (f, e), unde
f = 0.f1 f2 . . . ft , f1 6= 0, fi C
este un num
ar fractionar cu semn (plus sau minus), normalizat (i.e. f1 6= 0), cu
t cifre, denumit mantisa, iar
e = e1 e2 . . . ep
este un ntreg cu semn, cu p cifre, numit exponent. Valoarea real
a asociat
a num
arului n virgul
a mobil
a (f, e) este
x = f e.
Fie L valoarea minima admisa a exponentului (de exemplu L = . . . , unde
| {z }
p

= 1) si U cea maxima (de exemplu U = L). Se observa ca toate numerele


n virgula mobila x satisfac:
L1 = m |x| M = U (1 t )
adica domeniul reprezentarii n virgula mobila este intervalul R = [M, M ]. Desigur, pentru majoritatea reprezentarilor pe calculator, = 2 (se mai foloseste, de
exemplu, = 16 si chiar = 10).
Exemplul 0.3 Sa consideram FVM cu (, t, p) = (2, 2, 1). Atunci L = 1, U = 1,
m = 22 = 0.2510 , M = 2(1 22 ) = 1.510 . Numerele reale care au o reprezentare
exacta n acest FVM sunt:
x1
x2
x3
x4
x5
x6

= (0.11, +1) = 1.510


= (0.10, +1) = 1.010
= (0.11, 0) = 0.7510
= (0.10, 0) = 0.510
= (0.11, 1) = 0.37510
= (0.10, 1) = 0.2510

x7 = (+0.10, 1) = 0.2510
x8 = (+0.11, 1) = 0.37510
x9 = (+0.10, 0) = 0.510
x10 = (+0.11, 0) = 0.7510
x11 = (+0.10, +1) = 1.010
x12 = (+0.11, +1) = 1.510

si vor fi folosite pentru reprezentarea (aproximativa) a tuturor numerelor reale din


intervalul [1.5, 1.5]. Reprezentarea geometrica a tuturor acestor numere pe axa
reala este prezentata n figura 0.1. Numerele cu reprezentare exacta n virgula
mobila sunt relativ uniform distribuite; mai precis, |xi xi1 | / |xi | are aproximativ
aceleasi valori pentru orice i.

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

MOBILA

0.1. REPREZENTAREA IN VIRGULA


-1.5

-1

x1

x2

-0.5
x3

x4 x5 x6

5
1

0.5
x7 x8 x9

1.5

x10 x11

x12

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

0 1 0 0 1 1 0 0

0 1 1 0 1 0 0 1

6
exponent (7 biti)

6

semn exponent

1 0 1 1 1 0 0 0

0 0 0 0 1 0 1 1

mantisa (23+1 biti)


semn num
ar (mantis
a)

Fig. 0.2: Structura unui numar n virgula mobila, pentru (, t, p) = (2, 24, 7)

bit al mantisei are ntotdeauna valoarea 1, semnul mantisei se memoreaza n locul


acestui bit, economisind astfel un bit al reprezentarii. Un exemplu de numar n
virgula mobila n acest format este prezentat n figura 0.2.
Pentru acest FVM avem: L = 127, U = 127, m = 2127 = (210 )13 23 1038 ,
M 1038 (putem aproxima 210 103 ). Aceasta arata ca FVM acopera un domeniu
larg de numere, utilizand un num
ar relativ mic de cifre binare. Acest exemplu este
foarte apropiat de formatul standard IEEE pentru numere n virgula mobila n
simpl
a precizie.
In formatul din acest exemplu, numarul real 0.1 are mantisa
0.110011001100110011001100
si exponentul 10000011 (3 n baza 10; prima cifra 1 a exponentului reprezinta
semnul). Asadar numarul 0.1 este reprezentat aproximativ (vezi exemplul 0.2).
Observatia 0.1 Definitia 0.1 nu permite reprezentarea exacta a numarului 0,
acesta neputand avea o mantisa normalizata. Practic, pentru a reprezenta 0, precum
si unele simboluri speciale despre care se va vorbi mai tarziu, se folosesc valori
dedicate ale exponentului, n afara intervalului [L, U ]. De aceea, n standardul
IEEE pentru simpla precizie, L = 126.

Pentru a estima erorile efectuate la reprezentarea unui numar real n virgula


mobila, sa consideram un FVM, adica (, t, p), si sa notam
F = {x R | x are reprezentare exacta in VM} {0}.

(0.3)

Desigur, F este o multime finita de numere rationale.


Reprezentarea numarului real x [M, M ] n FVM nseamna aproximarea lui
cu un numar x
F. Aceasta aproximare poate fi exprimata printr-o functie de
rotunjire.
Definitia 0.2 Dac
a (, t, p) este un FVM si F este multimea definit
a n (0.3),
atunci o functie
f l : [M, M ] F

CAPITOLUL 0. CONCEPTE FUNDAMENTALE

care asociaz
a fiec
arui x [M, M ] o unic
a reprezentare n virgul
a mobil
a
x
= f l(x)
este numit
a functie de rotunjire. Eroarea relativ
a de aproximare
|x f l(x)|
|x|
definit
a pentru orice x [M, M ] nenul este denumit
a eroare de reprezentare.
Deoarece intervalul [M, M ] este o multime infinita de numere reale, fiecare
x
F constituie reprezentarea n VM a unei multimi infinite de numere din
[M, M ]; suntem interesati sa gasim o margine superioar
a a erorii de reprezentare
pentru o functie de rotunjire data. Exista mai multe functii de rotunjire. O vom
prezenta doar pe cea mai simpla, denumita rotunjire prin t
aiere. In acest scop, sa
scriem numarul x [M, M ] n forma (0.1) normalizata:
x

= f e = 0.f1 f2 . . . ft ft+1 . . . e =

= 0.f1 f2 . . . ft e 0.ft+1 ft+2 . . . et =


= f e + g et ,
unde fi C, f1 6= 0, f = 0.f1 f2 . . . ft , g = 0.ft+1 ft+2 . . .
In mod evident:
1/ |f | < 1,

1/ |f| < 1,

0 |
g | < 1.

(0.4)

Functia de rotunjire prin taiere


f l1 : [M, M ] F
este definita prin
x = f l1 (x) =

f e , pentru x 6= 0,
0,
pentru x = 0.

Pe scurt, reprezentarea n VM se obtine prin taierea cifrelor mantisei normalizate a


numarului x care se afla n afara formatului (de la pozitia t + 1 ncolo).
Utilizand inegalitatile (0.4), este usor de stabilit o margine superioara a erorii
de reprezentare introduse de f l1 . Intr-adevar, pentru orice x [M, M ] \ {0} avem
=

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

Aceasta formula arata ca, indiferent de valoarea numarului x, o margine pentru


marimea erorii de reprezentare este determinata exclusiv de numarul de cifre ale
mantisei (n baza de numeratie a FVM) si acesta este motivul pentru care t este
numit precizia reprezent
arii n virgul
a mobil
a. Numarul t+1 este numit epsilon
masin
a si reprezinta distanta dintre 1 si urmatorul numar cu reprezentare n FVM
(vezi problema 0.5).

MOBILA

0.2. ARITMETICA IN VIRGULA

Pe majoritatea calculatoarelor, numerele n virgula mobila au o precizie fixata.


Multe calculatoare au, de asemenea, posibilitatea de a manipula numere n virgula
mobila cu aproximativ 2t biti pentru mantisa; astfel de numere sunt numite n
dubl
a precizie. De exemplu, n standardul IEEE, numerele n dubla precizie sunt
memorate pe 64 biti, cu t = 53 si p = 10 (un bit suplimentar este dedicat memorarii
semnului exponentului).
Pentru toate functiile de rotunjire folosite, marginea superioara a erorii de reprezentare are forma
t ,
(0.5)
unde este un numar de ordinul unitatii.
Din (0.5) rezulta existenta unui numar astfel ncat

x
= f l(x) = x(1 + ), || t ,

(0.6)

ceea ce este un alt mod de exprimare a erorii de reprezentare.


Cele t cifre ale mantisei sunt numite cifre semnificative ale numarului real reprezentat. In baza de numeratie zecimala, numerele reprezentate n simpla precizie
conform standardului IEEE (t = 24) au 7 cifre semnificative (numaram 3 cifre
zecimale pentru 10 cifre binare), iar cele n dubla precizie (t = 53) au 16 cifre semnificative; n consecinta, eroarea maxima de reprezentare este de aproximativ 107 ,
respectiv 1016 (anume chiar epsilon masina). O prezentare detaliata a standardului IEEE poate fi gasita n [?].

0.2

Aritmetica n virgul
a mobil
a

Calculatoarele cu hardware dedicat operatiilor n virgula mobila sunt prevazute cu


un set de instructiuni pentru implementarea unor operatii cu numere n virgula
mobila ca, de exemplu, adunarea, scaderea, nmultirea sau mpartirea. Trebuie subliniat ca operatiile mentionate difera de cele matematice corespunzatoare deoarece
rezultatul lor apartine ntotdeauna multimii finite F a numerelor n virgula mobila. Asadar operatiile aritmetice nu pot fi executate exact. Eroarea introdusa de
operatiile aritmetice n virgula mobila se numeste eroare de rotunjire. Consecintele
pot fi foarte importante; exista posibilitatea ca erorile de rotunjire sa se acumuleze
si, n calcule lungi, valorile finale sa fie afectate, chiar pana la a le face inutilizabile.
De aceea este de dorit ca fiecare algoritm sa fie analizat pentru a vedea n ce masura
erorile de rotunjire afecteaza rezultatele; n general, aceasta este o sarcina dificila.
Exemplul 0.5 Consideram FVM cu (, t, p) = (10, 3, 1). Adunand exact numerele
1.23 si 20.5, amandoua reprezentabile exact n FVM ales, se obtine 21.73. Rotunjit
prin taiere, rezultatul n VM este 21.7, deci diferit de cel exact.

Analiza erorilor de rotunjire se bazeaza pe cunoasterea marginilor superioare ale


erorilor ce apar n operatiile n virgula mobila. Pentru majoritatea calculatoarelor
este valabil urmatorul model al erorilor asociate operatiilor n virgula mobila, bazat
pe evaluarea (0.6): notand cu f l(xy), f l(x/y) si f l(x + y) produsul, catul, respectiv
suma calculate ale numerelor n virgul
a mobil
a x si y, atunci, ntr-un FVM cu t cifre
avem
f l(x op y) = (x op y)(1 + ), || t ,
(0.7)

CAPITOLUL 0. CONCEPTE FUNDAMENTALE

unde op poate fi +, sau /, iar este un numar de ordinul unitatii.


Modelul (0.7) este obtinut presupunand ca x op y este calculat exact, apoi rezultatul este transformat n FVM printr-o functie de rotunjire. In realitate, lucrurile nu
stau chiar asa; unitatile specializate pentru calculul n VM nu obtin rezultatul exact,
dar se comporta ca si cum l-ar obtine, lucrand pe baza unor algoritmi nebanali, a
caror cunoastere nu este necesara pentru ntelegerea algoritmilor din aceasta lucrare
si a caror prezentare depaseste cadrul problematicii propuse.
In completarea relatiei (0.7), trebuie sa mentionam ca, atunci cand o operatie
n virgula mobila produce un numar cu un modul prea mare (> M ), apare eroarea
numita de dep
asire superioar
a (overflow). Cand rezultatul este prea mic n valoare
absoluta (< m, dar nenula), eroarea se numeste de dep
asire inferioar
a (underflow).
Desigur, orice algoritm bine conceput trebuie sa specifice cum se procedeaza n
eventualitatea unor depasiri si, mai ales, sa ncerce evitarea lor (vom explica n
capitolul urmator tehnica folosit
a scalarea). Depasirea inferioara nu constituie
de regula o eroare grava, de aceea majoritatea calculatoarelor atribuie automat
rezultatului valoarea zero. In cazul unei depasiri superioare, de obicei calculele sunt
oprite sau, cel putin, este afisat un mesaj de avertisment. In standardul IEEE pentru
virgula mobila, exista o valoare speciala, numita Inf (infinit), care este atribuita
rezultatului n cazul unei depasiri superioare; calculele continua cu aceasta valoare;
rezultatele se obtin conform regulilor uzuale de lucru cu infinitati. O alta valoare
speciala NaN (Not a Number) este atribuita rezultatelor nedefinite, ca 0 ,
0/0, /; o operatie implicand NaN are ntotdeauna ca rezultat NaN.
Relatia (0.7) garanteaza ca o operatie aritmetica introduce erori relative mici,
de ordinul t (adica al lui epsilon masina). O problema fundamental
a a calculului
numeric este evaluarea marimii erorii ce afecteaza rezultatul n cazul unei secvente
de operatii.
Pentru a aborda problema, sa consideram doua exemple n care apar erori numerice mari, dar din cauze esential diferite. Lucram n FVM cu (, t, p) = (10, 3, 1).
Pentru a evita confuziile, vom nota cu , , si adunarea, scaderea, nmultirea,
respectiv mpartirea n VM; deci x + y este suma exacta, iar x y = f l(x + y) este
suma calculata n VM.
Exemplul 0.6 In calculul radacinilor polinomului de gradul al doilea ax2 + bx + c,
cu a 6= 0, este necesar calculul expresiei b2 4ac. Considerand b = 3.34, a = 1.22,
c = 2.28, avem b2 4ac = 0.0292, n timp ce, rotunjind prin taiere, b b = 4 a c
= 11.1, deci b b 4 a c = 0. Rezultatul calculat are toate cifrele semnificative
eronate, iar eroarea relativa aferenta este egala cu 1; totusi, pentru fiecare operatie
n parte, eroarea relativa este mai mica decat 102 .

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

b b2 4ac
b + b2 4ac
(0.8)
x1 =
,
x2 =
.
2a
2a
Luand b = 10.1, a = 0.0123, c = 32.4, valoarea exacta rotunjita la 3 cifre
semnificative a lui x2 este 3.22. Efectuand calculele n formatul ales, obtinem
= b b 4 a c = 100 (n loc de 100.41, dar eroarea relativa e nca de ordinul

MOBILA

0.2. ARITMETICA IN VIRGULA

103 ); dar b SQRT () = 0.1, n timp ce b + b2 4ac = 0.0792, eroarea


relativa fiind acum 0.26. Valoarea calculata a radacinii x2 este 4.06, n timp ce
valoarea exacta este 3.22; din nou toate cifrele semnificative ale rezultatului sunt
eronate.

Se observa ca, n ambele exemple, erorile mari apar dupa scaderea a doua numere
de valori apropiate. Se produce o anulare catastrofal
a, adica o pierdere completa a
cifrelor semnificative ale rezultatului. In primul caz anularea trebuie pusa integral
pe seama operatiei matematice de scadere; problema calculului b2 4ac este cauza
erorilor, si nu algoritmul de calcul. In schimb, n al doilea caz, algoritmul de calcul
al radacinilor este de vina, deoarece nu evita scaderea a doua numere apropiate,
desi aceasta este posibil, dupa cum vom vedea putin mai t
arziu. Sa studiem ntai
mai amanuntit ce se ntampla la scaderea a doua numere apropiate.
Exemplul 0.8 Consideram dou
a numere reale, x si y, de acelasi ordin de marime
(cu x > y, pentru simplitate), ale caror prime k cifre coincid, cu urmatoarele
reprezentari (exacte) n baza (d1 6= 0):
x = 0.d1 d2 . . . dk dk+1 . . . dt 1 e ,
y = 0.d1 d2 . . . dk ck+1 . . . ct 0 e .
Rotunjind prin taiere, reprezentarile lor ntr-un FVM cu (, t, p) sunt
x
= f l(x) = 0.d1 d2 . . . dk dk+1 . . . dt e ,
y = f l(y) = 0.d1 d2 . . . dk ck+1 . . . ct e .
Diferenta lor, calculata n VM, este
x
y = 0.f1 . . . ftk 0 . . . 0 k+e .
Observam ca x
y = x
y, deci scaderea se efectueaza fara erori. In schimb,
rezultatul scaderii cu valorile exacte ale operanzilor este
x y = 0.f1 . . . ftk 10 . . . 0 k+e ,
iar eroarea relativa asociata lui este


(x y) (
x y) t+1+e
t1+k

.

k+e =
xy

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

Exemplul 0.8 arata ca adunarea (scaderea) nu introduce erori mari prin ea nsasi,
ci potenteaza n anumite cazuri erorile operanzilor.
De aceea, scaderea numerelor apropiate trebuie evitata. Pentru aceasta, daca
este posibil, algoritmul de calcul este cel care trebuie modificat.

10

CAPITOLUL 0. CONCEPTE FUNDAMENTALE

Exemplul 0.9 Am constatat, n exemplul 0.7, ca formulele (0.8) nu sunt


cele
mai bune din punct de vedere numeric, mai ales cand b2 4ac, si deci |b| .
Pentru a evita scaderea unor numere apropiate, se pot folosi formulele

b sgn(b) b2 4ac
2c

(0.9)
x1 =
,
x2 =
.
2a
b + sgn(b) b2 4ac
Utilizand n (0.9) valorile numerice din exemplul 0.7, se obtine, n FVM de lucru,
un rezultat cu toate cifrele semnificative exacte.

0.3

Conditionarea problemelor de calcul

Orice problema de calcul numeric impune obtinerea unor rezultate numerice, pornind
de la date de intrare numerice, astfel ncat rezultatele sa poata fi interpretate ca o
aproximatie a solutiei unei probleme matematice pentru datele de intrare respective. Pentru ca o astfel de problema sa fie bine definita, trebuie asigurate existenta si
unicitatea solutiei. In acest caz, o problema de calcul numeric poate fi ntotdeauna
descrisa ca evaluare a unei functii
f : D Rn Rm

(0.10)

ntr-un punct x D dat. Cele n componente ale argumentului constituie datele


de intrare, iar cele m componente ale vectorului f (x) sunt rezultatele sau datele de
iesire.
Desigur, aplicatia f este de cele mai multe ori definita implicit iar descoperirea
unei cai prin care calculul valorii f (x) devine posibil echivaleaza cu rezolvarea,
printr-un algoritm specific, a problemei de calcul considerate.
a) Fie D o multime de trei numere reale si

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

Exemplul 0.10

Rezolvarea ecuatiei de gradul II

ay 2 + by + c = 0
este o problema numerica bine definita, deoarece pentru orice x D exista un unic
vector

b sgn(b) b2 4ac



2a
y1

y = f (x) =
=
R2 ,
y2

2c

2
b + sgn(b) b 4ac
care este solutia problemei.
b) Calculul integralei

et dt,

0.3. CONDIT
IONAREA PROBLEMELOR DE CALCUL

11

unde a, b R sunt date (a 6= b), este de asemenea



o problema numerica bine definita.
a
Intr-adevar, pentru datele de intrare x =
D = R2 , exista si este unica
b
R
2
valoarea integralei y R, desi integrala nedefinita et dt nu este exprimabila
prin functii elementare.

Abaterea solutiei calculate fat


a de solutia exacta a unei probleme numerice poate
avea doua surse esential diferite, legate de problem
a n sine si, respectiv, de algoritmul de calcul utilizat. De prima sursa de erori numita conditionarea problemei
ne ocupam n continuare, de cea de-a doua stabilitatea algoritmului n
paragraful urmator.
Conditionarea problemei caracterizeaza sensibilitatea solutiei n raport cu perturbatiile datelor de intrare. In practica este cunoscuta doar o aproximatie x
a datelor
de intrare x si, n cel mai bun caz, presupunand ca toate calculele se efectueaza
exact, putem calcula f (
x) n loc de f (x). Daca functia f definind problema noastra
este prea sensibila la variatii ale argumentului, f (
x) si f (x) pot diferi semnificativ
chiar n cazul unei erori relative mici kx x
k / kxk a datelor de intrare (k k este o
norma adecvata). O astfel de problema este numita r
au conditionat
a.
Daca ncercam rezolvarea unei probleme rau conditionate pornind de la date
inexacte, atunci solutia obtinuta va fi nsotita de erori mari indiferent de felul n
care este calculat
a!
Definitia 0.3 Conditionarea numerica sau sensibilitatea local
a a unei probleme
f : D Rn Rm ntr-un punct x D este exprimat
a de amplificarea erorii relative
kf (x) f (
x)k kxk
(x) =
,
(0.11)
kf (x)k
kx xk

pentru x 6= 0 si f (x) 6= 0. C
and (x) este mic (de ordinul unit
atii, de exemplu)
problema este numit
a bine conditionata n punctul x. Altfel, problema este rau
conditionata.
Observatia 0.2

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


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

atunci
(x) L

kxk
,
kf (x)k

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

Subliniem faptul ca conditionarea este o proprietate locala. De obicei, totusi, o


problema este numita bine conditionata daca este bine conditionata n orice punct
x D; de asemenea, este numit
a rau conditionata, daca exist
a puncte x D n
care este rau conditionata.
Exemplul 0.11 Problema calculului sumei a doua numere x, y R poate fi
bine sau rau conditionata functie de valorile lui x si y (datele de intrare). (Aici

12

CAPITOLUL 0. CONCEPTE FUNDAMENTALE



x
f (x, y) = x + y, f : R R; convenim sa scriem si f (x, y) n loc de f (
),
y
cum ar cere (0.10).)
Presupunem ca x
, y sunt aproximari ale lui x, respectiv y, afectate de erori
relative de acelasi ordin de marime, ; mai precis,
2

x
= x + x x,
y = y + y y,

cu |x | 1,
cu |y | .

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


=

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

(0.12)

Daca x si y au acelasi semn, atunci

|x x| + |y y|

|x| + |y|

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


caz, adunarea este bine conditionata.
Daca x si y au semne diferite, este posibil (atunci cand x si y au si ele semne
diferite) ca si
max(|x|, |y|)
=
|x + y|

sa aiba acelasi ordin de marime. Dar daca |x + y| max(|x|, |y|), ceea ce se


ntampla atunci cand x si y au valori apropiate, atunci . In acest caz,
problema calculului sumei este rau conditionata. Exemplele 0.6, 0.7, 0.8 ilustreaza
aceasta situatie. Pentru a vedea cate subtilitati ascunde calculul aparent simplu al
unei sume, cititorul este invitat s
a consulte [?].

0.4

Stabilitatea numeric
a a algoritmilor

Pentru a rezolva o problema de calcul numeric definita de functia (0.10), un calculator executa o secventa (finita) bine precizata de operatii denumita algoritm. In
general exista mai multi algoritmi pentru rezolvarea unei probleme. Un algoritm
f pentru problema f produce un raspuns unic determinat pentru date de intrare
fixate si deci poate fi exprimat matematic printr-o functie
f : D F Rn Rm .
Deoarece executia unui algoritm se face folosind numere n FVM si calculele sunt
nsotite de erori, este clar ca f(x) este de regula diferit de f (x). De asemenea, nu ne
putem astepta ca algoritmul f sa calculeze solutia unei probleme rau conditionate
mai precis decat o garanteaza datele de intrare. Totusi, e de dorit ca f sa nu introduca erori exagerat de mari. Notiunea de stabilitate numerica exprima marimea
erorilor numerice introduse de un algoritm, n ipoteza ca datele initiale sunt exacte.

A ALGORITMILOR
0.4. STABILITATEA NUMERICA
x r
6
Eroare napoi
?
x
r

f
f
f

13

f (x)
r
I
@
@
@
@
@
@Eroare nainte
@
@
@
Rr
@
f (x) = f (
x)

Date de iesire

Date de intrare

Fig. 0.3: Erori nainte si napoi

Definitia 0.4 Un algoritm f, destinat rezolv


arii problemei f , este numeric stabil
dac
a una dintre urm
atoarele dou
a conditii alternative este ndeplinit
a:
i) f(x) este aproape de f (x) pentru orice intrare x, adic
a solutia calculata aproximeaz
a bine solutia exacta.
ii) pentru orice intrare x, exist
a un x
D apropiat de x astfel nc
at f (
x) s
a fie
egal cu f(x), adic
a solutia calculata de algoritmul f cu date de intrare exacte este
egal
a cu solutia exacta pentru niste date de intrare usor perturbate.
Altfel, algoritmul este numeric instabil.
Cele doua conditii sunt similare, doar ca prima se formuleaza n spatiul datelor
de iesire, iar a doua n spatiul datelor de intrare, dupa cum se poate remarca
n figura 0.3; n mod plastic, eroarea (absoluta) f(x) f (x) este numita eroare
nainte, deoarece corespunde sensului de calcul al algoritmului, iar x
x eroare
napoi, deoarece gasirea unui x
care sa satisfaca ii) nseamna ntoarcerea n
spatiul datelor de intrare, ulterior aplicarii algoritmului. Analiza stabilitatii numerice a unui algoritm nseamna cuantificarea erorilor din definitia 0.4; evaluarea
kf(x)f (x)k este caracteristica analizei nainte (directe); evaluarea k
xxk defineste
analiza napoi (inversa).
Notiunea vaga aproape se poate reexprima prin cea de eroare relativa mica
(notiune destul de vaga si ea); n calculul numeric se folosesc deseori astfel de
exprimari. In mod sigur, o eroare relativa de ordinul erorii de rotunjire (introduse
de (0.7)) caracterizeaza un algoritm numeric stabil 1 : solutia este calculata cu
precizia intrinseca a FVM utilizat.
Este usor de aratat ca utilizarea unui algoritm stabil la rezolvarea unei probleme
bine conditionate conduce la un rezultat de nalta acuratete 2 .
Intr-adevar, din definitia 0.4 varianta ii), pentru intrarea exacta x exista x
astfel
ncat eroarea relativa este (sa zicem) de ordinul erorii de rotunjire
kx xk
t
kxk
1
In

continuare, vom spune algoritm stabil n loc de algoritm numeric stabil.


atentia asupra sensurilor diferite pe care le au n calculul numeric termenii precizie si
acuratete, aproape sinonimi n limbajul uzual. Precizia se refer
a la num
arul de cifre semnificative
din FVM, iar acuratetea la m
arimea erorii dintre rezultatul calculat numeric si cel exact.
2 Atragem

14
si

CAPITOLUL 0. CONCEPTE FUNDAMENTALE

f (
x) = f(x).

(0.13)

Problema fiind bine conditionata, din (0.11) rezulta ca


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

(0.14)

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


kf (x) f(x)k
t ,
kf (x)k
adica un algoritm stabil nu introduce erori suplimentare semnificative n rezolvarea
unei probleme bine conditionate.
In mod similar, se poate observa ca, n alte situatii (de exemplu pentru probleme
rau conditionate sau pentru algoritmi instabili), marimea erorii asociate rezultatului nu poate fi apreciata. Cand un algoritm stabil este folosit pentru a rezolva
o problema rau conditionata, nu exista nici o garantie ca f (
x) si f (x) au valori
apropiate si, desi f (
x) este (aproximativ) egal cu f(x), diferenta dintre f (x) si f(x)
poate fi semnificativa. Cand un algoritm instabil este folosit pentru rezolvarea unei
probleme bine conditionate, solutia calculata f(x) pentru date exacte de intrare
este solutie exacta a problemei cu x
departe de x, si tot asa este f (
x) de f (x). In
sfarsit, nu e nici o speranta de a obtine erori mici atunci cand un algoritm instabil
este utilizat pentru o problema r
au conditionata.
Exemplul 0.12
Revenim la problema calculului sumei, f : R2 R,
f (x, y) = x + y. Problema poate fi bine sau rau conditionata n functie de datele
de intrare (vezi exemplul 0.11).
Algoritmul de calcul al sumei n virgula mobila f : R2 R este
f(x, y) = x y = f l(x + y),
unde f l este o functie de rotunjire care respecta relatia (0.7), iar x si y sunt numere
n FVM; deci, n conformitate cu (0.7),
f(x, y) = x(1 + ) + y(1 + ),
cu || de ordinul t , adica suma calculata este suma exacta a operanzilor usor
perturbati, si deci algoritmul de sumare este stabil.

Exemplul 0.13
Sa analizam acum algoritmul de calcul al marimii
f (a, b, c) = b2 4ac. Presupunem ca a, b, c sunt numere n FVM. In conformitate
cu (0.7) avem
f(a, b, c) = b b 4 a c = [b2 (1 + 1 ) 4ac(1 + 2 )](1 + 3 ),
cu |1 |, |2 |, |3 | de ordinul t ; am presupus ca 4 a se calculeaza fara erori, ceea
ce e adevarat n baza 2, dar nu si n baza 10.

ILE UNUI ALGORITM NUMERIC


0.5. CALITAT

15

Definind
a
= a(1 + 2 ),
constatam ca

p
b = b (1 + 1 )(1 + 3 ),

c = c(1 + 3 ),

f(a, b, c) = b2 4
ac,

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

Exemplul de mai sus este o ilustrare foarte simpla a analizei inverse a erorilor
de rotunjire ale unui algoritm. In aceasta tehnica se utilizeaza limitele (0.7) ale
erorilor introduse de operatiile n virgula mobila pentru a demonstra ca solutia
calculata a unei probleme este solutia exacta a problemei cu date de intrare usor
perturbate. O astfel de demonstratie garanteaza ca algoritmul este numeric stabil si,
pentru probleme bine conditionate, sunt asigurate erori relative mici ale rezultatelor
calculate.
Pentru probleme nebanale, a arata ca un anume algoritm este stabil poate fi
o sarcina dificila. Exista foarte putini algoritmi pentru care exista o demonstratie
completa a stabilitatii numerice. Totusi, multi algoritmi importanti au fost validati
n practica printr-o experienta de zeci de ani. Cum spunea Wilkinson: scopul
principal al analizei erorilor nu este de a stabili margini precise, ci de a evidentia
instabilitatile potentiale ale unui algoritm, daca ele exista, si, prin aceasta, de a gasi
o cale de mbunatatire a algoritmului [IV].
In aceasta lucrare vom fi interesati mai mult de prezentarea celor mai buni algoritmi care rezolva o problema, si mai putin de demonstrarea aproape ntotdeauna
extrem de tehnica a stabilit
atii lor numerice.

0.5

Calit
atile unui algoritm numeric

Pentru a ncheia acest capitol, sa precizam criteriile dupa care se apreciaza calitatea
unui algoritm numeric.
Num
arul de operatii. Timpul de executie al unui program pe un calculator
precizat este o caracteristica de prim ordin a acestuia. De regula, un program se
executa de mai multe ori, pentru a rezolva o anume problema pentru diverse date
de intrare; timpul de executie permite aprecierea numarului de solutii care se pot
obtine ntr-un anumit timp, de obicei impus.
Desigur, este de dorit a estima timpul de executie al unui program nainte de
crearea sa efectiva, numai pe baza algoritmului implementat de program. O buna
masura este numarul de operatii aritmetice efectuate; n algoritmii numerici ele
constituie de obicei partea majoritara a operatiilor, cele cu ntregi sau logice avand
o pondere mica, atat ca numar, c
at si ca durata de executie.
Numim flop o operatie aritmetica elementara (adunare, scadere, nmultire, mpartire). Num
arul de operatii al unui algoritm este numarul de flopi necesari
obtinerii rezultatului. Trebuie precizat ca desi numarul de operatii poate indica
doar cu aproximatie timpul de executie pe un calculator dat, n schimb este o foarte
bun
a masura pentru compararea a doi algoritmi.

16

CAPITOLUL 0. CONCEPTE FUNDAMENTALE

De regula, numarul de operatii Nop al unui algoritm e functie de dimensiunea


problemei care, de multe ori, poate fi apreciata prin numarul datelor de intrare,
Nop = f (n). In calculul numeric, de obicei f este un polinom (de grad mic),
f (n) = a0 nk + a1 nk1 + . . . + ak . Pentru ca f poate avea o expresie complicata, se
pastreaza doar termenul cel mai semnificativ si se scrie Nop a0 nk . O astfel de
aproximare este cu atat mai bun
a cu cat n este mai mare. Pentru aprecieri pur
calitative, vom omite a0 si vom scrie3 Nop = O(nk ).
Memoria ocupat
a. Pentru executia unui algoritm (program) este necesara
memorarea datelor de intrare, rezultatelor, precum si a altor valori intermediare.
Numarul de elemente n FVM necesare n acest scop se numeste memoria ocupat
a
de algoritm.
In majoritatea cazurilor, datele de intrare nu mai sunt necesare la terminarea algoritmului. Spatiul de memorie ocupat de ele poate fi utilizat pe parcursul executiei
algoritmului pentru a memora rezultate partiale si/sau finale. In acest caz se spune
ca efectuam calculele pe loc.
Stabilitatea numeric
a, discutata n paragraful anterior, arata acuratetea rezultatelor obtinute de algoritmul numeric (n ipoteza ca datele initiale sunt exacte).
Aceste trei criterii trebuie corelate cu viteza calculatorului, memoria disponibila,
numarul de cifre semnificative al FVM utilizat.
Desigur, nu trebuie uitata nici un moment conditionarea problemei, care influenteaza si ea acuratetea rezultatului. Intereseaza n special performantele algoritmului
pentru probleme rau conditionate, adica atunci cand erorile datelor de intrare sunt
mult amplificate. In orice caz, calculul solutiei e bine a fi nsotit de determinarea
(sau estimarea) conditionarii problemei, adica de calculul unei cantitati de tip (0.11).
Putem adauga astfel un al patrulea criteriu de apreciere a unui algoritm:
Siguranta n functionare capacitatea de a semnala situatiile n care rezultatul
poate fi afectat de erori importante datorate relei conditionari a problemei. Decizia
de a utiliza sau nu un astfel de rezultat revine utilizatorului sau unui program
expert.

0.6

Implicatiile arhitecturii calculatoarelor asupra


organiz
arii algoritmilor

In consideratiile din sectiunea precedenta am presupus calculatorul pe care se vor


implementa algoritmii ca avand arhitectura clasica von Neumann, schitata n figura
0.4a; pe un astfel de calculator, n principiu, pentru fiecare operatie aritmetica
se aduc operanzii din memoria M n unitatea centrala UC, se executa operatia si
rezultatul este depus napoi n M. Cu acest mod de operare, timpul de executie
e dictat esentialmente de numarul de operatii n virgula mobila, durata traficului
ntre M si UC fiind proportionala cu numarul de flopi.
In ultimele doua decenii au ap
arut numeroase tipuri de arhitecturi pe care timpul
de executie a unui algoritm nu mai este proportional cu numarul de operatii n
3 Se

scrie f (n) = O(g(n)) dac


a exist
a dou
a constante c1 , c2 astfel nc
at c1 g(n) f (n) c2 g(n).

17

0.6. IMPLICAT
IILE ARHITECTURII CALCULATOARELOR

UC
6
UCS

UC

UCV

6
?

?
MR

6
?

6
?

MP

(a)

(b)

(c)

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

virgula mobila. Vom exemplifica n continuare cu doua arhitecturi larg raspandite,


n special n gama calculatoarelor de mare performanta.
Calculatoarele vectoriale au doua (tipuri de) unitati de calcul, ca n figura
0.4b. Una dintre unitati UCS este obisnuita; ea executa operatii scalare, adica
operatiile aritmetice uzuale. Cealalta UCV este dedicata operatiilor vectoriale,
adica unor operatii aritmetice de acelasi tip repetate pentru mai multe perechi de
date; de exemplu, adunarea a n perechi de numere, xi + yi , i 1 : n. Daca pe un
calculator von Neumann nu e nici o diferenta de viteza ntre astfel de operatii, pe
calculatoarele vectoriale se executa mult mai rapid operatiile vectoriale; explicatia e
relativ simpla: UCV e astfel construita ncat datele o parcurg ca pe o banda rulanta
cu mai multe posturi de lucru, fiecare pereche de date suferind la un moment dat
o alta operatie intermediara (daca sunt p posturi de lucru, timpul de producere a
unui rezultat este de aproximativ p ori mai mic). La aceasta se adauga si un mod de
comunicatie sofisticat ntre M si UCV, astfel ncat UCV sa poata fi n permanenta
alimentata cu date. In schimb, UCS prelucreaza doar o pereche de date la un moment dat. Deci, un algoritm eficient pe un calculator vectorial va contine mai ales
operatii de tip vectorial.
Calculatoarele cu memorie ierarhic
a au structura sugerata n figura 0.4c. Principala noutate a acestei arhitecturi este organizarea memoriei pe cel putin doua
niveluri. Timpul de acces la memorie creste odata cu distanta dintre unitatea centrala si memoria respectiva; memoria rapida (MR) are un timp de acces sensibil
mai mic decat cel al memoriei principale (MP), dar si o capacitate mult mai mica;
aceste caracteristici provin mai ales din tehnologia de realizare, diferita de cea a
memoriei principale (totusi, n mod natural, o memorie mai mica este mai rapida).
Transferurile ntre UC si MR dureaza putin n comparatie cu timpul de executie
al unei operatii n virgula mobila; n schimb, transferurile ntre MR si MP dureaza
mai mult. De aceea, un algoritm eficient pe un calculator cu memorie ierarhica are
un numar cat mai mic de transferuri implicand MP, acesta fiind criteriul principal de

18

CAPITOLUL 0. CONCEPTE FUNDAMENTALE

apreciere, si nu numarul de operatii. Caracteristica tipica a unui astfel de algoritm


este organizarea calculelor la nivel de bloc de matrice, operandu-se intensiv cu date
aflate ntr-o aceeasi zona de memorie, suficient de mica pentru a ncapea n MR.
Concluzia care se impune este ca utilizarea unui acelasi algoritm pentru rezolvarea unei anume probleme pe toate arhitecturile ar fi ineficienta. Vom sugera,
n capitolele urmatoare, metode de crestere a eficientei algoritmilor pe calculatoare
vectoriale si cu memorie ierarhic
a. De obicei, este necesara doar o reorganizare
a calculelor; alteori, nsa, algoritmi noi se dovedesc mult mai eficienti pe aceste
arhitecturi.
O alta clasa de arhitecturi de mare performanta cuprinde calculatoarele paralele. Acestea au mai multe procesoare identice care pot lucra independent si care
coopereaza printr-un mediu de comunicatie (legaturi directe sau memorie comuna).
Algoritmii eficienti pe arhitecturi paralele au multe caracteristici ce i diferentiaza
net de cei secventiali; tratarea lor impune instrumente specifice, de aceea nu i vom
aborda n prezenta lucrare, ci n una urmatoare, dedicata numai lor. Pentru o
introducere n materie, cititorul interesat poate consulta capitolul 6 din [VI].

0.7

Probleme

P 0.1 Urm
atorul exemplu arat
a c
a adunarea n virgul
a mobil
a nu este asociativ
a. S
a
consider
am numerele x1 = 0.001, x2 = 1, x3 = 1, reprezentate ntr-un FVM cu = 10,
t = 3. C
at de mare este eroarea relativ
a atunci c
and se calculeaz
a y = x1 + x2 + x3 ?
P 0.2 G
asiti o limit
a a erorii relative pentru calculul n virgul
a mobil
a al sumei
y = x1 + x2 + x3 ; presupuneti c
a x1 , x2 , x3 sunt numere n virgul
a mobil
a.
P 0.3 S
a consider
am problema calculului solutiei ecuatiei liniare ax + b = 0, cu a, b R,
a 6= 0. Pentru ce valori ale datelor de intrare a, b este aceast
a problem
a r
au conditionat
a?
Algoritmul pentru calculul solutiei este x = b/a; este acest algoritm numeric stabil ?
P 0.4 Aceeasi ntrebare pentru ecuatia (a1 + a2 )x + (b1 + b2 ) = 0, n care datele de intrare
sunt a1 , a2 , b1 , b2 R.
P 0.5 Se consider
a un FVM definit de (, t, p). Care este distanta ntre 1 si cel mai
apropiat num
ar reprezentabil n virgul
a mobil
a, mai mare ca 1 ?
P 0.6 G
asiti limita (superioar
a) a erorii relative a functiei de rotunjire care asociaz
a
fiec
arui x [M, M ] cel mai apropiat num
ar n virgul
a mobil
a.

P 0.7 Ce formul
a recomandati pentru calculul n virgul
a mobil
a: x2 y 2 sau (xy)(x+y) ?
(Se presupune c
a x si y sunt numere n FVM.)

Capitolul 1

Algoritmi elementari de
calcul numeric
Acest capitol este dedicat prezentarii notiunilor matematice aflate la baza dezvoltarilor ulterioare, formularii problemelor de calcul pe care le vom rezolva, n
diverse variante, pe ntreg parcursul lucrarii, precum si descrierii unor primi algoritmi numiti ad-hoc elementari, unii folositi ca unelte mai tarziu, altii deja rezolvand
probleme sau cazuri particulare ale unor probleme semnificative.
Notiunile matematice apartin n mare majoritate algebrei liniare. Am ncercat
o prezentare de sine statatoare, dar, desigur, cunostintele anterioare ale cititorului
sunt binevenite.
Fiecare sectiune a capitolului are doua parti: prima, cu nuanta teoretica, de
parcurgere a unor definitii si proprietati fundamentale; a doua, de aspecte algoritmice, n care sunt prezentati si analizati algoritmi simpli, moduri de memorare
a datelor, artificii numerice etc. Subtitlurile acestor din urma parti vor ncepe cu
sigla AA.
Principalii algoritmi prezentati rezolva urmatoarele probleme: produsul matriceal (cu diversele lui cazuri particulare: produsul scalar, produsul exterior, produsul matrice-vector), calculul normelor vectoriale si matriceale, rezolvarea sistemelor liniare triunghiulare si calculul valorilor si vectorilor proprii ai matricelor
triunghiulare. Sunt prezentate modalitatile prin care se maresc performantele algoritmilor pe diverse arhitecturi de calculatoare. Capitolul se ncheie cu prezentarea
rutinelor BLAS, extrem de utilizate n calculul numeric.

1.1

Vectori. Spatiul vectorial Rn

In aceasta lucrare vom utiliza de regula entitati (vectori si matrice) construite cu


numere reale; majoritatea definitiilor si proprietatilor sunt valabile si pentru numere
complexe; vom face diferentierile necesare atunci cand va fi cazul. Un numar real
R va fi numit si scalar; scalarii vor fi notati de obicei cu litere grecesti mici.

20

CAPITOLUL 1. ALGORITMI ELEMENTARI


6

1
x3

 x
1

x2 

 



x1



+

(a)




 e1 

1
1
e2
+
+

(b)
e3

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

Vectori. Un vector real x de dimensiune n este o colectie de n numere reale


dispuse ordonat ntr-o coloana

x1
x2

x = . ,
(1.1)
..
xn

numerele xi fiind numite componente (elemente, sau coordonate) ale vectorului x.


In general, vom nota vectorii cu litere latine mici, iar elementele lor cu litera respectiva si indicele pozitiei. Pentru economie de spatiu tipografic, vom nota deseori
x = [x1 . . . xn ]T , unde xT = [x1 . . . xn ] este vectorul linie cu aceleasi elemente ca
n (1.1), iar indicele superior T denota operatia de transpunere.
Multimea tuturor vectorilor de dimensiune n va fi notata cu Rn si va fi asimilata cu spatiul real n-dimensional. In consecinta, din punct de vedere geometric, un
vector reprezinta segmentul orientat care uneste originea spatiului real cu n dimensiuni cu punctul de coordonate (x1 , . . . , xn ), sau chiar numai acest din urma punct.
Vectorul cu toate componentele nule va fi notat cu 0, dimensiunea sa reiesind din
context; geometric, acesta este originea spatiului n-dimensional. Pentru o mai buna
ntelegere, vom ilustra unele concepte n R2 sau R3 ; figura 1.1a prezinta un vector
si semnificatia (de coordonate) a elementelor sale.
Vectorii din Rn care au un element egal cu 1 si celelalte nule se numesc vectori
unitate; ei vor fi notati
. . 0}]T ,
ei = [0
. . 0} 1 0| .{z
| .{z
i1

ni

indicele aratand pozitia valorii 1. Spre exemplu, vectorii unitate din R3 sunt
prezentati n figura 1.1b.
Doi vectori sunt egali cand toate componentele lor de acelasi indice sunt egale;
deci, daca x, y Rn , atunci x = y cand xi = yi , i 1 : n.

1.1. VECTORI. SPAT


IUL VECTORIAL RN
:




 x + y



-

21
x

(a)

(b)

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

Introducem acum operatiile elementare cu vectori.


Suma a doi vectori x, y Rn este vectorul z Rn definit prin zi = xi + yi ,
i 1 : n; asadar, suma se face pe componente. In acest fel sunt mostenite toate
proprietatile adunarii numerelor reale:
1. asociativitate (u + (v + w) = (u + v) + w);
2. comutativitate (u + v = v + u);
3. elementul neutru este vectorul nul (x + 0 = x);
4. opusul unui vector x este x, adica vectorul cu elementele xi , i = 1 : n
(x + (x) = 0).
Astfel, Rn mpreuna cu operatia de adunare formeaza un grup comutativ.
Produsul unui vector x Rn cu un scalar R este vectorul y = x Rn
definit de yi = xi , i 1 : n; deci, produsul se face multiplicand cu fiecare
componenta a vectorului x. Produsul cu un scalar este o operatie externa pe Rn .
Semnificatiile geometrice ale celor doua operatii sunt prezentate n figura 1.2;
adunarea se face dupa regula paralelogramului, iar produsul cu un scalar modifica
doar lungimea vectorului, pastrandu-i directia.
Multimea Rn mpreuna cu operatiile de adunare si produs cu un scalar are
structura de spatiu vectorial, adica, n afara structurii de grup comutativ fata de
adunare, mai sunt satisfacute urmatoarele proprietati ale produsului cu un scalar:
1. 1 x = x;
2. (x) = ()x;
3. ( + )x = x + x;
4. (x + y) = x + y.
Combinatie liniar
a. Fie X Rn o multime avand ca elemente vectorii
x1 , x2 , . . . , xp . Vectorul
def

y = 1 x1 + 2 x2 + . . . + p xp =

p
X

i xi

(1.2)

i=1

se numeste combinatie liniar


a a vectorilor din X cu coeficientii 1 , 2 , . . . , p R.
Daca toti coeficientii sunt nuli, combinatia se numeste trivial
a.
Vectorii din X sunt liniar independenti daca nu exista o combinatie liniara netriviala a elementelor lui X care sa fie nula. Daca o astfel de combinatie exista, vectorii
din X sunt numiti liniar dependenti.
1 Se observ
a c
a acum xi este un vector si nu un element de vector; asadar, folosim indicii si
pentru a numerota vectorii dintr-o multime.

22

CAPITOLUL 1. ALGORITMI ELEMENTARI

Daca vectorii sunt liniar dependenti, atunci cel putin unul


Pp dintre ei se poate
exprima printr-o combinatie P
liniara a celorlalti; i.e., daca i=1 i xi = 0, atunci
exista j 6= 0, si deci xj = pi=1,i6=j (i /j )xi .
Evident, ntr-o multime de vectori independenti, nici unul dintre ei nu se poate
exprima printr-o combinatie liniara a celorlalti. De exemplu, vectorii unitate
e1 , . . . , en sunt liniar independent
i. Daca X Rn este o multime de vectori
Pp
n
liniar independenti si y =
ie liniara a acestora,
i=1 i xi R este o combinat
atunci coeficientii combinatiei liniare sunt unici (demonstrati).

Subspatiu liniar. O multime S de vectori din Rn este numita subspatiu liniar


al spatiului Rn daca sunt ndeplinite urmatoarele doua conditii:
1. x + y S, x, y S;
2. x S, R, x S.

Asadar, orice combinatie liniara a unor vectori din S apartine tot lui S; altfel spus,
S e invariant la combinatii liniare. Evident, orice subspatiu liniar contine vectorul
nul (originea).
Fie X Rn o multime de vectori si S multimea tuturor combinatiilor liniare ale
vectorilor din X . Atunci S e un subspatiu liniar, numit subspatiul generat de X . De
exemplu, n R3 doi vectori genereaza de regula un plan; daca vectorii sunt coliniari
(adica exista scalarul a.. y = x), atunci subspatiul generat este o dreapta.
Fie S Rn un subspatiu; o multime de vectori B S este baz
a a subspatiului
S daca:
1. elementele lui B sunt liniar independente;
2. S e generat de B.
Asadar o baza contine numarul minim de vectori cu ajutorul carora se poate genera
subspatiul.
Daca B = {b1 , . . . , bm }, atunci x S se
n mod unic n forma unei
Pscrie
m
combinatii liniare a vectorilor din baza, x = i=1 i bi . Numerele i se numesc
componentele sau coordonatele, vectorului x n raport cu baza B.
De exemplu, e1 , . . . , en formeaza o baza pentru Rn , numita si baza canonic
a;
componentele vectorului x, n sensul definit

iei
(1.1),
sunt
componentele

n
raport
Pn
cu aceasta baza, deoarece evident x = i=1 xi ei .
Un subspatiu are o infinitate de baze, dar toate au acelasi numar de elemente.
Evident, un vector x 6= 0 are coordonate diferite n raport cu aceste baze.
Dimensiunea unui subspatiu, notata dim S, este numarul vectorilor din baza,
adica numarul maxim de vectori din S liniari independenti sau, cum am mentionat
deja, numarul minim de vectori care genereaza S.
De exemplu, Rn are dimensiunea n, numarul de vectori din baza canonica; un
plan n R3 are dimensiunea 2.
Doua subspatii S, T Rn se numesc complementare daca
1. S T = {0}.
2. Rn este generat de S T .

1.1. VECTORI. SPAT


IUL VECTORIAL RN
6
C
 C
C

C

T
C
SC
C 
C
C
C
C
C
CC
C
C


+ C


C 
CC

23

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


In acest caz vom utiliza notatia Rn = S T . Fiecare dintre cele doua subspatii este
numit complementul celuilalt. Orice vector x Rn se poate exprima n mod unic
prin x = s + t, cu s S, t T . De asemenea, dim S + dim T = n. De exemplu,
n figura 1.3 sunt reprezentate un plan si o dreapta n R3 , care constituie imaginile
geometrice a doua subspatii complementare.
Sa observam ca subspatiul complementar al unui subspatiu nu este, n general,
unic. In exemplul din figura 1.3, orice dreapta care nu apartine planului este complementara acestuia.
Spatiul vectorial complex Cn se defineste analog cu spatiul Rn si are aceleasi
proprietati, deoarece proprietatile corpului numerelor reale folosite mai sus sunt
identice cu cele ale corpului numerelor complexe.
Desigur, orice vector x Cn se poate scrie n forma x = u + iv, cu u, v Rn si
i unitatea imaginara.
AA. Saxpy. Vom descrie acum n termeni algoritmici o operatie fundamentala
cu vectori, anume y x + y, cu x, y Rn , R, operatie numita Saxpy2 .
Notatia , citita ia valoarea, are semnificatia de atribuire. Cu alte cuvinte,
ntr-un program ce realizeaza operatia si n care vectorii x si y reprezinta variabile,
vectorul calculat x + y este depus n variabila y, suprascriind valoarea initiala a
acesteia. Vom introduce direct si alte conventii de scriere a algoritmilor, cu premiza
ca cititorul are notiuni elementare despre limbajele de programare de nivel nalt.
Algoritmul 1.1 (Saxpy) (Se dau x, y Rn .
y x + y Rn .)

Se calculeaza

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

2 Notat
ia provine din initialele variabilelor folosite: x Plus y; n BLAS, initiala S semnific
a
faptul c
a calculele se efectueaz
a n Simpl
a precizie; ea este atasat
a n mod traditional numelui
operatiei.

24

CAPITOLUL 1. ALGORITMI ELEMENTARI

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


toate valorile indicate ale indicelui i, a instructiunilor ce i urmeaza (pana la prima
instructiune aflata la acelasi nivel cu Pentru). Instructiunile sunt referite prin
secvente de numere cuprinzand (de la dreapta spre stanga) numarul din algoritm al
instructiunii respective si numerele instructiunilor carora le este subordonata (de la
cea mai apropiata la cea mai dep
artata). In algoritmul Saxpy, prima instructiune
este 1, a doua 1.1.
Contorizand operatiile executate de algoritmul 1.1, constatam ca fiecare executie
a instructiunii 1.1 necesita 2 flopi (o nmultire si o adunare), deci, n total, sunt
necesari Nop = 2n flopi.
In continuare, Saxpy va fi privita ca operatie elementara si va fi apelata prin
Saxpy(, x, y); ea face parte din grupul operatiilor de nivel 1, mpreuna cu alte
operatii, dintre care unele vor fi prezentate ulterior3 .
Asa cum este normal, Saxpy si celelalte operatii de nivel 1 sunt executate
mai eficient pe calculatoare vectoriale. De aceea, pe astfel de calculatoare, exista
tendinta de a scrie toti algoritmii n termeni de operatii de nivel 1 si nu prin operatii
aritmetice elementare.

1.2

Produs scalar. Norme. Ortogonalitate

Produsul scalar este o functie f : Rn Rn R cu proprietatile:


1. f (x, y) = f (y, x) (comutativitate);
2. f (x, y + z) = f (x, y) + f (x, z) (distributivitate);
3. f (x, y) = f (x, y);
4. f (x, x) 0 si f (x, x) = 0 x = 0 (pozitivitate).
Produsul scalar standard n Rn , cel pe care l vom utiliza de obicei, se defineste
not
def Pn
prin f (x, y) = y T x, unde y T x = i=1 xi yi . Invitam cititorul sa verifice satisfacerea celor patru proprietati ale produsului scalar.
Spatiul Rn mpreuna cu produsul scalar uzual este un spatiu euclidian (n el este
valabila o geometrie similara cu cea din R2 si R3 , cunoscuta din liceu).
Norme. Prin norma se asociaza unui vector o marime (lungime). O norm
a
vectorial
a este o functie : Rn R+ , notata de obicei (x) = kxk, care satisface
urmatoarele conditii:
1. kxk > 0, x Rn , x 6= 0 (pozitivitate);
2. kxk = || kxk, x Rn , R (omogenitate);
3. kx + yk kxk + kyk, x, y Rn (inegalitatea triunghiului).
Se deduce imediat ca k0k = 0 si k xk = kxk.
Cea mai utilizata norma vectoriala este cea indusa de produsul scalar si se
numeste norm
a euclidian
a sau norm
a 2:
v
u n

uX
T
kxk2 = x x = t
x2i .
(1.3)
i=1

3 Numerotarea nivelelor se face dup


a exponentul lui n din expresia num
arului de flopi necesari
la executie; operatiile de nivel 1 necesit
a O(n) flopi, cele de nivel 2 necesit
a O(n2 ) flopi etc.

1.2. PRODUS SCALAR. NORME. ORTOGONALITATE

6
'$
1
@ 

@
@
b
@
b 2
&%

25

Fig. 1.4: Cercuri de raza 1 n R2 , n normele 1, 2,


Denumirea de norma 2 este justificata de faptul ca (1.3) este un caz particular
de norma p (sau norma Holder). Pentru p 1, norma p se defineste prin
kxkp =

n
X
i=1

|xi |

!1/p

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


definite, n ordine, prin
n
X
kxk1 =
|xi |,
i=1

kxk = max |xi |.


i=1:n

Pentru a ilustra geometric cele trei norme de mai sus, figura 1.4 prezinta cercurile de raza 1 n R2 , adica locul geometric al punctelor x R2 pentru care
kxkp = 1, pentru p = 1, 2, .
Doua norme pe Rn , sa zicem k kq si k kr , se numesc echivalente daca exista
1 , 2 > 0 astfel ncat pentru orice x Rn avem
1 kxkq kxkr 2 kxkq .

(1.4)

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


kxk kxk1 nkxk ;
kxk kxk2
kxk2 kxk1

nkxk ;

nkxk2 .

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


= arccos(y T x/(kxk kyk)); geometric, acesta este chiar unghiul format de cei doi
vectori n planul generat de ei.
Doi vectori x, y Rn se numesc ortogonali daca produsul lor scalar este nul,
T
x y = 0; semnificatia geometric
a este cea naturala: ntre cei doi vectori este un
unghi drept; de aceea vom folosi si notatia x y.
Vectorii u1 , u2 , . . . , up se numesc ortogonali daca sunt ortogonali doi cate doi,
adica
uTi uj = 0, i 6= j, i, j 1 : p.
(1.5)

26

CAPITOLUL 1. ALGORITMI ELEMENTARI

Daca, n plus fata de (1.5), vectorii ui au norme euclidiene unitare, kui k2 = 1,


i = 1 : p, ei sunt numiti ortonormali.
Vectorii ortogonali sunt liniar independenti; justificarea e intuitiva: un vector
ortogonal pe toti ceilalti este ortogonal si pe orice combinatie liniara a lor.
Orice subspatiu de dimensiune mai mare ca unu are o infinitate de baze ortonormale 4 . De exemplu, baza canonica a Rn , e1 , . . . , en , este ortonormala. Folosirea
bazelor ortonormale este recomandabila nu numai datorit
a proprietatilor matematice, dar si a acuratetii numerice pe care o induc n calcule. Un mod simplu, dar nu
si numeric stabil, de a construi o baza ortonormala, pornind de la o baza oarecare,
este sugerat n problema 1.6 (algoritmul Gram-Schmidt); metode numeric stabile
vor fi prezentate n capitolele 3 si 5.
Teorema lui Pitagora se generalizeaza imediat n Rn : vectorii x, y Rn sunt
ortogonali daca si numai daca kx + yk22 = kxk22 + kyk22 .
Notiunea de ortogonalitate poate fi extinsa la subspatii liniare. Vectorul x Rn
este ortogonal pe subspatiul S Rn daca este ortogonal pe orice vector din S. Doua
subspatii S, T Rn sunt ortogonale daca orice vector s S este ortogonal pe orice
vector t T ; vom nota S T .
Un subspatiu S Rn este numit complementul ortogonal al subspatiului
T Rn daca cele doua subspatii sunt ortogonale si complementare. (x Rn ,
exista vectorii unici s S, t T astfel ncat x = t + s si t s.) Se utilizeaza
notatia S = T ; desigur, avem si T = S .
Particularit
ati ale spatiului euclidian complex Cn . Produsul scalar uzual
al vectorilor x, y Cn este definit de proprietati usor diferite de cele ale produsului
scalar din Rn ; mai precis, notand cu complex conjugatul scalarului complex ,
proprietatile 1 si 3 devin:
1. f (x, y) = f (y, x);
3. f (x, y) = f (x, y).
Pn
Produsul scalar uzual n Cn se defineste prin y H x = i=1 xi yi .
Doi vectori x, y Cn sunt ortogonali daca y H x = 0.

Norma euclidian
a k k : Cn R+ se defineste prin kxk2 = xH x, x Cn ,
P
unde xH x = ni=1 |xi |2 , iar || este modulul scalarului complex .

AA. Calculul produsului scalar. Urmand (1.3), produsul scalar se calculeaza


astfel:
Algoritmul 1.2 (DOT Calculul produsului scalar) (Se dau vectorii x, y Rn . Se calculeaz
a = y T x.)
1. 0
2. Pentru i = 1 : n
1. + xi yi

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

1.2. PRODUS SCALAR. NORME. ORTOGONALITATE

27

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


ci o valoare
, despre care se poate demonstra (vezi si problema 1.5):
|
| nM |y|T |x| + O(2M ),

(1.6)

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

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


kxk se calculeaza astfel:
Algoritmul 1.3 (Nrminf Calculul normei infinit a unui vector)
(Se da x Rn . Se calculeaz
a kxk .)
1. norm 0
2. Pentru i = 1 : n
1. Dac
a |xi | > norm atunci norm |xi |

Pentru calculul normei 2 a unui vector x Rn poate fi utilizat algoritmul 1.2,


apel
and DOT(x, x), si apoi extr
agand radicalul. Exista nsa posibilitatea ca, desi
kxk2 este reprezentabil n virgula mobila, xT x = kxk22 sa nu fie (de exemplu 1025 este
reprezentabil n simpla precizie, dar 1050 nu) si atunci calculul lui xT x sa conduca
la depasire superioara. Similar poate aparea o depasire inferioara, care antreneaza
pierdere de precizie sau decizii eronate: kxk2 = 0 desi x 6= 0. Pentru a preveni acest
eveniment care ar mpiedica obtinerea rezultatului, se scaleaz
a vectorul x, adica se
mpart toate elementele sale cu, de exemplu, kxk (se aduce astfel x la alta scara
de marime). Daca x
= x / kxk , atunci |
xi | 1, i 1 : n, si depasirea superioara
este practic imposibila. (Aparitia unor depasiri inferioare la ridicarea la patrat a
unor elemente ale vectorului x
nu este suparatoare, deoarece n acest caz rezultatul
se aproximeaza cu zero.) Se obtine urmatorul algoritm.
Algoritmul 1.4 (Nrm2 Calculul normei 2 a unui vector) (Se da
x Rn . Se calculeaza = kxk2 , efectuand o operatie de scalare.)
1. Se calculeaza = kxk
2. = 0
3. Pentru i = 1 : n
1.
+ (xi /)2
4.

Comentarii. Se observa ca scalarea, care se efectueaza n instructiunile 1 si 3.1,


ncarca algoritmul cu n flopi (2) si n comparatii (1); cu toate acestea, siguranta
calculelor impune de regula utilizarea ei, cu exceptia cazurilor n care informatiile
apriorice despre date exclud aparitia depasirii.
Un rafinament al algoritmului 1.4 este de a utiliza pentru scalare nu kxk , ci
cea mai apropiata putere a bazei de numeratie a formatului virgula mobila utilizat
(de regula 2). Scalarile din instructiunea 3.1 vor avea rezultate de acelasi ordin de
marime ca n cazul scalarii cu kxk , deci nu va exista pericol de depasire superioara,
n schimb toate mpartirile se vor efectua exact, neintroducandu-se nici un fel de
eroare numerica suplimentara la calculul normei.

28

CAPITOLUL 1. ALGORITMI ELEMENTARI

AA. Ortogonalitate numeric


a. Matematic, testul de ortogonalitate a doi
vectori x, y Rn este foarte clar: se verifica daca xT y = 0. Numeric nsa, se
ntampla foarte rar ca DOT(x, y) sa fie exact 0; aceasta se datoreaza atat erorilor
numerice aparute n executia algoritmului DOT, cat si erorilor de reprezentare
asociate elementelor celor doi vectori. De aceea, pentru a considera doi vectori
numeric ortogonali, ne multumim cu conditia
| DOT(x / kxk2 , y / kyk2 ) | < cM ,
unde c 1 este o constanta mic
a, adica produsul scalar al vectorilor normalizati
sa fie de acelasi ordin de marime cu epsilon masina al formatului virgula mobila
utilizat.

1.3

Matrice

Matrice. O matrice reala A este un tablou bidimensional (rectangular) de


numere reale dispuse pe m linii si n coloane; notand cu aij elementul matricei de
pe linia i si coloana j, matricea arata astfel

A=

a11
a21
..
.

a12
a22
..
.

...
...

a1n
a2n
..
.

am1

am2

. . . amn

(1.7)

Daca m = n, matricea se numeste p


atrat
a.
Multimea tuturor matricelor reale (complexe) cu m linii si n coloane va fi notata
Rmn (respectiv Cmn ). Pastram n continuare conventia de a ne referi la cazul
complex doar atunci cand este diferit de cel real.
Se numeste diagonal
a principal
a a matricei multimea pozitiilor de indici egali din
tablou; pentru A Rnn , suma elementelor de pe diagonala principala se numeste
def P
urm
a si se noteaza tr(A) = ni=1 aii .

Operatii. Definim acum cateva operatii elementare cu matrice: suma, produsul


cu un scalar, transpunerea.
Suma a doua matrice A, B Rmn este matricea C = A + B Rmn , definita
prin cij = aij + bij ; asadar, suma se face adunand elementele de pe pozitii corespondente.
Produsul unei matrice A Rmn cu un scalar R este matricea
B = A Rmn , definita prin bij = aij , i = 1 : m, j = 1 : n.
Cu aceste doua operatii suma si produsul cu un scalar Rmn are o structura
de spatiu vectorial de dimensiune mn. O baza este Eij , i = 1 : m, j = 1 : n, unde
Eij este matricea nula cu exceptia elementului (i, j) egal cu 1.
Transpusa unei matrice A Rmn este matricea B Rnm , notata B = AT ,
definita prin bij = aji . Propunem cititorului demonstrarea urmatoarelor proprietati
simple ale operatiei de transpunere:

29

1.3. MATRICE
1. (AT )T = A, A Rmn ;
2. (A + B)T = AT + B T , A, B Rmn ;
3. (A)T = AT , A Rmn , R.

Produsul matrice-vector. In functie de modul de utilizare, o matrice poate fi


interpretata n mai multe feluri. De exemplu, o matrice poate fi vazuta ca alaturare
de vectori:
A = [a1 a2 . . . an ],
(1.8)
cu a1 , a2 , . . . , an Rm notandu-se coloanele matricei A. Aceasta interpretare este
utila n special n lucrul cu subspatii.
Cu notatia (1.8), produsul dintre matricea A Rmn si vectorul x Rn este
vectorul y Rm
n
X
def
y = Ax =
aj xj ,
(1.9)
j=1

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


produsul dintre matricea A si vectorul unitate ej , care are ca rezultat coloana j a
matricei: Aej = aj .
Se poate observa ca produsul matrice-vector defineste o transformare liniara
f : Rn Rm , f (x) = Ax, adica o aplicatie cu proprietatile (evident satisfacute n
cazul nostru): f (u + v) = f (u) + f (v), f (u) = f (u), u, v Rn , R.
Matrice si subspatii liniare. Deoarece matricea A poate fi privita ca o
multime de vectori (coloane), se impune o notatie speciala pentru subspatiul
generat de coloanele matricei, numit imaginea acesteia:
ImA = {y Rm | x Rn astfel ncat y = Ax}.

(1.10)

Un alt subspatiu interesant, de data asta n R , este cel al vectorilor avand ca


elemente coeficientii combinatiilor liniare nule ale coloanelor lui A, numit nucleul
matricei A:
KerA = {x Rn | Ax = 0}.
(1.11)
O proprietate fundamentala a acestor subspatii este dat
a de
Teorema 1.1 Dac
a A Rmn , atunci ImA si KerAT sunt subspatii ortogonale si
complementare n Rm , i.e.
1. ImA KerAT .

2. Rm = ImA KerAT .
Demonstratie.
1. Fie y = Ax ImA si z KerAT . Atunci y T z = xT AT z = 0.
2. Fie z ImA. Atunci xT AT z = 0, oricare x Rn , deci AT z = 0.

Evident, teorema poate fi aplicata pentru AT , si deci avem ImAT KerA si


R = ImAT KerA.
n

30

CAPITOLUL 1. ALGORITMI ELEMENTARI


y3
6
(1,0,1)

(0,1,1) k
Q
Q
Q
Q
Q



y2 


ImA
y1
KerAT
(1,1,-1)

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

Exemplul 1.1

1
Fie A = 0
1

0
1 .
1

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

R |
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 dimensiunea subspatiului ImA generat de coloanele lui A. Asadar rangA = dim(ImA),
sau, altfel spus, rangul este numarul maxim de coloane liniar independente din A.
Se poate demonstra ca rangA = rangAT si deci rangul este totodata si numarul
maxim de linii liniar independente din A. Recapituland:
not

dim ImA = dim ImAT = r,


dim KerA = n r,
dim KerAT = m r.

(1.12)

O matrice A Rmn avand coloanele liniar independente se numeste monic


a;
n acest caz, m n, rangA = n si KerA = {0}. Se mai spune ca A are rang maxim
pe coloane.
O matrice A Rmn avand liniile liniar independente se numeste epic
a; atunci
m n, rangA = m si ImA = Rm ; se spune ca A are rang maxim pe linii.

31

1.3. MATRICE

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

A = . .
(1.13)
..
aTm

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


este coloana i din (1.8). Pentru a evita confuziile, vom folosi si notatiile: A(:, i)
pentru coloana i din A, respectiv A(i, :) pentru linia i din A.
Folosind forma (1.13) a matricei A, se poate observa usor ca produsul matricevector se poate exprima prin intermediul unor produse scalare:
T
a1 x
..
Ax = . .
(1.14)
aTm x

AA. Gaxpy. Vom prezenta acum mai multe implementari ale produsului
5
matrice-vector, sub forma operatiei y Ax + y, numita Gaxpy
Pn .
Din (1.9), la nivel de element, operatia se scrie yi yi + j=1 aij xj , si deci
Algoritmul 1.5 (Gaxpy Produs matrice-vector) (Se dau
A Rmn , x Rn . Se calculeaza y Ax + y Rm utilizand operatii
elementare.)
1. Pentru i = 1 : m
1. Pentru j = 1 : n
1. yi yi + aij xj

Se observa imediat ca bucla interioara reprezinta o operatie DOT, corespunzand exprimarii produsului matrice-vector n forma (1.14). Algoritmul de mai sus
se scrie deci, n forma vectoriala
Algoritmul 1.6 (Se dau A Rmn , x Rn .
y Ax + y Rm utilizand operatii DOT.)
1. Pentru i = 1 : m
1. yi yi + DOT(A(i, :), x)

Se calculeaza

Algoritmul 1.7 (Se dau A Rmn , x Rn .


y Ax + y Rm utilizand operatii elementare.)

Se calculeaza

Inversand acum ordinea buclelor din algoritmul 1.5, ceea ce nu afecteaza n nici
un fel rezultatul (ordinea operatiilor pentru calculul fiecarei sume yi n parte este
aceeasi), obtinem

5 Prescurtare

pentru General Ax Plus y.

32

CAPITOLUL 1. ALGORITMI ELEMENTARI


1. Pentru j = 1 : n
1. Pentru i = 1 : m
1. yi yi + aij xj

Bucla interioara reprezinta acum o operatie Saxpy, corespunzand exprimarii


produsului matrice-vector n forma (1.9), care este o sum
a de vectori. Algoritmul
1.7 se rescrie deci n forma vectoriala:
Algoritmul 1.8 (Se dau A Rmn , x Rn .
y Ax + y Rm folosind operatii Saxpy.)
1. Pentru j = 1 : n
1. y Saxpy(xj , A(:, j), y)

Se calculeaza

Comentarii.
Toti algoritmii de mai sus au 2n2 operatii. De aceea Gaxpy
face parte din grupul operatiilor de nivel 2. Vom face referinta la ea n forma
y = Gaxpy(A, x, y). Desigur, implementarile din algoritmii 1.6 si 1.8 vor fi deosebit
de eficiente pe calculatoare vectoriale.

1.4

Inmultirea matricelor

Dedicam o sectiune separat


a nmultirii de matrice (si unor notiuni conexe),
deoarece aceasta operatie este specifica (nu se poate defini n general produsul a
doi vectori cu rezultat vector6 ) si apare deseori n constructia algoritmilor de nivel
superior, devenind astfel interesanta atat teoretic, cat si din punctul de vedere al
detaliilor de implementare.
Definitia 1.1 Fie A Rml si B Rln , dou
a matrice; produsul lor este matricea
C = AB Rmn , definit
a prin
cij =

l
X

aik bkj ,

i = 1 : m, j = 1 : n.

k=1

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


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

1.4. INMULT
IREA MATRICELOR

33

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

k=1

Pl
Pl
Pl
Demonstratie: cij = k=1 (ak bTk )ij = k=1 (ak )i (bTk )j = k=1 aik bkj .
3. Punem acum n evidenta numai coloanele matricei B. Atunci
C = AB = A[b1 . . . bn ] = [Ab1 . . . Abn ],

(1.16)

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

T
T
a1 B
a1

(1.17)
C = AB = ... B = ... ,
aTm B

aTm

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

l
X

bkj ak ,

(1.18)

k=1

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


6. In sfarsit, o ultima forma, n care vom exprima liniile produsului C n functie
de liniile matricei B. Din (1.17) rezulta
cTi = aTi B =

l
X

aik bTk .

(1.19)

k=1

Propriet
ati. Inmultirea de matrice are unele proprietati imediate, prezentate n
continuare; presupunem ca matricele au dimensiuni potrivite operatiilor efectuate;
demonstratiile sunt lasate cititorului.
1. A(BC) = (AB)C (asociativitate);
2. A(B + C) = AB + AC (distributivitate);

34

CAPITOLUL 1. ALGORITMI ELEMENTARI

3. (AB)T = B T AT .
Trebuie subliniat faptul ca nmultirea de matrice nu este comutativ
a. Sa detaliem
putin; consideram A Rml si B Rln , cazul cel mai general pentru care este
definit produsul AB; daca m 6= n, atunci produsul BA nici macar nu este definit.
Daca m = n, atunci AB Rml , iar BA Rlm ; prin urmare, daca m 6= l, atunci
AB si BA au dimensiuni diferite, deci nu se pune problema egalitatii. In fine, daca
si m = l, deci ambele matrice sunt patrate, atunci
egalitatea

AB = BA nu are loc,

1 1
1 2
n general; un exemplu simplu: A =
,B=
.
1 1
3 4

Matrice p
atrate. Ne vom ocupa n continuare de unele aspecte specifice matricelor patrate din Rnn , a caror multime are structura de inel necomutativ. Matricea unitate de ordinul n are elementele de pe diagonala principala egale cu 1 si
toate celelalte elemente nule; ea este notata prin In , sau numai I daca dimensiunea
rezulta din context; scrisa pe coloane, matricea unitate are forma In = [e1 . . . en ].
Fie o matrice A Rnn ; daca exista o matrice X Rnn astfel ncat
AX = XA = I, atunci X se numeste inversa matricei A si se noteaza cu A1 .
O matrice care are inversa se numeste inversabil
a; matricea inversa este unic
a. Se
poate demonstra ca multimea matricelor inversabile din Rnn are o structura de
grup (necomutativ) n raport cu nmultirea, notat GL(n).
Se pune ntrebarea cand este o matrice inversabila ? Vom mentiona deocamdata,
fara a demonstra, ca inversabilitatea este echivalent
a cu conditia rangA = n, adica
cu independenta coloanelor (si liniilor) matricei A. (O alta conditie echivalenta este
KerA = {0}, i.e. KerA are dimensiune nula.) Testarea numerica a inversabilitatii
va fi o problema tratata mai mult sau mai putin explicit n capitolele urmatoare,
metodele prezentate fiind din ce n ce mai sigure, dar si mai sofisticate.
O ultima proprietate: inversarea si transpunerea unei matrice sunt operatii care
not
comuta ntre ele, adica (AT )1 = (A1 )T = AT .
Echivalent
a. Doua matrice A, B Rmn se numesc echivalente la dreapta
daca exista o matrice T Rnn inversabila astfel ncat B = AT . Avem:
Propozitia 1.1 Dac
a A, B Rmn sunt echivalente la dreapta, atunci avem ImA =
ImB.

Demonstratie. Din definitie, exista T astfel ncat BP


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

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


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

1.4. INMULT
IREA MATRICELOR

35

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


atunci x = Ac = AT d, din unicitate rezultand c = T d, sau d = T 1 c. Aceasta
ultima relatie justifica denumirea de transformare de coordonate data matricei T 1
(din nou, din baza A n baza B).
Desigur, daca A si B sunt echivalente la dreapta, atunci si KerAT = KerB T ,
consecinta a propozitiei de mai sus si a teoremei 1.1.
Deoarece nmultirea de matrice nu este comutativa, are sens notiunea de echivalenta la stanga; matricele A, B Rmn se numesc echivalente la st
anga daca exista
o matrice S Rmm inversabila astfel ncat B = SA. In acest caz, ImAT = ImB T
si KerA = KerB.
Daca coloanele fiecareia dintre matricele echivalente la stanga A si B formeaza
o baza pentru ImA = ImB, atunci din (1.16) aj = Sbj , deci matricea S transforma
vectorii unei baze n vectorii celeilalte.
Doua matrice sunt echivalente (bilateral) daca exista S Rmm , T Rnn
inversabile astfel ncat B = SAT . S si T se numesc generic transformari (de
echivalenta).
AA. Algoritmi. Vom prezenta mai multe variante de calcul al produsului matriceal, variante ce difera, n esenta, prin ordinea n care sunt efectuate operatiile
scalare. In acest mod punem n evidenta diverse posibilitati de organizare a calculelor n vederea unei exploatari optime a particularitatilor arhitecturale ale calculatorului tinta.
Pentru nceput prezentam un algoritm pentru produsul exterior, singurul caz
particular nedetaliat pana acum n care cel putin o dimensiune a operanzilor nmultirii este 1.
Algoritmul 1.9 (OUT Calculul produsului exterior) (Se dau
x Rm , y Rn . Se calculeaza C = xy T Rmn .)
1. Pentru j = 1 : n
1. Pentru i = 1 : m
1. cij xi yj
In cazul general, o implementare directa a nmultirii de matrice, folosind definitia,
este prezentata n continuare.

Algoritmul 1.10 (MM Inmult


ire matriceal
a) (Se dau
A Rml , B Rln . Se calculeaza C = AB Rmn .)
1. C 0
2. Pentru j = 1 : n
1. Pentru i = 1 : m
1. Pentru k = 1 : l
1. cij cij + aik bkj
Rezultatul acestui algoritm nu se modifica daca ordinea celor trei bucle Pentru
este alta. Algoritmul de mai sus se mai numeste forma jik a produsului matriceal. Bucla Pentru cea mai interioara se poate nlocui cu apelul produsului scalar
DOT(A(i, :), B(:, j)), obtinandu-se astfel un algoritm cu operatii vectoriale. Cele
dou
a bucle Pentru interioare se pot nlocui cu un apel la Gaxpy(A, B(:, j), C(:, j)),
dup
a cum sugereaza direct relatia (1.16).
Forma jki pune n evidenta operatii Saxpy, avand la baza relatia (1.18):

36

CAPITOLUL 1. ALGORITMI ELEMENTARI


Algoritmul 1.11 (Se dau A Rml , B Rln . Se calculeaza
C = AB Rmn . Forma jki.)
1. C 0
2. Pentru j = 1 : n
1. Pentru k = 1 : l
1. C(:, j) Saxpy(B(k, j), A(:, k), C(:, j))

Din nou cele doua bucle interioare se pot nlocui cu Gaxpy.


Forma kji a algoritmului este o implementare directa a formulei (1.15), care
evidentiaza produse exterioare.
Algoritmul 1.12 (Se dau A Rml , B Rln . Se calculeaza
C = AB Rmn folosind operatii OUT.)
1. C 0
2. Pentru k = 1 : l
1. C C + OUT(A(:, k), B(k, :))

Apelul rutinei OUT nlocuieste buclele Pentru cu indicii j si i.


Formele ijk, kij si ikj sunt, n aceasta ordine, variante ale celor trei forme
prezentate mai sus. Permutarea buclelor i si j nu este esentiala, deoarece acestea
au rolul de parcurgere a matricei C, pe linii sau pe coloane. Acest lucru poate
deveni important daca se tine seama de modul de adresare a elementelor matricei
impus de limbajul de programare utilizat. De exemplu, n FORTRAN se prefera
organizarea pe coloane, corespunzator formelor jik, jki, kji, deoarece matricele
sunt memorate pe coloane.
In oricare dintre formele mentionate, nmultirea de matrice necesita 2mnl flopi,
deci 2n3 n cazul matricelor patrate, si face parte din grupul operatiilor de nivel 3.
Vom face referire la ea n forma C = MM(A, B).

Inmultirea matricelor complexe. Algoritmii de mai sus, ca si toate consideratiile care i preced, sunt valabili si pentru nmultirea matricelor complexe
C = AB Cmn , cu A Cml , B Cln . Diferenta consta n numarul de
flopi necesari executiei. Daca adunarea a doua numere complexe se face n doi flopi
(unul pentru partea reala, altul pentru partea imaginara), n schimb nmultirea
necesita sase:
( + i)( + i) = + i( + ).
(1.20)
Asadar nmultirea matricelor complexe se executa n aproximativ 8mnl flopi (cate
mnl nmultiri si adunari de scalari complecsi).
Aceeasi observatie poate fi facuta scriind A = A1 + iA2 , cu A1 , A2 Rml ,
B = B1 + iB2 , cu B1 , B2 Rln , si
C = A1 B1 A2 B2 + i(A1 B2 + A2 B1 ).

(1.21)

Inmultirea matricelor complexe se poate efectua deci prin patru produse (si doua
adunari) de matrice reale.
Numarul de operatii se poate reduce printr-un mic artificiu de calcul; o forma
echivalenta cu (1.20) este
( + i)( + i) = + i(( + )( + ) ).

(1.22)

37

1.5. NORME MATRICEALE

Aparent, nu se castiga nimic, deoarece n loc de patru nmultiri si doua adunari


reale, ca n (1.20), avem trei nmultiri si cinci adunari. Egalitatea (1.22) se scrie
nsa identic si n cazul matriceal, nlocuindu-se (1.21) cu
G = A1 B1 ,
H = A2 B2 ,
C = G H + i((A1 + A2 )(B1 + B2 ) G H).

(1.23)

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

1.5

Norme matriceale

Produsul scalar matriceal este o generalizare imediata a produsului scalar


a doi vectori. Daca A, B Rmn , produsul lor scalar este
def

(A, B) =

m X
n
X

aij bij = tr(B T A).

(1.24)

i=1 j=1

Se observa ca (1.24) este identica cu produsul scalar al celor doi vectori din Rmn
obtinuti prin vectorizarea matricelor A si B, i.e. prin concatenarea coloanelor lui
A, respectiv B.
Normele matriceale se definesc la fel ca normele vectoriale. O norm
a matriceal
a este o functie k k : Rmn R+ care satisface conditiile
1. kAk > 0, A Rmn , A 6= 0 (pozitivitate);
2. kAk = || kAk, A Rmn , R (omogenitate);
3. kA + Bk kAk + kBk, A, B Rmn (inegalitatea triunghiului).
Pentru a utiliza normele matriceale independent de dimensiunile matricelor, introducem
S notiunea de familie de norme matriceale, care este o functie
k k : m=1,n=1 Rmn R+ astfel ncat, pentru fiecare m, n > 0, restrictia lui
k k la Rmn este o norma matriceala. Daca n = 1, atunci k k este o familie de
norme vectoriale.
O familie k k de norme matriceale este consistent
a daca
kABk kAk kBk,

(1.25)

atunci cand produsul AB este definit. (Sa observam ca, n general, A, B si AB au


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

38

CAPITOLUL 1. ALGORITMI ELEMENTARI

Familia de norme Frobenius este consistenta.


Norme subordonate. O familie de norme matriceale poate fi obtinuta dintr-o
familie de norme vectoriale k k, prin urmatoarea relatie
kAk = sup
x6=0

kAxk
= max kAxk,
kxk
kxk=1

(1.27)

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


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

(1.28)
n
X

kAk = max kAxk = max


|aij | .
kxk =1

i=1:m

j=1

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


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

1
kAk kAk2 mkAk ,
n

1
kAk1 kAk2 nkAk1 ,
m
kAk2 kAkF

(1.29)

nkAk2 .

Cazul complex. O norma matriceala peste spatiul complex Cmn este o functie
cu valori reale pozitive satisfacand cele trei conditii de la nceputul sectiunii. Toate
definitiile si relatiile de mai
raman valabile, cu singura observatie ca acum norma
P susP
n
2
Frobenius este kAk2F = m
i=1
j=1 |aij | .
AA. Calculul normei 1 se face folosind direct relatiile (1.28):

Algoritmul 1.13 (Nm1 Calculul normei matriceale 1) (Se da


A Rmn . Se calculeaza = kAk1 .)

39

1.6. MATRICE STRUCTURATE

0
0
L

Fig. 1.6: Matrice inferior si superior triunghiulare

1. 0
2. Pentru j = 1 : n
1. 0
2. Pentru i = 1 : m
1. + |aij |
3. Dac
a > atunci
Algoritmul necesita mn flopi. Calculul normei este asemanator si are aceeasi
complexitate. Calculul normei Frobenius necesita 2mn flopi; desigur, pentru evitarea
depasirilor superioare, n implementarea formulei directe (1.26) se utilizeaza scalarea.
In schimb, dupa cum vom vedea, calculul normei 2 face apel la notiuni mai evoluate si implica O(n3 ) operatii (pentru matrice patrate). De aceea, normele 1, si
Frobenius sunt cele mai folosite n calculul numeric elementar. Toate aceste norme
fiind echivalente, criteriul de alegere primordial este efortul de calcul.

1.6

Matrice structurate

In numeroase probleme apar matrice ale caror elemente sunt nule n anumite regiuni.
Astfel de matrice sunt numite generic structurate; n cazul lor, algoritmii de rezolvare
a unei probleme oarecare sunt de obicei mai simpli; de aceea, majoritatea algoritmilor generali au ca prim obiectiv reducerea matricei initiale la una cu structura
mai simpla.
In aceasta sectiune vom prezenta cateva tipuri de matrice structurate si proprietatile lor principale. Pentru simplitate, vom considera doar matrice patrate,
din Rnn . Extinderea la matrice dreptunghiulare este imediata.
Definitii. 1) O matrice D se numeste diagonal
a daca elementele nediagonale
sunt nule, adica dij = 0, pentru i 6= j.
2) O matrice T se numeste inferior triunghiular
a daca tij = 0, pentru i < j, si
superior triunghiular
a daca tij = 0, pentru i > j. Figura 1.6 prezinta astfel de matrice. Evident, o matrice simultan inferior si superior triunghiulara este diagonala.
O matrice se numeste triunghiular
a unitate daca este triunghiulara si, n plus,
toate elementele sale diagonale sunt egale cu 1.
O matrice se numeste strict triunghiular
a daca este triunghiulara si toate elementele sale diagonale sunt nule. De exemplu, o matrice A este strict inferior

40

CAPITOLUL 1. ALGORITMI ELEMENTARI

triunghiulara daca aij = 0, pentru i j.


Matricele triunghiulare au proprietati deosebite care vor fi evidentiate n sectiuni
urmatoare ale acestui capitol.
3) O matrice H se numeste inferior Hessenberg daca hij = 0, pentru j > i + 1,
si superior Hessenberg daca hij = 0, pentru i > j + 1.
4) O matrice A se numeste tridiagonal
a daca este simultan inferior si superior
Hessenberg, adica aij = 0, pentru |i j| > 1.
In general, o matrice B se numeste band
a, de latime inferioara p, daca bij = 0,
pentru i > j+p, si de latime superioara q, daca bij = 0, pentru j > i+q. Daca p = q,
vom spune ca B este matrice banda de latime p. Evident, matricele tridiagonale
sunt un caz particular de matrice banda, cu p = q = 1. O matrice banda cu
p = q = 2 se zice pentadiagonala.
Propriet
ati. Vom prezenta n continuare cateva proprietati utile ale matricelor
structurate.
Este evident ca suma a doua matrice cu structuri identice va avea aceeasi structura. De asemenea, nmultirea unei matrice cu un scalar conserva structura.
In ce priveste produsul, proprietatile nu mai sunt atat de generale.
Propozitia 1.2 a. Dac
a D este o matrice diagonal
a si A este o matrice structurat
a, atunci matricele DA si AD vor avea structura matricei A.
b. Produsul a dou
a matrice inferior (superior) triunghiulare (unitate) este o
matrice inferior (superior) triunghiular
a (unitate).
c. Dac
a L este o matrice inferior (superior) triunghiular
a si H este inferior (superior) Hessenberg, atunci LH si HL sunt matrice inferior (superior) Hessenberg.
Demonstratie. Vom demonstra doar punctul b n cazul inferior triunghiular, celelalte demonstratii fiind lasate ca exercitiu.
FiePA si B doua matrice inferior triunghiulare, si C = AB. Evident,
cij = nk=1 aik bkj . Consideram i < j. A fiind inferior triunghiulara, aik = 0 pentru
k > i; n plus, bkj = 0, pentru k i < j, deoarece B este inferior triunghiulara;
asadar, aik bkj = 0, pentru oricare k 1 : n, deci cij = 0 pentru i < j, adica C este
inferior triunghiulara.
Elementele posibil nenule ale matricei C (pentru i j) se calculeaza economic
cu relatia
i
X
cij =
aik bkj ,
(1.30)
k=j

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


Daca A si B sunt inferior triunghiulare unitate, atunci particularizand (1.30) se
obtine cii = aii bii = 1, deci si C este inferior triunghiulara unitate.

AA.
Inmultirea matricelor triunghiulare. Datorita elementelor nule, algoritmii implicand matrice structurate pot fi simplificati astfel ncat sa fie executate
doar operatiile aritmetice strict necesare.
Vom exemplifica cu algoritmul de nmultire a doua matrice inferior triunghiulare,
A si B. Profitam de faptul ca rezultatul C este inferior triunghiular si calculam cij
numai pentru i j, folosind (1.30) si nu formula generala.

1.6. MATRICE STRUCTURATE

41

Algoritmul 1.14 (TRMM


Inmultire de matrice inferior triunghiulare) (Se dau A, B Rnn inferior triunghiulare. Se calculeaza
C = AB.)
1. Pentru i = 1 : n
1. Pentru j = 1 : i
P
1. cij = ik=j aik bkj

Comentarii.
Cele doua bucle sunt destinate parcurgerii pe linii a elementelor
triunghiului inferior al matricei C; parcurgerea se poate face si pe coloane, prin:
Pentru j = 1 : n, Pentru i = j : n. Acest algoritm necesita n3 /3 flopi, adica de
sase ori mai putin decat algoritmul general de nmultire de matrice.

AA. Memorarea matricelor structurate se poate face n tablouri n n,


ca pentru toate celelalte matrice, cu dezavantajul stocarii elementelor nule; totusi,
exista si un avantaj: accesul la elementele matricelor se face identic pentru matricele
generale si pentru cele structurate.
Daca se doreste economie de memorie, stocarea elementelor nule se poate evita
usor; acest mod de memorare se numeste compact sau mpachetat (packed). Exemplificam n continuare pentru cateva tipuri de matrice.
O matrice triunghiulara se poate memora ntr-un vector, sa-l notam v, de
lungime n(n + 1)/2 (numarul elementelor posibil nenule ale matricei). Dac
a L
este inferior triunghiulara, atunci o ordine naturala de memorare, cea pe linii, este
l11 , l21 , l22 , l31 , . . . (n v1 , v2 , v3 , v4 , . . . ). Se observa ca lij se memoreaza n pozitia
i(i1)
+ j din v.
2
O matrice tridiagonala T se poate memora n trei vectori a, b, c (n fiecare cate
o diagonala), ceea ce este evident din notatia:

a 1 c1
b 2 a2

c2

..
..
..
T =
.
.
.
.

bn1 an1 cn1


bn
an
In general, o matrice banda B, de latime p, se poate memora usor ntr-un tablou
cu 2p + 1 linii si n coloane. Exemplificam pentru p = 2:


...

...

...
B=

...

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

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


tabloul de memorare (prin sunt notate elemente nesemnificative); se observa ca elementele de pe aceeasi diagonala a matricei se memoreaza pe aceeasi linie a tabloului.
Elementul bij se memoreaza pe linia p + i j + 1, coloana j.

42

CAPITOLUL 1. ALGORITMI ELEMENTARI

(a)

(b)

(c)

Fig. 1.7: Submatrice: (a) cu I = {1, 3, 4}, J = {2, 3, 5} (elementele submatricei


sunt notate cu ); (b) bloc; (c) lider principala

1.7

Matrice bloc

Submatrice, bloc. Pana acum am privit o matrice A ca fiind formata din


elemente sau, eventual, din coloane sau linii, ca n (1.7), (1.8), respectiv (1.13). Un
alt punct de vedere este de a evidentia submatrice sau blocuri, adica matrice de
dimensiuni mai mici continute n A.
In sensul cel mai larg, notiunea de submatrice se defineste dupa cum urmeaza.
Daca A Rmn , iar I = {i1 , i2 , . . . , ir } 1 : m si J = {j1 , j2 , . . . , jp } 1 : n sunt
dou
a multimi de indici astfel nc
at i1 < i2 < . . . < ir , j1 < j2 < . . . < jp , atunci
matricea A de dimensiune r p definita de akl = aik jl , este numita submatrice a
matricei A. Figura 1.7a ilustreaz
a notiunea.
Se observa ca A este obtinuta prin extragerea elementelor aflate la intersectiile
liniilor si coloanelor din I, respectiv J . Daca indicii din I, respectiv J , sunt
consecutivi, atunci submatricea mai este numita si bloc. Pentru a ne referi la blocul
astfel definit vom folosi si notatia A(i1 : ir , j1 : jp ).
Daca A Rnn si I = J , atunci submatricea A se numeste principal
a. Daca,
not
n plus, I = {1, 2, . . . , r}, atunci A = A[r] este numita submatrice lider principal
a
de ordin r a matricei A; aceasta este blocul r r pozitionat stanga-sus n A. Vezi
figurile 1.7b,c.
Partition
ari conforme. Vom lucra n continuare cu matrice partitionate n
blocuri, notate astfel

A=

A11
A21
..
.

A12
A22
..
.

...
...
..
.

A1n
A2n
..
.

Am1

Am2

. . . Amn

B=

B11
B21
..
.

B12
B22
..
.

Bp1

Bp2

. . . B1l
. . . B2l
..
..
.
.
. . . Bpl

, (1.31)

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


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

43

1.7. MATRICE BLOC


Daca m = p, i = i , i 1 : m, si

C11 . . . C1n
..
..
..
A+B =C = .
.
.

n = l, cu j = j , j 1 : n, atunci

cu Cij = Aij + Bij .

(1.32)

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

D11 . . . D1l
n

.. , cu D = X A B .
..
AB = D = ...
ij
ik kj
.
.

(1.33)

Cm1

Dm1

. . . Cmn

k=1

. . . Dml

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


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

AT =

AT11
AT12
..
.

AT21
AT22
..
.

...
...
..
.

ATm1
ATm2
..
.

AT1n

AT2n

. . . ATmn

(1.34)

Matrice bloc structurate. O matrice partitionata ca n (1.31) poate fi structurata la nivel de blocuri. Folosim aceleasi definitii ca n sectiunea precedenta,
gandind nsa acum la nivel de blocuri si nu la nivel de element.
Presupunem ca A din 1.31 este patrata, m = n si blocurile diagonale sunt
patrate, adica i = i , i 1 : n (cu aceste ipoteze, diagonala principala a fiecarui
bloc Aii este parte din diagonala principala a matricei). Spunem c
a A este bloc
diagonal
a daca Aij = 0, pentru i 6= j; A este bloc superior triunghiular
a daca
Aij = 0, pentru i > j, etc. Este evident ca, n general, o matrice bloc diagonala nu
este diagonala, o matrice bloc triunghiulara nu este triunghiulara etc.
Structura la nivel de bloc este conservata la adunare daca matricele operand sunt
partitionate conform pentru adunare. Pentru nmultire, este adevarat analogul la
nivel de bloc al propozitiei 1.2, adica, de exemplu, produsul a doua matrice bloc
superior (inferior) triunghiulare partitionate conform este o matrice bloc superior
(inferior) triunghiulare.
AA.
Inmultire la nivel de bloc. Pe calculatoarele cu memorie ierarhica, cu
structura sugerata n figura 0.4c, partitionarea matricelor n blocuri si utilizarea unei
relatii de tipul (1.33) poate conduce la o eficienta sporita a nmultirii de matrice.
Consideram, pentru simplitate, matricele patrate A, B Rqq si dorim sa calculam produsul lor C = AB. Partitionam A, B si C ca n (1.31), cu mentiunea
ca acum m = n, p = l, iar toate blocurile sunt patrate si au aceleasi dimensiuni,

44

CAPITOLUL 1. ALGORITMI ELEMENTARI

adica Aij Rrr , r fiind numita dimensiunea blocurilor, iar m = q/r numarul de
blocuri; presupunem ca r divide dimensiunea matricelor q doar pentru a simplifica
expunerea.
Exprimam produsul matriceal ca n (1.33), deci
Cij =

m
X

Aik Bkj .

(1.35)

k=1

Pe un calculator cu memorie ierarhica trebuie minimizat traficul ntre memoria


principala MP si memoria rapida MR. Desigur, matricele A, B, C sunt stocate
n MP. Daca alegem dimensiunea blocurilor r astfel ncat 3 blocuri de matrice sa
poata fi stocate simultan n MR (deci, 3r2 < dim(MR)), atunci putem construi
un algoritm de calcul al produsului matriceal bazat pe ideea de a aduce, pe rand,
blocurile Aik , Bkj implicate n suma din (1.35), din MP n MR, si abia apoi de a
efectua nmultirea lor.
Algoritmul 1.15 (Se dau matricele A, B. Se calculeaza produsul
matriceal C = AB, la nivel de bloc. Se presupune ca variabilele X, Y si
Z se gasesc n MR.)
1. Pentru i = 1 : m
1. Pentru j = 1 : m
1. Z 0
2. Pentru k = 1 : m
1. X Aik , Y Bkj
2. Z Z + X Y
3. Cij Z
Comentarii. In acest algoritm, atribuirile din instructiunea 1.1.2.1 reprezinta de
fapt transferuri din MP n MR; analog, n instructiunea 1.1.3 se executa un transfer
din MR n MP. Operatia matriceala Z Z + X Y din 1.1.2.2 nu este detaliata aici;
ea se executa cu algoritmul 1.10 la nivel de element; esential este faptul ca toate
variabilele implicate se gasesc n MR, deci nu e necesar nici un transfer din/spre MP.
Lucrand la nivel de blocuri, numarul de operatii ramane neschimbat, adica 2q 3 ;
n schimb, numarul de accesuri la MP devine 2r2 m3 = 2q 2 m = 2q 3 /r (instructiunea
1.1.2.1 se executa de m3 ori, de fiecare data transferandu-se doua blocuri cu r2
elemente).
Daca s-ar folosi algoritmul 1.10 la nivel de element pe un calculator cu memorie
ierarhica, fiecare operatie cij cij + aik bkj ar implica cel putin doua transferuri
din MP n MR (putem presupune ca cij ramane n MR cat timp este calculat). Ar
avea loc deci aproximativ 2q 3 accesuri la MP.
In concluzie, fata de versiunea la nivel de element, n algoritmul 1.15 la nivel
de bloc se acceseaza de r ori mai putin memoria principala, ceea ce conduce la o
crestere semnificativa de viteza.

Sa rezumam ideea eficientizarii algoritmilor pe calculatoare cu memorie ierarhica; ea va fi folosita si n rezolvarea altor probleme. Se partitioneaza matricele de
intrare n blocuri si se exprima algoritmul n operatii ntre blocuri (aceasta e banal

45

1.7. MATRICE BLOC

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


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






A11 A12
B11 B12
C11 C12
A=
,
B=
,
C=
. (1.36)
A21 A22
B21 B22
C21 C22
Algoritmul lui Strassen este definit de formulele urmatoare, usor de verificat prin
simpla substitutie:


M1 + M2 + M3 M4
M4 + M6
C = AB =
M3 + M5
M1 M5 + M6 + M7
M1
M2
M3
M4

= (A11 + A22 ) (B11 + B22 )


= (A12 A22 ) (B21 + B22 )
= A22 (B21 B11 )
= (A11 + A12 ) B22

M5 = (A21 + A22 ) B11


M6 = A11 (B12 B22 )
M7 = (A21 A11 ) (B11 + B12 )

(1.37)
Se observa ca pentru calculul matricei C sunt necesare 7 nmultiri si 18 adunari
de matrice de dimensiune n/2 n/2, n timp ce n algoritmul standard la nivel de
bloc se fac, pentru aceeasi partitionare (1.36), 8 nmultiri si 4 adunari de blocuri.
3
18n2
Astfel, numarul de operatii pentru algoritmul Strassen este N1 (n) = 14n
8 + 4 .
Este evident ca, pentru n suficient de mare (mai precis n > 18), N1 (n) < 2n3 si deci
algoritmul Strassen este mai rapid decat cel standard. In schimb, implementarea
formulelor (1.37) necesita memorie suplimentara pentru rezultatele intermediare.
Un numar de operatii si mai bun se obtine daca, pentru calculul celor 7 produse de matrice n/2 n/2 din (1.37) se utilizeaza, recursiv, aceleasi formule ale
lui Strassen. La fiecare nivel de recursie dimensiunea problemei se njumatateste
(simplificand, presupunem acum ca n este o putere a lui 2). Recursia are loc pana
cand se atinge o dimensiune n0 suficient de mica, pentru care algoritmul standard
este mai eficient decat cel al lui Strassen. Numarul de operatii N (n) este definit de
recurenta
n2
n
N (n) = 7N ( ) + 18 ,
N (n0 ) = 2n30 ,
(1.38)
2
4
a carei solutie, pentru n n0 , este de ordinul
N (n) = O(nlog2 7 ),
Vezi problema 1.20 pentru solutia exacta.

(log2 7 2.807).

(1.39)

46

CAPITOLUL 1. ALGORITMI ELEMENTARI

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

1.8

Matrice normale

In aceasta sectiune vom lucra n principal cu matrice patrate, din Rnn , specificand
explicit celelalte cazuri.
O matrice A Rnn se numeste normal
a daca AT A = AAT .
Matricele normale au propriet
ati deosebit de interesante, cu precadere n cateva
cazuri particulare pe care le enumeram acum si le vom discuta pe larg n continuare:
1. matricele simetrice, pentru care A = AT ;
2. matricele antisimetrice, care satisfac A = AT ;
3. matricele ortogonale, pentru care AT A = I.
Fie A Rnn ; se numeste form
biliniar
a asociata matricei A functia
P aP
f : Rn Rn R, f (x, y) = xT Ay = ni=1 nj=1 aij xi yj . Se observa ca functia este
liniara n fiecare din cele doua argumente luate separat, ceea ce i justifica numele.

Matrice simetrice. Matricea A este simetric


a daca A = AT , adica aij = aji ,
i, j 1 : n. Asadar simetria este fata de diagonala principala a matricei; se observa
ca pentru o matrice nepatrata notiunea de simetrie nu are sens, A si AT neavand
aceleasi dimensiuni.
Suma si produsul cu scalari conserva simetria, adica daca matricele A, B sunt
simetrice si R, atunci A + B si A sunt simetrice. In schimb,
 n gene
1 1
ral, produsul AB nu este simetric; considerati, de exemplu, A =
si
1 2


1 1
B=
.
1 1
Matrice antisimetrice. Matricea A este antisimetric
a daca A = AT , adica
aij = aji , i, j 1 : n. Evident, elementele sale diagonale sunt nule.

Forma p
atratic
asociata unei matrice simetrice este functia g : Rn R,
Pn a P
n
T
g(x) = x Ax = i=1 j=1 aij xi xj . Forma patratica este un polinom omogen de
gradul 2, n n variabile; de asemenea, se observa ca g(x) = f (x, x), unde f este
forma biliniara asociata matricei A 7 .

7 Formele p
atratice se asociaz
a numai matricelor simetrice din urm
atorul motiv: dac
a A nu e
= (A + AT )/2 se vede c
x Rn , si A
este simetric
simetric
a, lu
and A
a xT Ax = xT Ax,
a. S
a
not
am c
a B = (A AT )/2 se numeste componenta antisimetric
a, iar xT Bx = 0.

1.8. MATRICE NORMALE

47

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


definit n continuare.
O matrice simetrica A este pozitiv definit
a daca xT Ax > 0, pentru orice vector
n
x R , x 6= 0; se noteaza A > 0, dar, atentie, aceasta nu nseamna ca toate
2 1
elementele matricei sunt pozitive; de exemplu,
este pozitiv definita,
1  2

1 2
deoarece 2x21 2x1 x2 + 2x22 > 0, [x1 x2 ]T 6= 0, nsa
nu este, deoarece
2 1
x21 4x1 x2 + x22 poate avea orice semn cand x1 , x2 R. Matricea A este pozitiv
semidefinit
a daca xT Ax 0, x Rn , ceea ce se noteaza A 0.
O matrice simetrica A este negativ (semi)definit
a daca A este pozitiv (semi)definita. O matrice simetrica care nu se ncadreaza n nici una dintre categoriile de
mai sus se numeste cu semn nedefinit.
Suma si produsul cu scalari pozitivi conserva semnul; de exemplu, daca A, B
sunt pozitiv definite si > 0, atunci A+B si A sunt pozitiv definite (demonstrati !).
Propozitia 1.3 O submatrice principala a unei matrice pozitiv definite A este pozitiv definita. In particular, submatricele lider principale A[k] , k 1 : n, sunt
pozitiv definite si toate elementele diagonale sunt pozitive.
Demonstratie. Fie I = {i1 , i2 , . . . , ir }, multimea de indici definind o submatrice
principala A a matricei A. Pentru orice vector nenul x Rr , definim vectorul
y Rn prin:
yik = xk , k = 1 : r,
yi = 0, i 6 I.
Evident, x 6= 0 implica y 6= 0, si din pozitivitatea matricei A se deduce:
xT A x = y T Ay > 0, adica A este pozitiv definita.

Congruent
a. Doua matrice simetrice A, B se numesc congruente daca exista
o matrice nesingulara T Rnn astfel ncat B = T T AT . Evident, A = T T BT 1 .
(Demonstrati ca simetria este conservata de transformarea de congruenta.)
Daca A, B sunt congruente si A > 0, atunci B > 0, adica transformarea de
congruenta conserva semnul. (Intr-adevar, xT Bx = xT T T AT x = (T x)T A(T x) > 0,
pentru ca A > 0 si T x 6= 0, daca x 6= 0, coloanele lui T fiind liniar independente.)
Matrice ortogonale. O matrice patrata Q Rnn este ortogonal
a daca
T
Q Q = In ; evident, avem QT = Q1 , deci transpusa matricei este chiar inversa ei,
iar QQT = In . Partitionand Q pe coloane si exprimand QT Q prin produse scalare,
definitia este echivalenta cu qiT qj = 0, pentru i 6= j, si kqi k2 = 1, adica matricea Q
are coloanele vectori ortonormali.
In cazul n care matricea nu este patrata, Q Rmn , daca QT Q = In , atunci
matricea are coloanele ortonormale (m > n si QQT 6= Im ). Daca QQT = Im , atunci
matricea are liniile ortogonale (m < n si QT Q 6= In ).
Vom considera n continuare doar matrice ortogonale patrate. Referitor la
operatiile elementare, vom observa ca produsul a doua matrice ortogonale este
o matrice ortogonala; ntr-adevar, daca Q, U sunt amandoua ortogonale, atunci
(QU )T (QU ) = U T QT QU = U T U = I. Asadar, matricele ortogonale formeaza grup
n raport cu nmultirea, notat GO(n).

48

CAPITOLUL 1. ALGORITMI ELEMENTARI

De asemenea, transpusa unei matrice ortogonale este ortogonala, deoarece


(QT )T QT = QQT = I. In schimb, suma a doua matrice ortogonale nu este ortogonala, nici produsul unei matrice ortogonale cu un scalar diferit de 1.
Matricele ortogonale au proprietatea remarcabila de a conserva normele 2 si
Frobenius.
Propozitia 1.4 Fie matricele ortogonale Q Rnn , U Rmm . Atunci:
1. kQxk2 = kxk2 , x Rn , deci kQk2 = 1.
2. kU AQk2 = kAk2 , kU AQkF = kAkF , A Rmn .
Demonstratie.
1.
kQxk22 = (Qx)T (Qx) = xT QT Qx = xT x = kxk2 .
2. Aplicand punctul 1 avem
kU Ak2 = max kU (Ax)k2 = max kAxk2 = kAk2 .
kxk2 =1

kxk2 =1

Deoarece ImQ = Rn , aplicand din nou punctul 1 avem


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

kQxk2 =1

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

Revenim acum putin la notiunea de echivalenta, prezentata n sectiunea 1.4.


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

49

1.9. SISTEME DE ECUAT


II LINIARE

"
"
"
"
"
"

*

6

x 
x Px


"
"

" S

"
Px
"
"

Fig. 1.8: Actiunea unui proiector ortogonal pe S asupra unui vector oarecare x
scalar complex, mai utile sunt notiunile analoage obtinute (formal) prin nlocuirea
transpunerii prin transpunere si complex conjugare. Dac
a A Cnn , se noteaza
H
T
cu A = A conjugata transpusei matricei A. Matricea A Cnn se numeste
normala daca AAH = AH A.
Matricea A Cnn se numeste hermitic
a daca AH = A. In acest caz scalarul
H
n
x Ax este real pentru orice x C . O matrice hermitica A Cnn este pozitiv
definita daca xH Ax > 0, x Cn , x 6= 0. O matrice A Cnn este unitar
a daca
AH A = I, adica are coloanele ortogonale n Cn .
AA. Memorarea matricelor simetrice. Daca A Rnn este simetrica, deci
A = AT , nu este necesara memorarea ntregii matrice, ci doar a unei jumatati,
mai precis a triunghiului inferior sau a celui superior. Memorarea se poate face n
variantele discutate pentru matrice triunghiulare, n sectiunea 1.6.
Desigur, acest mod de memorare va implica particularizari ale algoritmilor; vom
exemplifica pentru produsul matrice-vector (Gaxpy) y Ax + y, presupunand ca
A este memorata prin triunghiul superior. In exprimarea elementului yi ,
yi yi +

n
X
j=1

aij xj = yi +

i1
X

aji xj +

j=1

n
X

aij xj ,

j=i

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

1.9

Sisteme de ecuatii liniare

Un sistem de m ecuatii liniare cu n necunoscute are

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

a21 x1 + a22 x2 + . . . + a2n xn


...

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

forma
= b1
= b2

(1.40)

= bm

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

50

CAPITOLUL 1. ALGORITMI ELEMENTARI


i

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

necunoscutele. In forma matriceala, sistemul este


Ax = b,

(1.41)

A fiind numita matricea coeficientilor, b termenul liber (sau partea dreapta a sistemului), iar x vectorul necunoscutelor.
Daca termenul liber al sistemului este vectorul nul (b = 0), sistemul este numit
omogen.
Prima caracteristica importanta a unui sistem liniar este relatia ntre m si n:
cand numarul de ecuatii este mai mare decat numarul de necunoscute (m > n),
sistemul (1.41) se numeste supradeterminat;
cand, dimpotriva, numarul de necunoscute este mai mare (n > m), sistemul
este numit subdeterminat;
n cazul unei matrice A patrate (m = n), sistemul (1.41) este determinat.
A gasi solutia sistemului liniar (1.41) nseamna a calcula un vector x Rn astfel
ncat egalitatea Ax = b sa fie satisfacuta. Desigur, aceasta se poate realiza doar
daca sistemul are ntr-adevar (cel putin) o solutie. Daca nu are, vom atribui o noua
semnificatie notiunii de solutie, astfel ncat sistemul sa aiba cel putin una. Daca
exista mai multe solutii, va trebui selectata, ntr-un anume fel, una singura care va
fi calculata.
Conditiile n care sistemul (1.41) are solutie si n care aceasta este unica sunt
bine cunoscute din algebra liniar
a.
Teorema 1.2 Sistemul liniar (1.41) are solutie dac
a si numai dac
a b ImA.
Dac
a ImA = Rm , adic
a A este epic
a (are liniile independente), atunci sistemul
(1.41) are solutie pentru orice termen liber b Rm si reciproc.
Demonstratia este imediata prin definitia lui ImA.

51

1.9. SISTEME DE ECUAT


II LINIARE
y3
6

b 6 ImA
HbH ImA
Y
1

HH


HH



y2 


y1
-

ImA
Fig. 1.10: ImA si posibili b pentru exemplul 1.2

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

Cand solutia exista, unicitatea ei rezulta din


Teorema 1.3 1) Dac
a x0 Rn este o solutie particular
a a sistemului liniar (1.41),
atunci multimea tuturor solutiilor sistemului este varietatea liniar
a
x0 + KerA = {x = x0 + z | z KerA}.
2) Solutia x este unic
a dac
a si numai dac
a KerA = {0}, adic
a matricea A este
monic
a (are coloanele independente).
Demonstratie. Daca Ax0 = b, atunci z = x x0 satisface Az = 0, deci z KerA;
reciproc, Az = 0 implica A(x0 + z) = b.





1
1 1 0
2
Exemplul 1.3 Daca A =
si b =
, atunci x0 = 1 este
0 1 1
1
0
solutie particulara pentru Ax = b. Pe de alta parte, KerA este dreapta descrisa de

x1 + x2 = 0
,
x2 + x3 = 0
care trece prin punctele O(0, 0, 0) si P (1, 1, 1). Astfel, vectorii din KerA au forma

1
Ker A z = 1 , R,
1

52

CAPITOLUL 1. ALGORITMI ELEMENTARI


x3
6
P

:
x 


O 




x@
0
9
R
@
x2 
KerA

x1
-

x + KerA

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

si deci (vezi figura 1.11),

1+

x + KerA = y = 1 | R .

Corolar 1.1 C
and matricea A este p
atrat
a (A Rnn ), atunci urm
atoarele afirmatii sunt echivalente:
i) ImA = Rn , i.e. sistemul (1.41) admite solutie unic
a pentru orice b Rn ;
ii) KerA = {0};
iii) A este inversabil
a.
Dac
a sistemul are solutie, aceasta se poate scrie
x = A1 b.

(1.42)

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

53

1.9. SISTEME DE ECUAT


II LINIARE

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


not
este un numar real, notat det(A), pe care l vom defini recursiv. Daca A = a R,
atunci det(A) = a. Pentru A Rnn ,
det(A) =

n
X

(1)j+1 a1j det(A1j ),

j=1

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

lij xj + lii xi = bi ,

j=1

pentru a obtine

xi = bi

i1
X
j=1

lij xj / lii .

(1.44)

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


Lx = b, cunoscut ca metoda substitutiei nainte.
Algoritmul 1.16 (LTRIS Calculul solutiei unui sistem inferior
triunghiular) (Se dau L Rnn , inferior triunghiulara, inversabila, si
b Rn . Se calculeaza solutia x a sistemului Lx = b.)

54

CAPITOLUL 1. ALGORITMI ELEMENTARI


1. x b
2. Pentru i = 1 : n
1. Pentru j = 1 : i 1
1. xi xi lij xj
2. xi xi / lii

Comentarii.
Bucla Pentru interioara se poate nlocui cu un apel la produsul
scalar DOT(L(i, 1 : i 1), x(1 : i 1)). Fiecare executie a buclei Pentru i necesita
2(i 1) flopi n 2.1.1, pentru calculul sumei
Pndin (1.44), si 1 flop pentru mpartirea
din 2.2. In total, sunt necesari NLTRIS = i=1 (2(i 1) + 1) = n(n 1) + n = n2
flopi si MLTRIS = n(n + 1)/2 + 2n + 1 n2 /2 locatii de memorie (pentru elemente
n virgula mobila). Daca vectorul b nu este necesar ulterior, solutia x poate fi
memorata n aceeasi zona de memorie cu b; se spune ca se efectueaza calculul pe loc
n b. Ulterior, vom apela acest algoritm prin x = LTRIS(L, b).

Un algoritm cu aceleasi proprietati se obtine daca schimbam ordinea celor doua


bucle, ceea ce revine la a parcurge matricea L pe coloane, nu pe linii. Substitutia
decurge acum astfel: dupa calculul lui x1 cu (1.43), se actualizeaza valorile celorlalte
necunoscute xi , i = 2 : n (initializate cu bi ), cu termenul li1 x1 care contribuie la
sumele din (1.44); se poate calcula acum x2 , dupa care se actualizeaza din nou
restul necunoscutelor.
Algoritmul 1.17 (LTRIS versiunea pe coloane) (Se dau
L Rnn , inferior triunghiulara, inversabila, si b Rn . Se calculeaza
solutia x a sistemului Lx = b.)
1. x b
2. Pentru j = 1 : n
1. xj xj / ljj
2. Pentru i = j + 1 : n
1. xi xi lij xj
Comentarii. Se observa ca bucla Pentru interioara se poate nlocui cu un apel la
Saxpy(x(j), L(j + 1 : n, :), x(j + 1 : n)).

Datorita erorilor numerice, executia algoritmului LTRIS nu produce x = L1 b,


ci o solutie aproximativa x
. Se poate demonstra ca acest x
satisface
(L + F )
x = b,

cu |fij | nM |lij | + O(2M ),

(1.45)

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

(1.46)

55

1.9. SISTEME DE ECUAT


II LINIARE

Mai mult, daca xn , xn1 , . . . , xi+1 , sunt deja calculate, atunci, din a i-a ecuatie,
uii xi +

n
X

uij xj = bi ,

j=i+1

se obtine

xi = bi

n
X

j=i+1

uij xj /uii .

(1.47)

Din formulele (1.46) si (1.47), care definesc asa numita substitutie napoi, obtinem
direct algoritmul urmator.
Algoritmul 1.18 (UTRIS Calculul solutiei unui sistem superior
triunghiular) (Se dau U Rnn , superior triunghiulara, inversabila, si
b Rn . Se calculeaza solutia x a sistemului U x = b.)
1. x b
2. Pentru i = n : 1 : 1
1. Pentru j = i + 1 : n
1. xi xi uij xj
2. xi xi /uii
Perfect analog cu algoritmul 1.17 avem versiunea pe coloane a UTRIS.
Algoritmul 1.19 (UTRIS versiunea pe coloane) (Se dau
U Rnn , superior triunghiulara, inversabila, si b Rn . Se calculeaza
solutia x a sistemului U x = b.)
1. x b
2. Pentru j = n : 1 : 1
1. xj xj /ujj
1. Pentru i = 1 : j 1
1. xi xi uij xj
Comentarii. Ca si n cazul inferior triunghiular, efortul de calcul este NUTRIS = n2
flopi, iar memoria ocupata MUTRIS n2 /2 locatii n virgula mobila. Vom apela
acest algoritm prin x = UTRIS(L, b). Si pentru algoritmul UTRIS este valabila
o relatie de genul (1.45), i.e. algoritmul de mai sus este numeric stabil. Rezolvarea
sistemelor triunghiulare este o operatie de nivel 2.

AA. Sisteme triunghiulare cu parte dreapt


a multipl
a. Se spune despre
un sistem de forma AX = B, cu A Rnn , B Rnp (rezultand X Rnp ), cu
p > 1, ca este un sistem cu parte dreapt
a multipl
a. Desigur, a rezolva AX = B este
matematic echivalent cu a calcula X = A1 B. Partitionand X si B pe coloane,
rezolvarea sistemului AX = B se poate reduce rezolvarea a p sisteme de forma
(1.41), Axj = bj , j 1 : p.
Consideram A inferior triunghiulara. Prezentam o varianta bloc de rezolvare a
sistemului AX = B, adecvata calculatoarelor cu memorie ierarhica. Partitionam
sistemul astfel

56

CAPITOLUL 1. ALGORITMI ELEMENTARI

A11
A21
..
.

0
A22
..
.

...
...
..
.

0
0

Am1

Am2

. . . Amm

X1
X2
..
.
Xm

B1
B2
..
.
Bm

(1.48)

n care Aij Rrr , iar Bi , Xi Rrp . Evident, blocurile diagonale Aii sunt inferior
triunghiulare. Se presupune ca r divide n si fie m = n/r.
Sistemul (1.48) se rezolva n mod analog cu sistemul inferior triunghiular cu o
singura parte dreapta, tratat mai sus. Bloc linia i a sistemului (1.48) conduce la o
relatie asemanatoare cu (1.44):
i
X
j=1

Aij Xj = Bi = Aii Xi = Bi

i1
X

Aij Xj ,

(1.49)

j=1

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

m
i1
2
2
X
X
(r2 + rp) + r2 + rp pn + n ,
2r
2
i=1
j=1

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

57

1.9. SISTEME DE ECUAT


II LINIARE

Rezolvarea sistemelor triunghiulare cu parte dreapta multipla face parte din


grupul operatiilor de nivel 3.

AA. Inversarea matricelor triunghiulare. Fie L Rnn o matrice inferior


triunghiular
a; presupunem ca L este inversabila, adica lii 6= 0, i 1 : n. Pentru a
calcula X = L1 , utilizam egalitatea evidenta
LX = In ,
pe care o partitionam pe coloane
Lxj = ej , j 1 : n,

(1.50)

xj = Xej fiind cea de-a j-a coloana a matricei X. Sistemul inferior triunghiular
(1.50) poate fi rezolvat n mod eficient prin adaptarea algoritmului LTRIS la forma
particulara a termenului drept. Intr-adevar, sistemul (1.50) poate fi partitionat
astfel:
"
#
 

(j)
xj
0
L11
0
=
,
(1.51)
(j)
(j)
ej
xj
L21 L22
(j)

unde L11 este submatricea de dimensiune (j 1) (j 1) din coltul stanga sus al


matricei L si
ej = [1 0 . . . 0]T Rnj+1 .
Din (1.51) rezulta

(j)

L11 xj = 0,
(j)
(j)
L21 xj + L22 xj = ej .

(1.52)
(j)

(j)

Deoarece L este inversabila si, prin urmare, la fel sunt L11 si L22 , relatia (1.52)
devine
(
xj = 0,
(1.53)
(j)
L22 xj = ej .
Aceasta relatie stabileste un fapt important, dat de
Propozitia 1.5 Inversa unei matrice inferior triunghiulare nesingulare este inferior triunghiular
a.
In concluzie, matricele inferior triunghiulare inversabile formeaza grup n raport
cu nmultirea matriceala.
Din (1.53) poate fi dedus un algoritm de calcul al inversei unei matrice nesingulare, avand la baza urmatoarea schema de calcul:
L1

1. Pentru j = 1 : n
1. Dac
a j > 1 atunci xj = 0
(j)

2. xj = LTRIS(L22 , ej )

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


memorie ca matricea L. Explicitand rezolvarea sistemului inferior triunghiular,
obtinem

58

CAPITOLUL 1. ALGORITMI ELEMENTARI


Algoritmul 1.21 (LINV Calculul inversei unei matrice inferior
triunghiulare) (Se da L Rnn , inferior triunghiulara si inversabila. Se
calculeaza pe loc n L inversa acesteia.)
1. Pentru j = 1 : n
1. ljj xjj = 1 / ljj
2. Pentru i = j + 1 : n

Pi1
1. lij xij =
k=j lik xkj / lii

Comentarii.

Numarul de operatii necesar este


NLINV = n +

n1
X

n
X

j=1 i=j+1

2(i j)

n3
.
3

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


rezolvarea sistemului liniar Lx = b folosind relatia x = L1 b (adica LINV) este
ineficienta n comparatie cu algoritmul direct LTRIS.

Pentru a calcula inversa unei matrice superior triunghiulare nesingulare


U Rnn , trebuie rezolvata ecuatia matriceala U X = In , sau, echivalent, cele
n ecuatii liniare
U xj = ej , j = 1 : n,
(1.54)
unde xj este coloana j a matricei X = U 1 .
Utilizand partitia
"
#
  
(j)
(j)
xj
ej
U11 U12
=
,

(j)
x
0
0
U22
j

(1.55)

(j)

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

xj = 0.
Propozitia 1.6 Inversa unei matrice superior triunghiulare nesingulare este superior triunghiular
a.
Asadar matricele superior triunghiulare inversabile formeaza grup n raport cu
nmultirea.
Daca sistemele (1.56) sunt rezolvate n ordine inversa (pentru j = n, n1, . . . , 1),
se poate vedea cu usurinta ca elementele matricei inverse se pot memora peste cele
ale matricei originale, pe masur
a ce sunt calculate. Vom obtine deci urmatorul
algoritm.

59

1.10. VALORI S
I VECTORI PROPRII
Algoritmul 1.22 (UINV Calculul inversei unei matrice superior
triunghiulare) (Se da U Rnn , superior triunghiulara si inversabila.
Se calculeaza pe loc n U inversa acesteia.)
1. Pentru j = n : 1 : 1
1. ujj xjj = 1/ujj
2. Pentru i = j 1 : 1
P: 1

j
1. uij xij =
u
x
/uii
ik
kj
k=i+1

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


Algoritmii de inversare a matricelor triunghiulare sunt numeric stabili.

1.10

Valori si vectori proprii

Fie A Cnn . Numarul C se numeste valoare proprie a matricei A daca exista


un vector v Cn , v 6= 0, astfel ncat
Av = v.

(1.57)

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


Se observa ca daca v este vector propriu al matricei A, atunci si u = v este
vector propriu al lui A, corespunzand aceleiasi valori proprii, oricare C, 6= 0.
Asadar, vectorii proprii sunt determinati numai ca directie, nu si ca marime.
Teorema 1.4 Fie A Cnn . Scalarul C este valoare proprie a matricei A
dac
a si numai dac
a matricea I A este singular
a. Mai mult, matricea A are
exact n valori proprii (num
ar
and separat valorile proprii multiple), care coincid cu
zerourile polinomului caracteristic
p() = det(In A).

(1.58)

Dac
a A Rnn , valorile proprii apar n perechi complex conjugate (iar vectorii
proprii asociati acestor perechi pot fi alesi complex conjugati).
Demonstratie. Daca este valoare proprie a matricei A, atunci exista un vector
v 6= 0 astfel ncat Av = v, deci (In A)v = 0 si n consecinta In A este
singulara. Reciproc, daca pentru un C matricea In A este singulara, atunci
exista v Cn , v 6= 0, astfel ncat (In A)v = 0, adica Av = v si deci este
valoare proprie a matricei A.
Deoarece In A este singulara daca si numai daca satisface det(I A) = 0,
iar p() = det(I A) este un polinom monic de grad n, din teorema fundamentala
a algebrei rezulta ca (1.58) are n zerouri care coincid cu valorile proprii ale matricei A. Daca A este reala, polinomul caracteristic p() are coeficienti reali si atunci
zerourile sale complexe apar n perechi complex conjugate (pentru vectori proprii,
vezi problema 1.28).

Ca o consecinta directa a faptului ca valorile proprii sunt radacinile ecuatiei


det(In A) = 0, sa observam ca daca A este diagonala sau triunghiulara, atunci
valorile sale proprii sunt chiar elementele diagonale.

60

CAPITOLUL 1. ALGORITMI ELEMENTARI


Notam prin
(A) = {1 , 2 , . . . , n } = { C | det(I A) = 0}

(1.59)

multimea valorilor proprii ale matricei A Cnn (cu repetarea valorilor proprii
multiple). Multimea (A) se numeste spectrul matricei A.
Transform
ari de asem
anare. Suntem interesati de transformarile care conserva spectrul unei matrice date; se observa ca valorile proprii nu sunt conservate
n urma premultiplicarii sau postmultiplicarii cu o alta matrice.
Doua matrice A, B Cnn sunt numite asemenea daca exista o matrice nesingulara T Cnn astfel ncat
B = T AT 1.
(1.60)
T se numeste transformare de asemanare. Daca T este unitara (ortogonala, n cazul
real), atunci A si B sunt ortogonal asemenea.
Teorema 1.5 Dou
a matrice asemenea A, B Cnn au acelasi spectru, adic
a
(A) = (B). Mai mult, dac
a T este matricea de transformare din (1.60) si dac
a
vA este vector propriu al matricei A corespunz
ator valorii proprii (A), atunci
vectorul
vB = T vA
(1.61)
este vector propriu al matricei B, corespunz
ator aceleiasi valori proprii.
Demonstratie. Daca A si B satisfac (1.60), atunci
det(I B) = det(I T AT 1 ) = det(T (I A)T 1 ) =
= det(T ) det(I A) det(T 1 ) = det(I A),
deci (A) = (B). Daca vA este vector propriu al matricei A corespunzator valorii
proprii , atunci AvA = vA , sau T AT 1T vA = T vA , de unde BvB = vB si deci
(1.61) este adevarata.

Matrice simple. O matrice A Cnn care are un set complet de n vectori


proprii liniar independenti se numeste simpl
a. Acesta este cazul generic si totodata cel n care proprietatile spectrale ale matricelor sunt mai vizibile. Se poate
demonstra ca daca matricea A are n valori proprii distincte, atunci ea este simpla.
Teorema 1.6 Fie A Cnn o matrice simpl
a si V Cnn matricea ale c
arei
coloane sunt vectorii proprii ai lui A. Atunci
V 1 AV = Cnn

(1.62)

este o matrice diagonal


a.
Demonstratie. V = [v1 v2 . . . vn ] si Avj = j vj , j 1 : n, unde j sunt valorile
proprii ale lui A. Atunci
AV = [Av1 Av2 . . . Avn ] = [1 v1 2 v2 . . . n vn ] =

61

1.10. VALORI S
I VECTORI PROPRII
= [v1 v2 . . . vn ] diag(1 , 2 , . . . , n ) = V .

Deoarece vectorii vj , j 1 : n, sunt liniar independenti, matricea V este nesingulara


si (1.62) este adevarata.

Asadar o matrice simpla poate fi diagonalizat


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


vj
T11 y T13
T11 vj + vjj y + T13 vj = 0
T

wT vj = 0
0 w
vjj
=0
,
(1.63)

T33
vj
T33 vj = 0

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

cu ij = tij

j1
X

tik vkj .

(1.64)

k=i+1

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

62

CAPITOLUL 1. ALGORITMI ELEMENTARI

Consideratiile de mai sus conduc la urmatorul algoritm general, n care matricea


T = j U nu se formeaza explicit
Algoritmul 1.23 (TRV Calculul vectorilor proprii ai unei matrice superior triunghiulare) (Se da U Rnn , superior triunghiulara.
Se calculeaza vectorii proprii ai matricei U n matricea V ; coloanele nule
din V desemneaza cazurile de defectivitate.)
1. V 0
2. Pentru j = 1 : n
1. vjj 1
2. Pentru i = j 1 : 1 : 1
P
1. uij + j1
k=i+1 uik vkj
2. Dac
a uii 6= ujj atunci
% tii 6= 0
1. vij /(ujj uii )
altfel dac
a = 0 atunci
2. vij 1
altfel
% 6= 0
3. vkj 0, cu k = i + 1 : j
4. treci la urmatorul j
Comentarii. Instructiunile 2.2.2.1, 2.2.2.2, 2.2.2.3 implementeaz
a cele trei cazuri
posibile n rezolvarea ecuatiei (1.64); n 2.2.2.3 se refac zerourile din coloana j
a matricei V , pentru a se marca necalcularea unui vector propriu. Numarul de
operatii este de cel mult n3 /3 flopi.
Deoarece calculul valorii este afectat de erori numerice, decizia = 0 se
implementeaza efectiv printr-un test de genul || < cM , unde c > 1 este o constanta
mica. In unele programe de calcul, cazurile de defectivitate sunt pur si simplu
ocolite; atunci cand uii = ujj , se ia fortat n 2.2.2.1 ujj uii = M si se lucreaza ca
si cum matricea U are avea valori proprii distincte. Se obtin astfel ntotdeauna n
vectori proprii distincti; n cazurile de defectivitate, vectorii proprii corespunzatori
aceleiasi valori proprii sunt aproape (cu o aproximatie de ordinul preciziei de calcul)
coliniari.

Cazul matricelor inferior triunghiulare se trateaza analog si e lasat ca exercitiu.

1.11

Rutinele BLAS

Am prezentat n sectiunile anterioare algoritmi simpli adecvati calculatoarelor cu


memorie ierarhica: 1.15 pentru nmultirea de matrice si 1.20 pentru rezolvarea
sistemelor triunghiulare cu parte dreapta multipla. Pentru majoritatea problemelor,
nsa, algoritmii sunt complicati si efortul gasirii unei idei de adaptare poate fi considerabil; programatorul ar fi obligat sa cunoasca detalii arhitecturale si ale sistemului
de operare pentru calculatorul n cauza. In plus, programul realizat ar functiona
doar pe tipul respectiv de calculator, transferul pe un altul implicand rescrierea
partiala.
Pentru a usura sarcina programatorului si pentru a realiza portabilitatea, a
aparut ideea scrierii unor biblioteci de rutine fundamentale, putine la numar, dar

63

1.11. RUTINELE BLAS


S real simpla precizie
D real dubla precizie
GE - generala
SY - simetrica
HE - hermitica
TR - triunghiulara

C complex simpla precizie


Z complex dubla precizie

GB - generala banda
SB - simetrica banda
HB - hermitica banda
TB - triungh. banda

SP - simetrica mpachetat
HP - hermitica mpachetat
TP - triungh. mpachetat

Tabelul 1.1: Conventii de nume n BLAS: tipuri de date si structuri de matrice


implementate foarte eficient pe majoritatea calculatoarelor (de catre programatori
profesionisti). Atunci, un program obisnuit va folosi c
at mai mult aceste rutine, si
cat mai putin alt gen de operatii; eficienta este asigurata, datorita adecvarii rutinelor
de baza la arhitectura, iar efortul de programare este redus, datorita numarului
redus al rutinelor.
Astfel s-au nascut (ncepand din 1973, pana n 1989) bibliotecile BLAS (Basic
Linear Algebra Subroutines rutine de baza n algebra liniara), care s-au impus ca
un standard unanim acceptat si sunt implementate pe marea majoritate a calculatoarelor de performanta. Exista trei nivele BLAS, n fapt trei biblioteci distincte
al c
aror continut trateaza operatii asemanatoare din punct de vedere al datelor
implicate:
nivel 1: dedicat operatiilor vectoriale, de genul Saxpy sau DOT, care necesita
O(n) flopi. BLAS-1 este adecvat calculatoarelor vectoriale.
nivel 2: dedicat operatiilor matrice-vector, de tipul Gaxpy sau rezolvare de
sisteme triunghiulare, care necesita O(n2 ) flops. S
i BLAS-2 are aplicabilitate
n special pe calculatoare vectoriale.
nivel 3: operatii matrice-matrice, ca nmultirea de matrice sau rezolvarea de
sisteme triunghiulare cu parte dreapta multipla, care necesita O(n3 ) flops.
BLAS-3 este eficient ndeosebi pe calculatoare cu memorie ierarhica.
Prezentam n continuare cateva din rutinele BLAS, insistand asupra nivelului 3,
deoarece calculatoarele cu memorie ierarhica sunt tot mai raspandite.
Conventii de nume. Scrise initial n FORTRAN, numele rutinelor sunt foarte
scurte (cel mult sase caractere) si de aceea greu de nteles fara explicatii asupra
conventiilor utilizate pentru stabilirea lor. In tabelul 1.1, prima litera a numelui
unei rutine indica tipul datelor, iar urmatoarele doua (numai pentru nivelele 2 si
3), structura matricelor argumente ale functiei.
In fine, ultimele trei (uneori doua) litere tot pentru nivelele 2 si 3 codifica
operatia executata, dupa cum se va vedea imediat.
BLAS 1. Prezentam n tabelul 1.2 cele mai importante rutine ale nivelului 1 al
BLAS, fara a preciza argumentele lor, ci numai operatia realizata; ca si pana acum,
x, y sunt vectori n Rn sau Cn , iar scalar. Prima litera a numelui, care arata tipul
datelor, este precizata n ultima coloana.

64

CAPITOLUL 1. ALGORITMI ELEMENTARI


Nume
xSWAP
xSCAL
xCOPY
xAXPY
xDOT
xDOTU
xDOTC
xNRM2

Operatie
xy
x x
xy
y x + y
dot xT y
dot xT y
dot xH y
nrm2 kxk2

Prefixe
S, D, C,
S, D, C,
S, D, C,
S, D, C,
S, D
C, Z
C, Z
S, D, C,

Z
Z
Z
Z

Tabelul 1.2: Rutine din BLAS 1


Deoarece argumentele functiilor sunt asemanatoare, exemplificam cu un apel
tipic:
SAXPY(N, ALFA, X, INCX, Y, INCY)
INCX reprezinta distanta, n memorie, ntre doua elemente succesive ale vectorului al carui prim element se gaseste la adresa X. Argumentul INCX permite utilizarea
ca vectori, n SAXPY, atat a coloanelor cat si a liniilor unei matrice. Sa presupunem
ca o matrice A este memorata ntr-un tablou m n, n ordinea coloanelor (adica
a11 , a21 , . . . , am1 , a12 , . . . ). Atunci coloana j este reprezentata astfel: X este adresa
elementului a1j (adica A + mjd, unde d este numarul de octeti necesari memorarii
unui element), iar INCX = 1. Pentru a reprezenta linia i a matricei A, luam X adresa
elementului ai1 (adica A + id), iar INCX = m.
BLAS 2. Nivelul 2 al BLAS contine rutine pentru trei operatii: produsul
matrice-vector, rezolvarea sistemelor triunghiulare si produsul exterior, n diverse
variante pe care le enumeram n continuare.
Rutinele care executa nmultire matrice-vector de forma y Ax + y au
numele de tipul xyyMV, n care primele trei litere sunt cele din tabelul 1.1 (toate
combinatiile permise).
Rezolvarea sistemelor (inferior sau superior) triunghiulare este efectuata de rutinele xyySV, unde yy este TR, TB sau TP.
Pentru produsul exterior, rutina de baza este xGER, care executa operatia
A xy T + A, unde A este o matrice.
Nu dam un exemplu de apel, deoarece descrierea matricelor se face ca la rutinele
de nivel 3, explicate mai jos, iar cea a vectorilor ca n rutinele de nivel 1.
BLAS 3. Vom prezenta acum cele 6 rutine alese a face parte din setul BLAS
nivel 3 n [?]. Ele sunt putine la numar, deoarece munca de creare a unei rutine
optime este dificila; chiar daca rutinele rezolva probleme relativ simple, arhitectura
complicata implica folosirea aproape exclusiva a limbajului de asamblare; pe un
calculator CRAY, s-a ajuns chiar la 100 000 linii de program pentru o, n aparenta
banala, nmultire de matrice.
Operatiile implementate de rutinele BLAS nivel 3 sunt esentialmente n numar
de doua: nmultirea de matrice, n cateva variante, si rezolvarea de sisteme triunghiulare cu parte dreapta multipla. Numele rutinelor sunt deja intrate n uzul curent si

65

1.11. RUTINELE BLAS




6 6
M
LDA
?
?
Fig. 1.12: Memorarea (pe coloane a) unei matrice ntr-un tablou

respecta regulile din tabelul 1.1; pentru a nu ncarca expunerea, nu vom prezenta
modul efectiv de apel decat pentru prima rutina prezentata.
In cele ce urmeaza, A, B, C snt matrice oarecare, cu dimensiuni oarecare,
dar adecvate operatiilor, sau simetrice si patrate, T este o matrice triunghiulara,
superior sau inferior, iar si snt scalari.
1. xGEMM (GEneral Matrix Multiplication) nmultirea matrice-matrice, n cazul
general. Modul complet de apel este:
xGEMM(TRANSA, TRANSB, M, N, K, ALFA, A, LDA, B, LDB, BETA, C, LDC)
Operatiile efectuate de rutina snt prezentate n tabelul urmator; C este ntotdeuna de dimensiune m n.
TRANSB = N
TRANSB = T

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

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

Argumentele rutinei devin acum mai clare: TRANSA si TRANSB arata daca matricele A, B se transpun sau nu; M, N, K sunt dimensiunile efective ale matricelor;
LDA, LDB, LDC contin dimensiunea principala a variabilelor n care sunt stocate
matricele, presupuse memorate pe coloane. Semnificatia acestor variabile dimensionale este mai clara n figura 1.12. Elementele de pe aceeasi linie se afla la distanta
LDA n memorie. Se mai poate observa ca patru variabile (analog cu A, M, K, LDA)
sunt suficiente pentru utilizarea oricarei submatrice a matricei din figura.
Rutina acopera toate variantele de nmultire a doua matrice, operatia de baza
fiind C AB + C; transpunerea nu este lasata utilizatorului, deoarece poate
fi mare consumatoare de timp daca se executa explicit (n xGEMM nu se ntampla
asa); la fel, nmultirea matrice-scalar. Cum toate celelalte rutine BLAS nivel 3 au
argumente de apelare asemanatoare, vom prezenta n continuare doar operatia de
baza implementata.
2. xSYMM (SYmetric Matrix Multiplication) nmultire matrice-matrice, cu una
din matrice simetrica:

66

CAPITOLUL 1. ALGORITMI ELEMENTARI

C AB + C.

(1.65)

3. xSYRK (SYmmetric Rank-K update) actualizare de rang k a unei matrice


simetrice; A are dimensiune n k.
C AAT + C.

(1.66)

De obicei, k < n; de aici numele rutinei, AAT avand rang k.


4. xSYR2K actualizare de rang 2k a unei matrice simetrice:
C AB T + BAT + C.

(1.67)

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


una dintre matrice triunghiulara:
B T B.

(1.68)

Evident, exista si varianta n care T este la dreapta; de asemenea, T poate fi inferior


sau superior triunghiulara.
6. xTRSM (TRiangular system Solver, with Multiple right hand term) calculeaza solutia unui sistem liniar triunghiular, cu parte dreapta multipla (T X = B):
X T 1 B.

(1.69)

Si pentru aceasta rutina exista versiuni n care necunoscuta este n stanga (de genul
XT = B); T este fie superior, fie inferior triunghiulara.
Ca pentru orice standard, alegerea setului de mai sus poate parea mai mult sau
mai putin arbitrara; principala justificare a alegerii este numarul mare de algoritmi
din algebra liniara care folosesc rutine din setul propus.
Vom prezenta n cursul acestei lucrari si algoritmi scrisi astfel ncat marea majoritate a operatiilor sa apara n executia unor rutine BLAS de nivel 3. Pentru a
cuantifica eficienta lor, introducem ponderea operatiilor de nivel 3 prin raportul
P3 (n) =

N3 (n)
.
Ntotal (n)

(1.70)

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

67

1.12. PROBLEME

1.12

Probleme

P 1.1 Demonstrati c
a un subspatiu liniar n Rn este un spatiu vectorial.
P 1.2 Scrieti algoritmi pentru calculul normelor 1 si ale unui vector x Rn .

P 1.3 (Cauchy-Buniakowski-Schwarz) Demonstrati c


a |xT y| kxk2 kyk2 , x, y Rn .

P 1.4 G
asiti vectori liniar independenti x, y Rn care s
a satisfac
a kx+ykp = kxkp +kykp ,
pentru p = 1, 2, .
P 1.5 Demonstrati (1.6) pentru n = 2, apoi n cazul general.

P 1.6 (Ortogonalizare Gram-Schmidt) Fie b1 , . . . , bp o baz


a a unui subspatiu S Rn .
S
a se g
aP
seasc
a o baz
a ortogonal
a a1 , . . . , ap a lui S proced
and prin inductie: a1 = b1 si
ak+1 = ki=1 ik ai + bk+1 . (Evident, baza devine ortonormal
a prin normalizare.)
P 1.7 Fie x Rm si y Rn doi vectori, si A = xy T Rmn produsul lor exterior.
Demonstrati c
a rangA = 1.

P 1.8 Fie matricele A Rn1 n2 , B Rn2 n3 , C Rn3 n4 . Sugerati un algoritm de


calcul al produsului ABC.

P 1.9 Demonstrati c
a maxi,j |aij | kAk2 mn maxi,j |aij |, A Rmn .
P 1.10 Demonstrati (1.29) si g
asiti matrice pentru care inegalit
atile (fie cele de majorare,
fie cele de minorare) devin egalit
ati.
P 1.11 Fie B o submatrice a matricei A. Ar
atati c
a kBkp kAkp .
P 1.12 Demonstrati c
a: 1.
3. kAT Ak2 = kAk22 .

kAk2 = maxkxk2 =1,kyk2 =1 |y T Ax|;

2.

kAT k2 = kAk2 ;

P 1.13 Demonstrati c
a dac
a A Rnn este inversabil
a, atunci pentru orice norm
a matriceal
a subordonat
a unei norme vectoriale avem 1 / kA1 k = minkxk=1 kAxk.
P 1.14 Fie L Rnn o matrice strict inferior triunghiular
a. Demonstrati c
a Ln = 0.

P 1.15 Fie A, B Rnn dou


a matrice band
a, prima de l
atime p, a doua de l
atime q.
Demonstrati c
a AB este o matrice band
a de l
atime p + q si scrieti un algoritm pentru
calculul acestui produs.
P 1.16 Scrieti un algoritm pentru calculul produsului dintre o matrice inferior triunghiular
a si una superior triunghiular
a.
P 1.17 Ar
atati c
a algoritmul 1.14 de nmultire de matrice inferior triunghiulare se poate
executa pe loc n A. Cum trebuie modificat pentru a se putea executa pe loc n B ?
P 1.18 Ar
atati c
a submatricele lider principale ale unor matrice triunghiulare, Hessenberg, simetrice sunt triunghiulare, Hessenberg, respectiv simetrice. Este afirmatia valabil
a
pentru matrice ortogonale ?

P 1.19 Presupunem c
a dispuneti de un algoritm general de rezolvare a sistemelor liniare.
Indicati un mod eficient de rezolvare a sistemului Ax = b atunci c
and A, partitionat
a ca
n (1.31), este p
atrat
a si bloc superior triunghiular
a.
P 1.20 Demonstrati c
a num
arul de operatii N (n) al algoritmului Strassen, respect
and
recurenta (1.38), este
2n30 + 6n20 log 7
N (n) =
n
6n20 .
7
nlog
0

68

CAPITOLUL 1. ALGORITMI ELEMENTARI

P 1.21 Dac
a A Rnn este simetric
a pozitiv definit
a, demonstrati c
a kxkA = xT Ax
este o norm
a vectorial
a. (Indicatie: matricele simetrice sunt ortogonal diagonalizabile.)
P 1.22 Fie A Rnn , simetric
a pozitiv definit
a. Demonstrati c
a A este inversabil
a si c
a
A1 este pozitiv definit
a.
P 1.23 a. Este clar c
a o matrice triunghular
a si simetric
a este diagonal
a. Cum este o
matrice triunghiular
a si antisimetric
a?
b. Demonstrati c
a o matrice triunghiular
a si ortogonal
a este diagonal
a.
c. Puteti extinde rezultatul n cazul matricelor triunghiulare si normale ?
P 1.24 Scrieti algoritmi eficienti pentru rezolvarea sistemului Ax = b, cu A Rnn si
b Rn , n cazurile:
a. A inferior bidiagonal
a, adic
a aij = 0 pentru i < j sau i > j + 1.
b. A inferior triunghiular
a si band
a de l
atime p (aij = 0 pentru i < j sau i > j + p).
c. A superior bidiagonal
a.
d. A superior triunghiular
a si band
a de l
atime p.
P 1.25 Adaptati algoritmii LINV si UINV pentru inversarea matricelor inferior, respectiv superior bidiagonale.
P 1.26 Propuneti algoritmi de rezolvare a sistemelor inferior (superior) triunghiulare,
folosind operatiile vectoriale DOT sau Saxpy.
P 1.27 Prezentati un algoritm de rezolvare a sistemului inferior triunghiular Lx = b,
stiind c
a matricea L este memorat
a compact, pe linii (i.e. sunt memorate doar elementele
din triunghiul inferior, n ordinea l11 , l21 , l22 , l31 etc. Dar dac
a L este memorat
a pe
coloane ?
P 1.28 Fie A Rnn si x = u + iv Cn un vector propriu al s
au, cu u, v Rn , v =
6 0.
Demonstrati c
a:
a. u iv este vector propriu al matricei A.
b. Vectorii u si v sunt liniar independenti iar subspatiul generat de ei n Rn este
A-invariant.
P 1.29 P
Dac
a matricea A Q Rnn are spectrul (A)
n
i generaliza ?
tr(A) = n
i=1 i . Putet
i=1 i , iar detA =

{1 , . . . , n }, atunci

P 1.30 Fie A Rnn , simetric


a pozitiv definit
a. Demonstrati c
a toate valorile proprii
ale matricei A sunt (reale si) pozitive.

Capitolul 2

Rezolvarea sistemelor de
ecuatii liniare
In acest capitol vom prezenta principalele metode de rezolvare a sistemelor determinate de ecuatii liniare
Ax = b,
(2.1)
unde A Rnn este o matrice inversabila, iar b Rn este un vector dat. Asa cum
am vazut n sectiunea 1.9, n virtutea conditiei de inversabilitate, sistemul (2.1) are
o solutie unica x Rn .
In practica numerica actuala se folosesc doua categorii principale de metode
numerice sigure pentru determinarea acestei solutii:
Metode directe, bazate pe reducerea sistemului (2.1), printr-o secventa finita
de transformari elementare, la unul sau doua sisteme triunghiulare, care se
rezolva utilizand procedurile de substitutie cunoscute din sectiunea 1.9 (algoritmii LTRIS si UTRIS). Din aceasta categorie fac parte metodele de
eliminare gaussiana si de factorizare compacta LU , care sunt recomandate
pentru sisteme de dimensiuni medii, sa zicem n < 500, dar aceasta limita
depinde de puterea calculatorului pe care rezolvam sistemul.
Metode iterative, bazate pe construirea recursiva a unui sir de vectori care
converge catre solutia sistemului (2.1). Aceste metode sunt recomandate pentru sisteme de dimensiuni foarte mari, sau/si atunci cand matricea A are o
structura speciala, eventual rara.
Acest capitol este dedicat prezentarii celor mai importante metode directe de
rezolvare a sistemelor liniare.
Deoarece n reducerea sistemului (2.1) la forma triunghiulara transformarile
matricei A sunt primordiale, n primele patru sectiuni ale capitolului vom trata
aceste transformari ca subiect de sine statator. Algoritmii descrisi vor fi utilizati
n sectiunea 2.5 pentru rezolvarea efectiva a unui sistem (2.1), de forma generala.
Ca probleme conexe, n sectiunea 2.6 vor fi prezentati algoritmi de calcul al inversei si determinantului unei matrice. Urmatoarele doua sectiuni sunt dedicate

70

CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUAT


II LINIARE

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

2.1

Transform
ari elementare

Transformarile matricei A necesare pentru rezolvarea sistemului (2.1) se pot descrie


concis si elegant n termeni de operatii matriceale, mai precis ca produs ntre A
si anumite matrice elementare. (In loc de produs sau nmultire, vom vorbi despre
aplicarea asupra lui A a matricei de transformare corespunzatoare.)
Definitia 2.1 O matrice inferior triunghiulara elementara (ITE) de ordin n si indice k este o matrice de forma
Mk = In mk eTk ,

(2.2)

mk = [0 0 . . . 0 k+1,k . . . nk ]T

(2.3)

unde
este un vector av
and primele k componente nule, iar ek este vectorul unitate de
indice k.
Din motive ce vor fi evidente ulterior, Mk se mai numeste transformare elementara sau gaussiana, mk se numeste vector Gauss, iar scalarii ik se numesc
multiplicatori (gaussieni).
Structura unei matrice elementare inferior triunghiulare de ordinul n si indice k
este

1 0 ...
0
... 0
0 1 ...
0
... 0

..

.
...

Mk = 0 0 . . .
1
... 0
.
0 0 . . . k+1,k . . . 0

..

. 0
...
...
0 0 ...
nk
... 1

Notam de acum faptul ca o matrice ITE este complet definita de vectorul mk


din (2.3); n orice algoritm, matricea Mk nu se memoreaza integral, ci doar prin
vectorul mk , i.e. prin multiplicatorii ik , i = k + 1 : n. Principalele proprietati ale
unei astfel de matrice sunt rezumate n urmatoarea propozitie.
Propozitia 2.1 a) O matrice ITE este inversabil
a si
Mk1 = In + mk eTk .

(2.4)


2.1. TRANSFORMARI
ELEMENTARE

71

b) Fie x Rn un vector dat, iar Mk o matrice ITE precizat


a. Atunci vectorul
transformat y = Mk x are elementele

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

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

(2.7)

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

Mk (In + mk eTk ) = (In mk eTk )(In + mk eTk ) = In mk (eTk mk )eTk = In


deoarece, din (2.3), eTk mk = 0. Deci (2.4) este adevarata.
b) Utilizand (2.2), obtinem
Mk x = (In mk eTk )x = x mk eTk x = xi xk mk .
Scriind relatia de mai sus pe componente si tinand seama de (2.3), obtinem (2.5).
c) T
inand seama de (2.5) si alegand
ik = xi /xk ,

i = k + 1 : n,

(2.8)

rezulta (Mk x)i = 0, pentru i = k + 1 : n. Daca xk = 0, atunci (2.5) conduce direct


la (2.7). De observat ca, daca xk 6= 0, atunci matricea ITE definita de vectorul
Gauss cu elementele din (2.8) este unica matrice ITE de indice k care introduce
zerouri n ultimele n k componente ale vectorului x.

Dupa cum vom vedea n sectiunea urmatoare, proprietatile (2.6) si (2.7) sunt
cruciale n reducerea unei matrice la forma triunghiulara.
Similar se introduce notiunea de matrice superior triunghiular
a elementar
a (STE)
sau transformare elementara retrograda, n care vectorul mk are ultimele k componente nule. Propunem cititorului formularea si demonstrarea analoagei propozitiei 2.1.
Vom introduce acum notiunea de matrice de permutare, care permite descrierea
concisa a interschimbarilor de linii sau coloane n termeni de operatii matriceale.
Definitia 2.2 O matrice Pij Rnn obtinut
a din matricea unitate In prin interschimbarea a dou
a coloane (sau linii) i si j, adic
a o matrice de forma (aici i < j):

Ii1

0
1

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

1
0
Inj

72

CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUAT


II LINIARE

n care toate elementele nefigurate sunt nule, se numeste (matrice de) permutare
elementara (PE).
Daca (i1 , i2 , . . . , in ) este o permutare a multimii 1 : n, atunci matricea
P = [ei1 ei2 . . . ein ] este o matrice de permutare. Desigur, un produs de matrice
elementare de permutare este o matrice de permutare si, reciproc, orice matrice de
permutare se poate exprima ca produs de matrice PE.
Proprietatile matricelor elementare de permutare sunt expuse n urmatoarea
propozitie, a carei demonstratie e evidenta.
Propozitia 2.2 a) O PE este ortogonal
a si simetric
a, deci Pij1 = Pij , iar
det Pij = 1.
b) Premultiplicarea unei matrice A cu PE Pij interschimb
a linia i cu linia j din
A, adic
a:
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
a coloana i cu coloana
j din A, adic
a:
(
Aek , pentru k 6= i, j,
(APij )ek = Aej , pentru k = i,
Aei , pentru k = j.

2.2

Triangularizare prin eliminare gaussian


a

Fie A Rnn (cazul A Cnn este identic) o matrice nu neaparat inversabila.


Eliminarea gaussiana este o metoda de reducere a matricei A la forma superior
triunghiulara prin aplicarea la st
anga lui A a unei secvente Mk , k = 1 : n 1,
de matrice ITE, fiecare aleasa astfel ncat sa anuleze elementele subdiagonale n
coloana corespunzatoare ak a matricei A.
Pentru prezentarea metodei avem nevoie de doua rezultate cu caracter tehnic,
a caror demonstratie e lasata cititorului.
Propozitia 2.3 Fie A Rnn . a) Dac
a L Rnn este inferior triunghiular
a,
1
atunci
(LA)[k] = L[k] A[k] .
b) Dac
a Li Rnn , i = 1 : p, sunt matrice inferior triunghiulare, atunci
[k]

[k]

[k]
(L1 L2 . . . Lp A)[k] = L1 L2 . . . L[k]
p A .

Urmatoarea teorema stabileste conditiile n care este posibila reducerea unei


matrice la forma triunghiulara, utilizand transformari ITE.
1 Reamintim

def

c
a A[k] = A(1 : k, 1 : k) este submatricea lider principal
a de ordin k a matricei A.


2.2. TRIANGULARIZARE PRIN ELIMINARE GAUSSIANA

73

Teorema 2.1 Dac


a matricea A Rnn satisface conditia
(i) submatricele lider principale A[k] , k = 1 : n 1, sunt nesingulare,
atunci exist
a o matrice inferior triunghiular
a unitate M astfel nc
at matricea
MA = U
este superior triunghiular
a. Dac
a A este nesingular
a, atunci U este nesingular
a.
Demonstratia este constructiva, adica descrie o procedura pentru reducerea efectiva
a matricei A la forma superior triunghiulara U . Procedura consta n n 1 pasi.
[1]

Pasul 1. Fie A1 = A si a1 = Ae1 prima sa coloana. Prin ipoteza, A1 = A[1] =


= a11 6= 0. Din propozitia 2.1, exista o matrice ITE M1 astfel ncat

a11 , pentru i = 1,
(M1 a1 )i =
0,
pentru i = 2 : n,
adica matricea A2 = M1 A1 are toate
egale cu zero:
(2)
a11

A2 = 0

...
0

elementele subdiagonale ale primei coloane


(2)

a12
(2)
a22
(2)
a32
...
(2)
an2

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

(2)

a1n
(2)
a2n
(2)
a3n
...
(2)
ann

Pasul k. Presupunem ca matricea curenta

Ak = Mk1 . . . M2 M1 A
este superior triunghiulara n primele k 1 coloane, i.e. are toate elementele subdiagonale ale acestor coloane egale cu zero. Aplicand propozitia 2.3, obtinem
[k]

[k]

[k]

Ak = Mk1 . . . M1 A[k] ,
[k]

[k]

unde matricele Mi sunt toate inferior triunghiulare unitate, deci det(Mi ) = 1,


[k]
i = 1 : k 1. Deoarece Ak este superior triunghiulara, n virtutea conditiei (i) din
enuntul teoremei avem
[k]

det(Ak ) =

k
Y

i=1

(k)

aii = det(A[k] ) 6= 0,

(k)

adica elementul akk , numit pivot, este nenul. Consideram partitionarea pe coloane
a matricei Ak :
(k) (k)
(k)
Ak = [ a1 a2 . . . ak . . . a(k)
n ].
Putem utiliza acum propozitia 2.1 pentru a conchide ca exista o matrice ITE Mk
(k)
astfel ncat (Mk ak )i = 0, pentru i = k + 1 : n. Mai mult, premultiplicarea cu
Mk a matricei Ak nu altereaza primele k 1 coloane si n particular zerourile deja

74

CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUAT


II LINIARE
(k)

introduse la pasii anteriori, deoarece akj = 0, pentru j = 1 : k 1 (vezi propozitia


2.1, punctul c). Prin urmare matricea
Ak+1 = Mk Ak

(2.9)

este superior triunghiulara n primele k coloane.


Astfel, procedura de introducere a zerourilor subdiagonale, nceputa la pasul 1
si continuata pana la pasul n 1 (inclusiv), are ca rezultat matricea
def

U = An = Mn1 Mn2 . . . M1 A,

(2.10)

evident superior triunghiulara. Mai mult, deoarece produsul matriceal conserva


structura inferior triunghiulara unitate (vezi propozitia 1.2), matricea
M = Mn1 Mn2 . . . M1
este inferior triunghiulara unitate iar, daca A este nesingulara, atunci si U rezulta
nesingulara, ca produs a doua matrice nesingulare.

Demonstratia de mai sus furnizeaza o procedura de triangularizare a unei matrice, cunoscuta sub numele de eliminare gaussiana. Procedura este bazata pe
urmatoarea schema, n care calculele se desfasoara pe loc n tabloul A
ElG

1. Pentru k = 1 : n 1
1. Se calculeaz
a matricea ITE Mk (adica multiplicatorii ik ,
i = k + 1 : n), astfel ncat (Mk A)i = 0, pentru i = k + 1 : n
2. Se calculeaz
a A Mk A

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


(k)

(k)

ik = aik /akk ,

i = k + 1 : n,

(2.11)

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


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

(2.12)

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


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


2.2. TRIANGULARIZARE PRIN ELIMINARE GAUSSIANA

u11
u12
21
u22

k1
k2

k+1,1 k+1,2

n1
n2

. . . u1k
. . . u2k
...
. . . ukk
. . . k+1,k
...
. . . nk

u1,k+1 . . . u1n
u2,k+1 . . . u2n

...

uk,k+1 . . . ukn

(k+1)
(k+1)
ak+1,k+1 . . . ak+1,n

...

(k+1)
(k+1)
an,k+1 . . . ann

Dupa pasul k

u11
21

k1

n1

75

u12 . . .
u22 . . .
...
k2 . . .
...
...
n2 . . .

u1k . . .
u2k . . .
...
ukk . . .
...
...
nk . . .

u1n
u2n

ukn

unn

In final

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


executiei algoritmului

Algoritmul 2.1 (G Eliminare gaussian


a) (Se da A Rnn , cu
[k]
submatricele lider principale A , k = 1 : n 1, nesingulare. Se calculeaza matricea superior triunghiulara U si matricele ITE M1 , . . . ,
Mn1 , astfel ncat U = Mn1 Mn2 . . . M1 A. Matricea U se memoreaza
n triunghiul superior al lui A, inclusiv diagonala, iar multiplicatorii
gaussieni ik care definesc transformarile Mk se memoreaza n triunghiul
inferior al matricei A, pe pozitiile elementelor anulate.)
1. Pentru k = 1 : n 1
1. Pentru i = k + 1 : n
1. aik ik = aik /akk
2. Pentru j = k + 1 : n
1. Pentru i = k + 1 : n
1. aij aij ik akj
O forma vectoriala a eliminarii gaussiene se poate deduce imediat din cea de
mai sus, prin nlocuirea buclelor 1.1 si 1.2.1 cu operatiile corespunzatoare: scalare,
respectiv Saxpy (aceasta din urma putand fi dedusa din (2.12), care se mai scrie
Mk aj = aj akj mk ). Avem
Algoritmul 2.2 (G varianta vectorial
a)
1. Pentru k = 1 : n 1
1. A(k + 1 : n, k) mk = A(k + 1 : n, k)/A(k, k)
2. Pentru j = k + 1 : n
1. A(k + 1 : n, j) A(k + 1 : n, j) A(k, j)mk
Comentarii.
NG =

In oricare dintre cele doua forme de mai sus, algoritmul necesita


n1
X
k=1

(n k + 2(n k)2 ) =

n(n 1)
n(n 1)(2n 1)
2n3
+2

,
2
6
3

76

CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUAT


II LINIARE

operatii n virgula mobila (flopi), iar memoria ocupat


a este de MG = n2 locatii
(elemente n virgula mobila).

Algoritmul G poate fi utilizat pentru rezolvarea sistemului liniar Ax = b atunci


cand A are toate submatricele lider principale nesingulare (inclusiv A[n] = A).
Intr-adevar, sistemul Ax = b are aceeasi solutie ca sistemul superior triunghiular
U x = Mn1 Mn2 . . . M1 b,
n care matricea U este furnizata de algoritmul G. Acest sistem triunghiular poate
fi rezolvat cu algoritmul UTRIS.
Semnificatia operatiilor din algoritmul G este imediata; introducerea de zerouri subdiagonale n coloana k nseamna eliminarea necunoscutei xk din ecuatiile
k + 1 : n; buclele 1.2 si 1.2.1 reprezinta scaderea din ecuatiile i = k + 1 : n a ecuatiei
k nmultite, pe rand, cu multiplicatorii ik , cu scopul de a elimina xk din fiecare
ecuatie i.
Totusi, nesingularitatea submatricelor lider principale ale matricei A nu este o
conditie necesara pentru existenta si unicitatea solutiei sistemului (2.2). De aceea,
algoritmul G trebuie modificat astfel ncat sa produca rezultatul dorit si atunci
cand unele submatrice lider principale sunt singulare, dar A este nesingulara.

2.3

Strategii de pivotare

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

2.3.1

Pivotare partial
a

Vom modifica algoritmul G dupa cum urmeaza. La pasul k al procedurii de triangularizare a matricei A Rnn (vezi demonstratia teoremei 2.1), se alege ca pivot
primul element maxim n modul din coloana k. Presupunand ca acest element
(k)
se gaseste n linia ik si este nenul, i.e. aik k 6= 0, interschimbarea liniilor k si ik ,
(k)

obtinuta matriceal prin nmultirea la stanga a lui Ak cu PE Pkik , va muta aik k n


pozitia (k, k), astfel ncat acest element devine noul pivot. Pentru a evita alterarea
structurii matricei obtinute pana la pasul k (superior triunghiulara n primele k 1
coloane), trebuie sa alegem ik k. Vezi figura 2.2.

77

2.3. STRATEGII DE PIVOTARE

u11 . . . u1k

0 ...

(k)

akk

Ak =
0

(k)

aik k

0
(k)
ank

. . . u1n

...

(k)
. . . akn

...

(k)
. . . aik n

...
(k)
. . . ann

u11 . . . u1k

0 ...

(k)

aik k

Pkik Ak =
0

(k)

akk

0
(k)
ank

. . . u1n

...

(k)
. . . aik n

...

(k)
. . . akn

...
(k)
. . . ann
(k)

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

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


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

(2.13)

unde matricea Tk = Mk Pk se numeste transformare elementar


a stabilizat
a.
Procesul global, cunoscut sub numele de eliminare gaussian
a cu pivotare partial
a,
conduce n cele din urma la matricea superior triunghiulara
def

U = An = Mn1 Pn1 Mn2 Pn2 . . . M1 P1 A.

(2.14)

Aceasta egalitate afirma ca orice matrice A este echivalenta la stanga cu o matrice superior triunghiulara, iar matricea de transformare poate fi un produs de
transformari elementare stabilizate.
Algoritmul corespunzator este prezentat n continuare.
Algoritmul 2.3 (GPP Eliminare gaussian
a cu pivotare partial
a)
(Se da A Rnn , nesingulara. Se calculeaza matricea superior triunghiulara U , matricele ITE M1 , . . . , Mn1 si PE P1 , . . . , Pn1 astfel
ncat (2.14) sa fie satisfacuta. Matricea U se memoreaza n triunghiul
superior al lui A, inclusiv diagonala, iar multiplicatorii gaussieni ik
care definesc matricele Mk se memoreaza n triunghiul inferior al lui
A. Intregii ik care definesc PE Pk , sunt memorati ntr-un vector p de
dimensiune n 1, cu elementele p(k) = ik , pentru k = 1 : n 1.)

78

CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUAT


II LINIARE
1. Pentru k = 1 : n 1
1. Se determina cel mai mic ik k : n astfel ncat
|aik k | = maxi=k:n |aik |.
2. p(k) ik
3. Pentru j = k : n % interschimba liniile k si ik
1. akj aik j
4. Pentru i = k + 1 : n
1. aik ik = aik /akk
5. Pentru j = k + 1 : n
1. Pentru i = k + 1 : n
1. aij aij ik akj

Comentarii. Operatiile suplimentare necesare n algoritmul GPP, fata de algoritmul G, apar numai n cautarea pivotului si constau n comparatiile necesare gasirii
maximului din instructiunea 1.1; numarul de comparatii este
n1
X
k=1

(n k + 1) n2 /2 2n3 /3,

deci pivotarea partiala nu este costisitoare (relativ la numarul de operatii aritmetice). Necesarul de memorie este MGPP = n2 .

Un rezultat important referitor la algoritmul GPP este dat de


Teorema 2.2 Dac
a A Rnn este nesingular
a, atunci algoritmul GPP se va
executa complet iar matricea superior triunghiular
a U rezultat
a n final, vezi (2.14),
este nesingular
a.
Demonstratie.
Algoritmul GPP nu se executa complet daca, la un pas k, elementul pivot aik k = 0. Intr-un astfel de caz, deoarece pivotul este maxim n modul
pe coloana (sub diagonala), toate elementele aik , i = k : n, sunt nule, deci matricea
[k]
Ak este singulara (vezi structura matricei Ak , cu Ak superior triunghiulara).
Matricele ITE si PE fiind nesingulare, singularitatea matricei
Ak = Mk1 Pk1 . . . M1 P1 A
implica A singulara; contradictie. Deci, toti pivotii aik k 6= 0 si algoritmul se executa complet. Nesingularitatea matricei U rezulta din nesingularitatea tuturor matricelor din termenul drept din (2.14).

2.3.2

Pivotare complet
a

Proprietati numerice superioare se pot obtine daca, la pasul k al eliminarii gaussiene,


(k)
pivotul maxim n modul este cautat printre elementele aij , i = k : n, j = k : n,
adica n ntregul colt dreapta jos al matricei Ak . Primul element cu modul maxim

79

2.3. STRATEGII DE PIVOTARE

u11 . . . u1k . . . u1jk

.
0 ..
...

(k)
(k)

akk . . . akjk

Ak =
0
...

(k)
(k)

aik k . . . aik jk

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

. . . u1n

...

(k)
. . . akn
Pki Ak Qkj
k
k

(k)
. . . aik n

(k)
. . . ann

u11 . . . u1jk

.
0 ..

(k)

aik jk

=
0

(k)

akjk

0
(k)
anjk

. . . u1k . . . u1n

...
...

(k)
(k)
. . . aik k . . . aik n

...

(k)
(k)
. . . akk . . . akn

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

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

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

(2.15)

iar procesul global de calcul, cunoscut sub numele de eliminare gaussien


a cu pivotare
complet
a, conduce la matricea superior triunghiulara
def

A U = Mn1 Pn1 . . . M1 P1 AQ1 . . . Qn1 .

(2.16)

Algoritmul rezultat este prezentat n continuare.


Algoritmul 2.4 (GPC Eliminare gaussian
a cu pivotare complet
a)
(Se da A Rnn , nesingulara. Se calculeaza matricea superior triunghiulara U , matricele ITE M1 , . . . , Mn1 si PE P1 , Q1 , . . . , Pn1 ,
Qn1 , astfel ncat (2.16) sa fie satisfacuta. Matricea U se memoreaza
n triunghiul superior al lui A, inclusiv diagonala, iar multiplicatorii
gaussieni ik care definesc matricele Mk se memoreaza n triunghiul inferior al matricei A. Intregii ik si jk , definind PE Pk , respectiv Qk , sunt
memorati n vectorii p, respectiv q, de dimensiune n 1, astfel ncat
p(k) = ik si q(k) = jk , pentru k = 1 : n 1.)

80

CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUAT


II LINIARE
1. Pentru k = 1 : n 1
1. Se determina ik k : n si jk k : n astfel ncat
|aik jk | = maxi=k:n,j=k:n |aij |.
2. p(k) ik
3. q(k) jk
4. Pentru j = k : n % interschimba liniile k si ik
1. akj aik j
5. Pentru i = 1 : n % interschimba coloanele k si jk
1. aik aijk
6. Pentru i = k + 1 : n
1. aik ik = aik /akk
7. Pentru j = k + 1 : n
1. Pentru i = k + 1 : n
1. aij aij ik akj

Comentarii. Operatiile suplimentare ce apar n algoritmul GPC, fata de algoritmul G, sunt doar cele necesare c
autarii pivotului, ca si la pivotarea partiala; acum
nsa, numarul de comparatii este
n1
X
k=1

(n k + 1)2 =

n
X

k=2

k 2 n3 /3;

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


comparatii de acelasi ordin de marime cu numarul operatiilor aritmetice; aceasta
poate conduce la cresterea semnificativa a timpului de executie, de aceea pivotarea
completa trebuie folosita doar atunci cand se doreste o mare siguranta n calculul
rezultatului. Vom prezenta ulterior argumentele care conduc la alegerea strategiei
de pivotare. Necesarul de memorie este si aici MGPC = n2 .

Teorema urmatoare corespunde teoremei 2.2, demonstratia fiind asemanatoare.


Teorema 2.3 Dac
a A Rnn este nesingular
a, atunci algoritmul GPC se execut
a
complet, iar matricea superior triunghiular
a rezultat
a U din (2.16) este nesingular
a.
Observatia 2.1 Algoritmii GPP si GPC pot fi modificati cu usurinta pentru a
putea triangulariza si matrice singulare.
In GPP, dupa pasul 1.1, trebuie adaugata urmatoarea conditie: daca ai k = 0,
k
adica aik = 0, i = k : n, atunci pentru acest k, instructiunile 1.2 1.5 nu trebuie
executate. In acest caz matricea U = An poate avea elemente diagonale nule
In GPC, daca ai j = 0, adic
a aij = 0, i = k : n, j = k : n, atunci algoritmul
k k
se termina la pasul k, deoarece matricea U = Ak este deja superior triunghiulara,
mai precis superior trapezoidala, iar rangA = k 1. Desigur, datorita erorilor de
rotunjire inerente, gasirea unui pivot nul este un eveniment destul de rar. Deoarece
este dificil de stabilit, n general, o toleranta de trunchiere astfel ncat |aik jk | <
sa fie considerat pivot nul, algoritmul GPC nu se foloseste pentru determinarea
rangului unei matrice; proceduri mai sigure sunt oferite de algoritmii de factorizare
QR cu pivotarea coloanelor si DVS, vezi capitolele 3 si 5.


2.4. FACTORIZARI
LU

2.4

81

Factoriz
ari LU

In multe situatii, este convenabil a exprima o matrice dat


a ca produs a doua matrice
triunghiulare. Aceasta forma poate fi utilizata pentru a simplifica anumite calcule
implicand matricea respectiva.
Definitia 2.3 Fie A Rnn . Dac
a exist
a o matrice inferior triunghiular
a
L Rnn si o matrice superior triunghiular
a U Rnn astfel nc
at
A = LU

(2.17)

atunci se spune c
a A admite o factorizare (sau descompunere) LU. L si U se numesc
factori triunghiulari ai matricei A.

In general, orice exprimare a matricei A ca produs de dou


a matrice triunghiulare
(cu eventuale permut
ari) se numeste factorizare triunghiular
a.
Daca A Rnn este o matrice care are o factorizare LU, iar D este o matrice
diagonala nesingulara, atunci, D1 fiind de asemenea diagonala, (2.17) poate fi
scris
a n forma
A = LU = LDD1 U = L U ,
(2.18)
unde L = LD este inferior triunghiulara si U = D1 U este superior triunghiulara.
Daca D 6= I, atunci factorizarile (2.17) si (2.18) difera si deci factorizarea LU, daca
exista, nu este unica. De aceea este util a se introduce definitia urmatoare.
Definitia 2.4 Fie A Rnn . Dac
a exist
a matricele L Rnn inferior triunghiunn
lar
a unitate, U R
superior triunghiular
a unitate si D Rnn diagonal
a astfel
nc
at
A = LDU,
atunci expresia de mai sus este numit
a factorizare LDU a matricei A.
Aratam n continuare n ce conditii o factorizare LDU exista si este unica.
Teorema 2.4 O matrice A Rnn are o unic
a factorizare LDU dac
a si numai
dac
a submatricele lider principale A[k] , k = 1 : n 1, sunt nesingulare.
Demonstratie. Demonstram aici doar existenta factorizarii LDU, pentru unicitate
vezi problema 2.5.
In conditiile enuntate, din teorema 2.1, care constituie baza eliminarii gaussiene,
rezulta ca exista M inferior triunghiulara unitate (deci inversabila) astfel ncat
M A = U , cu U superior triunghiulara. Cu notatia L = M 1 , matrice inferior
triunghiulara unitate, avem A = LU . Notand acum
D = diag(u11 , u22 , . . . , unn ),
U = D1 U,
atunci A = LDU , cu L, D, U satisfacand conditiile descompunerii LDU.

82

CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUAT


II LINIARE

Reciproc, se poate demonstra prin reducere la absurd vezi problema 2.6


ca daca factorizarea LDU este unica, atunci submatricele A[k] , k = 1 : n 1, sunt
nesingulare.

Factorizarile LU utilizate n practica numerica curenta asociaza matricea diagonala D din cu una dintre matricele U , L ale factorizarii LDU. Astfel se obtin,
respectiv:
factorizarea Doolittle A = LU , cu L inferior triunghiulara unitate si U superior
triunghiulara,
factorizarea Crout A = LU , cu L inferior triunghiulara si U superior triunghiulara unitate.
Din teorema 2.4 rezulta ca ambele factorizari, Doolittle si Crout, exista si sunt
unice daca si numai daca submatricele lider principale A[k] , k = 1 : n 1, sunt
nesingulare. Vom pastra n continuare aceasta ipoteza, specificand cazurile n care
ea nu este necesara.

2.4.1

Factoriz
ari LU rezultate din eliminarea gaussian
a

Factorizarea Doolittle este calculata chiar de algoritmul G de triangularizare gaussiana ! Este una din surprizele placute ale calculului numeric.
Teorema 2.5 Algoritmul G, aplicat matricei A Rnn , cu det A[k] 6= 0,
k = 1 : n 1, calculeaz
a factorizarea Doolittle A = LU , cu L inferior triunghiular
a
unitate si U superior triunghiular
a. Factorii L (mai putin elementele diagonale) si
U sunt memorati peste A.
Demonstratie.
Algoritmul G produce matricele ITE Mk , k = 1 : n 1, astfel
ncat din (2.10) rezulta A = LU , cu L = (Mn1 . . . M2 M1 )1 si U memorata peste
A. Asadar
1
L = M11 M21 . . . Mn1
.
Dar (vezi propozitia 2.1), Mk1 = In + mk eTk , deci
L = (In + m1 eT1 )(In + m2 eT2 ) . . . (In + mn1 eTn1 ) = In +

n1
X

mk eTk + S,

k=1

unde S este o suma de matrice de forma


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

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

n1
31
X

.
.
.
0
32

L = In +
mk eTk =
.
..
...
k=1

n1,1 n1,2 . . .
1
n1
n2
. . . n,n1

si S = 0. Astfel,

0
0

,
...

0
1


2.4. FACTORIZARI
LU

83

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


algoritmul G.

Vom studia acum legatura ntre algoritmul GPP de eliminare gaussiana cu pivotare partiala si factorizarile LU.
Teorema 2.6 Triangularizarea (2.14) (Mn1 Pn1 . . . M1 P1 A = U ) a matricei
A Rnn , obtinut
a prin algoritmul GPP, este echivalent
a cu factorizarea Doolittle
a matricei A cu liniile permutate, adic
a
P A = LU,

(2.19)

partea subdiagonal
unde P = Pn1 . . . P1 . In
a, coloana k 1 : n 1 a matricei L este o permutare a vectorului Gauss corespunz
ator mk ; mai precis, dac
a
hk = Pn1 . . . Pk+1 mk , atunci L(k + 1 : n, k) = hk (k + 1 : n).
Demonstratie.

Se poate verifica usor echivalenta dintre (2.14) si


n1 . . . M
1 P A = U,
M

(2.20)

n1 = Mn1 si, pentru k < n 1,


unde M
k
M

Pn1 . . . Pk+1 Mk Pk+1 . . . Pn1 =

=
=

I Pn1 . . . Pk+1 mk eTk Pk+1 . . . Pn1 =


I Pn1 . . . Pk+1 mk eTk = I hk eTk .

In relatiile de mai sus am tinut seama ca Mk = I mk eT si Ps1 = Ps ; n plus,


k
k este o
eTk Ps = eTk , pentru s > k, deoarece Ps este o PE de indici s si t s. Deci M
matrice ITE definita de vectorul Gauss hk . Deoarece (2.20) si (2.10) sunt analoage,
1 . . . M
1 este inferior triunghiulara
rezulta, ca n teorema 2.5, ca matricea L = M
1
n1
unitate cu coloanele egale n partea subdiagonala cu vectorii hk , k 1 : n 1. Prin
urmare relatia (2.19) este satisfacuta.

Expresia vectorului hk arata cum trebuie modificat algoritmul GPP pentru a


produce factorizarea LU cu pivotare (2.19); se observa ca asupra fiecarui vector
Gauss mk trebuie aplicate toate permutarile ulterioare Ps , cu s > k. Pentru a
implementa aceasta, modificam instructiunea 1.3 a GPP din Pentru j = k : n
n Pentru j = 1 : n, adica, ceea ce e echivalent cu afirmatia anterioara, fiecare
permutare Pk se aplica si tuturor vectorilor Gauss anteriori mj , cu j 1 : k 1.
Dupa executia algoritmului GPP astfel modificat, matricele triunghiulare L si U
din (2.19) se vor afla n A.
Cazul eliminarii gaussiane cu pivotare completa este acum clar si vom lasa detaliile ca exercitiu pentru cititor (problema 2.8). Modificand algoritmul GPC n
acelasi mod ca pe GPP, se va obtine pe loc n matricea A o factorizare LU a unei
matrice obtinute din A prin permutari de linii si coloane:
P AQ = LU,

(2.21)

unde P , L si U au aceeasi semnificatie (dar nu aceleasi elemente) ca n teorema


2.6, iar Q = Q1 . . . Qn1 este construita din matricele de permutare elementara din
relatia (2.16).

84

CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUAT


II LINIARE
elemente calculate
?

0
akk . . . akj . . .
..
.
aik
..
.

lkk
..
.
lik
..
.

i


1 . . . ukj . . .

elemente calculate

1
k

Fig. 2.4: Stadiu intermediar al factorizarii Crout.

2.4.2

Factoriz
ari LU compacte

Factorizarea Crout poate fi calculata luand n relatia (2.18) expresia LU ca fiind factorizarea Doolittle si D = diag(u11 , u12 , . . . , unn ). Atunci, L U este descompunerea
Crout a matricei A.
Totusi, exista si alte posibilitati de a organiza calculele, care de obicei se numesc
scheme de factorizare compact
a. Vom deduce o astfel de factorizare Crout pe baza
ideii de a utiliza direct identitatea A = LU , calculand succesiv cate o coloana din
L si cate o linie din U . Procedura poate fi initializata considerand prima coloana a
identitatii A = LU , i.e.
Ae1 = LU e1 = Le1 ,
de unde
li1 = ai1 , i = 1 : n,

(2.22)

respectiv prima linie a aceleiasi identitati,


eT1 A = eT1 LU = l11 eT1 U,
adica
a1j = l11 u1j , j = 2 : n.
Deoarece l11 = a11 = A[1] 6= 0, din relatia anterioara rezulta
u1j = a1j / l11 , j = 2 : n.

(2.23)

Presupunem acum ca primele k 1 coloane din L si primele k 1 linii din U


sunt cunoscute (calculate); vezi figura 2.4. Din identitatea A = LU obtinem
aik =

k1
X

lis usk + lik , i = k : n,

s=1

n care singura necunoscuta este scalarul lik . Deci,


lik = aik

k1
X
s=1

lis usk , i = k : n.

(2.24)


2.4. FACTORIZARI
LU

85

De asemenea,
akj =

k1
X

lks usj + lkk ukj , j = k + 1 : n,

s=1

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

Astfel, procedura initiata prin (2.22) si (2.23) poate fi continuata prin (2.24) si
(2.25); daca submatricele A[k] , k = 1 : n 1, sunt nesingulare, ceea ce garanteaza
ca mpartirea din (2.25) poate fi executata, procedura va calcula complet factorii
L si U . Observand ca (2.22) si (2.23) sunt cazuri particulare ale (2.24), respectiv
(2.25), putem include primul pas n bucla generala, rezultand algoritmul urmator.
Algoritmul 2.5 (CROUT Factorizare Crout) (Se da A Rnn ,
cu submatricele lider principale A[k] , k = 1 : n 1, nesingulare. Se
calculeaza factorizarea Crout A = LU , cu L inferior triunghiulara si U
superior triunghiulara unitate. Matricele L si U sunt memorate peste
elementele corespunzatoare din A, mai putin elementele diagonale ale
lui U , egale cu 1.)
1. Pentru k = 1 : n
1. Pentru i = k : n
P
1. aik lik = aik k1
s=1 lis usk
2. Pentru j = k + 1 : n

P
1. akj ukj = akj k1
l
u
/ lkk
s=1 ks sj

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


ca n algoritmii G, GPP sau GPC, iar memoria ocupata este MCROUT n2 .
Ca si algoritmul G de eliminare gaussiana, algoritmul CROUT esueaza pe
parcurs daca se obtine un lkk = 0 (ceea ce este echivalent cu A[k] singulara); mai
mult, valori apropiate de zero ale unui lkk conduc la valori absolute foarte mari ale
elementelor matricei U calculate n instructiunea 1.2.1 precum si la erori numerice
inadmisibile n rezultat.
Pentru a preveni aceasta situatie se introduce pivotarea partiala (pe linii). Spre
deosebire de algoritmul G unde, la pasul k, permutarea liniilor se efectua naintea
celorlaltor operatii, aici permutarea poate avea loc doar dupa calcularea elementelor
lik , cu i k : n, pentru a putea aduce cea mai convenabila valoare n pozitia (k, k).
(Sa observam ca pivotarea completa este acum imposibila, deoarece ar implica anticiparea calculelor pentru toata matricea.) Aceasta revine la nmultirea la stanga
a matricei A cu o PE Pkik , cu ik k, la fiecare pas k si, global, la o factorizare
P A = LU , cu P = Pn1 . . . P1 . Algoritmul corespunzator este urmatorul.
Algoritmul 2.6 (CROUTP Factorizare Crout cu pivotare partial
a) (Se da A Rnn nesingulara. Se calculeaza factorizarea Crout

86

CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUAT


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

Pk1
1. akj ukj = akj s=1 lks usj / lkk

Comentarii.
Desigur, numarul comparatiilor efectuate n instructiunea 1.2 este
de ordinul O(n2 ), adica neglijabil fata de cel al operatiilor aritmetice.

2.4.3

Factoriz
ari LU prin eliminare gaussian
a la nivel de bloc

Vom elabora n continuare un algoritm pentru calculul factorizarii Doolittle a unei


matrice A Rnn , folosind cat mai mult operatii din setul BLAS nivel 3, anume
GEMM si TRSM. Abordarea problemei se face n mod natural prin partitionarea matricelor n blocuri. Vom prezenta ntai varianta fara pivotare, deci presupunem ca
submatricele A[k] sunt nesingulare, pentru k 1 : n 1.
Partitionam matricea A astfel


A11 A12
}r
A =
A21 A22
} nr ,
(2.26)
|{z} |{z}
r

nr

alegerea lui r urmand a fi precizata ulterior.


In ideea calculului la nivel de bloc al factorizarii LU, sa ncepem prin a determina
L11 , L21 , U11 , U12 , astfel ncat sa fie satisfacuta egalitatea:

 
 
 

A11 A12
L11
0
Ir 0
U11 U12
=

.
(2.27)
A21 A22
L21 Inr
0 B
0
Inr
Din aceasta egalitate, privita pe rand pentru cele patru blocuri componente, se pot
deduce usor blocurile dorite din L si U :
1. A11 = L11 U11 , deci L11 si U11 provin din factorizarea LU la nivel de element
a matricei A11 .
1
2. A21 = L21 U11 L21 = A21 U11
. Deci, U11 fiind cunoscut de la pasul
anterior, L21 poate fi calculat prin rezolvarea unui sistem superior triunghiular
cu parte dreapta multipla.


2.4. FACTORIZARI
LU

87

3. A12 = L11 U12 U12 = L1


ia unui sistem inferior
11 A12 . Deci, U12 este solut
triunghiular cu parte dreapta multipla.
4. A22 = L21 U12 + B B = A22 L21 U12 ; blocul restant B depinde doar
de matrice cunoscute sau deja calculate.
Deci, n ordinea de mai sus, se pot calcula toate necunoscutele din (2.27).
Procedand mai departe n mod similar cu matricea B, se poate calcula o factorizare LU a acesteia, adica
B = L22 U22 .
(2.28)
In acest caz, egalitatea (2.27) devine o factorizare LU a matricei A, cu




L11
0
U11 U12
L=
;
U=
.
(2.29)
L21 L22
0
U22
Pe scurt, aplicand n mod repetat pasii 1-4 de mai sus, dimensiunea problemei
se reduce de la n la n r, n 2r etc. La etapa m (unde n = mr), problema consta
n factorizarea LU a unui bloc r r, factorizarea ntregii matrice A fiind terminata.
Algoritmul de factorizare LU va consta deci dintr-o bucla continand pasii 1-4. In
figura 2.5 sunt reprezentate blocurile de interes pe parcursul unei iteratii.
Algoritmul 2.7 (Gbl Eliminare gaussian
a la nivel de bloc) (Se
dau A Rnn , cu A[k] , k = 1 : n 1, nesingulare, si r N astfel ncat
n = mr. Se calculeaza factorizarea Doolittle A = LU , prin operatii la
nivel de bloc.)
1. Pentru k = 1 : m
1. s (k 1)r + 1
2. f kr
3. Se calculeaza factorizarea LU
A(s : f, s : f ) = L(s : f, s : f ) U (s : f, s : f )
4. Se rezolva sistemul superior triunghiular
Z U (s : f, s : f ) = A(f + 1 : n, s : f )
5. L(f + 1 : n, s : f ) Z
6. Se rezolva sistemul inferior triunghiular
L(s : f, s : f ) Z = A(s : f, f + 1 : n)
7. U (s : f, f + 1 : n) Z
8. A(f + 1 : n, f + 1 : n) A(f + 1 : n, f + 1 : n)
L(f + 1 : n, s : f )U (s : f, f + 1 : n)
Comentarii. Se observa ca doar n instructiunea 1.3, factorizarea LU a blocului
A(s : f, s : f ), de dimensiune r r, trebuie explicitata cu operatii la nivel de
element; n rest, n instructiunile 1.4 si 1.6 se foloseste TRSM, iar n 1.8 GEMM. Din
totalul de 2n3 /3 flopi ai algoritmului 2.7 (la fel ca pentru algoritmul G), doar
2mr3 /3 = 2nr2 /3 apar n factorizarile LU mici din instructiunea 1.3. In acest
caz, ponderea operatiilor de nivel 3 este
P 3LU (n, r) =

2n3 /3 2nr2 /3
r2
= 1 2.
3
2n /3
n

(2.30)

88

CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUAT


II LINIARE
deja factorizat
B
B

s
BN

?
s

U

6

L
f

curent

HH
Y
H de factorizat
H
n
curent
Fig. 2.5: Structura blocurilor ntr-un pas al factorizarii Doolittle la nivel de bloc

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


operatiilor de nivel 3 este apropiata de 1, deci putem estima o buna comportare
a algoritmului pe un calculator cu memorie ierarhica. Totusi, alegerea dimensiunii
blocurilor r se face n urma unui compromis: pe de o parte, din (2.30) e de dorit
ca r sa fie cat mai mic, pe de alta, pentru ca rutinele din BLAS-3 sa fie eficiente
trebuie ca r sa fie suficient de mare; valoarea ideala se determina fie din estimari
teoretice, fie, mai ales, prin ncercari experimentale.

Introducerea pivotarii se face relativ simplu, tinandu-se seama ca n (2.27) apare


n plus o matrice de permutare P1 :
 
 
 


A11 A12
L11
0
Ir 0
U11 U12
P1
=

.
(2.31)
A21 A22
L21 Inr
0 B
0
Inr
Reducerea calculului factorizarii LU a matricei A la un calcul analog pentru
matricea de dimensiuni mai mici B se face n felul urmator:
1. Se calculeaza, de exemplu prin eliminare gaussiana, factorizarea LU (rezultata
din (2.31), pentru cele doua blocuri din stanga):

 

A11
L11
P1
=
U11 .
(2.32)
A21
L21
(Se aplica algoritmul GPP, chiar daca matricea n cauza este n r; cautarea
pivotului se face pe toata portiunea subdiagonala a unei coloane. Vezi problema 2.9.)
2. Se aplica permutarea restului matricei A (cele doua blocuri din dreapta),
obtinandu-se




A12
A12
= P1
.
A22
A22


2.4. FACTORIZARI
LU

89

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


11 A12 , prin rezolvarea unui sistem
inferior triunghiular cu parte dreapta multipla (se apeleaza TRSM).
4. Mai ramane B = A22 L21 U12 , termenii din dreapta fiind toti deja calculati;
deci B se poate obtine n urma unui apel la GEMM.
Lasam cititorului detalierea ideii algoritmice de mai sus, ca si calculul ponderii
operatiilor de nivel 3; desi acum vor fi mai multe operatii la nivel de element fata de
cazul factorizarii fara pivotare, totusi numarul lor ramane suficient de mic pentru
a putea aprecia algoritmul ca eficient.

2.4.4

Factoriz
ari LU compacte la nivel de bloc

Vom prezenta n continuare o varianta la nivel de bloc a metodei Crout pentru


factorizarea LU; ne vom ocupa doar de cazul n care nu se efectueaza pivotare.
Rationamentul este absolut identic cu cel la nivel de element. La nivel de bloc,
egalitatea A = LU se poate scrie

A11 A12 . . . A1m


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

..
.. . .
.. = ..
.. . .
.. ..
.. . .
.. ,
.

.
.
.
.
.
.
.
.
.
.
.
Am1 Am2 . . . Amm

Lm1 Lm2 . . . Lmm

. . . Umm
(2.33)

Pmin(i,j)
ceea ce, pentru blocul cu indici i, j, revine la Aij = t=1
Lit Utj .
Detaliind aceasta relatie, distingem urmatoarele cazuri:
i = j = k Akk =

k
X

i > j = k Aik =

k
X

k = i < j Akj =

t=1

t=1

k
X
t=1

Lkt Utk Lkk Ukk =


Lit Utk Lik =
Lkt Utj Ukj =

Akk

Aik
L1
kk

k1
X

k1
X

Lkt Utk

t=1

Lit Utk

t=1

Akj

k1
X
t=1

(2.34)

1
Ukk
;

(2.35)

(2.36)

Lkt Utj

Ordinea n care se aplica formulele de mai sus este aceeasi ca n algoritmul la


nivel de element: se calculeaza nt
ai prima bloc coloan
a din L si prima bloc linie din
U ; diferenta este ca acum trebuie calculate doua blocuri diagonale, L11 si U11 (n
algoritmul la nivel de element, u11 = 1); aceasta se face printr-o factorizare Crout
LU; se continua apoi cu a doua bloc coloana din L si a doua bloc linie din U etc.
Procesul de calcul va decurge conform urmatoarei scheme:
1. Pentru k = 1 : m
1. Se calculeaza Lkk si Ukk factorizand LU termenul drept din (2.34)
2. Pentru i = k + 1 : m
1. Se calculeaza Lik ca n (2.35)
3. Pentru j = k + 1 : m
1. Se calculeaza Ukj ca n (2.36)

90

CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUAT


II LINIARE

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

Lit Utk L(si : fi , 1 : s 1) U (1 : s 1, s : f ).

Mai mult, putem scrie compact toate relatiile de tip (2.35), pentru un k fixat, dar
cu i = k + 1 : m. Mai exact, bucla 1.2 din schema de mai sus se transforma ntr-o
1
singura atribuire (profitand de faptul ca Ukk
nu depinde de i), anume:
L(f +1 : n, s : f ) [A(f +1 : n, s : f ) L(f +1 : n, 1 : s1) U (1 : s1, s : f )]
U (s : f, s : f )1
In fine, combinand forma de mai sus cu termenul drept din (2.34), obtinem instructiunea 1.3 din algoritmul detaliat n continuare (calculele se pot efectua pe loc n
matricea A, dar, pentru claritate, nu procedam astfel).
Algoritmul 2.8 (CROUTbl Factorizare Crout la nivel de bloc)
(Se dau A Rnn si r N astfel ncat n = mr. Se calculeaza factorizarea A = LU , utilizand operatii la nivel de bloc.)
1. Pentru k = 1 : m
1. s (k 1)r + 1
2. f kr
3. A(s : n, s : f ) A(s : n, s : f ) L(s : n, 1 : s1)U (1 : s1, s : f )
4. Se calculeaza factorizarea LU Crout
A(s : f, s : f ) = L(s : f, s : f ) U (s : f, s : f )
5. Se rezolva sistemul superior triunghiular
Z U (s : f, s : f ) = A(f + 1 : n, s : f )
6. L(f + 1 : n, s : f ) Z (o bloc coloana din L)
7. A(s : f, f + 1 : n) A(s : f, f + 1 : n)
L(s : f, 1 : s 1) U (1 : s 1, f + 1 : n)
8. Se rezolva sistemul inferior triunghiular
L(s : f, s : f ) Z = A(s : f, f + 1 : n)
9. U (s : f, f + 1 : n) Z (o bloc linie din U )
Comentarii.
Desigur, nmultirile matriceale din instructiunile 1.3 si 1.7 se vor
executa prin apeluri la GEMM, iar rezolvarile de sisteme triunghiulare din 1.5 si 1.8,
prin apeluri la TRSM. Ponderea operatiilor de nivel 3 este aceeasi ca pentru algoritmul
2.7, diferenta fiind ca aici se executa mai multe apeluri la GEMM, ceea ce ar putea
mari timpul de executie, dar probabil numai ntr-o masura nesemnificativa.
Algoritmul de mai sus poate calcula si o factorizare LU Doolittle daca n instructiunea 1.4 se utilizeaza algoritmul G n loc de CROUT.

91

2.5. REZOLVAREA SISTEMELOR LINIARE

2.5

Rezolvarea sistemelor liniare

Teoremele 2.2 si 2.3 arata ca algoritmii GPP si GPC constituie un bun instrument
pentru rezolvarea sistemului liniar nesingular Ax = b.
Sa consideram urmatoarea sintaxa neformala pentru utilizarea algoritmilor GPP
si respectiv GPC:
[M, U, p] = GPP(A)
[M, U, p, q] = GPC(A)
unde M denota multiplicatorii gaussieni ik , k = 1 : n 1, i = k + 1 : n, U
este matricea superior triunghiulara produsa de algoritm, iar p si q sunt vectori de
ntregi definind permutarile de linii si, respectiv, coloane. Desi matricele M si U se
memoreaza peste A (asa cum am si procedat n GPP si GPC), vom utiliza sintaxa
de mai sus pentru claritate.
Rezolvarea sistemelor utiliz
and GPP. Consideram sistemul liniar Ax = b,
cu A nesingulara si utilizam GPP pentru triangularizarea matricei A conform
relatiei (2.14). Doarece toate matricele Mk si Pk sunt nesingulare, sistemul Ax = b
este echivalent (are aceeasi solutie) cu sistemul
Mn1 Pn1 . . . M1 P1 Ax = Mn1 Pn1 . . . M1 P1 b.

(2.37)

In consecinta, (2.37) se scrie n forma


U x = d,
unde matricea superior triunghiulara U se afla n A, iar vectorul
d = Mn1 Pn1 . . . M1 P1 b,

(2.38)

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


b

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

In definitiv, solutia x a sistemului Ax = b se obtine rezolvand (pe loc n b) sistemul superior triunghiular U x = b. Evident, n acest scop se utilizeaza algoritmul
UTRIS, cu sintaxa
x = UTRIS(U, b).
Pentru detalierea schemei facem apel la propozitiile 2.1 si 2.2. Se obtine algoritmul de mai jos.
Algoritmul 2.9 (S GPP Calculul solutiei unui sistem liniar utiliz
and GPP) (Se dau A Rnn nesingulara si b Rn . Se calculeaza
solutia x Rn a sistemului liniar Ax = b, utilizand procedura de eliminare gaussiana cu pivotare partiala.)

92

CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUAT


II LINIARE
1. [M, U, p] = GPP(A)
2. Pentru k = 1 : n 1
1. bk bp(k)
2. Pentru i = k + 1 : n
1. bi bi ik bk
3. x = UTRIS(U, b)

Comentarii.
NS

GPP

Numarul de operatii este:

= NGPP +

n1
X
k=1

2(n k) + NUTRIS

2n3
2n3
+ n2 + n2
NGPP ,
3
3

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

necesara este MS GPP n2 .


Rezolvarea sistemelor utiliz
and GPC. Alternativ, dar mai costisitor, putem
utiliza GPC, vezi (2.16); n acest caz, sistemul Ax = b este echivalent cu
Mn1 Pn1 . . . M1 P1 AQ1 . . . Qn1 Qn1 . . . Q1 x = Mn1 Pn1 . . . M1 P1 b.

(2.39)

Notand
Qn1 . . . Q1 x = y,

(2.40)

din (2.16) rezulta ca vectorul y poate fi calculat prin rezolvarea sistemului superior
triunghiular
U y = d,
(2.41)
unde d este vectorul dat de (2.38). In final, din (2.40), si stiind ca Q1
= Qk ,
k
obtinem
x = Q1 Q2 . . . Qn1 y.
(2.42)
Din relatiile (2.38)(2.42), rezulta algoritmul urmator.
Algoritmul 2.10 (S GPC Calculul solutiei unui sistem liniar
utiliz
and GPC) (Se dau A Rnn nesingulara si b Rn . Se calculeaza solutia x Rn a sistemului liniar Ax = b, utilizand procedura
de eliminare gaussiana cu pivotare completa.)
1. [M, U, p, q] = GPC(A)
2. Pentru k = 1 : n 1
1. bk bp(k)
2. Pentru i = k + 1 : n
1. bi bi ik bk
3. x = UTRIS(U, b)
4. Pentru k = n 1 : 1 : 1
1. xk xq(k)
Comentarii.
Complexitatea acestui algoritm este asimptotic aceeasi cu cea a
algoritmului GPC.

2.6. CALCULUL INVERSEI SI AL DETERMINANTULUI

93

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


este binecunoscuta metoda de calcul manual prin reducere si substitutie. Pivotarea
pe linii corespunde unei reordon
ari a ecuatiilor n (2.1), iar pivotarea pe coloane
corespunde unei reordonari a componentelor necunoscutei x. Subliniem ca aceasta
metoda este cea mai eficienta procedura de rezolvare a sistemelor de ecuatii liniare
nesingulare de forma generala. Stabilitatea numerica a acestor algoritmi va fi discutata ulterior.

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


LU a matricei A. Presupunand, pentru simplitate, ca nu a fost utilizata pivotarea,
factorizarea este A = LU . Avem LU x = b, sau Ly = b, unde am notat U x = y.
Prin urmare, solutia sistemului poate fi gasita dupa urmatoarea schema:
Ax = b

1. A = LU (calculeaza factorizarea LU)


2. Se rezolva sistemul inferior triunghiular Ly = b
3. Se rezolva sistemul superior triunghiular U x = y

Efortul de calcul este acelasi ca n eliminarea gaussian


a si partea sa cea mai
importanta se consuma n procesul de factorizare.
Daca sistemul liniar are parte dreapta multipla, adica este de forma AX = B
cu B Rnp , p > 1, atunci X va rezulta de aceeasi dimensiune; sistemul AX = B
poate fi redus la p sisteme cu parte dreapta simpla, Axj = bj , j = 1 : p, unde
vectorii bj si xj sunt coloanele j din B, respectiv X. Utilizarea naiva de p ori a
algoritmului S GPP ar conduce la un efort de calcul de pn3 /3 flopi, inacceptabil
de mare. Dar, deoarece A este aceeasi pentru toate cele p sisteme, factorizarea LU
sau, n general, triangularizarea matricei A, se efectueaza o singura data, ramanand
apoi de rezolvat doar sisteme triunghiulare. Ideea algoritmului, n cazul factorizarii
LU, este urmatoarea:
AX = B

1. A = LU (calculeaza factorizarea LU)


2. Pentru j = 1 : p
1. Se rezolva sistemul inferior triunghiular Ly = bj
2. Se rezolva sistemul superior triunghiular U xj = y

Numarul de operatii va de numai aproximativ 2n3 /3 + 2pn2 flopi, mentinanduse complexitatea O(n3 ). Desigur, n practica este recomandat a se folosi pivotarea,
efectuand o factorizare LU de forma P A = LU sau apeland algoritmul GPP.
Modificarea corespunzatoare a schemelor de calcul prezentate mai sus este propusa
cititorului (vezi problema 2.15).

2.6

Calculul inversei si al determinantului


unei matrice

Grupam n aceasta sectiune doua probleme care au n comun metoda de rezolvare


utilizata eliminarea gaussiana, precum si recomandarea de a calcula inversa sau
determinantul unei matrice doar atunci cand acestea se doresc explicit. Repetam

94

CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUAT


II LINIARE

U 1

U
A

Fig. 2.6: Memorarea datelor n inversarea matriceala

ca, de exemplu, inversa nu se calculeaza atunci cand se rezolva sisteme liniare, dupa
cum nu se calculeaza determinantul pentru a testa nesingularitatea unei matrice.

2.6.1

Calculul inversei unei matrice

Daca A Rnn este nesingulara, atunci procedura de eliminare gaussiana cu pivotare partiala se termina cu succes si produce o matrice superior triunghiulara
nesingulara U astfel ncat
Mn1 Pn1 . . . M1 P1 A = U,

(2.43)

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

1. [M, U, p] = GPP(A)
2. X = UINV(U )
3. Pentru k = n 1 : 1 : 1
1. X XMk
2. X XPk

Ne amintim ca n algoritmul GPP, matricea U si multiplicatorii gaussieni ik ,


k = 1 : n 1, i = k + 1 : n, notati global cu M n schema de mai sus, se memoreaza
peste matricea A ca n partea stanga a figurii 2.6. In algoritmul UINV, am vazut
ca U 1 se poate memora peste U , astfel ca, dupa instructiunea 2 a schemei de mai
sus, datele sunt memorate ca n partea dreapta a figurii 2.6.
Pornind de la schema precedenta, vom prezenta un algoritm care calculeaza
inversa matricei A, folosind minimum de memorie. Pentru aceasta, observam c
a
primele doua instructiuni necesit
a memorie aditionala doar pentru vectorul p
Rn1 , n care se memoreaza permutarile de linii din GPP. Analizam acum bucla
Pentru din instructiunea 3. Prima atribuire, X XMk , poate fi detaliata utilizand
o partitionare pe linii a lui X:
xTi Mk

=
=

(2.44)
xTi (In mk eTk ) = xTi (xTi mk )eTk
T
[xi1 xi2 . . . xi,k1 xik xi mk xi,k+1 . . . xin ], i = 1 : n.

Se poate observa ca sunt modificate numai elementele de pe coloana k a lui X.

95

2.6. CALCULUL INVERSEI SI AL DETERMINANTULUI


(1)
1 u1k
U
..
.
(1)
ukk
k+1,k

M
..
.
nk

...
...
...

X XMk Pk
-

...
...

...
1
U
..
...
.
...

...

M
..
.
...
k

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

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


(ik k).
T
inand cont de toate aceste consideratii si de ordinea inversa de calcul a coloanelor, pasul k al buclei Pentru din schema de mai sus, adica X XMk Pk , poate fi
1 si M
reprezinta elementele din U 1 si, respectiv,
descris ca n figura 2.7, unde U
multiplicatorii gaussieni care nu au fost utilizati (si nici modificati) n executia buclei
pan
a la pasul curent; elementele modificate (parte a lui X) sunt notate prin .
Astfel, singura informatie care trebuie salvata consta n multiplicatorii gaussieni
din coloana curenta, ik , i = k + 1 : n, necesari pentru calculul din (2.45).
In acest fel, inversarea matricei A poate fi executata utilizand doar doi vectori suplimentari de lungime (n 1), anume p pentru memorarea permutarilor si,
sa zicem, g pentru salvarea temporara a multiplicatorilor gaussieni de pe coloana
curenta.
Algoritmul care implementeaz
a consideratiile de mai sus este:
Algoritmul 2.11 (INV GPP Calculul inversei unei matrice) (Se
da A Rnn nesingulara. Se calculeaza matricea A1 peste A. Algoritmul utilizeaza algoritmii GPP pentru triangularizarea gaussiana si
UINV pentru inversarea unei matrice superior triunghiulare.)
1. [M, U, p] = GPP(A)
2. A X = UINV(U )
3. Pentru k = n 1 : 1 : 1
1. Pentru i = k + 1 : n
1. gi ik
2. Pentru i = 1 : k P
n
1. aik aik t=k+1 ait gt
3. Pentru i = k P
+1:n
n
1. aik t=k+1 ait gt
4. Dac
a p(k) 6= k atunci
1. Pentru i = 1 : n
1. aik ai,p(k)

% M si U sunt memorate n A
% doar triunghiul sup. e modificat

% salveaza multiplicatorii
% relatia (2.45), primele k linii
% relatia (2.45), celelalte linii
% interschimba coloanele k si p(k)

96

CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUAT


II LINIARE

Comentarii.
NINV

Numarul de operatii n virgula mobila este

GPP

= NGPP + NUINV +

n1
X
k=1

2n(n k)

2n3
n3
+
+ n3 = 2n3
3
3

si memoria utilizata MINV GPP = n2 .


Este remarcabil faptul ca inversarea matriceala nu este mai complexa (ca numar
de operatii) decat nmultirea de matrice.

O acuratete mai buna a matricei inverse calculate se poate obtine utilizand


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

1. Se rezolva sistemul Ax = b
2. cT x

% rezulta x = A1 b

sensibil mai eficienta decat varianta cu inversarea matricei A

Este clar ca inversa matricei A se poate calcula si recurgand explicit la factorizarea LU a matricei. Presupunand ca A = LU , avem
A1 = U 1 L1 ,
iar o procedura de inversare ar putea consta n:
1.
2.
3.
3.

A = LU (se calculeaza factorizarea LU)


U X = U 1
L Y = L1
A1 XY

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

97

2.7. CONDIT
IONAREA SISTEMELOR LINIARE

2.6.2

Calculul determinantului

Algoritmii GPP si GPC sunt utili si n calculul determinantului unei matrice.


Amintim ca interschimbarea a doua linii sau coloane ale unei matrice schimba
semnul determinantului acesteia, sau, echivalent, daca P este o permutare elementara, atunci det(P ) = 1. In plus, matricele ITE Mk , k = 1 : n 1, din (2.43), au
elementele diagonale egale cu 1 si deci det(Mk ) = 1. Asadar
det(A) = (1)s det(U ) = (1)s

n
Y

uii ,

i=1

unde s n 1 este numarul de PE proprii (adica Pk 6= In ) n (2.43).


Algoritmul corespunzator celor de mai sus este:
Algoritmul 2.12 (DET GPP Calculul determinantului) (Se da
A Rnn . Se calculeaza detA, utilizand algoritmul GPP.)
1. [M, U, p] = GPP(A)
2. det 1
3. Pentru k = 1 : n
1. det det ukk
4. Pentru k = 1 : n 1
1. Dac
a p(k) 6= k atunci
1. det det
Principalul efort de calcul n algoritmul de mai sus este efectuat n executia
algoritmului GPP. Desigur, algoritmul GPC poate fi utilizat n loc de GPP,
obtinandu-se, de regula, o acuratete superioara a rezultatului. Scrierea algoritmului
corespunzator este propusa cititorului.
Daca este disponibil
a o factorizare
Q
Qn LU a matricei A, atunci det(A) = det(LU ) =
n
= det(L) det(U ) = ( i=1 lii ) ( i=1 uii ), ceea ce permite evaluarea imediata a
determinantului.

2.7

Conditionarea sistemelor liniare

Dupa cum am vazut n capitolul 0, conditionarea unei probleme de calcul, n cazul


nostru rezolvarea sistemului liniar determinat nesingular Ax = b, este cruciala n
aprecierea acuratetii rezultatelor obtinute. Sa consideram o perturbatie a datelor
de intrare ale sistemului
b),
(A, b) (A + A, b + b) (A,
care va avea ca efect o perturbatie a solutiei x
x x + x x
,

(2.45)

(A + A)(x + x) = b + b.

(2.46)

astfel ncat

98

CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUAT


II LINIARE

Consideram doar perturbatii mici, respectand kAk kAk, kbk kbk (unde
k k este o norma consistenta oarecare), i.e. efectuam o analiza a sensibilitatii locale
a solutiei n raport cu variatia datelor.
Teorema 2.7 Presupunem c
a x 6= 0. Eroarea relativ
a a solutiei (2.45) a sistemului
perturbat (2.46) este m
arginit
a conform relatiei


kxk
kAk kbk
(A)
+
,
(2.47)
kxk
kAk
kbk
unde
(A) = kA1 k kAk

(2.48)

se numeste numar de conditionare (la inversare) al matricei A.


Cu alte cuvinte, erorile relative kAk / kAk si kbk / kbk ale datelor de intrare
pot fi amplificate de (A) ori n solutie, presupunand ca toate calculele se efectueaza
exact (deci indiferent de algoritmul folosit).
Demonstratie. Deoarece Ax = b, din (2.46) rezulta
A x + A x + A x = b.
Neglijand produsul A x (deoarece perturbatiile sunt mici), obtinem
x A1 A x + A1 b.
Utilizand o familie consistenta de norme matriceale k k, din relatia de mai sus
rezulta
kxk kA1 k kAk kxk + kA1 k kbk.
Prin urmare, daca x 6= 0, o limita superioara a erorii relative este data de
kxk
kxk

kAk
kbk
kA1 k kAk
+ kA1 k kAk

kAk
kAk kxk


kAk kbk
kA1 k kAk
+
,
kAk
kbk

ceea ce demonstreaza (2.47). (Am tinut seama ca kbk = kAxk kAk kxk.)

Asadar numarul de conditionare (A) definit n (2.48) furnizeaza o masura a


conditionarii problemei rezolvarii unui sistem liniar Ax = b. Un (A) mic corespunde unei bune conditionari, adica unei sensibilitati reduse a solutiei n raport cu
perturbatiile datelor. Vom prezenta n sectiunea urmatoare un rezultat care permite
aprecierea mai precisa a conditionarii n functie de valoarea (A). Se observa ca
doar matricea A determina conditionarea unui sistem, termenul liber b neavand
nici un rol; de aceea vorbim de conditionarea matricei A n loc de conditionarea
sistemului. Vom atasa un indice notatiei (A) atunci cand vom preciza norma
folosita n (2.48); de exemplu, (A) = kA1 k kAk . Intre norme echivalente,
alegerea uneia anume pentru evaluarea lui (A) nu este relevanta, ordinul de marime
al rezultatului fiind acelasi; de obicei, dintre normele p se alege (A) pentru

2.7. CONDIT
IONAREA SISTEMELOR LINIARE

99

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


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

0.1
1 1 . . . 1

0.1
1 . . . 1

D=
,
T
=

.. .
..
..

.
.
.
0.1
1

Fiind diagonala, este evident ca D este bine conditionata; se verifica imediat ca


(D) = 1, n schimb det(D) = 10n , adica, daca de exemplu n = 20, o valoare foarte mica. Pentru matricea triunghiulara T situatia este contrara: desi
det(A) = 1, matricea este rau conditionata pentru ca (T ) = n2n1 (U = T 1
este inferior triunghiulara unitate cu elementele uij = 2ji1 , pentru j > i, deci
kT 1 k = 1 + 2 + 22 + . . . + 2n2 = 2n1 1. Pe de alta parte, kT k = n).
Un mod uzual dar naiv de verificare a posteriori a calitatii solutiei calculate
x
a unui sistem liniar Ax = b consta n a calcula norma reziduului r = b A
x, i.e.
krk = kb A
xk
si de a conchide ca daca krk este mic, atunci x
este o solutie precisa. De fapt,
aceasta concluzie, corecta pentru matricele bine conditionate, poate sa nu fie (si
de cele mai multe ori nu este) adev
arat
a daca matricea A este rau conditionata.
Intr-adevar, solutia exacta este x = A1 b, astfel ca avem
xx
= A1 b A1 (b r) = A1 r,
deci eroarea relativa este marginita conform relatiei
kx x
k
kA1 rk
kA1 k krk
krk
krk
=

(A)
(A)
,
kxk
kA1 bk
kA1 rk
kAk kA1 bk
kbk
pentru orice norma consistenta k k. Astfel, testul r este mic e valid doar daca
matricea A este bine conditionat
a.
Exemplul 2.2 Matricele Hilbert Hn Rnn , definite prin hij = 1/(i + j 1) sunt
rau conditionate, (Hn ) crescand foarte repede cu n. De exemplu, (H3 ) 748.
Daca luam

8.27
11.646 . . .
0.0128
x = 4.60 , b = 6.475 . . . , d = 0.0714 , x
= x + d,
3.23
4.552 . . .
0.0689

atunci x este solutia sistemului H3 x = b (n acest exemplu am ales x si am calculat


b). Pentru solutia aproximativa x
avem
kb H3 x
k
1.7 105 ,
kbk

kx x
k
8.6 103 .
kxk

100

CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUAT


II LINIARE

Deci, desi reziduul kb H3 x


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

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

kA1 f k
kyk

.
kf k
kdk

Problema este de a gasi un vector d care conduce la un y suficient de mare n norma.


Consideram cazul simplu n care A este inferior triunghiulara. Deoarece sistemul
Ay = d se rezolva prin substitutie nainte (algoritmul LTRIS), elementele lui d nu
trebuie precizate toate de la nceput ci se pot alege convenabil pe masura ce sistemul
este rezolvat. O prima idee const
a n a considera di {1, 1} (deci kdk = 1) si
de a alege n expresia
i1
X
yi = (di
aij yj )/aii
j=1

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

1. Pentru i = 1 : n
Pi1
1. j=1 aij yj
2. Dac
a 0 atunci di 1
altfel di 1
3. yi (di )/aii
2. kyk

Sunt necesari aproximativ n2 flopi, la fel ca pentru LTRIS.


O metoda mai eficienta consta n a urmari, la pasul i al schemei de mai
majoPsus,
i
rarea n modul nu numai a lui yi , ci si a tuturor sumelor partiale zki = j=1 akj yj ,

2.7. CONDIT
IONAREA SISTEMELOR LINIARE

101

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


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

= |yi | +

k=i+1
n
X

k=i+1

|zki
|,

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


Pi1

partiale au valorile zki


= j=1 akj yj + aki yi . Algoritmul rezultat pentru estimarea
numarului de conditionare (A) = kAk kA1 k este prezentat mai jos; pentru
k fixat, sumele zki de mai sus se memoreaza ntr-un scalar notat k .
Algoritmul 2.13 (COND Estimarea num
arului de conditionare)
(Se da A Rnn , inferior triunghiulara nesingulara. Se calculeaza o
estimare
a lui (A).)
1. Pentru k = 1 : n
1. k 0
2. Pentru i = 1 : n
1. yi+ (1 i )/aii
2. yi (1 i )/aii
3. Pentru k = i + 1 : n
1. k+ k + aki yi+
2. k k P
+ aki yi
n
+
+
4. s |yi | + Pk=i+1 |k+ |
n

5. s |yi | + k=i+1 |k |
6. Dac
a s+ s atunci
1. yi yi+
2. Pentru k = i + 1 : n
1. k k+
altfel
3. yi yi
4. Pentru k = i + 1 : n
1. k k
3.
kyk kAk
Executia algoritmului necesita aproximativ 3n2 flopi.
Consideram acum cazul general al unei matrice A Rnn a carei factorizare
P A = LU este cunoscuta. Num
arul de conditionare (A) se poate estima utilizand urmatoarea schema de calcul, a carei justificare depaseste cadrul acestei
lucrari.

(A)

1. Se aplica algoritmul 2.13 pentru a obtine o solutie de


norma cat mai mare a sistemului U T y = d
2. Se rezolva sistemele triunghiulare LT r = y, Lv = P r,
Uw = v
3.
kAk kwk / krk

102

CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUAT


II LINIARE

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


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

2.8

Stabilitatea numeric
a a algoritmilor de
eliminare gaussian
a

Vom prezenta n aceasta sectiune caracterizari ale stabilitatii numerice a algoritmilor


de eliminare gaussiana (G, GPP, GPC), precum si modalitati de mbunatatire a
rezultatelor numerice obtinute.
Un algoritm de rezolvare a sistemului liniar determinat Ax = b produce o solutie
calculata x
afectata de erori numerice. Vectorul x este solutia aceluiasi sistem cu
datele perturbate, i.e.
(A + H)
x = b.
(2.49)
Vom evalua marimea matricei H pentru algoritmii mentionati, adica vom prezenta
rezultate ale analizei inverse a erorilor. Evaluarea unor margini superioare pentru
kHk este o sarcina dificila, iar marginile au de obicei expresii complicate, de aceea
nu va fi prezentata nici o demonstratie. In plus, aceste margini sunt mult mai mari
dec
at erorile numerice ntalnite n practica; ele au rolul de a preciza cazurile cand
erorile pot fi importante, nu de a cuantifica cu precizie aceste erori.
Nu trebuie uitat nici o clipa ca, chiar n prezenta unor valori ale kHk foarte
mici, acuratetea solutiei este asigurata doar daca matricea A este bine conditionata.
Altfel, kHk / kAk mic poate implica (k
x xk) / kxk mare, indiferent de algoritmul
utilizat.
In contextul teoremei 2.1, not
k matricele Ak , respectiv Mk , calcuam cu Ak si M
late efectiv de algoritmul de eliminare gaussiana G. Introducem n plus urmatoarele
notatii:
(k)
k = max |
aij |, k 1 : n,
i,j

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

1, M
2, . . . , M
n1 , An = U
calculate n algoritmul G
Teorema 2.8 Matricele M
satisfac
1 . . . M
1 U
= A + E, cu |eij | n 1 M ,
M
(2.50)
1
n1
cu o constant
a de ordinul unit
atii, independent
a de A.

Deoarece procedura de rezolvare a sistemelor triunghiulare prin substitutie este


numeric stabila, majoritatea erorile numerice n rezolvarea unui sistem Ax = b apar
la triangularizarea matricei A. De aceea, matricea H din (2.49) satisface margini
superioare la nivel de element asemanatoare cu (2.50).


2.8. STABILITATE NUMERICA

103

Se observa ca valoarea marginii din (2.50) este determinata n special de factorul


de crestere . Pentru algoritmii GPP si GPC sunt valabile margini identice cu
(2.50), dar cu valori maxime diferite pentru .
In algoritmul G, factorul de crestere poate avea valori oricat de mari; asadar
acest algoritm este numeric instabil.
Introducerea pivotarii partiale conduce la 2n1 . Desi teoretic aceasta
margine este mare chiar pentru valori modeste ale lui n, totusi algoritmul
GPP produce rezultate precise n marea majoritate a cazurilor uzuale (unele
exceptii sunt prezentate n [?]); marginea este atinsa numai pentru anumite
matrice patologice, special construite n acest scop; un exemplu este prezentat n problema 2.24. De aceea, GPP poate fi considerat practic stabil.
In cazul pivotarii complete avem [n 21 31/2 41/3 . . . n1/(n1) ]1/2 .
Aceasta margine creste lent cu n si practic se poate considera n, ceea ce
nseamna ca algoritmul GPC este neconditionat stabil.
Combinand constatarile de mai sus cu efortul de calcul cerut de algoritmii
studiati, putem conchide ca algoritmul GPP este cel mai recomandat pentru rezolvarea sistemelor liniare. In cazuri speciale, cand se doreste o siguranta deosebita
a rezultatului, se pot utiliza algoritmul GPC sau metodele prezentate n continuare.
Pentru ca marginea superioar
a (2.50) e relativ complicata, sa deducem un rezultat euristic, si deci aproximativ, dar cu aplicatii practice clare si imediate. Daca n
rezolvarea sistemului Ax = b se foloseste o strategie de pivotare, atunci este suficient de mic; pe de alta parte, 1 kAk , dar de acelasi ordin de marime (n orice
caz, n1 kAk ). Atunci (2.50) este esential echivalenta cu afirmatia grosiera
kEk kHk kAk M .

(2.51)

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


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

2.8.1

Scalarea sistemelor liniare

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

unde x = D2 y.

(2.53)

104

CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUAT


II LINIARE

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


(2.53) se numeste scalare.
Astfel definita, scalarea nu introduce erori numerice, iar costul ei este de O(n2 )
flopi, deci convenabil. Sunt mai multe considerente care sugereaza ideea de scalare
si strategia de alegere a factorilor de scala D1 , D2 .
Daca elementele din A sunt de marimi foarte diferite, atunci, marginea din (2.50)
fiind aceeasi pentru toate elementele, e posibil ca erorile relative asociate elementelor
aij mici (n modul) sa fie foarte mari. De aceea, un obiectiv al scalarii poate fi acela
de a echilibra valorile elementelor matricei A.
Pe de alta parte, (2.52) sugereaza sa alegem D1 , D2 astfel ncat sa minimizam
(D1 AD2 ). Acest obiectiv este dificil de realizat n general si imposibil cu restrictia
de cost impusa; de altfel, nu are sens a optimiza pornind de la o relatie aproximativa.
T
inand seama de cele spuse mai sus precum si de cerinta evidenta ca D1 si D2
sa fie calculate cu O(n2 ) operatii, s-au impus cateva modalitati de scalare:
scalare pe linii: D2 = I si D1 se alege astfel ncat liniile matricei D1 A sa aiba
aproximativ aceeasi norma .
echilibrare linii-coloane: D1 si D2 se aleg astfel ncat fiecare linie si coloana
din D1 AD2 sa aiba norma cuprinsa n intervalul [1/, 1] (vezi problema
2.26).
De obicei, solutia calculata a sistemului (2.53) astfel scalat este mai precisa decat
solutia calculata a sistemului initial, dar n general nu exista nici o garantie n acest
sens, de aceea scalarea nu trebuie privita ca panaceu universal ci aplicata n functie
de problema.

2.8.2

Rafinarea iterativ
a a solutiei calculate

O alta metoda de mbunatatire a acuratetii solutiei calculate x a sistemului Ax = b


este prezentata n continuare. Presupunem ca sistemul a fost rezolvat folosind un
algoritm cu pivotare partiala si deci ca o factorizare P A = LU este disponibila.
Fie r = b A
x reziduul corespunzator lui x
. Daca notam e = x x
, atunci
Ae = Ax A
x = b (b r) = r.

(2.54)

Aceasta egalitate sugereaza sa rezolvam sistemul Ae = r, obtinand solutia e, si apoi


sa calculam o noua solutie
x
nou = x + e,
(2.55)
sper
and ca aceasta este mai precisa decat x
(daca nu ar exista erori numerice n
rezolvarea sistemului Ae = r, atunci e = e, deci x
nou = x). Procedura poate fi
repetata pentru noua solutie, pana la atingerea unei acurateti multumitoare sau
pan
a cand nu se mai obtine o mbunatatire a acesteia. (Nu discutam aici modalitatea tehnica de estimare a acuratetii solutiei, care depaseste nivelul acestei lucrari.)
Aparent, asa cum rezulta din (2.52), sistemele Ax = b si Ae = r se rezolva
cu acurateti asemanatoare, n esenta dictate de (A), iar adunarea solutiilor lor
n (2.55) nu ar produce un rezultat mai precis. Se poate nsa demonstra ca, daca


2.9. SISTEME BANDA

105

(A)M 1, atunci schema de rafinare iterativa sugerata mai sus conduce (de
obicei ntr-un numar foarte mic de iteratii) la solutia aproximativa x
satisfacand
k
x xk
2n cond(A, x) M ,
kxk
unde
def

cond(A, x) =

k |A1 | |A| |x| k


,
kxk

(2.56)

(2.57)

iar |A| este matricea cu elementele |aij |.


Comparand acum (2.52) si (2.56) constatam ca n general rafinarea iterativa
conduce ntr-adevar la mbunatatirea acuratetii solutiei calculate deoarece
cond(A, x) (A).

(2.58)

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


solutiei este cu atat mai mare cu cat raportul dintre cei doi termeni ai inegalitatii
(2.58) este mai mic.
Rafinarea iterativa da rezultate si mai bune daca se calculeaza reziduul r n
dubl
a precizie (utilizand un format virgula mobila cu mai multe cifre semnificative
dec
at cel utilizat la rezolvarea Ax = b). Mai precis, daca (A)M 1, atunci prin
rafinare se obtine k
x xk / kxk M , adica cel mai precis rezultat la care se
poate ajunge n formatul virgula mobila de lucru. Aceasta concluzie este intuitiva,
deoarece n (2.55) e este calculat mai precis decat x
.
Pentru a rezuma, o iteratie a schemei de rafinare are forma (beneficiind de
factorizarea P A = LU disponibil
a)
xnou

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


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

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


mai mic decat cel al eliminarii gaussiene. Exista si dezavantaje: trebuie pastrata o
copie a matricei A pentru calculul reziduului, iar implementarea calculelor n dubla
precizie poate fi dependenta de masina (desi standardul IEEE este respectat pe majoritatea calculatoarelor); de aceea, n bibliotecile actuale, de exemplu LAPACK, se
utilizeaza precizia de lucru. O analiza detaliata a erorilor pentru rafinarea iterativa
poate fi gasita n [IX].

2.9

Sisteme band
a

In aceasta sectiune vom considera sisteme Ax = b, n care A Rnn este o matrice


banda nesingulara, de latime inferioara r si superioara q. Astfel de matrice apar
deseori n practica, de exemplu la solutionarea numerica a ecuatiilor cu derivate
partiale. Vom vedea n continuare ca aplicarea adecvat
a a procedurii de eliminare
gaussiana poate aduce o mare reducere a numarului de operatii, fata de cazul matricelor oarecare.

106

CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUAT


II LINIARE

0

k=1


k=2


k=3
0
. . .
0

Fig. 2.8: Eliminarea gaussiana aplicata unei matrice banda de latime inferioara 2
si superioara 1. S-au notat cu elementele modificate la pasul respectiv, cu 0 cele
anulate, iar cu cele ramase nemodificate
Teorema 2.9 Dac
a eliminarea gaussian
a (algoritmul G) este aplicat
a matricei
A Rnn band
a de l
atime inferioar
a r si superioar
a q, nesingular
a si cu A[k] nesingulare, k = 1 : n 1, atunci n egalitatea (2.10) (Mn1 . . . M1 A = U ), matricea U
este superior triunghiular
a band
a de l
atime q, iar matricele ELT Mk = I mk eTk
sunt caracterizate de ik = 0, pentru i > k + r (altfel spus, n factorizarea LU
produs
a de algoritmul G, matricea L este inferior triunghiular
a band
a de l
atime r).
Pe scurt, n procedura de eliminare gaussiana fara pivotare, structura banda a
matricei A este ereditara, i.e. se transmite ca atare factorilor L, U furnizati de
procedura.
Demonstratie.
Figura 2.8 ilustreaza procesul de eliminare gaussiana. Deoarece
i1 = ai1 /a11 , rezulta i1 = 0 pentru i > 1 + r. In atribuirea A M1 A scrisa
detaliat
aij aij i1 a1j , pentru i, j = 2 : n,
se observa ca aij ramane nemodificat pentru i > 1+r (deoarece i1 = 0) si j > 1+q
(deoarece a1j = 0). Asadar, se modifica doar blocul A(2 : 1 + r, 1 : 1 + q) (n prima
coloana sunt introduse zerouri subdiagonale) si matricea A, inferior triunghiulara
n prima coloana, ramane banda de latime inferioar
a r si superioara q.
Procesul continua analog pentru k = 2, . . . , n 1, la fiecare pas k modificandu-se
blocul A(k + 1 : k + r, k : k + q), ceea ce conduce la structura banda a matricei
U , iar blocul (n k) (n k) dreapta jos pastrandu-si structura banda, ceea ce
asigura forma enuntata a matricelor ITE.

Algoritmul rezultat este prezentat n continuare.


Algoritmul 2.14 (Gb Eliminare gaussian
a pentru matrice band
a)
(Se da A Rnn , banda de latime inferioara r si superioara q, cu A[k]
nesingulare, k = 1 : n 1. Se calculeaza matricea superior triunghiulara
U si matricele ITE M1 , . . . , Mn1 astfel ncat U = Mn1 Mn2 . . . M1 A.)
1. Pentru k = 1 : n 1
1. Pentru i = k + 1 : min(k + r, n)
1. aik ik = aik /akk
2. Pentru i = k + 1 : min(k + r, n)


2.9. SISTEME BANDA

107

1. Pentru j = k + 1 : min(k + q, n)
1. aij aij ik akj
Lasam cititorului calculul unei formule pentru numarul de operatii; daca r n
sau q n, acesta este 2n3 /3.
Triangularizarea matricei A conform algoritmului de mai sus permite reducerea
sistemului Ax = b la sistemul echivalent superior triunghiular U x = d, cu U banda
de latime superioara q. Adaptarea UTRIS la acest caz este imediata, elementele
xi calculandu-se prin substitutie napoi cu formula

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

Vom vedea acum ce efect are pivotarea asupra structurii banda.

Teorema 2.10 Dac


a eliminarea gaussian
a cu pivotare partial
a (algoritmul GPP)
este aplicat
a matricei A Rnn band
a de l
atime inferioar
a r si superioar
a q, nesingular
a, atunci n egalitatea (2.14) (Mn1 Pn1 . . . M1 P1 A = U ), matricea U este
superior triunghiular
a band
a de l
atime q + r, iar matricele ITE Mk = I mk eTk
sunt caracterizate de ik = 0, pentru i > k + r.
Demonstratia va fi doar schitata, procesul de eliminare fiind ilustrat cu ajutorul
figurii 2.9. Primul pivot este gasit pe linia i1 1 : 1 + r, restul elementelor din
prima coloana fiind nule. Permutarea liniilor 1 si i1 (operatia A P1 A) va face ca
pe prima linie elementele nenule s
a fie n coloanele 1 : 1+q +r, n cel mai defavorabil
caz (i1 = 1 + r). Evident, i1 = ai1 /a11 , deci i1 = 0 pentru i > 1 + r. In atribuirea
A M1 A scrisa detaliat
aij aij i1 a1j ,

pentru i, j = 2 : n,

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


(deoarece a1j = 0). Asadar se modifica doar blocul A(2 : 1 + r, 1 : 1 + q + r).
Matricea A ramane banda de latime inferioara r; n prima linie, A este banda de
latime superioara q + r, iar n liniile 1 + r : n banda de latime superioara q.
Procesul continua asemanator pentru k = 2, . . . , n 1; dupa A Pk A, n linia
k rezulta akj = 0 pentru j > k + q + r; operatia A Mk A modifica doar blocul
A(k + 1 : k + r, k : k + r + q). In final, U si matricele ITE Mk au structura prezentata
n enunt.

Observam ca pivotarea partiala conduce la o matrice U superior triunghiulara


banda de latime mai mare decat cea a matricei initiale A. Mai mult, n factorizarea
rezultata P A = LU , matricea inferior triunghiulara L nu mai este banda, ca n
lipsa pivotarii; tinand seama de teorema 2.6, deoarece o coloana a matricei L este
o permutare a vectorului mk (ce defineste matricea ITE Mk = I mk eTk ), coloana
respectiva are doar r elemente nediagonale nenule, dar n pozitii ce difera de la caz
la caz.
Prezentam mai jos algoritmul sugerat de demonstratia teoremei 2.10.

108

CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUAT


II LINIARE


M1 0
P1

P3

0
P2
M2

. . .

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

Algoritmul 2.15 (GPPb Eliminare gaussian


a cu pivotare partial
a pentru matrice band
a) (Se da A Rnn , banda de latime inferioara r si superioara q, nesingulara. Se calculeaza matricea superior
triunghiulara U , matricele ITE M1 , . . . , Mn1 (memorate peste A)
si matricele PE P1 , . . . , Pn1 (memorate n vectorul p), astfel ncat
U = Mn1 Pn1 . . . M1 P1 A.)
1. Pentru k = 1 : n 1
1. r1 = min(k + r, n), q1 = min(k + q + r, n)
2. Se determina ik k : r1 astfel ncat |aik k | = maxi=k:r1 |aik |
3. p(k) ik
4. Pentru j = k : q1
1. akj aik j
5. Pentru i = k + 1 : r1
1. aik ik = aik /akk
6. Pentru i = k + 1 : r1
1. Pentru j = k + 1 : q1
1. aij aij ik akj
Comentarii.
Numarul de operatii este mai mare decat pentru algoritmul 2.14,
dar, daca r n sau q n, acesta este totusi 2n3 /3.

Lasam cititorului problema scrierii unui algoritm eficient de rezolvare a sistemului Ax = b, atunci cand A are structura banda, utilizand algoritmul 2.15.
In final, precizam ca pivotarea completa distruge structura banda si deci nu este
recomandata n acest caz.

2.10. SISTEME SIMETRICE

109

Factorizarea Crout aplicata unei matrice A Rnn banda de latime inferioara


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

2.10

Sisteme simetrice

Ne ocupam n aceasta sectiune de rezolvarea sistemului Ax = b, cu A inversabila


si simetric
a, n general de semn nedefinit. Nucleul rezolvarii sistemului este factorizarea matricei A, chiar daca eventual ea nu se face explicit. Presupunand ca
matricea A are factorizare LDU, deoarece A = AT si factorizarea este unica (n
conditiile teoremei 2.4), rezulta imediat ca U = LT . Se pune ntrebarea cum putem
profita de simetrie pentru a reduce numarul operatiilor de la 2n3 /3 (cazul general)
la, speram, jumatate, adica n3 /3.
Dificult
atile problemei. Aplicarea ca atare a procedurii de eliminare gaussiana (algoritmul G) pare a avea inconvenientul major de a distruge simetria matricei A. Sa explicitam primul pas al eliminarii gaussiene; se calculeaza A M1 A,
unde M1 = I m1 eT1 este matricea ITE pentru care (M1 A)i1 = 0, i 2 : n. Matricea M1 A nu este simetrica: prima coloana are elementele subdiagonale nule, n
schimb prima linie are elemente n general nenule. Totusi submatricea (M1 A)2:n,2:n
este simetrica, ceea ce se observa si detaliind instructiunea 1.2.1.1 din algoritmul G
(cu k = 1), adica,
aij aij ai1 a1j /a11
care se aplica identic si elementului aji = aij
aji aji aj1 a1i /a11 = aij ai1 a1j /a11 .
Asadar nu este necesara modificarea tuturor elementelor matricei, ci doar a celor din
(sa zicem) triunghiul inferior; numarul de operatii se reduce astfel la aproximativ
jumatate.
Pentru a pastra simetria sunt necesare transformari de congruenta, adica se
aplica transformarile ITE de ambele p
arti ale matricei A. Primul pas al eliminarii
gaussiene (modificate) va fi acum A M1 AM1T = M1 A (M1 A)e1 mT1 ; deoarece
(M1 A)e1 = a11 e1 , se observa ca nmultirea la dreapta cu M1T , adica (M1 A)M1T ,
nu afecteaza decat prima linie a matricei M1 A (identica cu prima linie a matricei
A), anume introducand zerouri n toate pozitiile din dreapta diagonalei. Asadar,
din punctul de vedere al implementarii, nmultirea la dreapta cu M1T nu necesita
calcule.
Continuand analog pentru celelalte coloane, se obtine echivalentul relatiei (2.10)
n cazul simetric
def

T
D = Mn1 . . . M2 M1 AM1T M2T . . . Mn1
,

(2.59)

110

CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUAT


II LINIARE

unde D este evident o matrice diagonala.


Modificand algoritmul G astfel ncat sa se acceseze doar triunghiul inferior al
1
matricei A, se obtine factorizarea A = LDLT , cu L = M11 M21 . . . Mn1
inferior
triunghiulara unitate si D memorate peste A:
LDLT

1. Pentru k = 1 : n 1
1. Pentru i = k + 1 : n
1. ti aik
2. aik aik /akk
2. Pentru j = k + 1 : n
1. Pentru i = j : n
1. aij aij aik tj

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


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

0 1
[k]
daca det(A ) = 0 pentru un k 1 : n 1. Un exemplu evident este A =
.
1 0
In plus, algoritmul este numeric instabil. De aceea se impune pivotarea.
Din pacate, strategiile de pivotare (partiala sau completa) propuse anterior pentru eliminarea gaussiana distrug simetria. O prima idee ar fi de a aplica permutarile
elementare de ambele parti ale matricei A, asa cum am procedat si cu transformarile
ITE; de exemplu, la primul pas, s
a se calculeze A P1 AP1T . O astfel de permutare
nu poate aduce pe pozitia pivotului decat unul dintre elementele diagonale; exemplul de mai sus dovedeste ca aceasta strategie poate da gres n situatii banale.
Factorizarea cvasi-diagonal
a. Pastrarea simetriei trebuie deci mbinata cu
participarea la pivotare a elementelor nediagonale. O posibilitate de realizare a
acestui compromis este de a calcula o factorizare LDLT de un tip special, n care
matricea D este cvasi-diagonala 2 .
Teorema 2.11 Fie A Rnn o matrice inversabil
a si simetric
a. Atunci exist
a o matrice inferior triunghiular
a unitate L Rnn , o matrice cvasi-diagonala
D Rnn cu blocuri diagonale de dimensiune 1 1 sau 2 2, si o matrice de
permutare P Rnn astfel nc
at
P AP T = LDLT .

(2.60)

Desigur, matricea D este inversabil


a. Expresia de mai sus este numit
a factorizare
cvasi-diagonala a matricei A.
Demonstratia este constructiva. Vom descrie modul de calcul al factorizarii cvasidiagonale fara a preciza strategia de permutare mai mult decat este matematic
necesar demonstratiei. Desigur, ntr-un algoritm de calcul efectiv matricea de permutare P va fi construita pornind de la considerente de stabilitate numerica.
2O

idee alternativ
a, descris
a n [?], este de a lua D tridiagonal
a.

111

2.10. SISTEME SIMETRICE


Primul pas al procedurii de factorizare se aplica matricei


E CT
P1 AP1T =
,
C B

(2.61)

unde E este un bloc s s, cu s = 1 sau s = 2, iar P1 o matrice de permutare,


eventual elementara. Demonstram acum ca daca A este inversabila, atunci exista
P1 astfel ncat E sa fie inversabil; de exemplu, daca a11 6= 0, se poate lua s = 1,
P1 = I; daca a11 = 0, exista a1j 6= 0, altfel prima coloana a matricei A este nula,
deci A este singulara; n acest caz, cu s = 2 si P1 permutand liniile 2 si j se obtine
det(E) = a21j 6= 0.
Pentru a determina primele s coloane ale factorilor L si D, se utilizeaza o relatie
asemanatoare cu (2.31):




E
0
Is E 1 C T
Is
0
(2.62)
P1 AP1T =
CE 1 Ins
0 B CE 1 C T
0
Ins
Daca s = 1, calculul factorizarii (2.62) este efectuat de schema LDLT . Daca
s = 2, atunci CE 1 se poate calcula folosind eliminarea gaussiana cu pivotare (vezi
problema 2.30) sau chiar varianta pe care o adoptam aici pentru simplitate
calculand direct


1
e22 e21
(2.63)
E 1 =
e11
det(E) e21

si apoi nmultind C si E 1 ; evident, blocul B CE 1 C T se calculeaza acum banal,


printr-un produs si o adunare matriceale, dar numai n partea sa inferior triunghiulara, deoarece este simetric.
Procedura continua identic pentru matricea B CE 1 C T de dimensiune
(n s) (n s), si asa mai departe pana la obtinerea factorizarii cvasi-diagonale
(2.60).

Algoritmul corespunzator este prezentat n continuare. Se vede usor ca procedura se poate executa pe loc n A; totusi, la fel ca n schema LDLT , e necesara
alocarea unui spatiu suplimentar pentru salvarea temporara, acum ntr-o matrice
T Rn2 , a elementelor coloanei (coloanelor, daca s = 2) curente.
Algoritmul 2.16 (FCD Factorizare cvasi-diagonal
a) (Se da
A Rnn simetrica si inversabila. Se calculeaza matricea inferior triunghiulara unitate L, matricea D Rnn cvasi-diagonala, cu blocuri de
dimensiune 1 1 sau 2 2, si matricea de permutare P Rnn astfel
ncat relatia (2.60) sa fie satisfacuta. Matricele L si D se memoreaza
peste A. Modul de calcul al lui P nu este detaliat.)
0. k 1
1. C^
at timp k < n
1. Se determina Pk si s.
2. Se efectueaza permutarea (simetrica) A Pk APkT
3. Dac
a s = 1 atunci
1. Pentru i = k + 1 : n
1. ti1 aik

112

CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUAT


II LINIARE
2. aik aik /akk
altfel



e11

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

akk

Comentarii. Numarul de operatii este de ordinul n3 /3 flopi, iar memoria ocupata


de n(n + 1)/2 + 2n.

Strategii de pivotare. Vom prezenta n continuare doua strategii de alegere


a permutarilor, completand astfel algoritmul FCD cu detalierea instructiunii 1.1.
Ne vom limita la descrierea primei etape din procedura de factorizare. Prin extensie de terminologie, numim pivot blocul E din (2.61) si pivotare permutarea din
instructiunea 1.2.
Pivotare complet
a. Spre deosebire de eliminarea gaussiana, la procedura de
factorizare cvasi-diagonala pivotarea completa se poate descrie mai usor decat cea
partiala. Matricea P1 si ntregul s sunt alese conform urmatoarei scheme [?]:
FCDPC1

1. Se alege (0, 1)
2. 0 = maxi,j |aij |, 1 = maxi |aii |
3. Dac
a 1 0 atunci
1. s = 1, se alege P1 astfel ncat n (2.61) |e11 | = 1
altfel
2. s = 2, se alege P1 astfel ncat n (2.61) |e21 | = 0

Ideea este de a alege un pivot 1 1 daca exista un element diagonal suficient


de mare n raport cu elementul de modul maxim 0 (depasind un prag dictat de
constanta ). Altfel pivotul este


a11 ar1
E=
, unde |ar1 | = 0 .
(2.64)
ar1 arr
Notand A = B CE 1 C T , se poate demonstra ca (vezi problema 2.31):

(
1 + 1 
daca s = 1,
0,

|
aij |
(2.65)
2
1 + 1 0 , daca s = 2.

2.10. SISTEME SIMETRICE

113



2
2
, ceea ce
Constanta se determina impunand conditia 1 + 1 = 1 + 1
va conduce la factori de crestere (vezi sect
iunea 2.8) asemanatori indiferent de dimensiunile pivotilor. Se obtine = (1 + 17)/8 0.64.
Aceasta strategie de pivotare face ca algoritmul FCD sa fie numeric stabil.
O analiza inversa a erorilor conduce la o margine similar
a cu cea din (2.50), cu
3n [21 31/2 41/3 . . . n1/(n1) ]1/2 ; aceasta margine pentru factorul de crestere
este putin mai mare decat cea pentru eliminarea gaussian
a cu pivotare completa
(algoritmul GPC).
Costul pivotarii complete este de O(n3 ) comparatii, la fel ca pentru algoritmul
GPC, ceea ce constituie un efort de calcul important. De aceea este interesanta
gasirea unei strategii de pivotare partiala.
Pivotare partial
a. Se poate demonstra ca alegerea pivotului cautand pe o singur
a coloana (si eventual pe diagonala) nu poate avea succes. Surprinzator, cautand
pe doua coloane se poate descrie o strategie de pivotare partiala eficienta (vezi [?]),
detaliata de schema (ne ocupam din nou doar de primul pas al factorizarii):
FCDPP1

1. Se alege (0, 1)
2. = maxi=2:n |ai1 | (si |ar1 | = )
3. Dac
a |a11 | atunci
1. s = 1, P1 = I
altfel
2. = maxi=1:n, i6=r |air |
3. Dac
a |a11 | 2 atunci
1. s = 1, P1 = I
altfel dac
a |arr | atunci
2. s = 1, se alege P1 astfel ncat n (2.61) e11 = arr
altfel
3. s = 2, se alege P1 astfel ncat n (2.61) |e21 | =

Pentru a ntelege ideea pivotarii,

a11 . . .
..
.

...

..
.

.
..

..
.

este util a considera matricea

... ... ...


..

arr . . . . . .

..

..
.


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

114

CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUAT


II LINIARE

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


acum la O(n2 ), pivotarea partial
a este de obicei preferata celei complete (la fel ca
la eliminarea gaussiana).
Utilizarea factoriz
arii cvasi-diagonale. Factorizarea (2.60) poate fi folosita
n modul cel mai simplu pentru rezolvarea sistemelor liniare, redusa la rezolvarea
a doua sisteme triunghiulare si a unuia cvasi-diagonal; lasam cititorului detaliile de
implementare.
De asemenea, (2.60) se poate utiliza pentru calculul inversei matricei A, tinand
seama ca
A1 = P T LT D1 L1 P.
Remarcam faptul ca si matricea A1 este simetrica.
Cazul complex. In cazul n care A Cnn este hermitica (A = AH ), factorizarea sa cvasi-diagonala are forma (analoaga cu (2.60))
P AP T = LDLH ,
unde P este o matrice de permutare, L Cnn este inferior triunghiulara unitate,
iar D Cnn este bloc diagonala (cu blocuri 1 1 sau 2 2) si hermitic
a.
Algoritmul FCD si pastreaz
a forma generala; trebuie luat nsa n considerare
faptul ca n cazul complex transpunerea este nsotita si de conjugare. De exemplu,
(2.61) devine


E CH
T
P1 AP1 =
,
(2.66)
C B
iar E este hermitica, adica, n cazul 2 2,


e11 e21
E=
.
e21 e22
Instructiunile algoritmului FCD se modifica corespunzator, de exemplu 1.4.1.1.1
are forma aij aij aik a
jk .

2.11

Sisteme simetrice pozitiv definite

Consideram acum sistemul Ax = b, unde matricea A Rnn este simetrica si


pozitiv definita. Ideea de baza a rezolvarii lui este dat
a de teorema urmatoare.
Teorema 2.12 Pentru orice matrice simetric
a si pozitiv definit
a A Rnn , exist
a
nn
o unic
a matrice inferior triunghiular
a LR
, cu elemente diagonale pozitive,
astfel nc
at
A = LLT ,
(2.67)
expresie care este numit
a factorizare Cholesky (iar L este numit factorul Cholesky
al matricei A). Reciproc, dac
a factorizarea Cholesky exist
a, atunci A este pozitiv
definit
a.

2.11. SISTEME SIMETRICE POZITIV DEFINITE

115

Evident, (2.67) se poate scrie sub forma A = RT R, unde R = LT este superior


triunghiulara. De asemenea, factorizarile A = LT L, respectiv A = RRT , se numesc
tot Cholesky.
Demonstratie.
Deoarece A este pozitiv definita atunci, conform propozitiei 1.3,
submatricele lider principale A[k] , k = 1 : n 1, sunt pozitiv definite, deci nesingulare. Atunci A are o unica factorizare LDU (vezi teorema 2.4), A = L DU si, din
motive de simetrie, U = (L )T . Dar A si D sunt congruente, deci D este pozitiv
definit
a, adica dii > 0, i = 1 : n. Fie F Rnn matricea diagonala definita de

fii = dii , i = 1 : n. Notand L = L F , prima parte a teoremei este demonstrata


(lii = dii , i = 1 : n).
Reciproca este evidenta; fie x Rn nenul, altfel arbitrar; atunci avem xT Ax =
T
x LLT x = kLT xk22 > 0 (deoarece L este nesingulara, LT x 6= 0).

Exista mai multi algoritmi pentru calculul factorizarii Cholesky a unei matrice
pozitiv definite, care difera doar prin ordinea de efectuare a calculelor. Vom deduce
aici o procedura de factorizare compacta, similara cu cea folosita la calculul factorizarii Crout, n care elementele factorului Cholesky L sunt calculate n ordinea
(crescatoare a) coloanelor. Din identitatea A = LLT (doar triunghiul inferior stang
al lui A este reprezentat, deoarece A este simetrica)

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


.
..
..
.
.


.
.
. ..
0
.

ak1 . . . akk
= lk1 . . . lkk

lkk . . . lnk

.
.


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

..

.
.
. ..
.
.
0
an1 . . . ank . . . ann
ln1 . . . lnk . . . lnn
lnn
obtinem pentru prima coloana:
ai1

2
a11 = l11
l11 = a11 ,
= li1 l11 li1 = ai1 / l11 , i = 2 : n,

(2.68)

si deci procesul de calcul poate fi initiat.


Acum, presupunand ca primele k1 coloane din L au fost calculate, identificarea
elementului din pozitia (k, k) n A = LLT furnizeaza
akk =

k1
X

2
2
lkj
+ lkk
,

(2.69)

j=1

n care singura necunoscuta este lkk . Conform teoremei 2.12, daca A este pozitiv
definita, atunci exista un unic lkk pozitiv astfel ncat (2.69) sa aiba loc. Atunci,
akk
si
lkk

k1
X

2
lkj
>0

(2.70)

j=1

v
u
k1
X
u
2 .
= takk
lkj
j=1

(2.71)

116

CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUAT


II LINIARE

De asemenea,
aik =

k1
X

lij lkj + lik lkk , i = k + 1 : n,

j=1

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

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

Formulele (2.68), (2.71) si (2.72) definesc algoritmul de mai jos; pentru concizie,
am inclus si primul pas n bucla de parcurgere a coloanelor. Totodata, acest algoritm
este cel mai bun mijloc de testare a pozitivitatii unei matrice; testul se bazeaza pe
faptul ca factorizarea Cholesky a unei matrice poate fi calculata daca si numai
dac
a matricea este pozitiv definit
a (teorema 2.12); asadar, daca termenul stang al
inegalitatii (2.70) nu este pozitiv, atunci matricea A nu este pozitiv definita.
Algoritmul 2.17 (CHOL factorizare Cholesky) (Se da A Rnn
simetrica. Se stabileste daca A este pozitiv definita si, n acest caz,
se scrie peste triunghiul inferior al lui A matricea L din factorizarea
Cholesky A = LLT .)
1. Pentru k = 1 : n
P
2
1. akk k1
j=1 lkj
2. Dac
a 0 atunci
1. Tip
are
ste A nu este pozitiv definita
2. Stop

3. akk lkk =
4. Pentru i = k + 1: n

Pk1
1. aik lik = aik j=1 lij lkj / lkk

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


alta ordonare a calculelor, care, n varianta vectoriala, conduce la operatii Saxpy,
este propusa n problema 2.33. Tot ca exercitiu pentru cititor (problema 2.34)
este lasata varianta la nivel de bloc a factorizarii Cholesky, foarte asemanatoare
algoritmilor de factorizare LU la nivel de bloc, prezentati n sectiunea 2.4.
Algoritmul CHOL necesita aproximativ NCHOL = n3 /3 flopi si, n plus, calculul
a n radacini patrate (care e neglijabil). Memoria necesar
a este de aproximativ
MCHOL = n2 /2.
reprezinta factorul Cholesky calculat,
Algoritmul este numeric stabil; daca L
L
T = A + E, unde perturbatia E satisface limita (2.50) pentru = 1; deci,
atunci L
stabilitatea este mai buna decat a eliminarii gaussiene cu pivotare completa.

Desigur, sistemul liniar Ax = b, cu A pozitiv definita se calculeaza cu schema


Ch

1. Se factorizeaza A = LLT cu algoritmul CHOL


2. Se rezolva sistemul inferior triunghiular Ly = b
3. Se rezolva sistemul superior triunghiular LT x = y

117

2.12. RUTINE LAPACK S


I MATLAB

efectuandu-se de doua ori mai putine operatii decat daca s-ar aplica algoritmul de
eliminare gaussiana.
In privinta conditionarii, problema rezolvarii sistemului pozitiv definit Ax = b
satisface inegalitatea (2.47).
Inversa (care este tot simetrica si pozitiv definita) si determinantul unei matrice
simetrice pozitiv definite se calculeaza adaptand ideile din sectiunea 2.6 la contextul
factorizarii Cholesky A = LLT .
Matrice band
a. Daca A Rnn este o matrice simetrica, pozitiv definita
si banda de latime r, atunci factorul Cholesky este inferior triunghiular banda de
latime r. Aceasta se poate observa cu usurinta din relatia (2.72), n care un element
lik depinde de valorile lij aflate la stanga sa pe linia i (i.e. j < k); asadar, li1 = ai1 ,
deci n prima coloana se mosteneste structura matricei A; daca, pentru un indice
de coloana s, avem lij = 0 pentru j = 1 : s 1, atunci este evident ca lis = ais /lss ,
deci structura se mosteneste si n coloana s. In concluzie, linia i are, n portiunea
subdiagonala, aceeasi structura n A si L.
Adaptarea algoritmului CHOL la cazul matricelor banda este un exercitiu relativ simplu pe care l lasam cititorului (vezi problema 2.36).
Cazul complex. Daca matricea A Cnn este hermitica si pozitiv definita,
atunci factorizarea sa Cholesky este unica si are forma
A = LLH ,
unde L Cnn este inferior triunghiulara, cu elementele diagonale reale si pozitive (si A are elementele diagonale reale, fiind hermitica, si pozitive, fiind pozitiv
definita). Factorul Cholesky se poate calcula cu algoritmul CHOL usor modificat,
deoarece (2.71) si (2.72) se transforma n
v
u
k1
X
u
lkk = takk
lkj lkj ,
(2.73)
j=1

respectiv

lik = aik

2.12

k1
X
j=1

lij lkj / lkk , i = k + 1 : n.

(2.74)

Rutine LAPACK si MATLAB

Prezentam pe scurt n continuare rutinele din biblioteca LAPACK si instructiunile


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

118

CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUAT


II LINIARE

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


calculul valorilor proprii si probleme conexe), cele mai performante si folosite pachete de programe de calcul numeric ale anilor 7080. De aceea se poate aprecia ca
LAPACK este cel mai modern si puternic instrument de calcul n algebra matriceala.
In plus, sursele LAPACK sunt disponibile gratuit (vezi http://www.netlib.org).
Numele rutinelor LAPACK respecta conventiile BLAS (vezi sectiunea 1.11),
adica au forma xyyzzz, unde x codifica formatul de reprezentare a datelor, yy
reprezinta tipul matricei (vezi tabelul 1.1 pentru cele mai importante tipuri), iar
zzz arata operatia executata.
Rutinele LAPACK sunt mpartite n trei categorii:
rutine driver, care rezolva o problema completa, de exemplu aflarea solutiei
unui sistem liniar;
rutine de calcul, care rezolva subprobleme sau completeaza rezolvarea unei
probleme, de exemplu calculul factorizarii LU sau rafinarea iterativa a solutiei
unui sistem liniar;
rutine auxiliare.
Rezolvarii sistemelor liniare i sunt dedicate n LAPACK doua tipuri de rutine
driver:
1. Driverul simplu, cu numele de forma xyySV, rezolva sistemele (cu parte
dreapta multipla) AX = B sau AT X = B. De exemplu, xGESV se utilizeaza pentru
matrice A oarecare (implementand eliminarea gaussiana la nivel de bloc), xPOSV se
utilizeaza cand matricea A este simetrica pozitiv definita (implementand algoritmul
Cholesky la nivel de bloc) etc.
2. Driverul expert, cu numele xyySVX, care, n plus
scaleaza matricea A daca este necesar;
estimeaza numarul de conditionare al matricei A;
rafineaza iterativ solutia.
In contextul rezolvarii de sisteme, rutinele de calcul cele mai importante sunt
urmatoarele:
1. xyyTRF calculeaza factorizarea P A = LU n cazul general (yy=GE), factorizarea Cholesky A = LLT pentru matrice simetrice (hermitice) pozitiv definite
(yy=PO), factorizarea cvasi-diagonala P AP T = LDLT pentru matrice simetrice (hermitice) (yy=SY, yy=HE). In toate cazurile de mai sus exista rutine si
pentru matrice banda.
2. xyyTRS utilizeaza rezultatul factorizarii (iesirea rutinei xyyTRF corespunzatoare) pentru a calcula solutia unui sistem liniar.
3. xyyEQU scaleaza matricea A.
4. xyyRFS rafineaza iterativ solutia unui sistem liniar.

2.13. PROBLEME

119

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


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

2.13

Probleme

P 2.1 Descrieti o variant


a a elimin
arii gaussiene n care se introduc zerouri n coloanele
lui A, deasupra diagonalei, n ordinea n : 1 : 2, si care produce factorizarea A = U L,
unde U este superior triunghiular
a unitate si L este inferior triunghiular
a.
P 2.2 Scrieti variantele vectoriale ale algoritmilor GPP si GPC, utiliz
and apeluri la
functii din biblioteca BLAS 1.
nn
P 2.3 Fie
o matrice strict diagonal dominant
a pe coloane, i.e. cu proprietatea
PnA R
a pivotarea partial
a nu este necesar
a n procesul de
|ajj | > i=1,i6=j |aij |. Demonstrati c
eliminare gaussian
a si c
a toti multiplicatorii gaussieni sunt subunitari (n modul).

k = In m
P 2.4 Fie matricea de transformare elementar
a Gauss-Jordan M
k eTk , definit
a
T
de vectorul m
k = [1k . . . k1,k 0 k+1,k . . . nk ] .
k x = x k ek .
a. Fie x Rn , cu xk 6= 0. Determinati m
k astfel nc
at M
b. Fie A Rnn , av
and submatricele lider principale A[k] nesingulare, k = 1 : n 1.
Scrieti un algoritm care, utiliz
and transform
ari Gauss-Jordan, diagonalizeaz
a matricea A,
1, M
2, . . . , M
n1 astfel nc
n1 . . . M
2M
1 A = D, cu D diagonal
i.e. genereaz
a M
at M
a.
Care este num
arul de operatii ?
c. Introduceti pivotarea n algoritmul anterior.
P 2.5 Demonstrati unicitatea factoriz
arii LDU n conditiile teoremei 2.4.
P 2.6 Demonstrati c
a dac
a A Rnn admite o factorizare LDU unic
a, atunci subma[k]
tricele lider principale A , k = 1 : n 1, sunt nesingulare. (Indicatie: utilizati reducerea
la absurd.)

120

CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUAT


II LINIARE

P 2.7 Demonstrati c
a algoritmul GPP modificat conform descrierii din sectiunea 2.4.1
produce o factorizare LU pentru care |lik | 1, pentru i > k.
P 2.8 Cum trebuie modificat algoritmul GPC aplicat matricei A Rnn pentru a furniza
factorizarea LU cu permut
ari pe linii si pe coloane de forma P AQ = LU ? Demonstrati
c
a |ukk | |ukj |, pentru j > k (n plus, |lik | 1, pentru i > k).
P 2.9 Adaptati algoritmul de eliminare gaussian
a cu pivotare partial
a astfel nc
at s
a
calculeze factorizarea (2.32).
P 2.10 Scrieti o variant
a la nivel de bloc a algoritmului de factorizare Crout cu pivotare
CROUTP.
P 2.11 Cum trebuie modificati algoritmii 2.7 si 2.8 astfel nc
at s
a functioneze corect si
atunci c
and dimensiunea n a matricei nu este multiplu al dimensiunii r a blocurilor ?
P 2.12 Prezentati o variant
a a algoritmului de rezolvare a sistemelor liniare de forma
Ax = b prin eliminare gaussian
a cu pivotare partial
a, f
ar
a a memora multiplicatorii.
P 2.13 Fie H Rnn o matrice nesingular
a superior Hessenberg (hij = 0, pentru
i > j + 1).
a. Dac
a toate submatricele lider principale ale lui H sunt nesingulare, adaptati algoritmul de eliminare gaussian
a pentru rezolvarea sistemului liniar Hx = b, unde b Rn ;
calculati num
arul de operatii.
b. Adaptati algoritmul GPP pentru aceeasi problem
a.
c. Adaptati algoritmul Crout de factorizare LU.
P 2.14 Se consider
a dou
a matrice: H Rnn , superior Hessenberg nesingular
a, si
nn
RR
, superior triunghiular
a unitate. Prezentati algoritmi eficienti pentru:
a. rezolvarea sistemului liniar HRx = b, cu b Rn .
b. Atunci c
and toate submatricele lider principale ale lui H sunt nesingulare, factorizarea Crout A = HR poate fi obtinut
a printr-una din urm
atoarele dou
a scheme:
Schema 1.
1. Calculeaz
a A = HR.
2. Calculeaz
a factorizarea Crout a lui A: A = LU .
.
Schema 2.
1. Calculeaz
a factorizarea Crout a lui H: H = LU

2. Calculeaz
a U = U R.
Care dintre ele este mai eficient
a?
P 2.15 a. Propuneti un algoritm pentru rezolvarea sistemului liniar Ax = b, unde
A Rnn este nesingular
a si b Cn , utiliz
and numai aritmetica real
a.
b. Prezentati un algoritm pentru rezolvarea ecuatiei matriceale AX = B, n care
A Rnn este nesingular
a si B Rnm . (Indicatie: utilizati GPP.)
c. Idem, dar pentru ecuatia XA = B, cu A Rnn , B Rmn .
P 2.16 Se d
a matricea A Rnn nesingular
a. Utiliz
and rezultatul algoritmului de eliminare gaussian
a cu pivotare partial
a (Mn1 Pn1 . . . M1 P1 A = U ) sau factorizarea LU
(P A = LU ), scrieti algoritmii pentru rezolvarea sistemelor AT y = c, AT Y = C, unde
c Rn , C Rnm .
P 2.17 Prezentati un algoritm eficient pentru rezolvarea sistemului liniar Ak x = b, unde
A Rnn este nesingular
a, b Rn si k N, k > 1.
P 2.18 Dac
a A, B Rnn sunt matrice nesingulare, prezentati un algoritm eficient de
rezolvare a sistemului liniar (AB)k x = c, unde c Rn .

121

2.13. PROBLEME

P 2.19 Sistemul complex Cz = w (cu C = A + iB, z = x + iy, w = u + iv) se poate scrie


(prin decomplexificare) n forma

A
B

B
A

x
y

u
v

Ce este preferabil: (a) rezolvarea sistemului Cz = w cu operatii complexe sau (b) rezolvarea
sistemului decomplexificat cu operatii reale ?
P 2.20 Se presupune c
a A Rnn are o factorizare LU si c
a L si U sunt cunoscuti.
Prezentati un algoritm care calculeaz
a elementul din pozitia (i, j) a matricei A1 , cu
aproximativ (n j)2 + (n i)2 flopi.
P 2.21 Detaliati algoritmii de calcul al inversei unei matrice A Rnn si al det(A),
utiliz
and eliminarea gaussian
a cu pivotare complet
a.
P 2.22 Se dau A Rnn , B Rnr , C Rrn , D Rrr , matricele A si D fiind
inversabile. Fie A+ = A+BD1 C (actualizare de rang r a matricei A). Cazuri particulare:
1 A, D simetrice pozitiv definite, C = B T ; 2 r = 1, adic
a A+ = A + bcT / (actualizare
de rang 1).
a. Demonstrati c
a are loc formula (Sherman-Morrison-Woodbury):
1
1
A1
A1 BD+
CA1 ,
+ = A

unde D+ = D + CA1 B.

b. Scrieti un algoritm de calcul al matricei A1


and A1 cunoscut
a (actu+ , presupun

alizarea inversei). Considerati cazurile


particulare
1

s
i
2
.
Evaluat

i
num
a
rul
de
operat
ii.

A
B
c. Se consider
a matricea H =
. Demonstrati c
a
C D
H 1 =

A1
+
1
D+ CA1

1
A1 BD+
1
D+

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


a. Prezentati un algoritm eficient pentru calculul determinantului matricei A. C
and
este A nesingular
a?
b. Dac
a A este nesingular
a si b Rn , scrieti un algoritm eficient pentru rezolvarea
sistemului liniar Ax = b.
P 2.24 Matricea A Rnn de mai jos este un exemplu (construit special n acest scop)
n care factorul de crestere atinge valoarea maxim
a n algoritmul GPP.
2

6
6
6
A=6
6
4

1
1
..
.
1
1

0
1
..
.
1
1

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

0
0
..
.
1
1

1
1
..
.
1
1

7
7
7
7.
7
5

Demonstrati c
a n algoritmul GPP nu se efectueaz
a nici o permutare si c
a = 2n1 .
P 2.25 Fie A Rnn si x Rn . Demonstrati inegalitatea cond(A, x) (A) (relatia
(2.58)).

122

CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUAT


II LINIARE

P 2.26 Se d
a A Rnn . S
a se g
aseasc
a matricele diagonale D1 si D2 astfel nc
at fiecare
linie si coloan
a din D1 AD2 s
a aib
a norma egal
a cu 1. (Impun
andu-se restrictia ca
elementele matricelor D1 si D2 s
a fie puteri ale bazei de numeratie , s
a se construiasc
a
D1 si D2 astfel nc
at liniile si coloanele lui D1 AD2 s
a aib
a norma cuprins
a n intervalul
[1/, 1].)

A 0
P 2.27 Fie B =
, cu A, R Rnn , nesingulare, R superior triunghiular
a. Se
R A
presupune c
a factorizarea LU a lui A exist
a si este cunoscut
a (A = LU ).
U
.
a. Scrieti un algoritm pentru calculul factoriz
arii LU a lui B, B = L
b. Propuneti un algoritm pentru rezolvarea sistemului liniar Bx = d, n care d R2n .
Calculati num
arul de operatii pentru ambii algoritmi.
P 2.28 Fie A R2n2n
a cu toate submatricele lider principale nesin o matrice nesingular
A1 A2
gulare, de forma A =
, cu A1 , A2 , A3 , A4 Rnn si A3 superior triunghiular
a.
A3 A4
2n
a. Scrieti un algoritm pentru rezolvarea sistemului liniar Ax = b, cu b R .
b. Aceeasi problem
a, dar presupun
and doar c
a A este nesingular
a.
P 2.29 Fie A Rnn o matrice nesingular
a tridiagonal
a (aij = 0, pentru i > j + 1 sau
i < j 1).
a. Adaptati algoritmul de eliminare gaussian
a la acest tip de matrice.
b. Prezentati un algoritm care rezolv
a sistemul Ax = b, cu b Rn .
c. Dac
a matricea A este simetric
a si pozitiv definit
a, adaptati algoritmul de factorizare
Cholesky pentru A.
P 2.30 Detaliati o procedur
a de calcul al matricei F = CE 1 din (2.62), pentru cazul
s = 2, utiliz
and eliminarea gaussian
a cu pivotare partial
a.
P 2.31 Demonstrati relatia (2.65) (care m
argineste cresterea elementelor matricei simetrice A n timpul executiei algoritmul FCD, de factorizare cvasi-diagonal
a cu pivotare
complet
a).
P 2.32 Detaliati permut
arile efectuate n algoritmul de factorizare cvasi-diagonal
a cu pivotare complet
a (schema FCDPC1 ), oper
and numai n triunghiul inferior al matricei simetrice date.
P 2.33 Scrieti un algoritm de calcul al factorului Cholesky L al unei matrice A Rnn
pozitiv definite, n care elementele lui L s
a fie calculate prin operatii Saxpy (si nu DOT,
ca n algoritmul CHOL). Indicatie: algoritmul este asem
an
ator elimin
arii gaussiene.
P 2.34 Scrieti o variant
a la nivel de bloc a algoritmului de factorizare Cholesky a unei
matrice simetrice pozitiv definite.
P 2.35 Fie A Rnn o matrice nesingular
a inferior bidiagonal
a, si T = AAT . Prezentati
un algoritm eficient pentru calculul factoriz
arii Cholesky a matricei T (demonstrati nt
ai
c
a T este simetric
a si pozitiv definit
a).
P 2.36 Adaptati algoritmul CHOL pentru factorizarea matricelor simetrice pozitiv definite band
a de l
atime r.
P 2.37 Dac
a matricea A Rnn este simetric
a si pozitiv definit
a, propuneti un algoritm pentru factorizarea Cholesky A = RRT , unde R este superior triunghiular
a si are
elementele diagonale pozitive.
P 2.38 Fie A Rnn o matrice simetric
a si pozitiv definit
a. Scrieti un algoritm de calcul
al factoriz
arii A = LDLT , cu L inferior triunghiular
a unitate si D diagonal
a. (A = LDLT
mai este numit
a factorizare Cholesky f
ar
a radical.)

Capitolul 3

Problema celor mai mici


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

(3.2)

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


In cazul m < n, un criteriu natural de selectie a unei singure solutii x Rn a
sistemului (3.1) impune ca aceasta sa fie, ntr-un anumit sens, cat mai economica,
de exemplu sa aiba o lungime, adica o norma, c
at mai mic
a. Altfel spus, x trebuie
sa minimizeze functia
(x) = (x)|Ax=b ,
(3.3)
unde () este o norma pe Rn 1 .
1 Notat
ia din (3.3) spune c
a este restrictia normei pe multimea X a solutiilor sistemului
(3.1). Desigur, pentru ca problema minimiz
arii functiei s
a aib
a sens, este necesar s
a presupunem
c
a sistemul liniar (3.1) are cel putin o solutie, i.e. b ImA.

124

CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE

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

(3.4)

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


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

(3.5)

este, prin definitie, solutia normal


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

astfel ncat erorile de aproximare (sau reziduurile)

ri = yi f (ui ), i = 1 : m,
evaluate n punctele date (ui , yi ), sa fie cat mai mici.
In cazul tipic m > n, formularea n sens CMMP a problemei de aproximare
considerate mai sus consta n determinarea coeficientilor cj , j = 1 : n, astfel ncat
eroarea medie patratica

2
m
m
n
X
X
X
2
yi
krk =
ri2 =
cj gj (ui )
(3.6)
i=1

i=1

j=1


3.1. TRANSFORMARI
ORTOGONALE

125

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

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


din exemplul anterior apar scrise sub forma
yi =

n
X

cj gj (ui ) + ri ,

i = 1 : m,

j=1

n care acum reziduurile ri reprezinta erori (sau zgomote) de masura si, n consecinta,
au o descriere statistica. Se poate arata ca, n anumite conditii standard, estimarile
optimale ale parametrilor x = [c1 . . . cn ]T sunt solutii ale problemei CMMP (3.6)
cu exact aceleasi date A, b ca mai sus. In general, probleme de modelare sistemica
extrem de complicate admit o dubla interpretare, ca probleme de aproximare sau de
estimare, si n consecinta se trateaza n spiritul principiului CMMP. Pentru detalii
si aplicatii specifice, cititorul poate consulta [?, ?].

Teoria problemelor CMMP este intim legata de geometria spatiului euclidian


Rm , n special de notiunea de ortogonalitate, care dupa cum vom vedea mai departe da un sens (geometric) clar si extrem de intuitiv problemelor de minimizare
formulate mai sus. In mod corespunzator, practica numerica actuala recomanda
rezolvarea acestor probleme prin metode directe de triangularizare a matricei A,
bazate pe utilizarea transformarilor ortogonale 2 .
De aceea, n primele sectiuni ale acestui capitol, vom introduce transformarile
ortogonale utilizate n calcule si vom descrie procedurile corespunzatoare de triangularizare ortogonala. Pe aceasta baza, n continuare vom prezenta procedurile de
rezolvare a problemelor CMMP de tip (3.4) si (3.5), insist
and totodata asupra unor
aspecte practice importante privind conditionarea problemelor considerate precum
si stabilitatea numerica a algoritmilor de calcul propusi.

3.1

Transform
ari ortogonale

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

3.1.1

Reflectori

Consideram spatiul Rm cu produsul scalar (x, y) = y T x si notam cu kxk = (xT x)1/2


norma euclidiana indusa. Amintim ca o matrice U Rmm se numeste ortogonala
daca U T U = Im .
2 Aici

este esential faptul c


a norma euclidian
a considerat
a n (3.4) si (3.5) este invariant
a n
raport cu grupul transform
arilor ortogonale. In leg
atur
a cu aceste notiuni, cititorul este invitat s
a
consulte capitolul 1.

126

CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE

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


de forma
U = Im 2uuT
(3.7)
se numeste reflector elementar de ordinul m sau transformare Householder 3 .

Se constata imediat ca orice reflector elementar U este o matrice simetric


a si
ortogonal
a. Intr-adevar, produsul exterior uuT este evident o matrice simetrica, iar
n virtutea conditiei de normare, kuk2 = uT u = 1, avem


U T U = U 2 = Im 2uuT Im 2uuT = Im 4uuT + 4u(uT u)uT = Im .

Asadar, un reflector elementar este o transformare involutiva, i.e. coincide cu propria sa inversa.
In cele ce urmeaza vom fixa un ntreg k 1 : m 1 si vom considera ca vectorul
u 6= 0 din (3.7), nu neaparat normat, are primele k 1 componente nule, i.e. ui = 0,
i = 1 : k 1. Pentru precizare, n acest caz vom scrie
Uk = Im

uuT
,

def

1
kuk2
2

(3.8)

unde
u = [ 0 . . . 0 uk . . . um ]T

(3.9)

si vom spune ca Uk este un reflector de ordin m si indice k. Vectorul u se numeste


vector Householder, iar este factorul de normare corespunzator. (Uneori, n loc de
se utilizeaza scalarul = 1 . Vom reveni asupra acestei chestiuni n sectiunea
urmatoare.) Observam ca datorit
a zerourilor din (3.9) matricea Uk are structura


Ik1 0
Uk =
(3.10)
1 ,
0
U
1 este evident un reflector de ordin m k + 1 si indice 1.
n care U
Reflectorii Uk cu structura precizata mai sus au doua proprietati importante 4 .
AA. Fiind dati un reflector Uk si un vector x Rm , aplicarea transform
arii
Uk , i.e. calculul vectorului transformat y = Uk x, se face simplu, observand ca
Uk x = (Im

u(uT x)
uuT
)x = x
= x u,

(3.11)

unde, evident

uT x
.
(3.12)

Relatia (3.11) scrisa pe componente (unde amintim ca ui = 0, i = 1 : k 1)


arata ca premultiplicarea cu Uk nu modific
a primele k 1 componente ale lui x. De
aceea, transformarea y = Uk x se efectueaza avantajos pe loc n x, conform schemei
x y = Uk x. Considerand ca reflectorul Uk este definit de vectorul u Rm precum
si de scalarul , procedura de calcul este urmatoarea.
=

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


3.1. TRANSFORMARI
ORTOGONALE


u

127

H
* x

Uk x Y
H

H

HH


HH

HH

HH


H u
(uT x)u
0
H
Fig. 3.1: Efectul aplicarii unui reflector U asupra unui vector x, n R2

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


aplica transformarea
x Uk x).
P
1. = ( m
i=k ui xi ) /.
2. xi xi ui , pentru i = k : m
In esenta, la pasul 1 se calculeaza un produs scalar (de exemplu,
Comentarii.
utilizand functia DOT), iar la pasul 2 se face o actualizare de tip Saxpy a lui x
(functiile DOT si Saxpy au fost definite n capitolul 1). De fiecare data se opereaz
a
asupra unor vectori de dimensiune m k + 1. Prin urmare, numarul de operatii
necesar este aproximativ Nop = 4(m k).

Semnificatia geometrica a transformarii (3.11) rezult


a din figura 3.1, unde pentru
claritate am considerat m = 2 si kuk = 1, deci = 2uT x (vezi (3.12)), iar (uT x)u
este proiectia ortogonala a lui x pe directia lui u. In general, transformarea Uk
reprezinta simetria (reflexia) n raport cu hiperplanul H (oglinda) care trece
prin origine si are vectorul normal u.
In practica, algoritmul 3.1 apare extrem de frecvent.
Aplicarea transformarii B = Uk A, unde A Rmn este o matrice cu n coloane,
iar Uk actioneaza la stanga, se face partitionand A pe coloane. Avem
A = [a1 a2 . . . an ] Uk A = [Uk a1 Uk a2 . . . Uk an ],
deci calculul se poate desfasura pe loc n tabloul A, utilizand algoritmul 3.1 pentru
actualizarea fiecarei coloane a matricei A.
% Se aplica transformarea A Uk A
1. Pentru j = 1 : n
1. aj Uk aj
Conform celor spuse mai sus, premultiplicarea cu Uk nu modifica primele k 1
linii ale matricei A. Mai precis, partitionand A conform cu Uk din (3.10), avem




B
B
A=
Uk A =
.
C
U1 C


CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE

128

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


Uk A = (Im

uuT
)A = A uv T ,

unde

v=

AT u
.

Altfel spus, matricea transformat


a B = Uk A este o modificare de rang 1 a lui A.
Aplicarea transformarii C = AUk , unde acum A Rlm are m coloane,
iar Uk actioneaza la dreapta, se face partitionand A pe linii si observand ca, n
T
virtutea simetriei lui Uk , avem AUk = (Uk AT ) . Prin urmare, asupra coloanelor
lui AT , adica a liniilor lui A, are loc aceeasi transformare ca mai sus. In particular,
postmultiplicarea cu Uk nu modifica primele k 1 coloane ale matricei A.
AA. In calculul numeric generarea reflectorilor se face n scopul introducerii
de zerouri ntr-un vector. Pe scurt, fiind dat un vector x Rm , putem determina
un reflector Uk de forma (3.8) astfel ncat ultimele m k componente ale vectorului
transformat s
a fie nule, i.e. (Uk x)i = 0, pentru i = k + 1 : m. Formularea precisa a
acestui fapt esential trebuie retinuta.
Propozitia 3.1 Fix
am un ntreg k 1 : m 1 si fie x Rm un vector astfel nc
at
2 def

m
X
i=k

x2i 6= 0.

Vectorul Householder u Rm av
and componentele
(
0,
pentru i = 1 : k 1
ui = xk + , pentru i = k
xi ,
pentru i = k + 1 : m

(3.13)

(3.14)

precum si scalarul

1
kuk2 = uk
2
definesc un reflector Uk de ordin m si indice k astfel nc
at
(
xi , pentru i = 1 : k 1
(Uk x)i = , pentru i = k
0,
pentru i = k + 1 : m.
def

(3.15)

(3.16)

Intr-adevar, datorita alegerii (3.14), avem


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

Demonstratie.

i=k

i=k+1

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


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

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


3.1. TRANSFORMARI
ORTOGONALE

129

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


reflectorului Uk cu proprietatea ceruta. Constanta este determinata, mai putin
semnul, de faptul ca Uk este o matrice ortogonala, deci kUk xk = kxk (vezi (3.13) si
(3.16)). Pentru a evita pierderea de cifre semnificative la calculul componentei
uk = xk + , semnul lui se alege acelasi cu cel al lui xk . (Mentionam ca
aceasta alegere este esentiala pentru stabilitatea numerica a algoritmului rezultat.)
Consideratiile de mai sus pot fi rezumate astfel.
Algoritmul 3.2 (Se dau un ntreg k 1 : m 1 si un vector
x Rm cu proprietatea (3.13). Se determina un reflector Uk astfel
ncat (Uk x)i = 0, pentru i = k+ 1 : m.)
Pm 2 1/2
1. = sgn(xk )
i=k xi
2. uk = + xk ; ui = xi , pentru i = k + 1 : m
3. = uk
% Vectorul transformat
4. xk = ; xi = 0, pentru i = k + 1 : m
Comentarii.
Subliniem nca o data ca reflectorul Uk nu se formeaza niciodata
ca matrice, ci este complet definit numai prin intermediul vectorului u (ale carui
prime k 1 componente sunt nule) precum si al scalarului . Ultimele componente
ui , i = k + 1 : m, ale lui u se memoreaza natural pe pozitiile elementelor anulate
din x, dupa aplicarea transformarii (vezi pasii 2 si 4). Componenta uk si scalarul
se memoreaza separat. Numarul de operatii necesar este Nop 2(m k) (plus o
extragere de radical), vezi pasul 1.

5
Implementarea algoritmului 3.2 tine seama de urmatoarele considerente specifice.
1 . Pentru a evita eventualele depasiri n virgula mobil
a, posibile daca elementele
xi , i = k : m, au valori absolute foarte mari sau foarte mici, calculul normei
euclidiene de la pasul 1 se asociaza cu scalarea vectorului corespunzator, e.g. prin
raportare la M = maxi=k:m |xi |. (Pentru indicatii mai precise, vezi sectiunea 3.1.2.)
2 . Daca n situatia de la punctul 1 rezulta M = 0 sau = 0, i.e. toate
componentele xi , i = k : m, ale vectorului dat x sunt deja nule, atunci convenim
sa consideram Uk = Im si sa semnalam aceasta situatie punand = 0. (Matricea
unitate Im este ortogonala si poate fi asimilata cu un reflector impropriu). Aceeasi
conventie se adopta daca algoritmul 3.2 este apelat pentru k = m.
3 . Deoarece vectorul Householder u este esential determinat numai ca directie,
la pasul 2 se poate face scalarea acestuia, e.g. luand
xk
xi
2 . uk = 1 +
; ui = , i = k + 1 : m.

Se vede usor ca n acest caz rezult


a = uk , deci organizarea procedurala a calculelor
se simplifica, n particular se memoreaza separat un singur numar 6 . (Cresterea
numarului de operatii este fara importanta.) Rezum
and cele de mai sus, obtinem
5 Convenim

ca functia sgn : R R utilizat


a n algoritmii ce urmeaz
a este definit
a de
1, dac
ax<0
sgn(x) =
. Atragem atentia c
a utilizarea unor functii sgn predefinite n di1,
dac
ax0
verse limbaje de nivel nalt (pentru care de regul
a sgn(0) = 0) poate conduce la rezultate eronate.
6 Alternativ, u poate fi scalat astfel
nc
at uk = 1. Aceast
a posibilitate va fi discutat
a mai
departe.

130

CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE


% Forma implementabila a algoritmului 3.2.
1. = 0
2. Dac
ak<m
Pm 2 1/2
1. =
i=k xi
2. Dac
a 6= 0
1. sgn(xk )
2. xi ui = xi /, pentru i = k : m
3. uk = 1 + xk
% Componenta k a vectorului transformat
4. xk =

Pe scurt, la pasul 2.1 are loc calculul normei, careia mai departe i se atribuie
semnul corespunzator, iar la pasul 2.2.2 are loc scalarea vectorului Householder u.
Componentele ui , i = k + 1 : m, care constituie partea esentiala a vectorului u, se
memoreaza pe pozitiile corespunzatoare din x. In final, se calculeaza si se memoreaza separat scalarul = uk , iar componenta de indice k a vectorului transformat
este returnata pe pozitia corespunzatoare xk , vezi (3.16).
Observatia 3.1 In unele aplicatii apar reflectori modificati Uk , de forma (3.8), n
care, spre deosebire de (3.9), vectorul Householder u are ultimele k 1 componente
nule, i.e.
u = [ u1 . . . umk+1 0 . . . 0 ]T .
(3.17)
In consecinta, matricea Uk are acum structura


1
U
0
Uk =
,
(3.18)
0 Ik1
deci, n procesul de aplicare a transformarii x Uk x, premultiplicarea cu Uk
nu modifica ultimele k 1 componente ale lui x. De asemenea, este clar ca prin
alegerea adecvata a vectorului Householder u, putem genera un reflector modificat
Uk astfel ncat primele m k componente ale vectorului transformat s
a fie nule, i.e.
(Uk x)i = 0, i = 1 : m k. Scrierea algoritmilor de transformare si generare a
reflectorilor modificati, perfect similari cu algoritmii 3.1 si 3.2 stabiliti anterior, este
propusa ca exercitiu.

Proceduri de calcul cu reflectori


In problemele de calcul numeric relativ simple, algoritmii 3.1 si 3.2 (ultimul, sub
forma sa implementabila) pot fi utilizati ca atare. In practica profesionala, calculele se organizeaza procedural, exploatand faptul ca algoritmii mentionati sunt
vectorizati n mod natural.
Pentru nceput, observam ca, n acord cu (3.10), partea activa a unui reflector
Uk de indice k este ntotdeauna un reflector de indice 1 care actioneaza asupra unui
vector de dimensiune adecvata. De aceea, n continuare vom considera k = 1.
AA. Fie x Rm un vector dat. Generarea unui reflector U1 astfel ncat (U1 x)i =
0, i = 2 : m, adica
U1 x = e1 ,
(3.19)
se face utilizand forma implementabila a algoritmului 3.2 n care punem k = 1.


3.1. TRANSFORMARI
ORTOGONALE

x1
x2
..
.
xm

U1

u2
..
.
um

131

x1
..
.

xk1

xk

xk+1

.
..
xm

Uk

x1
..
.

xk1

uk+1

.
..
um

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


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

RFG

% Se da x Rm . Se genereaza un reflector U1 cu proprietatea (3.19) si se aplica transformarea. Partea esentiala ui ,


i = 2 : m, a vectorului Householder u se memoreaza pe
pozitiile corespunzatoare din x. La aplicarea ulterioara a
transformarii se considera u1 = .
1. = 0
2. Dac
a m > 1 atunci
1. = kxk
% NRM2
2. Dac
a 6= 0 atunci
1. Dac
a x1 6= 0 atunci sgn(x1 )
2. xi ui = xi /, pentru i = 1 : m % SCAL
3. u1 = 1 + x1
4. x1

Comentarii. La pasul 2.1 nu am explicitat modul de calcul al normei euclidiene


pentru a aminti necesitatea scalarii lui x. La pasul 2.2.2 are loc scalarea lui u, specific
a procedurii RFG. Avand n vedere considerente de eficienta, la pasii mentionati
se recomanda utilizarea procedurilor NRM2 si SCAL din BLAS. Observam ca daca
vectorul dat x este nul sau are o singura componenta, atunci algoritmul returneaza
= 0, ceea ce, conform conventiei adoptate anterior, nseamna ca U1 = Im .
Modul de apel al procedurii de generare (evidentiind argumentele de intrare si
iesire) este [u, , x] = RFG(x). Pentru a sublinia ca, dupa cum am spus, partea
esentiala ui , i = 2 : m, a vectorului Householder este returnata n x, mai departe
vom nota
= RFG(x),
n care x apare ca tablou de intrare/iesire. In consecinta, executia instructiunilor
= RFG(x), respectiv = RFG(x(k : m)), are efectul indicat n figura 3.2.
AA. Fie acum U1 un reflector dat, generat de RFG, iar x Rm un vector
arbitrar. Aplicarea transformarii
x U1 x

(3.20)


CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE

132
Transformare
Reflector
def

U1 = (u, )
x Rm
Reflector
modificat
def

U1 = (u, )
x Rm

Functie

Mod de apel

Apel rapid

U1 x = e1

[u, , x] = RFG(x)

= RFG(x)

x U1 x

x = RF(u, , x)

RF(u, , x)

U1 x = em

[u, , x] = mRFG(x)

= mRFG(x)

x U1 x

x = mRF(u, , x)

mRF(u, , x)

Obs.
u1 =

um =

Tabelul 3.1: Proceduri de calcul cu reflectori


se face avand n vedere algoritmul 3.1 precum si conventia specifica de memorare
a vectorului Householder u. Not
and = si tinand seama ca u1 = , vectorul
transformat poate fi calculat efectuand numai adunari si nmultiri.
RF

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


x Rm . Se aplic
a transformarea x U1 x.
1. Dac
a 6= 0 atunci
1. t = u1
2. u1 = P
m
3. = ( i=1 ui xi )/
% DOT
4. xi xi + ui , pentru i = 1 : m
% SAXPY
5. u1 = t

Comentarii.
Deoarece = 0 semnaleaza ca U1 = Im , transformarea se aplica
efectiv numai daca 6= 0. Prima componenta u1 a lui u nu este alterata, deoarece
ea contine informatii despre vectorul transformat n procesul de generare a reflectorului.
Modul de apel al procedurii este x = RF(u, , x). Deoarece transformarea se
efectueaza ntotdeauna pe loc n x, vom scrie simplu RF(u, , x).

Procedurile de calcul cu reflectori modificati se scriu similar. De exemplu, generarea unui reflector (modificat) U1 astfel ncat (U1 x)i = 0, i = 1 : m 1, adica
U1 x = em ,
se face nlocuind pur si simplu x1 cu xm n RFG. (Desigur, acum partea esentiala
a vectorului Householder u este ui , i = 1 : m 1, iar um = .) Scrierea detaliata
a procedurilor de generare si aplicare a reflectorilor modificati, notate mai departe
mRFG si respectiv mRF, este propusa cititorului ca exercitiu.
Procedurile de calcul cu reflectori sunt prezentate sintetic n tabelul 3.1.
Subliniem ca, n general, procedurile de generare si aplicare a reflectorilor apar
n perechi, modificarea conventiei de memorare a vectorului Householder din RFG
antrenand dupa sine o modificare corespunzatoare n RF.
Ilustram utilizarea procedurilor prin doua exemple simple, dar extrem de importante pentru ntreaga expunere ulterioara.


3.1. TRANSFORMARI
ORTOGONALE

133

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

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

Desigur, reflectorul U1 obtinut la pasul 1 poate fi aplicat mai departe unei alte
matrice, atata timp cat partea esentiala A(2 : m, 1) a vectorului Householder u
precum si scalarul sunt disponibili. De exemplu, daca C Rlm , atunci transformarea la dreapta C CU1 se efectueaza partitionand C pe linii, i.e.
1. Pentru i = 1 : l
1. RF(A(:, 1), , C(i, :)).

Exemplul 3.4
Se da o matrice A Rmn . Vom determina un reflector
nn
Z1 R
astfel ncat elementele nediagonale din prima linie a matricei B = AZ1
sa fie nule; apoi vom calcula matricea transformata A B = AZ1 .
Deoarece transformarea se aplica la dreapta, partition
am A pe linii. Rationand
la fel ca mai sus, algoritmul de calcul este
LQ1

1. = RFG(A(1, :))
1. Pentru i = 2 : m
1. RF(A(1, :), , A(i, :)).

Pentru a evidentia avantajele organizarii procedurale, propunem cititorului sa


scrie detaliat algoritmii de calcul stabiliti mai sus, nlocuind apelurile la procedurile
RFG si RF cu secventele de instructiuni scalare corespunzatoare. Avand n
vedere expunerea ulterioara, mentionam ca acesti algoritmi efectueaza prima etapa
de triangularizare a matricei A prin transformari ortogonale la stanga si respectiv
la dreapta (vezi sectiunile 3.3 si 3.6).

3.1.2

Rotatii

Dupa cum se stie, n cazul m = 2 o rotatie (plana) de unghi se reprezinta prin


matricea


cos sin
P =
.
(3.21)
sin
cos
In cazul general m 2, vom adopta urmatoarea definitie.

134

CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE

Definitia 3.2 Fix


am doi ntregi i 6= k 1 : m. O matrice Pki Rmm de forma

Ik1

c
s

, unde c2 + s2 = 1
Iik1
Pki =
(3.22)

s
c
Imi

se numeste rotatie de ordinul m n planul (k, i) sau transformare Givens 7 .

Se constata imediat ca orice rotatie Pki este o matrice ortogonal


a.
Rotatiile Pki cu structura precizata mai sus au doua proprietati importante.
AA. Fiind date o rotatie Pki si un vector x Rm , aplicarea transform
arii Pki ,
i.e. calculul vectorului transformat y = Pki x, se face extrem de simplu. Din (3.22)
se vede ca Pki modifica numai elementele lui x cu aceiasi indici, deci calculele se
desfasoara avantajos pe loc n x, utilizand urmatoarea procedura.
Algoritmul 3.3 (Se dau o rotatie Pki si un vector x Rm . Se
aplica transformarea x Pki x).
1. t = xk
2. xk = ct + sxi
3. xi = cxi st

Numarul de operatii necesar este Nop = 6.


Aplicarea transformarii B = Pki A, unde A Rmn este o matrice cu n coloane,
se face utilizand algoritmul 3.3 pentru actualizarea fiec
arei coloane.
% Se aplica transformarea A Pki A
1. Pentru j = 1 : n
1. aj Pki aj
T
Aplicarea transformarii C = APki
se face similar, partitionand A pe linii.
In legatura cu algoritmul 3.3, este important sa retinem ca, spre deosebire de
T
reflectori, rotatiile nu sunt matrice simetrice. Mai precis, transformarea x Pki
x
difera de transformarea x Pki x, considerata mai sus, prin semnul scalarului s.

AA. La fel ca n cazul reflectorilor, generarea rotatiilor vizeaza introducerea de


zerouri ntr-un vector. Mai precis, fiind dat un vector x Rm , putem determina
o rotatie Pki astfel ncat componenta i a vectorului transformat s
a fie nul
a, i.e.
(Pki x)i = 0.
Propozitia 3.2 Fix
am doi ntregi i 6= k 1 : m si fie x Rm un vector astfel
nc
at
def
r2 = x2k + x2i 6= 0.
(3.23)
7 De
si cunoscute din secolul trecut si utilizate de Jacobi, Rotatiile au fost introduse n calculul
numeric de W. Givens n 1954. Structura (3.22) corespunde cazului i > k, iar n (3.21) avem
P = P12 cu c = cos , s = sin . Subliniem c
a, n acceptiunea noastr
a, o rotatie este definit
a de
dou
a numere reale c, s, satisf
ac
and conditia c2 + s2 = 1. Evident, n acest fel se evit
a utilizarea
n calcule a functiilor trigonometrice.


3.1. TRANSFORMARI
ORTOGONALE
Numerele reale

135

xk
xi
, s=
r
r
de ordin m n planul (k, i) astfel nc
at
c=

definesc o rotatie Pki

(Pki x)l =

xl ,
r,
0,

pentru l 6= k, i
pentru l = k
pentru l = i.

Demonstratia este imediata observand ca avem




 

c s
xk
r
=
,
s c
xi
0

(3.24)

(3.25)

(3.26)

precum si c2 + s2 = 1.

Precizand (deocamdata arbitrar) semnul lui r, relatiile (3.23) si (3.24) conduc


la urmatorul algoritm de calcul al rotatiei Pki cu proprietatea ceruta.
Algoritmul 3.4 (Se dau i 6= k 1 : m si un vector x Rm . Se
calculeaza o rotatie Pki astfel ncat (Pki x)i = 0).
p
1. r = x2k + x2i
2. c = xk /r, s = xi /r
% vectorul transformat
3. xk = r; xi = 0
Numarul de operatii necesar este Nop = 6.
Semnificatia geometrica a rotatiei Pki calculate de algoritmul 3.4 apare n figura
3.3, unde m = 2, k = 1, i = 2.
Implementarea algoritmului 3.4 tine seama de urmatoarele considerente.
1 . La pasul 1 se recomanda scalarea componentelor xk si xi , de exemplu prin
mpartire la N = |xk | + |xi |.
2 . Daca N = 0 sau r = 0, i.e. ambele componente xk si xi sunt deja nule,
atunci se ia Pki = Im , punand c = 1, s = 0.
3 . Semnul lui r se alege astfel ncat r si cel mai mare (n valoare absoluta)
dintre cele doua numere xk si xi sa aiba acelasi semn.
Aceasta conventie, adoptata n BLAS, nu este importanta n sine, dar are avantajul de a permite reconstructia numeric stabila a parametrilor c, s, dintr-un singur
numar z. (Desigur, n acest fel devine posibila memorarea rotatiei Pki pe pozitia
elementului xi anulat prin aplicarea transformarii la pasul 3). Precizarile necesare
vor fi facute mai departe.
Observatia 3.2 Retinem ca, desi rotatiile sunt transformari considerabil mai
simple decat reflectorii, ele sunt n acelasi timp si mai putin eficiente decat acestia,
ntrucat o rotatie permite anularea unei singure componente a vectorului transformat. (Tocmai de aceea rotatiile se utilizeaza mai ales n probleme cu date structurate, asupra carora ele au un efect de rezolutie fina a zerourilor.)
In caz de nevoie, un efect similar cu al reflectorului Uk determinat de algoritmul
3.2 poate fi obtinut utilizand o secventa
de rotatii, e.g.


CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE

136

x2 6

x
>





r 




x1 P12 x

Fig. 3.3: Efectul aplicarii unei rotatii P12 asupra unui vector x R2

Pk = Pkm . . . Pk,k+2 Pk,k+1 ,

(3.27)

n care rotatiile Pki se determina succesiv (aplicand algoritmul 3.4) pentru a anula
componentele corespunzatoare xi , i = k + 1 : m. (Scrierea algoritmului de calcul
este propusa ca exercitiu.) Alternativ, n acelasi scop poate fi utilizata secventa
Pk = Pk,k+1 Pk+1,k+2 . . . Pm1,m ,

(3.28)

n care rotatiile Pki anuleaza aceleasi componente n ordine inversa, adic


a xi ,
i = m : 1 : k + 1.
Mentionam ca n practica se utilizeaza frecvent secvente de rotatii disjuncte care
au proprietati numerice mai bune, vezi problemele 3.14 si 3.22 8 .

Proceduri de calcul cu rotatii


In continuare dam cateva indicatii privind organizarea procedurala a calculelor cu
rotatii 9 . Deoarece partea activa a unei rotatii Pki de forma (3.22) este evident o
rotatie plana ce actioneaza asupra unui vector x R2 , n continuare vom considera
m = 2 si vom nota P12 = P .
AA. Fie x R2 un vector dat. Generarea unei rotatii P astfel ncat (P x)2 = 0,
adica


  
c s
x1
r
=
,
(3.29)
s c
x2
0
se face tinand seama de indicatiile de implementare ce nsotesc algoritmul 3.4.
ROTG

8 Dou
a

% Se da x R2 . Se genereaza o rotatie P cu proprietatea


(3.29) si se aplica transformarea. Totodata, pe pozitia elementului anulat x2 se returneaza scalarul z, pe baza caruia
este posibila reconstructia numeric stabila a parametrilor
c, s.
1. r = kxk
2. Dac
a r = 0 atunci

rotatii Pki , Plj se numesc disjuncte dac


a toti indicii sunt diferiti.
c
a, ntruc
at opereaz
a asupra unor vectori cu dou
a componente, procedurile de calcul
cu rotatii sunt de tip scalar.
9 Subliniem


3.1. TRANSFORMARI
ORTOGONALE

137

1. c = 1, s = 0
altfel
2. Dac
a |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
a c = 0 atunci
1. z = 1
altfel dac
a |x2 | |x1 | atunci
2. z = 1/c
altfel
3. z = s
6. x2 = z

Modul de apel al procedurii de generare este [c, s, x1 , x2 ] = ROTG(x1 , x2 ).

AA. Fie acum P o rotatie data, generata de ROTG, iar x R2 un vector


arbitrar. Aplicarea transformarii

x Px

(3.30)

se face direct numai daca parametrii c, s sunt disponibili ca atare; n caz contrar, n
prealabil are loc reconstructia lor pe baza scalarului z, utilizand secventa urmatoare.


CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE

138
Transformare

Functie

Rotatie

P x = re1

def

P =(c, s)

a
x=
b

x Px

Mod de apel

Obs.
ar
[c, s, a, b] = ROTG(a, b) [c, s] = ROTG(a, b)
bz
[a, b] = ROT(c, s, a, b)

x P T x [a, b] = ROT(c, s, a, b)

Apel rapid

ROT(c, s, a, b)

ROT(c, s, a, b)

Tabelul 3.2: Proceduri de calcul cu rotatii. (N.B. Semnificatia lui z este precizata
n text)
% Reconstructia perechii (c, s).
1. Dac
a z = 1 atunci
1. c = 0, s = 1
altfel dac
a |z| >1 atunci
2. c = 1/z, s = 1 c2
altfel

3. s = z, c = 1 s2
Procedura de transformare propriu-zisa coincide n esenta cu algoritmul 3.3.
ROT

%
1.
2.
3.

Se aplica transformarea x P x.
t = x1
x1 ct + sx2
x2 cx2 st

Modul de apel al procedurii este [x1 , x2 ] = ROT(c, s, x1 , x2 ).


Procedurile de calcul cu rotatii sunt prezentate sintetic n tabelul 3.2. (Si n
cazul rotatiilor, ca si al reflectorilor, mai departe vom utiliza notatiile procedurale
prescurtate indicate n penultima coloana a tabelului.)

3.2

Transform
ari unitare

In aceasta sectiune vom prezenta principalele transformari unitare utilizate n calculele cu matrice complexe. Avand n vedere ca propriet
atile structurale ale acestor
transformari sunt aceleasi cu proprietatile similare ale transformarilor ortogonale
descrise n sectiunea anterioara, expunerea va fi orientata n principal asupra aspectelor procedurale specifice.

3.2.1

Reflectori complecsi

Consideram spatiul complex Cm cu produsul scalar (x, y) = y H x si norma euclidiana


m
X
kxk = (xH x)1/2 = (
|xi |2 )1/2 .
i=1


3.2. TRANSFORMARI
UNITARE

139

Im 6

9

'$
0r

r
= 1 =
&%

Re2
kuk2

Fig. 3.4: Cercul n planul complex

Amintim ca o matrice Q Cmm se numeste unitara daca QH Q = Im .


Fie u Cm un vector Householder, u 6= 0. Consideram matrice complexe de
forma
uuH
not
U1 = QH
,
(3.31)
1 = Im

respectiv
Q1 = Im uuH ,
(3.32)
1

unde si sunt doi parametri legati prin relatia = . Avem


QH
uuH )(Im uuH ) = Im ( + )uuH + | |2 u(uH u)uH ,
1 Q1 = (Im
deci matricea Q1 este unitara daca si numai daca
2Re = | |2 kuk2 ,

(3.33)

i.e. scalarul apartine cercului din planul complex care trece prin origine si are
raza egala cu 1/kuk2 (vezi figura 3.4). Pe de alta parte, matricea Q1 este hermitica
daca si numai daca R. Asociind cele doua proprietati, pentru = 0 obtinem
Q1 = Im , iar pentru
1
2
= =
,
(3.34)

kuk2

din (3.31) sau (3.32) obtinem reflectorii hermitici care constituie generalizarea directa a reflectorilor reali din (3.8).
Pentru toate celelalte valori ( 6= 0 si 6= 2/kuk2), matricele de forma
(3.32) sunt unitare si de aceea se numesc (abuziv dar comod) reflectori complecsi.
Subliniem ca, n aceasta acceptiune mai larga, reflectorii complecsi nu sunt hermitici, deci necesita o manipulare relativ mai atenta decat omologii lor reali (acum
not
U1 = QH
1 6= Q1 !).
AA. Fie x Cm un vector dat. Vom determina un reflector Q1 astfel ncat
H
(Q1 x)i = 0, i = 2 : m, i.e.
QH
(3.35)
1 x = e1 ,

unde C este un scalar nca nedeterminat. Deoarece matricea Q1 este unitara


trebuie sa avem kQH
1 xk = kxk, deci modulul lui este fixat, mai precis || = kxk.
Din considerente de stabilitate numerica, vom alege
x1
=
kxk
(3.36)
|x1 |

140

CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE

sau
= sgn(Rex1 )kxk.

(3.37)

(Retinem ca n primul caz C, iar n al doilea R.)


In continuare scriem ca de obicei
QH
1 x = (Im

uuH
)x = x u,

unde
=

uH x
.

(3.38)

(3.39)

Prin urmare, relatia (3.35) are loc daca si numai daca u = (x + e1 )/, sau pe
componente
x1 +
xi
u1 =
;
ui = , i = 2 : m.
(3.40)

De asemenea, trebuie sa avem


=

uH x
(xH +
eT1 )x
kxk2 +
x1
=
=
,

||2
||2

unde, conform celor spuse mai sus, kxk2 = ||2 , deci


=

x1 +
.

(3.41)

Pentru a determina complet reflectorul U1 cu proprietatea (3.35) ramane sa


precizam valoarea parametrului de scalare 6= 0 din (3.40) si (3.41).
a) Daca luam = 1 si alegem din (3.36) (sau din (3.37)), atunci obtinem
analogul complex al algoritmului 3.1.
b) Pe de alta parte, daca dorim simplificarea relatiei (3.41), atunci sunt posibile
dou
a alegeri, i.e. = si = x1 + , care conduc la
(
xi
x1
u1 = 1 + ; ui = , i = 2 : m
(3.42)

= u1
si respectiv

u1 = 1;

xi
, i=2:m
x1 +
x
1

= 1 + 1 , ( = ).

ui =

(3.43)

In practica numerica actuala se ntalnesc doua versiuni de implementare a relatiilor de calcul stabilite mai sus.
In LINPACK [XIII] se asociaza relatiile (3.36) si (3.42). In consecinta, para
metrul = u1 rezulta real, deci reflectorul obtinut este hermitic, QH
1 = Q1 . In
schimb, prima componenta a vectorului transformat
x1


3.2. TRANSFORMARI
UNITARE

141

este complexa. Procedura de generare a reflectorului hermitic Q1 difera de procedura reala RFG numai prin modul de calcul al lui , vezi (3.36).
In LAPACK [XV] se asociaza relatiile (3.37) si (3.43). Instrumentul fundamental de lucru este acum reflectorul complex Q1 , n care parametrul rezulta
complex; n schimb faptul ca u1 = 1 si R poate fi exploatat avantajos n multe
situatii concrete. Procedura de generare a reflectorului Q1 este urmatoarea.
CRFG

% Se da x Cm . Se genereaza un reflector complex Q1 cu proprietatea (3.35) si se aplica transformarea. Componentele


ui , i = 2 : m, ale vectorului Householder u se memoreaza
pe pozitiile corespunzatoare din x. La aplicarea ulterioara
a transformarii se considera u1 = 1.
1. = 0
2. Dac
a m > 1 atunci
1. = kxk
2. Dac
a 6= 0 atunci
1. Dac
a Re(x1 ) 6= 0 atunci sgn(Rex1 )
2. xi ui = xi /(x1 + ), pentru i = 1 : m
3. (x1 + )/
4. x1

Comentarii. Calculul normei euclidiene la pasul 2.1 se poate face utilizand functia
complexa CNRM2 din BLAS 1.

AA. Fie acum x Cm un vector arbitrar, iar Q1 un reflector dat. Aplicarea


transformarilor
x Q1 x
(3.44)
x QH
1 x,
se face tinand seama de relatiile (3.38), (3.39) precum si de tipul reflectorului considerat.
Daca Q1 este un reflector hermitic, atunci cele doua transformari (3.44) coincid, iar procedura corespunzatoare difera de procedura reala RF numai prin utilizarea produsului scalar complex la pasul 1.1, vezi (3.39).
Daca Q1 este un reflector complex, generat de procedura CRFG, atunci se
tine seama ca prima componenta u1 = 1 a vectorului Householder nu este memorata
ca atare. Scrierea procedurii de transformare corespunzatoare primei relatii (3.44),
de exemplu notata CRF, este propusa ca exercitiu.
Procedurile de calcul cu reflectori complecsi sunt prezentate n tabelul 3.3 10 .
La fel ca n cazul real, tipic procedura CRFG se utilizeaza pentru a introduce
zerouri ntr-o anumita coloana a unei matrice A, iar procedura CRF se utilizeaza
pentru a transforma n mod corespunzator celelalte coloane.
Presupunand ca tabloul A e dimensionat adecvat, n general exista patru tipuri
de transformari posibile, doua la stanga (QA si QH A) si doua la dreapta (AQ si
AQH ). In primul caz A se partitioneaza pe coloane si fiecarei coloane i se aplica
transformarea corespunzatoare. In al doilea caz A se partitioneaza pe linii. 11
10 Procedurile de calcul cu reflectori complec
si modificati, e.g. CmRFG etc. se scriu similar cu
cazul real. Detaliile sunt l
asate n sarcina cititorului interesat.
11 Pentru a acoperi toate aceste situat
ii cu o singur
a procedur
a CLARF, n LAPACK (ca si n


CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE

142

Transformare
Functie
Mod de apel
Apel rapid
Reflector
QH
1 x = e1 [u, , x] = CRFG(x) = CRFG(x)
complex
def
x QH
x = CRF(u, , x)
CRF(u, , x)
1 x
Q = (, u)

Obs.
C
R

x Cm

x Q1 x

x = CRF(u, , x)

CRF(u, , x)

Tabelul 3.3: Proceduri de calcul cu reflectori complecsi. Procedurile de calcul cu


reflectori hermitici sunt similare cu RFG si RF

3.2.2

Rotatii complexe

Consideram spatiul complex C2 cu norma euclidiana kxk = (|x1 |2 + |x2 |2 )1/2 .


O rotatie complex
a este o matrice de forma


c s
P =
,
(3.45)

s c
n care parametrii c, s satisfac relatia
|c|2 + |s|2 = 1.

(3.46)

Se verifica usor ca matricea P este unitara, i.e. P H P = I2 .


AA. Fie x C2 un vector dat. Vom determina o rotatie complexa P astfel
ncat


  
c s
x1
r
=
,
(3.47)

s c
x2
0
unde r este un scalar astfel ncat |r| = kxk. O analiza simpla arata ca aici, ca si n
cazul reflectorilor complecsi, sunt posibile doua optiuni.
Putem alege r complex, e.g.
r=

x1
kxk,
|x1 |

(3.48)

si n acest caz obtinem


c=

|x1 |
,
kxk

s=

x1 x
2
,
|x1 | kxk

(3.49)

deci parametrul c rezulta real pozitiv. Procedura de calcul este urmatoarea.


CROTG

% Se da x R2 . Se genereaza o rotatie complexa P cu proprietatea (3.47) si se efectueaza transformarea.


1. Dac
a |x1 | = 0 atunci
1. c = 0, s = 1

BLAS3) se utilizeaz
a optiunile TRANS si SIDE, vezi sectiunea 1.11. Subliniem c
a urm
arirea acestor
detalii, aparent pur tehnice, este esential
a pentru asigurarea corectitudinii si optimizarea calculatorie a algoritmilor de calcul obtinuti.


3.3. TRIANGULARIZAREA ORTOGONALA

143

Transformare Functie
Mod de apel
Apel rapid
Obs.
Rotatie
cR
P x = re1 [c, s, a, b] = CROTG(a, b) [c, s] = CROTG(a, b)
complexa
rC
def

P =(c, s)

a
x=
b

x Px

[a, b] = CROT(c, s, a, b)

x P x [a, b] = CROT(
c, s, a, b)

CROT(c, s, a, b)

CROT(
c, s, a, b)

Tabelul 3.4: Proceduri de calcul cu rotatii complexe


2. x1 r = x2 , x2 = 0
altfel
3. = x1 / |x1 |
4. = kxk
5. c = |x1 | / , s =
x2 /
6. x1 r = , x2 = 0
Alternativ, putem alege r real, de exemplu
r = sgn(Rex1 )kxk

(3.50)

si n acest caz ambii parametri


c=

x1
,
r

s=

x
2
r

(3.51)

rezulta complecsi. (Mentionam c


a n practica se ntalnesc ambele optiuni (3.48) si
(3.50), implementate sub diverse forme relativ sofisticate.)
AA. Fie acum P o rotatie complexa data, generata de CROTG, iar x C2 un
vector arbitrar. Procedura de transformare
x P x,

(3.52)

de exemplu notata CROT, se scrie cu usurinta n maniera algoritmului 3.3, dar,


desigur, tinand seama de forma actuala (3.45) a lui P .
Procedurile de calcul cu rotatii complexe sunt prezentate sintetic n tabelul 3.4.

3.3

Triangularizarea ortogonal
a

In aceasta sectiune vom descrie principalele proceduri de triangularizare a unei


matrice A Cmn prin transformari unitare de echivalenta la stanga. In cazul real
A Rmn , n acelasi scop se utilizeaza transformari ortogonale. Pentru concizia
expunerii vom considera ambele cazuri n paralel.
not

Teorema 3.1 Oricare ar fi A Cmn , exist


a o matrice unitara U = QH Cmm
astfel nc
at matricea
U A = R,
respectiv QH A = R
(3.53)

144

CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE

este superior triunghiulara.

In cazul real A Rmn , matricea de transformare U = QT poate fi aleas


a real
a
si ortogonal
a, deci R rezult
a real
a.
Pe scurt, orice matrice este unitar echivalent
a (la stanga) cu o matrice superior
triunghiulara. A doua relatie arata ca A poate fi scrisa sub forma unui produs
A = QR, unde Q este unitara, iar R este superior triunghiulara. In calculul numeric,
aceasta relatie se numeste factorizare QR, de aceea procedurile de calcul stabilite
pe baza relatiei fundamentale (3.53) vor fi notate cu sigla QR. (Asupra factorizarii
QR vom reveni pe larg n sectiunea urmatoare.)
Demonstratia va fi constructiva, conducand la o procedura de triangularizare
ortogonala a matricei A utilizand reflectori sau rotatii. Pentru precizare, n cele ce
urmeaza alegem prima posibilitate.
In cazul real, ne referim la faptele stabilite n sectiunea 3.1.1 si pentru claritate
consideram succesiv doua situatii cu semnificatii structurale distincte.
In cazul m > n matricea de transformare va fi un produs de reflectori, i.e.
U = Q T = Un . . . U2 U1 ,
unde reflectorii Uk ce se determina prin metodele cunoscute pentru a introduce
zerourile necesare n coloanele corespunzatoare ak , k = 1 : n, ale matricei A.
In consecinta, procedura de triangularizare are n etape. Notam A1 = A, unde
A = [a1 a2 . . . an ].
Etapa 1. Daca elementele ai1 , i = 2 : m, nu sunt toate nule, atunci conform
propozitiei 3.1, exista un reflector U1 Rmm de ordinul m si indice 1, astfel ncat
(U1 a1 )i = 0, i = 2 : m.
In virtutea acestui fapt, matricea transformata

A2 = U1 A1 = [U1 a1 U1 a2 . . . U1 an ] =

r11
0
0

r12
(2)
a22
(2)
a32

am2

(2)

. . . r1n
(2)
. . . a2n
(2)
. . . a3n
...
(2)
. . . amn

are toate elementele subdiagonale ale primei coloane egale cu zero, i.e. este superior
triunghiulara n prima coloana. Daca ai1 = 0 pentru i = 2 : m, atunci luam
pur si simplu U1 = Im si trecem la etapa urmatoare. (Matricea unitate Im este
ortogonala !)
Etapa k, k = 2 : n. Presupunem ca dupa desfasurarea primelor k 1 etape ale
procedurii am obtinut matricea
Ak = Uk1 . . . U2 U1 A


3.3. TRIANGULARIZAREA ORTOGONALA

145

superior triunghiulara n primele k 1 coloane, i.e.

r11 r12 . . . r1,k1


r1k

r
.
.
.
r
r2k
22
2,k1

..
..
..

.
.
.

r
r
k1,k1
k1,k

(k)
(k)
(k)
Ak = [a1 . . . ak . . . a(k)
n ]=
akk

(k)

0
ak+1,k

..

.
(k)
amk

...
...

r1n
r2n
..
.

. . . rk1,n
(k)
. . . akn
(k)
. . . ak+1,n
..
.
(k)
. . . amn

(k)

Acum, daca elementele aik , i = k + 1 : m, nu sunt toate nule, atunci exista un


reflector Uk Rmm de ordinul m si indice k, astfel ncat
(k)

(Uk ak )i = 0, i = k + 1 : m.
(Altfel, luam Uk = Im si trecem la etapa urmatoare.) Tinand cont de faptul ca
orice reflector de indice k nu modifica un vector ale carui ultime m k + 1 elemente
sunt nule (vezi (3.11), unde = 0), rezulta ca matricea
(k)

Ak+1 = Uk Ak = [Uk a1

(k)

. . . U k ak

. . . Uk a(k)
n ]

are primele k 1 coloane nemodificate, iar n coloana k elementele subdiagonale


sunt nule; prin urmare Ak+1 este superior triunghiulara n primele k coloane. De
asemenea, deoarece reflectorul este de indice k, primele k 1 linii ale lui Ak raman
nemodificate.
Asadar, procedura de anulare a elementelor subdiagonale poate fi initializata,
ca n etapa 1, si, o data pornita, poate fi continuata, ca n etapa k. Astfel, cand
m > n, dupa n etape, obtinem matricea
 
R
def
R = An+1 = Un Un1 . . . U2 U1 A =
,
(3.54)
0
unde R Rnn este superior triunghiulara de ordin n.
In cazul m n, procedand similar, dupa m 1 etape obtinem matricea superior
trapezoidala
def
R = Am = Um1 . . . U2 U1 A = [ R S ],
(3.55)
unde R Rmm este superior triunghiulara de ordin m, iar S Rm(nm) este
un bloc dreptunghiular fara particularitati de structura.
Demonstratia teoremei n cazul real este ncheiata.
In cazul complex rationamentul este identic, iar detaliile pot fi completate cu
usurinta de cititorul interesat prin referire la sectiunea 3.2.1.

Observatia 3.3 Atat enuntul cat si demonstratia teoremei 3.1 au un caracter


procedural, n sensul ca matricea R rezultata n urma procesului de triangularizare


CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE

146

nu trebuie sa fie neaparat superior triunghiulara. De exemplu, n cazul m = n, matricea A poate fi adusa la forma inferior triunghiulara utilizand reflectorii modificati
din observatia 3.1. Aceasta posibilitate va fi discutata n finalul sectiunii urmatoare.
De asemenea, transformarile unitare de echivalenta pot fi aplicate la dreapta matricei A, dupa cum vom arata n sectiunea 3.6. In toate cazurile, tehnica de lucru este
aceeasi, iar alegerea procedurii de triangularizare adecvate este dictata de structura
problemei considerate.

A. Proceduri de triangularizare cu reflectori


Procedura de triangularizare ortogonala degajata pe parcursul demonstratiei de
mai sus este similara cu procedura de eliminare gaussiana, cunoscuta din capitolul
anterior, si, la fel ca aceasta, se poate desfasura pe loc n tabloul A, astfel ncat n
final matricea R sa fie memorata n triunghiul superior al lui A.
In cazul real, relatiile (3.54) si (3.55) conduc la urmatoarea schema de calcul.
QR RF

% Triangularizarea matricei A utilizand reflectori


1. Pentru k = 1 : min (m 1, n)
1. Se determin
a Uk a.. (Uk A)ik = 0, i = k + 1 : m
2. A Uk A.

Daca matricea A este monica, i.e. are coloane independente, atunci la fiecare
etap
a elementele aik , i = k : m, ale matricei curente A nu sunt toate nule. In
consecinta, pentru a determina reflectorul Uk (adica vectorul Householder uk si
scalarul k ), la pasul 1.1 se utilizeaza algoritmul 3.2, aplicat vectorului x = A(:, k).
(Componentele nenule ale vectorilor Householder uk vor fi notate uik , i = k : m.)
Pentru calculul transformarii de la pasul 1.2 se utilizeaza algoritmul 3.1 aplicat
vectorilor x = A(:, j), j = k + 1 : n. Combinand ideile de mai sus, rezulta imediat
% Versiunea primara a algoritmului de triangularizare cu reflectori
1. Pentru k = 1 : min (m 1, n)
% se determina transformarea Uk
Pm 2 1/2
1. = sgn(akk )
i=k aik
2. ukk = akk + ; uik = aik , pentru i = k + 1 : m
3. k = ukk
% se aplica Uk
4. Pentru j P
=k+1:n
1. = ( m
i=k uik aij ) /k
2. aij aij uik , pentru i = k : m
% coloana k
5. akk = ; aik = 0, pentru i = k + 1 : m
Comentarii.
Algoritmul necesita aproximativ NQR = 2(mn2 n3 /3) operatii,
care n principal se consuma la pasul 1.4 pentru actualizarea coloanelor A(k : m, j),
j = k + 1 : n, ale matricei ramase. In particular, daca m = n, atunci
NQR = (4/3)n3 este dublu fata de algoritmul de eliminare gaussiana.


3.3. TRIANGULARIZAREA ORTOGONALA

147

In general, fie acum A Cmn o matrice oarecare. Pentru uniformizarea scrierii,


def
n cazul m n completam sirul de transformari din (3.55) cu Um = Im . De asemeH
nea, notam s = min(m, n), precum si Uk = Qk , unde Qk sunt reflectorii complecsi (n particular hermitici) utilizati pentru anularea elementelor subdiagonale la
etapele k = 1 : s. Cu aceste notatii, relatiile (3.54) si (3.55) pot fi scrise mpreuna
sub forma (3.53), unde
H H
U = QH = QH
(3.56)
s . . . Q2 Q1 ,
iar schema de triangularizare devine
QR

% Schema generala de triangularizare QR


1. Pentru k = 1 : s
1. Se genereaza QH
. (QH
k a.
k A)ik = 0, i = k + 1 : m
H
2. A Qk A.

In cazul real sau n cazul utilizarii reflectorilor hermitici de forma (3.31) avem
QH
a procedurile RFG si RF din
k = Qk , iar implementarea schemei QR are la baz
tabelul 3.1. Componentele uik , i = k + 1 : m, ale vectorilor Householder uk se
memoreaza natural pe pozitiile elementelor anulate, iar scalarii k se memoreaza
ntr-un vector suplimentar, ca n urmatoarea diagrama corespunzatoare situatiei de
dup
a pasul k

r11
r12 . . . r1k
r1,k+1 . . . r1n
u21
r22 . . . r2k
r2,k+1 . . . r2n

..
.
..
..
.
.
.

.
.
.
.
.

uk1
uk2 . . . rkk
rk,k+1 . . . rkn

(k+1)
(k+1)
u
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


...

Algoritmul rezultat se redacteaza astfel.

Algoritmul 3.5 (QR triangularizare ortogonal


a cu reflectori hermitici) (Se da A Cmn . Se efectueaza triangularizarea ortogonala a
matricei A, i.e. QH A = R, unde QH = Qs . . . Q2 Q1 , iar Qk sunt reflectori hermitici. Partea esentiala uk (k + 1 : m) a vectorilor Householder
uk se memoreaza pe pozitiile corespunzatoare A(k + 1 : m, k). La aplicarea ulterioara a transformarilor se tine seama ca ukk = k , k = 1 : s.
Elementele nenule ale matricei superior triunghiulare R suprascriu elementele corespunzatoare din triunghiul superior al matricei A.)
1. Pentru k = 1 : s
1. k = 0
2. Dac
a k < m atunci
1. = kA(k : m, k)k

148

CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE


2. Dac
a 6= 0 atunci
akk

1. Dac
a 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
ik aij ) /k
i=k u
2. aij aij + uik , pentru i = k : m
% elementul diagonal
5. akk =

Comentarii. In cazul real, algoritmul 3.5 necesita NQR operatii 12 si este numeric
stabil, dupa cum vom arata n sectiunea 3.8. Modul de apel este [A, ] = QR(A),
unde este vectorul real cu componentele k , k = 1 : s, iar A apare ca tablou
de intrare-iesire. Subliniem ca algoritmul 3.5 nu calculeaza explicit reflectorii Qk
din (3.56), si cu atat mai putin matricea de transformare QH , ci doar memoreaza
(extrem de economic) toate elementele necesare pentru definirea acestora.

Exemplul 3.5 In cazul matricelor cu structura speciala, algoritmul general prezentat mai sus se adapteaza n mod corespunzator, avand n vedere conservarea struc
turii si exploatarea acesteia

 n scopul reducerii numarului de operatii. In acest sens
R
fie matricea A+ =
, n care blocul lider R Cnn este deja superior triC
unghiular, iar C C(mn)n este un bloc dat cu l = m n 1 linii. Schema de
triangularizare ortogonala este


R+
H
H H
Q A+ =
, QH = QH
n . . . Q2 Q1 ,
0
n care Qk sunt reflectori definiti de vectorii Householder
uk = [0 . . . 0 ukk 0 . . . 0 un+1,k . . . umk ]T .
La fiecare etapa, elementele k = ukk si uik , i = n + 1 : m, se determina ca n
algoritmul 3.5 pentru a anula elementele corespunzatoare din coloana k a blocului
C. In plus, datorita structurii suplimentare de zerouri, aplicarea transformarii lasa
nemodificate liniile i = k + 1 : n ale matricei A+ , deci conserva structura superior triunghiulara a blocului lider. In consecinta, numarul de operatii se reduce la
2(m n)n2 . Detaliile de implementare si analiza unor cazuri particulare semnificative sunt propuse n problema 3.20.

In cazul utilizarii reflectorilor complecsi de forma generala (3.32),


implementarea schemei QR se face utilizand direct procedurile CRFG si CRF
din tabelul 3.3.
12
In cazul complex, not
and N = mn2 n3 /3, algoritmul 3.5 cere N adun
ari complexe si N
nmultiri complexe. Deoarece o adunare complex
a este echivalent
a cu 2 adun
ari (reale), iar o
nmultire complex
a este echivalent
a cu dou
a adun
ari si patru nmultiri, algoritmul 3.5 cere 4N
adun
ari si 4N nmultiri, adic
a 8N (sau 4NQR ) operatii reale (flopi).

149

3.4. FACTORIZAREA QR
CQR

% Algoritmul de triangularizare ortogonala cu reflectori comH H


plecsi, i.e. QH A = R, unde QH = QH
s . . . Q2 Q1 .
1. Pentru k = 1 : s
1. k = CRFG(A(k : m, k))
2. Pentru j = k + 1 : n
1. CRF(A(k : m, k), k , A(k : m, j))

Modul de apel este [, A] = CQR(A), unde este acum vectorul complex cu


componentele k , k = 1 : s.

B. Proceduri de triangularizare cu rotatii


Procesul de triangularizare definit prin relatia (3.53) poate fi implementat alternativ
utilizand rotatii.
De exemplu, n cazul real, pentru anularea elementelor subdiagonale se utilizeaza
secvente de rotatii Pk de forma (3.26), n care la fiecare etapa k rotatiile Pki se
determina utilizand algoritmul 3.4 pentru a introduce zerourile necesare n pozitiile
corespunzatoare aik , i = k + 1 : m, ale matricei curente A. Actualizarea coloanelor
urmatoare se face utilizand algoritmul 3.3.
Procedura de triangularizare se poate desfasura pe loc n tabloul A, utilizand
urmatoarea schema de calcul.
QR ROT

% Triangularizarea matricei A utilizand rotatii


1. Pentru k = 1 : min (m 1, n)
1. Pentru i = k + 1 : m
1. Se determina Pki astfel ncat (Pki A)ik = 0
2. A Pki A

Detaliile de justificare precum si scrierea algoritmului n forma sa implementabila


sunt propuse ca exercitii. Mentionam ca numarul de operatii efectuat aici este dublu
fata de algoritmul similar care utilizeaza reflectori, de aceea acesta din urma este
n general preferabil. In cazul complex, schema de mai sus ramane valabila, cu
mentiunea ca rotatiile Pki se calculeaza ca n sectiunea 3.2.2.

3.4

Factorizarea QR

In aceasta sectiune vom utiliza procedurile de triangularizare ortogonala stabilite


n sectiunea anterioara pentru a construi factorizarea QR a unei matrice A Cmn
de forma generala. Notam ca de obicei s = min(m, n).
In cazul m n din (3.53) si (3.56) rezulta
 
R
}n
A = QR, R =
(3.57)
0
}m n
unde matricea
Q = Q1 Q2 . . . Qn

(3.58)

150

CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE

este unitara iar R este superior triunghiulara ca n (3.54). (In particular, daca
m = n atunci R = R .) Partition
and Q conform cu R, i.e.
Q = [ Q Q ],
|{z} |{z}

(3.59)

A = Q R ,

(3.60)

din (3.57) deducem

mn

unde acum Q are coloanele ortogonale, pe scurt QH Q = In , iar R este patrata.


Am demonstrat astfel prima parte a urmatorului rezultat fundamental.
Teorema 3.2 Orice matrice A Cmn cu m n poate fi scris
a sub forma (3.60),
unde Q Cmn are coloane ortogonale, iar R Cnn este superior triunghiular
a.
Prin definitie, relatia (3.60) constituie factorizarea QR a matricei A. Dac
a A
este monic
a, atunci R rezult
a inversabil
a si reciproc.
In acest caz, factorizarea
QR este unic
a dac
a n plus impunem conditia ca factorul triunghiular R s
a aib
a
elemente diagonale (reale si) pozitive.
Demonstratie. Pentru a demonstra a doua afirmatie, sa ne amintim ca matricea
A este monica daca si numai daca Ax 6= 0, oricare ar fi x Cn , x 6= 0, deci
xH AH Ax = kAxk2 > 0 pentru orice x 6= 0, adica matricea hermitic
a G = AH A
este pozitiv definit
a. Atunci, conform teoremei de factorizare Cholesky, exista si
este unica matricea R1 superior triunghiulara cu elemente diagonale pozitive astfel
ncat G = R1H R1 . Fie Q1 = AR11 . Avem
H H
1
H H
1
QH
1 Q1 = R1 A AR1 = R1 R1 R1 R1 = In ,

adica Q1 are coloanele ortogonale, si n plus A = Q1 R1 . Prin urmare, unicitatea


factorizarii QR rezulta din unicitatea factorizarii Cholesky, i.e. daca R satisface
conditia din enunt atunci R = R1 si Q = Q1 . (Conditia ca elementele diagonale
ale lui R sa fie pozitive poate fi ntotdeauna satisfacuta, dar, de obicei, nu prezinta
interes n practica.)

Observatia 3.4 In general, matricea hermitica pozitiv semidefinita G = AH A


se numeste gramian al (coloanelor) matricei A. Demonstratia teoremei 3.2 arata
ca daca matricea A este monica, atunci factorul triunghiular R al lui A coincide
n esenta cu factorul Cholesky R1 al lui G. In principiu, acest rezultat extrem de
important poate fi exploatat n doua sensuri.
a) Factorizarea QR a matricei A poate fi determinata relativ economic efectuand
n prealabil factorizarea Cholesky a matricei G. Schema de calcul, dedusa direct
din demonstratia teoremei amintite, este urmatoarea
QR Ch

1. Se formeaza G = AH A
2. Se calculeaza R1 efectuand factorizarea Cholesky G = R1H R1
3. Se calculeaza Q1 = AR11 rezolvand sistemul superior triunghiular Q1 R1 = A

151

3.4. FACTORIZAREA QR

Trebuie nsa sa subliniem ca aceasta metoda, desi conceptual extrem de simpla,


nu este recomandabila din punct de vedere numeric deoarece matricea G, rezultata
la pasul 1 prin ridicarea la patrat a lui A, este rau conditionata, vezi mai departe
propozitia 3.5. In consecinta, rezultatele calculate la pasii 2 si 3 sunt afectate de erori
straine de problema si eventual catastrofale, independent de calitatea algoritmilor
utilizati. Ca regula generala, formarea gramianului G = AH A trebuie sistematic
evitata n favoarea operarii directe asupra matricei date A.
b) O serie de probleme de calcul, vizand de exemplu actualizarea unor factorizari
LU sau Cholesky, pot fi reformulate n termenii unei factorizari QR echivalente si
rezolvate n consecinta aplicand procedurile numeric stabile bazate pe utilizarea
transformarilor ortogonale. Spre deosebire de abordarea de la punctul a), aceasta
idee, care constituie baza unei ntregi familii de metode de calcul, traditional numite
de radacina patrata, este larg aplicata n practica.

Exemplul 3.6 Pentru a ilustra ideea de baza a algoritmilor de radacin


a patrata,
fie G = RH R o matrice hermitica pozitiv definita al carei factor Cholesky superior triunghiular R Cnn este cunoscut. Problema de actualizare a factorizarii
Cholesky consta n a calcula factorul Cholesky R+ al matricei modificate
G+ = G + C H C,
n care C Cln este o matrice data. In particular, daca l = 1, i.e. C = cT este
un vector linie, atunci G+ este o modificare de rang 1 a lui G.
Aceasta problema poate fi rezolvata extrem de simplu, fara a forma explicit G+ ,
observand ca


R
H
H
H
H
G+ = R R + C C = [R C ]
= AH
+ A+ ,
C
i.e. G+ este gramianul matricei A din exemplul 3.5. In consecinta, factorul Cholesky
cautat R+ poate fi determinat efectuand triangularizarea ortogonala a matricei A+ ,
construite direct cu elementele date R si C.
O idee asemanatore se aplica pentru a efectua actualizarea factorizarii Cholesky
n cazul unei modificari de rang 2, i.e.
G+ = G + dcH + cdH + ccH ,
unde c, d Cn sunt doi vectori (coloana) dati.

Daca matricea A este monic


a, atunci factorul ortogonal Q al lui A are o
semnificatie geometrica remarcabila. Din (3.60) rezulta
not

y = Ax = Q (R x), x Cn ,

(3.61)

unde R este superior triunghiulara inversabila. Prin urmare, coloanele matricelor


not
A si Q genereaza acelasi subspatiu liniar S = ImA. Mai precis, prin ipoteza A are
coloanele independente, deci constituie o baza a lui S, iar prin constructie Q are
coloanele ortogonale, deci constituie o baz
a ortogonal
a a lui S. Proiectorul ortogonal
pe S este P1 = A(AH A)1 AH sau, mai simplu, P1 = Q QH . (Prin calcul direct

152

CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE


S
q3
6






q1 



- q2


S 





Fig. 3.5: Baze ortogonale pentru ImA si KerAH . Q = [q1 q2 | q3 ], m = 3, n = 2


se verifica usor ca P12 = P1 si P1H = P1 , iar faptul ca ImP1 = S este evident.
Echivalenta celor doua expresii ale lui P1 rezulta din (3.60).)
In mod similar, matricea Q Cm(mn) (care, n (3.59), completeaza Q pana
la o matrice unitara Q), constituie o baza ortogonala a subspatiului complementar
S = KerAH . Proiectorul ortogonal pe S este P2 = Q QH si, n plus, avem
P1 + P2 = Im .
Pe scurt, partitia (3.59) a matricei unitare Q corespunde descompunerii ortogonale fundamentale
Cm = ImA KerAH ,
(3.62)

furnizand baze ortogonale pentru ambele subspatii. Cazul m = 3, n = 2 este ilustrat


n figura 3.5. In consecinta, orice vector b Cm se scrie unic sub forma b = b1 + b2 ,
unde bi = Pi b, i = 1 : 2, sunt proiectiile ortogonale ale lui b pe S si, respectiv, S .
In cazul m < n, din (3.53) si (3.56) rezulta
A = QR, R = [R S],

(3.63)

unde Q = Q1 Q2 . . . Qm este unitara, iar R este superior trapezoidala ca n (3.55).


Utilizand partitia conforma A = [A B] obtinem factorizarea
A = QR ,

(3.64)

unde, evident, A = A[m] este submatricea lider principala a matricei A.


Daca A este inversabila, atunci R are aceeasi proprietate, iar din (3.64) si
B = QS rezulta B = A (R )1 S. Altfel spus, ntre coloanele matricei A exista
relatia B = A X, unde X = (R )1 S este solutia sistemului triunghiular R X = S,
prin urmare matricea


X
N=
Imn
not

constituie o baza (neortogonala) a subspatiului N = KerA Cn . (Se constata


imediat ca A este epica si AN = 0.)
Trebuie nsa sa observam ca, n absenta unei strategii adecvate de pivotare a
coloanelor, conditia de inversabilitate mentionata mai sus nu este ndeplinita, astfel

3.4. FACTORIZAREA QR

153

ncat n cazul m < n, utilitatea practica a procedurii de triangularizare ortogonala


(la stanga) precum si a factorizarii QR asociate sunt limitate.
Avand n vedere rezultatele teoretice stabilite mai sus, care evidentiaza clar
importanta factorizarii QR, n continuare ne vom concentra atentia asupra aspectelor procedurale privind calculul si aplicatiile practice ale acestei factorizari.

3.4.1

Acumularea transform
arilor

In cazul m n, factorizarea QR a matricei A poate fi determinata utilizand procedurile de triangularizare ortogonala stabilite n sectiunea anterioara. Intr-adevar,
n urma executiei acestor proceduri, factorul triunghiular R se obtine ca atare n
triunghiul superior al matricei A iar, n acord cu relatiile (3.58) si (3.59), factorul
ortogonal Q poate fi calculat sub forma




In
In
Q = Q
= Q1 Q2 . . . Qn
,
(3.65)
0
0
aplicand urmatoarea schema caracteristica de acumulare a transformarilor.
GQR

% Acumularea primelor n coloane Q ale matricei


Q = Q1 Q2 .. . Qn , m n.
In
1. Q =
0
2. Pentru k = n : 1 : 1
1. Q Qk Q

Cu referire la algoritmul 3.5, implementarea schemei GQR este simpla. T


inand
seama de particularitatile de structura ale matricei Q si utilizand elementele definitorii ale transformarilor Qk , memorate n triunghiul inferior strict al matricei A
precum si n vectorul , procesul de calcul poate fi organizat astfel ncat Q sa
rezulte pe loc n tabloul A 13 .
Algoritmul 3.6 (GQR) (Utilizand iesirea algoritmului 3.5, se efectueaza acumularea pe loc n A a primelor n coloane Q ale matricei
Q = Q1 Q2 . . . Qs , unde Qk sunt reflectori hermitici. Se presupune
m n.)
1. Pentru j = 2 : n
1. aij = 0, pentru i = 1 : j 1
2. Pentru k = n : 1 : 1
1. Dac
a k 6= 0 atunci
1. akk ukk = k
2. Pentru j = P
k+1:n
1. = ( m
ik aij ) /k
i=k u
2. aij aij + uik , pentru i = k : m
13
In caz de nevoie, factorul triunghiular R sau chiar ntregul tablou A sunt n prealabil salvate.
Acest mod de lucru se justific
a av
and n vedere c
a, n general, un anumit algoritm de calcul trebuie
s
a manevreze un num
ar c
at mai mic de tablouri de lucru.

154

CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE


% coloana k
3. aik aik , i = k : m
4. akk = 1 + akk
altfel
5. aik = 0, pentru i = k + 1 : m
6. akk = 1

In cazul real, algoritmul 3.6 necesita NQR operatii, care (la fel ca
Comentarii.
n algoritmul 3.5) se consuma pentru actualizarea coloanelor la pasul 2.1.2. Modul
de apel este A = GQR(A, ). Retinem ca determinarea explicita a factorizarii
QR a matricei A prin apelarea succesiva a procedurilor QR si GQR necesita n
total 2NQR operatii, deci este relativ costisitoare. Pentru utilizare n capitolele
urmatoare, sintaxa unei astfel de proceduri de factorizare QR este [Q, R] = FQR(A)
(lasam cititorului micile detalii de implementare).

In contextul procedurii de triangularizare CQR, care utilizeaz


a reflectori complecsi,
schema de acumulare GQR r
am
ane evident valabil
a. Implementarea ei direct
a, bazat
a
pe aplicarea la pasul 2 a procedurii de transformare CRF pentru actualizarea coloanelor
lui Q , este extrem de simpl
a.
GCQR

% Acumularea primelor n coloane Q ale matricei Q = Q1 Q2 . . . Qn ,


m n, unde Qk sunt reflectori complecsi.
1. Pentru j = 1 : n
1. qij = 0, pentru i = 1 : m
2. qjj = 1
2. Pentru k = n : 1 : 1
1. Pentru j = 1 : n
1. CRF(A(k : m, k), k , Q(k : m, j))

Subliniem ns
a c
a procedura GCQR n forma scris
a mai sus este neeficient
a deoarece
nu exploateaz
a structura special
a a matricei Q care, pe m
asura aplic
arii transform
arilor
la pasul 2, se umple progresiv, ncep
and cu ultima coloan
a. (Un calcul simplu arat
a
c
a, n cazul m = n, algoritmul GCQR necesit
a Nop = 2n3 operatii complexe, adic
a cu
50% mai mult dec
at algoritmul 3.6.) Modific
arile necesare pentru a corecta acest defect,
permit
and totodat
a formarea lui Q pe loc n tabloul A, pot fi aduse de c
atre cititorul
interesat, eventual dup
a o analiz
a comparativ
a cu algoritmul 3.6.

Matricea Q , care completeaz


a Q pana la o matrice unitara, poate fi calculata
sub forma




0
0

Q =Q
= Q1 Q2 . . . Qn
,
(3.66)
Imn
Imn

utilizand o schema de acumulare similara, dar mai putin eficienta. (Evident, acum
tabloul A trebuie extins cu m n coloane necesare pentru a memora Q .)14
In final, subliniem ca formarea matricelor Q , Q sau Q prin acumularea transformarilor este relativ costisitoare. De aceea, n contextul aplicatiilor considerate
n acest capitol, se recomanda evitarea acestui calcul n favoarea utilizarii formei
factorizate (3.58) a matricei Q, furnizata ca atare de algoritmii de triangularizare
QR.
14
In cazul m < n, cu referire la (3.64), calculul matricei Q se poate face apel
and direct procedura
GQR sub forma A(:, 1 : m) = GQR(A(:, 1 : m), ). Dup
a executie, rezultatul dorit Q suprascrie
blocul lider A al matricei A.

155

3.4. FACTORIZAREA QR

3.4.2

Aplicarea transform
arilor

In practica, matricea unitara QH generata sub forma (3.56) de procedurile de triangularizare ortogonala aplicate matricei A, se utilizeaza pentru a transforma n
mod adecvat o alta matrice data B. Ca regula generala, cele patru tipuri de transformari posibile, doua la stanga (QH B si QB) si doua la dreapta (BQ si BQH ), se
efectueaza pe loc n B fara a forma explicit matricele QH sau Q.
Aplicarea transformarilor
H H
B QH B = QH
s . . . Q2 Q1 B

(3.67)

B QB = Q1 Q2 . . . Qs B

(3.68)

si
se face partitionand B pe coloane.
In cazul (3.67), schema de calcul este evident urmatoarea.
MQR

% Aplicarea transformarii B QH B, unde Q = Q1 Q2 . . . Qs .


1. Pentru k = 1 : s
1. B QH
k B

Cu referire la algoritmul 3.5, implementarea schemei MQR are la baza o procedura de tip RF pentru actualizarea fiecarei coloane a matricei B. Desigur, la
pasul 1.1, transformarea se aplic
a efectiv numai daca k 6= 0, utilizand vectorul
Householder uk memorat n A(k : m, k).
Algoritmul 3.7 (MQR) (Se da B Cmp . Utilizand iesirea algoritmului 3.5, se aplica transformarea B QH B, unde Q = Q1 Q2 . . . Qs ,
iar Qk sunt reflectori hermitici.)
1. Pentru k = 1 : s
1. Dac
a k 6= 0 atunci
1. t = akk
2. akk ukk = k
3. Pentru j = P
1:p
1. = ( m
ik bij ) /k
i=k u
2. bij bij + uik , pentru i = k : m
4. akk = t
Comentarii. In cazul real cu m n, algoritmul 3.7 necesita Nop = pNm operatii,
unde am notat cu Nm = 2n(2m n) numarul de operatii necesar pentru a aplica
transformarea (3.67) unui vector b cu m componente.

In contextul procedurii de triangularizare CQR, schema MQR se implementeaz


a astfel.
MCQR

% Aplicarea transform
arii B QH B, unde Q = Q1 Q2 . . . Qs , iar
Qk sunt reflectori complecsi.
1. Pentru k = 1 : s
1. Pentru j = 1 : p
1. CRF(A(k : m, k), k , B(k : m, j))

156

CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE

In cazul (3.68) se procedeaza analog. Daca Qk sunt reflectori hermitici, atunci


algoritmul rezultat difera de algoritmul 3.7 numai prin ordinea de aplicare a transformarilor. Avand n vedere simplificarea redactarii unor proceduri ulterioare, vom
presupune ca ambele transformari (3.67) si (3.68) pot fi efectuate apeland o singura
procedura, al carei mod de apel este B = MQR(TRANS, A, , B), unde TRANS
este o variabila logica cu valorile da n cazul (3.67), respectiv nu n cazul (3.68).
Scrierea acestei proceduri (din care jumatatea da coincide cu algoritmul 3.7) consituie un exercitiu usor.
Aplicarea transformarilor la dreapta B BQ si B BQH se face partitionand
B pe linii si tinand seama de precizarile facute n finalul sectiunii 3.2.1. Scrierea
procedurii corespunzatoare, de exemplu notata MQRd, este propusa ca exercitiu.
(La nevoie, cele doua proceduri MQR si MQRd pot fi reunite ntr-una singura
introducand o variabila suplimentara SIDE, asa cum se procedeaza n LAPACK.)
In concluzia expunerii de pana acum, subliniem ca procedurile de triangularizare,
acumulare si transformare, notate generic QR, GQR si MQR, apar ntotdeauna n
triplete, orice modificare a procedurii fundamentale de triangularizare QR, n ceea
ce priveste calculul si memorarea transformarilor Qk , k = 1 : s, antrenand dupa sine
modificari corespunzatoare n procedurile asociate GQR si MQR. Avand n vedere
recomandarile facute n finalul sectiunii precedente, procedura de acumulare GQR
se utilizeaza numai n caz de stricta necesitate. Aproape ntotdeauna, obiectivele
urmarite prin calcul pot fi atinse utilizand procedura de transformare MQR care
opereaza direct cu forma factorizata a matricei Q.

3.4.3

Triangularizarea ortogonal
a la nivel de bloc

Ideea procedurilor bloc de triangularizare ortogonala este aceeasi cu a procedurilor


bloc de factorizare LU, descrise n sectiunea 2.4. La fel ca acolo, utilizarea acestui
tip de proceduri este indicata pe calculatoarele cu memorie ierarhica.
Pentru precizare, n continuare ne vom referi la procedura CQR care efectueaza
triangularizarea matricei A, partitionata pe coloane, utilizand reflectori complecsi.
Dupa cum am vazut, aceasta procedura este bogata n operatii vectoriale, iar efortul
principal de calcul se consuma la pasul 1.2 pentru actualizarea coloanelor urmatoare.
Avand n vedere accelerarea acestui proces pe seama reducerii numarului de apeluri
la memoria principala, procedura bloc opereaza asupra matricei A partitionate n
blocuri de coloane, cu scopul de a efectua operatiile indicate utilizand procedurile
de nmultire matriceala (la nivel de bloc) de tip GEMM din BLAS 3.
Consideram A Cmn cu m n si n = nb , unde nb e dimensiunea comuna a
blocurilor (de coloane), iar este numarul total de blocuri. Procedura de triangularizare la nivel de bloc are etape. (Pentru simplitate, n continuare indicele de
etap
a va fi omis.)
La prima etapa, are loc triangularizarea primului bloc al matricei A, efectuand

transformarea A QH
a, se considera partitia A = [Ab B], unde
b A. In consecint
Ab = A(1 : m, 1 : nb ), B = A(1 : m, nb + 1 : n)
si se procedeaza astfel:

(3.69)

157

3.4. FACTORIZAREA QR
Bl1

1. Se genereaza Qb a.. QH
a
b Ab = Rb este superior triunghiular
2. Se formeaza Qb
3. Se aplica transformarea B QH
b B

Evident, la pasul 1 se aplica procedura uzuala CQR blocului Ab . Matricea Qb


rezultata este de forma
Qb = Q1 Q2 . . . Qnb ,
(3.70)
unde Qi = Im i ui uH
si determinati pentru a introduce
i sunt reflectorii complec
zerouri subdiagonale n coloanele i = 1 : nb ale blocului Ab . Problema consta n
gasirea unei forme de reprezentare a lui Qb la pasul 2, adecvate accelerarii executiei
pasului 3 15 .
La o etapa ulterioara l 2 : , matricea curenta A este superior triunghiulara
n primele k 1 coloane, unde k = (l 1)nb + 1, prin urmare


R S
A=
,
0 A
unde matricea R este superior triunghiulara de ordin k 1, iar A = A(k : m, k : n)
este matricea ramasa. Acum are loc triangularizarea blocului urmator efectuand
transformarea A QH
b A, unde
Qb = Qk Qk+1 . . . Qk+nb 1 ,
iar fiecare reflector Qi are o structura de tip

Ik1
Qb =
0

(3.10), deci

0
b .
Q

In consecinta, se considera partitia A = [Ab B],


unde acum
= A(k : m, k + nb : n),
Ab = A(k : m, k : k + nb 1), B
b rezultata este de forma
si se aplica procedura Bl1 cu noile date. Matricea Q
b = Q
1Q
2 . . . Q
n ,
Q
b
iar problemele de calcul la pasii 2 si 3 sunt aceleasi ca mai sus.
Pentru precizare, n continuare ne vom referi la partitia (3.69) si vom descrie
cele doua tipuri de reprezentari structurate ale matricelor Qb de tip (3.70), utilizate
15 Procedurile uzuale de tip vectorial, expuse
n sectiunile anterioare, nu satisfac acest deziderat.
Aplicarea succesiv
a a transform
arilor Qi , i = 1 : nb , n maniera MQR, este eficient
a (num
arul
de operatii este 2nb (2m nb )(n nb )) dar nu conduce la operatii matriceale implementabile n
BLAS 3. Pe de alt
a parte, formarea explicit
a a matricei Qb prin acumularea transform
arilor
n maniera GQR este costisitoare, totodat
a Qb rezult
a nestructurat
a, deci produsul matriceal
2
B QH
ii, unde tipic, m nb , adic
a cu un ordin mai mult dec
at
b B cere 2m (n nb ) operat
este necesar. In plus, un asemenea mod de lucru cere un spatiu considerabil pentru memorarea
matricei Qb .
De aceea, n practic
a, se utilizeaz
a reprezent
ari speciale ale matricelor de tip Qb care poart
a
numele de reflectori bloc si care vor fi descrise n continuare.


CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE

158

n practica. (Indicele b va fi omis.) Aceste reprezentari se numesc reflectori bloc, iar


elementele lor definitorii se construiesc exploatand relatia recurenta
Q Q+ = QQi , i = 2 : nb .

Q = Q1 ,

a. Reprezentarea WY este de forma QH = I W Y H , respectiv


Q = I Y W H,

(3.71)

unde W, Y Cmnb sunt doua matrice ce urmeaza a fi determinate.


Initial avem Q = I 1 u1 uH
1 , deci putem lua
W = u1 ,

Y = 1 u1 .

Mai departe putem scrie


Q+ = QQi

=
=
=
=

(I Y W H )(I i ui uH
i )=
H
H
I Y W H i(I Y W
 )ui ui =
H
 W

I Y zi
=
uH
i
H
I Y+ W+ ,

deci
W+ = [W ui ],

Y+ = [Y zi ],

unde zi = i (I Y W )ui . Matricea W , formata prin alaturarea vectorilor Householder ui , este produsa si memorata ca atare de catre procedura CQR pe pozitiile
subdiagonale din tabloul Ab . (Intrucat primele i 1 componente ale vectorilor
Householder ui sunt nule, iar uii = 1, W este chiar inferior trapezoidala unitate.)
In consecinta, reprezentarea WY este complet definita de tabloul Y , a carui procedur
a de formare (vezi pasul 2 al schemei Bl1 ) este urmatoarea.
% Formarea lui Y
1. Y (:, 1) = 1 u1
2. Pentru i = 2 : nb
1. Y (:, i) = (i ui ) Y (W H (i ui ))
La pasul 3 al procedurii Bl1 , reflectorul bloc n reprezentarea WY se aplica
matricei B conform schemei
B QH B = (I W Y H )B = B W (Y H B),

(3.72)

respectiv
1. N = Y H B
2. B B W N
Ambele produse se efectueaza utilizand GEMM si cer 4mnb (n nb ) operatii. Singurul neajuns al reprezentarii WY consta n necesitatea formarii tabloului de lucru
suplimentar Y de dimensiune m nb , relativ mare.

159

3.4. FACTORIZAREA QR

b. Reprezentarea W2 T sau triunghiulara este de forma QH = I W T H W H ,


respectiv
Q = I WTWH
(3.73)
unde, dupa cum vom vedea, W este acelasi ca mai sus, iar T Cnb nb rezulta
superior triunghiulara.
Initial avem Q = I 1 u1 uH
1 , deci putem lua
W = u1 ,

T = 1 .

Mai departe putem scrie


Q+ = QQi

= (I W T W H )(I i ui uH
i )=
= I W T W H i ui uH
W(i T W H ui )uH
i +
i =

 T ti
WH
= I W ui
=
0 i
uH
i
= I W+ T+ W+H

deci avem
W+ = [W ui ],

T+ =

T
0

ti
i

unde ti = i T (W H ui ).
Procedura de formare a tabloului triunghiular T , care defineste complet reprezentarea W2 T, este urmatoarea.
% Formarea lui T
1. T (1, 1) = 1
2. Pentru i = 2 : nb
1. T (1 : i 1, i) = i T (W H ui )
2. T (i, i) = i
La pasul 3 al procedurii Bl1 , reflectorul bloc n reprezentarea W2 T se aplica
matricei B conform schemei
B QH B = (I W T W H )B = B W T (W H B),

(3.74)

respectiv
1. N = W H B
2. N T H N
3. B B W N
O analiza simpla arata ca n acest caz este suficient un singur tablou de lucru de
dimensiune nb n, relativ mica. In primele nb coloane ale acestuia se formeaza T ,
iar n coloanele urmatoare se depune produsul intermediar N = W H B. (Subliniem
ca blocurile T utilizate n etapele succesive ale procedurii de triangularizare nu se
memoreaza, ci se formeaza pe masura ce sunt necesare.) Numarul de operatii este
(4m+nb )nb (nnb ). Cresterea numarului de operatii este compensata de memorarea
mai compacta a reprezentarii triunghiulare.
Combinand ideile de mai sus, procedura de triangularizare ortogonala la nivel
de bloc poate fi rezumata astfel.

160
CQR Bl

CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE


% Triangularizare la nivel de bloc, utilizand reflectori complecsi.
1. Pentru k = 1 : nb : min(n, m)
1. f = min(k + nb 1, n)
2. Ab = A(k : m, k : f )
3. (k : f ) = CQR(Ab )
4. A(k : m, k : f ) = Ab
5. Dac
a f < n atunci
% Formarea lui T
1. T (k, k) = k
2. Pentru i = k + 1 : f
1. T (k : i 1, i) = i T (W H ui )
2. T (i, i) = i
% aplicarea transformarii
3. B = A(k : m, f + 1 : n)
4. N = W H B
5. N T H N
6. B B W N
7. A(k : m, f + 1 : n) = B

In redactarea de mai sus, Ab este tabloul de lucru din memoria rapida n care
se efectueaza triangularizarea blocului curent, iar B si N sunt blocurile utilizate de
GEMM n procesul de aplicare a transformarii. (In caz de necesitate, blocul B poate
fi tratat sub forma partitionata.) Amintim ca tabloul W este format si memorat
ca atare n triunghiul strict inferior al blocului Ab obtinut la pasul 1.3. Evident, n
cazul nb = 1 procedura de mai sus se reduce la CQR. Instructiunile 1.2, 1.4, 1.5.3
si 1.5.7 efectueaza transferul datelor ntre memoria principala si cea rapida.
In final, subliniem ca procedurile de acumulare si transformare GCQR si
MCQR pot fi de asemenea reformulate la nivel de bloc, procedand n esenta ca la
pasul 1.5 al algoritmului de mai sus.

3.4.4

Alte metode de ortogonalizare

Factorizarea QR a unei matrice monice A Cmn poate fi calculata utilizand procedurile de ortogonalizare de tip Gram-Schmidt, care constituie analogul schemelor
compacte Crout si Doolittle, cunoscute din sectiunea 2.4.
Considerand relatia A = Q R si partitionand A si Q pe coloane, putem scrie

r11 . . . r1j . . . r1n

..
..
..

.
.
.

rjj . . . rjn
[a1 . . . aj . . . an ] = [q1 . . . qj . . . qn ]
.

..
.
.

.
.
rnn
Egaland primele coloane avem

a1 = q1 r11 ,

161

3.4. FACTORIZAREA QR

unde vectorul q1 este normat, i.e. kq1 k = 1, deci r11 = ka1 k si q1 = a1 /r11 . In
general avem
aj = q1 r1j + . . . + qj1 rj1,j + qj rjj ,
unde qk qj , deci qkH aj = rkj , k = 1 : j 1, iar qj este si el normat, deci
rjj = kaj

j1
X

k=1

qk rkj k.

Procedura de ortogonalizare Gram-Schmidt astfel obtinuta este urmatoarea.


GS

% Procedura Gram-Schmidt (schema jk)


1. Pentru j = 1 : n
1. qj = aj
2. Pentru k = 1 : j 1
1. rkj = qkH qj
P
3. qj qj j1
k=1 qk rkj
4. rjj = kqj k
5. qj qj /rjj

Prin rearanjarea buclelor procedurii GS si actualizarea coloanei curente qj imediat dupa calculul unui coeficient rkj , se obtine procedura de ortogonalizare GramSchmidt modificata.
MGS

% Procedura Gram-Schmidt modificata (schema kj)


1. Pentru k = 1 : n
1. qk = ak
2. Pentru k = 1 : n
1. rkk = kqk k
2. qk qk /rkk
3. Pentru j = k + 1 : n
1. rkj = qkH qj
2. qj qj qk rkj

Aici este important sa subliniem ca, desi cele doua proceduri sunt echivalente din
punct de vedere matematic, iar numarul de operatii este acelasi n ambele cazuri,
NGS = 2mn2 , totusi performantele lor numerice sunt diferite. Procedura GS este
numeric instabila atat ca mijloc de calcul al factorizarii QR cat si ca metoda de
rezolvare a problemei CMMP. In schimb, procedura MGS furnizeaza o factorizare
QR satisfacatoare (n sensul ca, de regula, vectorii calculati qj rezulta ortogonali
n precizia de lucru) si constituie totodata un algoritm numeric stabil pentru rezolvarea problemei CMMP. De aceea, n multe situatii, procedura MGS (implementata ngrijit) poate constitui o alternativa viabila fata de perechea QR, GQR,
relativ mai costisitoare.

162

3.4.5

CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE

Factorizarea QL

In unele aplicatii matricea A este adusa la forma inferior triunghiulara n raport cu


diagonala secundara care ncepe din coltul dreapta-jos, i.e.
QH A = L,

(3.75)

unde lij = 0, i < m n + j, j = 1 : n, iar Q este unitara. (Pentru simplitate am


presupus m n.)
Procesul de triangularizare parcurge coloanele n ordine inversa, ncepand cu
ultima si anuleaza elementele situate deasupra diagonalei secundare utilizand reflectori modificati. Notand reflectorii cu indicele coloanei n care se pastreaza vectorii
Householder corespunzatori, putem scrie
H
H
QH = QH
1 Q2 . . . Qn ,

(3.76)

iar procedura de calcul poate fi rezumata astfel.


QL

% Schema de triangularizare QL, cazul m n


1. Pentru k = n : 1 : 1
1. Se genereaza Qk a.. (QH
k A)ik = 0, i = 1 : m n + k 1
2. A QH
A
k

La pasul 1.1 se utilizeaza o procedura de tip mRFG (vezi tabelul 3.1), iar la
pasul 1.2 se modifica numai primele m n + k elemente din coloanele j = 1 : k 1,
utilizand procedura corespunzatoare mRF.
Aplicatiile procedurii de triangularizare QL sunt perfect similare cu aplicatiile
descrise mai sus ale procedurii QR (vezi problemele 3.42, 3.43).

3.5

Rezolvarea problemei CMMP

Revenim acum la problema (3.4) din sectiunea introductiv


a a acestui capitol si, pentru generalitate, consideram versiunea ei complexa. Fie A Cmn o matrice data si
b Cm un vector arbitrar. Problema CMMP consta n determinarea pseudosolutiei
x Cn a sistemului Ax = b astfel ncat norma euclidiana a reziduului r = b Ax
sa fie minima, i.e.
kb Ax k = minn kb Axk.
(3.77)
xC

In primul rand, vom stabili conditiile n care problema (3.77) este bine definita,
i.e. are o solutie unica.
Teorema 3.3 Oricare ar fi vectorul b Cm , problema (3.77) are o solutie unic
a
dac
a si numai dac
a matricea A Cmn este monica, i.e. m n si rangA = n.

In acest caz, pseudosolutia n sensul CMMP a sistemului Ax = b poate fi scris


a
n forma
x = A+ b,
(3.78)
n care matricea A+ Cnm este prin definitie pseudoinversa lui A si are expresia
A+ = (AT A)1 AT

(3.79)

3.5. REZOLVAREA PROBLEMEI CMMP

163

Demonstratie. Vom stabili pe rand a) existenta si b) unicitatea pseudosolutiei x .


a) Pentru a demonstra existenta, nu e necesar sa presupunem ca matricea A
este monica. Consideram subspatiul S = ImA si fie S = KerAH complementul
sau ortogonal n Cm . Vectorul b poate fi scris n mod unic sub forma b = b1 + b2 ,
unde b1 S si b2 S sunt proiectiile ortogonale ale lui b pe S si respectiv S .
Avem
r = b Ax = b2 + (b1 Ax),
(3.80)
unde b1 S, Ax S implica b1 Ax S, deci b2 si b1 Ax sunt ortogonali,
x Cn , vezi figura 3.6. Aplicand teorema lui Pitagora obtinem
kb Axk2 = kb1 Ax + b2 k2 = kb1 Axk2 + kb2 k2 kb2 k2 , x Cn .

(3.81)

Intrucat b1 S = ImA, exista (cel putin) un x Cn astfel ncat


Ax = b1 ,

(3.82)

iar din (3.81) se vede ca orice astfel de x are proprietatea (3.77) si reciproc.
Existenta pseudosolutiei x este demonstrata.
Relatia (3.82) arata ca cea mai buna aproximare b = Ax a lui b pe S = ImA
coincide cu proiectia ortogonala b1 , deci b = b1 exista ntotdeauna si este unic
determinata oricare ar fi A. Aceasta afirmatie constituie lema proiectiei ortogonale
si reprezinta generalizarea unui fapt binecunoscut din geometria elementara. Pe
scurt (vezi (3.77) si figura 3.6), distanta minima de la un punct b la un subspatiu
S este lungimea (euclidiana) a perpendicularei duse din b pe S.
Consideratiile geometrice de mai sus pot fi exprimate analitic. Notand
r = b Ax , din (3.80) si (3.82) se vede ca r = b2 , unde b2 S = KerAH ,
deci AH r = 0. Prin urmare avem

   
Im A
r
b
=
,
(3.83)
AH 0
x
0
de unde, eliminand r ntre cele doua ecuatii, rezulta
AH Ax = AH b.

(3.84)

b) Din (3.82), pseudosolutia x e unic determinata daca si numai daca


A(x x ) = 0 implica x = x , adica KerA = {0}, sau, echivalent, A este monica.
In acest caz, gramianul G = AH A este o matrice pozitiv definita, deci inversabila
(vezi demonstratia teoremei 3.2), iar din (3.84) rezulta imediat (3.78) si (3.79).
Observatia 3.5 Sistemul liniar (3.83), de ordin m + n, se numeste sistemul extins
asociat problemei CMMP. Matricea acestui sistem este hermitica de semn nedefinit
si are o structura particulara remarcabila. Prin rezolvarea acestui sistem putem
calcula atat pseudosolutia x cat si reziduul de norma minima r . Procedurile de
calcul corespunzatoare vor fi expuse mai jos 16 .
16
In principiu, sistemul extins poate fi rezolvat utiliz
and procedurile de factorizare cvasidiagonal
a descrise n sectiunea 2.10, dar acestea nu sunt eficiente n cazul de fata
deoarece nu
exploateaz
a structura special
a a sistemului considerat (vezi problema 3.52).


CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE

164

 C
b
C b Ax
C

C

C

C

1

C
 b
1 
o
S
S b1C Ax

 
X
XXX
X SC
Ax XX
z
X
SC
6

b2

OCC

S = ImA
T = S
Fig. 3.6: Lema proiectiei ortogonale

Sistemul liniar (3.84), de ordin n, se numeste sistemul de ecuatii normale, pe


scurt sistemul normal asociat problemei CMMP. Daca matricea A e monica, gramianul G este o matrice hermitica pozitiv definita, iar pseudosolutia x coincide cu
solutia sistemului normal. La fel ca n observatia 3.4, aceasta echivalenta poate fi
exploatata n doua sensuri.
a) Pseudosolutia x a sistemului Ax = b poate fi determinata prin rezolvarea
sistemului normal asociat. Schema de calcul este urmatoarea:
S Ch

1.
2.
3.
4.

Se formeaza c = AH b
Se formeaza G = AH A
Se efectueaza factorizarea Cholesky G = R1H R1
Se calculeaza x rezolvand succesiv sistemele
triunghiulare R1H y = c si R1 x = y.

Trebuie nsa sa subliniem ca, la fel ca n observatia 3.4, aceasta metoda (desi
relativ economica si extrem de compacta) nu este recomandabila din punct de vedere
numeric, deoarece matricea G = AH A este rau conditionata. Cu precautie, ea poate
fi avuta n vedere, n special dac
a m n, iar economia de memorie realizata prin
formarea lui G constituie un obiectiv esential.
b) Solutiile unor sisteme liniare cu matrice pozitiv definite avand structura de
gramian pot fi determinate aplic
and ideea algoritmilor de radacina patrata bazati
pe utilizarea transformarilor unitare (vezi observatia 3.4). Acest mod de lucru,
frecvent utilizat n practica actuala, este ilustrat prin problema 3.46.

3.5.1

Calculul pseudosolutiei

Avand n vedere teorema 3.3, peste tot mai departe vom presupune ca matricea
A Cmn este monica.

3.5. REZOLVAREA PROBLEMEI CMMP

165

Rezolvarea problemei CMMP se poate face utilizand informatia furnizata de


algoritmul de triangularizare ortogonala QR, i.e.
 
R
}n
H H
QH A =
, QH = QH
(3.85)
n . . . Q2 Q1 ,
0
}m n
unde Q este unitara, iar R este superior triunghiulara inversabila. Aplicand transformarea QH ambilor membri ai sistemului Ax = b si notand
 
d
}n
H
Q b = d, d =
,
(3.86)
d
}m n
obtinem sistemul unitar echivalent
 
 
R
d
}n
x=
.
0
d
}m n

(3.87)

In general, n (3.87) avem d 6= 0, deci sistemul dat Ax = b este incompatibil.


Pentru a determina pseudosolutia x , consideram reziduul r = b Ax. Din
(3.87) rezulta


d R x
QH r =
,
(3.88)
d
unde matricea QH este unitara, deci krk = kQH rk. Prin urmare
krk2 = kQH rk2 = kd R xk2 + kd k2 kd k2 , x Cn .

(3.89)

Efectuand minimizarea n raport cu x indicata n (3.77) obtinem


R x = d ,

(3.90)

deci solutia n sens CMMP a sistemului supradeterminat Ax = b coincide cu solutia


sistemului superior triunghiular nesingular reprezentat de primele n ecuatii din
(3.87) 17 . Pe scurt, avem
x = [(R )1 0]QH b
(3.91)
sau echivalent
x = (R )1 QH b.

(3.92)

Procedural, solutia problemei CMMP (3.77) este determinata de relatiile (3.86)


si (3.90). T
inand cont de structura lui QH din (3.85), se vede usor ca transformarile
(3.86) pot fi efectuate (pe loc n b), utilizand o procedura de tip MQR. Schema de
calcul astfel obtinuta este urmatoarea
SQR

% Calculul pseudosolutiei x = A+ b
1. Pentru k = 1 : n
1.b QH
k b
2. Se rezolva sistemul triunghiular R x = b(1 : n)

17 Rat
ionamentul de mai sus constituie o nou
a demonstratie, de data aceasta constructiv
a, a
teoremei 3.3. Relatiile (3.80-3.82) si (3.88-3.90) se corespund n mod evident.


CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE

166

Cu referire la algoritul 3.5, care utilizeaza reflectori hermitici, implementarea


schemei SQR are loc astfel.
Algoritmul 3.8 (SQR problema liniar
a a celor mai mici p
atrate)
(Se da un vector b Cm . Utilizand iesirea algoritmului 3.5, se calculeaza
n x solutia n sens CMMP a sistemului liniar Ax = b. Se presupune ca
matricea A este monica.)
% se aplica transformarile vectorului b
1. Pentru k = 1 : n
1. t = akk
2. akk uP
kk = k
m
3. = ( i=k u
ik bi ) /k
4. bi bi + uik , pentru i = k : m
5. akk = t
% calculul solutiei problemei CMMP
2. Pentru k = n : 1
Pn: 1
1. xk = (bk j=k+1 akj xj )/akk
In cazul real, algoritmul 3.8 necesita Nop = Nm + n2 = 4mn n2
Comentarii.
operatii. Modul de apel este x = SQR(A, , b). Retinem ca determinarea pseudosolutiei prin apelarea succesiva a procedurilor QR si SQR necesita asimptotic NQR
operatii, i.e. principalul efort de calcul se consuma pentru triangularizarea ortogonala a matricei A.

In cazul utiliz
arii algoritmului CQR, implementarea schemei SQR este urm
atoarea.
SCQR

% Calculul pseudosolutiei.
1. Pentru k = 1 : s
1. CRF(A(k : m, k), k , b(k : m))
2. x = UTRIS(A(1 : n, :), b(1 : n))

Pe baza informatiilor furnizate de schema SQR, putem calcula usor si reziduul


de norma minima r = b Ax , obtinand astfel solutia completa a sistemului extins
(3.83). Din (3.88) si (3.90) obtinem imediat

r =Q

0
d

(3.93)

n care d are semnificatia din (3.86). Prin urmare, avand n vedere ca vectorul
transformat b d = QH b a fost deja calculat la pasul 1, r poate fi obtinut (pe loc
n b) completand schema SQR cu secventa
3. b(1 : n) = 0
4. Pentru k = n : 1 : 1
1. b Qk b

3.5. REZOLVAREA PROBLEMEI CMMP

167

In rezumat, fiind date matricea A si vectorul b, calculul pseudosolutiei x a


sistemului Ax = b si al reziduului de norma minima r consta n triangularizarea
ortogonala a matricei A, urmata de aplicarea schemei SQR completata asa cum am
spus mai sus. Utilizand procedurile cunoscute QR, MQR si UTRIS, algoritmul
de calcul se redacteaza concis astfel.
CMMP

%
0.
1.
2.
3.
4.

Rezolvarea completa a problemei CMMP.


[A, ] = QR(A)
b = MQR( da , A, , b)
x = UTRIS(A(1 : n, :), b(1 : n))
b(1 : n) = 0
b = MQR( nu , A, , b)

Subliniem ca la pasul 2 pseudosolutia x nu se calculeaza pe locul membrului


drept b, tocmai avand n vedere utilizarea acestui spatiu la pasii 3 si 4 pentru
memorarea lui r . Deseori n practica, pentru aprecierea gradului de incompatibilitate a sistemului Ax = b, este suficient calculul normei = kr k. Evident,
avem = kb(n + 1 : m)k, unde b este vectorul transformat obtinut la pasul 1 al
procedurilor SQR sau CMMP.

3.5.2

Calculul proiectiilor

In numeroase aplicatii prezinta interes calculul proiectiilor ortogonale b1 si b2 ale


unui vector b pe subspatiile S = ImA si respectiv S = KerAH .
Din demonstratia teoremei 3.5 (vezi figura 3.6) a rezultat ca proiectia b2 a lui b pe
S coincide cu reziduul de norma minima r , deci se calculeaza aplicand procedura
CMMP din care pasul 2 se omite 18 .
In mod similar proiectia b1 a lui b pe S, care coincide cu vectorul de cea mai
bun
a aproximatie b = Ax , are expresia
 
d

b =Q
,
(3.94)
0
deci se calculeaza aplicand aceeasi procedura CMMP n care pasul 3 se nlocuieste
cu
3 . b(n + 1 : m) = 0.
Subliniem ca, pentru siguranta calculului, proiectiile b1 = b si b2 = r se
determina ntotdeauna utilizand relatiile (3.86), (3.93) si (3.94), n care au loc numai
transformari ortogonale. In special, nu se recomanda utilizarea relatiilor evidente
b = Ax si r = b Ax sau b1 + b2 = b, aparent mai simple, deoarece acestea din
urma pot conduce la erori catastrofale de anulare prin scadere. De asemenea, este
esential sa retinem ca determinarea proiectiilor precum si calculul pseudosolutiei
se efectueaza operand direct asupra vectorului b, fara a forma explicit proiectorii
ortogonali P1 , P2 sau pseudoinversa A+ .
18 Tocmai
n virtutea acestei semnificatii geometrice remarcabile, reziduul r = b Ax poate fi
calculat f
ar
a a determina n prealabil pseudosolutia x . In general, toate calculele se fac utiliz
and
exclusiv informatiile obtinute la pasii 0 si 1 ai procedurii CMMP, f
ar
a nici o referire la datele
initiale A, b care, de altfel, au si fost distruse.

168

3.5.3

CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE

Problema CMMP cu membru drept multiplu

Fie acum A Cmn o matrice data si B Cmp o matrice arbitrara cu p coloane,


unde p 1. Problema rezolvarii n sensul CMMP a sistemului cu membru drept
multiplu AX = B consta n determinarea pseudosolutiei X Cnp astfel ncat
norma Frobenius a reziduului matriceal R = B AX sa fie minima, pe scurt
kB AX kF =

min kB AXkF .

XCnp

(3.95)

Analiza acestei probleme este simpla. Partitionand matricele B, X si R pe


coloane, cu notatii clare putem scrie rj = bj Axj , j = 1 : p. Pe de alta parte, prin
definitia normei Frobenius avem
kRk2F =

p
X
j=1

krj k2 .

(3.96)

In consecinta, problema de minimizare (3.95) este echivalenta cu p probleme CMMP


de tip (3.77), avand aceeasi matrice A si membri drepti diferiti, i.e.
kbj Axj k = minn kbj Axk, j = 1 : p.
xC

(3.97)

Prin urmare, daca matricea A este monica, atunci conform teoremei 3.3 fiecare
problema (3.97) are o solutie unica xj = A+ bj , j = 1 : p, iar matricea
X = [x1 . . . xp ], rezultata prin agregarea acestora constituie solutia unica
X = A+ B

(3.98)

a problemei (3.95).
Procedural, pseudosolutia X Cnp se calculeaza simplu, efectuand o singur
a dat
a triangularizarea ortogonala a matricei A si aplicand apoi repetat algoritmul de rezolvare SQR fiecarei coloane B(:, j), j = 1 : p, a matricei B. Daca
n plus se doreste calculul reziduului de norma Frobenius minima R = B AX ,
atunci se aplica procedura CMMP n care vectorul b se nlocuieste peste tot cu matricea B. Desigur, n acest nou context pot fi aplicate avantajos (pe calculatoarele
cu memorie ierarhica) procedurile bloc de triangularizare ortogonala si aplicare a
transformarilor, expuse n sectiunea 3.4.4.

3.5.4

Calculul pseudoinversei

Matricea pseudoinversa A+ , definita prin (3.78) are multe proprietati interesante


si, n principiu, poate fi calculata n multe feluri.
In primul rand, utilizand relatia (3.79), constatam imediat ca
1 A+ A = In
2 AA+ = (AA+ )H .
Prima relatie afirma ca A+ este o inversa la stanga a matricei A; n particular,
rangA+ = n, deci A+ este epica. A doua relatie, n combinatie cu prima, arata

169

3.5. REZOLVAREA PROBLEMEI CMMP

ca matricea hermitica P1 = AA+ coincide cu proiectorul ortogonal pe subspatiul


S = ImA. Prin urmare, relatiile 1 si 2 determina unic matricea A+ cu expresia
(3.79). Din nefericire, (3.79) este improprie din punct de vedere numeric, deoarece
implica inversarea gramianului G = AH A.
In al doilea rand, punand B = Im din (3.98) gasim X = A+ . Prin urmare,
avand n vedere (3.95), A+ este solutia unica a problemei de minimizare
kIm AA+ kF =

min

XCnm

kIm AXkF .

(3.99)

Nici aceasta constatare, desi teoretic extrem de interesanta, nu are nsa utilitate
calculatorie. Determinarea lui A+ prin rezolvarea sistemului AX = Im utilizand
procedura CMMP este evident neeficienta, deoarece aplicarea transformarilor de la
pasul 1 nu tine seama de structura speciala a membrului drept B = Im .
In sfarsit, din (3.78), prin identificare cu (3.91), (3.92) rezulta
A+ = [(R )1 0]QH ,

respectiv A+ = (R )1 QH ,

(3.100)

n care apar direct elementele factorizarii QR a matricei A. In consecinta, A+


poate fi calculata efectuand triangularizarea ortogonala a matricei A si utilizand
informatia astfel obtinuta pentru a explicita oricare dintre relatiile (3.100).
a) In primul caz se calculeaza inversa matricei triunghiulare R si apoi se aplica
transformarea QH la dreapta inversei extinse cu zerouri, utilizand o procedura de
tip MQRd.
b) In al doilea caz se acumuleaza matricea Q utilizand procedura GQR si apoi
se rezolva sistemul superior triunghiular R A+ = QH 19 .
Detaliile de implementare precum si analiza algoritmilor de calcul astfel obtinuti
sunt propuse cititorului ca exercitii.
Intrucat matricea A+ este rareori necesara ca atare n calcule, iar formarea sa
explicita este costisitoare, n practica se recomanda evitarea determinarii lui A+ n
favoarea rezolvarii n sens CMMP a unui sistem AX = B definit n mod adecvat. O
observatie similara este valabila relativ la proiectorii P1 si P2 . Calculul proiectiilor
se face direct, dupa cum am aratat n sectiunea 3.5.2.

3.5.5

Alte metode de rezolvare a problemei CMMP

Calculul pseudosolutiei x a sistemului Ax = b se poate face utilizand factorizarea


QR a matricei furnizata de procedura Gram-Schmidt modificata din sectiunea 3.4.4.
Pe scurt, avem A = Q R , unde ambele matrice Q si R sunt formate explicit de
procedura MGS, iar relatia (3.92) spune ca x = (R )1 QH b. Partitionand Q pe
coloane, schema de calcul este urmatoarea.
SMGS

% Calculul pseudosolutiei.
1. Pentru j = 1 : n
1. xj dj = qjH b
2. Se rezolva sistemul triunghiular R x = d

19 Amintim c
a procedura GQR calculeaz
a Q pe loc n A. Prin urmare, matricea Y = (A+ )H
poate fi obtinut
a tot n A, rezolv
and sistemul inferior triunghiular Y (R )H = Q .

170

CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE

Numarul de operatii este Nop = 2mn + n2 , prin urmare calculul pseudosolutiei


prin apelarea succesiva a procedurilor MGS si SMGS cere asimptotic NGS > NQR
operatii.
Desigur, procedura de triangularizare ortogonala este mai economica deoarece
nu formeaza explicit matricea Q , totusi simplitatea procedurii MGS este uneori
atractiva. Realmente neplacuta aici este absenta matricei de completare Q pe
care procedura MGS nu o poate calcula. In consecinta, calculul reziduului de norma
minima nu se poate face acum decat pe baza relatiei r = b Ax , ceea ce necesita
pastrarea unor copii ale datelor de intrare A, b. In plus, daca sistemul Ax = b este
aproape compatibil, i.e. vectorii b si b = Ax sunt apropiati, atunci calculul
lui r este amenintat de erori catastrofale si, de aceea, trebuie efectuat lucrand n
dubla precizie (vezi sectiunea 2.7).

3.6

Sisteme liniare subdeterminate

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

3.6.1

Triangularizarea ortogonal
a la dreapta
not

Propozitia 3.3 Oricare ar fi A Cmn , exist


a o matrice unitara V H = Z
nn
C
astfel nc
at matricea
AV H = L,

respectiv AZ = L,

(3.101)

este inferior triunghiulara.

In cazul real A Rmn , matricea de transformare V T = Z poate fi aleas


a (real
a
si) ortogonal
a, deci L rezult
a real
a.
Pe scurt, orice matrice A este unitar echivalent
a la dreapta cu o matrice inferior
triunghiulara. Prima relatie arata ca A poate fi scrisa sub forma unui produs
A = LV , unde V este unitara, iar L este inferior triunghiulara. In calculul numeric
o relatie de acest tip se numeste factorizare LQ, de aceea procedurile de calcul
stabilite pe baza relatiei fundamentale (3.101) vor fi notate cu sigla LQ.
Demonstratia rezulta imediat aplicand teorema 3.1 matricei B = AH .
Intr-adevar, daca V AH = R este superior triunghiulara, atunci are loc (3.101),
unde L = RH este evident inferior triunghiulara 20 .

Avand n vedere ca operatia de transpunere si conjugare este costisitoare, n


practica profesionala se opereaza direct asupra matricei date A Cmn . Notam ca
de obicei s = min(m, n) si fie Zk reflectorii utilizati n scopul anularii elementelor
20 Corespondent
a A AH se numeste dualitate, iar rezultatele si relatiile asociate prin aceast
a
corespondenta
se numesc duale. De exemplu, relatiile (3.53) si (3.101) sunt duale.

171

3.6. SISTEME LINIARE SUBDETERMINATE

situate la dreapta diagonalei principale, din liniile matricei A, la etapele k = 1 : s.


Similar cu (3.56), matricea de transformare are structura
V H = Z = Z1 Z2 . . . Zs

(3.102)

iar schema de triangularizare este urmatoarea


LQ

% Schema generala de triangularizare LQ


1. Pentru k = 1 : s
1. Se genereaza Zk a.. (AZk )kj = 0, j = k + 1 : n
2. A AZk .

In cazul real sau n cazul utilizarii reflectorilor hermitici (Zk = ZkH ), componentele vkj , j = k + 1 : n, ale vectorilor Householder vk se memoreaza natural pe
pozitiile elementelor anulate. Algoritmul rezultat poate fi redactat astfel.
Algoritmul 3.9 (LQ triangularizare ortogonal
a la dreapta cu reflectori hermitici) (Se da A Cmn . Se efectueaza triangularizarea
ortogonala la dreapta a matricei A, i.e. AZ = L, unde Z = Z1 Z2 . . . Zs ,
iar Zk sunt reflectori hermitici. Partea esentiala vk (k+1 : n) a vectorilor
Householder vk se memoreaz
a pe pozitiile corespunzatoare A(k, k + 1 : n).
La aplicarea ulterioara a transformarilor se tine seama ca vkk = k ,
k = 1 : s. Elementele nenule ale matricei inferior triunghiulare L
suprascriu elementele corespunzatoare din triunghiul inferior al matricei A.)
1. Pentru k = 1 : s
1. k = 0
2. Dac
a k < n atunci
1. = kA(k, k : n)k
2. Dac
a 6= 0 atunci
a
kk
1. Dac
a akk 6= 0 atunci

|akk |
2. akj vkj = a
kj /, pentru j = k : n
3. k vkk = 1 + akk
4. Pentru i =k + 1 : m

Pn
1. =
j=k aij vkj /k
2. aij aij +
vkj , pentru j = k : n
% elementul diagonal
5. akk =

Comentarii. In cazul real algoritmul 3.9 necesita NLQ = 2nm2 m3 /3 operatii


si este numeric stabil, dupa cum vom arata n sectiunea 3.8. Modul de apel este
[A, ] = LQ(A), unde este vectorul real cu componentele k , k = 1 : s, iar A
apare ca tablou de intrare-iesire.

In cazul utilizarii reflectorilor complecsi, detaliile sunt propuse cititorului ca


exercitiu.


CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE

172

3.6.2

Factorizarea LQ

In aceasta sectiune construim factorizarea LQ a unei matrice A Cmn de forma


generala.
In cazul m n, relatiile (3.101) si (3.102) pot fi scrise sub forma
A = LV, L = [|{z}
L |{z}
0 ],

(3.103)

H
. . . Z2H Z1H
V = Zm

(3.104)

unde matricea

nm

este unitara, iar L este inferior triunghiulara de ordin m. Partitionand V = Z H


conform cu L, i.e.
 
V
}m
V =
, Z = [|{z}
Z |{z}
Z ]
(3.105)
V
}n m
m

nm

din (3.103) deducem

A = L V ,

(3.106)

unde evident V = Z H are liniile ortogonale, i.e. V V H = Im .


Propozitia 3.4 Orice matrice A Cmn cu m n poate fi scris
a sub forma
(3.106), unde V Cmn are liniile ortogonale, iar L Cmm este inferior
triunghiular
a. Prin definitie, relatia (3.106) constituie factorizarea LQ a matricei A. Dac
a A este epic
a, atunci L rezult
a inversabil
a si reciproc.
Demonstratia ultimei afirmatii este evidenta. Mai mult, daca A este epica,
atunci matricea hermitica G = AAH este pozitiv definita, prin urmare considerand
factorizarea Cholesky G = L1 LH
si definind V1 = L1
surinta
1
1 A, putem stabili cu u
unicitatea factorizarii LQ, n care factorul triunghiular L are elementele diagonale
pozitive.

In general, matricea hermitica pozitiv semidefinita G = AAH se numeste gramian


al (liniilor) lui A. Observatia 3.4 se reformuleaza corespunzator n noul context.
Daca matricea A este epica, atunci matricea Z din (3.105) are o semnificatie
geometrica remarcabila. Din (3.101) sau (3.103) rezult
a AZ = [L 0], unde Z are
structura (3.105), deci
AZ = 0.
(3.107)
Mai mult, Z Cn(nm) are coloanele ortogonale, deci constituie o baz
a ortogonal
a
a subspatiului N = KerA. Proiectorul ortogonal pe N este P2 = Z Z H .
In mod similar, matricea Z Cnm (care, n (3.105), completeaza Z pana
la o matrice ortogonala) constituie o baza ortogonala a subspatiului complementar
N = ImAH . Proiectorul ortogonal pe S este P1 = AH (AAH )1 A sau mai simplu
P1 = Z Z H . Pe scurt, partitia (3.105) corespunde descompunerii ortogonale
Cn = ImAH KerA.

(3.108)

173

3.6. SISTEME LINIARE SUBDETERMINATE


Acumularea transform
arilor

In cazul m n, factorizarea LQ a matricei A poate fi determinata utilizand procedura de triangularizare ortogonala la dreapta din sectiunea anterioara. Factorul
triunghiular L se obtine ca atare n triunghiul inferior al matricei A, iar factorul
ortogonal V poate fi calculat sub forma
H
V = [Im 0]V = [Im 0]Zm
. . . Z2H Z1H ,

(3.109)

aplicand urmatoarea schema evidenta de acumulare a transformarilor.


GLQ

% Acumularea primelor n linii V ale matricei V = Z H , m n.


1. V = [In 0]
2. Pentru k = m : 1 : 1
1. V V ZkH

Cu referire la algoritmul 3.9, calculul poate fi organizat pe loc n tabloul A,


iar procedura poate fi scrisa cu usurinta de cititorul interesat. Mentionam nsa ca
formarea explicita a matricelor V sau Z , Z etc. este de regula contraindicata.
Aproape ntotdeauna forma factorizata (3.102) este suficienta.
Aplicarea transform
arilor
La fel ca n sectiunea 3.4, matricea unitara Z generata de algoritmul de triangularizare LQ aplicat matricei A se utilizeaza pentru a transforma adecvat o alta
matrice data B.
Aplicarea transformarii
B ZB = Z1 Z2 . . . Zs B

(3.110)

se face partitionand B pe coloane:


MLQ

% Aplicarea transformarii B ZB, unde Z = Z1 Z2 . . . Zs .


1. Pentru k = s : 1 : 1
1. B Zk B

Procedand n acelasi spirit, toate rezultatele din sectiunea 3.4 pot fi reformulate
n contextul factorizarii LQ. Stabilirea versiunii la nivel de bloc a procedurii de
triangularizare la dreapta precum si a procedurilor de ortogonalizare Gram-Schmidt
sunt propuse cititorului ca exercitii.
Factorizarea RQ
In unele aplicatii matricea A este adusa la forma superior triunghiulara n raport
cu diagonala secundara care ncepe din coltul dreapta-jos, i.e.
AZ = R,

(3.111)

unde rij = 0, j < n m + i, i = 1 : m, iar Z este unitara. (Pentru simplitate am


presupus m n.)

174

CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE

Procesul de triangularizare la dreapta parcurge liniile n ordine inversa, ncepand


cu ultima si anuleaza elementele situate la stanga diagonalei secundare utilizand
reflectori modificati. Notand reflectorii cu indicele liniei n care se pastreaza vectorii
Householder corespunzatori, putem scrie
Z = Zm . . . Z2 Z1 ,

(3.112)

iar procedura de calcul poate fi rezumata astfel.


RQ

% Schema de triangularizare RQ, cazul n > m


1. Pentru k = m : 1 : 1
1. Se genereaza Zk a.. (AZk )kj = 0, j = 1 : n m + k 1
2. A AZk

La pasul 1.1 se utilizeaza o procedura de tip mRFG (vezi tabelul 3.1), iar la
pasul 1.2 se modifica numai primele n m + k elemente din liniile i = 1 : k 1,
utilizand procedura corespunzatoare mRF.
Aplicatiile procedurii de triangularizare RQ sunt perfect similare cu aplicatiile
descrise mai sus ale procedurii LQ.

3.6.3

Rezolvarea sistemelor subdeterminate

Revenim acum la problema (3.5) din sectiunea introductiv


a a acestui capitol. Fie
A Cmn si b Cn . Problema consta n determinarea solutiei normale a sistemului
Ax = b, i.e. a unui vector x Cn astfel ncat
kx k = min kxk.
Ax=b

(3.113)

Conditiile de existenta si unicitate ale solutiei normale pot fi formulate astfel.


Teorema 3.4 Oricare ar fi b Rm , problema (3.113) are o solutie unic
a dac
a si
numai dac
a A este epica, i.e. m n si rangA = m.

In acest caz, solutia normal


a x a sistemului Ax = b poate fi scris
a n forma
x = A+ b,

(3.114)

n care matricea A+ este prin definitie (pseudo)inversa normala a lui A si are


expresia
A+ = AT (AAT )1 .
(3.115)
Demonstratia rezulta usor (cel putin n cazul real) utilizand metodele clasice de
minimizare cu restrictii (problema (3.113) este extrem de simpla). Noi vom proceda
direct, stabilind pe rand a) unicitatea si b) existenta globala a solutiei x .
a) Pentru a demonstra unicitatea, nu e necesar sa presupunem ca matricea A
este epica, ci doar ca
b ImA,
(3.116)
i.e. multimea X a solutiilor sistemului Ax = b nu e vida. Desigur, n limbaj
geometric, X este planul (sau varietatea liniara) de ecuatie Ax = b. Mai precis,

175

3.6. SISTEME LINIARE SUBDETERMINATE

 N = KerA
 planul


Ax = b








x


x2
:






















  
-



0
x = x1 













Fig. 3.7: Forma generala a solutiilor sistemului subdeterminat Ax = b

teorema 1.3 din capitolul 1 afirma ca X = x0 + KerA, unde x0 este o solutie particulara. In consecinta, conform lemei proiectiei ortogonale, solutia x a problemei
(3.113) coincide cu piciorul perpendicularei din origine pe planul X si ca atare este
unic determinata, vezi figura 3.7.
La fel ca n demonstratia teoremei 3.3, aceste consideratii geometrice pot fi
exprimate analitic. Planul X este paralel cu subspatiul N = KerA, deci x KerA
sau x N = ImAH , i.e. exist
a (cel putin) un y Cm astfel ncat x = AH y .

(In interpretare variationala, y este vectorul multiplicatorilor Lagrange asociati


restrictiilor egalitate Ax = b din (3.113).) In definitiv avem

   
In AH
x
0
=
,
(3.117)
A
0
y
b
de unde, eliminand x rezulta

AAH y = b,

x = AH y .

(3.118)

b) Existenta globala a lui x este asigurata, i.e. (3.116) are loc oricare ar fi
b Cm , daca si numai daca A este epica. In acest caz, matricea G = AAH este
pozitiv definita deci inversabila, iar (3.114) si (3.115) rezulta din (3.118).

Observatia 3.6 Sistemul extins (3.117) si sistemul normal (3.118) au o semnificatie


similara cu cea a sistemelor (3.83) si respectiv (3.84) din observatia anterioara. Si
aici gramianul G = AAH este o matrice rau conditionata, astfel ncat, n general,
calculul solutiei normale prin rezolvarea sistemului (3.118) nu este recomandabil.

Calculul solutiei normale


Rezolvarea problemei de minimizare cu restrictii (3.113) se poate face utilizand
informatiile furnizate de algoritmul de triangularizare ortogonala
AZ = [L 0],

Z = Z1 Z2 . . . Zm ,

(3.119)


CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE

176

unde Z este unitara, iar L este inferior triunghiulara inversabila. Notam


 
}m
u
x = Zu, u =
u
}n m
si scriem sistemul Ax = b sub forma echivalenta
 
u

[L 0]
= b,
u

(3.120)

(3.121)

Relatia de mai sus arata ca, n procesul de minimizare din (3.113), vectorul u = u
este fixat prin
Lu = b,
(3.122)
iar u este liber.
Pentru a determina solutia normala x , consideram (3.120), unde Z este ortogonala, deci kZuk = kuk. Avem
kxk2 = kZuk2 = ku k2 + ku k2 ku k2 .

(3.123)

Efectuand minimizarea n raport cu u , obtinem evident


u = 0.

(3.124)

Prin urmare solutia normala este

x =Z

(L )1 b
0

(3.125)

sau
x = Z (L )1 b.

(3.126)

T
inand seama de structura matricei Z din (3.119), se vede usor ca transformarea
(3.125) poate fi efectuata pe loc n x utilizand o procedura de tip MLQ. Schema de
calcul este urmatoarea
SLQ

%
1.
2.
3.

Calculul solutiei normale x = A+ b


Se rezolva sistemul triunghiular L x(1 : m) = n
x(m + 1 : n) = 0
Pentru k = m : 1 : 1
x Zk x

Cu referire la algoritmul 3.9, care utilizeaza reflectori hermitici, implementarea


schemei de mai sus are loc astfel.
Algoritmul 3.10 (SLQ rezolvarea sistemelor subdeterminate) (Se
da un vector b Cm . Utilizand iesirea algoritmului 3.9, se calculeaza
solutia normala x a sistemului liniar Ax = b. Se presupune ca matricea
A este epica.)

3.7. CONDIT
IONAREA PROBLEMELOR CMMP

177

% se rezolva sistemul inferior triunghiular (3.122)


1. Pentru k = 1 : m
Pk1
1. xk = (bk j=1 akj xj )/akk
% calculul solutiei normale
2. x(m + 1 : n) 0
3. Pentru k = m : 1 : 1
1. t = akk
2. akk = k

Pn
3.
j=k vkj xj /k
4. Pentru j = k : n
1. xj xj + vkj
5. akk = t
Calculul proiectiilor (pe ImAH si KerA), rezolvarea sistemelor subdeterminate
cu membru drept multiplu precum si calculul pseudoinversei normale A+ se fac
adaptand n mod corespunzator metodologia din sectiunea 3.5. Desigur, acum A+
este o inversa la dreapta a lui A, i.e. AA+ = I.

3.7

Conditionarea problemelor CMMP

In aceasta sectiune prezentam cateva rezultate privind sensibilitatea solutiilor problemelor de calcul abordate anterior n raport cu variatia datelor de intrare 21 .

3.7.1

Preliminarii

Consideram sistemul liniar


Ax = b,

(3.127)

unde A Rmn este o matrice data, iar b Rn este un vector arbitrar. Notam
r = rangA si presupunem ca matricea A este de rang maxim, i.e. r = s, unde
s = min(m, n) 22 . In consecinta, conform teoremelor 3.5 si 3.6, sistemul (3.127) are
o solutie n sens CMMP unica
x = A+ b,
(3.128)
unde matricea A+ are expresii diferite dupa cum m n sau m n.
Avand n vedere concizia expunerii, n cele ce urmeaza vom adopta o terminologie precum si notatii cat mai uniforme. Vom spune ca A+ este inversa (n sens
21 Deoarece aceast
a tematic
a are un caracter pur matematic, i.e. nu vizeaz
a calitatea algoritmilor
de calcul, pe parcurs vom utiliza formulele cele mai convenabile pentru scopul propus.
22 O proprietate P definit
a pe Rmn se numeste tipic
a dac
a este generic
a si structural stabil
a,
adic
a are loc aproape peste tot (n afara unei variet
at i algebrice) si se conserv
a oricare ar fi
micile variatii ale (elementelor) matricei considerate.
De exemplu, n cazul m = n, proprietatea de inversabilitate este generic
a (are loc peste tot
n afara variet
atii definite de ecuatia detA = 0) si structural stabil
a (dac
a detA 6= 0, atunci
det(A + E) 6= 0, oricare ar fi perturbatia E suficient de mic
a). Pe scurt, matricele inversabile sunt
tipice n Rnn . Similar, matricele de rang maxim sunt tipice n Rmn .

178

CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE

CMMP a) matricei A si vom defini num


arul de conditionare (la inversare) al lui A
prin
(A) = kAkkA+ k,
(3.129)
unde k k = k k2 este norma spectral
a, indusa de norma (vectoriala) euclidiana
kxk = (xT x)1/2 , adica
def

kAk = max kAxk.


kxk=1

(3.130)

Desigur, n cazul m = n avem A+ = A1 , deci (3.129) se reduce la definitia cunoscuta a lui (A) din sectiunea 2.7 23 .
Direct din (3.129) si (3.130),
(i) daca matricea A este ortogonala, atunci (A) = 1, i.e. matricele ortogonale
sunt perfect conditionate la inversare.
Pe de alta parte, norma euclidiana precum si norma spectrala sunt ortogonal
invariante, deci
(ii) transformarile ortogonale nu modifica conditionarea datelor, i.e. avem
(A) = (QT AZ), oricare ar fi matricele ortogonale Q si Z.
Proprietatile remarcabile (i) si (ii) explica folosirea intensiva a matricelor ortogonale n calculul numeric. (Aceleasi proprietati de invarianta apar si n norma
Frobenius k kF , care este si ea ortogonal invarianta. Numarul de conditionare
evaluat folosind aceasta norma este notat F (A).)
Revenim acum la sistemul (3.127), n care prin ipoteza matricea A este de rang
maxim si facem urmatoarele precizari.
In cazul m n matricea A este monic
a, iar A+ = (AT A)1 AT este epica.
+
+
Evident, avem A A = In , deci A este o inversa la stanga a lui A, dar AA+ 6= Im ,
mai precis P1 = AA+ si P2 = Im P1 sunt proiectorii (ortogonali) pe subspatiile
S = ImA si respectiv S = KerA. De asemenea, este adevarat ca kAk2 = kAT Ak
sau, pe scurt,
kAk2 = kGk,
(3.131)
unde matricea simetrica G = AT A este gramianul (coloanelor) matricei A.
In cazul m n matricea A este epic
a, iar A+ = AT (AAT )1 este monica.
+
+
Evident, acum avem AA = Im , deci A este o inversa la dreapta a lui A, iar
P1 = A+ A si P2 = Im P1 sunt proiectorii pe subspatiile N = ImAT si respectiv
N = KerA. De asemenea, are loc relatia (3.131), unde matricea G = AAT este
gramianul (liniilor) matricei A.
Putem acum formula concis primele noastre rezultate.
Propozitia 3.5 Dac
a A Rmn este de rang maxim, atunci
(G) = 2 (A),

(3.132)

unde G este gramianul matricei A.


23 Acolo am evaluat (A) utiliz
and normele k k1 sau k k , relativ mai simple. In acelasi scop,
aici vom utiliza norma spectral
a, care, dup
a cum stim din capitolul 1, este ortogonal invariant
a.
Anticip
and rezultate din capitolul 5, preciz
am c
a n general norma spectral
a kAk coincide cu
valoarea singular
a maxim
a a matricei A, notat
a de obicei 1 , iar num
arul de conditionare este
(A) = 1 /r 1, unde r este cea mai mic
a valoare singular
a nenul
a a lui A.

3.7. CONDIT
IONAREA PROBLEMELOR CMMP

179

Demonstratie.
Notam cu H gramianul lui A+ . In cazul m n, A+ este epica,
deci
H = A+ (A+ )T = (AT A)1 AT A(AT A)1 = (AT A)1 = G1 .
Aplicand acum (3.131) lui A+ gasim
kA+ k2 = kHk = kG1 k,

(3.133)

deci (3.132) rezulta direct, utilizand definitia lui (G) precum si relatiile (3.131) si
(3.133). Cazul m n este similar; desigur acum H = (A+ )T A+ .

Propozitia 3.6 Dac


a A Rmn este de rang maxim, atunci matricea A = A + E
are aceeasi proprietate, oricare ar fi perturbatia E astfel nc
at
kEk < 1 (A)kAk.

(3.134)

In cazul m n putem scrie A = (Im + EA+ )A, unde, conform


Demonstratie.
unui rezultat cunoscut, matricea Im + EA+ este inversabila daca kEA+ k < 1. Dar
ntotdeauna avem kEA+ k kEk kA+ k. Prin urmare, daca (3.134) are loc, atunci
A si A sunt echivalente (la stanga), deci A rezulta monica o data cu A. In cazul
m n scriem A = A(In + A+ E) si rationam similar.

Propozitia 3.5 arata ca sistemele normale (3.84) si (3.118) 24 sunt mult mai
rau conditionate decat sistemul dat (3.127) si explic
a de ce determinarea solutiei
x prin rezolvarea acestor sisteme este ntotdeauna contraindicata din punct de
vedere numeric. Propozitia 3.6 arata ca solutia x este robust
a, i.e. continua sa
fie bine definita chiar daca matricea A a sistemului (3.127) sufera perturbatii E
relativ importante. Conform relatiei (3.134), aceste perturbatii sunt strict limitate
n norma numai de (A). Pentru orientare, daca (A) = 103 , atunci (G) = 106 ,
deci la rezolvarea n simpla precizie (i.e. cu t = 7 cifre zecimale semnificative) a
sistemului normal se pierd aproape toate cifrele semnificative. Pe de alta parte, daca
kAk 1, atunci perturbatiile admisibile n A sunt numai de ordinul kEk < 103 .
Concluziile obtinute mai sus subliniaza importanta deosebita a numarului de
conditionare (A) pentru caracterizarea din punct de vedere numeric a problemei
(3.127). In continuare vom preciza aceste concluzii, efectuand analiza cantitativa a
sensibilitatii (locale) a solutiei x n raport cu perturbatiile datelor. In consecinta,
vom considera sistemul perturbat
(A + E)x = b + f,

(3.135)

n care perturbatiile E si f sunt relativ mici n raport cu nivelul maxim admisibil,


e.g. avem
kEk A kAk, kf k b kbk,
(3.136)
unde tipic A si b sunt de acelasi ordin de marime si, n orice caz, A < 1 (A).
Notand cu x
solutia n sens CMMP a sistemului perturbat (3.136), problema
de analiza a sensibilitatii consta pe scurt n a evalua diferenta x = x
x .
24 A

c
aror matrice este evident G = AT A, respectiv G = AAT .

180

CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE


>

b 

r = b2





b1 = Ax


Fig. 3.8: este unghiul dintre vectorul b si subspatiul ImA

3.7.2

Sensibilitatea pseudosolutiei

Consideram sistemul (3.127) n care presupunem ca A Rmn este monica, iar


AT b 6= 0.
Teorema 3.5 Sensibilitatea relativ
a a pseudosolutiei x 6= 0 a sistemului (3.127)
n raport cu perturbatiile (3.136) poate fi evaluat
a acoperitor prin
k
x x k
(A) b
(2 (A)tg + (A))A +
,
kx k
cos

(3.137)

unde are semnificatia din figura 3.8.


Demonstratie.
Conform teoremei 3.5, pseudosolutia x
= x + x a sistemului
perturbat (3.135) satisface relatia
(AT + E T )(A + E)(x + x) = (AT + E T )(b + f ).
Desf
acand parantezele si tinand seama ca AT Ax = AT b, obtinem
(AT E + E T A)x + (AT A)x = E T b + AT f + . . . ,
unde + . . . indica termeni neglijabili n prima aproximatie, ca produs a doua cantitati mici. Prin urmare putem scrie
x = (AT A)1 E T (b Ax ) A+ Ex + A+ f,

(3.138)

unde evident AT A = G este gramianul lui A, iar b Ax = r este reziduul de


norma minima. Evaluand n norma ambii membri ai relatiei (3.138), gasim
kxk kG1 k kEk kr k + kA+ k kEk kx k + kA+ k kf k,
de unde, tinand seama de relatiile (3.133) si (3.136), rezulta imediat


kxk
kr k
kbk
+ 2
2
+
kA k kAk
+ kA k kAk A + kA+ k kAk
b .
kx k
kAk kx k
kAk kx k
In sfarsit, avem b1 = Ax , deci kb1 k kAk kx k, iar din figura 3.8 se vede ca
kr k
kbk
1
= tg,
=
.
kb1 k
kb1 k
cos

3.7. CONDIT
IONAREA PROBLEMELOR CMMP

181

Demonstratia este terminata.

Observatia 3.7 Putem obtine usor o evaluare mai fina decat (3.137), tinand
seama ca n (3.138) perturbatiile E si f actioneaza diferentiat. In acest scop scriem
E = E1 + E2 , unde E = P E, = 1 : 2, sunt proiectiile (coloanelor) lui
E pe subspatiile S si respectiv S . Avem A+ E = A+ E1 (deoarece A+ P2 =
= A+ (I AA+ ) = 0) precum si E T r = E2T r (deoarece r = P2 b iar P2 este
proiector ortogonal, i.e. P22 = P2 si P2T = P2 ). In mod similar avem f = f1 + f2 ,
unde f = P f , = 1 : 2, iar A+ f = A+ f1 . Prin urmare, relatia (3.138) poate fi
scris
a sub forma echivalenta, dar mai precisa
x = G1 E2T r A+ E1 x + A+ f1 ,

(3.139)

unde E1 , E2 si f1 apar acum ca perturbatii independente, iar f2 a disparut. Prin


urmare, daca n locul relatiei (3.136) consideram ca pentru = 1 : 2 avem
b
kP Ek A
kAk, kP f k kbk,

(3.140)

atunci concluzia teoremei este




b1
k
x x k
A
(A) 1 +
+ 2 (A) tg A
2.
kx k
cos

(3.141)

Mai departe vom utiliza relatiile (3.137) si (3.141) sub forma relativ mai simpla
k
x x k
1 (A) + 2 2 (A)tg,
kx k

(3.142)

unde, n acord cu (3.140), , = 1 : 2, reprezinta estimari (n norma spectrala)


ale perturbatiilor datelor A si b la nivelul subspatiilor S si S .

In esenta, relatia (3.142) arata ca, din punctul de vedere al sensibilitatii pseudosolutiei x , exista doua clase distincte de probleme CMMP, avand caracteristici
numerice net diferite.
Prima clasa contine problemele CMMP aproape compatibile, la care reziduul
r este mic n norm
a fata de membrul drept b, deci 0. In acest caz, al doilea
termen din (3.142) este neglijabil, deci practic sensibilitatea local
a a pseudosolutiei
x este proportional
a cu num
arul de conditionare (A) al lui A. In particular, daca
m = n, atunci avem exact r = 0 si = 0, iar (3.142) se reduce la relatia (2.47)
stabilita n sectiunea 2.7. Concluziile de acolo se aplica evident si aici.
A doua clasa de probleme CMMP corespunde sistemelor (3.127) cu reziduu
de norma minima r mare n norm
a fata de membrul drept b 25 . In acest caz al
doilea termen din (3.142) este evident dominant, deci practic sensibilitatea local
a
a pseudosolutiei x este proportional
a cu p
atratul num
arului de conditionare (A).
Aceste probleme, specific de tip CMMP, sunt considerabil mai dificile din punct de
vedere numeric decat cele din prima clasa si necesita luarea unor masuri speciale
de precautie (vezi sectiunea urmatoare).
25 Aceast
a situatie poate fi usor detectat
a n practic
a calcul
and kbk si = kr k, vezi comentariile
la algoritmul 3.8. Subliniem c
a n acest caz sensibilitatea pseudosolutiei x depinde nu numai de
matricea A a sistemului (3.127) ci si de membrul drept b (prin intermediul lui ).

182

CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE

In orice caz, relatia (3.142) subliniaza ca elementul determinant n stabilirea


sensibilitatii pseudosolutiei este numarul de conditionare (A), de aceea n practica
se recomanda insistent evaluarea lui (A) n cursul procesului de calcul. Desigur,
daca am efectuat triangularizarea ortogonala QT A = R a lui A, atunci, beneficiind
de invarianta ortogonala a normei spectrale, avem
(A) = (R),

(3.143)

deci (A) poate fi estimat extrem de simplu, utilizand estimatorul de conditie pentru
matrice triunghiulare descris n sectiunea 2.7. Acelasi rezultat poate fi obtinut
aplicand procedura de triangularizare ortogonala cu pivotarea coloanelor, descrisa
n sectiunea 3.9. In acest caz, o (sub)evaluare a lui (A) poate fi obtinuta prin simpla
inspectie, sub forma
(A) = r11 /rnn , unde rkk , k = 1 : n, sunt elementele diagonale
ale factorului triunghiular R, dispuse pe diagonala n ordine descrescatoare.
Pe de alta parte, reexaminand formula fundamentala (3.142), este util sa retinem
ca influenta perturbatiilor E si f asupra pseudosolutiei x depinde de localizarea
acestora n raport cu subspatiile S si S . De exemplu, daca ImE ImA, atunci evident E2 = P2 E = 0, deci sensibilitatea lui x este dictata de (A) (iar nu de 2 (A)),
chiar daca reziduul r este important. In unele aplicatii, aceste circumstante pot fi
realizate printr-o filtrare prealabila adecvata a datelor de intrare, dar discutarea
acestor tehnici depaseste scopurile expunerii de fata. In alta ordine de idei, este
evident ca perturbatiile inerente datorate erorilor de rotunjire actioneaza n general aleator si n orice caz nediferentiat n raport cu S si S , astfel ncat de fapt
dependenta de 2 (A) nu poate fi niciodata eliminata complet n situatiile practice,
indiferent de masurile de precautie luate.
In rezumat, sensibilitatea pseudosolutiei este determinata de conditionarea matricei A precum si de clasa a problemei CMMP considerate. De asemenea, ea
depinde de tipul structural al perturbatiilor considerate.

3.7.3

Sensibilitatea solutiei normale

Consideram sistemul (3.127) n care presupunem ca matricea A Rmn este epica,


iar b 6= 0.
Teorema 3.6 Sensibilitatea relativ
a a solutiei normale x 6= 0 a sistemului (3.127)
poate fi evaluat
a acoperitor prin
k
x x k
1 (A),
kx k

unde 1 = 2A + b .

(3.144)

Demonstratie. Procedam ca n demonstratia teoremei 3.5. Conform cu teorema


3.4, solutia normala x
= x + x a sistemului perturbat (3.135) satisface relatiile
(A + E)(x + x) = b + f,

x + x = (AT + E T )(y + y),

unde Ax = b si x = AT y . Prin urmare, n prima aproximatie avem


Ax + Ex = f,

x = AT y + E T y .

3.8. STABILITATEA ALGORITMILOR DE TRIANGULARIZARE

183

Eliminand y ntre aceste relatii si notand A+ = AT (AAT )1 , obtinem


x = (In A+ A)E T y A+ Ex + A+ f,

(3.145)

unde y = (AAT )1 b = (A+ )T x , iar n paranteza din membrul drept recunoastem


proiectorul ortogonal P2 = In A+ A pe subspatiul N = KerA. Deoarece P2 este o
matrice simetrica cu valorile proprii 0 si 1, avem kP2 k = 1. In consecinta, evaluand
n norma ambii membri ai relatiei (3.145), gasim 26
kxk kEk kA+ k kx k + kA+ k kEk kx k + kA+ k kf k,
de unde, tinand seama de (3.136), rezulta (3.145).

Observatia 3.8 Considerand proiectiile E = EP , = 1 : 2, ale liniilor matricei


E pe subspatiile N si N si procedand ca n observatia 3.7, putem si aici scrie mai
precis
x = (In A+ A)E2T y A+ E1 x + A+ f.
(3.146)
Avand nsa n vedere structura extrem de simpla a relatiei (3.145), utilitatea practica a acestei precizari este aici limitata.

In esenta, relatia (3.144) spune ca sensibilitatea local


a a solutiei normale x este
proportional
a cu num
arul de conditionare (A) al matricei A.
Avand n vedere ca, n ipoteza teoremei 3.6, sistemele subdeterminate sunt
ntotdeauna compatibile, relatia (3.144) poate fi considerata caz particular al relatiei
(3.137), n care r = 0, deci = 0. Observam totusi ca demonstratiile celor doua
teoreme se bazeaza pe relatii diferite, iar coeficientul 2 din (3.144) nu apare n
(3.137). Prin urmare, apelul la (3.137) ofera mai curand o confirmare intuitiva,
dec
at o justificare ferma a relatiei (3.144). In rest, implicatiile practice ale relatiei
(3.144) sunt similare cu cele cunoscute din sectiunea 2.7.
In rezumat, sensibilitatea solutiei normale este dictata numai de conditionarea
matricei A. In acest sens, problema rezolvarii sistemelor subdeterminate este relativ
simpla.

3.8

Stabilitatea numeric
a a algoritmilor de
triangularizare ortogonal
a

In aceasta sectiune oferim cateva informatii de baza privind stabilitatea numerica a


algoritmilor de calcul prezentati anterior n acest capitol. De asemenea, sprijiniti pe
analiza sensibilitatii problemelor de calcul din sectiunea precedenta, facem cateva
consideratii privind acuratetea solutiilor calculate si descriem o procedura de rafinare iterativa a acestor solutii.
26 Amintim

c
a, n norma spectral
a avem ntotdeauna kAk = kAT k.

184

3.8.1

CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE

Stabilitatea numeric
a a algoritmilor fundamentali

In general, analiza stabilitatii numerice a algoritmilor de calcul din acest capitol nu


prezinta dificultati de esenta, ci numai obstacole pur tehnice. In principiu, ncepand
cu algoritmii de baza 3.1-3.4, ntregul proces de calcul se reduce la o succesiune
determinata de operatii aritmetice elementare, inclusiv extrageri de radical, pentru
care erorile de rotunjire sunt de ordinul M 10t , unde t este precizia de lucru,
adica numarul de cifre zecimale semnificative, vezi capitolul 0. Prin urmare, efectul
(cumulat al) acestor erori asupra rezultatelor obtinute n urma unui proces de calcul
liniar poate fi apreciat utilizand parametrul generic
cm = cmM ,

(3.147)

unde m reprezinta numarul de operatii efectuate, iar c este o constanta de ordinul


unitatii, n general diferita de la caz la caz. Aici este esential sa subliniem ca ntreaga
tehnica de analiz
a invers
a a erorilor consta n a converti acest efect direct al erorilor
de rotunjire asupra solutiei calculate n perturbatii echivalente la nivelul datelor.
In consecinta, algoritmul analizat este (invers) numeric stabil daca solutia calculata
coincide cu solutia exacta a problemei de calcul cu datele putin perturbate 27 .
Rezultatele analizei pot fi sintetizate astfel. (Pentru demonstratii si rezultate
aditionale, vezi [IX].)
1 . Fie x Rm un vector dat. Vectorul Householder u, calculat de procedura
RFG, este apropiat de vectorul Householder exact u, i.e.
u = u + u,

unde kuk cm .

(3.148)

Subliniem ca acest rezultat se datoreaza exclusiv alegerii judicioase a semnului


lui de la pasul 2.2.1.
2 . Fie x Rm un vector dat, U1 un reflector definit de vectorul Householder
u, iar y = U1 x. Vectorul transformat y, calculat de procedura RF, utilizand un
vector Householder aproximativ u
de tip (3.148) satisface relatia
y = (U1 + U )x,

unde kU kF cm .

(3.149)

In continuare, utilizand rezultatele fundamentale 1 si 2 , se poate demonstra


afirmatia urmatoare. (Vezi schema de calcul MQR din sectiunea 3.4.)
3 Fie A Rmn o matrice data, QT = Us . . . U2 U1 o secventa de s reflectori
definiti de vectorii Householder uk , k = 1 : s, iar B = QT A. Matricea transformata
calculata utilizand schema de calcul
B,
1. B = A
2. Pentru k = 1 : s
1. B Uk B
cu vectori Householder aproximativi uk de tip (3.148), satisface relatia
= QT (A + A),
B

unde kAkF scm kAkF .

(3.150)

27 Peste tot mai departe not


iunea de stabilitate numeric
a a unui algoritm concret va fi nteleas
a
n acest sens, deci este implicit legat
a de o anume problem
a de calcul precizat
a.

3.8. STABILITATEA ALGORITMILOR DE TRIANGULARIZARE

185

Pe scurt, algoritmul de aplicare a unei secvente de reflectori este (invers) numeric


stabil, iar perturbatia echivalenta relativa la nivelul matricei date A este
A = scm ,

(3.151)

unde s este lungimea secventei, m este ordinul reflectorilor iar c este o constanta de
ordinul unitatii.
Pe baza proprietatii generale 3 se poate demonstra ca
4 Algoritmul de triangularizare ortogonal
a QR este numeric stabil. Mai precis,
este matricea superior triunghiulara calculata (n cazul m n), atunci
daca R
astfel ncat
exista o matrice ortogonala Q
T (A + A) = R,

unde kAkF ncm kAkF .

(3.152)

O afirmatie similara este valabila relativ la algoritmul LQ de triangularizare ortogonala la dreapta precum si la toti algoritmii de calcul derivati (cum ar fi GQR,
MQR, SQR etc.). Subliniem ca, n ultima instanta, toate procedurile mentionate
sunt de tip 3 , unde parametrii s = min(m, n) si m iau valori adecvate. In consecinta
5 Procedurile SQR (respectiv CMMP) si SLQ, care calculeaza pseudosolutia si
respectiv solutia normala x a sistemului Ax = b, sunt numeric stabile. Perturbatiile
echivalente relative la nivelul datelor sunt de ordinul
(SQR)

A,b = ncm ,

(m n),

(3.153)

A,b = mcn ,

(m n).

(3.154)

si respectiv
(SLQ)

Rezultate asemanatoare sunt valabile pentru procedurile de calcul ce utilizeaza


reflectori bloc, respectiv rotatii 28 .

3.8.2

Acuratetea solutiilor calculate

Vom combina acum rezultatele privind sensibilitatea solutiilor de tip CMMP, stabilite n sectiunea 3.7, cu estimarile perturbatiilor echivalente la nivelul datelor, introduse de procedurile de calcul analizate mai sus. In acest fel vom obtine evaluari a
priori ale acuratetei solutiilor calculate, i.e. ale abaterilor relative ale acestor solutii
fata de solutiile exacte.
Consideram problema calculului pseudosolutiei x a sistemului (3.127), n care
matricea A este monica. Daca rezolvam aceasta problema utilizand procedura
SQR, bazata pe algoritmul de triangularizare ortogonala QR, atunci n virtutea
stabilitatii numerice inverse a acestei proceduri, pseudosolutia calculat
a x
coincide cu solutia exacta a problemei (3.127) cu datele perturbate n acord cu (3.153).
Aplicand teorema 3.5 (vezi relatiile (3.137)) conchidem ca
k
x x k
1 (A) + 2 2 (A)tg,
kx k

(3.155)

28
In cazul secventelor de rotatii disjuncte, estimarea (3.151) este independent
a de lungimea
secventei [IX].

186
unde

CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE


(

not

1 = A + cos
= ncm (1 +
not A
2 = tg = ncm tg.

1
cos ),

(3.156)

Relatia (3.155) arata ca n final acuratetea solutiei calculate x depinde atat de


conditionarea (A) si clasa ale problemei CMMP considerate, cat si de nivelul
erorilor , = 1 : 2, introduse de algoritmul folosit pentru rezolvarea ei. Conform
relatiilor (3.155) si (3.136), acest nivel este determinat de dimensiunile m, n ale
problemei precum si de precizia de lucru M continuta implicit de parametrul generic
cm (vezi (3.147)).
In general, evaluarile de tip (3.155), (3.156) sunt extrem de acoperitoare, dar
totodata au marele merit de a sublinia ca n situatiile dificile (care, dupa cum am
vazut, pot fi detectate relativ usor n practica) sunt necesare actiuni suplimentare
(vizand e.g. lucrul n dubla precizie, rafinarea iterativa a solutiei calculate x
etc.),
chiar daca aceasta se obtine utiliz
and un algoritm numeric stabil cum este SQR.
Consideram acum problema, relativ mai simpla, a calculului solutiei normale
x a sistemului (3.127), n care matricea A este epica. Conform relatiilor (3.154) si
(3.144), solutia normal
a calculat
a x satisface o relatie de forma
k
x x k
1 (A),
kx k
unde

not

1 = 2A + b = mcm .

(3.157)

(3.158)

Mentionam ca, n practica, acuratetea solutiei calculate n acest mod se dovedeste


de cele mai multe ori satisfacatoare.

3.8.3

Scalarea problemei CMMP

Consideram sistemul liniar (3.127), n care matricea A este monica. La fel ca n


sectiunea 2.8, scalarea acestui sistem consta n nlocuirea sa cu sistemul echivalent
D1 AD2 x
= D1 b,

(3.159)

n care D1 si D2 sunt matrice inversabile (n particular diagonale sau triunghiulare)


alese n mod adecvat.
Matricea D2 realizeaza scalarea coloanelor lui A, iar introducerea ei se reduce la
schimbarea de variabila x = D2 x
. Prin urmare D2 nu altereaza pseudosolutia n sens
CMMP a sistemului considerat, mai precis daca x
este pseudosolutia sistemului
scalat, atunci pseudosolutia sistemului initial poate fi recuperata utilizand relatia
x = D2 x .
Din contra, matricea D1 , care realizeaza scalarea liniilor lui A, atrage dupa sine
modificarea normei din Rm n raport cu care se formuleaza problema CMMP si deci
a pseudosolutiei corespunzatoare. Intr-adevar, notand cu r = D1 b D1 Ax reziduul
sistemului scalat, avem r = D1 r, deci
not

k
r k2 = rT Sr = krk2S ,

S = D1T D1 ,

3.8. STABILITATEA ALGORITMILOR DE TRIANGULARIZARE

187

n care k kS este noua norma determinata de alegerea matricei D1 . Problema


CMMP n raport cu norma k kS se numeste problema CMMP ponderata, iar
rezolvarea ei se face aplicand sistemului scalat tehnicile de calcul expuse anterior. Subliniem ca pseudosolutia x
astfel obtinuta nu coincide cu pseudosolutia

x a problemei CMMP n norma standard (corespunzatoare alegerii D1 = Im ).


In consecinta, scalarea pe linii n problemele CMMP la care se doreste calculul
pseudosolutiei x este interzisa. Pe de alta parte, n multe probleme, alegerea lui
D1 este impusa de tipul zgomotelor de masura asociate problemei CMMP (vezi
exemplul 3.2), iar n acest context matricea S are o semnificatie statistica precisa.
In problemele care privesc rezolvarea n sens CMMP a sistemelor subdeterminate Ax = b, n care matricea A este epica, situatia se inverseaza. Matricea D1
realizeaza o simpla scalare (pe linii) a sistemului de restrictii Ax = b si ca atare este
permisa ntotdeauna. Din contra, matricea D2 modifica norma din Rn considerata
la definirea solutiei normale, mai precis
not

k
xk2 = xT T x = kxk2T ,

T = D2T D21 ,

de aceea scalarea pe coloane a sistemelor subdeterminate la care se doreste calculul


solutiei normale n raport cu norma standard este interzisa.
Din punctul de vedere al calculului numeric, alegerea matricelor de scalare D1 ,
D2 urmareste echilibrarea sistemului n sensul uniformizarii nivelului de eroare
n elementele matricei A. In acest scop se recomanda evaluarea erorilor initiale
E = [ij ] care afecteaza elementele lui A precum si determinarea matricelor D1 , D2
astfel ncat elementele matricei scalate D1 ED2 sa aiba acelasi ordin de marime .
(Daca matricea A este cunoscuta exact, atunci se poate lua ij = M aij .) Pentru
detalii vezi [XIII].

3.8.4

Rafinarea iterativ
a a solutiei CMMP

Consideram din nou problema CMMP (3.127), n care matricea A este monica.
Pentru simplitate, n continuare omitem indicele superior , notand solutiile n sens
CMMP x si x
cu x si respectiv x
.
Presupunem ca am obtinut solutia aproximativa x
, utilizand procedura CMMP,
bazata pe algoritmul de triangularizare ortogonala


R1
A QT A =
, QT = Un . . . U2 U1 .
(3.160)
0
In general, problema rafinarii iterative a solutiei aproximative x
consta n constructia recurenta a unui sir x
k , k = 0, 1, 2, . . ., convergent (n precizia de lucru)
catre solutia exacta x a problemei de calcul considerate.
In cazul m = n, stim din sectiunea 2.8 ca un pas al procesului de rafinare se
desfasoara conform urmatoarei scheme de principiu. (Pentru simplitate, omitem
indicele de iterare k.)
%
1.
2.
3.

Se da x
. Se determina aproximatia urmatoare x
+ .
Se calculeaza reziduul r = b A
x
Se determina corectia x rezolvand sistemul Ax = r
Se actualizeaza aproximatia x
x+ = x
+ x

188

CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE

In cazul m > n, schema de mai sus este, n principiu, aplicabila ca atare sistemului (3.127), dar ea se dovedeste eficienta numai daca acest sistem este aproape compatibil, i.e. 0 (vezi discutia din sectiunea 3.7.2). In caz contrar, influenta reziduului asupra solutiei este determinanta (n acord cu relatiile (3.137) si (3.138)), deci
rafinarea iterativa trebuie sa se faca corectand simultan evolutia ambelor marimi.
Altfel spus, n problemele specific CMMP, cu reziduu mare, schema de corectie
prezentata mai sus trebuie aplicata nu sistemului dat (3.127), ci sistemului extins
(3.83).
In consecinta, presupunand data o solutie aproximativa (
x, r) a sistemului extins,
n primul rand vom calcula reziduul corespunzator
    


s
b
Im A
r
=

,
(3.161)
t
0
AT 0
x

iar apoi vom determina corectiile r si x rezolvand sistemul




  
Im A
r
s
=
.
AT 0
x
t

(3.162)

Desigur, n acest scop vom folosi triangularizarea ortogonala (3.160) a matricei A,


deja calculata n urma aplicarii procedurii CMMP, iar solutia (r, x) va fi obtinuta
n locul membrului drept (s, t).
Pentru a vedea cum este posibil acest lucru, consideram prima ecuatie (3.162),
i.e. r + Ax = s, pe care o premultiplicam cu QT , vezi (3.160). Notand
QT r = z, efectuand pe loc n s transformarea
s QT s

(3.163)

si utilizand pentru vectorii z si s partitii adecvate, putem scrie



 



z1
R1
s1
+
x =
,
z2
0
s2
de unde deducem imediat
R1 x = s1 z1 ,

z 2 = s2 .

(3.164)

In continuare, pentru a determina z1 si x, consideram a doua ecuatie (3.148),


i.e. AT r = t. Aici avem r = Qz, iar din (3.160) rezulta AT Q = [R1T 0], deci
R1T z1 = t.

(3.165)

Acum este clar ca dezideratele formulate mai sus relativ la rezolvarea sistemului
extins (3.162) pot fi realizate procedand n ordinea (3.163), (3.165), (3.164), dupa
care r rezulta utilizand relatia


z1
r = Q
.
(3.166)
z2
In rezumat, schema de calcul pentru un pas al procesului de rafinare iterativa
aplicat sistemului extins (3.83) este urmatoarea.

COMPLETA

3.9. DESCOMPUNEREA ORTOGONALA

189

% Se dau (
r, x
). Se determin
a aproximatia urmatoare
(
r, x
) (
r+ , x
+ ) = (
r, x
) + (r, x) .
% se calculeaza reziduul (3.161)
1. s = (b A
x) r
2. t = AT r
% se rezolva sistemul extins (3.162)
3. s QT s
4. z1 = RT t
5. s1 s1 z1
6. t x = R1 s1
7. s1 = z1
8. s r = Qs
% se actualizeaza aproximatia
9. r r+ = r + r
10. x
x
+ = x
+ x
Implementarea schemei se face de regula lucrand n precizie mixta. Reziduul
(s, t) se calculeaza n precizie dubl
a, apoi se rotunjeste la precizia de lucru n care se
fac restul calculelor. Conditia de oprire a algoritmului este kxk , krk cM ,
sau efectuarea unui numar maxim de iteratii. Practic, schema e utila atunci cand
problema nu este prea rau conditionata. Pentru amanunte consultati [?].

3.9

Descompunerea ortogonal
a complet
a

Procedurile de triangularizare ortogonala prezentate n sectiunile anterioare constituie instrumente eficiente si numeric stabile de rezolvare a problemelor de tip
CMMP cu matrice A Cmn de rang maximal, r = s. (Peste tot mai departe vom
nota r = rangA, iar s va avea semnificatia obisnuita s = min(m, n).) In aceasta
sectiune vom considera cazul general r s si vom descrie un set de proceduri (directe), capabile sa determine rangul efectiv al matricei A n prezenta erorilor de
rotunjire si sa utilizeze aceasta informatie.
Subliniem ca, n general, determinarea rangului unei matrice A cu mijloace
de calcul numeric presupune luarea unei decizii inerent afectate de riscuri privind
structura lui A. Totodata, aceast
a decizie influenteaza decisiv si ireversibil ntregul
proces de calcul ulterior. Avand n vedere reducerea riscurile mentionate, actualmente se considera ca cel mai sigur instrument de determinare a rangului este descompunerea valorilor singulare (DVS), care va fi prezentata pe larg n capitolul 5.
(Constructia acestei descompuneri are la baza tehnici iterative de determinare a valorilor proprii, care vor fi dezvoltate n capitolul urmator.) Din aceasta perspectiva,
procedura (directa) de triangularizare ortogonal
a complet
a prezentata n continuare
apare ca fiind relativ elementara si ca atare se aplica n situatiile n care simplitatea
primeaza iar deciziile de rang nu sunt critice. In esenta, procedura se desfasoara n
trei etape.
In prima etapa are loc triangularizarea ortogonala a matricei date A, utilizand
o strategie adecvata de pivotare (permutare) a coloanelor, cu scopul de a evidentia

190

CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE

n coltul dreapta-jos al factorului triunghiular R partea neglijabila, corespunzatoare


eventualului defect de rang.
In a doua etapa are loc determinarea rangului prin trunchierea lui R, adica
prin identificarea si eliminarea partii sale neglijabile. Desigur, ntr-un calcul ideal cu
precizie infinita, aceasta parte se anuleaza exact, dar n calculul practic acest lucru
nu se realizeaza niciodata datorita (i) erorilor initiale cu care elementele matricei A
au fost calculate sau determinate experimental si reprezentate n calculator precum
si (ii) erorilor de rotunjire comise pe parcursul procesului de calcul. Prin urmare,

n realitate, este ntotdeauna necesara corectarea fortat


a a rezultatului calculat R
si tocmai acest lucru se face prin trunchierea mentionata. Desigur, n acest scop
este necesar un criteriu de decizie, care n principiu este formulat de utilizator n
functie de situatia concreta precum si de obiectivele urmarite prin calcul. Indicatii
mai precise vor fi date la momentul potrivit.
In a treia etapa (n anumite situatii, facultativa) matricea superior trapezoidala
ramasa dupa trunchierea lui R este adusa la forma superior triunghiulara printr-o
procedura de tip RQ (vezi sectiunea 3.6.2).
Trecem acum la descrierea succinta a etapelor procedurii de triangularizare completa, dupa care vom prezenta cateva aplicatii ale acesteia n legatura cu problema
generala CMMP.

3.9.1

Triangularizarea ortogonal
a cu pivotarea coloanelor

Teorema 3.7 Fie A Cmn . Exist


a o matrice unitar
a U = QH Cmm precum
si o matrice de permutare astfel nc
at matricea
QH A = R

(3.167)

este superior triunghiular


a, iar pentru fiecare k = 1 : s sunt satisf
acute conditiile
min(j,m)

|rkk |2

X
i=k

|rij |2 , j = k + 1 : n.

(3.168)

In consecinta
, |r11 | |r22 | . . . |rss |, i.e. elementele diagonale ale matricei R
sunt ordonate descresc
ator.
Relatia (3.167) afirma ca matricele A si R sunt ortogonal echivalente, n particular au acelasi rang. Prin urmare, daca A este de rang r s, atunci n mod
necesar rkk = 0, k = r + 1 : s, deci n virtutea relatiilor (3.168) ultimele m r linii
ale lui R sunt nule. In consecinta,
Corolar 3.1 Dup
a o permutare convenabil
a a coloanelor sale, orice matrice
A Cmn de rang r este echivalent
a (la st
anga) cu o matrice superior trapezoidal
a,
i.e.


T
QH A =
,
(3.169)
0
unde T = R(1 : r, :), iar blocul lider T (:, 1 : r) este inversabil.
In consecinta
, primele
r coloane ale matricei A sunt independente.

COMPLETA

3.9. DESCOMPUNEREA ORTOGONALA

191

Avand n vedere ca situatia din corolar nu poate fi realizata exact, n continuare


ne vom concentra atentia asupra conditiilor (3.168). Problema determinarii rangului
va fi discutata ulterior.
Demonstratia teoremei 3.7. Procedura de triangularizare ortogonala cu pivotare
are s etape. Fie A1 = A. Vom determina matricea unitara
H H
QH = QH
s . . . Q2 Q1

(3.170)

procedand ca n sectiunea 3.3 (vezi demonstratia teoremei 3.1), dar actionand la


fiecare etapa k = 1 : s asupra unei matrice Ak k , cu coloanele permutate n scopul
satisfacerii conditiei (3.168).
T
inand seama de invarianta normei euclidiene n raport cu transformarile unitare
(3.170), aceasta nseamna ca la etapa k, n pozitia pivot (adica n coloana k) trebuie
sa se gaseasca acea coloana j k a tabloului curent Ak pentru care norma euclidiana
a vectorului Ak (k : m, j) este maxima. Pe scurt, notand
(k)

= kAk (k : m, j)k, j = k : n,

(3.171)

strategia de pivotare a coloanelor este


(k)

(k)

1. Se determina cel mai mic jk astfel ncat jk = maxj=k:n j


2. Dac
a jk 6= k
1. Ak (:, k) Ak (:, jk ).

Dupa permutare, procedura de triangularizare continua ca de obicei, i.e. are loc


generarea reflectorului QH
a elementele subdiagonale din coloana k si
k care anuleaz
aplicarea sa coloanelor urmatoare. Astfel se obtine tabloul transformat
Ak+1 = QH
k (Ak k ),

(3.172)

asupra caruia se va opera similar la etapa urmatoare. In final, matricea R = As+1


este superior triunghiulara si satisface (3.168).

Avand n vedere implementarea eficienta a procedurii descrise, tinem seama de


invarianta normelor (3.171) n raport cu transformarile (3.172) si constatam ca
(k)

(k+1) 2

(j )2 = (j

(k+1) 2

) + |akj

| .

(3.173)

Prin urmare, calculul repetat si costisitor al normelor (3.171) poate fi evitat, utilizand n schimb relatiile de actualizare relativ simple 29
v
u
!2
u
(k+1)
|akj |
(k+1)
(k) u
t
1
j
= j
.
(3.174)
(k)
j

Intregul proces de calcul se desfasoara pe loc n tabloul A conform urmatoarei


scheme de principiu.
29 Subliniem

c
a desi scrierea (3.174) evit
a dep
asirile superioare, totusi utilizarea ei nu este lipsit
a
(k+1)
(k)
de riscuri dac
a |akj
| si j au valori apropiate. In acest caz, pentru siguranta
se recomand
a
(k+1)

recalcularea normelor j

, j = k + 1 : n, vezi [XIII, pag. 9.17].


CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE

192
QRP

% Schema de triangularizare ortogonala cu pivotarea coloanelor


% initializarea normelor
1. Pentru j = 1 : n
1. j = kA(:, j)k
2. Pentru k = 1 : s
% strategia de pivotare
1. Se determin
a cel mai mic jk a.. jk = maxj=k:n j
2. Dac
a jk 6= k
1. A(:, k) A(:, jk )
2. jk k
% procedura de triangularizare ortogonala
3. Se determin
a QH
. (QH
k a.
k A)ik = 0, i = k + 1 : m
H
4. A Qk A
% actualizarea
r normelor
2

|a |
, pentru j = k + 1 : n
5. j j 1 kjj

In ceea ce priveste permutarile de coloane, ele pot fi memorate ntr-un vector


astfel ncat k = jk , k = 1 : s, la fel ca n procedurile de eliminare gaussiana din
capitolul 2. Pentru a putea identifica direct pozitia n tabloul initial A a coloanelor
matricei (permutate) A, aici vom aplica o conventie de memorare diferita. Vectorul este initializat cu indicii coloanelor lui A n ordinea naturala, iar continutul
sau este actualizat dupa fiecare permutare de coloane efectuata. Forma finala a
procedurii de triangularizare se obtine aplicand algoritmul 3.5 la pasii 2.3, 2.4 si
plasand instructiunea 2.5 la locul potrivit.

Algoritmul 3.11 (QRP) (Se da A Cmn . Se efectueaza triangularizarea ortogonala cu pivotarea coloanelor a matricei A utilizand
reflectori hermitici, i.e. QH A = R, vezi algoritmul 3.5. Permutarile
de coloane se memoreaza n vectorul astfel ncat daca n final k = j,
atunci coloana k a lui A a fost coloana j a lui A.)

COMPLETA

3.9. DESCOMPUNEREA ORTOGONALA

193

1. Pentru j = 1 : n
% initializarea normelor
1. j = kA(:, j)k
2. j = j
2. Pentru k = 1 : s
1. Se determina cel mai mic jk a.. jk = maxj=k:n j
2. Dac
a jk 6= k
% pivotare
1. A(:, k) A(:, jk )
2. jk k
3. jk k
3. k = 0
% triangularizare
4. Dac
a k < m atunci
1. = kA(k : m, k)k
2. Dac
a 6= 0
akk
1. Dac
a akk 6= 0 atunci

|akk |
2. aik uik = aik /, pentru i = k : m
3. k ukk = 1 + akk
4. Pentru j = P
k+1:n
m
1. = ( i=k uik aij ) /k
2. aij aij + uik , pentru i = k : m
% actualizarea
r normei

2
|a |
3. j j 1 kjj
5. akk =

Comentarii.
Pe parcursul procesului de calcul, normele j se memoreaza n j ,
fiind suprascrise pe masura ce nu mai sunt necesare; pentru claritate, nu am mai
indicat explicit acest lucru.
Modul de apel al procedurii este [A, , ] = QRP(A).

Daca matricea A este monica, atunci aplicatiile algoritmului 3.11 sunt similare cu
aplicatiile algoritmului 3.5. In plus, dupa cum am mentionat n sectiunea anterioara,
ordonarea coloanelor lui A n acord cu (3.168) permite estimarea rapida (ca ordin de
marime) a numarului de conditionare 30
(A) = |r11 | / |rnn |. Daca matricea A este
epic
a, atunci din nou n virtutea ordonarii (3.168), blocul lider R din (3.63) rezulta
n mod necesar inversabil, deci constructia unor baze pentru subspatiile N = KerA
si N = ImAH precum si determinarea unei solutii particulare a sistemului Ax = b
se poate face aproape prin inspectie.
De aceea, mai departe ne vom concentra atentia asupra cazului general n care
matricea A nu este de rang maxim.

3.9.2

Determinarea rangului

Aplicam procedura QRP matricei date A si consideram matricea superior triunghiulara calculata

QH A = R.
(3.175)
30 Tipic, aceast
a relatie furnizeaz
a o subevaluare de 23 ori mai mic
a dec
at valoarea adev
arat
a
(A).

194

CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE

In cazul m n, R
are structura

R1 R12
not
= 0
2
R
R
0
0
|{z} |{z}
r

}r
} nr
} mn

(3.176)

nr

n care elementele satisfac relatiile (3.168), blocul lider R1 este superior triunghiular
2 nu rezult
inversabil, dar blocul R
a nul datorita erorilor de calcul inerente. Pentru a
determina rangul r al matricei A, trebuie sa efectuam corect trunchierea factorului
punand
triunghiular R,
2 = 0,
R
(3.177)
n acord cu (3.169), n care evident matricea superior trapezoidala ramasa este
T = [R1 R12 ].

(3.178)

In cazul m < n se procedeaza similar.


Pe scurt, determinarea rangului r consta n a decide care este primul element
Strategia recomandata n LINPACK [XIII] preneglijabil de pe diagonala lui R.
supune scalarea prealabila a liniilor si coloanelor lui A astfel ncat erorile la nivel
de element sa fie de acelasi ordin de marime (vezi sectiunea 3.8.3). In acest caz,
prin definitie, rangul numeric (sau efectiv) al lui A este primul ntreg k 1 : s astfel
ncat
|rk+1,k+1 | |r11 |.
(3.179)
Mai departe, vom presupune mereu ca rangul numeric determinat n acord cu
criteriul de decizie (3.179) coincide cu rangul adevarat r al lui A 31 . Subliniem
ca, n urma acestei trunchieri corecte, se recupereaza forma superior trapezoidala
(3.169), iar numarul de conditionare al matricei A (de rang r s) poate fi estimat
ca fiind
|r11 |

(A) =
< 1 .
(3.180)
|rrr |
Relatia (3.169) are cateva aplicatii specifice extrem de importante. Notand
Q = Q(:, 1 : r) primele r coloane ale matricei unitare Q = Q1 Q2 . . . Qs , din (3.169)
obtinem imediat factorizarea QR cu pivotarea coloanelor
A = Q T.

(3.181)

In virtutea structurii lui T , matricea Q constituie o baza ortogonala a subspatiului S = ImA, generat de primele r coloane ale matricei A sau, echivalent,
de coloanele k , k = 1 : r, ale lui A (vezi comentariile de nceput la algoritmul
3.11). Altfel spus, o data cu determinarea rangului, n (3.181) a avut loc selectia
31 Realizarea practic
a a acestei coincidente este conditionat
a de alegerea judicioas
a a tolerantei
. (Valoarea = 0 nu este interzis
a, dar de obicei conduce la decizia r = s.) Pe de alt
a parte,
gradul de siguranta
al deciziei de rang poate fi nesatisf
ac
ator, mai ales dac
a modulele rkk scad
uniform, f
ar
a s
a nregistreze vreun salt semnificativ. In asemenea situatii dificile se recomand
a
determinarea rangului pe baza descompunerii valorilor singulare, vezi capitolul 5.

COMPLETA

3.9. DESCOMPUNEREA ORTOGONALA

195

unui set de r coloane liniar independente ale matricei initiale A, iar Q constituie
versiunea lor ortogonalizata. In mod corespunzator, matricea Q = Q(:, r + 1 : n)
constituie o baza ortogonala a subspatiului complementar S = KerAH . (Vom
folosi sintaxa [Q, R, ] = FQRP(A) pentru apelul procedurii de calcul al factorizarii
QR cu pivotarea coloanelor; implementarea este lasata cititorului, cu mentiunea ca
acumularea transformarilor ortogonale este identica cu aceea din algoritmul GQR.)
Pe de alta parte, considerand gramianul G = AH A si tinand seama de (3.181),
n care matricea Q are coloanele ortogonale, deducem
T G = T H T.

(3.182)

Aceasta relatie se numeste factorizare Cholesky cu pivotare si afirma ca, dupa


o permutare congruenta a liniilor si coloanelor sale, orice matrice hermitica pozitiv
semidefinita G de rang r admite o factorizare Cholesky n care factorul superior
trapezoidal T are structura (3.178) 32 .
In multe situatii constatarile de mai sus prezinta un interes intrinsec. Avand n
vedere abordarea problemei generale CMMP, descriem n continuare ultima faza a
procedurii de triangularizare ortogonala completa.

3.9.3

Triangularizarea ortogonal
a complet
a

Corolar 3.2 Fie A Cmn , de rang r s. Exist


a dou
a matrice unitare
U = QH Cmm si Z = V H Rnn precum si o matrice de permutare astfel
nc
at matricea
QH AZ = S
(3.183)
are structura
S

S
0
|{z}
r

n care blocul lider S C

rr

0
0
|{z}

}r
} mr

(3.184)

nr

este superior triunghiular inversabil.

Demonstratia este simpla. Consideram matricea superior trapezoidal


a T din
(3.178) si o aducem la forma triunghiulara utilizand transformari unitare la dreapta.
Aceasta etapa se numeste compresie si poate fi efectuata n multe feluri. De exemplu, aplicand o procedura de tip RQ (vezi sectiunea 3.6.2), obtinem
T Z = [S1 0],

(3.185)

n care S1 este superior triunghiulara iar


Z = Zr . . . Z2 Z1 .

(3.186)

Acum relatiile (3.183) si (3.184) rezulta aplicand Z la dreapta n (3.169) si tinand


not
seama de (3.185). Evident, matricea S = S1 rezulta inversabila, transformarile
32 Subliniem c
a aceast
a factorizare poate fi calculat
a direct, aplic
and matricei G procedura
CHOLDC din LINPACK [XIII].


CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE

196

unitare Q si Z au expresiile (3.168) si respectiv (3.186), iar este permutarea


produsa de procedura QRP.

Cu referire la o matrice superior trapezoidala oarecare A Cmn cu m < n,


schema de triangularizare RQ este urmatoarea.
TZRQ

% Schema de compresie la dreapta, cazul m < n


1. Pentru k = m : 1 : 1
1. Se determin
a Zk a.. (AZk )kj = 0, j = m + 1 : n
2. A AZk

Desigur, liniile lui A sunt parcurse n ordine inversa, ncepand cu ultima, iar
anularea elementelor are n vedere conservarea structurii preexistente de zerouri.
In consecinta, reflectorii Zk sunt de tipul celor din exemplul 3.5, dar aici vectorii
Householder sunt notati vk , iar partea lor esentiala vkj , j = m+1 : n, este memorata
pe pozitiile elementelor anulate din liniile lui A, la fel ca n algoritmul 3.9. Procedura
rezultata din combinarea acestor idei se redacteaza astfel.
Algoritmul 3.12 (TZRQ) (Se da A Cmn superior trapezoidala
cu m < n. Se efectueaza compresia la dreapta a matricei A utilizand o
procedura de tip RQ cu reflectori hermitici, i.e. A AZ = [R 0], unde
Z = Zm . . . Z2 Z1 , iar R rezulta superior triunghiulara. Partea esentiala
vkj , j = m + 1 : n, a vectorilor Householder se memoreaza pe pozitiile
corespunzatoare A(k, m + 1 : n) din tabloul A. La aplicarea ulterioara
a transformarilor se tine seama ca vkk = k , k = 1 : m.)
1. Pentru k = m : 1 : 1
1. k = 0

1/2
Pn
1. = |akk |2 + j=m+1 |akj |2
2. Dac
a 6= 0
1. Dac
a akk 6= 0 atunci |aakk

kk |
2. akj vkj = a
kj /, pentru j = k, m + 1 : n
3. k vkk = 1 + akk
4. Pentru i =1 : k 1

Pn
1. = aik vkk + j=m+1 aij vkj /k
2. aij aij +
vkj , pentru j = k, m + 1 : n
5. akk =

Comentarii. In cazul real, algoritmul cere 2m2 (n m) operatii. Modul de apel


este [A, ] = TZRQ(A).

In sinteza ntregii expuneri de pana acum, procedura de triangularizare ortogonala completa, corespunzatoare relatiilor (3.183) si (3.184), este urmatoarea.
QRX

% Procedura de triangularizare ortogonala completa a matricei A Cmn ; este o toleranta data, utilizata la determinarea rangului.
% triangularizarea ortogonala cu pivotarea coloanelor
1. [A, , ] = QRP(A)

COMPLETA

3.9. DESCOMPUNEREA ORTOGONALA

197

% trunchierea si determinarea rangului


2. k = 1
3. C^
at timp k s si |akk | > |a11 |
1. k k + 1
4. r = k 1
% compresia la dreapta
5. [A(1 : r, :), ] = TZRQ(A(1 : r, :))
Modul de apel este [r, A, , , ] = QRX(A, ). Subliniem ca toata informatia
despre transformarile unitare Q si Z, generate la pasii 1 si 5, este memorata (extrem
de compact) n tabloul A.

3.9.4

Descompunerea ortogonal
a complet
a

Pentru a facilita expunerea, notam X = Z si scriem relatiile (3.183) si (3.184) sub


forma


S 0
A=Q
XH.
(3.187)
0 0
Partitionand Q si X conform cu S, obtinem
A = Q S X H ,

(3.188)

unde matricele Q = Q(:, 1 : r) si X = X(:, 1 : r) au coloanele ortogonale, iar S


este superior triunghiulara inversabila de ordin r = rangA s.
Relatia (3.188) constituie descompunerea ortogonal
a complet
a a matricei
A Cmn si reprezinta, n cazul general r s = min(m, n), echivalentul factorizarilor QR si LQ (sau RQ), specifice matricelor de rang maxim. Subliniem ca,
desi descompunerea (3.188) este relativ elementara si are un evident caracter procedural, totusi ea constituie un instrument pretios de rezolvare a numeroase probleme
de calcul, n general inabordabile prin metode clasice, de tip Cholesky sau GramSchmidt. In plus, performantele numerice ale algoritmilor bazati pe aceasta descompunere sunt apropiate de performantele algoritmilor similari, derivati pe baza
descompunerii valorilor singulare din capitolul 5.
Aplicatiile descompunerii ortogonale complete sunt extrem de variate (vezi problemele 3.613.63, precum si capitolul 5). Ne vom multumi aici sa mentionam ca,
la fel ca n sectiunile 3.4 si 3.6.2, matricele Q si Q = Q(:, r + 1 : m) constituie
baze ortogonale pentru subspatiile descompunerii Cm = ImA KerAH , iar matricele X si X = X(:, r + 1 : n) joaca un rol similar relativ la descompunerea
Cn = ImAH KerA. Vom insista mai mult numai asupra problemei generale
CMMP, care constituie pentru noi un subiect inedit.

3.9.5

Problema general
a CMMP

Consideram sistemul liniar Ax = b, n care A Cmn este o matrice data, nu


neaparat de rang maxim, iar b Cm este un vector arbitrar. Problema generala

198

CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE

CMMP, pe scurt CMMPX, consta n determinarea pseudosolutiei normale a sistemului Ax = b, i.e. a unui vector x Cn astfel ncat
kx k = min kxk,
xX

(3.189)

unde X este multimea pseudosolutiilor cu proprietatea (3.77). Teorema urmatoare


arata ca problema CMMPX este ntotdeauna bine formulat
a.
Teorema 3.8 Oricare ar fi vectorul b Cm , problema CMMPX are o solutie unic
a
x Cn . Pseudosolutia normal
a a sistemului Ax = b poate fi scris
a sub forma
x = A+ b,

(3.190)

unde, prin definitie, matricea A+ Cnm este pseudoinversa normal


a (sau MoorePenrose) a lui A.
Demonstratie. Conform partii a) a teoremei 3.3, sistemul Ax = b are ntotdeauna
pseudosolutii care satisfac sistemul Ax = b1 , unde b1 S = ImA, vezi (3.82).
Conform partii a) a teoremei 3.4, acest sistem are ntotdeauna o solutie normala
unica x N = ImAH . Altfel spus, restrictia lui A la N , vazuta ca aplicatie
liniara A de la N la S este inversabila. Inversa A1 : S N , prelungita cu 0
pe S , constituie pseudoinversa A+ a lui A.

Pseudosolutia normala x a sistemului Ax = b, poate fi determinata utilizand


informatia furnizata de procedura de triangularizare ortogonala completa


S 0
QH AZ =
,
(3.191)
0 0

n care matricele Q si Z sunt unitare, iar S este superior triunghiulara inversabila


de ordin r = rangA. Aplicand transformarea QH ambilor membri ai sistemului si
notand
 
 
d
u
H
Q b=
, x = Z
,
(3.192)
d
u
obtinem sistemul ortogonal echivalent

   
S 0
u
d
=
.
0 0
u
d

(3.193)

La fel ca n sectiunea 3.5.1, pentru a determina pseudosolutiile consideram


reziduul


d S u
H
Q r=
,
(3.194)
d

n care matricea Q este unitara, deci minimul normei krk = kQH rk se atinge pentru
S u = d . In continuare, la fel ca n sectiunea 3.6.3, din (3.192), n care matricea
Z este unitara, rezulta u = 0. Prin urmare, pseudosolutia normala a sistemului
Ax = b este unic determinata prin relatia


(S )1 d
x = Z
,
(3.195)
0

199

3.10. RUTINE LAPACK S


I MATLAB
sau

x = Z

(S )1
0

0
0

QH b,

(3.196)

din care expresia pseudoinversei A+ este evidenta.


Exploatand forma factorizata a transformarilor unitare QH si Z, schema de
calcul al pseudosolutiei normale se stabileste imediat.
SQRX

% Calculul pseudosolutiei normale x = A+ b


1. Pentru k = 1 : s
1. b = QH
k b
2. Se rezolva sistemul triunghiular S x(1 : r) = b(1 : r)
3. x(r + 1 : n) = 0
4. Pentru k = 1 : r
x Zk x
5. x x

% r = rangA

Detalierea procedurii de permutare, necesare la pasul 5 pentru plasarea componentelor lui x pe pozitiile naturale, precum si completarea schemei SQRX n scopul
obtinerii reziduului de norma minima r = b Ax sau a vectorului de cea mai
bun
a aproximatie b = Ax sunt propuse cititorului ca exercitii.

3.10

Rutine LAPACK si MATLAB

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

conventiile de compunere a numelor rutinelor LAPACK, a se revedea sectiunea 2.12.

200

CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE

In MATLAB, functia qr realizeaza triangularizarea ortogonala (n diverse versiuni) a matricei A. Organizarea riguroasa a spatiului de memorie (specific
a implementarilor LINPACK si LAPACK) este de regula sacrificat
a n favoarea unei manipulari mai comode de catre utilizator, dar performantele numerice sunt aceleasi.
Apelul R = qr(A) calculeaza factorul superior triunghiular R returnand totodata,
n partea inferioara a aceluiasi tablou, vectorii Householder corespunzatori reflectorilor Q1 , . . . , Qn . Prin [Q,R] = qr(A) se acumuleaza n plus Q, iar comanda
[Q,R,P] = qr(A) efectueaza triangularizarea ortogonala cu pivotare, formand totodata explicit matricele Q si P = .
Rezolvarea n sens CMMP a sistemului liniar Ax = b, cu m 6= n se face utilizand
comanda x=A\b, unde \ este operatorul de mpartire la stanga. (Daca m > n,
atunci x este pseudosolutia sistemului Ax = b, iar daca m < n, atunci x este o
solutie particulara a aceluiasi sistem.)

3.11

Probleme

P 3.1 In planul R2 se d
a vectorul x = [3 4]T si se consider
a reflectorul elementar
U = I 2uuT , unde kuk = 1.
a. Fie u = e1 . S
a se construiasc
a vectorul transformat y = U x si s
a se reprezinte grafic
transformarea. Ce modific
ari apar dac
a u = e2 ?
b. S
a se determine vectorul Householder normat u astfel nc
at U x = e1 . C
ate solutii
exist
a ? C
at rezult
a?
c. Explicati de ce n calcule este mai bine s
a presupunem c
a vectorul u nu este neap
arat
normat, introduc
and scalarul ca n (3.8). Rezolvati din nou punctul b aplic
and algoritmul
3.2 si observ
and c
a = . Justificati alegerea semnului lui recomandat
a n text. Ce
se nt
ampl
a dac
a x = [3 105 ] ?
d. Aplicati n acest caz simplu indicatiile de implementare ce nsotesc algoritmul
3.2. Ar
atati cum se face scalarea vectorului Householder u = [u1 u2 ]T astfel nc
at s
a
obtinem u1 = , respectiv u1 = 1. Verificati c
a n fiecare caz are loc transformarea dorit
a
U x = e1 .
e. Ilustrati grafic diversele situatii semnificative nt
alnite la punctele bd.
P 3.2 Rezolvati problema anterioar
a n R3 , consider
and de exemplu vectorii x = [3 4 0]T
T
sau x = [3 4 5] .
P 3.3 Fie x, y Rm doi vectori dati. In ce conditii exist
a un scalar si un reflector U
astfel nc
at U x = y ? Ce restrictii apar dac
a impunem conditia suplimentar
a = 1 ?
Scrieti algoritmii de generare a reflectorului U n cele dou
a situatii.
P 3.4 Fie x Rm un vector dat, x 6= 0.
a. S
a se determine un reflector U astfel nc
at prima coloan
a U e1 a lui U s
a fie un
multiplu scalar de x, i.e. U e1 = x. C
at trebuie s
a fie ? C
ate solutii exist
a?
b. Ce semnificatie geometric
a au celelalte coloane U ej , j = 2 : m, ale lui U ?
c. Scrieti algoritmul de calcul al unei baze ortogonale B = [b1 b2 . . . bm ] a lui Rm ,
unde b1 = x este un vector dat, kxk = 1.
d. Reformulati n mod avantajos punctele ac de mai sus n cazul n care vectorul
dat x are primele k 1 componente nule, i.e. xi = 0, i = 1 : k 1. Precizati structura
lui U precum si structura bazei ortogonale B astfel obtinute. Ilustrati grafic constructia,
consider
and m = 3, k = 2.
e. Reveniti la punctul a si ncercati s
a determinati U astfel nc
at U em = x. Ce se
schimb
a la punctele bd ?

3.11. PROBLEME

201

P 3.5 Fie x Rm un vector dat, x 6= 0.


a. S
a se construiasc
a m 1 vectori liniar independenti yj astfel nc
at xT yj = 0,
j = 2 : m.
b. Cum se construiesc vectorii de la punctul a dac
a n plus ei trebuie s
a fie ortogonali
doi c
ate doi, i.e. yiT yj = 0, i 6= j ? (Indicatie. Asimil
and xT cu o matrice cu o singur
a
linie, problema const
a n a construi o baz
a ortogonal
a a subspatiului N = KerxT , i.e. o
matrice Y Rm(m1) cu coloane ortogonale astfel nc
at xT Y = 0. Se tine seama de
punctul b al problemei anterioare.)
c. Utiliz
and rezultatele de la punctele a si b, descrieti multimea tuturor solutiilor
ecuatiei xT y = 1. Ilustrati grafic situatia n cazul m = 2, consider
and de exemplu x = e1
si x = [3 4]T .
d. Determinati solutia normal
a y a ecuatiei xT y = 1. Ar
atati c
a y este de forma

m
x si precizati interpretarea geometric
Pm a a lui y . (Indicatie. Orice vector y R poate fi
scris unic sub forma y = x + i=2 i yi , unde yi , i = 2 : m, sunt vectorii de la punctele
a sau b.)
e. Scrieti algoritmii de calcul ce rezolv
a punctele b si d. Ce simplific
ari apar dac
a
kxk = 1 ?
P 3.6 Se dau doi vectori x, y Rm , x 6= 0.
a. Determinati pseudosolutia a sistemului x = y, astfel nc
at norma euclidian
aa
not
reziduului () = ky xk s
a fie minim
a. Evaluati r = y x si ( ) = kr k.
b. Scrieti algoritmul de calcul corespunz
ator si g
asiti interpretarea geometric
a a vectorilor y = x si r .
c. Reluati punctul a presupun
and c
a xi = 0, i = 2 : m. Ce simplific
ari apar ? Puteti
realiza aceast
a conditie aplic
and o transformare adecvat
a T ambilor vectori dati x si y ?
Cum trebuie s
a fie T pentru ca functia () s
a r
am
an
a neschimbat
a (invariant
a) ?
P 3.7 Considerati un reflector U = I 2uuT , kuk = 1.
a. Calculati detU .
b. Determinati valorile si vectorii proprii ai lui U .
c. Determinati n vectori vi , i = 1 : n, astfel nc
at U vi = ei si U ei = vi , i = 1 : n.
Observatie. In general, se numeste reflector elementar (nu neap
arat ortogonal) orice
matrice U Rmm de forma U = Im 2uv T , n care u, v Rm sunt doi vectori astfel
nc
at v T u = 1. Multe dintre propriet
atile reflectorilor (ortogonali) considerate mai sus se
p
astreaz
a (sau se reformuleaz
a adecvat) n acest cadru mai general.
P 3.8 Ar
atati c
a orice matrice de permutare elementar
a este un reflector.
P 3.9 Fie S Rmm o matrice simetric
a pozitiv definit
a, arbitrar
a dar fixat
a. Se
consider
a spatiul vectorial Rm cu produsul scalar (x, y)S = y T Sx si norma euclidian
a
kxk2S = (x, x)S . Doi vectori x, y Rm se numesc S-ortogonali dac
a (x, y)S = 0. Matricea
A se numeste S-simetric
a dac
a (y, Ax)S = (Ay, x)S , x, y Rm , adic
a SA = AT S sau
1 T
mm
A = S A S. Matricea U R
se numeste S-ortogonal
a dac
a p
astreaz
a produsul
scalar (, )S , i.e. (U x, U y)S = (x, y)S , x, y Rm , adic
a U T SU = S.
a. S
a se arate c
a orice matrice S-ortogonal
a este asemenea cu o matrice ortogonal
a. S
a se deduc
a de aici c
a, n general, dup
a o transformare de coordonate convenabil
a,
propriet
atile geometrice ale spatiului Rm dotat cu produsul scalar (, )S se reduc la propriet
atile euclidiene uzuale.
b. S
a se defineasc
a notiunea de S-reflector elementar si s
a se studieze principalele
propriet
ati ale acestui tip de transform
ari. Cum se implementeaz
a avantajos algoritmii de
generare si aplicare a reflectorilor S-ortogonali ?

202

CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE

P 3.10 P
astr
am aceeasi terminologie ca n problema anterioar
a chiar dac
a matricea simetric
a (inversabil
a) S este de semn nedefinit. In particular, fie S = J, unde

Ip
0
J=
, p + q = m.
(3.197)
0 Iq
Observatie. Spatiul Rm cu produsul scalar nedefinit (, )J se numeste spatiu pseudoeuclidian (sau spatiu hiperbolic) de signatur
a (p, q). Multimea vectorilor din Rm cu
proprietatea
p
m
X
X
kxk2J = 0
x2i
x2i = 0
(3.198)
i=1

i=p+1

se numeste con izotrop 34 .


a. Fie x Rm un vector dat, iar U un J-reflector de forma
U = Im

uuT J
,

1
kuk2J .
2

(3.199)

S
a se scrie algoritmul de aplicare a transform
arii x y = U x si s
a se verifice prin calcul
direct c
a kU xkJ = kxkJ .
b. Fie x Rm un vector dat. S
a se stabileasc
a n ce conditii exist
a un J-reflector de
forma (3.199) astfel nc
at
U x = e1 , R {0}
(3.200)

si s
a se scrie algoritmul de generare a lui U . Discutie.
c. Fie S o matrice simetric
a inversabil
a. S
a se stabileasc
a n ce conditii S admite
factoriz
ari de forma S = RT JR sau S = LT JL, n care R si L sunt matrice superior,
respectiv inferior triunghiulare. S
a se scrie algoritmii de factorizare Cholesky cu semn,
corespunz
atori celor dou
a relatii de mai sus.
d. Ar
atati c
a dac
a exist
a dou
a matrice p
atrate A si B (nu neap
arat triunghiulare)
astfel nc
at S = AT JA = B T JB, atunci exist
a o matrice J-ortogonal
a Q astfel nc
at
B = QA. Altfel spus, oricare doi factori cu semn ai lui S sunt J-ortogonal echivalenti.
P 3.11 In planul R2 se d
a vectorul x = [3 4]T si se consider
a rotatia plan
a P = P12 cu
parametrii c, s.
a. Fie c = 3/2, s = 1/2. S
a se calculeze vectorul transformat y = P x si s
a se
reprezinte grafic transformarea.
b. S
a se determine c, s astfel nc
at P x = re1 . C
ate solutii exist
a ? C
at rezult
ar?
P 3.12 Fie x, y Rm doi vectori dati. In ce conditii exist
a un scalar si o rotatie Pki
astfel nc
at Pki x = y ?
P 3.13 Fie P o rotatie plan
a. Calculati detP si determinati valorile si vectorii proprii ai
matricei P .

P 3.14 Fie x Rm un vector dat.


a. Scrieti algoritmii de generare a unei secvente de rotatii P astfel nc
at P x = re1 .
Analizati diversele variante posibile.
b. Acelasi enunt, utiliz
and o grupare convenabil
a a rotatiilor n secvente de rotatii
disjuncte (vezi observatia 3.2).
P 3.15 Se d
a o matrice A Rmm . S
a se scrie algoritmii de aplicare a transform
arilor
A P A si A AP T , unde P sunt secventele de rotatii generate n problema 3.14.

34 Cel mai simplu exemplu este planul Lobacevski R2 cu p = 1, q = 1. Spat


iul Minkovsky din
teoria relativit
atii este R4 cu p = 1, q = 3. In acest caz (3.198) se numeste con de lumin
a, iar
transform
arile J-ortogonale formeaz
a grupul Poincar
e al lui R4 .

203

3.11. PROBLEME
P 3.16 O matrice P de forma
P =

c
s

s
c

c2 s2 = 1

se numeste rotatie hiperbolic


a (plan
a) 35 .
a. Ar
atati c
a P este o transformare J-ortogonal
a, i.e. P T JP = J. C
at este J ?
2

b. Fie x R un vector dat. In ce conditii exist


a o rotatie hiperbolic
a astfel nc
at
P x = re1 , respectiv P x = re2 ? Scrieti algoritmul de generare a lui P si discutati
aplicabilitatea lui practic
a 36 .
P 3.17 In planul C2 se d
a vectorul x = [1 + i 2 + i]T .
a. S
a se determine un reflector complex Q astfel nc
at Qx = e1 .
b. S
a se determine o rotatie complex
a P astfel nc
at P x = re1 .
P 3.18 Formulati si rezolvati versiunile complexe ale problemelor anterioare 3.33.10 si
3.123.14, semnal
and n fiecare caz modific
arile de notatie si de terminologie introduse.
P 3.19 Demonstrati c
a orice matrice ortogonal
a se poate exprima ca produs de reflectori
elementari.

R
P 3.20 Scrieti algoritmul de triangularizare ortogonal
a a matricei A+ =
, n care
C
(mn)n
blocul R este superior triunghiular de ordin n, iar C R
este un bloc oarecare.
Evaluati num
arul de operatii. Precizati ce simplific
ari apar n urm
atoarele cazuri
a. m n = 1, i.e. C = cT este un vector linie;
b. R este superior bidiagonal
a, respectiv superior Hessenberg;
c. C este superior triunghiular
a.
P 3.21 Cum procedati dac
a blocul lider R al matricei A+ din problema precedent
a este
inferior triunghiular ? Scrieti algoritmul corespunz
ator.
P 3.22 Scrieti algoritmul de triangularizare cu rotatii a unei matrice A Rmn , utiliz
and
diverse strategii de anulare a elementelor subdiagonale (vezi problema 3.14).
P 3.23 Scrieti algoritmul de triangularizare cu rotatii a unei matrice A Rnn a) superior
Hessenberg, b) tridiagonale.
In al doilea caz, presupuneti c
a A este memorat
a mpachetat (prin trei vectori). Ce
dificult
ati apar n ceea ce priveste memorarea informatiei generate de algoritm ?
P 3.24 Fie R Rnn o matrice superior triunghiular
a, iar b, c Rn doi vectori. Scrieti
un algoritm eficient de triangularizare a matricei A+ = R + bcT , i.e. QT A+ = R+ , unde
R+ este superior triunghiular
a.
Fie k 1 : n 1. Cum procedati dac
a ultimele n k elemente ale vectorului b sunt
nule ?
P 3.25 Cum procedati n problema precedent
a dac
a A+ = R + BC T , unde B, C Rnp ,
cu p > 1 ?
P 3.26 Se consider
a relatia P+ = AT P A + C T C, unde A Rnn si C Rln sunt dou
a
matrice date, iar P = RT R este o matrice pozitiv definit
a al c
arei factor Cholesky superior
triunghiular R este cunoscut. Scrieti o procedur
a (de tip r
ad
acin
a p
atrat
a) care calculeaz
a
factorul Cholesky R+ al matricei P+ , f
ar
a a forma explicit P+ .
35 Denumirea
36 Observat
i

se justific
a observ
and c
a putem ntotdeauna considera c = ch, s = sh.
c
a rotatia hiperbolic
a este o transformare simetric
a.

204

CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE

P 3.27 Ce simplific
ari apar n problema precedent
a dac
a A este superior Hessenberg, iar
C = cT este un vector linie av
and numai ultima component
a nenul
a?
P 3.28 Fie A Rmn monic
a, cu m > n. Utiliz
and informatia furnizat
a de algoritmul de
triangularizare cu reflectori Un . . . U2 U1 A = R, scrieti algoritmul de acumulare a primelor
p coloane ale matricei Q = U1 U2 . . . Un , unde p 1 : m este un ntreg dat. Calculati
num
arul de operatii n functie de p. Cum memorati rezultatul ? Discutati cazul n care
matricea A nu este neap
arat monic
a.
P 3.29 Aceeasi problem
a ca mai sus, utiliz
and algoritmul de triangularizare ortogonal
a
cu rotatii.
P 3.30 Fie Q matricea din problema 3.28. Precizati care dintre schemele urm
atoare
realizeaz
a mai eficient acumularea lui Q si de ce.
1. Q = Im
2. Pentru k = 1 : n
1. Q QUk

1. Q = Im
2. Pentru k = n : 1 : 1
1. Q Uk Q

P 3.31 a. Construiti reprezent


arile WY si W2 T ale reflectorilor bloc Q = U1 U2 . . . Unb ,
consider
and relatia de recurent
a
1. Q = Unb
2. Pentru k = nb 1 : 1 : 1
1. Q Uk Q
Ce diferente apar fat
a de solutia adoptat
a n sectiunea 3.4.3 ?
b. Scrieti reprezentarea W2 T sub forma Q = I W S 1 W T , unde S 1 = T . Precizati
structura si scrieti procedura de constructie a matricei S. Care dintre cele dou
a forme de
reprezentare este preferabil
a si de ce ?
P 3.32 Fie A Rmn (m > n) o matrice superior Hessenberg. Prezentati algoritmi
pentru:
a. calculul factoriz
arii QR a matricei A;
b. rezolvarea sistemului liniar supradeterminat Ax = b, cu b Rm dat.
c. Cum procedati dac
a A este band
a de l
atime inferioar
ap>1?
Utilizati reflectori si rotatii. Comparati cele dou
a versiuni.
P 3.33 Aceeasi problem
a, c
and A Rmn este inferior Hessenberg, repectiv band
a de
l
atime inferioar
a p.
P 3.34 Fie A Rmn , m > n, o matrice de rang n a c
arei factorizare QR este cunoscut
a,
i.e. A = QR, Q Rmm , R Rmn . Fie A+ = [A y], cu y Rm . Prezentati algoritmi
pentru
a. calculul factoriz
arii QR a matricei A+ ;
b. rezolvarea sistemului A+ x+ = b, cu b Rm dat.
c. Stabiliti o relatie ntre pseudosolutiile x+ si x ale sistemelor A+ x+ = b, respectiv
Ax = b.
d. Considerati cazul general A+ = [A Y ], cu Y Rmp .

P 3.35 Fie
Rmn , m n, o matrice de rang n a c
arei factorizare QR este cunoscut
a.
AT
z
n
Fie A+ =
, cu z R dat. Ar
atati c
a coloanele lui A+ sunt liniar independente.
A
Prezentati algoritmi pentru
a. calculul factoriz
arii QR a matricei A+ .

205

3.11. PROBLEME

, cu b Rm si R dati.
b
c. Stabiliti o relatie ntre pseudosolutiile x+ si x ale sistemelor A+ x+ = b+ , respectiv
Ax = b.

Z
d. Considerati cazul general A+ =
, cu Z Rpn .
A
b. rezolvarea sistemului A+ x+ = b+ , unde b+ =

P 3.36 Scrieti algoritmi eficienti de aplicare a transform


arilor B QT B si B QB,
mp
unde Q este matricea din problema 3.28 iar B R
este superior sau inferior triunghiular
a. Evaluati num
arul de operatii n cele patru situatii.
P 3.37 Aceeasi problem
a ca mai sus, pentru transform
arile la dreapta, B BQ si
B BQT .
P 3.38 Fie B Rmp o matrice dat
a, iar Q = Q1 Q2 . . . Qn matricea din problema 3.28.
Scrieti algoritmul de aplicare a transform
arilor B QT B si B QB la nivel de bloc.
P 3.39 Aceeasi problem
a ca mai sus, pentru transform
arile la dreapta, B BQ si
B BQT .
P 3.40 In conditiile problemei 3.28, scrieti un algoritm pentru calculul vectorului y = Ax,
cu x Rn dat. (N.B. Matricea A a fost distrus
a n urma executiei algoritmului de
triangularizare.)
P 3.41 In conditiile problemei 3.28, scrieti algoritmi pentru
a. rezolvarea sistemului AT Ax = c, cu c Rn dat;
b. calculul inversei H = (AT A)1 ;
c. calculul scalarului = cT (AT A)1 c, c Rn .
P 3.42 Scrieti procedurile GQL si MQL de acumulare si aplicare a transform
arilor generate de algoritmul de triangularizare QL.
P 3.43 Scrieti algoritmul de triangularizare ortogonal
a QL la nivel de bloc.
P 3.44 Fie A Rmn o matrice monic
a. Scrieti procedurile de ortogonalizare GS si
MGS care calculeaz
a factorizarea A = Q L , unde Q are coloanele ortogonale, iar L
este inferior triunghiular
a.
P 3.45 Rezolvati problemele 3.24-3.26 nlocuind peste tot matricele superior triunghiulare
R si R+ cu matrice inferior triunghiulare. Reformulati n acelasi spirit problema 3.27.
P 3.46 a. S
a se scrie un algoritm eficient de rezolvare a sistemului
(G + C T C)x+ = c + C T y,
n care G = RT R este o matrice simetric
a pozitiv definit
a al c
arei factor Cholesky superior
triunghiular R este cunoscut, iar matricea C Rln precum si vectorii c Rn , y Rl
sunt dati. Stabiliti o relatie ntre x+ si solutia x a sistemului Gx = c.
b. Aceeasi problem
a ca mai sus, pentru sistemul A+ x+ = d, unde A+ este matricea
din problemele 3.24, 3.25 iar d Rn un vector dat.
P 3.47 Fie A Rmn monic
a. Scrieti algoritmul de calcul al pseudosolutiei sistemului
Ax = b cu b Rm dat, utiliz
and informatia furnizat
a de algoritmul de triangularizare
ortogonal
a QL.

206

CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE

P 3.48 Scrieti algoritmul de triangularizare ortogonal


a la dreapta a matricei A+ = [L B],
n care blocul L este inferior triunghiular de ordin m iar B Rm(nm) este o matrice
oarecare. Precizati ce modific
ari apar dac
a
a. n m = 1, i.e. B = b este un vector;
b. L este inferior bidiagonal
a, respectiv inferior Hessenberg;
c. B este inferior triunghiular
a.
Observatie. Evident, aceast
a problem
a reprezint
a o simpl
a formulare prin dualitate a
problemei 3.20. Propunem cititorului ca, proced
and n mod similar, s
a obtin
a si s
a rezolve
dualele problemelor 3.213.47 (sau ale celor mai interesante dintre acestea), coment
and n
fiecare caz paralelismele observate.
P 3.49 Fie A Rmn o matrice de rang maxim.
a. Discutati existenta si unicitatea inverselor la st
anga (dreapta) ale matricei A. Puteti
descrie printr-o formul
a multimea acestor inverse ?
b. Evaluati expresiile kIm AA+ kF si kIn A+ AkF . Ce se schimb
a dac
a mai sus
nlocuim norma Frobenius cu norma spectral
a?
P 3.50 a. Fie A Rmn o matrice monic
a, iar b Rm , c Rn doi vectori dati.
Utiliz
and informatia furnizat
a de algoritmul de triangularizare ortogonal
a QT A = R,
scrieti o procedur
a care rezolv
a (n sensul CMMP) ambele sisteme Ax = b si AT x = c.
b. Aceeasi problem
a ca mai sus, dac
a A este epic
a, utiliz
and algoritmul de triangularizare la dreapta AZ = L.
c. Aceleasi probleme ca mai sus, relativ la sistemele cu membru drept multiplu
AX = B si AT Y = C, n care B si C sunt dou
a matrice date, dimensionate corespunz
ator.
P 3.51 Fie A Rmn cu m 6= n. Scrieti algoritmii de triangularizare prin eliminare
gaussian
a M A = U , respectiv AN = L si indicati c
ateva aplicatii. Ce strategii de pivotare
recomandati n fiecare caz ?

Im A
R
monic
a (Q Cmm , R Rnn ).
, cu A = Q
P 3.52 Fie H =
0
AH 0
a. Ar
atati c
a factorizarea cvasi-diagonal
a a matricei H este de forma T HT H = J,
unde
3
2
J1

7
6
..
1 1
7
6
.
Jk =
, k = 1 : n.
J =6
7,
1 0
5
4
Jn
Imn
b. Ar
atati c
a H este inversabil
a si

P2 (A+ )H
1
H =
,
A+ G1
+
unde G = AH A, A+ = (AH A)1 AH , P2 = I AA
at este
. C
detH ?
In AH
c. Formulati rezultatele a si b pentru H =
, cu A epic
a.
A
0
n
P 3.53 Considerati functia p
atratic
a F : R R definit
a prin

F (x) =

1 T
x Gx xT c,
2

unde G Rnn este o matrice simetric


a pozitiv definit
a, iar c Rn .
a. Scrieti conditiile necesare de minim si ar
atati c
a F are un punct de minim unic
F
x Rn care satisface sistemul Gx = c. (Indicatie: x
= 0, i = 1 : n.)
i
not

b. Scrieti un algoritm care calculeaz


a x si = F (x ).

207

3.11. PROBLEME

P 3.54 Fie A Rmn , b Rm . De asemenea, fie S Rmm si T Rnn dou


a matrice
pozitiv definite. Considerati functia p
atratic
a
F (x) = kb Axk2S + kxk2T ,
unde notatiile sunt cele din problema 3.9.
a. Ar
atati c
a F are un punct de minim unic x si scrieti un algoritm care calculeaz
a

x si = F (x ).
b. Analizati separat problema CMMP ponderat
a, n care F (x) = kb Axk2S . (Aici S
se numeste traditional matrice pondere.)
P 3.55 Considerati problema de minimizare cu restrictii liniare
F (x ) = min F (x),
Ax=b

unde F este functia p


atratic
a din problema 3.53, matricea A Rmn este epic
a, iar
b Rm .
a. Scrieti conditiile necesare de minim utiliz
and metoda multiplicatorilor Lagrange.
Puteti ar
ata c
a problema considerat
a are solutie unic
a ? Analizati cazul general n care
matricea G nu este neap
arat pozitiv definit
a.
b. Scrieti un algoritm care calculeaz
a x si = F (x ).
P 3.56 Fie A Rmn monic
a, B Rmp epic
a si b Rm . Rezolvati problema CMMP
generalizat
a
ky k2 = min kyk2 .
Ax+By=b

not

Observatie. Dac
a p = m si B = Im , atunci evident y = r = b Ax, deci se obtine
problema CMMP din sectiunea 3.5.
P 3.57 Fie A Rmn monic
a, C Rln epic
a si b Rm , d Rl . Rezolvati problema
CMMP cu restrictii liniare
kb Ax k = min kb Axk.
Cx=d

P 3.58 Considerati vectorul de permut


ari produs de algoritmul 3.11 si fie x Rn .
Scrieti procedurile de permutare pe loc x x si x T x.
P 3.59 Se dau doi vectori b Rm si c Rn . Scrieti algoritmi de determinare a proiectiilor
ortogonale ale acestor vectori pe subspatiile descompunerilor ortogonale
Rm = ImA KerAT si respectiv Rn = ImAT KerA, utiliz
and informatia furnizat
a
de procedura de triangularizare ortogonal
a QRX.
P 3.60 a. Cu notatiile din sectiunea 3.9.5, ar
atati c
a matricea

(S )1 0
not
X = A+ = Z
QH
0
0
satisface conditiile (Moore-Penrose) 1 AXA = X, 2 XAX = X, 3 AX = (AX)H ,
4 XA = (XA)H .
b. Precizati ce form
a iau aceste conditii dac
a A este monic
a (epic
a).
c. Demonstrati c
a 5 (A+ )H = (AH )+ , 6 (A+ )+ A = A, 7 A+ = (AH A)+ AH ,
8 A+ = AH (AAH )+ .
d. Puteti indica o metod
a de calcul al pseudoinversei unei matrice hermitice (vezi
propriet
atile 7 si 8 ) f
ar
a a utiliza triangularizarea ortogonal
a complet
a?
e. T
in
and seama de forma factorizat
a a matricelor Q si Z, scrieti un algoritm pentru
calculul pseudoinversei A+ .

208

CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE

P 3.61 a. Ar
atati c
a orice matrice A Cmn poate fi scris
a sub oricare din formele

(i) A = Q C, (ii) A = BV , unde Q are coloanele ortogonale, C este epic


a, respectiv B
este monic
a, iar V are liniile ortogonale.
b. Scrieti algoritmi pentru determinarea factoriz
arilor (i) si (ii).
c. Ar
atati c
a A+ = C + (Q )H , respectiv A+ = (V )H B + .
d. Scrieti algoritmi pentru calculul pseudoinversei normale a sistemului Ax = b, cu
b Rm dat, utiliz
and factoriz
arile (i) si (ii).
P 3.62 O matrice A Cmn se numeste (ad-hoc) pseudounitar
a (sau partial izometric
a)
dac
a exist
a dou
a matrice cu coloane ortogonale U Cmr si V Cnr astfel nc
at
A = UV H.
a. Ce structur
a au gramienii G1 = AH A si G2 = AAH ? Interpretare geometric
a.
b. Ar
atati c
a A+ = V U H .
c. Ar
atati c
a o matrice A Cmn este pseudounitar
a dac
a si numai dac
a A+ = AH .
mn
d. Cum se poate testa faptul c
a o anumit
a matrice dat
aAC
este 1) monic
a,
2) epic
a, 3) pseudounitar
a, 4) proiector ortogonal ?
P 3.63 Fie A Cmn .
a. Scrieti un algoritm de triangularizare ortogonal
a la dreapta cu pivotarea liniilor, i.e.
AZ = L, unde L rezult
a inferior triunghiular
a. Precizati strategia de pivotare utilizat
a.
b. Indicati c
ateva aplicatii posibile ale acestui algoritm si explicati de ce n practic
a
algoritmul QRP din sectiunea 3.9 este ntotdeauna suficient.
P 3.64 Fie A Rmn , B Rmp monice.
a. Explicati de ce n general matricea M = [A B] nu este monic
a. Ar
atati c
a
ImM = ImA + ImB.
b.
Efectuat
a complet
a a matricei M , i.e.
i triangularizarea ortogonal
S 0
H
Q M Z =
, unde S este inversabil
a de ordin r = rangM . Ce semnificatie
0 0
geometric
a au r si Q ?
c. Not
am S = ImA, T =TImB. Utiliz
and rezultatele de la punctul b, precizati cum
poate fi verificat
a conditia S T = .
d. Idem, indicati o baz
a ortogonal
a pentru subspatiul (S + T ) .
e. Cum se schimb
a concluziile de la punctele bd dac
a matricele initiale nu sunt
neap
arat monice ?
2
3
2
3
1
1 1
Pentru exemplificare, fie A = 4 0 5, B = 4 0 1 5. Cine sunt S, T si S + T ?
0
0 0
P 3.65 Fie A Rmn , C Rln epice.

A
Explicati de ce n general matricea N =
nu este epic
a. Ar
atati c
a
C
T
KerN = KerA KerC.
b. Formulati prin dualitate si rezolvati punctele bd din problema precedent
a.
c. Fie x Rn . Scrieti algoritmul
de
calcul
al
proiect

iilor
ortogonale
ale
lui
x pe
T
subspatiile N si N , unde N = KerA KerC.

1 0 0
Pentru exemplificare, fie A = [1 0 0], C =
. Cine sunt KerA, KerC si
1 1 0
T
KerA KerC ?
a.

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