www.agora.ro

Algoritmi numerici...

LU-factorizare

Mihai Scorțaru

Prin LU-factorizare se înțelege scrierea unei matrice ca produs între două matrice dintre care una este inferior-triunghiulară (toate elementele de deasupra diagonalei principale au valoarea 0), iar cealaltă este superior-triunghiulară (toate elementele de sub diagonala principală au valoarea 0).

Termenul de LU-factorizare poate fi tradus aproximativ prin factorizare jos-sus. Prima matrice are elemente semnificative doar sub și pe diagonala principală, adică în partea "de jos", iar a doua doar deasupra și pe aceasta, adică în partea "de sus". Prefixul LU provine din limba engleză, fiind prescurtarea pentru low up.

Determinarea LU-factorizării

O metodă pentru determinarea LU-factorizării unei matrice este dată de următorul rezultat matematic:

Teoremă

Fie A o matrice pătratică de dimensiune n și Ak matricele obținute prin tăierea ultimelor n - k linii și coloane ale matricei A. Dacă matricele Ak (k = 1, 2, ..., n - 1) nu sunt singulare (au determinant nenul) atunci există o matrice inferior triunghiulară L care va conține pe diaginala principală doar elemente care au valoarea 1 și o matrice superior-triunghiulară U astfel încât A = LU. Mai mult, această LU-factorizare este unică.

Demonstrație

Vom folosi metoda inducției matematice. Mai întâi vom găsi și astfel încât A2 = L2U2.

Vom avea

deci

u11 = a11 č 0

u12 = a12

l21

u22

Avem deci LU-factorizarea este unică.

Vom presupune acum că matricea Ak-1 are o LU-factorizare astfel încât: Ak-1 = Lk-1Uk-1

Obținem .

Pentru k = n existența și unicitatea LU-factorizării este dovedită.

Remarcă

Determinantul matricei A este egal cu determinantul matricei U:.

Metode de factorizare

Există mai multe metode pentru determinarea LU-factorizării, cele mai cunoscute fiind metoda Doolittle, metoda Crout și metoda Choleski.

Metoda Doolittle

Pentru aplicarea acestei metode trebuie să alegem valoarea 1 pentru elementele de pe diagonala principală a matricei L. ;

și astfel încât A = LU.

Această ecuație duce la obținerea unui sistem de ecuații: .

Acest sistem poate fi rezolvat aranjând ecuațiile într-o anumită ordine după cum se poate vedea în algoritmul descris în continuare:

u11:=a

11

pentru j=2,n

u1j=a1j

lj1=aj1/u11

sfârșit pentru

pentru i=2,n-1

uii=aii-lik·uki

pentru j=i+1,n

uij=aij-lik·ukj

lji=(aij-ljk·uki)/uii

sfârșit pentru

sfârșit pentru

unn=ann-lnk·ukn

Din algoritm reiese clar faptul că fiecare element aij este folosit o singură dată. Aceasta înseamnă că lij și uij pot fi memorate în locația pe care o ocupa aij. Deci, descompunerea este realizată "pe loc"; elementele de pe diagonala principală a matricei L nu mai sunt memorate deloc, deoarece știm că au toate valoarea 1. În concluzie, algoritmul poate fi scris și astfel:

pentru j=2,n

a1j=a1j

aj1=aj1/a11

sfârșit pentru

pentru i=2,n-1

aii=aii-aik·aki

pentru j=i+1,n

aij=aij-aik·akj

aji=(aij-ajk·aki)/aii

sfârșit pentru

sfârșit pentru

ann=ann-ank·akn

Metoda Crout

Singura diferență între metoda Crout și metoda Doolittle este aceea că, în cazul metodei Crout, vom alege valoarea 1 pentru elementele de pe diagonala principală a matricei superior-triunghiulare, algoritmul de determinare a LU-factorizării fiind foarte asemănător cu cel folosit pentru metoda Doolittle.

Metoda Choleski

Dacă o matrice A este simetrică și pozitiv definită atunci ea are o descompunere specială putând fi scrisă ca un produs dintre o matrice inferior triunghiulară și transpusa acesteia. Matricea inferior triunghiulară nu poate avea pe diagonala principală elemente care să aibă valoarea 0. Uneori această factorizare poartă denumirea de extragere a rădăcinii pătrate a unei matrice.

Scriind ecuația A = L · Lt se obține:

1 Ł i Ł n, i + 1 Ł j Ł n.

Algoritmul care realizează această descompunere este descris în continuare:

pentru i=1,n

temp:=aii-

dacă temp>0

atunci lii=temp1/2

altfel

scrie "Matricea nu este pozitiv

definită! (cu erori de rotunjire)"

stop

sfârșit dacă

pentru j=i+1,n

sfârșit pentru

sfârșit pentru

Aplicație

Cea mai importantă aplicație a LU-factorizării este rezolvarea sistemelor liniare de n ecuații cu n necunoscute. Să considerăm sistemul de ecuații A·X = B. Dacă scriem A = L·U, avem L·U·X = B. Vom rezolva sistemul L·Y = B, pentru Y = U·X, iar apoi vom rezolva sistemul U·X = Y.

Complexitate

Determinarea unui element al matricelor L sau U necesită calcularea unei sume care poate avea între 1 și n elemente, deci este nevoie de un timp O(n) pentru determinarea ei. Datorită faptului că avem n2 elemente, complexitatea algoritmului de determinare a LU-factorizării are ordinul de complexitate O(n3).

Mihai Scorțaru este student în anul III la Universitatea Tehnică din Cluj-Napoca. Poate fi contactat prin e-mail la adresa skortzy@email.ro.

[cuprins]