MetodeNumerice Cap2

Descărcați ca doc, pdf sau txt
Descărcați ca doc, pdf sau txt
Sunteți pe pagina 1din 50

Capitolul 2

SISTEME DETERMINATE DE ECUAŢII


ALGEBRICE LINIARE

2.1 Formularea problemei


Se consideră sistemul de n ecuaţii algebrice liniare cu n necunoscute:
A ⋅ x = b, A ∈ℜn ×n , b ∈ℜn×1 . (2.0)
Problema de calcul este determinarea unei soluţii x ∈ℜn×1 a sistemului de
ecuaţii (2.1) sau, altfel spus, determinarea unui vector care să satisfacă ecuaţia
dată.
Definiţie:
Oricare ar fi matricea A ∈ℜn×n , aceasta se numeşte inversabilă
(nesingulară) dacă există o matrice X ∈ℜn×n astfel încât să fie îndeplinită
relaţia: A ⋅ X = X ⋅ A = I n .
În relaţia anterioară, I n este notaţia pentru matricea unitate de ordinul n. În
continuare, se notează cu A −1 matricea X care satisface relaţia din definiţia
anterioară.
Teoremă de existenţă şi unicitate:
Dacă matricea A ∈ℜn×n este inversabilă, atunci oricare ar fi vectorul
b ∈ℜn ×1 există şi este unică soluţia x a ecuaţiei (2.0).

Soluţia se poate scrie sub forma:


x = A −1 ⋅ b . (2.0)
Observaţii:
1. A −1 este notaţia pentru inversa matricei A. În practică nu se recomandă
calculul matricei inverse şi apoi aplicarea relaţiei (2.0). Un exemplu care să
ilustreze aceasta este următorul: se consideră ecuaţia a ⋅ x = b , în care
36 2. Sisteme determinate de ecuaţii algebrice liniare

a = 7 şi b = 21 . Se mai consideră o aritmetică a virgulei mobile cu


β=10 , t = 6 şi rotunjire prin tăiere. Atunci soluţia ecuaţiei este:
x = a −1 ⋅ b = (7) −1 ⋅ 21 = 0.142857 ⋅ 21 = 2.99997 .
Acelaşi sistem se poate rezolva direct şi anume: x = 21 / 7 = 3 , aceasta
reprezentând soluţia exactă.
2. Nu se recomandă rezolvarea ecuaţiei prin regula Cramer:
x i = ∆ i / ∆, i = 1,..., n ,
unde ∆ reprezintă determinantul matricei A, iar ∆i reprezintă
determinanţii matricelor obţinute prin înlocuirea coloanei numărul i a
matricei A cu termenul liber asociat ecuaţiei (2.0).
Un exemplu pentru această situaţie este acela în care considerând n = 20 ,
rezultă că trebuie estimaţi 21 de determinanţi care, dacă sunt calculaţi după
definiţie, necesită calculul a 20 ! termeni care implică 19 înmulţiri/termen,
deci 19 × 20 ! operaţii în virgulă mobilă. O operaţie în virgulă mobilă
înseamnă o înmulţire şi o adunare: q = v ⊕ w ⊗z . Pentru un calculator cu
100000 înmulţiri/secundă, rezultă că numai pentru efectuarea înmulţirilor
sunt necesari 3 ⋅10 8 ani, la care se adaugă erorile de rotunjire!
Exemplul 2.1:
Problemele de tipul (2.0) sunt foarte des întâlnite în practică. Ca exemplu
generic, se consideră un proces dinamic cu n mărimi de intrare ( u 1 , ..., u n ) şi
o mărime de ieşire (y). Corespunzător funcţionării acestuia în regim staţionar
sau în regim dinamic, pentru care se realizează o liniarizare a modelului neliniar
după un punct de funcţionare, modelul intrare-ieşire al procesului poate fi
descris de o ecuaţie de forma:
y( u 1 ,  , u n ) = c1 ⋅ u 1 +  + c n ⋅ u n . (2.0)
Se consideră un număr de n experimente prin care se impun anumite valori
mărimilor de intrare şi se măsoară valorile pe care le ia mărimea de ieşire a
procesului. Rezultatele obţinute pot fi tabelate astfel:

nr. experiment u1 Λ un Y
1 a11 Λ a1n b1
Μ Μ Λ Μ Μ
i ai1 Λ ain bi
Μ Μ Λ Μ Μ
n an1 Λ ann bn
2.3 Rezolvarea sistemelor prin triangularizare cu pivotare parţială
37

Notând cu A matricea formată din valorile pe care le iau mărimile de intrare

ale procesului,
A = [a i ]j 1≤ i≤ n şi cu b =[b ]
i 1≤i ≤n vectorul valorilor mărimii de
1≤ j≤ n
ieşire, relaţia (2.0) se poate rescrie sub forma . (2.0(2.0), unde
x = [c1 c 2  c n ] T , T fiind notaţia pentru operaţia de transpunere
vectorială. Rezolvarea ecuaţiei rezultate constituie, în acest caz, o identificare a
modelului pentru regimul static de funcţionare a procesului. Problema aceasta
va avea o soluţie, dacă şi numai dacă liniile sau coloanele matricei
experimentelor [ A | b] sunt vectori liniari independenţi, după cum se va
specifica ulterior.
Metodele numerice de rezolvare a unui sistem de ecuaţii algebrice liniare se
împart în următoarele două categorii: metode directe şi metode iterative
(indirecte).
Metodele directe se bazează pe reducerea sistemului (2.1) la un sistem
echivalent, direct rezolvabil prin mijloace elementare. Principial, aceasta
foloseşte eliminarea progresivă a necunoscutelor, numită şi eliminare
gaussiană.
Practic, prin transformări elementare de echivalenţă, se aduce matricea A a
sistemului la anumite forme tipice:
a) forma superior triunghiulară:
u 11   u 1n 
 0   
U= ;
    
 
 0  0 u nn 
b) forma inferior triunghiulară:
l11 0  0 
    
L= .
  0
 
l n1   l nn 
Procedura de transformare se numeşte triangularizare. Astfel, se furnizează
soluţia exactă a sistemului de ecuaţii (2.0), în cazurile (ideale) în care erorile de
rotunjire sunt absente. Numărul de operaţii în virgulă mobilă, necesare
triangularizării unei matrice pătratice de ordin n, este de ordinul lui n 3 . De
aceea, aceste metode se recomandă pentru rezolvarea unor sisteme de ecuaţii
algebrice liniare de ordin mai mic decât 10 2 .
38 2. Sisteme determinate de ecuaţii algebrice liniare

Metodele iterative au la bază construirea unui şir de aproximaţii pentru


soluţia sistemului (2.0), x [ k ] , k = 0,1,  care să fie convergent pentru k → ∞ la
soluţia adevărată, x :
[k]
lim || x − x || α = 0 .
k →∞

Practic, calculele se opresc la un index de iterare [s], atunci când este


îndeplinită o condiţie de forma:
|| x [ s ] − x [ s −1] || α ≤ εimpus ,
sau, altfel spus, x [ s ] constituie o aproximare satisfăcătoare a soluţiei calculate.
Având în vedere faptul că pentru o singură iteraţie numărul de operaţii în
virgulă mobilă este de ordinul lui n 2 , asemenea metode se folosesc pentru
sisteme de ordin mare şi anume 10 2 ÷10 4 .

2.2 Rezolvarea sistemelor prin triangularizare directă

2.2.1 Principiul metodei

Se consideră problema (2.0) şi matricea sistemului:


A = [a i ]j 1≤ i≤ n .
1≤ j≤ n
Definiţie:

Matricele [a 11 ] , …,
[a i j]1≤ i≤ n− 1 se numesc submatrice principale ale lui A
1≤ j≤ n − 1
sau minori principali directori.
Teoremă:
Dacă matricea A ∈ℜn×n are toate submatricele principale inversabile
(nesingulare), atunci există matricele L, D, U ∈ℜn×n astfel încât:
A =L⋅D⋅U (2.0)
unde L este o matrice inferior triunghiulară, D este o matrice diagonală şi U
este o matrice superior triunghiulară.
Se pot face, în cele ce urmează, următoarele observaţii:
2.3 Rezolvarea sistemelor prin triangularizare cu pivotare parţială
39

1. relaţia (2.0) se numeşte factorizare L-D-U a matricei A;


2. uzuale sunt factorizările: A = L ⋅ U ;
3. demonstraţia teoremei enunţate este constructivă, constituind însuşi
algoritmul de descompunere L-U a matricei A;
4. algoritmul de descompunere este în fond procedeul de eliminare gaussiană,
prin care matricea A este adusă la forma superior triunghiulară în urma unui
şir de transformări de asemănare. Transformările efectuate asupra matricei A
se “acumulează” într-o matrice inferior triunghiulară, cu elementele de pe
diagonala principală egale cu 1. Acest tip de descompunere se numeşte
descompunere Doolittle.
5. considerând descompunerea L-U a matricei sistemului A, A = L ⋅ U , atunci
rezolvarea sistemului (2.0) implică două subetape:
a. rezolvarea sistemului L ⋅ y =b , etapă numită şi substituţie înainte,
obţinând soluţia intermediară y . Determinarea componentelor
vectorului y =[ y i ]1≤i ≤n are loc din aproape în aproape: se începe cu
y1 (prima ecuaţie), se înlocuieşte în a doua ecuaţie determinând pe
y 2 şi aşa mai departe.
b. rezolvarea sistemului U ⋅ x =y , în care necunoscuta este x , etapă
numită şi substituţie inversă. În acest caz, determinarea componentelor
vectorului x are loc pornind de la ultima ecuaţie.
Această manieră de descompunere şi de rezolvare se încadrează în aşa-
numita rezolvare a sistemelor determinate de ecuaţii algebrice liniare prin
triangularizare simplă (directă).
În continuare se prezintă câteva rezultate referitoare la algebra matricelor
triunghiulare.
Definiţie:
Se numeşte matrice triunghiulară unitate o matrice inferior sau superior
triunghiulară care are elementele de pe diagonala principală egale cu 1.
În ceea ce priveşte matricele triunghiulare, sunt valabile următoarele
rezultate.
R1: Inversa unei matrice superior (inferior) triunghiulară este o matrice superior
(inferior) triunghiulară.
R2: Produsul a două matrice superior (inferior) triunghiulare este o matrice
superior (inferior) triunghiulară.
R3: Inversa unei matrice superior (inferior) triunghiulară unitate este o matrice
superior (inferior) triunghiulară unitate.
40 2. Sisteme determinate de ecuaţii algebrice liniare

R4: Produsul a două matrice superior (inferior) triunghiulare unitate este o


matrice superior (inferior) triunghiulară unitate.
În cele ce urmează, se enunţă şi demonstrează următorul rezultat esenţial.
Propoziţie:
Dacă matricea A admite o descompunere L-U, atunci această
descompunere este unică.
Demonstraţia se realizează prin reducere la absurd, presupunând că matricea A
admite două descompuneri L-U şi anume: A = L1 ⋅ U 1 , A = L 2 ⋅ U 2 . De aici
rezultă că L1 ⋅ U 1 = L 2 ⋅ U 2 , ceea ce conduce la:
L−21 ⋅ L 1 = U 2 ⋅ U 1−1 ,
adică o matrice inferior triunghiulară unitate ( L−21 ⋅ L1 ) este identică cu o
matrice superior triunghiulară ( U 2 ⋅ U 1−1 ). Acest lucru este posibil numai dacă
ambele matrice sunt diagonale şi au diagonala principală unitară, adică:
L−21 ⋅ L1 ≡ I n şi U 2 ⋅ U 1−1 ≡ I n ,
ceea ce implică L 1 ≡ L 2 , U 1 ≡ U 2 .
Procedura de triangularizare directă necesită un număr de operaţii în virgulă
mobilă de ordinul lui n 3 / 3 . Numărul total de operaţii în virgulă mobilă pentru
rezolvarea unui sistem determinat de ecuaţii algebrice liniare, folosind
triangularizarea simplă, este de ordinul lui (n 3 / 3) + n 2 , n 2 operaţii fiind
necesare pentru parcurgerea celor două etape din rezolvarea propriu-zisă a
sistemului, anume substituţia înainte şi substituţia înapoi.
Dacă matricea A este simetrică ( A = A T ) şi pozitiv definită (
∀x ∈ℜn×1 , x ≠ 0 n , x ⋅ A ⋅ x > 0 şi x ⋅ A ⋅ x = 0 ⇔ x ≡ 0 n ), atunci A se
T T

descompune sub forma A = L ⋅ LT . Aceasta se numeşte descompunerea


Cholesky. În acest caz, algoritmul necesită mai puţine operaţii în virgulă mobilă
şi anume n 3 / 6 , exploatând faptul că matricea A este simetrică.

2.2.2 Procedura de triangularizare directă a unei matrice

Principiul triangularizării simple poate fi prezentat prin următorul algoritm,


