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

Python实现Simpsons Rule(辛普森法则)计算结果错误问题排查

错误点分析
  • 系数计算错误:辛普森法则最终乘以的系数应为步长除以3,即(rb-lb)/(3*r),原代码错误写为(rb - lb)/(3 * rb),你的测试用例中rb=2、r=4,此处系数错误变为预期值的2倍,直接导致输出从正确的4变为8。
  • 缺少输入合法性校验:辛普森法则要求分割的区间数r必须为偶数,否则计算逻辑不成立,代码未对该情况做校验,传入奇数r时结果必然偏差。
  • 变量命名不规范(非功能性错误):实现的是辛普森法则却命名为trapezoid(梯形法),权重标记使用字符串"4""2"虽能运行但无必要,可改用布尔值或数字降低开销。
修正后代码
def simpsons(lb, rb, r):
    # 校验r为偶数
    if r % 2 != 0:
        raise ValueError("辛普森法则要求分割区间数必须为偶数")
    width = (rb - lb) / r
    currentX = lb
    area = currentX ** 3
    weight = 4
    currentX += width
    while currentX < rb:
        area += weight * (currentX ** 3)
        # 切换权重
        weight = 2 if weight == 4 else 4
        currentX += width
    area += rb ** 3
    # 修正系数计算
    area *= width / 3
    return area

lftBount = int(input("Enter the left bound:"))
rgtBount = int(input("Enter the right bound:"))
Repeat = int(input("How many times do you want:"))
print(simpsons(lftBount, rgtBount, Repeat))
验证说明

用你给出的测试用例a=0、b=2、r=4运行修正后的代码,输出结果为4,和手动计算结果一致。调整r为更大的偶数时,计算精度会同步提升,不会出现大幅波动。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 08:27:03