Estoy resolviendo para una enorme matriz definida positiva escasa A usando el método de gradiente conjugado (CG). ¿Es posible calcular el determinante de A utilizando la información producida durante la resolución?
Estoy resolviendo para una enorme matriz definida positiva escasa A usando el método de gradiente conjugado (CG). ¿Es posible calcular el determinante de A utilizando la información producida durante la resolución?
Respuestas:
Calcular el determinante de una matriz dispersa suele ser tan costoso como una resolución directa, y soy escéptico de que CG sea de mucha ayuda para calcularlo. Sería posible ejecutar CG para iteraciones (donde A es n × n ) para generar información para todo el espectro de A , y luego calcular el determinante como el producto de los valores propios, pero esto sería lento y numéricamente inestable
Sería una mejor idea calcular la factorización de Cholesky de dispersión directa de su matriz, digamos , donde L es triangular inferior. Entonces det ( A ) = det ( L ) det ( L H ) = | det ( L ) | 2 , donde det ( L ) es simplemente el producto de las entradas diagonales de la matriz triangular inferior L ya que los valores propios de una matriz triangular se encuentran a lo largo de su diagonal.
En el caso de una matriz general no singular, se debe utilizar una descomposición LU pivotada, por ejemplo , donde P es una matriz de permutación, de modo que det ( A ) = det ( P - 1 ) ⋅ det ( L ) ⋅ det ( U ) . Como P es una matriz de permutación, det ( P ) = ± 1 y, por construcción, L
Sin entrar (nuevamente) en por qué y cómo los determinantes son malos, supongamos que su operador no es fácilmente factorizable o simplemente no está disponible como una matriz y que realmente necesita estimar su determinante.
Probablemente pueda realizar ingeniería inversa sobre cómo se obtiene esta estimación del determinante en la implementación estándar de CG siguiendo de cerca la Sección 6.7.3 del libro.