descris principial în limbajul pseudocod:
atribuie A 1 ← A
pentru k =1, n −1 execută
 * determinare matrice M k astfel încât matricea A k +1 = M k ⋅ A k să
2.3 Rezolvarea sistemelor prin triangularizare cu pivotare parţială
41

 aibă elementele:
 a [i ,kk+1] = 0, i = k +1,..., n şi
a [i ,kj+1] =a [i ,kj] , i =1,..., n; j =1,..., k −1
 atribuie A k +1 ← M k ⋅ A k
 ι
În final se obţine matricea A n = U .
Acest algoritm parcurge ( n −1) etape, la fiecare etapă zerorizându-se
elementele de sub diagonala principală şi păstrând nealterate transformările care
s-au efectuat în coloanele anterioare ale matricei A.
Notând cu ξvectorul conţinând elementele coloanei k a matricei A k ,
anume:
ξ = [ξ1  ξk ξk +1  ξn ] T = [a 1[ k, k]  a [kk, k] a [kk+]1, k  a [nk, k] ] T
,
atunci matricea de transformare M k se construieşte astfel încât vectorul
M k ⋅ ξ să aibă elementele:
M k ⋅ ξ = [ξ 1  ξ k 0  0] T .
Se consideră vectorul m k de forma:
m k = [0  0 µk +1, k  µn , k ] T ,
elementele µi , k , i = k +1,..., n numindu-se multiplicatori.
Vectorul m k se numeşte vector Gauss sau vector de multiplicatori.
Subvectorul care conţine strict numai multiplicatorii se numeşte subvector
Gauss:
t k =[µk +1, k  µn ,k ] T .

Definiţie:
Matricea M k se numeşte matrice de transformare elementară de ordin n şi
indice k sau matrice Gauss şi este definită prin:
T
Mk = In − mk ⋅ ek ,
T
în care e k =[0  0 1 0  0] T , elementul egal cu 1 fiind în
poziţia k.
Definită astfel, matricea M k este o matrice inferior triunghiulară unitate,
este nesingulară şi deci admite inversă. Inversa acesteia este de forma:
M −k1 = I n + m k ⋅ e k .
T
(2.0)

Efectul aplicării matricei M k asupra vectorului definit anterior, ξ, este:


42 2. Sisteme determinate de ecuaţii algebrice liniare

T T
M k ⋅ ξ = ( I n − m k ⋅ e k ) ⋅ ξ = ξ − m k ⋅ e k ⋅ ξ = ξ − m k ⋅ ξk
= [ξ1  ξk ξk +1 − µk +1, k ⋅ ξk  ξn − µn ,k ⋅ ξk ] T
ultimele n − k elemente trebuind a fi zerorizate. Presupunând că ξ k ≠ 0 şi
alegând µi , k = ξi / ξk , i = k +1,..., n , va rezulta:
M k ⋅ ξ =[ξ1  ξk 0  0] T .
Dacă la etapa k a triangularizării, elementul a [kk, k] ≠ 0 şi
µi , k = a [i ,kk] / a [kk, k] , i = k +1,..., n , atunci se obţine:
M k ⋅ c k ( A k ) = [a 1[ k, k]  a [kk−]1, k a [kk, k] 0  0] T ,
în care c k ( A k ) reprezintă notaţia pentru coloana k a matricei A k . Acest
rezultat evidenţiază faptul că primele k elemente din coloana k a matricei A k
rămân neschimbate, iar ultimele n − k elemente devin zero. Elementul
ξk = a [kk, k] se numeşte pivot.

Observaţii:
1. În practică, pe calculator, etapa k descrisă mai sus se poate realiza testând
condiţia:
| a [kk, k] |> ε ,
în loc de a verifica a k , k ≠ 0 , unde ε este o constantă impusă, de valoare
[k ]

mică sau foarte mică. De exemplu, constanta ε poate fi egală cu epsilonul-


maşină. Aceasta se realizează datorită faptului că, dacă în aritmetica reală
(exactă) pivotul este nul, în aritmetica virgulei mobile, datorită erorilor de
calcul, această situaţie este echivalentă cu:
| a [kk, k] |≤ ε .
2. Când pivotul este în modul mai mic sau egal cu ε , eliminarea gaussiană
eşuează. Aceasta corespunde situaţiei când matricea iniţială A are
submatricea principală de ordin k singulară, deci conform teormei enunţate
anterior, descompunerea L-U a matricei A nu există.
Efectul aplicării transformării M k asupra celorlaltor coloane ale matricei
A k este următorul. Se consideră un vector η≠ξ de forma
η =[η1  ηn ] T . Aplicând transformarea M k vectorului η, se obţine:
M k ⋅ η = [η1  ηk ηk +1 − µk +1, k ⋅ ηk  ηn − µn , k ⋅ ηk ] T .

Concluzii:
a) Matricea M k lasă nemodificate primele k − 1 coloane ale matricei A k .
Considerând vectorul ηca fiind coloana numărul j a matricei A k :
2.3 Rezolvarea sistemelor prin triangularizare cu pivotare parţială
43

η = c j ( A k ) = [*  * 0  0  0] T , j < k , j =1,..., k −1 ,
1 j j+1 k n

atunci se obţine:
M k ⋅ c j (A k ) = [*  * 0  0 0 − µk +1, k ⋅ 0  0 − µn , k ⋅ 0] T
1 j j+1 k
k +1 n

= c j (A k )
b) Matricea M k transformă coloana k a matricei A k , zerorizând liniile
k +1,..., n .
c) Matricea M k transformă coloanele k +1,..., n ale lui A k în liniile
k +1,..., n . Considerând vectorul ηca fiind coloana j a matricei A k :
η= c j ( A k ), j = k +1,..., n ,
atunci se obţine:
M k ⋅ c j ( A k ) = [*  * a [kk+]1, j − µk +1, k ⋅ a [kk, ]j  a [nk, ]j − µn , k ⋅ a [kk, ]j ] T ,
notaţia * semnificând faptul că elementele implicate rămân nemodificate.
Sumarizând, asupra matricei iniţiale A se aplică transformările M 1 , ...,
M n −1 , obţinându-se în final forma superior triunghiulară U:

M n −1 ⋅  ⋅ M 2 ⋅ M 1 ⋅ A = U . (2.0)

Înmulţind la stânga relaţia (2.0) cu M 1−1 ⋅ M −2 1 ⋅  ⋅ M −n1−1 , se obţine:

A = M 1−1 ⋅ M −2 1 ⋅  ⋅ M −n 1−1 ⋅ U . (2.0)

Notând produsul M 1−1 ⋅ M −2 1 ⋅  ⋅ M −n1−1 cu L, atunci relaţia (2.0) devine:


A =L⋅U .
Ţinând cont de forma matricelor M − 1
k , k =1,..., n −1 dată de relaţia (2.0),

atunci matricea L este egală cu:


n −1
L = M 1−1 ⋅ M −21 ⋅  ⋅ M −n1−1 = I n + ∑ m k ⋅ e k .
T

k =1
Matricea L este inferior triunghiulară unitate şi conţine în fiecare coloană, sub
elementul unitar de pe diagonala principală, subvectorii Gauss.
Prima sub-etapă de rezolvare a sistemului (2.0) este substituţia înainte
aplicată sistemului de ecuaţii L ⋅ y =b . Vectorul y rezultat este, de fapt,
vectorul care se obţine aplicând la stânga, în aceeaşi ordine, transformările
elementare care s-au aplicat matricei A:
y = L−1 ⋅ b = M n −1 ⋅  ⋅ M 2 ⋅ M 1 ⋅ b .

Exemplul 2.2:
44 2. Sisteme determinate de ecuaţii algebrice liniare

Se consideră o aritmetică a virgulei mobile cu β = 10 , t = 5 şi rotunjire prin


tăiere.
10 −7 0  7 
A =
− 3 2.099 6
; b = 
3.901 ; A ⋅ x = b, x =?

5 −1 5
 
 6  
10 −7 0 10 −7 0 
A 1 = A; A 2 =  * − 1 ⋅ 10 −3
6; A 3 =  * − 1 ⋅ 10 −3
6 ;

 * 2.5 5  * * 0.15005 ⋅ 10 5 
 7   − 0.35   0 

y= 6.001 ; x =  − 1.5  ≠ − 1 = x a ,

0.15004 ⋅ 10 5  − 0.99993   1 

unde x a reprezintă soluţia adevărată a sistemului. Rezultă, aşadar, erori mari în


soluţia calculată, x . Cauza care a determinat apariţia acestor erori este aceea că
la pasul al doilea al triangularizării s-a lucrat cu un pivot foarte mic în modul (
− 1 ⋅ 10 −3 ), pentru aritmetica virgulei mobile folosite. Multiplicatorul
corespunzător este µ3, 2 = 2.5 /( −10 −3 ) = 2.5 ⋅10 3 , deci are o valoare foarte
mare în modul pentru aceeaşi aritmetică. Aceasta a condus, mai departe, la
apariţia fenomenului de omitere catastrofală în calculele care s-au efectuat
pentru obţinerea vectorilor y şi x .
Concluzie:
La triangularizarea simplă, unde elementele matricei A se modifică
corespunzător relaţiei:
a [ijk +1] = a [ijk ] − µik ⋅ a [kjk ] , i = k +1,..., n; j = k ,..., n ,
multiplicatorii µik pot avea, în principiu, orice valoare. Dacă aceste valori sunt
mari sau foarte mari, atunci pot apare fenomenele de omitere catastrofală şi/sau
de neutralizare a termenilor. Mai mult, dacă aceşti multiplicatori au valori
[k ]
supraunitare în modul, atunci ei amplifică erorile prezente în termenii a kj , în
felul acesta triangularizarea simplă fiind instabilă numeric, în general. Altfel
spus, nu există nici un control asupra stabilităţii numerice a algoritmului
triangularizării simple.
2.3 Rezolvarea sistemelor prin triangularizare cu pivotare parţială
45

2.3 Rezolvarea sistemelor prin triangularizare cu


pivotare parţială
În cazul triangularizării cu pivotare parţială (Figura 2.1), la pasul k se caută
pivotul ξk printre elementele din coloana k, pornind de la elementul de pe
diagonala principală în jos, alegându-se elementul care are cea mai mare
valoare în modul:

[k ] [ k]
|aik,k |= m a{ i,k | =|}ξak . x
≤≤ nik
k
Ak = 0
 ik

n
|
k
Fig. 2.1 Principiul triangularizării cu pivotare parţială a unei matrice: pivotul se
găseşte în coloana k, liniile k ÷ n; k=1,...,n
Dacă i k ≠ k , elementul maxim în modul nu se găseşte pe diagonala
principală, atunci se interschimbă (permută) liniile k şi i k . Lucrul acesta se
realizează automat cu ajutorul unei matrice de permutare de linii Pk care
multiplică la stânga matricea A k : Pk ⋅ A k . Pentru matricea care rezultă astfel,
se determină apoi matricea de transformare M k ca şi în cazul traingularizării
simple, obţinând matricea:
A k +1 = M k ⋅ (Pk ⋅ A k ) .
În felul acesta, multiplicatorii calculaţi sunt subunitari în modul
| µi , k |≤1, i = k +1,..., n ,
iar algoritmul triangularizării devine stabil
numeric. Matricea M k ⋅ Pk se numeşte matrice de transformare elementară
stabilizată.
46 2. Sisteme determinate de ecuaţii algebrice liniare

Matricea de permutare Pk se obţine din matricea unitate de ordinul n, I n ,


schimbând adecvat între ele liniile k şi i k . Această matrice are următoarele
proprietăţi:
det( Pk ) = −1; Pk = Pk−1 .

Teoremă:
Dacă matricea A ∈ℜn×n este nesingulară, atunci există o matrice
P ∈ℜn×n , numită matrice generală de permutare de linii, astfel încât:
P ⋅ A = L' ⋅ U ,
în care U este o matrice superior triunghiulară şi L' este o matrice inferior
triunghiulară unitate. cu elementele | l i , j |≤1, i > j .
Demonstraţia acestei teoreme este constructivă, constituind însuşi algoritmul
de triangularizare cu pivotare parţială a unei matrice. Se poate face observaţia
că matricea L' conţine în coloana k, sub elementul de pe diagonala principală,
subvectorul Gauss (de la triangulaizarea simplă) având liniile permutate.
Algoritmul de triangularizare cu pivotare parţială este următorul:
atribuie A 1 ← A
pentru k = 1, n − 1 execută

[k] [k]
 * determinare pivot ξ k ← a [i kk ],k astfel încât |aik,k |= m { ai,k | a } x
k i≤≤ n
 dacă (i k ≠ k ) atunci
  * determină Pk
  altfel
  atribuie Pk ← I n
  ι
 * calcul Pk ⋅ A k
 * determinare matrice M k astfel încât matricea
 A k +1 = M k ⋅ (Pk ⋅ A k ) să îndeplinească condiţiile de la
 triangularizarea simplă
 atribuie A k +1 ← M k ⋅ (Pk ⋅ A k )
 ι
