`scipy.optimize.root` более быстрый поиск корня ⇐ Python
`scipy.optimize.root` более быстрый поиск корня
Я использую scipy.optimize.root с методом hybr (лучший?), чтобы найти корень числовой функции
Я печатаю остаток на каждой итерации
дельта d 117.960112417 дельта d 117.960112417 дельта d 117.960112417 дельта д 117.960048733 дельта d 117.960112427 дельта d 117.960112121 дельта d 1,46141491664 дельта d 0,0322651167588 дельта d 0,000363688881595 дельта д 4.05494689256e-08 Как ускорить поиск корня, увеличив размер шага, особенно между первыми итерациями? Я не знаю, как именно работает алгоритм, но выглядит странно, что 3 первых результата одинаковы, и 3 последующих тоже совершенно идентичны.
Читая документ, я безуспешно пытался изменить фактор eps
РЕДАКТИРОВАТЬ: @sasha, вот очень простая функция, иллюстрирующая проблему
def f(X1,X2): print ' X1 , diff ,normal ' , X1 , X2 - X1 , np.linalg.norm(X2 - X1) возврат X2 - X1 Ха = np.array([1000,1000,1000,1000]) Xb = np.array([2000,2000,2000,2000]) SOL = scipy.optimize.root(f,Xa,(Xb,)) Результат будет следующий В начале у нас есть 3 одинаковые итерации, независимо от длины X
X1, разница, норма [1000 1000 1000 1000] [1000 1000 1000 1000] 2000.0 X1 , диф , норма [ 1000. 1000. 1000. 1000.] [ 1000. 1000. 1000. 1000.] 2000.0 X1 , диф , норма [ 1000. 1000. 1000. 1000.] [ 1000. 1000. 1000. 1000.] 2000.0 X1, разность, норма [1000.0000149 1000.1000.1000.] [999.9999851 1000.1000.1000.] 1999.99999255 X1, разность, норма [1000.1000.0000149 1000.1000.] [1000.999.9999851 1000.1000.] 1999.99999255 X1, разность, норма [ 1000. 1000. 1000.0000149 1000. ] [ 1000. 1000. 999.9999851 1000. ] 1999.99999255 X1, диф, норма [1000.1000.1000.1000.0000149] [1000.1000.1000.999.9999851] 1999.99999255 X1, диф, норма [2000. 2000. 2000. 2000.] [-0. -0. -0. -0.] 4.36239133705e-09 X1 , диф , норма [ 2000. 2000. 2000. 2000.] [ 0. 0. 0. 0.] 0.0
Я использую scipy.optimize.root с методом hybr (лучший?), чтобы найти корень числовой функции
Я печатаю остаток на каждой итерации
дельта d 117.960112417 дельта d 117.960112417 дельта d 117.960112417 дельта д 117.960048733 дельта d 117.960112427 дельта d 117.960112121 дельта d 1,46141491664 дельта d 0,0322651167588 дельта d 0,000363688881595 дельта д 4.05494689256e-08 Как ускорить поиск корня, увеличив размер шага, особенно между первыми итерациями? Я не знаю, как именно работает алгоритм, но выглядит странно, что 3 первых результата одинаковы, и 3 последующих тоже совершенно идентичны.
Читая документ, я безуспешно пытался изменить фактор eps
РЕДАКТИРОВАТЬ: @sasha, вот очень простая функция, иллюстрирующая проблему
def f(X1,X2): print ' X1 , diff ,normal ' , X1 , X2 - X1 , np.linalg.norm(X2 - X1) возврат X2 - X1 Ха = np.array([1000,1000,1000,1000]) Xb = np.array([2000,2000,2000,2000]) SOL = scipy.optimize.root(f,Xa,(Xb,)) Результат будет следующий В начале у нас есть 3 одинаковые итерации, независимо от длины X
X1, разница, норма [1000 1000 1000 1000] [1000 1000 1000 1000] 2000.0 X1 , диф , норма [ 1000. 1000. 1000. 1000.] [ 1000. 1000. 1000. 1000.] 2000.0 X1 , диф , норма [ 1000. 1000. 1000. 1000.] [ 1000. 1000. 1000. 1000.] 2000.0 X1, разность, норма [1000.0000149 1000.1000.1000.] [999.9999851 1000.1000.1000.] 1999.99999255 X1, разность, норма [1000.1000.0000149 1000.1000.] [1000.999.9999851 1000.1000.] 1999.99999255 X1, разность, норма [ 1000. 1000. 1000.0000149 1000. ] [ 1000. 1000. 999.9999851 1000. ] 1999.99999255 X1, диф, норма [1000.1000.1000.1000.0000149] [1000.1000.1000.999.9999851] 1999.99999255 X1, диф, норма [2000. 2000. 2000. 2000.] [-0. -0. -0. -0.] 4.36239133705e-09 X1 , диф , норма [ 2000. 2000. 2000. 2000.] [ 0. 0. 0. 0.] 0.0
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение