Проверка правильности выполнения операции в Python 3 numpy? - PullRequest
0 голосов
/ 07 июля 2019

Мне нужно вычислить гессиан (матрицу вторых производных) и изменить его, если он не является положительно определенным.Разложение Холецкого не выполняется, если матрица не является симметричной положительной (полу) определенной, а гессианы симметричны.Поэтому я могу использовать numpy.linalg.cholesky на своей матрице, и это, кажется, один из самых эффективных способов проверки.См. в этом сообщении, например .

. Теперь я не уверен, как выполнить условие, чтобы разложение Холецкого выполнялось без ошибок.Например

H=hessian(X)

if np.linalg.cholesky(H) ...??? :
      'modification'

1 Ответ

0 голосов
/ 07 июля 2019

Проверьте NumPy DOCS .Функция np.linalg.cholesky вызывает LinAlgError, если разложение не удается.Следовательно, обернуть его в блок try / except было бы возможным решением.

import numpy as np

X = np.random.randint(0, 10, (5, 5))

# compute hessian of X
# H = hessian(X)

try:
    L = np.linalg.cholesky(H)
except np.linalg.LinAlgError:
    # modifications
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...