Cholesky-decompositie

Uit testwiki
Naar navigatie springen Naar zoeken springen

De Cholesky-decompositie van een positief-definiete Hermitische matrix, of in het reële geval, een positief-definiete symmetrische matrix, is een LU-decompositie van de vorm:

A=LLT

waarin L een benedendriehoeksmatrix is. LT is de getransponeerde matrix van L. L noemt men de Choleskyfactor van A.

De Cholesky-decompositie is genoemd naar de Franse militaire officier en wiskundige André-Louis Cholesky (1875-1918), die kort voor het einde van de Eerste Wereldoorlog sneuvelde. Het is niet exact bekend wanneer Cholesky zijn methode bedacht. Hij publiceerde ze zelf niet; ze werd wel indirect bekend dankzij een artikel van commandant Benoît in het Bulletin géodesique van 1924, waarin hij het "procédé du commandant Cholesky" beschreef. Later is een manuscript van Cholesky uit 1910 gevonden waarin hij zijn methode gedetailleerd beschrijft, onder de titel "Sur la résolution numérique des Systèmes d'équations linéaires."[1]

Methode

De Cholesky-factor van een n×n-matrix A kan met het volgende algoritme recursief berekend worden in n stappen. Elke stap levert een kolom van L op.

De vergelijking A=LLT wordt uitgeschreven als:

(a1,1A2,1TA2,1A2,2)=(l1,10L2,1L2,2)(l1,1L2,1T0L2,2T)=(l1,12l1,1L2,1Tl1,1L2,1L2,2L2,2T+L2,1L2,1T)

Hieruit wordt de eerste kolom van L bepaald:

l1,1=a1,1 (het element op de diagonaal)
L2,1=A2,1l1,1 (dit is de rest van de kolom).

Rest nog de onbekende matrix L2,2, die volgt uit de vergelijking:

A2,2L2,1L2,1T=L2,2L2,2T

(L2,1L2,1T is het kruisproduct van de kolomvectorL2,1 en de rijvector L2,1T)

Dit is opnieuw een vergelijking van de vorm A=LLT, maar nu met een matrix die een kolom en een rij minder telt. Het bovenstaande kan nu herhaald worden om de eerste kolom van L2,2 te vinden, wat de tweede kolom van L is, en zo verder tot er een 1x1-matrix overblijft.

De methode van Cholesky is numeriek stabiel. In de Cholesky-decompositie hoeft men geen rijen of kolommen te verwisselen om te voorkomen dat men een pivotgetal nul bekomt. Maar de volgorde waarin de kolommen en rijen worden geëlimineerd, kan wel een grote invloed hebben op de looptijd van het algoritme. Dit is zeker zo als de matrix schaarsbezet is (een ijle matrix met veel nullen). Om de symmetrie te behouden moet men in de Cholesky-methode steeds rijen samen met de corresponderende kolommen verwisselen. Hiervoor houdt men een permutatiematrix P bij, zodat de decompositie wordt uitgedrukt als:

PAPT=LLT

Door een zorgvuldige keuze van de eliminatievolgorde kan men een Cholesky-factor L bekomen die zeer schaarsbezet is en snel berekend kan worden (zie verder bij Grafentheoretische interpretatie).

Voorbeeld

We zoeken de decompositie van de matrix

A=(41216123743164398)

Eerste stap

(41216123743164398)=(l1,100l2,1l2,20l3,1l3,2l3,3)(l1,1l2,1l3,10l2,2l3,200l3,3)

De eerste kolom van L wordt:

l1,1=4=2
l2,1=12/2=6
l3,1=16/2=8

De 2x2-matrix voor de volgende stap is

(37434398)(68)(68)=(15534)

Tweede stap

De tweede stap gaat op dezelfde manier als de eerste stap:

l2,2=1=1
l3,2=5

Blijft over de matrixvergelijking met 1×1-matrices:

(34)=(5l3,3)(5l3,3)=(25+l3,32)

Derde en laatste stap

Uit de vorige vergelijking volgt eenvoudigweg dat

l3,3=9=3

De Cholesky-decompositie van A is dus

A=(200610853)(268015003)

Symmetrische vorm

De symmetrische vorm van de Cholesky-decompositie is:

A=L1DL1T

