小编din*_*aur的帖子

牛顿分形:mathoverflow错误

我在1D中为newton方法编写了一个python代码,并希望用它来计算函数的牛顿分形 F(X)

我使用的基本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.

我测试了这段代码 F(X) 它工作,但当我使用我想使用的实际功能,即 F(X),我得到一个溢出错误,"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)

python numpy python-2.7

5
推荐指数
1
解决办法
303
查看次数

标签 统计

numpy ×1

python ×1

python-2.7 ×1