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

如何用NumPy和SciPy计算x1-x2区间内蓝线的曲线下面积?

计算离散曲线在指定区间内的曲线下面积

实现步骤

针对只有离散数据点的情况,我们需要先筛选出目标区间内的数据,再用数值积分方法计算面积:

  1. 从原始x、y数据中提取出x值在[x1, x2]范围内的子数据集
  2. 使用numpy.trapz(复合梯形法)或scipy.integrate.simpson(辛普森法)计算该子数据集的积分值

完整代码示例

# 导入所需库
import numpy as np
from scipy.integrate import simpson

# ----------------------
# 1. 替换成你自己的蓝线x、y数据
# ----------------------
# 示例:生成模拟的蓝线离散数据(实际使用时替换为你的真实数据)
x_blue = np.linspace(0, 10, 50)  # x轴数据
y_blue = np.sin(x_blue) + 2     # y轴数据,模拟一条曲线

# ----------------------
# 2. 设置目标计算区间[x1, x2]
# ----------------------
x1 = 2
x2 = 7

# ----------------------
# 3. 筛选目标区间内的数据点
# ----------------------
# 生成布尔索引,筛选出x在[x1, x2]范围内的点
mask = (x_blue >= x1) & (x_blue <= x2)
x_filtered = x_blue[mask]
y_filtered = y_blue[mask]

# ----------------------
# 4. 复合梯形法计算面积
# ----------------------
area_trapz = np.trapz(y_filtered, x_filtered)
print(f"复合梯形法计算的面积: {area_trapz:.4f}")

# ----------------------
# 5. 辛普森法计算面积
# ----------------------
area_simpson = simpson(y_filtered, x_filtered)
print(f"辛普森法计算的面积: {area_simpson:.4f}")

关键说明

  • 数据替换:直接把示例中的x_blue和y_blue替换成你实际拥有的蓝线x、y数组即可
  • 区间筛选:通过布尔索引mask精准提取目标区间内的点,确保只计算指定范围的面积
  • 方法差异:
    • 复合梯形法适配任意数量的离散点,计算逻辑简单,是数值积分的基础方法
    • 辛普森法对平滑曲线的积分精度通常更高,若数据点数量为偶数,scipy会自动处理最后一段区间

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 07:44:53