python - Halley 方法的 Python 代码返回给定精度的错误
问题描述
x 的初始近似值是 M,我必须找到所需的迭代次数,直到达到所需的 10e-12 精度。
代码如下:
h = 0.000000000001
import numpy as np
eps = 0.0000000000001
e = np.linspace(0, 1, 100)
M = np.linspace(0, np.pi, 100)
def f(x):
return x - e*np.sin(x) - M
def fp(x):
global h
return (f(x + h) - f(x)) / h
def fpp(x):
global h
return (fp(x + h) - fp(x)) / h
x = M
while True:
fx = f(x)
fpx = fp(x)
xnew = x - (2.0 * fx * fpx) / (2.0 * fpx * fpx - fx * fpp(x))
print (xnew)
if abs(xnew - x) >= eps: break
x = xnew
这将返回一个错误:
if abs(xnew - x) >= eps: break
ValueError: 具有多个元素的数组的真值不明确。使用 a.any() 或 a.all()
我也不明白如何找出while循环内的迭代次数,直到达到所需的精度
解决方案
推荐阅读
- protractor - element.all 总是返回计数为 0
- c# - 处理错误 PInvokeStackImbalance
- java - Kafka --from-begining CLI vs Kafka Java API
- c - 如何使用 SIGINT 从选择中返回
- javascript - iframe 获取父屏幕高度
- angular - 单元测试是否已在 Angular/Redux 中清除所有订阅
- python - 嵌套字典作为 HttpRequest Django
- angular - Ngx-bootstrap:当没有可用选项时禁用下拉按钮
- algorithm - 算法:从用户列表中查找好友
- django - Django/Heroku:致命:角色连接太多