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
。在这种情况下,确切答案有些小,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
— 数值数据
向量 | 矩阵 | 多维数组
Y
数值数据,指定为向量、矩阵或多维数组。默认情况下,
trapz
沿着其大小不等于 1 的
Y
的第一个维度求积分。
数据类型:
single
|
double
复数支持:
是
X
— 点间距
1
(默认) | 均匀的标量间距 | 坐标向量
X
1
点间距,指定为
1
(默认值)、均匀标量间距或坐标向量。
-
如果
X
是标量,则它指定数据点之间的间距为均匀间距,并且
trapz(X,Y)
等于
X*trapz(Y)
。 -
如果
X
是向量,则它指定数据点的 x 坐标,并且
length(X)
必须与
Y
的积分维度大小相同。
数据类型:
single
|
double
dim
— 沿其运算的维度
正整数标量
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<x2< … <xN<xN+1=b 和 (xn+1−xn) 是每对连续点之间的间距。
提示
-
使用
trapz
和
cumtrapz
对离散数据集执行数值积分。如果数据可以用函数表达式表示,则改用
integral
、
integral2
或
integral3
。 -
trapz
将它执行运算的维度大小减小到 1,并仅返回最终的积分值。
cumtrapz
还返回中间积分值,保留它执行运算的维度的大小。
扩展功能
C/C++ 代码生成
使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。
基于线程的环境
使用 MATLAB®
backgroundPool
在后台运行代码或使用 Parallel Computing Toolbox™
ThreadPool
加快代码运行速度。
backgroundPool
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