2.3 Rezolvarea sistemelor prin triangularizare cu pivotare parţială
47

atribuie U ← A n
În ansamblu, asupra matricei A sunt aplicate următoarele transformări:
M n −1 ⋅ Pn −1 ⋅  ⋅ M 2 ⋅ P2 ⋅ M 1 ⋅ P1 ⋅ A = U . (2.0)

Folosind faptul că Pk = Pk−1 , sau altfel spus Pk ⋅ Pk = I n , relaţia (2.0)


poate fi scrisă sub forma:
( M n −1 ⋅ Pn −1 ⋅  ⋅ M 1 ⋅ P1 ⋅ P1 ⋅ P2 ⋅  ⋅ Pn −1 ) ⋅ (Pn −1 ⋅  ⋅ P2 ⋅ P1 ) ⋅ A = U (2.0)
Matricea produs Pn −1 ⋅  ⋅ P2 ⋅ P1 se notează cu P. Ea este numită matrice
generală de permutare de linii. Produsul din prima paranteză din relaţia (2.0) se
notează cu L' −1 . Relaţia (2.0) se scrie sub forma: P ⋅ A = L' ⋅ U , în care
matricea L' = Pn −1 ⋅  ⋅ P2 ⋅ M 1−1 ⋅ P2 ⋅ M −2 1 ⋅  ⋅ Pn −1 ⋅ M −n 1−1 este o matrice
inferior triunghiulară unitate având în fiecare coloană, sub diagonala principală,
subvectori Gauss cu liniile permutate.
Definiţie:
Matricea A ∈ℜn×n se numeşte diagonal dominantă pe coloane dacă în
fiecare coloană a sa elementul de pe diagonala principală este, în modul, mai
mare decât suma modulelor celorlaltor elemente:
n
| a j, j |≥ ∑ | a i , j |, ∀j = 1,..., n .
i =1
i≠ j

În acest caz, se poate enunţa următorul rezultat.


Propoziţie:
Dacă matricea A este diagonal dominantă pe coloane, atunci ea admite
factorizarea:
P ⋅ A = L' ⋅ U ,
în care P = I n şi elementele matricei L' sunt în modul subunitare.
Altfel spus, nu este implicată permutarea de linii în cazul traingularizării unei
matrice diagonal dominante pe coloane.
Rezolvarea sistemului A ⋅ x = b, A ∈ℜn×n , b ∈ℜn×1 se realizează în
două etape:
a) descompunerea L' -U a matricei A:
P ⋅ A = L' ⋅ U
b) rezolvarea propriu-zisă a sistemului care comportă trei subetape, şi anume:
b.1.) calculul vectorului c = P ⋅ b ;
b.2.) rezolvarea sistemului L' ⋅ y =c prin substituţie înainte;
48 2. Sisteme determinate de ecuaţii algebrice liniare

b.3.) rezolvarea sistemului U ⋅ x =y prin substituţie înapoi.


Această modalitate de rezolvare se bazează pe următoarele relaţii:
P ⋅ A ⋅ x = P ⋅ b , P ⋅ A = L' ⋅ U , L' ⋅ U ⋅ x = P ⋅ b , y =U ⋅ x , c = P ⋅ b .

Exemplul 2.3:
Se consideră problema de la Exemplul 2.2. Se aplică, de această dată,
triangularizarea cu pivotare parţială. În acest caz, permutarea de linii intervine
la pasul al doilea al triangularizării, permutându-se liniile 2 şi 3: P = P2 . Se
obţine, în final:
 7  10 −7 0 0 
y = 
 2.5 ; U =
0 2 .5 5  ; x = 
−1 .

6.002 
 
0 0 6.002 
 
1 

Dacă algoritmul de triangularizare cu pivotare parţială eşuează, în sensul că


pivotul găsit la o anumită etapă [k] este nul sau foarte mic în modul, aceasta
corespunde situaţiei când în aritmetica reală primele k coloane ale matricei A
sunt liniar dependente. Dacă însă pivotul găsit este în modul foarte mic în
sensul preciziei dorite (mai mic decât un anumit parametru ε impus), atunci se
recurge la traingularizarea matricei sistemului prin pivotare totală, ceea ce
implică atât permutări de linii cât şi de coloane.

2.4 Rezolvarea sistemelor prin triangularizare cu


pivotare totală
În cazul triangularizării cu pivotare totală (Figura 2.2), la pasul [k] al
triangularizării se alege drept pivot elementul maxim în modul din submatricea
formată din liniile de la k la n, coloanele de la k la n:

[k ] [k ]
|aik,jk |= m a{ i,j | |a} x
k i≤≤ n
.

k j≤≤ n
Dacă acest element nu se află în linia şi/sau coloana k, atunci are loc
permutarea adecvată de linii şi/sau coloane în scopul aducerii acelui element pe
2.3 Rezolvarea sistemelor prin triangularizare cu pivotare parţială
49

diagonala principală, anume în linia k şi coloana k.

k
Ak = 0
 ik

n
| |
k jk
Fig. 2.2 Principiul triangularizării cu pivotare totală a unei matrice: pivotul se
găseşte în submatricea determinată de coloanele k ÷ n şi liniile k ÷ n; k=1,...,n

În continuare, se enunţă şi demonstrează următorul rezultat.


Teoremă:
Pentru orice matrice A ∈ℜn×n nesingulară, există două matrice generale
de permutare, P – matrice generală de permutare de linii şi S – matrice
generală de permutare de coloane, astfel încât:
P ⋅ A ⋅ S = L' ⋅ U ,
unde U este o matrice superior triunghiulară, iar L' este o matrice inferior
triunghiulară unitate având elementele | l i , j |≤1, i ≥ j , în fiecare coloană a
matricei L’, sub elementul de pe diagonala principală, găsindu-se subvectori
Gauss având liniile permutate între ele. Matricele generale de permutare P şi S
sunt:
P = Pn −1 ⋅  ⋅ P2 ⋅ P1 ; S = S1 ⋅ S 2 ⋅  ⋅ S n −1 ,
unde matricele Pk , S k , k =1,..., n −1 sunt matrice de permutare de linii şi,
respectiv, de coloane.
Demonstraţia teoremei este constructivă, reprezentând însuşi algoritmul
triangularizării cu pivotare totală a matricei A. Acesta este descris în limbajul
pseudocod, după cum urmează:
atribuie A 1 ← A
pentru k =1, n −1 execută
50 2. Sisteme determinate de ecuaţii algebrice liniare

[k ] [k ]
|aik,jk |= m a{ i,j | |a} x
k i≤≤ n
 * determinare pivot ξ k ← a [i kk ], jk care satisface:

k ≤≤ nj
 dacă (i k ≠ k ) atunci
  * determinare Pk (permutarea liniilor i k şi k)
  altfel
  atribuie Pk ← I n
  ι
 dacă ( j k ≠ k ) atunci
  * determinare S k (permutarea coloanelor j k şi k)
  altfel
  atribuie S k ← I n
  ι
 atribuie A 'k +1 ← Pk ⋅ A k ⋅ S k
 * traingularizare matrice A 'k +1 :
 A k +1 ← M k ⋅ A 'k +1 = M k ⋅ (Pk ⋅ A k ⋅ S k )
 ι
atribuie U ← A n
Tabloul general al transformărilor este:
M n −1 ⋅ Pn −1 ⋅  ⋅ M 2 ⋅ P2 ⋅ M 1 ⋅ P1 ⋅ A ⋅ S1 ⋅ S 2 ⋅  ⋅ S n −1 = U . (2.0)
În relaţia (2.0) se notează cu S produsul S1 ⋅ S 2 ⋅  ⋅ S n −1 şi se ţine cont de
faptul că Pk ⋅ Pk = I n . Atunci relaţia (2.0) devine:
(M n −1 ⋅ Pn −1 ⋅  ⋅ M 2 ⋅ P2 ⋅ M 1 ⋅ P1 ⋅ P1 ⋅ P2 ⋅  ⋅ Pn −1 ) ⋅
(2.0)
(Pn −1 ⋅  ⋅ P1 ) ⋅ A ⋅ S = U

Matricea Pn −1 ⋅  ⋅ P2 ⋅ P1 se notează cu P, iar cu ( L' ) −1 se notează produsul


M n −1 ⋅ Pn −1 ⋅  ⋅ M 2 ⋅ P2 ⋅ M 1 ⋅ P1 ⋅ P1 ⋅ P2 ⋅  ⋅ Pn −1 . În felul acesta, relaţia (2.0)
devine: P ⋅ A ⋅ S = L' ⋅ U .
Observaţii:
2.3 Rezolvarea sistemelor prin triangularizare cu pivotare parţială
51

1. Matricea de permutare de linii, Pk , se obţine din matricea unitate I n


schimbând adecvat între ele liniile k şi i k . Deoarece se schimbă linii între
ele, matricea Pk se aplică la stânga matricei A k . Matricea Pk are
proprietăţile:
det( Pk ) = −1; Pk = Pk−1 .
2. Matricea de permutare de coloane, S k , se obţine din matricea unitate I n
schimbând adecvat între ele coloanele k şi j k . Deoarece se schimbă
coloane între ele, matricea S k se aplică la dreapta matricei A k . Matricea
S k are proprietăţile:
det( S k ) = −1; S k = S −k 1 .

Pentru înţelegerea etapelor rezolvării sistemului (2.0), se înmulţesc ambii


membri ai ecuaţiei, la stânga, cu matricea P şi se inserează între A şi x
produsul S ⋅ S −1 = I n , obţinându-se:
P ⋅ A ⋅ S ⋅ S −1 ⋅ x = P ⋅ b . (2.0)
Aşadar, rezolvarea sistemului comportă următoarele etape:
a) triangularizarea cu pivotare totală a matricei siatemului A:
P ⋅ A ⋅ S = L' ⋅ U ;
b) rezolvarea propriu-zisă a sistemului (2.0), cu următoarele subetape:
b.1.) calculul vectorului c = P ⋅ b ;
b.2.) rezolvarea sistemului L' ⋅ y =c prin substituţie înainte;
b.3.) rezolvarea sistemului U ⋅ z =y prin substituţie înapoi;
b.4.) determinarea soluţiei: x =S ⋅ z .
Observaţii:
1) Permutările de linii efectuate asupra matricei A implică permutări de linii
asupra termenului liber b .
2) Permutările de coloane efectuate asupra matricei A implică permutări de linii
în soluţia calculată a sistemului z .
3) Triangularizarea cu pivotare totală asigură, la fiecare iteraţie a sa, pivoţii cei
mai mari în valoare absolută. Astfel, multiplicatorii vor fi subunitari în
modul, de valoarea cea mai mică posibil, | µi , k |≤1 , iar elementele care se
transformă devin:
a [i ,kj+1] ←a [i ,kj] − µi , k ⋅ a [kk, ]j , j = k ,..., n; i = k +1,..., n .
Ca urmare, triangularizarea cu pivotare totală reprezintă procedura de
triangularizare cea mai precisă şi stabilă numeric. Dezavantajul ei este acela
că necesită un timp de calcul mai mare. De regulă, se foloseşte
52 2. Sisteme determinate de ecuaţii algebrice liniare

triangularizarea cu pivotare parţială, recurgându-se la triangularizarea cu


pivotare totală numai când cea parţială eşuează.
4) Dacă A este o matrice singulară, atunci pivotarea totală va eşua. În
aritmetica reală exactă aceasta corespunde situaţiei când pivotul este nul,
matricea A având rangul egal cu k-1, daca algoritmul eşuează la iteraţia k. În
aritmetica în virgulă mobilă, datorită erorilor de rotunjire, un pivot nul
înseamnă îndeplinirea condiţiei:
| a [i kk ], jk |≤ ε ,
şi se spune că matricele A, ca şi A k , sunt algoritmic singulare.
5) Dacă matricea A este diagonal dominantă pe linii şi pe coloane şi în plus
elementele de pe diagonală satisfac relaţiile:
| a 11 |≥| a 22 |≥  ≥| a nn | ,
atunci descompunerea L -U cu pivotare totală este:
'

P ⋅ A ⋅ S = L' ⋅ U; unde : P = I n ; S = I n .

2.5 Aplicaţii ale descompunerilor L-U

2.5.1 Calculul determinantului

Considerând o matrice A ∈ℜn×n nesingulară, pentru care s-a calculat una


din descompunerile de tip L-U, calculul determinantului acesteia poate fi făcut
după cum urmează.
 Descompunerea L-U bazată pe triangularizarea simplă
În acest caz, descompunerea L-U a matricei A este:
A =L⋅U , (2.0)
unde L este o matrice inferior triunghiulară unitate, iar matricea
U =[ u i , j ]1≤i , j≤n
este o matrice superior triunghiulară. Aplicând funcţia
determinant det(.) relaţiei (2.0) se obţine:
det( A ) = det( L ⋅ U) = det( L) ⋅ det( U) . (2.0)
Matricea L fiind o matrice inferior triunghiulară unitate, determinantul său este
egal cu 1, iar matricea U fiind o matrice superior triunghiulare, determinantul
său este egal cu produsul elementelor de pe diagonala principală. Ţinând cont
de acestea, relaţia (2.0) devine:
2.3 Rezolvarea sistemelor prin triangularizare cu pivotare parţială
53

n
det( A) = ∏ u i ,i .
i =1

 Descompunerea L-U bazată pe triangularizarea cu pivotare parţială


În acest caz, descompunerea L-U a matricei A este:
P ⋅ A = L' ⋅ U , (2.0)
în care P este matricea generală de permutare de linii (matrice nesingulară), L'
este o matrice inferior triunghiulară unitate, iar U =[ u i , j ]1≤i , j≤n este o
matrice superior triunghiulară. Ţinând cont de faptul că matricea P este
inversabilă, relaţia (2.0) poate fi scrisă sub forma:
A = P −1 ⋅ L' ⋅ U . (2.0)
Aplicând funcţia determinant det(.) relaţiei (2.0), se obţine:
det( A ) = det( P −1 ⋅ L' ⋅ U ) = det( P −1 ) ⋅ det( L' ) ⋅ det( U ) .
Ţinând cont de următoarele:
• P −1 = P1 ⋅ P2 ⋅  ⋅ Pn −1 ,
det( P −1 ) = det( P1 ) ⋅ det( P2 ) ⋅  ⋅ det( Pn −1 ) ;
• det( Pi ) = −1, i ∈{1,..., n −1} , deoarece dacă Pi ≠ I n este realizată
o permutare de linii la iteraţia [i] a algoritmului de triangularizare cu
pivotare parţială;
• det( L' ) =1 ;
n
• det( U) = ∏ u i ,i ,
i =1
atunci relaţia (2.0) devine:
n
det( A ) = ( −1) Npl ⋅ ∏ u i,i ,
i =1
unde Npl reprezintă numărul de permutări de linii efectiv realizate în procesul
de triangularizare a matricei A.
 Descompunerea L-U bazată pe triangularizarea cu pivotare totală
În acest caz, descompunerea L-U a matricei A este:
P ⋅ A ⋅ S = L' ⋅ U , (2.0)
în care P este matricea generală de permutare de linii (matrice nesingulară), S
este matricea generală de permutare de coloane (matrice nesingulară), L' este o
matrice inferior triunghiulară unitate, iar U =[ u i , j ]1≤i , j≤n este o matrice
54 2. Sisteme determinate de ecuaţii algebrice liniare

superior triunghiulară. Ţinând cont de faptul că matricele P şi S sunt


inversabile, relaţia (2.0) devine:
A = P −1 ⋅ L' ⋅ U ⋅ S −1 . (2.0)

Dar P −1 = P1 ⋅ P2 ⋅  ⋅ Pn −1 şi S −1 = S n −1 ⋅  ⋅ S 2 ⋅ S1 . Ca urmare, relaţia (2.0)


devine:
n n
det( A ) = ∏ det( Pi ) ⋅ det( L' ) ⋅ det( U) ⋅ ∏ det( S i ) . (2.0)
i =1 i =1

Ţinând cont de următoarele:


• det( Pi ) = −1, i ∈{1,..., n −1} , deoarece dacă Pi ≠ I n este realizată o
permutare de linii la iteraţia [i] a algoritmului de triangularizare cu pivotare
totală;
• det( S i ) = −1, i ∈{1,..., n −1} , deoarece dacă S i ≠ I n este realizată
permutare de coloane la iteraţia [i] a algoritmului de triangularizare cu
pivotare totală;
• det( L' ) =1 ;
n
• det( U) = ∏ u i ,i ,
i =1
atunci relaţia (2.0) devine:
n
det( A) = (−1) Npl + Npc ⋅ ∏ u i ,i ,
i =1
unde Npl este numărul permutărilor de linii, iar Npc numărul permutărilor de
coloane ce s-au realizat efectiv pe parcursul procedurii de triangularizare cu
pivotare totală a matricei A.

2.5.2 Rezolvarea ecuaţiilor matriciale

Se consideră ecuaţia matricială de forma:


A ⋅ X = B, A ∈ℜn×n ; B ∈ℜn×p ; X ∈ℜn×p ; X =? . (2.0)
Se scriu matricele B şi X pe coloane, sub forma:
B =[ b1  bk  b p ]; b k ∈ℜn×1 , k =1,..., p
. (2.0)
X =[ x 1  xk  x p ]; x k ∈ℜn×1 , k =1,..., p

Apelând la descompunerea L-U cu traingularizare simplă (relaţia (2.0)) a


matricei A a sistemului (2.0), se obţine relaţia:
2.3 Rezolvarea sistemelor prin triangularizare cu pivotare parţială
55

L⋅U ⋅X = B. (2.0)
Notând produsul U ⋅ X cu Y, relaţia (2.0) devine: L ⋅ Y = B sau, folosind
relaţiile (2.0), se poate scrie:
L ⋅ y k =b k , k =1,..., p
. (2.0)
U ⋅ x k =yk , k =1,..., p

Aşadar, rezolvarea ecuaţiei matriciale (2.0) implică descompunerea L-U a


matricei sistemului şi apoi determinarea succesivă a coloanelor matricei
necunoscutelor, X cu ajutorul relaţiilor (2.0). Numărul de operaţii în virgulă
mobilă necesar rezolvării unui astfel de sistem este de ordinul lui
( n 3 / 3) + p ⋅ n 2 , unde n 3 / 3 operaţii în virgulă mobilă sunt necesare
descompunerii L-U, iar p ⋅ n 2 operaţii sunt necesare rezolvării sistemului în
maniera descrisă.
În cazul în care se utilizează descompunerea L-U cu pivotare parţială (relaţia
(2.0)) a matricei A a sistemului, atunci rezolvarea sistemului de ecuaţii
matriciale (2.0) parcurge următoarele etape:
a) descompunerea L' -U a matricei A (relaţia (2.0));
b) calculul coloanelor matricei X; pentru k =1,..., p se execută:
b.1.) calculul vectorului c = P ⋅ b k ;
'
b.2.) rezolvarea sistemului L ⋅ y k = c prin substituţie înainte;
b.3.) rezolvarea sistemului U ⋅ x k = y k prin substituţie inversă.
În cazul în care se apelează la descompunerea L-U cu pivotare totală (relaţia
(2.0)) a matricei A a sistemului, atunci rezolvarea sistemului de ecuaţii
matriciale (2.0) parcurge următoarele etape:
a) descompunerea L' -U a matricei A (relaţia (2.0));
b) calculul coloanelor matricei X; pentru k = 1,..., p se execută:
b.1.) calculul vectorului c = P ⋅ b k ;
'
b.2.) rezolvarea sistemului L ⋅ y k = c prin substituţie înainte;
b.3.) rezolvarea sistemului U ⋅ z k = y k prin substituţie inversă;
b.4.) ordonare soluţie calculată: x k = S ⋅ z k .

2.5.3 Calculul inversei unei matrice

Fie o matrice A ∈ℜn×n nesingulară. Se doreşte aflarea inversei acesteia,


notată cu A −1 . Acest tip de problemă se încadrează în problematica rezolvării
ecuaţiilor matriciale de tipul (2.0), considerând B = I n .
56 2. Sisteme determinate de ecuaţii algebrice liniare

Astfel, în prima fază se utilizează una din descompunerile L-U ale matricei
A, anume traingularizare simplă, triangularizare cu pivotare parţială sau
triangularizare cu pivotare totală, urmată de o a doua fază de rezolvare propriu-
zisă a unui sistem de tipul (2.0). În final, matricea inversă A −1 este egală cu
matricea ale cărei coloane sunt vectorii rezultaţi la faza a doua menţionată şi
anume: A −1 = X = [ x 1  x k  x n ] . Detaliile acestei proceduri sunt
următoarele, în funcţie de tipul de triangularizare a matricei de inversat A caee
este folosit:
 triangularizare simplă
1. descompunere L-U (relaţia (2.0));
2. L ⋅ y k = e k , e k =[0  0 1 0  0] T , unde 1 apare în poziţia
k;
U ⋅ x k = y k , k =1,..., n

 triangularizare cu pivotare parţială


1. descompunere L-U (relaţia (2.0));
2. c = P ⋅ e k , e k =[0  0 1 0  0] T , unde 1 apare în poziţia
k;
L' ⋅ y k = c
U ⋅ x k = y k , k =1,..., n

 triangularizare cu pivotare totală


1. descompunere L-U (relaţia (2.0));
2. c = P ⋅ e k , e k =[0  0 1 0  0] T , unde 1 apare în poziţia
k;
L' ⋅ y k = c
U ⋅zk =yk
x k = S ⋅ z k , k =1,..., n .

Această procedură de determinare a inversei unei matrice necesită un număr


de operaţii în virgulă mobilă de ordinul lui (n 3 / 3) + n ⋅ n 2 , în cazul utilizării
triangularizării simple. Concluzia care se poate desprinde este aceea că
inversarea unei matrice necesită un număr mare de operaţii în virgulă mobilă.
Ca urmare, în practică, nu se recomandă rezolvarea sistemelor prin metoda
bazată pe calculul explicit al inversei matricei sistemului:
−1
A ⋅ x = b ⇒ x = A ⋅ b , deoarece există posibilitatea afectării rezultatului
obţinut de către erorile de rotunjire acumulate.
2.3 Rezolvarea sistemelor prin triangularizare cu pivotare parţială
57

2.5.4 Rezolvarea sistemelor în corpul numerelor complexe

Fie sistemul de ecuaţii:


A ⋅ z = b, A ∈C n×n , b ∈C n×1 . (2.0)
În principiu, se poate aplica metodologia de rezolvare a sistemelor de ecuaţii
având matricea sistemului şi termenul liber cu elemente numere reale, dacă
operaţiile cu numere complexe sunt definite (implementate) în limbajul de
programare folosit. Altfel, trebuie scrise funcţii sau rutine, stabile din punct de
vedere numeric, care să implementeze operaţiile cu numere complexe.
De regulă, problema rezolvării unui sistem complex de ordinul n se
transformă în problema rezolvării unui sistem real de dimensiune 2 ⋅ n . Astfel,
se pot rescrie matricele implicate în (2.0) sub forma următoare, unde i 2 = −1 :
A = A 1 + i ⋅ A 2 , A 1 , A 2 ∈ ℜ n ×n ,

b = b1 + i ⋅ b 2 , b1 , b 2 ∈ℜn×1 , (2.0)

z = z1 + i ⋅ z 2 , z 1 , z 2 ∈ ℜn×1 .
Înlocuind relaţiile (2.0) în (2.0) se obţine:
(A 1 + i ⋅ A 2 ) ⋅ ( z1 + i ⋅ z 2 ) = b1 + i ⋅ b 2 .
Efectuând calculele se obţine:
(A 1 ⋅ z 1 − A 2 ⋅ z 2 ) + i ⋅ (A 2 ⋅ z 1 + A 1 ⋅ z 2 ) = b1 + i ⋅ b 2 . (2.0)
Din relaţia (2.0), identificând partea reală şi partea imaginară pentru cei doi
membri ai egalităţii, se obţine:
A 1 ⋅ z 1 − A 2 ⋅ z 2 = b1 ,
A 2 ⋅ z1 + A1 ⋅ z 2 = b 2 ,
ceea ce se poate scrie sub formă matricială astfel:
 A 1  − A 2   z 1   b1 
     ⋅   =   
     . (2.0)
A 2  A 1   z 2  b 2 

 A1  − A2   z1 
    , cu  
Notând cu C matricea de blocuri   x vectorul   şi
A 2  A 1  z 2 
58 2. Sisteme determinate de ecuaţii algebrice liniare

 b1 
 
cu d vectorul   , relaţia (2.0) se reduce la:
b 2 

C ⋅ x =d . (2.0)
Rezolvând sistemul (2.0), se obţine o soluţie care se poate rescrie sub forma:
x = [x 1  xn  x n +1  x 2⋅n ] T ,
iar soluţia sistemului complex este:
z = [x 1  x n ] T + i ⋅ [ x n +1  x 2⋅n ] T .

2.6 Metode iterative

2.6.1 Principiul şi convergenţa metodelor iterative

Fie sistemul de ecuaţii algebrice liniare:


A ⋅ x = b, A ∈ℜn ×n , b ∈ℜn×1 , (2.0)
în care A este o matrice nesingulară.
Metodele iterative se bazează pe construcţia unui şir de aproximaţii ale
soluţiei, x [ k ] , k =0,1,... , convergent la soluţia adevărată:
[k ] [0]
lim x = x, ∀x .
k →∞

Pentru construcţia acestui şir, se consideră rescrierea sau descompunerea


