Documente Academic
Documente Profesional
Documente Cultură
NUMERIC MATRICEAL.
ALGORITMI
FUNDAMENTALI
Bogdan Dumitrescu
Corneliu Popeea
Partea I
Boris Jora
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.
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
AT = (A1 ) = (AT )
H
AH = (A1 )
= (AH )
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
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
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
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
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
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
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
xi
CUPRINS
3.9
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
189
190
193
195
197
197
199
200
CUPRINS
Capitolul 0
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|
MOBILA
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)
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
24k .
k=0
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
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
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
-1
x1
x2
-0.5
x3
x4 x5 x6
5
1
0.5
x7 x8 x9
1.5
x10 x11
x12
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
Fig. 0.2: Structura unui numar n virgula mobila, pentru (, t, p) = (2, 24, 7)
(0.3)
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 =
1/ |f| < 1,
0 |
g | < 1.
(0.4)
f e , pentru x 6= 0,
0,
pentru x = 0.
|x f l1 (x)|
|f e f e |
|
g | et
t
=
=
< 1 = t+1 .
e
e
|x|
|f |
|f |
MOBILA
x
= f l(x) = x(1 + ), || t ,
(0.6)
0.2
Aritmetica n virgul
a mobil
a
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
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
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
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)
a
x = b D = {x R3 | a 6= 0, b2 4ac 0} R3 .
c
Exemplul 0.10
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
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
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.
12
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 | .
|x + x x + y + y y (x + y)|
|x x + y y|
=
.
|x + y|
|x + y|
(0.12)
|x x| + |y y|
|x| + |y|
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
14
si
f (
x) = f(x).
(0.13)
(0.14)
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.
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
0.6
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
18
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
20
1
x3
x
1
x2
x1
+
(a)
e1
1
1
e2
+
+
(b)
e3
x1
x2
x = . ,
(1.1)
..
xn
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.
x + y
-
21
x
(a)
(b)
y = 1 x1 + 2 x2 + . . . + p xp =
p
X
i xi
(1.2)
i=1
22
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 .
23
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
1.2
uX
T
kxk2 = x x = t
x2i .
(1.3)
i=1
6
'$
1
@
@
@
b
@
b 2
&%
25
n
X
i=1
|xi |
!1/p
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)
nkxk ;
nkxk2 .
26
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 .
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.
27
(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.
28
1.3
Matrice
A=
a11
a21
..
.
a12
a22
..
.
...
...
a1n
a2n
..
.
am1
am2
. . . amn
(1.7)
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.
(1.10)
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.
30
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
(1.12)
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
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
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
32
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
l
X
aik bkj ,
i = 1 : m, j = 1 : n.
k=1
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
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
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.
1.4. INMULT
IREA MATRICELOR
35
36
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.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
(A, B) =
m X
n
X
(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)
38
kAxk
= max kAxk,
kxk
kxk=1
(1.27)
(1.28)
n
X
i=1:m
j=1
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):
39
0
0
L
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
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.
41
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.
a 1 c1
b 2 a2
c2
..
..
..
T =
.
.
.
.
...
...
...
B=
...
...
.. .. .. .. ..
. . . . .
42
(a)
(b)
(c)
1.7
Matrice bloc
A=
A11
A21
..
.
A12
A22
..
.
...
...
..
.
A1n
A2n
..
.
Am1
Am2
. . . Amn
B=
B11
B21
..
.
B12
B22
..
.
Bp1
Bp2
. . . B1l
. . . B2l
..
..
.
.
. . . Bpl
, (1.31)
43
C11 . . . C1n
..
..
..
A+B =C = .
.
.
n = l, cu j = j , j 1 : n, atunci
(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
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
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
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.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
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.
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.
47
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
kxk2 =1
kQxk2 =1
49
"
"
"
"
"
"
*
6
x
x Px
"
"
" S
"
Px
"
"
Fig. 1.8: Actiunea unui proiector ortogonal pe S asupra unui vector oarecare x
scalar complex, mai utile sunt notiunile analoage obtinute (formal) prin nlocuirea
transpunerii prin transpunere si complex conjugare. 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
forma
= b1
= b2
(1.40)
= bm
50
Fig. 1.9: Utilizarea elementelor din triunghiul superior n produsul dintre o matrice
simetrica si un vector
(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
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).
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
:
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
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
n
X
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)
54
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).
(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
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.
56
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.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)
(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 )
58
Comentarii.
n1
X
n
X
j=1 i=j+1
2(i j)
n3
.
3
(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
1.10
(1.57)
(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).
60
(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.
(1.62)
61
1.10. VALORI S
I VECTORI PROPRII
= [v1 v2 . . . vn ] diag(1 , 2 , . . . , n ) = V .
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
1.11
Rutinele BLAS
63
GB - generala banda
SB - simetrica banda
HB - hermitica banda
TB - triungh. banda
SP - simetrica mpachetat
HP - hermitica mpachetat
TP - triungh. mpachetat
64
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
65
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
C AB + C.
(1.65)
(1.66)
(1.67)
(1.68)
(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.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.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 .
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.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
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
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
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
(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
(2.4)
2.1. TRANSFORMARI
ELEMENTARE
71
(2.7)
i = k + 1 : n,
(2.8)
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
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
[k]
[k]
(L1 L2 . . . Lp A)[k] = L1 L2 . . . L[k]
p A .
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
A2 = 0
...
0
a12
(2)
a22
(2)
a32
...
(2)
an2
...
...
...
...
...
(2)
a1n
(2)
a2n
(2)
a3n
...
(2)
ann
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]
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
(2.9)
U = An = Mn1 Mn2 . . . M1 A,
(2.10)
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
(k)
ik = aik /akk ,
i = k + 1 : n,
(2.11)
(2.12)
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
(n k + 2(n k)2 ) =
n(n 1)
n(n 1)(2n 1)
2n3
+2
,
2
6
3
76
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)
77
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)
(2.13)
(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
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 .
2.3.2
Pivotare complet
a
79
.
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
(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)
(2.16)
80
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;
2.4. FACTORIZARI
LU
2.4
81
Factoriz
ari 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.
82
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
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
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.
(2.20)
=
=
(2.21)
84
0
akk . . . akj . . .
..
.
aik
..
.
lkk
..
.
lik
..
.
i
1 . . . ukj . . .
elemente calculate
1
k
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)
(2.23)
k1
X
s=1
k1
X
s=1
lis usk , i = k : n.
(2.24)
2.4. FACTORIZARI
LU
85
De asemenea,
akj =
k1
X
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
86
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
nr
.
(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
2n3 /3 2nr2 /3
r2
= 1 2.
3
2n /3
n
(2.30)
88
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
.
(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
2.4.4
Factoriz
ari LU compacte la nivel de bloc
..
.. . .
.. = ..
.. . .
.. ..
.. . .
.. ,
.
.
.
.
.
.
.
.
.
.
.
.
Am1 Am2 . . . Amm
. . . 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
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
90
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
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
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)
(2.38)
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
Comentarii.
NS
GPP
= NGPP +
n1
X
k=1
2(n k) + NUTRIS
2n3
2n3
+ n2 + n2
NGPP ,
3
3
(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.
93
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
94
U 1
U
A
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
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
=
=
(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.
95
M
..
.
nk
...
...
...
X XMk Pk
-
...
...
...
1
U
..
...
.
...
...
M
..
.
...
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
Comentarii.
NINV
GPP
= NGPP + NUINV +
n1
X
k=1
2n(n k)
2n3
n3
+
+ n3 = 2n3
3
3
1. Se rezolva sistemul Ax = b
2. cT x
% rezulta x = A1 b
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.
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
n
Y
uii ,
i=1
2.7
(2.45)
(A + A)(x + x) = b + b.
(2.46)
astfel ncat
98
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)
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.)
2.7. CONDIT
IONAREA SISTEMELOR LINIARE
99
0.1
1 1 . . . 1
0.1
1 . . . 1
D=
,
T
=
.. .
..
..
.
.
.
0.1
1
(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
kx x
k
8.6 103 .
kxk
100
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
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
2.7. CONDIT
IONAREA SISTEMELOR LINIARE
101
= |yi | +
k=i+1
n
X
k=i+1
|zki
|,
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)
102
2.8
Stabilitatea numeric
a a algoritmilor de
eliminare gaussian
a
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.
2.8. STABILITATE NUMERICA
103
(2.51)
2.8.1
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
2.8.2
Rafinarea iterativ
a a solutiei calculate
(2.54)
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) =
(2.56)
(2.57)
(2.58)
2.9
Sisteme band
a
106
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.
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
pentru i, j = 2 : n,
108
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)
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.
109
2.10
Sisteme simetrice
T
D = Mn1 . . . M2 M1 AM1T M2T . . . Mn1
,
(2.59)
110
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
(2.60)
idee alternativ
a, descris
a n [?], este de a lua D tridiagonal
a.
111
(2.61)
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
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
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
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 | =
a11 . . .
..
.
...
..
.
.
..
..
.
arr . . . . . .
..
..
.
a11 ar1
si a observa ca pivotul este a11 sau arr cand s = 1, sau
cand s = 2.
ar1 arr
Se poate demonstra ca relatia (2.65) ramane n continuare adevarata, deci se va
alege aceeasi valoare pentru . Factorul de crestere din (2.50) va fi acum limitat de
(1 + 1/)n1 (2.57)n1 , o margine ceva mai larga decat pentru algoritmul
GPP. In practica, algoritmul de factorizare cvasi-diagonala cu pivotare partiala
114
2.11
115
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)
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
De asemenea,
aik =
k1
X
j=1
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
117
efectuandu-se de doua ori mai putine operatii decat daca s-ar aplica algoritmul de
eliminare gaussiana.
In privinta conditionarii, problema rezolvarii sistemului pozitiv definit Ax = b
satisface inegalitatea (2.47).
Inversa (care este tot simetrica si pozitiv definita) si determinantul unei matrice
simetrice pozitiv definite se calculeaza adaptand ideile din sectiunea 2.6 la contextul
factorizarii Cholesky A = LLT .
Matrice 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
(2.74)
118
2.13. PROBLEME
119
2.13
Probleme
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
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
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.
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+
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
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
(3.2)
124
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)
(3.5)
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).
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 [?, ?].
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
126
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)
u(uT x)
uuT
)x = x
= x u,
(3.11)
unde, evident
uT x
.
(3.12)
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
CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE
128
uuT
)A = A uv T ,
unde
v=
AT u
.
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)
Demonstratie.
i=k
i=k+1
3.1. TRANSFORMARI
ORTOGONALE
129
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.
130
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.
3.1. TRANSFORMARI
ORTOGONALE
x1
x2
..
.
xm
U1
u2
..
.
um
131
x1
..
.
xk1
xk
xk+1
.
..
xm
Uk
x1
..
.
xk1
uk+1
.
..
um
RFG
(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 =
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, :)).
3.1.2
Rotatii
134
Ik1
c
s
, unde c2 + s2 = 1
Iik1
Pki =
(3.22)
s
c
Imi
3.1. TRANSFORMARI
ORTOGONALE
Numerele reale
135
xk
xi
, s=
r
r
de ordin m n planul (k, i) astfel nc
at
c=
(Pki x)l =
xl ,
r,
0,
pentru l 6= k, i
pentru l = k
pentru l = i.
(3.24)
(3.25)
(3.26)
precum si c2 + s2 = 1.
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
(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)
8 Dou
a
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
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
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
3.2. TRANSFORMARI
UNITARE
139
Im 6
9
'$
0r
r
= 1 =
&%
Re2
kuk2
respectiv
Q1 = Im uuH ,
(3.32)
1
(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 ,
140
sau
= sgn(Rex1 )kxk.
(3.37)
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)
uH x
(xH +
eT1 )x
kxk2 +
x1
=
=
,
||2
||2
x1 +
.
(3.41)
= 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
Comentarii. Calculul normei euclidiene la pasul 2.1 se poate face utilizand functia
complexa CNRM2 din BLAS 1.
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)
3.2.2
Rotatii complexe
s c
n care parametrii c, s satisfac relatia
|c|2 + |s|2 = 1.
(3.46)
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)
|x1 |
,
kxk
s=
x1 x
2
,
|x1 | kxk
(3.49)
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)
(3.50)
x1
,
r
s=
x
2
r
(3.51)
(3.52)
3.3
Triangularizarea ortogonal
a
144
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
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)
(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 ]
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.
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 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
...
148
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.
149
3.4. FACTORIZAREA QR
CQR
3.4
Factorizarea QR
(3.58)
150
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)
mn
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
y = Ax = Q (R x), x Cn ,
(3.61)
152
- q2
S
(3.63)
(3.64)
3.4. FACTORIZAREA QR
153
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
154
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).
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.
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
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.
% 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
3.4.3
Triangularizarea ortogonal
a la nivel de bloc
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
(3.10), deci
0
b .
Q
CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE
158
Q = Q1 ,
(3.71)
Y = 1 u1 .
=
=
=
=
(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
T = 1 .
= (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
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
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
..
..
..
.
.
.
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.
Prin rearanjarea buclelor procedurii GS si actualizarea coloanei curente qj imediat dupa calculul unui coeficient rkj , se obtine procedura de ortogonalizare GramSchmidt modificata.
MGS
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
Factorizarea QL
(3.75)
(3.76)
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
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.
(3.79)
163
(3.81)
(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)
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
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.
165
(3.87)
(3.89)
(3.90)
(3.92)
% 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
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))
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
167
%
0.
1.
2.
3.
4.
3.5.2
Calculul proiectiilor
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
min kB AXkF .
XCnp
(3.95)
p
X
j=1
krj k2 .
(3.96)
(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
169
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)
3.5.5
% 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
3.6
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
respectiv AZ = L,
(3.101)
171
(3.102)
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 =
CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE
172
3.6.2
Factorizarea LQ
(3.103)
H
. . . Z2H Z1H
V = Zm
(3.104)
unde matricea
nm
nm
A = L V ,
(3.106)
(3.108)
173
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)
(3.110)
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)
174
(3.112)
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
(3.113)
(3.114)
175
N = KerA
planul
Ax = b
x
x2
:
-
0
x = x1
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 .
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).
Z = Z1 Z2 . . . Zm ,
(3.119)
CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE
176
[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)
(3.124)
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.
3.7. CONDIT
IONAREA PROBLEMELOR CMMP
177
3.7
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
(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
(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)
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+ .
(3.134)
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)
c
aror matrice este evident G = AT A, respectiv G = AAT .
180
3.7.2
Sensibilitatea pseudosolutiei
(3.137)
(3.138)
3.7. CONDIT
IONAREA PROBLEMELOR CMMP
181
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)
(3.140)
(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)
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
(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
unde 1 = 2A + b .
(3.144)
x = AT y + E T y .
183
(3.145)
3.8
Stabilitatea numeric
a a algoritmilor de
triangularizare ortogonal
a
c
a, n norma spectral
a avem ntotdeauna kAk = kAT k.
184
3.8.1
Stabilitatea numeric
a a algoritmilor fundamentali
(3.147)
unde kuk cm .
(3.148)
unde kU kF cm .
(3.149)
(3.150)
185
(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,
(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)
3.8.2
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
not
1 = A + cos
= ncm (1 +
not A
2 = tg = ncm tg.
1
cos ),
(3.156)
not
1 = 2A + b = mcm .
(3.157)
(3.158)
3.8.3
(3.159)
k
r k2 = rT Sr = krk2S ,
S = D1T D1 ,
187
k
xk2 = xT T x = kxk2T ,
T = D2T D21 ,
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
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
(3.162)
(3.163)
z 2 = s2 .
(3.164)
(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
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
3.9.1
Triangularizarea ortogonal
a cu pivotarea coloanelor
(3.167)
|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
191
(3.170)
= kAk (k : m, j)k, j = k : n,
(3.171)
(k)
(3.172)
(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
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
CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE
192
QRP
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
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
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)
(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
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)
3.9.3
Triangularizarea ortogonal
a complet
a
S
0
|{z}
r
rr
0
0
|{z}
}r
} mr
(3.184)
nr
(3.185)
(3.186)
CAPITOLUL 3. PROBLEMA CELOR MAI MICI PATRATE
196
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 =
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
197
3.9.4
Descompunerea ortogonal
a complet
a
(3.188)
3.9.5
Problema general
a CMMP
198
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)
(3.190)
(3.193)
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
x = Z
(S )1
0
0
0
QH b,
(3.196)
% 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
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
200
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
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
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
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 .
203
3.11. PROBLEME
P 3.16 O matrice P de forma
P =
c
s
s
c
c2 s2 = 1
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
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.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+ =
206
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
207
3.11. PROBLEME
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
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
(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
P 3.61 a. Ar
atati c
a orice matrice A Cmn poate fi scris
a sub oricare din formele
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.