En NumPy, estoy tratando de usar linalg
para calcular inversos de matriz en cada paso de un esquema de Newton-Raphson (el tamaño del problema es pequeño intencionalmente para que podamos puede invertir matrices de Hessian calculadas analíticamente). Sin embargo, después de llegar lejos hacia la convergencia, el Hessian se acerca al singular.Cómo probar, excepto una operación de matriz ilegal debido a la singularidad en NumPy
¿Hay algún método dentro de NumPy que me permita probar si una matriz se considera singular (el determinante informático no es lo suficientemente robusto)? Idealmente, sería bueno si hay una manera de utilizar un bloque try
except
para capturar el error de matriz singular de NumPy.
¿Cómo voy a hacer esto? El error NumPy dada en la terminal es:
raise LinAlgError, 'Singular matrix'
numpy.linalg.linalg.LinAlgError: Singular matrix
Gracias. Es uno de esos momentos "d'oh" que golpean la cabeza; No me di cuenta de que podíamos usar directamente los errores NumPy en una declaración 'except'. – ely
Además, ¿hay alguna forma de hacerlo específico a 'Singular matrix' y no a cualquier instancia de LinAlgError? – ely
Bueno, puede volver a subir la excepción atrapada si no es ese mensaje ... vea la última edición de mi respuesta. Esta es una forma de hacerlo, no estoy seguro de si hay una mejor manera. – wim