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
相关产品推荐
相关产品推荐

