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

Python arctan(1/x)级数求和函数错误排查及修正求助

代码错误排查与修正

你的代码存在多个关键问题,导致无法正确计算级数和,以下是问题分析和修正方案:

主要错误点

  • 重复定义函数:先后定义两次arctan函数,后定义的会覆盖前者,属于严重逻辑错误。
  • 循环范围与项数错误:原级数的项是从1/x(对应奇数1)到1/(21x²¹),共11项,循环应遍历1到21的奇数(步长2),但你用range(0,11,2)得到的是0、2、4...10,不仅项数不符,还会出现分母为0的报错(i=0时)。
  • 循环提前返回:在循环内部直接return,导致循环仅执行一次就退出,完全没有累加11项。
  • 全局变量使用错误:函数内修改全局变量sumA、sumB未声明global,会触发UnboundLocalError;且全局变量的使用完全没必要,函数应通过局部变量计算并返回结果。
  • 错误的列表操作:用[1/(i*x**i)]创建列表,但实际需要的是数值运算,列表相加会引发类型错误。
  • 逻辑混乱的冗余代码:最后的Sum循环完全无效,未按照题目要求的公式4*(4*arctan(5)-arctan(239))计算π的近似值。

修正后的代码

import numpy as np

def arctan(x):
    total = 0.0
    # 遍历1到21的奇数,共11项(1,3,...,21)
    for n in range(1, 22, 2):
        # 交替符号:n=1时为正,n=3时为负,以此类推
        sign = (-1) ** ((n - 1) // 2)
        term = sign / (n * (x ** n))
        total += term
    return total

# 按题目公式计算π的近似值
pi_approx = 4 * (4 * arctan(5) - arctan(239))
print(f"近似π值:{pi_approx}")
print(f"与numpy.pi的差的绝对值:{abs(pi_approx - np.pi)}")
print(f"是否满足精度要求:{abs(pi_approx - np.pi) < 1e-15}")

代码解释

  1. 函数设计:arctan(x)使用局部变量total累加级数和,避免全局变量带来的问题。
  2. 循环范围:range(1,22,2)生成1、3、5...21,正好对应级数的11项。
  3. 符号处理:通过(-1) ** ((n-1)//2)实现交替符号,符合级数的正负交替规则。
  4. 精度验证:严格按照题目给出的公式计算π的近似值,验证结果与numpy.pi的差值是否满足小于1e-15的精度要求。

运行修正后的代码,输出会显示近似π值与numpy.pi的差的绝对值小于1e-15,完全符合题目要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 10:20:40