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

Python阶乘相关级数计算精度偏差,求无库依赖修正建议

修正余弦函数泰勒展开近似值的精度问题

你的代码出现精度差异的核心原因是嵌套循环的递推逻辑不合理,每次计算第i项时都从1重新开始迭代,导致浮点运算的误差被多次累积。我们可以通过优化泰勒项的递推方式来解决这个问题,同时避免导入任何库。

问题分析

余弦函数的泰勒展开式为:

cos(x) = 1 - x²/2! + x⁴/4! - x⁶/6! + ... + (-1)^i * x^(2i)/(2i)!

你的代码中,计算每一项时的嵌套循环逻辑没有利用前一项的结果,而是重复计算,这不仅效率低,还会引入额外的浮点误差。

修正方案

改用递推式计算每一项:第i项可以由第i-1项直接推导而来,公式为:
term_i = term_{i-1} * (-x²) / ((2i-1)*2i)

这样只需要一次循环就能完成所有项的计算,大幅减少浮点运算的次数和误差累积。

修正后的代码

n = int(input("Enter a positive integer n:\n"))
x = float(input("Enter a positive real number x :\n"))

sum_val = 1  # 避免使用关键字sum作为变量名
current_term = 1  # 初始项对应i=0的情况

for i in range(1, n+1):
    # 递推计算当前项
    current_term *= (-x * x) / ((2*i - 1) * (2*i))
    sum_val += current_term

print("w =", sum_val)

测试验证

输入n=5、x=3.14时,运行结果为:
w = -1.0018168365436917
完全符合预期的测试结果。

额外优化说明

  • 避免使用Python内置关键字sum作为变量名,防止潜在的命名冲突
  • 递推式直接复用前一项的计算结果,减少了不必要的浮点运算,从根源上降低了误差累积

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 13:35:25