¿Cómo puedo estimar el número de condición de una matriz dispersa grande usando PETSc?

Respuestas:

11

Para matrices pequeñas, el número de condición se puede calcular de manera confiable utilizando la descomposición de valores singulares. Haz un KSPSolve()con la matriz y corre con -pc_type svd -pc_svd_monitor.

Para matrices más grandes, puede estimar el número de condición utilizando un método de Krylov. Por ejemplo, la iteración de Arnoldi realizada por GMRES calcula incrementalmente una descomposición de Hessenberg. Los valores singulares extremos y los valores propios de la matriz de Hessenberg son buenas aproximaciones a los de la matriz original. Para que PETSc calcule valores propios de esta manera, ejecute con

-ksp_monitor_singular_value -ksp_type gmres -ksp_gmres_restart 1000 -pc_type none

-pc_type nonePAG-1UNUNPAG-1

KSPSolve()UNUN-1

Utilice SLEPc si necesita estimaciones más precisas del valor singular más pequeño (y para todos los demás problemas de valor propio y valor singular).

Jed Brown
fuente