四时宝库

程序员的知识宝库

MATLAB数值积分(二)——trapz函数求解数值积分

求解数值积分可以使用MATLAB的梯形积分trapz函数,trapz 对数值数据、而不是函数表达式求积分,因此表达式通常无需已知可对数据矩阵使用 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.采用单位间距对数据向量求积分

clc;
clear all;
close all;
Y = [1 4 9 16 25];
Q = trapz(Y)
figure;
plot(Y);



Q =


    42


>>

2.采用非单位间距对数据向量求积分

clc;
clear all;
close all;
x = linspace(0,pi,200);
y = sin(x);
Q = trapz(x,y)
figure;
plot(x,y,'b-*');
xlabel('x');
ylabel('y');
Q =


    2.0000

3.采用非均匀间距对矩阵求积分

clc;
clear all;
close all;
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

4.多个数值积分

 clc;
 clear all;
 close all;
 x = -2:0.1:2;
 y = -2:0.1:2;
 [x1,y1] = meshgrid(x,y);
 z = x1.^2+y1.^2;
 figure;
 mesh(x1,y1,z);
 xlabel('x');
 ylabel('y');
 zlabel('z');
 % trapz 对数值数据、而不是函数表达式求积分,因此表达式通常无需已知可对数据矩阵使用 trapz。
 % 在已知函数表达式的情况下,您可以改用 integral、integral2 或 integral3。
 % 使用 trapz 求二重积分的近似值
 % 要对数值数据的数组执行二重或三重积分运算,请嵌套对 trapz 的函数调用。
 I = trapz(y,trapz(x,z,2))


I =


   42.7200


>>

作 者 | 郭志龙
编 辑 | 郭志龙
校 对 | 郭志龙

本文内容来源于网络,仅供参考学习,如内容、图片有任何版权问题,请联系处理,24小时内删除。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接