python - not - numpy linalg solve
Cómo intentar, excepto una operación de matriz ilegal debido a la singularidad en NumPy (2)
En NumPy, estoy tratando de usar linalg
para calcular inversos matriciales en cada paso de un esquema de Newton-Raphson (el tamaño del problema es intencionalmente pequeño, por lo que podemos invertir matrices de arpillera calculadas analíticamente). Sin embargo, después de avanzar hacia la convergencia, la arpillera se acerca al singular.
¿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 hubiera una forma de usar un bloque de try
except
para detectar el error de matriz singular de NumPy.
¿Cómo haría esto? El error NumPy dado en el terminal es:
raise LinAlgError, ''Singular matrix''
numpy.linalg.linalg.LinAlgError: Singular matrix
La respuesta de wim ya no funciona para las versiones actuales de NumPy (estoy usando 1.13 en el momento de escribir esto). En su lugar haz:
import numpy as np
try:
# your code that will (maybe) throw
except np.linalg.LinAlgError as e:
if ''Singular matrix'' in str(e):
# your error handling block
else:
raise
La sintaxis sería así:
import numpy as np
try:
# your code that will (maybe) throw
except np.linalg.LinAlgError as err:
if ''Singular matrix'' in str(err):
# your error handling block
else:
raise