Ответ 1
Синтаксис будет таким:
import numpy
try:
# your code that will (maybe) throw
except numpy.linalg.linalg.LinAlgError as err:
if 'Singular matrix' in err.message:
# your error handling block
else:
raise
В NumPy я пытаюсь использовать linalg
для вычисления обратных матриц на каждом шаге схемы Ньютона-Рафсона (размер проблемы мал умышленно, чтобы мы могли инвертировать аналитически вычисленные матрицы Гессиана). Однако после того, как я приближаюсь к сближению, гессиан приближается к единственному.
Есть ли какой-либо метод в NumPy, который позволяет мне проверить, считается ли матрица сингулярной (вычислительная детерминанта недостаточно устойчива)? В идеале было бы неплохо, если бы был способ использовать блок try
except
для обнаружения ошибки SinglePy сингулярного массива.
Как мне это сделать? Ошибка NumPy, указанная на терминале:
raise LinAlgError, 'Singular matrix'
numpy.linalg.linalg.LinAlgError: Singular matrix
Синтаксис будет таким:
import numpy
try:
# your code that will (maybe) throw
except numpy.linalg.linalg.LinAlgError as err:
if 'Singular matrix' in err.message:
# your error handling block
else:
raise
wim ответ больше не работает для текущих версий NumPy (я использую 1.13 на момент написания). Вместо этого выполните:
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