我在1D中为newton方法编写了一个python代码,并希望用它来计算函数的牛顿分形 
我使用的基本python代码是这样的:
error = 1e-10
resolution = 100
x_range = np.linspace(-2,2,resolution)
y_range = np.linspace(-1,1,resolution)
fraktal = np.zeros(shape=(resolution,resolution))
for i in range(resolution):
for j in range(resolution):
x = x_range[i]
y = y_range[j]
z = complex(x,y)
fraktal[i,j] = newton(z,error)
plt.imshow(fraktal)
plt.show()
Run Code Online (Sandbox Code Playgroud)
我的newton() - 函数返回找到近似xk所需的迭代次数,使得| f(xk)| <1e-10.
我测试了这段代码
它工作,但当我使用我想使用的实际功能,即
,我得到一个溢出错误,"OverflowError:数学范围错误".这是函数f的代码:
import cmath as cm
def f(x):
y = pow(x,4)*cm.cos(x) - 1
return y
Run Code Online (Sandbox Code Playgroud)
我真的不知道如何调试这个.我试图转换为双精度,但我的网络研究表明python已经使用双精度.这是我解决这个问题的唯一想法.
有没有人知道该怎么做?谢谢!
编辑:
def grad(x):
h = 1e-6
y = (f(x+h)-f(x-h))/(2*h)
return y
def newton(x0,error):
k = 1
xk = …Run Code Online (Sandbox Code Playgroud)