Estou resolvendo para uma enorme matriz definida positiva esparsa A usando o método do gradiente conjugado (CG). É possível calcular o determinante de A usando as informações produzidas durante a resolução?
Estou resolvendo para uma enorme matriz definida positiva esparsa A usando o método do gradiente conjugado (CG). É possível calcular o determinante de A usando as informações produzidas durante a resolução?
Respostas:
Computar o determinante de uma matriz esparsa é tipicamente tão caro quanto uma solução direta, e sou cético quanto ao fato de que o CG seria de grande ajuda para computá-lo. Seria possível executar o CG para iterações (onde A é n × n ) para gerar informações para todo o espectro de A e depois calcular o determinante como o produto dos autovalores, mas isso seria lento e numericamente instável.
Seria uma idéia melhor calcular a fatoração de Cholesky esparsa direta de sua matriz, digamos , onde L é triangular inferior. Então det ( A ) = det ( L ) det ( L H ) = | det ( L ) | 2 , em que det ( L ) é simplesmente o produto das entradas diagonais da matriz triangular inferior L, uma vez que os valores próprios de uma matriz triangular estão ao longo de sua diagonal.
No caso de uma matriz geral não singular, uma decomposição LU pivotada deve ser usada, digamos, , onde P é uma matriz de permutação, de modo que det ( A ) = det ( P - 1 ) ⋅ det ( L ) ⋅ det ( U ) . Como P é uma matriz de permutação, det ( P ) = ± 1 e, por construção, L
Sem entrar (novamente) no porquê e como os determinantes são maus, vamos supor que seu operador não seja facilmente fatorável ou simplesmente não esteja disponível como uma matriz e que você realmente precise estimar seu determinante.
Provavelmente, você pode fazer engenharia reversa de como essa estimativa do determinante ocorre na implementação padrão do CG, seguindo atentamente a Seção 6.7.3 do livro.