Calcul du déterminant tout en résolvant aide de CG

11

Je résout pour une énorme matrice définie positive clairsemée utilisant la méthode du gradient conjugué (CG). Est-il possible de calculer le déterminant de utilisant les informations produites lors de la résolution?A AAx=bAA

Manuel Schmidt
la source
Pourquoi souhaiteriez-vous calculer le déterminant? Un tel résultat sera sûrement un débordement ou un débordement pour une énorme matrice de toute façon. Je serais plus charitable si vous aviez demandé de calculer le nombre de conditions, mais ne perdez pas votre temps sur le déterminant!
Vous le savez probablement déjà, mais les valeurs de Ritz pendant le processus de gradient conjugué convergent vers les valeurs propres de la matrice, et vous pouvez en déduire des estimations simples pour le déterminant.
shuhalo

Réponses:

10

Le calcul du déterminant d'une matrice clairsemée est généralement aussi coûteux qu'une résolution directe, et je suis sceptique que CG serait d'une grande aide pour le calculer. Il serait possible d'exécuter CG pour itérations (où est ) afin de générer des informations pour l'ensemble du spectre de , puis de calculer le déterminant comme le produit des valeurs propres, mais ce serait à la fois lent et numériquement instable.A n × n AnAn×nA

Ce serait une meilleure idée de calculer la factorisation de Cholesky directe clairsemée de votre matrice, disons , où est triangulaire inférieur. Alors où est simplement le produit des entrées diagonales de la matrice triangulaire inférieure puisque les valeurs propres d'une matrice triangulaire se trouvent le long de sa diagonale. L det ( A ) = det ( L ) det ( L H ) = | det ( L ) | 2 , det ( L ) LA=LLHL

det(A)=det(L)det(LH)=|det(L)|2,
det(L)L

Dans le cas d'une matrice générale non singulière, une décomposition LU pivotante doit être utilisée, disons , où est une matrice de permutation, de sorte que Puisque est une matrice de permutation, , et, par construction, aura généralement une diagonale de tous ceux, ce qui implique que . Vous pouvez donc calculer commeP det ( A ) = det ( P - 1 ) det ( L )PA=LUPP det ( P ) = ± 1 L det ( L ) = 1 det ( A ) ± det ( U )

det(A)=det(P1)det(L)det(U).
Pdet(P)=±1Ldet(L)=1det(A)±det(U)et reconnaissent à nouveau que le déterminant d'une matrice triangulaire est simplement le produit de ses entrées diagonales. Ainsi, le coût de calcul du déterminant est essentiellement juste celui d'une factorisation.
Jack Poulson
la source
Ce serait l'une des possibilités (bien que j'utiliserais une factorisation cholesky) si la matrice est petite, mais a une taille ~ et donc il n'est pas possible de faire une décomposition10 6 x 10 6A106x106
Manuel Schmidt
@ManuelSchmidt Des matrices éparses de cette taille résultant de discrétisations de type éléments finis peuvent généralement être facilement factorisées avec (par exemple) des méthodes multifrontales. Je suis d'accord que la factorisation de Cholesky devrait être utilisée si votre matrice est HPD (et la généralisation de mon argument ci-dessus est évidente).
Jack Poulson
Merci pour votre réponse rapide. Malheureusement, la matrice n'a pas de structure speziale (ce qui permettrait une factorisation facile).
Manuel Schmidt
2
Je suis curieux de savoir pourquoi vous devez calculer le déterminant de la matrice. Les valeurs propres les plus élevées et les plus basses ne sont-elles pas suffisantes?
Jack Poulson
Elle fait partie d'une fonction de distribution de probabilité complexe et pas seulement une constante de normalisation. Je sais que les distributions peuvent être prises en compte (et c'est ce que nous faisons en ce moment) mais nous avons des tonnes de données à modéliser et chacun des facteurs devient énorme.
Manuel Schmidt
6

ABdimAdimBdimB=

BABABdetAdetBAB

detA=j=1dimAλi(A)j=1dimAλi(B)j=dimA+1dimBλi(B)
BAdimB=detAdetB
Wolfgang Bangerth
la source
Il s'avère qu'il existe des algorithmes vraiment beaux et pratiques qui impliquent le calcul de déterminants de taille. Consultez www-m3.ma.tum.de/foswiki/pub/M3/Allgemeines/…
Matt Knepley
2

Sans (encore) expliquer pourquoi et comment les déterminants sont mauvais, supposons que votre opérateur n'est pas facilement factorisable ou simplement indisponible sous forme de matrice et que vous avez vraiment besoin d'estimer son déterminant.

AA

Vous pouvez probablement inverser la façon dont cette estimation du déterminant se produit dans l'implémentation standard de CG en suivant attentivement la section 6.7.3 du livre.

Dominique
la source
2

det(A)=i=1nαk1,
αk=rkTrkpkTApkrk0k=1,,nRrkPpk
pk=rk+i=1k1γiri.
det(P)=(1)ndet(R)rkpkA
k=1nαk=k=1nrkTrkpkTApk=det(RTR)det(PTAP)=det(RTR)det(A)det(PTP)=(det(A))1.
Yermek
la source