2009-05-28 7 views
1

Wie der Titel sagt, muss ich Cholesky-LDL-Zerlegung für meine positiv definite Matrix A bilden (wie normale Cholesky, aber es gibt eine Diagonale von L, und D ist Diagonalmatrix). Ich habe nur eine Funktion in Lapack gefunden, die das tut, aber es besagt, dass die Matrix A tridiagonal sein muss. Gibt es irgendeine Funktion, die das in einigen freien Unterprogrammbibliotheken wie lapack tut?Gibt es Fortran Subroutine in LAPACK/BLAS oder anderswo, um LDL-Zerlegung zu berechnen?

Antwort

2

prüfen die SSPTRF Funktion aus LAPACK out:

Purpose
=======

SSPTRF berechnet die Faktorisierung einer reellen symmetrischen Matrix A in gepackten Format unter Verwendung der gespeicherten Bunch- Kaufman diagonaler Schwenk Methode:

A = U * D * U ** T oder A = L * D * L ** T

wobei U (oder L) ein Produkt von permutat ist Ionen und Einheit obere (untere) Dreiecksmatrizen, und D ist symmetrisch und blockdiagonal mit 1-by-1 und 2-by-2 diagonalen Blöcken.

Auch Golub und Van Loan der "Matrix Computations" Buch gibt einen Algorithmus, um die Zersetzung zu tun. In meiner dritten Ausgabe ist es auf Seite 138, Abschnitt 4.1.2 "Symmetrie und die LDL^T-Faktorisierung".

Verwandte Themen