Tengo un problema de matriz generalizado: de un método espectral en un problema de análisis de estabilidad lineal. Mi matriz B es diagonal y positiva semi-definida. A es no ermitaño y complejo.
Mi problema es esencialmente que cuando uso el solucionador de valores propios generalizados SLEPc obtengo el error "cero pivote en factorización LU". El resto de los siguientes son detalles sobre el problema y las cosas que he probado hasta ahora. ¡Gracias por la ayuda!
Detalles del problema
La matriz estará en su punto más grande, aproximadamente 48000 por 48000, y quiero encontrar los valores propios. Los valores propios que me interesan son aquellos con la mayor parte real cerca de 0 + 0i. Idealmente, quiero poder encontrarlos incluso si son internos (es decir, cuando hay otros valores propios con una parte real positiva más grande en el espectro). Sin embargo, sería feliz si pudiera hacer que funcione para problemas en los que todos los valores propios tienen partes reales <0 aparte del valor propio de interés.
Por el momento, he utilizado las funciones scipy linalg.eig y sparse.eigs. Hasta donde yo sé, estos usan LAPACK y ARPACK respectivamente para hacer el trabajo pesado. He decidido ver si puedo lograr un mejor rendimiento mediante el uso de la biblioteca SLEPc. Si esta es una mala decisión, ¡avísame!
Quiero pasar a usar PETSc con los solucionadores de valores propios SLEPc. He estado probando SLEPc usando los ejemplos proporcionados como parte del tutorial. El ejercicio 7 ( http://www.grycap.upv.es/slepc/handson/handson3.html ) lee las matrices A y B de un archivo y genera las soluciones. Conseguí que esto funcionara bien usando las matrices proporcionadas. Sin embargo, si sustituyo una versión de prueba más pequeña de mi problema (6000x6000), obtengo una variedad de errores dependiendo de los argumentos de la línea de comando que proporciono.
El principal problema que tengo es el error: "pivote cero en factorización LU!" cuando uso la configuración predeterminada.
Creo que esto podría estar relacionado con el hecho de que B contiene filas de ceros, aunque mi comprensión del álgebra lineal es algo básica. ¿Es esto cierto?
He intentado configurar las opciones sugeridas en el sitio web petsc, -pc_factor_shift_type NONZERO, etc. pero todo lo que obtengo es una advertencia adicional de que estas opciones no se usaron
Supuse que esto era un problema con el preacondicionador, así que intenté establecer -eps_target en 0.1 y ambos con y sin especificar -st_type sinvert y shift. Todavía me sale el mismo error.
Luego probé -st_pc_type jacobi y st_pc_type bjacobi. Jacob ejecuta, pero no produce ningún valor propio. Block jacobi hace una factorización LU y me da el mismo error nuevamente.
El método predeterminado es krylov-schur, por lo que he experimentado con las opciones -eps_type gd y -eps_type jd. Desafortunadamente, estos parecen producir valores propios sin sentido, que no aparecen en absoluto en el espectro cuando resuelvo usar LAPACK en scipy.
Sé que mi problema de matriz no es singular, porque puedo resolverlo usando scipy.
¿Conoce algún libro / guía que deba leer además de los manuales de PETSC y SLEPC para comprender el comportamiento de todos estos solucionadores diferentes?
La salida del caso sin opciones de línea de comando se da a continuación.
¡Muchas gracias por tomarse el tiempo de leer mi primera publicación!
Saludos cordiales, Toby
Salida de terminal desde SLEPc
tobymac: SLEPC toby $ mpiexec ./ex7 -f1 LHS-N7-M40-Re0.0-b0.1-Wi5.0-amp0.02.petsc -f2 RHS-N7-M40-Re0.0-b0.1- Wi5.0-amp0.02.petsc -eps_view
Eigenproblema generalizado almacenado en archivo.
[0] ERROR PETSC: --------------------- Mensaje de error --------------------- --------------- [0] ERROR PETSC: Pivote cero detectado en factorización LU: consulte http://www.mcs.anl.gov/petsc/documentation/faq.html#ZeroPivot! [0] ERROR PETSC: Fila vacía en matriz: fila en el pedido original 2395 en el pedido permutado 3600! [0] ERROR PETSC: -------------------------------------------- ---------------------------- [0] ERROR PETSC: Petsc versión de lanzamiento 3.3.0, parche 5, sáb dic 1 15:10 : 41 CST 2012 [0] ERROR PETSC: Ver docs / changes / index.html para actualizaciones recientes. [0] ERROR PETSC: Consulte docs / faq.html para obtener sugerencias sobre la resolución de problemas. [0] ERROR PETSC: Consulte docs / index.html para ver las páginas del manual. [0] ERROR PETSC: -------------------------------------------- ---------------------------- [0] ERROR PETSC: ./ex7 en un arco-darw llamado tobymac por toby jue 25 de julio 10 : 20: 40 2013 [0] ERROR PETSC: Bibliotecas vinculadas desde / opt / local / lib [0] ERROR PETSC: Configurar ejecución el martes 23 de julio 15:11:27 2013 [0] ERROR PETSC:
[0] ERROR PETSC: PCSetUp () línea 832 en /opt/local/var/macports/build/_Users_toby_MyPorts_scienceports_math_petsc/petsc/work/petsc-3.3-p5/src/ksp/pc/interface/precon.c [0] PETS ERROR: KSPSetUp () línea 278 en /opt/local/var/macports/build/_Users_toby_MyPorts_scienceports_math_petsc/petsc/work/petsc-3.3-p5/src/ksp/ksp/interface/itfunc.c [0] PETSC ERROR: 0S PETSC ERROR_Red: ) línea 176 en /opt/local/var/macports/build/_Users_toby_MyPorts_scienceports_math_petsc/petsc/work/petsc-3.3-p5/src/ksp/pc/impls/redundant/redundant.c [0] PETSC ERROR: PCSetUp (PCSetUp (línea) 832 en /opt/local/var/macports/build/_Users_toby_MyPorts_scienceports_math_petsc/petsc/work/petsc-3.3-p5/src/ksp/pc/interface/precon.c [0] PETSC ERROR: KSPSetUp () línea 278 en / KSPSetUp () línea 278 en / /local/var/macports/build/_Users_toby_MyPorts_scienceports_math_petsc/petsc/work/petsc-3.3-p5/src/ksp/ksp/interface/itfunc.c [0] ERROR PETSC: STSetUp_Shift () línea 94 en src / st / impls / shift / shift.c [0] ERROR PETSC: STSetUp () línea 280 en src / st / interface / stsolve.c [0] ERROR PETSC : EPSSetUp () línea 204 en src / eps / interface / setup.c [0] PETSC ERROR: EPSSolve () línea 109 en src / eps / interface / solve.c tobymac: SLEPC toby $
Respuestas:
En problemas de esta forma, normalmente necesita que no sea singular, es decir, que sea invertible. No dices de dónde vienen , así que no sé nada sobre tu pero debes asegurarte de que no sea singular.A , B Bsi A , B si
fuente