You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何绘制计算e^-x时迭代次数n与误差errorp的关系图?

迭代次数与误差关系图的实现方案

核心问题

原代码仅在循环结束后计算最终误差,没有在每轮迭代中记录数据,导致无法生成完整的误差变化曲线。要解决这个问题,需要在每次迭代过程中实时保存迭代次数和对应误差值。

修改后的完整代码

import math
import matplotlib.pyplot as plt

x = float(input())
term = 1
sum_val = 1  # 避免与内置sum函数重名
n = 1
eps = 10**-7

# 初始化存储迭代数据的列表
iteration_counts = []
error_values = []

# 预先计算真实值,减少重复计算
true_exp = math.exp(-x)

while abs(term / sum_val) > eps:
    term = -x / n * term
    sum_val += term
    n += 1
    
    # 计算当前迭代的误差并存储
    current_error = 100 - (sum_val * 100 / true_exp)
    iteration_counts.append(n)
    error_values.append(abs(current_error))

# 输出最终结果
print(f"总迭代次数: {n}")
print(f"e^-x近似值: {sum_val}")
print(f"最终误差: {abs(current_error)} %")

# 绘制关系图
plt.figure(figsize=(10, 6))
plt.plot(iteration_counts, error_values, marker='s', linestyle='--', color='darkred')
plt.xlabel('迭代次数 n')
plt.ylabel('误差百分比 (%)')
plt.title('迭代次数与计算误差的变化关系')
plt.grid(alpha=0.3)
plt.show()

关键调整说明

  • 重命名sum为sum_val:避免覆盖Python内置的sum()函数,防止后续代码出现意外问题。
  • 预计算真实值true_exp:不用在每次迭代中重复调用math.exp(-x),提升代码运行效率。
  • 循环内实时记录数据:每完成一次迭代,就计算当前的误差值,并将迭代次数和误差分别追加到对应的列表中,确保所有迭代步骤的数据都被保存。
  • 优化图表展示:添加标记点、调整线条样式、设置网格透明度,让图表的可读性更强。

内容的提问来源于stack exchange,提问作者Belal Bahaa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 23:20:05