Hierin is L1 een benedendriehoeksmatrix met 1 op de hoofddiagonaal, en D is een diagonaalmatrix.

Uit

LLT=L1DL1T

volgt

L=L1D1/2.

De elementen in D zijn de kwadraten van de elementen op de hoofddiagonaal van L. De kolommen van L1 zijn gelijk aan de kolommen van L gedeeld door de elementen op de hoofddiagonaal van L.

In het bovenstaande voorbeeld wordt dit

L=(200610853)=(100310451)(200010003)

Dus

A=(100310451)(400010009)(134015001)

Oplossen van een stelsel vergelijkingen

Om een stelsel van lineaire vergelijkingen Ax=B op te lossen via Cholesky-decompositie gaat men als volgt te werk:

  1. Bereken de matrix L en los LLTx=B op in twee stappen:
  2. los eerst Lz=B op met voorwaartse substitutie;
  3. los dan LTx=z op met achterwaartse substitutie.

Inverse matrix

De diagonaalelementen van de driehoeksmatrix L zijn verschillend van nul. Dat betekent dat L inverteerbaar is. De determinant ervan is gelijk aan het product van de elementen op de hoofddiagonaal.

De inverse matrix van A=LLT wordt dan gegeven door:

(LLT)1=(LT)1L1

De inverse matrix van een benedendriehoeksmatrix is ook een benedendriehoeksmatrix en kan snel, element per element, berekend worden met een recursieformule.

Interpretatie met grafen

Elke symmetrische vierkante n×n-matrix A kan beschouwd worden als de bogenmatrix van een graaf G met n knopen: er is een zijde tussen de knopen i en j als het matrixelement aij verschilt van nul.

Merk op: de elementen op de diagonaal van A komen overeen met een lus in elke knoop; deze worden verder niet meer beschouwd (ze zijn toch steeds verschillend van nul).

De buren van knoop i zijn de knopen die door een zijde verbonden zijn met i.

De Cholesky-decompositie kan men nu beschrijven als een opeenvolging van eliminaties van een knoop uit G zodat een reeks eliminatiegrafen ontstaat met telkens een knoop minder:

G=G0,G1,G2,,Gn1

De i-de stap in de decompositie correspondeert met de afleiding van Gi uit Gi1 door verwijdering van de knoop i en van de zijden die in die knoop samenkomen. Indien nodig moeten nieuwe zijden worden toegevoegd, zodat de buren van knoop i paarsgewijs verbonden zijn. Deze nieuwe zijden noemt men "opvulling" (fill-in).

De nul/niet-nul-structuur van de Choleskyfactor L kan men uit de opeenvolgende eliminatiegrafen afleiden: de elementen in de i-de kolom van L die verschillen van nul, staan op de rijen met de nummers van de buren van knoop i in de graaf Gi1. Het element op de diagonaal komt daar nog bij.

Men wenst de hoeveelheid opvulling zo laag mogelijk te houden en het aantal nulelementen in L zo hoog mogelijk. Dat vermindert het latere rekenwerk en dit is vooral belangrijk voor zeer grote maar schaarsbezette ijle matrices, die bijvoorbeeld in de eindige-elementenmethode voorkomen. Men kan dit beïnvloeden door de rijen en kolommen in de matrix A geschikt te rangschikken vooraleer de Cholesky-decompositie te maken, zoals het volgende voorbeeld duidelijk maakt:

Voorbeeld

Alternatief 1

Stel de matrix A heeft de volgende nul/niet-nul-structuur

A=( *0**00 0*00** *0*0*0 *00*00 0**0*0 0*000*)

De corresponderende graaf is:

Sjabloon:Clearleft

In de eerste eliminatiestap verwijderen we knoop 1 en de zijden 1-3 en 1-4:

Sjabloon:Clearleft

Knoop 1 heeft als buren 3 en 4 en omdat deze niet verbonden zijn, moeten we de graaf opvullen met een nieuwe zijde 3-4. Dit geeft de volgende eliminatiegraaf:

Sjabloon:Clearleft

Knoop 2 heeft buren 5 en 6; dit betekent dat in de tweede kolom van de Choleskyfactor L de elementen in rijen 5 en 6 niet nul zijn (naast die op de diagonaal). Knoop 2 en kde zijden 2-6 en 2-5 worden geëlimineerd en er moet een nieuwe zijde 5-6 worden toegevoegd, wat als resultaat oplevert:

