我正试图重现《小数学通讯》第81页上的一个情节.(顺便说一句,这是一本很棒的休闲数学书).该图使用一对迭代应用的简单函数创建(即每个循环的输出是下一个循环的输入).绘制每个循环中的输出x,y点应该会生成一个漂亮的复杂点云.然而,当我实现下面的代码时,在第50次迭代之后,它在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的decimal模块:

from decimal import Decimal, getcontext

# Set the precision for decimal calculations
getcontext().prec = 50  # You can adjust the precision as needed

x = Decimal('0')
y = Decimal('0')
vecx = []
vecy = []

for i in range(5000):
    x_new = Decimal('1.3') + Decimal('0.3') * x + Decimal('0.6') * x * y - Decimal('0.6') * y - y**2
    y_new = Decimal('0.1') - Decimal('0.7') * x + Decimal('0.5') * (x**2) - Decimal('0.8') * x * y + Decimal('0.1') * y - Decimal('0.6') * (y**2)
    x, y = x_new, y_new
    vecx.append(x)
    vecy.append(y)

Python相关问答推荐

Flask:如何在完整路由代码执行之前返回验证

定义同侪组并计算同侪组分析

Python中使用Delivercio进行多个请求

Python:记录而不是在文件中写入询问在多文件项目中记录的最佳实践

Python -根据另一个数据框中的列编辑和替换数据框中的列值

将HTML输出转换为表格中的问题

LAB中的增强数组

如何在Deliveryter笔记本中从同步上下文正确地安排和等待Delivercio代码中的结果?

根据在同一数据框中的查找向数据框添加值

在Python中处理大量CSV文件中的数据

重新匹配{ }中包含的文本,其中文本可能包含{{var}

通过Selenium从页面获取所有H2元素

将数据框架与导入的Excel文件一起使用

用Python解密Java加密文件

用合并列替换现有列并重命名

我如何使法国在 map 中完全透明的代码?

索引到 torch 张量,沿轴具有可变长度索引

dask无groupby(ddf. agg([min,max])?''''

python panda ExcelWriter切换动态公式到数组公式

在代码执行后关闭ChromeDriver窗口