Алгоритм нахождения корня n-ной степени

Материал из testwiki
Перейти к навигации Перейти к поиску

Арифметическим корнем n-ной степени An положительного действительного числа A называется положительное действительное решение уравнения xn=A (для целого n существует n комплексных решений данного уравнения, если A>0, но только одно является положительным действительным).

Существует быстросходящийся алгоритм нахождения корня n-ной степени:

  1. Сделать начальное предположение x0;
  2. Задать xk+1=1n((n1)xk+Axkn1);
  3. Повторять шаг 2, пока не будет достигнута необходимая точность.

Частным случаем является итерационная формула Герона для нахождения квадратного корня, которая получается подстановкой n=2 в шаг 2: xk+1=(xk+A/xk)/2.

Существует несколько выводов данного алгоритма. Одно из них рассматривает алгоритм как частный случай метода Ньютона (также известного как метод касательных) для нахождения нулей функции f(x) с заданием начального предположения. Хотя метод Ньютона является итерационным, он сходится очень быстро. Метод имеет квадратичную скорость сходимости — это означает, что число верных разрядов в ответе удваивается с каждой итерацией (то есть увеличение точности нахождения ответа с 1 до 64 разрядов требует всего лишь 6 итераций, но не стоит забывать о машинной точности). По этой причине данный алгоритм используют в компьютерах как очень быстрый метод нахождения квадратных корней.

Для больших значений n данный алгоритм становится менее эффективным, так как требуется вычисление xkn1 на каждом шаге, которое, тем не менее, может быть выполнено с помощью алгоритма быстрого возведения в степень.

Вывод из метода Ньютона

Метод Ньютона — это метод нахождения нулей функции f(x). Общая итерационная схема:

  1. Сделать начальное предположение x0;
  2. Задать xk+1=xkf(xk)f(xk);
  3. Повторять шаг 2, пока не будет достигнута необходимая точность.

Задача нахождения корня n-ой степени может быть рассмотрена как нахождение нуля функции f(x)=xnA, производная которой равна f(x)=nxn1.

Тогда второй шаг метода Ньютона примет вид

xk+1=xkf(xk)f(xk)=xkxknAnxkn1=xk+1n[Axkn1xk]=1n[(n1)xk+Axkn1].

Ссылки

Шаблон:Rq