Как я могу приблизить 255/sqrt(x) с помощью метода Ньютона?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как я могу приблизить 255/sqrt(x) с помощью метода Ньютона?

Сообщение Anonymous »

Я пытаюсь приблизить 255 / sqrt(x), используя метод Ньютона, чтобы избежать использования деления или операции sqrt() в архитектуре, где эти операции являются дорогостоящими.
Мой вывод:

Код: Выделить всё

y = 255 / sqrt(x)
255 / y^2 = x
f(y) = 255 / y^2 - x = 0
y[n+1] = y[n] - f(y) / f’(y)
f’(y) = -510 / y^3
y[n+1] = y[n] - (255 / y[n]^2 - x) / (-510 / y[n] ^ 3)
y[n+1] = 3/2 * y[n] - x * y[n]^2 / 510
Я проверил это с помощью следующего кода

Код: Выделить всё

# what I want is 255 * isqrt(x) or 255 / sqrt(x)
def inverse_sqrt_newton_255(x, iterations=5):
y = 255. / x
for _ in range(iterations):
y = (1.5 * y) - (x * y * y / 510.)
return y
Однако я обнаружил, что результат всегда отличается от значения sqrt(x)

Код: Выделить всё

inverse_sqrt_newton_255(25) = 10.2
(должно быть 51)
Очевидно, я мог бы умножить результат на sqrt(x), но весь смысл в том, чтобы избежать sqrt() операция.
Для справки: следующее правильно работает для вычисления 1 / sqrt(x):

Код: Выделить всё

def inverse_sqrt_newton(x, iterations=5):
y = 1.0 / x
for _ in range(iterations):
y = y * (1.5 - 0.5 * x * y * y)
return y
Что я делаю не так?

Подробнее здесь: https://stackoverflow.com/questions/792 ... ons-method
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как я могу приблизить 255/sqrt(x) с помощью метода Ньютона?
    Anonymous » » в форуме Python
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Как я могу приблизить 255/sqrt(x) с помощью метода Ньютона?
    Anonymous » » в форуме Python
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Есть ли способ отправить пакет на адрес 255.255.255.255 с помощью TCP?
    Anonymous » » в форуме C++
    0 Ответы
    67 Просмотры
    Последнее сообщение Anonymous
  • Быстрый целочисленный sqrt с использованием Math.Sqrt
    Anonymous » » в форуме C#
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Быстрый целочисленный sqrt с использованием Math.Sqrt
    Anonymous » » в форуме C#
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»