matricei A a sistemului sub forma: A = N − P , în care N este o matrice
nesingulară. De regulă, se alege matricea N cu o formă simplă. Ecuaţia (2.0)
devine:
( N − P) ⋅ x = b ⇔ N ⋅ x = P ⋅ x + b . (2.0)
Şirul de aproximaţii se construieşte cu ajutorul relaţiei:
[ k +1] [k ]
N ⋅x =P ⋅ x + b, k = 0,1,... (2.0)
[0]
în care estimaţia iniţială x [ 0 ] este dată (cunoscută). În particular, x = 0 n .
Din relaţia (2.0) rezultă:
[ k +1]
= N −1 ⋅ P ⋅ x + N −1 ⋅ b,
[k]
x k = 0,1,... . (2.0)
Se face următoarea notaţie:
2.3 Rezolvarea sistemelor prin triangularizare cu pivotare parţială
59

G = N −1 ⋅ P, G ∈ℜn×n .

Matricea G are valori proprii în general complexe, λi (G ) ∈C , care


formează mulţimea numită spectrul matricei G.
Definiţie:
Se numeşte rază spectrală a matricei G mărimea:
ρ(G ) = max {| λ i (G ) |} .
1≤i ≤n

În cele ce urmează, se enunţă şi demonstrează următorul rezultat.


Propoziţie:
Condiţia necesară şi suficientă ca şirul de soluţii aproximative, defint prin
relaţia (2.0), să fie convergent către soluţia adevărată a sistemului de ecuaţii
(2.0) este ca matricea G = N −1 ⋅ P să aibă toate valorile proprii în modul
subunitare sau, altfel spus, raza spectrală a matricei G să fie subunitară.
Demonstraţia porneşte de la expresia erorii la iteraţia [k], care este:
= x − x , k =0,1,... . Eroarea la pasul [ k + 1 ] este:
[k] [k]
e
[ k +1] [ k +1]
− N −1 ⋅ b .
[k]
e =x −x = x −G ⋅ x (2.0)
Înlocuind în relaţia (2.0) expresia vectorului b din relaţia (2.0), se obţine:
[ k +1]
− N −1 ⋅ ( N ⋅ x − P ⋅ x ) = G ⋅ ( x − x
[k ] [k ] [k ]
e =x −G ⋅ x ) =G ⋅e . (2.0)
Exprimând eroarea la pasul [k] în funcţie de eroarea la pasul [k-1], prin
folosirea repetată a relaţiei (2.0), se obţine următorul rezultat:
[ k +1] [ k −1]
= = G k +1 ⋅ e
[k ] [0]
e =G ⋅ e =G 2 ⋅ e .
[0]
Cum e ≠ 0 n în general, atunci condiţia referitoare la limita şirului de
aproximaţii, prezentată la început, este îndeplinită dacă şi numai dacă
lim G k = 0 n×n . Această condiţie este satisfăcută dacă matricea G are valorile
k →∞

proprii subunitare în modul, altfel spus, dacă rază spectrală a matricei G este
subunitară.
Observaţii:
1. Cu cât raza spectrală subunitară a matricei G este mai mică, cu atât viteza de
convergenţă a şirului de soluţii aproximative (2.0) va fi mai mare.
60 2. Sisteme determinate de ecuaţii algebrice liniare

2. În practică, de multe ori, condiţia necesară şi suficientă prezentată anterior se


verifică (înlocuieşte) printr-o condiţie suficientă, dacă este posibil, şi
anume:
dacă || G || α <1 atunci ρ(G ) <1 .
De regulă se foloseşte norma matricială infinit, rezultând condiţia:
n
|| G || ∞ = max {∑| g i , j |} < 1 .
1≤i ≤n j=1

Dacă această ultimă condiţie este îndeplinită, atunci metoda iterativă este
sigur convergentă şi nu mai este necesar să se calculeze valorile proprii ale
matricei G de caracterizare a convergenţei. Dacă, însă, condiţia suficientă nu
este satisfăcută, atunci nu se poate afirma nimic în ceea ce priveşte
convergenţa metodei şi se recurge la calculul valorilor proprii ale matricei G,
în scopul verificării condiţiei necesare şi suficiente.
În continuare se consideră următoarea descompunere a matrcii A a
sistemului (2.0):
A =L+D+U,
în care L este o matrice inferior triunghiulară cu diagonala principală nulă
având elementele de sub diagonala principală egale cu elementele matricei A de
acelaşi rang, D este o matrice diagonală având elementele de pe diagonala
principală egale cu elementele de pe diaonala principală a matricei A, iar U este
o matrice superior triunghiulară având elementele de deasupra diagonalei
principale egale cu elementele matricei A de acelaşi rang.
Se mai face presupunerea că elementele diagonalei principale a matricei A
sunt nenule. În caz contrar, se pot face permutări de linii şi/sau coloane astfel
încât să fie îndeplinită şi această condiţie.

2.6.2 Metoda Jacobi şi metoda Gauss-Seidel

În cazul metodei Jacobi, matricele N şi P sunt:


N = D, P = −( L + U ) . (2.0)
Din relaţia (2.0), folosind relaţia (2.0), rezultă:
[ k +1] [k ]
D⋅x = −( L + U ) ⋅ x + b, k = 0,1,... . (2.0)
Relaţia (2.0) se poate scrie pe linii astfel:
2.3 Rezolvarea sistemelor prin triangularizare cu pivotare parţială
61

n
a i,i ⋅ x [i k + 1] = − ∑ a i, j ⋅ x [jk ] + b i , i = 1,...,n
j= 1
. (2.0)
j≠ i

Dacă elementul a i ,i ≠ 0 , atunci relaţia (2.0) se poate rescrie sub forma:


n
x [ik + 1] = (b i / a i,i ) − ∑ (a i, j / a i,i ) ⋅ x [jk ] , i = 1, . . n. ,
j= 1
. (2.0)
j≠ i

Matricea G corespunzătoare metodei Jacobi este:


G Jacobi = N −1 ⋅ P = −D −1 ⋅ ( L + U ) =[g i , j ]1≤i , j≤n ,
0, i=j
în care g i , j =  .
− a i , j / a i ,i , i ≠ j
Condiţia suficientă care se impune pentru ca metoda Jacobi să fie convergentă
este:
n n
m {a∑ x| gi, j |} = m {a∑ x| a i, j / a i,i |} < 1
1≤ i≤ n j= 1 1≤ i≤ n j= 1 . (2.0)
j≠ i

În relaţia (2.0) fiind implicate doar numere pozitive, dacă maximul lor este mai
mic decât 1, atunci toate sunt subunitare:
n n
∑ | ai,j / ai,i | < 1 ⇔ | ai,i |> ∑ | ai,j |. (2.0)
j= 1 j= 1
j≠ i j≠ i

O matrice care satisface relaţia (2.0) se numeşte matrice diagonal dominantă pe


linii.
Propoziţie:
Dacă matricea A este diagonal dominantă pe linii, atunci metoda Jacobi
este convergentă, oricare ar fi estimaţia iniţială a soluţiei sistemului de ecuaţii
(2.0).
Observaţie:
Condiţia (2.0) înseamnă că ∀i =1,..., n , j =1,..., n , i ≠ j ,
| a i , j / a i ,i |<1 . Revenind la relaţia (2.0), se observă că a i , j / a i ,i sunt
coeficienţii care multiplică estimaţiile anterioare, deci erorile ce afectează
aceste estimaţii sunt micşorate pe măsură ce procesul iterativ avansează. Ca
urmare, dacă matricea A este diagonal dominantă pe linii, atunci procedura este
sigur stabilă numeric.

Metoda Gauss-Seidel porneşte de la descompunerea A = N − P în care:


62 2. Sisteme determinate de ecuaţii algebrice liniare

N = L + D, P = −U .
Relaţia (2.0) se poate rescrie, în acest caz, sub forma:
[ k +1] [k]
( L + D) ⋅ x = −U ⋅ x + b, k = 0,1,... . (2.0)
Relaţia (2.0) se poate scrie, pe linii, sub forma:
i n
∑ a i, j ⋅ x [jk +1] = − ∑ a i, j ⋅ x [jk ] + b i , i = 1,..., n ,
j=1 j=i +1

din care rezultă, dacă a i ,i ≠ 0 :


i −1 n
x [i k +1] = (b i / a i ,i ) − ∑ (a i , j / a i ,i ) ⋅ x [jk +1] + ∑ (a i , j / a i ,i ) ⋅ x [jk ] , i = 1,..., n
j=1 j=i +1

.
Se poate demonstra că, şi în cazul metodei Gauss-Seidel, dacă matricea A
este diagonal dominantă pe linii, atunci metoda este convergentă.
În general, se demonstrează că între raza spectrală subunitară a matricei
G Jacobi = −D −1 ⋅ ( L + U ) şi raza spectrală subunitară a matricei
G Gauss −Seidel = −(L + D) −1 ⋅ U există relaţia:

ρ2 (G Jacobi ) ≅ ρ(G Gauss −Seidel ) <1 .

Rezultă, în general, că dacă metoda Gauss-Seidel este convergentă, atunci


viteza sa de convergenţă este mai mare decât cea corespunzătoare metodei
Jacobi.
Există situaţii în care, pentru ambele metode, razele spectrale sunt
subunitare, dar apropiate de valoarea 1. În acest caz, convergenţa ambelor
metode este extrem de lentă, recomandându-se ca în descompunerea matricei A
să se utilizeze unul sau mai mulţi parametri de accelerare a convergenţei.

2.6.3 Metoda relaxărilor succesive

Se porneşte de la descompunerea matricei A corespunzătoare metodei


Gauss-Seidel. Relaţia (2.0) se poate scrie sub forma:
[ k +1]
= −( L + D) −1 ⋅ U ⋅ x + ( L + D) −1 ⋅ b, k = 0,1,... .
[k]
x
În acestă relaţie, în membrul drept se adună şi se scade cantitatea x [ k ] .
Ţinând cont de faptul că I n = ( L + D) −1 ⋅ (L + D) rezultă:
[ k +1]
− (L + D) −1 ⋅ [ U ⋅ x
[k ] [k ] [k]
x =x + ( L + D) ⋅ x − b]
[k ] −1 [k ]
=x − ( L + D) ⋅ [A ⋅ x − b]
Se face următoarea notaţie:
2.3 Rezolvarea sistemelor prin triangularizare cu pivotare parţială
63

[k] [k ]
, r =b −A ⋅ x
[k]
în care r se numeşte reziduu corespunzător iteraţiei [k].
În acest caz, se poate scrie:
x [ k +1] = x [ k ] + ( L + D) −1 ⋅ r [ k ] . (2.0)
Se transformă relaţia (2.0), înmulţind termenul care conţine reziduul cu un
parametru ω de accelerare a convergenţei:
[ k +1]
+ ω⋅ ( L + D) −1 ⋅ r
[k ] [k ]
x =x . (2.0)
Al doilea termen din suma exprimată în relaţia (2.0) poate fi interpretat ca un
factor de corecţie pentru estimaţia de la iteraţia [k]. Astfel, soluţia de la iteraţia
[ k + 1 ] se obţine prin corectarea soluţiei de la iteraţia anterioară [k], corecţia
realizându-se în funcţie de reziduul r [ k ] .
Relaţia (2.0) se poate rescrie sub forma:
[ k +1]
− ω ⋅ (L + D) −1 ⋅ (L + D) ⋅ x
[k] [k]
x =x
(2.0)
+ ω ⋅ [ −(L + D) −1 ⋅ U ⋅ x + (L + D) −1 ⋅ b]
[k]

Paranteza dreptunghiulară pune în evidenţă aproximaţia la iteraţia [ k + 1 ],


obţinută prin metoda Gauss-Seidel. Relaţia (2.0) devine:
[ k +1] [k ] [ k +1]
x = (1 − ω) ⋅ x + ω ⋅ x Gauss −Seidel . (2.0)

Se demonstrează că şirul de aproximaţii obţinut cu ajutorul relaţiei de recurenţă


(2.0) este convergent pentru ω∈(0,2) . Dacă ω∈(0,1) metoda se numeşte a
subrelaxărilor succesive, iar dacă ω∈(1,2) ea se numeşte a suprarelaxărilor
succesive. Dacă ω=1 , se obţine metoda Gauss-Seidel.
În general, dacă metoda este convergentă, atunci numărul de iteraţii ca
funcţie de parametrul ω atinge un punct de minim corespunzător unei valori
ωoptim (a se vedea Figura 2.3). Se poate arăta că ωoptim şi ρoptim au
aproximativ valorile:
2 ρJacobi ωoptim
2
ωoptim ≅ ; ρoptim ≅ ≅ ρGauss −Seidel ⋅ .
1 + 1 − ρ2Jacobi 1 + 1 − ρ2Jacobi 4

În practică, la nivelul fiecărei componente, se pot folosi relaţiile de calcul


(2.0):
i −1 n
x [i k +1] = (1 − ω) ⋅ x [i k ] + ω ⋅ [( b i − ∑ a i, j ⋅ x [jk +1] − ∑ a i, j ⋅ x [jk ] ) / a i,i ] .
j=1 j=i +1

Relaţiile prezentate corespund unei descompuneri a matricei A care depinde


de parametrul ω , şi anume:
64 2. Sisteme determinate de ecuaţii algebrice liniare

A ⋅ x = b; ω⋅ A ⋅ x = ω⋅ b ⇒ ω ⋅ A = N (ω) − P (ω)
în care N(ω) = ω⋅ L + D şi P(ω) = (1 − ω) ⋅ D − ω⋅ U .
numar iteratii

numar minim
iteratii
ω

1 ωoptim 2

Fig. 2.3 Metoda suprarelaxării succesive

***
Algoritmii prezentaţi lucrează până când este îndeplinită o condiţie de tipul:
|| x [ s ] − x [ s −1] || α ≤ εx .
Se foloseşte, de regulă, norma infinit şi atunci condiţia de stop este:
max{| x [is ] − x [is −1] |} ≤ ε x .
1≤i ≤n
[ k +1]
Notând x n = x şi x v = x [ k ] , atunci următorul algoritm descrie
procedura generală aplicată în cazul unei metode iterative:
[ 0]
citeşte εx , x
atribuie x n ← x [ 0]
atribuie vn ∞ ← 1
atribuie iter ← 0
cât timp ( vn ∞ > ε x ) execută
 atribuie x v ← x n
 atribuie iter ← iter + 1
 * calculează x n
 * calculează vn ∞ = max
1≤i ≤ n
{| x n (i) − x v (i) |}

2.3 Rezolvarea sistemelor prin triangularizare cu pivotare parţială
65

În final, se obţin următoarele: numărul de iteraţii (iter) şi vectorul x n care


aproximează soluţia sistemului cu precizia impusă εx . În descrierea anterioară,
x
[0]
reprezintă estimaţia iniţială a soluţiei, iar vn ∞ este notaţia pentru
valoarea normei vectoriale infinit.

2.7 Caracterizarea problemei rezolvării unui sistem de


ecuaţii algebrice liniare. Precizia soluţiei calculate
Precizia soluţiei calculate a problemei:
A ⋅ x = b, A ∈ℜn ×n , b ∈ℜn×1
depinde critic de buna sa condiţionare numerică. Această proprietate este
caracterizată de numărul de condiţie al matricei A a sistemului. Aceste concepte
fac obiectul acestui subcapitol.

2.7.1 Numărul de condiţie al unei matrice

Definiţie:
Oricare ar fi matricea A ∈ℜn×n , se defineşte numărul său de condiţie în
raport cu norma vectorială α , notat k α (A ) , ca fiind:
k α (A) = M / m ,

M= m ⋅ xA{ α /| | xa|α } | m= xm , ⋅ xA{ α /| | x|iα } | n


,

≠ 0x n ≠ 0x n
unde || . || α este una din normele vectoriale uzuale (a se vedea Anexa A).
Cum în general M ≥ m , rezultă că şi k α ( A) ≥ 1 . Se poate demonstra că
1 / m =|| A −1 || α . Astfel, se poate defini numărul de condiţie în raport cu
operaţia de inversare matricială ca fiind:
k α ( A) =|| A || α ⋅ || A −1 || α .
Numărul de condiţie depinde în general de norma matricială folosită. Între
diferitele numere de condiţie corespunzătoare aceleiaşi matrice există relaţii
care reflectă relaţiile dintre normele matriciale echivalente utilizate. Astfel, dacă
66 2. Sisteme determinate de ecuaţii algebrice liniare

α şi β sunt două norme matriciale (vectoriale), există constantele


c1 , c 2 ∈ℜ astfel încât să aibă loc relaţia:
c1 ⋅ k α ( A) ≤ k β (A ) ≤ c 2 ⋅ k α (A) .
În multe abordări, este folosită norma infinit pentru a calcula numărul de
condiţie al unei matrice:
k ∞ ( A) =|| A || ∞ ⋅ || A −1 || ∞ .
Cum calculul normei infinit este imediat (a se vedea Anexa A), problema
este de a determina norma infinit pentru inversă. O soluţie o reprezintă calculul
inversei matricei A prin triangularizare şi apoi calculul normei infinit. În acest
fel, se obţine o aproximare a numărului de condiţie al matricei. Dezavantajul
acestei modalităţi este că este necesar un volum mare de calcule.
Discuţia asupra numărului de condiţie al unei matrice este reluată în
capitolul 5 destinat studiului valorilor singulare ale unei matrice. Se prezintă
acolo modalitatea uzual folosită pentru calculul eficient al numărului de
condiţie.
Exemplul 2.4:
• dacă A = I n (matrice unitate de ordinul n), atunci k α ( A) = 1 ;
• dacă A = Pk (matrice elementară de permutare de linii), atunci
k α ( A) =1 ;
• dacă A = S k (matrice elementară de permutare de coloane), atunci
k α ( A) =1 ;
• dacă A = diag {d 11 ,..., d ii ,..., d nn } (matrice diagonală), atunci
k α (A) = max{| d ii |} / min{| d ii |} .
1≤i ≤ n 1≤i ≤ n

În funcţie de valorile numărului de condiţie, matricea A poate fi caracterizată


după cum urmează:
a) dacă numărul de condiţie este egal cu 1, matricea A se spune că este foarte
bine condiţionată;
b) dacă numărul de condiţie este mic, apropiat de valoarea 1, atunci matricea
A este bine condiţionată;
c) dacă numărul de condiţie este mare, atunci matricea A este prost
condiţionată;
d) dacă numărul de condiţie este foarte mare, atunci matricea A este aproape
singulară;
e) dacă numărul de condiţie este infinit, atunci matricea A este singulară.
Se mai utilizează şi inversul numărului de condiţie:
rk α ( A ) = 1 / k α ( A ) .
2.3 Rezolvarea sistemelor prin triangularizare cu pivotare parţială
67

În funcţie de valorile pe care le poate lua acesta, matricea A poate fi


caracterizată după cum urmează, unde εm este notaţia pentru epsilonul-
maşină:
a) matrice foarte bine condiţionată, dacă rk α (A ) = 1 ;
b) matrice bine condiţionată, dacă rk α (A ) < 1 , dar apropiat de valoarea 1:
ε m << rk α ( A) < 1 ;
c) matrice prost condiţionată (aproape singulară) dacă rk α (A ) ≤ ε m ;
d) matrice singulară (foarte prost condiţionată) dacă rk α ( A) = 0 .
Conform acestor caracterizări se poate afirma, în general, că numărul de
condiţie al unei matrice reprezintă inversul distanţei dintre matricea A şi
mulţimea matricelor singulare.
Exemplul 2.5:
De regulă se preferă caracterizarea singularităţii pe baza numărului de
condiţie sau a inversului său, decât folosirea valorii determinantului. Fie
matricea:
0.1  0 
D =
   .

0  0.1
100 ×100
Atunci det( D) =10 −100 ≅ 0 în simplă precizie, deşi k ∞ ( D) =1 , ceea ce
arată că matricea D este o matrice foarte bine condiţionată.
Exemplul 2.6:
În general, nu există o corelaţie între numărul de condiţie şi valoarea
determinantului unei matrice. Fie matricea:
1 −1  −1
0   
Bn =  =[ b i , j ]1≤i , j≤n cu
   −1
 
0  0 1 n×n
−1, i < j

b i, j =  1, i = j , i, j =1,..., n .
 0, i > j

Atunci det( B n ) =1 şi k ∞ (B n ) = n ⋅ 2 n . Pentru n având valori mari, matricea
B n este prost condiţionată. Proasta condiţionare a unei matrice se poate
reflecta în rezultatele triangularizării sale. Astfel, dacă în urma triangularizării
unei matrice, matricea U superior triunghiulară are pe diagonala principală
elemente nule sau foarte mici, atunci sigur matricea iniţială este prost
68 2. Sisteme determinate de ecuaţii algebrice liniare

condiţionată. Reciproca, în general, nu este valabilă: matricea poate fi prost


condiţionată, însă datorită erorilor de calcul, elementele de pe diagonala
matricei U pot să nu fie neapărat foarte mici.

2.7.2 Precizia soluţiei calculate

Fie sistemul de ecuaţii:


A ⋅ x = b, A ∈ℜn ×n , b ∈ℜn×1 . (2.0)
Caracterizarea (condiţionarea) acestei probleme este dată de numărul de
condiţie al matricei A, aşa cum a fost el definit la începutul acestui capitol. Pot
exista două situaţii generale prezentate în continuare:
I. Soluţia este calculată fără erori (exact), dar pot exista erori în matricea A şi
termenul liber b . Se disting următoarele două subcazuri, I.1 şi I.2,
prezentate în continuare.
I.1 Se presupune că termenul liber al sistemului (2.0) este uşor perturbat,
~
lucrându-se cu vectorul b în loc de vectorul b . De fapt, se rezolvă
(exact) problema:
~
A ⋅~
x =b .
Dacă ~ x este soluţia exactă a acestei noi probleme, atunci se demonstrează că
eroarea relativă satisface la relaţia:
~ ~
ε x =|| x − ~
x || α / || x || α ≤ k α ( A)⋅ || b − b || α / || b || α = k α ( A) ⋅ εb .

Rezultă, aşadar, că eroarea relativă în termenul liber este amplificată în soluţia


calculată de k α ( A) ori, în absenţa erorilor de rotunjire.
Exemplul 2.7:
Fie sistemul (2.0) cu următoarele matrice:
4.1 2.8
4.1 ~ 4.11 
A = b =  , b = 
, .
9.7 6.6 
9.7 
 9.70 
1 
Soluţia exactă a sistemului A ⋅ x = b este x =   . Soluţia exactă a sistemului
0
0.34 
este ~
~
A ⋅~
x =b x = ≠x .
0.97 
~
Realizeazând următoarele notaţii: ∆b =b −b , ∆x = x − ~ x , rezultă pentru
acest exemplu:
k 1 (A) ≥ (|| ∆x ||1 / || x ||1 ) /(|| ∆b ||1 / || b ||1 ) = 2294 .4 ,
deci matricea A este prost condiţionată.
2.3 Rezolvarea sistemelor prin triangularizare cu pivotare parţială
69

I.2 De această dată, se consideră matricea sistemului ca fiind afectată de


perturbaţii:
~
A = A + E, || E || α <<|| A || α .
De fapt, se rezolvă exact problema:
~
A ⋅~
x =b . (2.0)
Dacă ~ x este soluţia exactă a ecuaţiei (2.0), atunci se demonstrează că eroarea
relativă satisface la relaţia:
ε x ≤ k α ( A ) ⋅ (|| E || α / || A || α ) = k α ( A ) ⋅ ε A .

Rezultă faptul că perturbaţiile în matricea sistemului, în ipoteza absenţei erorilor


de rotunjire la calculul soluţiei, se regăsesc în soluţia calculată amplificate de
k α ( A) ori.

