Crout-decompositie

Uit testwiki
Naar navigatie springen Naar zoeken springen

De Crout-decompositie is een algoritme voor de LU-decompositie van een vierkante niet-singuliere matrix in een benedendriehoeksmatrix L en een bovendriehoeksmatrix U. In de matrix U zijn de elementen op de hoofddiagonaal gelijk aan 1.

De methode is genoemd naar Prescott Durand Crout, een wiskundige aan het Massachusetts Institute of Technology die de methode in 1941 heeft beschreven.[1]

Beschrijving

Via Gauss-eliminatie

Zij A een n×n-matrix met elementen ai,j. De Crout-decompositie is formeel gezien een Gauss-eliminatie. Het algoritme begint dan met als L de n×n-eenheidsmatrix en U gelijk aan A. In n1 stappen wordt U herleid tot een bovendriehoeksmatrix en L tot een benedendriehoeksmatrix, zodanig dat het matrixproduct LU steeds gelijk blijft aan A.

In de k-de stap worden het elementen op de hoofddiagonaal in de k-de kolom van U op een gebracht en de elementen eronder op nul. Dit gebeurt door rij k te delen door het pivot-element uk,k. Deze waarde kopiëren we in de corresponderende positie in matrix L. Daarna vermenigvuldigen we de k-de rij met uj,k en trekken ze dan af van rij j, wat een nieuwe rij j geeft met nul in de k-de kolom (j>k). De factoren uj,k kopiëren we eveneens in de corresponderende kolom van L.

Indien U een element uk,k op de hoofddiagonaal heeft dat nul is, gaat dit natuurlijk niet op. In dat geval moet de rij k verwisseld worden met een onderliggende rij j waarin uj,k niet nul is. De verwisseling gebeurt ook in L. De verwisselingen kunnen bijgehouden worden in een permutatiematrix P. In het begin is P de eenheidsmatrix. Wanneer twee rijen in U en L verwisseld worden, worden dezelfde rijen in P verwisseld. De decompositie is dan niet langer A=LU maar A=PLU.

Rechtstreekse berekening

Indien men rekening houdt met de specifieke structuur van L en U, kan men de coëfficiënten ervan een voor een berekenen. Immers als men het matrixproduct A=LU uitschrijft, verkrijgt men een stelsel van n×n lineaire vergelijkingen in de n×n onbekende coëfficiënten van L en U. Deze vergelijkingen kan men zo rangschikken dat elke volgende vergelijking een nieuwe coëfficiënt geeft; bijvoorbeeld:

a1,1=l1,1,a2,1=l2,1 enz. (dit is de eerste kolom van L)
a1,2=l1,1u1,2 of u1,2=a1,2a1,1
a1,3=l1,1u1,3 of u1,3=a1,3a1,1 enz. Dit maakt de eerste rij van U volledig.
a2,2=l2,1u1,2+l2,2 of l2,2=a2,2l2,1u1,2
a3,2=l3,1u1,2+l3,2 of l3,2=a3,2l3,1u1,2 enz. (dit vervolledigt de tweede kolom van L)

Op deze manier kan men afwisselend een kolom van L en een rij van U rechtstreeks berekenen. Dit is de "compacte" vorm van de Crout-decompositie.

Voorbeeld

Gegeven is de matrix:

A=(37223510640595512)

Neem als matrix L de eenheidsmatrix en U gelijk aan A.

LU=(1000010000100001)(37223510640595512)

Eerste stap

Deel de eerste rij van U door 3, en vermenigvuldig de eerste rij achtereenvolgens met −3, 6, 9 en trek ze af van de tweede, derde en vierde rij zodat de elementen onder de diagonaal in de eerste kolom van U nul worden. De getallen 3, −3, 6 en 9 kopiëren we naar de eerste kolom van L, die dus een kopie wordt van de eerste kolom van U. Dit geeft als tussenstand:

LU=(3000310060109001)(17/32/32/30212010490161118)

Men kan nagaan dat het product van deze twee matrices de oorspronkelijk matrix A is.

Tweede stap

Om het element op de hoofddiagonaal in de tweede kolom van U op een te krijgen, moet de tweede rij van U gedeeld worden door −2. Om de rest van de tweede kolom van U op nul te krijgen, moet de tweede rij van U achtereenvolgens vermenigvuldig worden met 10 en −16, en afgetrokken van de derde, respectievelijk de vierde rij. De waarden −2, 10 en −16 gaan naar de tweede kolom van L:, die is dus een kopie van de tweede kolom van U vanaf de tweede rij. Dit geeft:

LU=(300032006101091601)(17/32/32/3011/2100110032)

Derde stap

In de derde stap wordt de derde rij van U gedeeld door −1, waarna de derde rij vermenigvuldig wordt met −3 en afgetrokken van de vierde rij. De factoren −1 en −3 gaan naar de derde kolom van L:

LU=(300032006101091631)(17/32/32/3011/2100110001)

Vierde stap

In de vierde en laatste stap moet alleen nog het element in de linker benedenhoek van U op een gebracht worden, door het te delen door −1, en die waarde te kopiëren naar L. Dit geeft als eindresultaat:

LU=(300032006101091631)(17/32/32/3011/2100110001)

Daarmee is de decompositie van A in LU beëindigd. In dit geval was er geen verwisseling van rijen nodig.

Opmerkingen

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

  1. Vorm de matrices L en U: LUx=B. We noemen y het (voorlopig onbekende) product Ux.
  2. Los Ly=B op door voorwaartse substitutie.
  3. Los Ux=y op door achterwaartse substitutie.

Als bijvoorbeeld B=(3620234)T, vinden we achtereenvolgens:

  • 3y1=36 of y1=12
  • 3y12y2=20 waaruit y2=8
  • 6y1+10y2y3=2 waaruit y3=6
  • 9y116y23y3y4=34 waaruit y4=4

en:

  • x4=y4=4
  • x3x4=y3=6 waaruit x3=2
  • x2+x32x4=y2=8 waaruit x2=3
  • x17x232x33+2x43=y1=12 waaruit x1=1

Indien deze methode in een computerprogramma wordt geïmplementeerd, is het niet nodig om twee afzonderlijke matrices voor L en U te gebruiken. Ze kunnen compact in een enkele matrix bewaard worden (daarvoor kan zelfs de matrix A dienen als deze mag overschreden worden). Het is immers niet nodig om de elementen op de hoofddiagonaal van U te bewaren, die per definitie gelijk zijn aan 1. De rij-permutaties kunnen bijgehouden worden in een permutatievector van n elementen 1 tot en met n; als twee rijen verwisseld worden worden de corresponderende elementen in de permutatievector verwisseld.

De Crout-decompositie gelijkt sterk op de Doolittle-decompositie. Dit is ook een LU-decompositie met dit verschil dat in een Doolittle-decompositie de elementen op de hoofddiagonaal van de benedendriehoeksmatrix L gelijk zijn aan 1.

Websites

Sjabloon:Appendix

  1. Sjabloon:Aut "A Short Method for Evaluating Determinants and Solving Systems of Linear Equations With Real or Complex Coefficients " (1941), Transactions of the American Institute of Electrical Engineers, vol. 60 nr. 12, blz. 1235–1240. Sjabloon:Doi