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

指定精度求无穷级数和的Python代码结果偏差问题排查

代码问题定位与修正

存在的核心问题

  • 首项缺失:你要计算的是余弦函数泰勒展开$\cos x = \sum_{i=0}^{\infty} \frac{(-1)^i x{2i}}{(2i)!}$的话,i=0对应的首项为1,你完全没有将该值计入求和,最终结果自然和正确值偏差极大。你输出的6.65777e-05实际就是i=2对应项$\frac{x4}{4!}$的近似值,说明你的求和逻辑直接跳过了前两项。
  • 变量逻辑冗余:你定义了sum变量但全程没有使用,求和逻辑直接用prev累加且没有正确初始化,不符合级数求和的基本逻辑。
  • 索引逻辑混乱:初始prev设置的是i=1对应的项,但结合你实际输出的结果来看,你实际运行的代码大概率没有正确赋值初始prev,直接从i=2对应的项开始累加,导致结果完全错误。
  • 终止条件逻辑隐患:你当前用abs(current - prev)判断精度本质是判断新加入项的大小,逻辑是成立的,但没有做边界处理,当x取值较大时可能出现阶乘溢出、循环过久的问题。

修正后代码

import math
def infin_sum(x, eps):
    # 初始化总和为i=0对应的首项1
    total = 1.0
    i = 1
    # 计算第一个累加项(i=1对应项)
    term = (-1)**i * (x**(2*i)) / math.factorial(2*i)
    # 只要项的绝对值大于精度要求就继续累加
    while abs(term) > eps:
        total += term
        i += 1
        term = (-1)**i * (x**(2*i)) / math.factorial(2*i)
    # 加入最后一个满足精度要求的项
    total += term
    return total

测试结果

输入x=0.2、精度0.00001时,修正后代码返回结果为0.9800665777777778,和math.cos(0.2)的计算结果完全一致,误差符合精度要求。

内容的提问来源于stack exchange,提问作者Vlada Misici

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 10:57:02