II. Datele iniţiale ale problemei (2.0), A şi b , sunt exacte, dar procedura de
calcul a soluţiei este afectată de eroare (erori de rotunjire). În acest caz
se disting două situaţii, II.1 şi II.2, prezentate în cele ce urmează.
II.1 Apar erori datorate decompunerii gaussiene.
Se obţin următoarele rezultate:
• A = L ⋅ U , în cazul triangularizării simple;
• P ⋅ A = L' ⋅ U , în cazul triangularizării cu pivotare parţială;
• P ⋅ A ⋅ S = L' ⋅ U , în cazul triangularizării cu pivotare totală.
Plecând de la matricea A, căreia i se aplică o procedură de triangularizare, se
obţin matricele L ( L' ), U, P, (S). Dacă se efectuează operaţia inversă, se
obţine:
~
• L ⋅ U = A , corespunzător triangularizării simple;
~
• P −1 ⋅ L' ⋅ U = A , corespunzător triangularizării cu pivotare parţială;
~
• P −1 ⋅ L' ⋅ U ⋅ S −1 = A , corespunzător triangularizării cu pivotare totală,
~ ~
unde A este matricea iniţială plus o matrice de eroare: A = A + E c .
În continuare, discuţia se referă la descompunerea cu pivotare parţială şi la
cea cu pivotare totală, deoarece procedurile corespunzătoare lor se bazează pe
matrice stabilizate, iar algoritmii sunt stabili din punct de vedere numeric.
Având in vedere volumul de calcule implicat (numărul de operaţii în virgulă
mobilă), se poate afirma că dacă ordinul n al sistemului este mic, atunci:
|| E c || α <<|| A || α , iar dacă ordinul n este mare, atunci: || E c || α <|| A || α .
Aşadar, norma matricei de eroare E c se poate apropia de cea a matricei A a
sistemului. Ca urmare, o posibilitate de a caracteriza precizia descompunerii
este de a calcula raportul:
70 2. Sisteme determinate de ecuaţii algebrice liniare

~
|| E c || α / || A || α =|| A − A || α / || A || α = ε A ,c .
De regulă se foloseşte norma 1. În general, se demonstrează că:
ε x ≤ k α ( A ) ⋅ εA , c .
Dacă εA ,c ≅10 −d , d > 0 , atunci se poate afirma că triangularizarea
matricei A se face cu d cifre zecimale exacte. Rezultă că eroarea în soluţia
calculată satisface la relaţia:
εx ≤ k α (A ) ⋅ εA ,c ≤10 p −d =10 −( d −p ) .

O matrice foarte bine condiţionată este caracterizată de p =0 . Dacă


matricea este bine condiţionată, atunci p =1 ÷2 , iar dacă ea este prost
condiţionată, atunci p >2 . Se desprinde următoarea concluzie: dacă matricea
A este prost condiţionată, atunci se pierd p cifre ca precizie în soluţia
calculată.
Dacă, însă, matricea A este diagonal dominantă pe linii sau coloane, atunci
ea este bine condiţionată. Matricea A poate fi adusă la o astfel de formă înainte
de a aplica procedura de descompunere, dacă este posibil, prin permutări
adecvate de linii şi/sau coloane.
II.2 Erorile afectează procedura de rezolvare prpriu-zisă a sistemului (fazele
de substituţie înainte şi înapoi).
În acest caz, reziduul asociat soluţiei calculate ~
x este: r = b − A ⋅ ~
x.
Se demonstrează că, în această situaţie, eroarea relativă în soluţia calculată
satisface la relaţia:
ε x ≤ k α (A) ⋅ (|| r || α / || b || α ) .

În concluzie, un reziduu mic în normă faţă de norma termenului liber nu


garantează o precizie bună a soluţiei calculate, dacă matricea sistemului este
prost condiţionată.
Exemplul 2.8:
Fie sistemul A ⋅ x = b cu:
1 1.001  2.001 
A = , b = .
1 1    2 
Soluţia exactă a acestui sistem este x =[1 1] T .
În urma calculelor rezultă: ~ x =[ 2 0] T ≠ x , r = b − A ⋅ x =[0.001 0] T .
Aceasta se datorează faptului că:
k 1 (A ) ≥ (|| x − ~
x ||1 / || x ||1 ) /(|| r ||1 / || b ||1 ) ≈ 10 3 ,

deci matricea A este prost condiţionată.


2.3 Rezolvarea sistemelor prin triangularizare cu pivotare parţială
71

O concluzie generală care se poate desprinde este următoarea: buna


condiţionare a problemei de calcul ( k α (A ) = 1 ÷ 10 ÷ 100 ), împreună cu
stabilitatea numerică a algoritmului de triangularizare ( || E c || α <<|| A || α ),
garantează faptul că eroarea relativă a soluţiei calculate faţă de soluţia exactă
este de acelaşi ordin de mărime cu erorile relative în datele iniţiale ale
problemei (matricea A şi termenul liber b ).
O procedură folosită pentru estimarea numărului de cifre exacte ale soluţiei
calculate este următoarea:
• triangularizarea matricei A;
~
• determinarea soluţiei x folosind rezultatele triangularizării matricei A:
~
• calculul reziduului asociat r = b − A ⋅ x ;
• rezolvarea sistemului A ⋅ e = r , folosind rezultatele procedurii de
triangularizare;
• dacă || e ||1 ≠ 0 , atunci || e ||1 / || ~
x ||1 ≅ 10 −d .
Numărul de cifre exacte ale soluţiei calculate este:
d ≅ [− lg(|| e || / || ~
1 1 x || )] ,

unde lg(.) semnifică funcţia logaritm zecimal, iar [.] semnifică funcţia parte
întreagă.
O procedură de îmbunătăţire (rafinare) a soluţiei calculate este următoarea:
1. rezolvare sistem A ⋅ x = b folosind descompunerea L-U a matricei A şi
determinarea soluţiei ~ x;
2. calcul reziduu asociat: r = b − A ⋅ ~ x;
3. rezolvare sistem A ⋅ e = r folosind rezultatele descompunerii L-U a
matricei A şi determinarea lui e ;
~
4. rafinarea soluţiei: ~ x =~ x +e ;
~ ~
~ ~ ~
5. dacă || x || 1 ≠|| x || 1 atunci ~
x =~
x şi reluare de la pasul 2, altfel x = x .

6. stop
Îmbunătăţirea soluţiei se face într-un număr maxim de iteraţii notat ITMAX.
Dacă după ITMAX iteraţii, testul de la pasul 5 continuă să fie satisfăcut (şi se
reia de la pasul 2), acesta este un semn că matricea A este prost condiţionată
deoarece:
|| e ||1 / || ~
x ||1 ≤ k 1 (A ) ⋅ (|| r ||1 / || b ||1 ) .

Astfel, dacă numărul de condiţie k 1 ( A) este mare, atunci şi raportul


|| e ||1 / || ~
x ||1 este mare şi, ca urmare, valoarea || e || 1 nu se va micşora dacă
matricea A este prost condiţionată.
72 2. Sisteme determinate de ecuaţii algebrice liniare

2.8 Exerciţii propuse

E2.1 Să se realizeze, în mediul de programare MATLAB, un program pentru


rezolvarea unui sistem de n ecuaţii liniare cu n necunoscute, prin metoda
directă folosind triangularizarea matricei sistemului cu pivotare totală.
Programul va compara soluţia găsită cu cea furnizată de mediul
MATLAB.
În realizarea programului, se vor parcurge următoarele etape descrise
parţial în limbajul pseudocod.
1. Introducere parametru de control al execuţiei procedurii de
triangularizare, în variabila EPS.
2. Introducere ordin sistem, în variabila n, n ≥ 2 .
3. Alocare spaţiu de memorie pentru matricea sistemului, în variabila
a, prin iniţializarea acesteia cu o matrice nulă de dimensiune n.
Introducerea elementelor matricei sistemului se face pe linii (a se
vedea observaţia 2 care urmează). Salvarea valorilor introduse
pentru matricea a, în matricea de lucru aa:
atribuie aa ←a
Reluare introducere, în caz de eroare.
4. Alocare spaţiu de memorie pentru termenul liber al sistemului, în
variabila b, prin iniţializarea acesteia cu un vector coloană nul, cu n
componente. Introducerea elementelor termenului liber se
realizează pe linii. Salvarea valorilor din vectorul b, în vectorul de
lucru bb:
atribuie bb ←b
Reluare introducere, în caz de eroare.
5. Faza I-a: eliminare înainte cu pivotare totală:
pentru i = 1,n execută
 atribuie iord(i) ← i

* pivotare totală:
pentru k = 1,n-1 execută
 atribuie [mc,imc] ← max ( abs ( a(k:n,k:n) ) )
 atribuie [ml,jk] ← max ( mc )
2.3 Rezolvarea sistemelor prin triangularizare cu pivotare parţială
73

 atribuie ik ← imc ( jk )
 atribuie ik ← ik + (k-1)
 atribuie jk ← jk + (k-1)
 dacă ( ik ~= k ) atunci
  atribuie wmx ← zeros (1,n)
  atribuie wmx ← a(k,:)
  atribuie a(k,:) ← a(ik,:)
  atribuie a(ik,:) ← wmx
  atribuie t ← b(k)
  atribuie b(k) ← b(ik)
  atribuie b(ik) ← t
 
 dacă ( jk ~= k ) atunci
  atribuie zmx ← zeros (n,1)
  atribuie zmx ← a(:,k)
  atribuie a(:,k) ← a(:,jk)
  atribuie a(:,jk) ← zmx
  atribuie it ← iord(k)
  atribuie iord(k) ← iord(jk)
  atribuie iord(jk) ← it
 
 * triangularizare:
 dacă ( abs ( a(k,k) ) > EPS ) atunci
  atribuie a(k+1:n,k) ← a(k+1:n,k) / a(k,k)
  atribuie a(k+1:n,k+1:n) ← a(k+1:n,k+1:n) –
  a(k+1:n,k) * a(k,k+1:n)
  atribuie b(k+1:n) ← b(k+1:n) – a(k+1:n,k) * b(k)
  atribuie a(k+1:n,k) ← zeros (n-k,1)
  altfel
  scrie ‘pivot nul sau foarte mic’
  scrie ‘STOP: algoritm’
  * STOP program (funcţia MATLAB return)
 
 scrie ‘k = ’, k
 scrie ‘a = ’, a
 scrie ‘b = ’, b

6. Faza a-II-a: calcul soluţie sistem:
* substituţie înapoi:
74 2. Sisteme determinate de ecuaţii algebrice liniare

pentru k = 1,n execută


 dacă ( abs ( a(i,i) ) < EPS ) atunci
  scrie ‘matrice prost condiţionată’
 

atribuie b(n) ← b(n) / a(n,n)
pentru i = n-1,(pas = -1),1 execută
 atribuie sum ← a(i,i+1:n) * b(i+1:n)
 atribuie b(i) ← ( b(i) – sum ) / a(i,i)

* ordonare soluţie:
atribuie x ← zeros (n,1)
pentru i = 1,n execută
 atribuie x ( iord(i) ) ← b(i)

7. Calcul soluţie folosind funcţiile MATLAB, pentru comparaţie:
atribuie x_bs ← aa \ bb
atribuie x_inv ← inv (aa) * bb
8. Afişare soluţii x, x_bs, x_inv ( mod de afişare MATLAB dat de
funcţia: format long e; ).
9. Calcul reziduuri asociate soluţiilor calculate, precum şi norme
euclideene:
atribuie r ← bb – aa * x
atribuie nr ← norm (r,2)
atribuie r_bs ← bb – aa * x_bs
atribuie nr_bs ← norm (r_bs,2)
atribuie r_inv ← bb – aa * x_inv
atribuie nr_inv ← norm (r_inv,2)
Afişare rezultate n, nr, r_bs, nr_bs, r_inv, nr_inv ( mod de afişare
MATLAB dat de funcţia: format long e; ).
10. Reluare program, dacă se doreşte, cu alt termen liber (punctul 4).
Dacă are loc reluarea, înainte de aceasta se reface matricea a,
utilizând valorile salvate în matricea de lucru aa:
atribuie a ← aa
2.3 Rezolvarea sistemelor prin triangularizare cu pivotare parţială
75

11. Reluare program, dacă se doreşte, cu alt sistem de acelaşi ordin n


(punctul 3).
12. Reluare program, dacă se doreşte, cu un sistem de alt ordin n
(punctul 2).
13. Reluare program, dacă se doreşte, cu alt parametru EPS (punctul 1).
Observaţii:
1.) Descrierea anterioară a programului foloseşte următoarele funcţii
MATLAB: max (determinare valoare maximă dintr-un tablou de
numere), zeros (iniţializare tablou cu elemente nule), abs (calcul
valoare absolută), return (părăsire comandă structurată, de exemplu
ciclu cu contor), \ (împărţire matricială la stânga, rezolvată prin
triangularizarea cu pivotare parţială a matricei deîmpărţit), inv (calcul
inversă matrice pătratică), norm (calcul normă vectorială/matricială).
2.) Se recomandă următoarea modalitate generală de introducere a unei
matrice, pe linii (n linii, m coloane), în variabila a:
* secvenţă de comenzi MATLAB:
a = zeros (n,m);
for i = 1:n,
fprintf ( ‘Linia %.0f : ’, i );
a(i,:) = input ( ‘ ’ );
end;
* exemplu de introducere (n=m=3):
Linia 1:
[1 2 3] <RETURN>
Linia 2:
[4 5 6] <RETURN>
Linia 3:
[7 8 9] <RETURN>
În descrierea anterioară, s-au subliniat mesajele scrise de către program
iar <RETURN> semnifică apăsarea tastei respective.
3.) Programul se va rula pentru următoarele date de intrare, rezulatele
analizându-se şi comparându-se:
EPS = 1.e-10
76 2. Sisteme determinate de ecuaţii algebrice liniare

10 −7 0  7 
I. n = 3; a =− 3 2 . 099 6 ; b = 3.901 
  ;

 5 − 1 5 
 
 6 

 3 2 100  105 
II. n = 3; a =− 1 3 100 ; b = 102 
  ;

 1 2 − 1 
 
 2 

 0.03 0.02 1.00  1.05 

a = − 0.01 0.03 1.00 ; b = 
 
1.02 
 0.50
 1.00 − 0.50   1.00 
 
(acelaşi exemplu, cu scalare pe linii)

1 −2 3 5
 −1 b = 
III. n = 3; a =  2 4 ; 7  ;

−1 −14 11 
 
2
0 2 0 1  7 
2 2 3 2  − 2
IV. n = 4; a =  ; b =  .
4 −3 0 1  − 7 
   
6 1 −6 − 5 6 

E2.2 Să se realizeze, în mediul de programare MATLAB, un program pentru


