Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

trapz

梯形数值积分

说明

Q = trapz(Y) 通过梯形法计算 Y 的近似积分(采用单位间距)。Y 的大小确定求积分所沿用的维度:

  • 如果 Y 为向量,则 trapz(Y)Y 的近似积分。

  • 如果 Y 为矩阵,则 trapz(Y) 对每列求积分并返回积分值的行向量。

  • 如果 Y 是多维数组,则 trapz(Y) 对大小不等于 1 的第一个维度求积分。该维度的大小变为 1,而其他维度的大小保持不变。

示例

Q = trapz(X,Y) 根据 X 指定的坐标或标量间距对 Y 进行积分。

  • 如果 X 是坐标向量,则 length(X) 必须等于 Y 的大小不等于 1 的第一个维度的大小。

  • 如果 X 是标量间距,则 trapz(X,Y) 等于 X*trapz(Y)

示例

Q = trapz(___,dim) 使用上述任意语法沿维度 dim 求积分。必须指定 Y,也可以指定 X。如果指定 X,则它可以是长度等于 size(Y,dim) 的标量或向量。例如,如果 Y 为矩阵,则 trapz(X,Y,2)Y 的每行求积分。

示例

示例

全部折叠

计算数据点之间间距为 1 的向量的积分。

创建数据的数值向量。

Y = [1 4 9 16 25];

Y 包含域 [1, 5] 中的 f(x)=x2 的函数值。

使用 trapz 按单位间距对数据求积分。

Q = trapz(Y)
Q = 42

该近似积分生成值 42。在这种情况下,确切答案有些小,4113trapz 函数高估积分值,因为 f(x) 是向上凹的。

计算数据点间距均匀但不等于 1 的向量的积分。

创建域向量。

X = 0:pi/100:pi;

计算 X 的正弦值。

Y = sin(X);

使用 trapzY 求积分。

Q = trapz(X,Y)
Q = 1.9998

当点之间的间距不变但不等于 1 时,为 X 创建向量的替代方法是指定标量间距值。在这种情况下,trapz(pi/100,Y)pi/100*trapz(Y) 相同。

对具有非均匀数据间距的矩阵的行求积分。

创建一个 x 坐标向量和一个按不规则间隔测得的观测值矩阵。Y 中的行代表在 X 中各时间处测得的速度数据,分别来自三次不同的试验。

X = [1 2.5 7 10];
Y = [5.2   7.7   9.6   13.2;
     4.8   7.0  10.5   14.5;
     4.9   6.5  10.2   13.8];

使用 trapz 分别对每一行进行积分,然后求出每次试验中经过的总距离。由于数据不是按固定间隔计算的,因此指定 X 来表示数据点之间的间距。由于数据位于 Y 的行中,因此指定 dim = 2

Q1 = trapz(X,Y,2)
Q1 = 3×1

   82.8000
   85.7250
   82.1250

结果为积分值的列向量,Y 中的每行对应一个列向量。

创建一个由域值构成的网格。

x = -3:.1:3; 
y = -5:.1:5; 
[X,Y] = meshgrid(x,y);

计算网格上的函数 f(x,y)=x2+y2

F = X.^2 + Y.^2;

trapz 对数值数据、而不是函数表达式求积分,因此表达式通常无需已知可对数据矩阵使用 trapz。在已知函数表达式的情况下,您可以改用 integralintegral2integral3

使用 trapz 求二重积分的近似值

I=-55-33(x2+y2)dxdy

要对数值数据的数组执行二重或三重积分运算,请嵌套对 trapz 的函数调用。

I = trapz(y,trapz(x,F,2))
I = 680.2000

trapz 先对 x 求积分以生成列向量。然后,y 上的积分可将列向量减少为单个标量。trapz 稍微高估计确切答案 680,因为 f(x,y) 是向上凹的。

输入参数

全部折叠

数值数据,指定为向量、矩阵或多维数组。默认情况下,trapz 沿着其大小不等于 1 的 Y 的第一个维度求积分。

数据类型: single | double
复数支持:

点间距,指定为 1(默认值)、均匀标量间距或坐标向量。

  • 如果 X 是标量,则它指定数据点之间的间距为均匀间距,并且 trapz(X,Y) 等于 X*trapz(Y)

  • 如果 X 是向量,则它指定数据点的 x 坐标,并且 length(X) 必须与 Y 的积分维度大小相同。

数据类型: single | double

沿其运算的维度,指定为正整数标量。如果不指定维度,则默认为第一个大于 1 的数组维度。

以一个二维输入数组 Y 为例:

  • trapz(Y,1)Y 的列中的连续元素进行处理并返回行向量。

    trapz(Y,1) column-wise computation

  • trapz(Y,2)Y 的行中的连续元素进行处理并返回列向量。

    trapz(Y,2) row-wise computation

如果 dim 大于 ndims(Y),则 trapz 返回一个由零值组成的数组,其大小与 Y 相同。

详细信息

全部折叠

梯形法

trapz 通过梯形法执行数值积分运算。通过将一个区域分为包含多个更容易计算的区域的梯形,该方法对区间内的积分计算近似值。例如,下面是使用八个均匀间隔的梯形对正弦函数求梯形积分:

The plot of one period of the sin(x) function with eight trapezoids underneath the curve to estimate its area

对于具有 N+1 个均匀分布的点的积分,近似值为

abf(x)dxba2Nn=1N(f(xn)+f(xn+1))=ba2N[f(x1)+2f(x2)+...+2f(xN)+f(xN+1)],

其中,各点之间的间距等于标量值 baN。默认情况下,MATLAB® 使用的间距为 1。

如果各 N+1 点之间的间距不是常量,则公式可以推及到

abf(x)dx12n=1N(xn+1xn)[f(xn)+f(xn+1)],

其中,a=x1<x2<...<xN<xN+1=b(xn+1xn) 是每对连续点之间的间距。

提示

  • 使用 trapzcumtrapz 对离散数据集执行数值积分。如果数据可以用函数表达式表示,则改用 integralintegral2integral3

  • trapz 将它执行运算的维度大小减小到 1,并仅返回最终的积分值。cumtrapz 还返回中间积分值,保留它执行运算的维度的大小。

扩展功能

版本历史记录

在 R2006a 之前推出