Matlab中,可以使用trapz函数获取梯形数值积分。本文将从以下几方面介绍trapz函数:trapz函数常见用法、trapz函数用法说明、trapz函数实例。其中trapz函数实例包括:采用单位间距对数据向量求积分、采用非单位间距对数据向量求积分、采用非均匀间距对矩阵求积分、多个数值积分。
trapz函数帮助文档如下:
>> help trapz
trapz Trapezoidal numerical integration.
Z = trapz(Y) computes an approximation of the integral of Y via
the trapezoidal method (with unit spacing). To compute the integral
for spacing different from one, multiply Z by the spacing increment.
For vectors, trapz(Y) is the integral of Y. For matrices, trapz(Y)
is a row vector with the integral over each column. For N-D
arrays, trapz(Y) works across the first non-singleton dimension.
Z = trapz(X,Y) computes the integral of Y with respect to X using
the trapezoidal method. X and Y must be vectors of the same
length, or X must be a column vector and Y an array whose first
non-singleton dimension is length(X). trapz operates along this
dimension.
Z = trapz(X,Y,DIM) or trapz(Y,DIM) integrates across dimension DIM
of Y. The length of X must be the same as size(Y,DIM)).
Example: If Y = [0 1 2
3 4 5]
then trapz(Y,1) is [1.5 2.5 3.5] and trapz(Y,2) is [2
8];
trapz函数常见用法
Q = trapz(Y)
Q = trapz(X,Y)
Q = trapz(___,dim)
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 的每行求积分。
trapz函数实例
采用单位间距对数据向量求积分
计算数据点之间间距为 1 的向量的积分。
创建数据的数值向量。
Y = [1 4 9 16 25];
Y
包含域 [1, 5] 中的 f(x)=x2 的函数值。
使用 trapz
按单位间距对数据求积分。
>> Q = trapz(Y)
Q =
42
该近似积分生成值 42
。在这种情况下,确切答案有些小,41+1/3。trapz
函数高估积分值,因为 f(x) 是向上凹的。
采用非单位间距对数据向量求积分
计算数据点间距均匀但不等于 1 的向量的积分。
创建域向量。
X = 0:pi/100:pi;
计算 X
的正弦值。
Y = sin(X);
使用 trapz
对 Y
求积分。
>> 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 =
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
。在已知函数表达式的情况下,您可以改用 integral
、integral2
或 integral3
。
使用 trapz
求二重积分的近似值
要对数值数据的数组执行二重或三重积分运算,请嵌套对 trapz
的函数调用。
>> I = trapz(y,trapz(x,F,2))
I =
680.2000
trapz
先对 x 求积分以生成列向量。然后,y 上的积分可将列向量减少为单个标量。trapz
稍微高估计确切答案 680,因为 f(x,y) 是向上凹的。
原创文章,作者:古哥,转载需经过作者授权同意,并附上原文链接:https://iymark.com/articles/3954.html