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

Python实现cos(x)泰勒展开函数异常:始终返回1.0的问题排查

问题分析与解决

核心问题:循环内提前返回

你的cosine_approx函数里,return sum写在了for循环的内部,导致循环只执行第一次迭代(i=0)就直接返回结果。第一次迭代计算的是泰勒展开的第一项:((-1)^0)*(x^(0)/factorial_two(0)) = 1*1/1 =1,所以无论x和n取什么值,结果都是1.0。

修复后的余弦近似函数

把return sum移到循环外面,让循环完整执行n+1次迭代:

def cosine_approx(x,n):
    sum = 0 
    for i in range(0, n+1):
        sum += ((-1) ** i) * (x**(2*i)/ factorial_two(i))
    return sum

自定义阶乘函数验证

你的factorial_two函数逻辑是正确的:

  • 当i=0时返回1(对应0!)
  • 当i>0时,计算(2i)!,比如i=1时计算2!,i=2时计算4!,结果都符合预期。替换成math.factorial(2*i)能得到正确结果,也侧面说明这个函数本身没问题。

测试示例

比如调用cosine_approx(math.pi/3, 3),修复后会计算泰勒展开的前4项(i=0到3),结果会接近0.5,符合cos(π/3)的实际值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 23:15:35