MATLAB trapz梯形数值积分函数

  • Post author:
  • Post category:其他


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<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

加快代码运行速度。

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



版权声明:本文为happy_baymax原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。