rezolvarea unui sistem de n ecuaţii liniare cu n necunoscute, prin metoda
iterativă Jacobi. Programul va compara soluţia găsită cu cea furnizată de
mediul MATLAB, aplicând o metodă directă de rezolvare.
În realizarea programului, se vor parcurge următoarele etape descrise
parţial în limbajul pseudocod.
1. Introducere parametru de control al execuţiei procedurii iterative de
rezolvare, în variabila EPS. Introducere număr maxim de iteraţii, în
variabila max_iter.
2. Introducere ordin sistem, în variabila n, n ≥ 2 .
3. Alocare spaţiu de memorie pentru matricea sistemului, în variabila
a, prin iniţializarea acesteia cu o matrice nulă de dimensiune n.
Introducerea elementelor matricei sistemului se face pe linii (a se
vedea observaţia 2 de la exerciţiul E2.1). Testarea elementelor de
pe diagonala matricei a:
pentru k = 1,n execută
 dacă ( abs ( a(i,i) ) < EPS ) atunci
2.3 Rezolvarea sistemelor prin triangularizare cu pivotare parţială
77

  scrie ‘Element pe diagonală nul sau foarte mic’


  scrie ‘Rearanjaţi şi reintroduceţi matricea a’
 

Reluare introducere, în caz de eroare.
4. Alocare spaţiu de memorie pentru termenul liber al sistemului, în
variabila b, prin iniţializarea acesteia cu un vector coloană nul, cu n
componente. Introducerea elementelor termenului liber se
realizează pe linii. Reluare introducere, în caz de eroare.
5. Alocare spaţiu de memorie pentru aproximaţia iniţială a soluţiei, în
variabila xn, prin iniţializarea acesteia cu un vector coloană nul, cu
n componente. Introducerea elementelor vectorului xn se realizează
pe linii. Reluare introducere, în caz de eroare.
6. Studiu de convergenţă:
atribuie nn ← diag ( diag (a) )
atribuie p ← nn - a
atribuie g ← inv (nn) * p
atribuie valp ← eig (g)
atribuie ro ← max ( abs (valp) )
scrie ‘=> rază spectrală matrice convergenţă, ro = ’, ro
dacă ( ro < 1 ) atunci
 scrie ‘metoda converge’
 altfel
 scrie ‘metoda NU converge!’

7. Calcul soluţie iterativă:
atribuie vninf ← 1
atribuie iter ← 0
* comutare mod de afişare (limbaj MATLAB): format long e;
cât timp ( (vninf > EPS) şi (iter < max_iter) ) execută
 atribuie iter ← iter + 1
 atribuie xv ← zeros (n,1)
 atribuie xv ← xn
 * adaptare soluţie metoda Jacobi:
 pentru i = 1,n execută
  atribuie sum ← 0
  pentru j = 1,i-1 execută
78 2. Sisteme determinate de ecuaţii algebrice liniare

   atribuie sum ← sum + a(i,j) * xv(j)


  
  pentru j = i+1,n execută
   atribuie sum ← sum + a(i,j) * xv(j)
  
  atribuie xn(i) ← ( b(i) - sum ) / a(i,i)
 
 * sfârşit adaptare soluţie metoda Jacobi
 atribuie vninf ← max ( abs (xn - xv) )
 scrie ‘* iter = ’, iter
 scrie ‘xn = ’, xn
 scrie ‘vninf = ’, vninf

8. Calcul soluţie folosind o metodă directă, în mediul MATLAB:
atribuie x ← a\b
9. Afişare rezultate: iter, xn, x. Comutare mod de afişare (limbaj
MATLAB): format short;
10. Reluare program, dacă se doreşte, cu altă estimaţie iniţială a
soluţiei (punctul 5).
11. Reluare program, dacă se doreşte, cu alt termen liber al sistemului
(punctul 4).
12. Reluare program, dacă se doreşte, cu alt sistem de acelaşi ordin
(punctul 3).
13. Reluare program, dacă se doreşte, cu alt sistem de alt ordin n
(punctul 2).
14. Reluare program, dacă se doreşte, cu alţi parametri EPS şi max_iter
(punctul 1).
Observaţii:
1.) Descrierea anterioară a programului foloseşte următoarele funcţii
MATLAB: abs (calcul valoare absolută), diag (producerea unei
matrice diagonale; extragerea diagonalei principale a unei matrice),
inv (calcul inversă matrice pătratică), eig (calcul valori proprii ale
unei matrice), max (determinare valoare maximă dintr-un tablou de
numere), zeros (iniţializare tablou cu elemente nule), \ (împărţire
2.3 Rezolvarea sistemelor prin triangularizare cu pivotare parţială
79

matricială la stânga, rezolvată prin triangularizarea cu pivotare


parţială a matricei deîmpărţit).
2.) Operatorul logic şi este implementat în limbajul MATLAB prin
simbolul: &
3.) Programul se va rula pentru următoarele date de intrare, rezulatele
analizându-se şi comparându-se:
EPS = 1.e-10; max_iter = 30
5 −1 0 9  0
a = −1 5 −1 b =  xn =  
I. n = 3;  ;  4 ; 0 ;

0 −1 5 
− 6
 
0
 
2
xn =  
 2 ;

−1 
8 −1 1 8  0
 9 b =  12  ; xn = 
  
II. n = 3; a = 2 1 ; 0 ;
1
 −7 2
 − 4
  0
 
8 −1 1  8  0
a =
2 9 1 
; b =  12  ; xn = 
  
0 .

1 2 − 7
 
− 4 
0

E2.3 Să se realizeze, în mediul de programare MATLAB, un program pentru


rezolvarea unui sistem de n ecuaţii liniare cu n necunoscute, prin metoda
iterativă Gauss-Seidel. Programul va compara soluţia găsită cu cea
furnizată de mediul MATLAB, aplicând o metodă directă de rezolvare.
În realizarea programului, se vor parcurge exact aceleaşi etape descrise în
cadrul exerciţiului E2.2. Deosebirile constau în modul de calcul al
matricelor nn şi p, care definesc matricea de conveegenţă g (punctul 6),
precum şi în modalitatea de adaptare a soluţiei iterative (punctul 7) de la
exerciţiul E2.2.
Matricele nn şi p se calculează cu comenzile:
atribuie nn ← tril (a)
atribuie p ← nn - a
Porţiunea din descrierea în limbaj pseudocod (punctul 7) de la exrciţiul
E2.2:
 * adaptare soluţie metoda Jacobi:
 ....................................................................
80 2. Sisteme determinate de ecuaţii algebrice liniare

 * sfârşit adaptare soluţie metoda Jacobi


se înlocuieşte cu următoarea secvenţă de comenzi:
 * adaptare soluţie metoda Gauss-Seidel:
 pentru i = 1,n execută
  atribuie sum ← 0
  pentru j = 1,i-1 execută
   atribuie sum ← sum + a(i,j) * xn(j)
  
  pentru j = i+1,n execută
   atribuie sum ← sum + a(i,j) * xv(j)
  
  atribuie xn(i) ← ( b(i) - sum ) / a(i,i)
 
 * sfârşit adaptare soluţie metoda Gauss-Seidel
Observaţii:
1.) Descrierea anterioară a programului foloseşte aceleaşi funcţii
MATLAB ca la exerciţiul E2.2. Singura deosebire este reprezentată
de înlocuirea funcţiei diag cu funcţia tril (extragerea parţii inferior
triunghiulare a unei matrice, inclusiv diagonala, restul de elemente
fiind completate cu zerouri).
2.) Programul se va rula pentru datele de intrare menţionate la exerciţiul
E2.2, rezulatele analizându-se şi comparându-se cele două metode
iterative, Jacobi şi Gauss-Seidel.

2.9 Probleme propuse


P2.1. Se consideră sistemul de ecuaţii algebrice liniare:
 1 − 2 3   x1   5 
2 4 − 1 ⋅  x 2  =  7  , α ∈ ℜ .

 − 1 − 14 11   x 3  α 

Folosind transformări elementare directe (fără pivotare), să se determine


pentru ce valoare a parametrului α sistemul
(a) nu are soluţii?
(b) are o infinitate de soluţii?
2.3 Rezolvarea sistemelor prin triangularizare cu pivotare parţială
81

P2.2. Să se realizeze programul pentru rezolvarea unui sistem de ecuaţii


algebrice liniare:
A ⋅ X = B, A ∈ℜn×n , B ∈ℜn×p ,

prin metoda directă bazată pe triangularizarea cu pivotare parţială a


matricei sistemului.
Exemple numerice:
4 0 −1 3   0 0 7 
2 1 −2 0  1 0 −1
I. A =  , B = ;
0 3 2 − 2  4 −2 4 
   
1 1 0 5  − 2 4 − 2

1 2 5 3 1 −1
2 2 6 4 2 − 2
II. A =  , B = .
3 2 7 5 3 − 3
   
4 2 8 6 4 − 4

P2.3. Să se realizeze programul pentru inversarea unei matrice pătratice reală,


de ordinul n, prin metoda directă bazată pe triangularizarea cu pivotare
parţială a matricei. Programul va verifica relaţia: A ⋅ A −1 = I n , unde
A −1 este inversa calculată, iar I n este matricea unitate de ordinul n.
Exemple numerice:
4 0 −1 3  1 2 5 3
2 1 −2 0  2 2 6 4
I. A = ; II. A = 
0 3 2 − 2 3 2 7 5
   
1 1 0 5  4 2 8 6
.
P2.4. Să se realizeze programul pentru inversarea unei matrice pătratice reală,
de ordinul n, inferior triunghiulară, exploatând structura particulară a
acesteia. Se va verifica rezultatul obţinut efectând produsele:
A ⋅ A −1 , A −1 ⋅ A .

Exemple numerice:
6 0 0 6 0 0 
I. A =
2 1 0
; II. A =
1 0 0 
.

1 −7 1
 
2 1 − 8

82 2. Sisteme determinate de ecuaţii algebrice liniare

P2.5. Să se realizeze programul pentru calculul determinantului unei matrice


pătratice reală, de ordin n, prin metoda directă bazată pe triangularizarea
cu pivotare totală a matricei.

Exemple numerice:

1 2 3 4
2 2 2 2
I. A =  ; II.
5 6 7 8 
 
3 4 5 6 
1 4 − 2 3 
2 2 0 4 
A = .
3 0 −1 2 
 
1 2 2 − 3

P2.6. Să se realizeze programul pentru rezolvarea, în corpul numerelor


complexe, a sistemului de ecuaţii:
A ⋅ z = b, A ∈C n ×n , b ∈C n×1 ,

prin transformarea acestuia într-un sistem de ecuaţii echivalent:


C ⋅ x = d, C ∈ℜm×m , d ∈ℜm×1 , m =2 ⋅ n .

Sistemul transformat se rezolvă utilizând programul realizat pentru


rezolvarea problemei 2.9.
Exemple numerice:
1 + i 2i   2i 
I. A = , b = , i 2 = −1 ;
 2 1 − i  4 − 2i 
3 − 2i − 2 − 3i   4 + 6i 
II. A = , b = , i 2 = −1 .
 2 +i 1 − 2i  − 2 + 4i 
P2.7. Să se realizeze programul pentru aducerea unei matrice
m×n
A ∈ℜ , m > n , la forma superior triunghiulară prin eliminare
gaussiană cu pivotare parţială (de linii).
Exemple numerice:
2.3 Rezolvarea sistemelor prin triangularizare cu pivotare parţială
83

1 6  1 6 11 
2 7  2 7 12 
   
I. A = 3 8  ; II. A = 3 8 13  .
   
4 9  4 9 14 

5 10 
 
5 10 15 

P2.8. Să se realizeze programul pentru estimarea numărului de condiţie al unei
matrice pătratice reală, de ordin n, folosind relaţia de calcul:
k 1 (A) =|| A ||1 ⋅ || A −1 ||1 .

Inversa matricei A se calculează folosind programul realizat pentru


rezolvarea problemei 2.9. Norma 1 a matricelor implicate se va calcula
conform definiţiei (Anexa A), prin program.
Exemple numerice:

1 2 3 1   1 1 / 2 1 / 3 1 / 4
 4 2 0 2  1 / 2 1 / 3 1 / 4 1 / 5 
I. A =  ; II. A = 
− 2 0 −1 2  1 / 3 1 / 4 1 / 5 1 / 6 
   
 3 4 2 − 3 1 / 4 1 / 5 1 / 6 1 / 7 
.
P2.9. Se consideră sistemul de ecuaţii algebrice liniare:
4 3 2
A ⋅ x = b, A = 2 3 4, a ∈ℜ .
2 4 a 

Care este cea mai mică valoare a parametrului a pentru care metoda
iterativă Jacobi va fi convergentă?
P2.10. Să se realizeze programul pentru rezolvarea unui sistem determinat de
ecuaţii algebrice liniare, de ordinul n, prin metoda iterativă a
suprarelaxării succesive de tip Gauss-Seidel. Considerând ω drept
parametru de accelerare a convergenţei metodei iterative, ω∈[1,2] ,
programul va determina, crescând succesiv parametrul ω cu pasul 0.1
, valoarea optimă ωoptim pentru care numărul de iteraţii este minim.
Exemplu numeric:
84 2. Sisteme determinate de ecuaţii algebrice liniare

2 1 1 5
A =
2 2 1
, b = 
9 .

1 1 3
 
6

S-ar putea să vă placă și