如何提高此Python代码中的计算精度

问题描述 投票:0回答:1

我正在尝试重现《Math Letters Jr.》第 81 页上的情节(顺便说一句,这是一本很棒的休闲数学书)。该图是使用一对迭代应用的简单函数创建的(即每个循环的输出是下一个循环的输入)。在每个循环中绘制输出 x、y 点应该会产生一个漂亮的复杂点云。然而,当我实现下面的代码时,它在第五十次迭代后陷入了 4 个相同点之间的循环。我认为这是由于我的变量定义精度不够而造成的舍入。我该如何改进?

import matplotlib.pyplot as plt

x = 0
y = 0
vecx = []
vecy = []

for i in range(5000):
    x = 1.3 + 0.3*x + 0.6*x*y - 0.6*y - y**2
    y = 0.1 - 0.7*x + 0.5*(x**2) - 0.8*x*y + 0.1*y - 0.6*(y**2)
    vecx.append(x)
    vecy.append(y)
    
plt.plot(vecx, vecy, 'b.')
python precision
1个回答
0
投票

我尝试了 100 次迭代,它工作正常:

x = 0
y = 0
vecx = []
vecy = []

for i in range(100):
    new_x = 1.3 + 0.3*x + 0.6*x*y - 0.6*y - y**2
    new_y = 0.1 - 0.7*x + 0.5*(x**2) - 0.8*x*y + 0.1*y - 0.6*(y**2)
    vecx.append(x)
    vecy.append(y)

    print('x', x)
    print('y', y)

    x, y = new_x, new_y  # Update x and y for the next iteration
© www.soinside.com 2019 - 2024. All rights reserved.