trapz
梯形数值积分
全页折叠
语法
Q = trapz(Y)
Q = trapz(X,Y)
Q = trapz(___,dim)
说明
示例
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。在这种情况下,确切答案有些小,4113。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 = 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。在已知函数表达式的情况下,您可以改用 integral、integral2 或 integral3。
使用 trapz 求二重积分的近似值
I=∫5−5∫3−3(x2+y2)dxdy
要对数值数据的数组执行二重或三重积分运算,请嵌套对 trapz 的函数调用。
I = trapz(y,trapz(x,F,2))
I = 680.2000
trapz 先对 x 求积分以生成列向量。然后,y 上的积分可将列向量减少为单个标量。trapz 稍微高估计确切答案 680,因为 f(x,y) 是向上凹的。
输入参数
全部折叠
Y — 数值数据 向量 | 矩阵 | 多维数组
数值数据,指定为向量、矩阵或多维数组。默认情况下,trapz 沿着其大小不等于 1 的 Y 的第一个维度求积分。
数据类型: single | double复数支持: 是
X — 点间距1 (默认) | 均匀的标量间距 | 坐标向量
点间距,指定为 1(默认值)、均匀标量间距或坐标向量。
如果 X 是标量,则它指定数据点之间的间距为均匀间距,并且 trapz(X,Y) 等于 X*trapz(Y)。 如果 X 是向量,则它指定数据点的 x 坐标,并且 length(X) 必须与 Y 的积分维度大小相同。
数据类型: single | double
dim — 沿其运算的维度 正整数标量
沿其运算的维度,指定为正整数标量。如果不指定维度,则默认为第一个大于 1 的数组维度。
以一个二维输入数组 Y 为例:
trapz(Y,1) 对 Y 的列中的连续元素进行处理并返回行向量。 trapz(Y,2) 对 Y 的行中的连续元素进行处理并返回列向量。
如果 dim 大于 ndims(Y),则 trapz 返回一个由零值组成的数组,其大小与 Y 相同。
详细信息
全部折叠
梯形法
trapz 通过梯形法执行数值积分运算。通过将一个区域分为包含多个更容易计算的区域的梯形,该方法对区间内的积分计算近似值。例如,下面是使用八个均匀间隔的梯形对正弦函数求梯形积分:
对于具有 N+1 个均匀分布的点的积分,近似值为
b∫af(x)dx ≈ b−a2NN∑n=1(f(xn)+f(xn+1))=b−a2N[f(x1)+2f(x2)+...+2f(xN)+f(xN+1)] ,
其中,各点之间的间距等于标量值 b−aN。默认情况下,MATLAB® 使用的间距为 1。
如果各 N+1 点之间的间距不是常量,则公式可以推及到
b∫af(x)dx ≈ 12N∑n=1(xn+1−xn)[f(xn)+f(xn+1)] ,
其中,a=x1 提示 使用 trapz 和 cumtrapz 对离散数据集执行数值积分。如果数据可以用函数表达式表示,则改用 integral、integral2 或 integral3。 trapz 将它执行运算的维度大小减小到 1,并仅返回最终的积分值。cumtrapz 还返回中间积分值,保留它执行运算的维度的大小。 扩展功能 C/C++ 代码生成 使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。 基于线程的环境 使用 MATLAB® backgroundPool 在后台运行代码或使用 Parallel Computing Toolbox™ ThreadPool 加快代码运行速度。 GPU 数组 通过使用 Parallel Computing Toolbox™ 在图形处理单元 (GPU) 上运行来加快代码执行。 分布式数组 使用 Parallel Computing Toolbox™ 在集群的组合内存中对大型数组进行分区。 以下为时间速度数组求路程MATLAB函数,速度单位km/h,路程单位m,时间间隔0.2s function Distance = DistanceCacl(V) V=V./3.6; t=0.2:0.2:length(V)*0.2; Distance=trapz (t,V); end 相关链接
发表评论