如何基于公式实现无穷级数?Python编写cos_series求和函数结果不符求解
问题排查
- 首先代码缺失
math模块导入,运行时会直接抛出名称错误。 - 符号逻辑错误:原级数的符号规则为第
i项(从0开始计数)的符号是(-1)^i,你当前创建两个分别存储全正、全负项的列表后拼接切片的逻辑完全不符合符号规则,导致项重复、符号计算错误。 - 冗余操作:不需要创建两个列表存储所有项,遍历计算时直接累加即可,减少不必要的内存占用。
修正后代码
import math def cos_series(x, nterms): res = 0 for i in range(nterms): # 计算当前项的符号、分子、分母 sign = (-1) ** i numerator = x ** (2 * i) denominator = math.factorial(2 * i) res += sign * numerator / denominator return res # 测试调用 print(cos_series(math.pi/3, 3))
验证结果
调用cos_series(math.pi/3, 3)时,计算过程为:
第0项:
1 * ( (π/3)^0 / 0! ) = 1
第1项:-1 * ( (π/3)^2 / 2! ) ≈ -0.548311
第2项:1 * ( (π/3)^4 / 4! ) ≈ 0.050107
求和结果:1 - 0.548311 + 0.050107 ≈ 0.501796,和预期结果一致。
内容的提问来源于stack exchange,提问作者Averyf00350
相关产品推荐
相关产品推荐

