2009-05-28 9 views
1

Comme le titre le dit, j'ai besoin de former une décomposition de LDL cholesky pour ma matrice définie positive A (Comme normal cholesky, mais il y a ceux une diagonale de L, et D est matrice diagonale). J'ai trouvé une seule fonction dans Lapack qui fait cela, mais elle dit que la matrice A doit être tridiagonale. Y at-il un peu de fonction qui fait cela dans certaines librairies de sous-routines libres comme lapack?Existe-t-il un sous-programme Fortran dans LAPACK/BLAS ou ailleurs pour calculer la décomposition des LDL?

Répondre

2

Vérifiez la fonction SSPTRF de LAPACK:

Objet
=======

SSPTRF calcule la factorisation d'une matrice symétrique réelle A stocké en format compressé avec le Bunch- procédé de pivotement diagonale Kaufman:

a = U * D * U ** T ou a = L * D * L ** T

où U (ou L) est un produit de permutat ion et unité supérieure (inférieure) matrices triangulaires, et D est symétrique et bloc diagonale avec blocs 1-by-1 et 2-by-2 diagonale.

En outre, le livre "Matrice Computations" Golub et Van Loan donne de un algorithme pour faire la décomposition. Dans ma troisième édition, c'est à la page 138, section 4.1.2 «Symétrie et factorisation LDL».

Questions connexes