Sjabloon:Clearleft

Knoop 3 heeft buren 4 en 5. De eliminatie van knoop 3 vereist opnieuw de opvulling met een zijde 4-5:

Sjabloon:Clearleft

Knoop 4 heeft als enige buur 5; er is geen opvulling nodig. De volgende eliminatiestappen zijn eenvoudig:

Sjabloon:Clearleft

en ten slotte

Sjabloon:Clearleft

De nul/niet-nul-structuur van de Choleskyfactor van A is bijgevolg:

L=( *00000 0*0000 *0*000 *0**00 0****0 0*00**)

Er zijn in totaal 3 "fill-in" zijden toegevoegd en er zijn zeven nul-elementen in L beneden de diagonaal.

Alternatief 2

Neem ter vergelijking volgende matrix met als nul/niet-nul-structuur:

A1=( *0**00 0*000* *0*000 *00**0 000*** 0*00**)

Matrix A1 is afgeleid uit A' door rijen en kolommen 3 te verwisselen met 4, en 2 met 6. De corresponderende graaf is:

Sjabloon:Clearleft

De eerste eliminatiestap is dezelfde als in alternatief 1. We verwijderen knoop 1 en de zijden 1-3 en 1-4:

Sjabloon:Clearleft

Hier moeten we ook een nieuwe zijde 3-4 toevoegen. Dit geeft de volgende eliminatiegraaf:

Sjabloon:Clearleft

Knoop 2 heeft een enkele buur, 6. De eliminatie van knoop 2 vereist dus geen opvulling:

Sjabloon:Clearleft

Hetzelfde geldt voor knoop 3, met als enige buur 4:

Sjabloon:Clearleft

De eliminatie van knopen 4 en 5 verloopt verder analoog als in alternatief 1, zonder dat er opvulling nodig is:

Sjabloon:Clearleft

en ten slotte

Sjabloon:Clearleft

De nul/niet-nul-structuur van de Choleskyfactor van A1 is:

L1=( *00000 0*0000 *0*000 *0**00 000**0 0*00**)

Er is in dit geval slechts 1 "fill-in"-zijde toegevoegd en er zijn negen nul-elementen in L, tegenover zeven in het eerste alternatief.

De grafentheoretische analyse van de Cholesky-decompositie werd voor het eerst gedetailleerd uitgevoerd door Donald J. Rose in zijn doctoraatsthesis aan de Harvard-universiteit uit 1970.[2] Het bepalen van een optimale volgorde van de vergelijkingen om de fill-in te minimaliseren (het minimum-fill-problem) is een NP-volledig probleem[3] waarvoor verschillende algoritmen ontwikkeld zijn.

Men spreekt over een perfecte eliminatie-volgorde wanneer er geen enkele nieuwe kant moet toegevoegd worden in de eliminatie. Een graaf heeft een perfecte eliminatie-volgorde als en slechts als het een chordale graaf is (dit is een getriangulariseerde graaf). In een chordale graaf heeft elke cyclus van lengte 4 of meer een koorde, dit is een kant tussen twee niet-opeenvolgende knopen in de cyclus. Het minimum fill-in problem is equivalent aan het vinden van het minimumaantal kanten dat men aan een graaf moet toevoegen om er een chordale graaf van te maken.

De matrix A uit het bovenstaande voorbeeld en zijn bijhorende graaf konden zonder opvulling en met een perfecte eliminatie-volgorde verwerkt door in plaats van de volgorde 1-2-3-4-5-6, de volgorde 4-1-3-5-2-6 te nemen.

Sjabloon:Appendix

  1. Sjabloon:Aut "La méthode de Cholesky." Revue d'Histoire des Mathématiques (2005), vol. 11 nr. 2, blz. 205-238. Gearchiveerd op 17 maart 2014.
  2. Vermeld in: Sjabloon:Aut "Computer implementation of the finite element method." Report STAN-CS-71-208, Stanford University, Februari 1971.
  3. Sjabloon:Aut "Computing the minimum fill-in is NP-complete." SIAM Journal on Algebraic Discrete Methods (1981), vol. 2 nr. 1, blz. 77-79.