Я не могу заставить эту часть моей программы войти в цикл while. После подстановки значений для poly
, x_0
и epsilon
программа вычисляет значение для ans
с помощью функции evaluate_poly()
, которая работает правильно и в моем конкретном случае дает ответ -13.2119
. Мое используемое значение эпсилон равно 0.0001
. Поскольку abs(ans)
на самом деле больше, чем epsilon
, почему он пропускает цикл?
Я разместил оператор print ans
прямо под строкой x_01 = 0
, чтобы убедиться, что он правильно вычисляет перед циклом while, а также оператор print epsilon
, чтобы убедиться, что он правильно принимает мое значение epsilon
(что он и делает).
def compute_root(poly, x_0, epsilon):
"""uses newton's method to find a root of a polynomial function"""
ans = evaluate_poly(poly, x_0)
x_01 = 0
while abs(ans) > epsilon:
Dpoly = compute_deriv(poly)
Fprime = evaluate_poly(Dpoly, x_01)
return ans
x_01 = x_0 - (ans/Fprime)
print x_01
return x_01
print ans
>>> abs(-13.2119) > 0.0001
возвращаетTrue
- person njzk2   schedule 16.06.2013