python scipy.optimize.newton говорит, что он не сходится, однако кажется, что - PullRequest
1 голос
/ 13 февраля 2012

Я использую Python со Scipy для написания некоторого кода для сближения декартовых координат с элементами Кеплера и наоборот.

Для преобразования декартовой системы в Кеплера я использую следующее выражение:

E = scopt.newton(self.f, self.M, self.df, args=(), tol=10^(-10), maxiter=10000)

с

self.f = lambda x: x-self.e*scipy.sin(x)-self.M
self.df= lambda x: 1-self.e*scipy.cos(x)

При выполнении всего кода я получаю сообщение об ошибке:

RuntimeError: Failed to converge after 10000 iterations, value is 5.25182613825

Если я запускаю его за меньшее количество итераций (50), я получаю:

RuntimeError: Failed to converge after 50 iterations, value is 5.25182613825

Сравнивая два значения, оно, очевидно, сходится.Даже если я уменьшу допуск до 10 ^ (- 2), я все равно получу ту же ошибку времени выполнения.

Кто-нибудь знает, почему эта ошибка возникает?

1 Ответ

8 голосов
/ 13 февраля 2012

Оператор возведения в степень в Python - **.Используйте tol=10**(-10) или 1E-10.

^ - поразрядное значение XOR.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...