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

Python使用Trapezium rule求积分报TypeError的代码调整方法

问题原因

你定义的n_vals、h_vals均为存储多组参数的列表,不能直接作为单个整数/数值传入梯形法计算逻辑:

  • range(1, n_vals)要求传入整数参数,传入列表直接触发类型错误
  • 后续k*h_vals、h_vals*S也属于列表与数值的非法运算
修正方案

在外层添加循环遍历每一组n与对应的h,每次单独计算对应参数下的积分值,所有结果可存入列表方便后续调用。

修正后代码
import math

# 定义积分上下限
a = 0
b = 2
# 生成n的取值列表:n=2^p,p取值1到20
n_vals = [2**p for p in range(1, 21)]
# 生成对应h的取值列表
h_vals = [(b - a)/n for n in n_vals]
# 定义被积函数
f = lambda x: math.exp(x) + x**2
# 存储多组积分结果的列表
integral_results = []

# 遍历每一组参数计算积分
for n, h in zip(n_vals, h_vals):
    S = 0.5 * (f(a) + f(b))
    for k in range(1, n):
        S += f(a + k * h)
    integral = h * S
    integral_results.append(integral)

# 打印所有计算结果
for p, n, res in zip(range(1,21), n_vals, integral_results):
    print(f"p={p}, n={n}, 积分结果={res:.6f}")
结果验证

被积函数的解析解为∫₀² (eˣ + x²)dx ≈ 9.055736,随着n增大,计算结果会逐步逼近该精确值,符合梯形法的收敛规律。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 07:36:04