Cholesky-felbontás

Innen: Hungaropédia
Ugrás a navigációhozUgrás a kereséshez

A lineáris algebrában a Cholesky-felbontás a szimmetrikus, pozitív definit mátrixok felbontása alsó trianguláris mátrixok és azok konjugált transzponáltjainak szorzatává. Ezt az eljárást André-Louis Cholesky francia matematikus fedezte fel a valós mátrixokhoz. Az alsó trianguláris mátrix az eredeti pozitív definit mátrix Cholesky-háromszöge. Hogyha ez alkalmazható, akkor a Cholesky-felbontás nagyjából kétszer eredményesebb a lineáris egyenletrendszerek megoldásánál, mint az LU felbontás.

Definíció

Ha A-nak valós elemei vannak, és szimmetrikus (vagy általánosabban hermitikus) és pozitív definit, akkor A felbontható

A=LL*,

ahol L alsó trianguláris mátrix szigorúan pozitív főátlóbeli elemekkel, és L* a konjugált transzponáltja (más nevén adjungáltja, vagy Hermite-transzponáltja) L-nek. Ez a Cholesky-felbontás.

Állítások

A Cholesky-felbontás egyértelmű: adott egy hermitikus, pozitív definit A mátrix, csak egy alsó trianguláris L mátrix létezik, szigorúan pozitív főátlóbeli tagokkal, amivel A=LL*. A fordított eset triviális: ha A felírható, mint LL*, valamely invertálható L (nem feltétlen alsó trianguláris) mátrixra, akkor A hermitikus és pozitív definit. Azt a feltételt, hogy a diagonális szigorúan pozitív legyen, elhagyhatjuk, hogy kiterjesszük a felbontást pozitív definit esetre. Az állításban szerepel: a négyzetes A mátrixnak van Cholesky-felbontása, akkor és csak akkor, ha A hermitikus és pozitív szemidefinit. A Cholesky-felbontás pozitív szemidefinit mátrixokra általában nem egyértelmű. Speciális esetben az A szimmetrikus, pozitív definit mátrix valós elemekkel, feltehetjük, hogy L szintén valós elemekkel rendelkezik.

Alkalmazás

A Cholesky-felbontást főleg az Ax = b alakú lineáris mátrixegyenletek numerikus megoldására használják. Ha az A mátrix szimmetrikus és pozitív definit, akkor Ax = b megoldható. A megoldás menete a következő:

  • Első lépésként Cholesky-felbontással kiszámoljuk A = LLT mátrixegyenletben szereplő L-t,
  • majd megoldjuk Ly = b-t y-ra,
  • végül LTx = y-t x-re.

Lineáris legkisebb négyzetek

A gyakorlatban gyakran fordulnak elő Ax = b alakú rendszerek, ahol A szimmetrikus és pozitív definit. Például a lineáris legkisebb négyzetek problémájában a normál egyenletek ilyen alakúak. A akár egy energiafüggvényből is származhat, így annak fizikai megfontolások miatt pozitívnak kell lennie. Ez gyakran fordul elő parciális differenciálegyenlet-rendszerek megoldásánál.

Monte Carlo-szimuláció

A Cholesky-felbontást gyakran alkalmazzák a Monte Carlo-módszerben arra, hogy egymással korreláló változókat szimuláljanak. Alkalmazva ezt korreláló részvények vektorára, u előállít egy Lu vektort azokkal a kovarianciatulajdonságokkal, amivel a rendszert modellezzük.

Számítása

A Cholesky-algoritmus

A Cholesky-algoritmus lényegében a Gauss-elimináció módosított változata: arra használják, hogy kiszámolják a felbontott L mátrixot. A rekurzív algoritmus i:=1-gyel indul és

A(1):=A.

Az i-edik lépésnél a A(i) mátrix a következő:

A(i)=(Ii1000ai,ibi*0biB(i)), ,

ahol Ii‒1 az i ‒ 1 dimenziójú egységmátrixot jelöli. Ha most meghatározzuk az Li mátrixot

Li:=(Ii1000ai,i001ai,ibiIni),

akkor felírhatjuk A(i) mátrixot, mint

A(i)=LiA(i+1)Li*

ahol

A(i+1)=(Ii10001000B(i)1ai,ibibi*).

Megjegyezzük, hogy bi bi* egy külső szorzat, ezért ezt az algoritmust külső szorzatos változatnak nevezik (Golub & Van Loan). Ezt ismételjük i-re 1-től n-ig. Az n-edik lépés után A(n+1) = I eredményt kapjuk. Ezért az alsó trianguláris L mátrixra adódik:

L:=L1L2Ln.

A Cholesky–Banachiewicz- és a Cholesky–Crout-algoritmus

Ha kiírjuk az A = LL* mátrix-szorzást részleteiben, akkor:

A=LLT=(L1100L21L220L31L32L33)(L11L21L310L22L3200L33)=(L112(szimmetrikus)L21L11L212+L222L31L11L31L21+L32L22L312+L322+L332)

Tehát a következő képleteket nyerjük a mátrix elemeire:

Li,j=1Lj,j(Ai,jk=1j1Li,kLj,k),ahol i>j.
Li,i=Ai,ik=1i1Li,k2.

