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?
1
A
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».