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

Adgangsmønster (hvidt) og skrivemønster (gul) til den på plads Cholesky — Banachiewicz-algoritme på en 5 × 5 matrix

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 rog 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å

Noter

Referencer

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

Computerkode

Brug af matrixen i simulering

Online regnemaskiner

  • Online Matrix -lommeregner udfører koldskåret nedbrydning af matricer online.