Как я могу обработать ошибку расхождения вручную при использовании optimize.newton в SciPy? - PullRequest
1 голос
/ 04 февраля 2020

Я использую ньютоновскую оптимизацию от SciPy для решения уравнения, и в зависимости от первоначального предположения иногда решение не сходится и не падает.

x = optimize.newton(fun,1/1000)

Можно ли вместо сообщения python cra sh напечатать сообщение о том, что сходимость не удалась, или повторить попытку оптимизации с другими начальными значениями?

1 Ответ

1 голос
/ 04 февраля 2020

Из документации :

disp: bool, необязательно

Если True, выведите RuntimeError, если алгоритм не сделал ' t сходятся, с сообщением об ошибке, содержащим количество итераций и текущее значение функции. В противном случае статус конвергенции записывается в объекте возврата RootResults. Игнорируется, если x0 не скалярно. Примечание: это не имеет ничего общего с отображением, однако ключевое слово disp не может быть переименовано для обратной совместимости.

Вы должны установить disp в False, потому что оно включено по умолчанию:

optimize.newton(fun, 1/1000, disp=False)

Ваш результат и другая информация будут в объекте RootResults.

...