Cholesky nedbrydning - Cholesky decomposition
I lineær algebra , den Cholesky-dekomposition eller Cholesky faktorisering (udtales / ʃ ə l ɛ s k i / shə- LES -kee ) er en nedbrydning af en hermitisk , positiv-bestemt matrix i produktet af en lavere triangulære matrix og dens konjugat transponere , hvilket er nyttigt til effektive numeriske løsninger, f.eks. Monte Carlo -simuleringer . Det blev opdaget af André-Louis Cholesky for rigtige matricer. Når den er anvendelig, er den Cholesky nedbrydning omtrent dobbelt så effektiv som LU nedbrydningen til løsning af systemer af lineære ligninger .
Udmelding
Cholesky-nedbrydningen af en hermitisk positiv-bestemt matrix A er en nedbrydning af formen
hvor L er en lavere trekantet matrix med reelle og positive diagonale firmaer, og L * betegner konjugerede transponerede af L . Hver hermitisk positiv-bestemt matrix (og dermed også enhver reelt værdsat symmetrisk positiv-bestemt matrix) har en unik Cholesky-nedbrydning.
Det omvendte holder trivielt: Hvis A kan skrives som LL * for nogle inverterbare L , lavere trekantede eller på anden måde, så er A hermitisk og positiv bestemt.
Når A er en reel matrix (dermed symmetrisk positiv-bestemt), kan faktoriseringen skrives
hvor L er en reel lavere trekantet matrix med positive diagonale poster.
Positive semidefinite matricer
Hvis en hermitisk matrix A kun er positiv semidefinit, i stedet for positiv bestemt, så har den stadig en dekomponering af formen A = LL *, hvor de diagonale poster i L må være nul. Nedbrydningen behøver ikke at være unik, f.eks .:
Men hvis rangen A er r , så er der en unik lavere trekantet L med nøjagtigt r positive diagonale elementer og n - r kolonner, der indeholder alle nuller.
Alternativt kan nedbrydningen gøres unik, når et svingbart valg er løst. Formelt, hvis A er en n × n positiv semidefinit matrix af rang r , så er der mindst en permutationsmatrix P sådan, at PAP T har en unik nedbrydning af formen PAP T = LL * med , hvor L 1 er en r × r nedre trekantet matrix med positiv diagonal.
LDL -nedbrydning
En nært beslægtet variant af den klassiske Cholesky -nedbrydning er LDL -nedbrydningen,
hvor L er en trekantet (unitriangulær) matrix i den nedre enhed , og D er en diagonal matrix. Det vil sige, at de diagonale elementer i L skal være 1 på bekostning af indførelse af en yderligere diagonal matrix D i nedbrydningen. Den største fordel er, at LDL -nedbrydningen kan beregnes og bruges med stort set de samme algoritmer, men undgår at udtrække kvadratrødder.
Af denne grund kaldes LDL-nedbrydningen ofte den kvadratrodfrie Cholesky- nedbrydning. For rigtige matricer har faktoriseringen formen A = LDL T og omtales ofte som LDLT -dekomponering (eller LDL T -dekomponering eller LDL ′). Det er nært forbundet med eigendecomposition af reelle symmetriske matricer , A = QΛQ T .
LDL -nedbrydningen er relateret til den klassiske Cholesky -nedbrydning af formen LL * som følger:
I modsætning hertil i betragtning af den klassiske Cholesky nedbrydning af en positiv bestemt matrix, hvis S er en diagonal matrix, der indeholder hoveddiagonalen af , kan et A nedbrydes som hvor
- (dette skalerer hver kolonne for at lave diagonale elementer 1),
Hvis A er positiv bestemt, er de diagonale elementer i D alle positive. Positiv semidefinite A , en eksisterer nedbrydning, hvor antallet af ikke-nul elementer på diagonalen D er præcis rang af A . Nogle ubestemte matricer, for hvilke der ikke findes nogen Cholesky-dekomponering, har en LDL-dekomponering med negative poster i D : det er tilstrækkeligt, at de første n −1 førende hovedmindre i A er ikke ental.
Eksempel
Her er den Cholesky nedbrydning af en symmetrisk reel matrix:
Og her er dens LDL T -nedbrydning:
Ansøgninger
Cholesky -nedbrydningen bruges hovedsageligt til den numeriske løsning af lineære ligninger . Hvis A er symmetrisk og positiv bestemt, kan vi løse ved først at beregne Cholesky -nedbrydningen , derefter løse for y ved fremadrettet substitution og til sidst løse for x ved tilbagesubstitution .
En alternativ måde at eliminere at tage kvadratrødder i nedbrydningen er at beregne Cholesky -nedbrydningen , derefter løse for y og til sidst løse .
For lineære systemer, der kan sættes i symmetrisk form, er Cholesky -nedbrydningen (eller dens LDL -variant) den foretrukne metode til overlegen effektivitet og numerisk stabilitet. Sammenlignet med LU -nedbrydningen er den omtrent dobbelt så effektiv.
Lineære mindste firkanter
Systemer af formen Ax = b med A symmetrisk og positiv bestemt opstår ganske ofte i applikationer. For eksempel er de normale ligninger i lineære mindste kvadrater problemer af denne form. Det kan også ske, at matrix A kommer fra en energifunktionel, som skal være positiv ud fra fysiske overvejelser; dette sker ofte i den numeriske løsning af partielle differentialligninger .
Ikke-lineær optimering
Ikke-lineære multivariatfunktioner kan minimeres over deres parametre ved hjælp af varianter af Newtons metode kaldet kvasi-Newton- metoder. Ved iteration k træder søgningen i en retning defineret ved at løse for , hvor er trinretningen, er gradienten og er en tilnærmelse til den hessiske matrix dannet ved at gentage opdateringer af rang 1 ved hver iteration. To kendte opdateringsformler kaldes Davidon – Fletcher – Powell (DFP) og Broyden – Fletcher – Goldfarb – Shanno (BFGS). Tab af den positivt bestemte betingelse ved afrundingsfejl undgås, hvis man i stedet for at opdatere en tilnærmelse til det inverse af hessianerne opdaterer den koleskiske nedbrydning af en tilnærmelse af selve den hessiske matrix.
Monte Carlo -simulering
Cholesky -nedbrydningen bruges almindeligvis i Monte Carlo -metoden til simulering af systemer med flere korrelerede variabler. Den kovariansmatricen dekomponeres til opnåelse nederste trekantede L . Anvendelse af dette på en vektor af ikke -korrelerede prøver u producerer en prøvevektor Lu med kovariansegenskaberne i systemet, der modelleres.
Det følgende forenklede eksempel viser den økonomi, man får fra Cholesky -nedbrydningen: Antag, at målet er at generere to korrelerede normale variabler og med en given korrelationskoefficient . For at opnå dette er det nødvendigt først at generere to ukorrelerede gaussiske tilfældige variabler, og som kan gøres ved hjælp af en Box – Muller -transformation . I betragtning af den nødvendige korrelationskoefficient kan de korrelerede normale variabler opnås via transformationerne og .
Kalman filtre
Uparfumerede Kalman-filtre bruger normalt Cholesky-nedbrydningen til at vælge et sæt såkaldte sigma-punkter. Kalman filter sporer gennemsnitlige tilstand af et system som en vektor x med længden N og kovariansen som en N × N matrix P . Matrixen P er altid positiv semi-bestemt og kan opdeles i LL T . Søjlerne L kan tilføjes og trækkes fra middelværdien x for at danne et sæt 2 N vektorer kaldet sigmapunkter . Disse sigma -punkter indfanger fuldstændigt systemtilstandens middelværdi og kovarians.
Matrix inversion
Den eksplicitte omvendt af en hermitisk matrix kan beregnes ved Cholesky -dekomponering på en måde, der ligner løsning af lineære systemer, ved hjælp af operationer ( multiplikationer). Hele inversionen kan endda udføres effektivt på stedet.
En ikke-hermitisk matrix B kan også vendes ved hjælp af følgende identitet, hvor BB * altid vil være hermitisk:
Beregning
Der er forskellige metoder til beregning af Cholesky nedbrydning. Beregningskompleksiteten af almindeligt anvendte algoritmer er generelt O ( n 3 ). De nedenfor beskrevne alle algoritmer involvere om (1/3) n 3 flops ( n 3 /6 multiplikationer og det samme antal af tilsætninger) for rigtige varianter og (4/3) n 3 flops for komplekse varianter, hvor n er størrelsen af matricen A . Derfor har de halvdelen af omkostningerne ved LU -nedbrydning , der bruger 2 n 3 /3 FLOP'er (se Trefethen og Bau 1997).
Hvilken af nedenstående algoritmer er hurtigere afhænger af detaljerne i implementeringen. Generelt vil den første algoritme være lidt langsommere, fordi den får adgang til dataene på en mindre regelmæssig måde.
Cholesky -algoritmen
Den Cholesky-algoritmen , anvendes til at beregne nedbrydning matrix L , er en modificeret version af Gauss-eliminering .
Den rekursive algoritme starter med i : = 1 og
- A (1) : = A .
I trin i har matrixen A ( i ) følgende form:
hvor I i −1 betegner identitetsmatricen for dimension i - 1.
Hvis vi nu definerer matrixen L i ved
(bemærk at a i, i > 0 da A ( i ) er positiv bestemt), så kan vi skrive A ( i ) som
hvor
Bemærk, at b i b * i er et ydre produkt , derfor kaldes denne algoritme for den ydre produktversion i (Golub & Van Loan).
Vi gentager dette for i fra 1 til n . Efter n trin, får vi A ( n + 1) = I . Derfor beregnes den nedre trekantede matrix L, vi leder efter, som
Algoritmerne Cholesky – Banachiewicz og Cholesky – Crout
Hvis vi skriver ligningen ud
får vi følgende:
og derfor følgende formler for posterne i L :
For komplekse og reelle matricer er inkonsekventielle vilkårlige tegnændringer af diagonale og tilhørende off-diagonalelementer tilladt. Udtrykket under kvadratroden er altid positivt, hvis A er reelt og positivt bestemt.
For kompleks hermitisk matrix gælder følgende formel:
Så vi kan beregne ( i , j ) posten, hvis vi kender posterne til venstre og ovenfor. Beregningen er normalt arrangeret i en af følgende ordrer:
- Den Cholesky-Banachiewicz algoritme starter fra det øverste venstre hjørne af matricen L og provenuet til at beregne matricen række for række.
for (i = 0; i < dimensionSize; i++) { for (j = 0; j <= i; j++) { float sum = 0; for (k = 0; k < j; k++) sum += L[i][k] * L[j][k]; if (i == j) L[i][j] = sqrt(A[i][i] - sum); else L[i][j] = (1.0 / L[j][j] * (A[i][j] - sum)); } }
- Den Cholesky-Crout algoritme starter fra den øverste venstre hjørne af matricen L og fortsætter at beregne matrix søjle for søjle.
for (j = 0; j < dimensionSize; j++) { float sum = 0; for (k = 0; k < j; k++) { sum += L[j][k] * L[j][k]; } L[j][j] = sqrt(A[j][j] - sum); for (i = j + 1; i < dimensionSize; i++) { sum = 0; for (k = 0; k < j; k++) { sum += L[i][k] * L[j][k]; } L[i][j] = (1.0 / L[j][j] * (A[i][j] - sum)); } }
Begge adgangsmønstre tillader, at hele beregningen udføres på stedet, hvis det ønskes.
Beregningens stabilitet
Antag, at vi vil løse et velkonditioneret system af lineære ligninger. Hvis LU -nedbrydningen bruges, er algoritmen ustabil, medmindre vi bruger en slags drejestrategi. I sidstnævnte tilfælde afhænger fejlen af matrixens såkaldte vækstfaktor, som normalt (men ikke altid) er lille.
Antag nu, at den Cholesky nedbrydning er gældende. Som nævnt ovenfor vil algoritmen være dobbelt så hurtig. Desuden er det ikke nødvendigt at dreje , og fejlen vil altid være lille. Specifikt, hvis vi vil løse Ax = b , og y betegner den beregnede løsning, løser y det forstyrrede system ( A + E ) y = b , hvor
Her || · || 2 er matricen 2-normen , c n er en lille konstant afhængig af n , og ε betegner enheden afrunde .
En bekymring ved den Cholesky nedbrydning, man skal være opmærksom på, er brugen af kvadratrødder. Hvis matrixen, der faktoriseres, er positiv bestemt efter behov, er tallene under kvadratrødderne altid positive i nøjagtig aritmetik . Desværre kan tallene blive negative på grund af afrundingsfejl , i hvilket tilfælde algoritmen ikke kan fortsætte. Dette kan dog kun ske, hvis matricen er meget dårligt betinget. En måde at løse dette på er ved at tilføje en diagonal korrektionsmatrix til matricen, der nedbrydes i et forsøg på at fremme den positive beslutsomhed. Selvom dette kan reducere nedbrydningens nøjagtighed, kan det være meget gunstigt af andre årsager; for eksempel, når du udfører Newtons metode til optimering , kan tilføjelse af en diagonal matrix forbedre stabiliteten, når den er langt fra det optimale.
LDL -nedbrydning
En alternativ form, der eliminerer behovet for at tage kvadratrødder, når A er symmetrisk, er den symmetriske ubestemt faktorisering
Følgende rekursive relationer gælder for posterne i D og L :
Dette fungerer, så længe de genererede diagonale elementer i D forbliver ikke-nul. Nedbrydningen er derefter unik. D og L er reelle, hvis A er ægte.
For kompleks hermitisk matrix A gælder følgende formel:
Igen tillader adgangsmønsteret, at hele beregningen kan udføres på stedet, hvis det ønskes.
Blok variant
Når den bruges på ubestemt matricer, er LDL * -faktoriseringen kendt for at være ustabil uden omhyggelig drejning; specifikt kan elementerne i faktoriseringen vokse vilkårligt. En mulig forbedring er at udføre faktoriseringen på blokundermatricer, normalt 2 × 2:
hvor hvert element i matricerne ovenfor er en firkantet submatrix. Heraf følger disse analoge rekursive relationer:
Dette indebærer matrixprodukter og eksplicit inversion, hvilket begrænser den praktiske blokstørrelse.
Opdatering af nedbrydning
En opgave, der ofte opstår i praksis, er, at man skal opdatere en Cholesky -nedbrydning. I flere detaljer, har man allerede beregnet Cholesky nedbrydning af nogle matrix , så man ændrer matricen på en eller anden måde i en anden matrix, sige , og man ønsker at beregne Cholesky nedbrydning af den opdaterede matrix: . Spørgsmålet er nu, om man kan bruge Cholesky -nedbrydningen af det, der blev beregnet før til at beregne Cholesky -nedbrydningen af .
Opdatering af nummer ét
Det specifikke tilfælde, hvor den opdaterede matrix er relateret til matrixen ved , er kendt som en rang-en-opdatering .
Her er en funktion skrevet i Matlab- syntaks, der realiserer en rank-one-opdatering:
function [L] = cholupdate(L, x)
n = length(x);
for k = 1:n
r = sqrt(L(k, k)^2 + x(k)^2);
c = r / L(k, k);
s = x(k) / L(k, k);
L(k, k) = r;
if k < n
L((k+1):n, k) = (L((k+1):n, k) + s * x((k+1):n)) / c;
x((k+1):n) = c * x((k+1):n) - s * L((k+1):n, k);
end
end
end
Rang-en nedjustering
En rang-on downdate ligner en rang-on opdatering, bortset fra at tilsætningen erstattes af subtraktion: . Dette virker kun, hvis den nye matrix stadig er positiv bestemt.
Koden til rang-en-opdateringen vist ovenfor kan let tilpasses til at foretage en rang-en-nedgang: man skal blot erstatte de to tilføjelser i opgaven til r
og L((k+1):n, k)
med subtraktioner.
Tilføjelse og fjernelse af rækker og kolonner
Hvis vi har en symmetrisk og positiv bestemt matrix repræsenteret i blokform som
og dens øvre Cholesky -faktor
derefter for en ny matrix , som er den samme som, men med indsættelse af nye rækker og kolonner,
vi er interesserede i at finde den Cholesky -faktorisering af , som vi kalder , uden direkte at beregne hele nedbrydningen.
At skrive til løsningen af , som let kan findes til trekantede matricer, og til den koleskiske nedbrydning af , kan følgende relationer findes:
Disse formler kan bruges til at bestemme Cholesky -faktoren efter indsættelse af rækker eller kolonner i en hvilken som helst position, hvis vi indstiller række- og kolonnedimensionerne korrekt (inklusive til nul). Det omvendte problem, når vi har
med kendt Cholesky nedbrydning
og ønsker at bestemme Cholesky -faktoren
af matricen med rækker og kolonner fjernet,
giver følgende regler:
Bemærk, at ligningerne ovenfor, der involverer at finde Cholesky -nedbrydningen af en ny matrix, alle er af formen , som gør det muligt at beregne dem effektivt ved hjælp af opdaterings- og nedjusteringsprocedurerne beskrevet i det foregående afsnit.
Bevis for positive semi-bestemte matricer
Bevis ved at begrænse argument
Ovenstående algoritmer viser, at hver positiv bestemt matrix har en Cholesky -dekomponering. Dette resultat kan udvides til at omfatte den positive semi-bestemte sag ved et begrænsende argument. Argumentet er ikke fuldstændigt konstruktivt, dvs. det giver ingen eksplicitte numeriske algoritmer til beregning af Cholesky -faktorer.
Hvis er en positiv semi-bestemt matrix , består sekvensen af positive bestemte matricer . (Dette er en umiddelbar konsekvens af f.eks. Den spektrale kortlægningssætning for den polynomiske funktionelle beregning.) Også,
i operatørnorm . Fra det positive bestemte tilfælde har hver Cholesky nedbrydning . Efter operatørnormens ejendom,
Den holder fordi udstyret med operatøren normen er en C * algebra. Således er et afgrænset sæt i Banach-rummet for operatører, derfor relativt kompakt (fordi det underliggende vektorrum er endeligt-dimensionelt). Følgelig har den en konvergent undersekvens, også betegnet med , med grænse . Det kan let kontrolleres, at denne har de ønskede egenskaber, dvs. , og er lavere trekantede med ikke-negative diagonale poster: for alle og ,
Derfor . Fordi det underliggende vektorrum er endeligt-dimensionelt, er alle topologier i operatørernes rum ækvivalente. Så har tendens til i norm betyder tendens til entrywise. Dette indebærer igen, at eftersom hver er lavere trekantet med ikke-negative diagonale poster, også.
Bevis ved QR -nedbrydning
Lad være en positiv semi-bestemt hermitisk matrix. Så det kan skrives som et produkt af sin kvadratroden matrix , . Nu kan QR -nedbrydning påføres , hvilket resulterer i , hvor er enhed og øvre trekantet. Indsættelse af nedbrydning i de oprindelige ligestillingsudbytter . Indstillingen fuldender beviset.
Generalisering
Cholesky -faktoriseringen kan generaliseres til (ikke nødvendigvis begrænsede) matricer med operatorposter. Lad være en sekvens af Hilbert -mellemrum . Overvej operatormatricen
handler på det direkte beløb
hvor hver
er en afgrænset operatør . Hvis A er positiv (semidefinit) i den forstand, at for alle begrænsede k og for evt
vi har , så eksisterer der en lavere trekantet operatormatrix L, således at A = LL *. Man kan også tage de diagonale poster i L for at være positiv.
Implementeringer i programmeringsbiblioteker
- C programmeringssprog : GNU Scientific Library giver flere implementeringer af Cholesky nedbrydning.
- Maxima computer algebra system: funktion cholesky beregner Cholesky nedbrydning.
- GNU Octave numeriske beregningssystem giver flere funktioner til at beregne, opdatere og anvende en Cholesky -dekomponering.
- Den LAPACK Biblioteket giver en høj gennemførelse af Cholesky dekomposition, der kan tilgås fra Fortran, C og de fleste sprog ydeevne.
- I Python udfører funktionen "cholesky" fra numpy.linalg -modulet Cholesky nedbrydning.
- I Matlab og R giver "chol" -funktionen Cholesky nedbrydning.
- I Julia giver "cholesky" -funktionen fra LinearAlgebra standardbibliotek Cholesky nedbrydning.
- I Mathematica kan funktionen "CholeskyDecomposition" anvendes på en matrix.
- I C ++ udfører kommandoen "chol" fra bæltedyrsbiblioteket Cholesky nedbrydning. De Eigen bibliotek leverer Cholesky factorizations for både sparsomme og tætte matricer.
- I ROOT -pakken er TDecompChol -klassen tilgængelig.
- I Analytica giver funktionen Decompose Cholesky nedbrydning.
- Den Apache Commons Math bibliotek har en implementering , som kan bruges i Java, Scala og enhver anden JVM sprog.
Se også
- Cyklusrang
- Ufuldstændig koleskisk faktorisering
- Matrixnedbrydning
- Minimum grad algoritme
- Kvadratroden af en matrix
- Sylvesters inertilov
- Symbolsk Cholesky nedbrydning
Noter
Referencer
- Dereniowski, Dariusz; Kubale, Marek (2004). "Cholesky faktorisering af matricer i parallel og rangering af grafer". 5. internationale konference om parallel behandling og anvendt matematik (PDF) . Foredragsnotater om datalogi. 3019 . Springer-Verlag. s. 985–992. doi : 10.1007/978-3-540-24669-5_127 . ISBN 978-3-540-21946-0. Arkiveret fra originalen (PDF) den 2011-07-16.
- Golub, Gene H .; Van Loan, Charles F. (1996). Matrix Computations (3. udgave). Baltimore: Johns Hopkins. ISBN 978-0-8018-5414-9.
- Horn, Roger A .; Johnson, Charles R. (1985). Matrix analyse . Cambridge University Press. ISBN 0-521-38632-2.
- SJ Julier og JK Uhlmann. " En generel metode til tilnærmelse af ikke -lineære transformationer af sandsynlighedsfordelinger ".
- SJ Julier og JK Uhlmann, " En ny udvidelse af Kalman -filteret til ikke -lineære systemer ", i Proc. AeroSense: 11. Int. Symp. Aerospace/Defense Sensing, Simulation and Controls, 1997, s. 182–193.
- Trefethen, Lloyd N .; Bau, David (1997). Numerisk lineær algebra . Philadelphia: Society for Industrial and Applied Mathematics. ISBN 978-0-89871-361-9.
- Osborne, Michael (2010). Bayesiske gaussiske processer til sekventiel forudsigelse, optimering og kvadratur (PDF) (speciale). University of Oxford.
- Ruschel, João Paulo Tarasconi, bachelorgrad " Parallel Implementations of the Cholesky Decomposition on CPUs and GPUs " Universidade Federal Do Rio Grande Do Sul, Instituto De Informatica, 2016, s. 29-30.
eksterne links
Videnskabshistorie
- Sur la résolution numérique des systèmes d'équations linéaires , Choleskys manuskript fra 1910, online og analyseret på BibNum (på fransk og engelsk) [for engelsk, klik på 'En download']
Information
- "Cholesky factorization" , Encyclopedia of Mathematics , EMS Press , 2001 [1994]
- Cholesky dekomponering , dataanalysen kortbog
- Cholesky dekomponering på www.math-linux.com
- Cholesky nedbrydning gjort enkel på videnskab meanderthal
Computerkode
- LAPACK er en samling af FORTRAN -underrutiner til løsning af tætte lineære algebra -problemer (DPOTRF, DPOTRF2, detaljer ydeevne )
- ALGLIB inkluderer en delvis port af LAPACK til C ++, C#, Delphi, Visual Basic osv. (Spdmatrixcholesky, hpdmatrixcholesky)
- libflame er et C -bibliotek med LAPACK -funktionalitet.
- Noter og video om højtydende implementering af Cholesky-faktorisering ved University of Texas i Austin.
- Cholesky: TBB + Threads + SSE er en bog, der forklarer implementeringen af CF med TBB, tråde og SSE (på spansk).
- bibliotek "Ceres Solver" af Google.
- LDL -nedbrydningsrutiner i Matlab.
- Armadillo er en C ++ lineær algebra -pakke
- Rosetta Code er et programmeringssted for chrestomati. på sidens emne .
- AlgoWiki er et åbent encyklopædi over algoritmers egenskaber og funktioner i deres implementeringer på sideemne
- Intel® oneAPI Math Kernel Bibliotek Intel-Optimeret Math Bibliotek for Numerisk Computing ? Potrf , ? Potrs
Brug af matrixen i simulering
- Generering af korrelerede tilfældige variabler og stokastiske processer , Martin Haugh, Columbia University
Online regnemaskiner
- Online Matrix -lommeregner udfører koldskåret nedbrydning af matricer online.