Сципи: метод Ньютона быстрее с числовыми производными, чем метод секущих - PullRequest
0 голосов
/ 09 марта 2019

Я пытаюсь найти корень уравнения с помощью Ньютона-Рафсона, предоставленного SciPy ( scipy.optimize.newton ).

На данный момент у меня нет fprime значений, которые документация рекомендует использовать, и, насколько мне известно, это означает, что метод Secant используется для поиска корней.

Поскольку метод Ньютона-Рафсона имеет более быструю сходимость, чем метод Секанта, моя интуиция думает, что, возможно, мне следует численно аппроксимировать fprime и представить его так, чтобы использовался метод Ньютона.

Какой методвообще приведет к более быстрой конвергенции / более быстрому фактическому вычислению моих корней?

  1. Просто с помощью scipy.optimize.newton без предоставления fprime (т. Е. Secant Method или
  2. Использование числового дифференцирования для вычисления fprime (например, с numpy.diff) и предоставления егоscipy.optimize.newton, чтобы использовать метод Ньютона-Рафсона.

1 Ответ

3 голосов
/ 09 марта 2019

Книга Числовые рецепты на языке C , 2-е издание, в разделе «9.4. Метод Ньютона-Рафсона с использованием производных» на стр. 365, гласит:

Формула Ньютона-Рафсона также может быть применена с использованием числовой разница в приближении к истинной локальной производной,

f '(x) ≈ (f (x + dx) - f (x)) / dx .

Это, однако, не рекомендуемая процедура для следующих причины: (i) Вы выполняете две функциональные оценки за шаг, поэтому в в лучшем случае суперлинейный порядок сходимости будет только sqrt (2) . (II) Если вы возьмете dx слишком мало, вы будете уничтожены округлением, а если вы принимаете его слишком большим, ваш порядок сходимости будет только линейным, не лучше, чем использовать начальную оценку f '(x_0) для всех последующие шаги Следовательно, Ньютон-Рафсон с числовыми производными (в одном измерении) всегда доминирует секущий метод раздела 9.2.

(Это было отредактировано, чтобы соответствовать ограничениям этого сайта.) Выбор другого метода для повышения точности числовой производной увеличит количество оценок функций и, таким образом, еще больше уменьшит порядок сходимости. Поэтому вы должны выбрать свой первый метод, который заканчивается использованием метода secant для поиска корня.

...