A négyzetgyök alatti kifejezés mindig pozitív, ha A elemei a valós számok közül kerülnek ki és pozitív definit. A komplex hermitikus mátrixokra a következők érvényesek:

Li,j=1Lj,j(Ai,jk=1j1Li,kLj,k*),ahol i>j.
Li,i=Ai,ik=1i1Li,kLi,k*.

Tehát ki tudjuk számítani az i-edik oszlop j-edik elemét, ha tudjuk a tőle balra és fölötte elhelyezkedő értékét. A számításra két különböző sorrendet szoktak követni.

  • A Cholesky–Banachiewicz-algoritmus a bal felső sarokban kezdi a felbontást, és soronként halad.
  • A Cholesky–Crout-algoritmus szintén a bal felső sarokban kezdődik, viszont oszloponként halad.

A számítás stabilitása

A Cholesky-felbontás alkalmas lineáris egyenletrendszerek megoldására. Az LU felbontás numerikusan instabil módszer, hacsak nem pivot elemekkel *főelem-kiválasztással?* hajtjuk végre azt. A fellépő hibák a felbontandó mátrix ún. növekedési faktorától függenek, ami az esetek többségében alacsony értéket vesz fel. Ezzel szemben, ha a Cholesky-felbontással dolgozunk, kétszer olyan gyorsan haladhatunk, főleg, hogy nincs szükség pivot elemek kijelölésére *főelem-kiválasztásra?*. Ezzel a módszerrel a hiba mindig kicsi lesz. Ha az Ax = b lineáris egyenletrendszerre y-t kaptunk megoldásnak, akkor a valódi gyöktől való eltérés leírható a következőképpen: (A + E)y = b , ahol :E2cnεA2. Itt || ||2 a mátrix 2-norma cn egy n-től függő kis állandó, ε pedig a gépepszilon. Egyetlen ismert hátránya van a Cholesky-felbontásnak: az algoritmus során négyzetgyököket kell számítani, viszont a kerekítési hibákból adódóan előfordulhat, hogy negatív számok kerülnek a gyök alá. Szerencsére ez a gond csak nagyon rosszul rendezett mátrixok esetén szokott fellépni.

A négyzetgyökvonás kikerülése

A felbontás egy másik módja:

A=LDLT=(100L2110L31L321)(D1000D2000D3)(1L21L3101L32001)=

=(D1(szimmetrikus)L21D1L212D1+D2L31D1L31L21D1+L32D2L312D1+L322D2+D3). Ebben a formában nincsen szükség négyzetgyökökre. Ha A pozitív definit, akkor D főátlóbeli elemei mind pozitívak. Ugyanakkor használható D helyett bármilyen négyzetes és szimmetrikus mátrix. A következő rekurzív formulákkal meghatározhatóak D és L tagjai:

Lij=1Dj(Aijk=1j1LikLjkDk),ahol i>j.
Di=Aiik=1i1Lik2Dk

Komplex hermitikus mátrixok esetén pedig a következők érvényesek:

Lij=1Dj(Aijk=1j1LikLjk*Dk),ahol i>j.
Di=Aiik=1i1LikLik*Dk

Pozitív szemidefinit mátrixok Cholesky-felbontása

Láthattuk, hogy minden pozitív definit mátrixnak van Cholesky-felbontása. A módszerünk kiterjeszthető (itt nem teljesen részletezett érveléssel) pozitív szemidefinitekre is. Sajnos ez esetben nem jutunk explicit numerikus algoritmusokhoz, amikkel végrehajtható a felbontás. Ha A pozitív szemidefinit n×n-es mátrix, akkor az {Ak} = {A + (1/k)In} sorozat tagjai pozitív definitek. Továbbá

AkA

az operátornorma esetén. Pozitív definit esetben minden Ak-nak van Cholesky-felbontása, Ak = LkLk*. Az operátornorma tulajdonságaiból adódóan:

Lk2=LkLk*=Ak.

Tehát {Lk} a Banach-tér operátorainak egy korlátos készlete, és relatív kompakt (mivel a vektortér dimenzióinak száma véges). Következésképp van konvergens sorozata, amit az {Lk} sorozat jelöl ki, és a határértéke L. Ha L a határértéke ennek a sorozatnak, akkor megmutatható, hogy ez az L alsó trianguláris nemnegatív diagonális elemekkel és A = LL*. Bármely x-re és y-ra:

Ax,y=limAkx,y=limLkLk*x,y=LL*x,y.

Ebből A = LL*. Mivel a tárgyalt vektorterünk dimenzióinak száma véges, ezért minden topológia az operátorok terén ekvivalens.

Általánosítás

A Cholesky-felbontás általánosítható akár nem véges mátrixokra is operátorok segítségével. Legyen {n} a Hilbert-terek egy sorozata! Az operátormátrix

A=[A11A12A13A12*A22A23A13*A23*A33]

úgy hat a direkt összegzésre, hogy

=nn,

ahol bármely

Aij:ji

egy korlátos operátor. Ha A pozitív (szemidefinit) abban az értelemben, hogy minden véges k-ra és bármely hn=1kk,, akkor van olyan L operátormátrix úgy, hogy A = LL*.

Online kalkulátor