@uliana00

Как вычислить корень n-ой степени?

Подскажите как вычислить корень n-ой степени с точностью EPS с использованием итерационной формулы Ньютона и количество итераций, за которое достигается эта точность.
  • Вопрос задан
  • 791 просмотр
Пригласить эксперта
Ответы на вопрос 2
@Mercury13
Программист на «си с крестами» и не только
Итак, надо решить такую задачу.
xb = a, a > 0, или xb — a = 0

Метод Ньютона говорит:
xn+1 = xn − f(x) / f′(x)
xn+1 = xn − (xnb — a) / (b·xnb−1) = (xn − a/(xnb−1))/b
Поскольку функция возрастает и выпукла вниз, x1 лучше брать завышенный. Идеал — хаки с дробными числами (например, заполучить порядок и взять начальным приближением 2[ord/b] для отрицательного порядка и 2[ord/b] + 1 для неотрицательного.

[x] — усечение дробного числа, при целом b [ord/b] = ord div b. Чтобы заполучить порядок, похимичить с ним и снова собрать в машинное дробное, можно воспользоваться функциями Delphi Frexp и Ldexp, они очень быстры.

Заканчивать когда |xn+1 − xn| меньше e. Поскольку у метода сходимость квадратичная, почти гарантированно получим нужную нам точность.

Поскольку для проверки точности нам нужны два приближения, n и n+1, их и храним.

И последнее. Поверь мне, прекрасная леди, никто не будет решать тебе учебную задачу до конца.
Ответ написан
Комментировать
@uliana00 Автор вопроса
5a1720d39f347548100608.png
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы