MATLAB函数trapz(x, y, n), 其中y是x的积分, 使用梯形法则逼近函数y = f(x)的积分, 并且n(可选)与维度n进行积分。
句法
Z = trapz(Y)Z = trapz (X, Y)Z = trapz (..., dim)
例1
使用MATLAB函数trapz(x, y)估算积分成本

文章图片
并与精确值进行比较, 评估n = 5和n = 10时的百分比误差。
解
确切的值从

文章图片
对于使用梯形法则的逼近, 我们让x5代表n = 5的行向量, x10代表n = 10的向量, 即?x = 1/5和?x = 1/10。相应的值表示为y5和y10, 曲线下的面积分别表示为area5和area10。
创建以下脚本
x5=linspace (1, 2, 5);
x10=linspace (1, 2, 10);
y5=1. /x5;
y10=1. /x10;
area5=trapz (x5, y5), area10=trapz (x10, y10)
MATLAB显示以下结果:
area5 =0.6970area10 =0.6939
使用?x = 1/5时的百分比误差为

文章图片
使用?x = 1/10时的百分比误差为

文章图片
例2
积分

文章图片
其中τ是积分的虚拟变量, 称为误差函数, 在通讯理论中得到广泛使用。当积分的上限为t = 2时, 使用MATLAB trapz(x, y)函数在n = 10的情况下找到该积分下的面积。
解
创建以下脚本
t=linspace (0, 2, 10);
y=exp(-t.^2);
area=trapz (t, y)
MATLAB显示以下结果:
area =0.8818
范例3
非线性电机的i-v(电流-电压)关系由下式给出

文章图片
其中v(t)= sin3t。
无论如何, 找到
瞬时功率为
p(t)= v(t)i(t)= 0.1 sin3t(e0.2sin3t-1)
能量是瞬时能量的整数

文章图片
使用零件积分可以对最后一个积分进行解析, 但这并不容易。我们可以尝试MATLAB int(f, a, b)函数, 其中f是符号表达式, 而a和b分别是积分的下限和上限。
当MATLAB无法找到解决方案时, 它将返回警告。例如, 当使用等式的符号表达式尝试积分时, MATLAB返回以下消息
t=sym('t');
s=int (0.1*sin(3*t) *(exp (0.2*sin(3*t))-1), 0, 10)
执行此脚本后, MATLAB将显示以下消息。
Warning: Explicit integral could not be found.
接下来, 我们将使用MATLAB trapz(x, y)函数通过梯形法则找到并绘制功率和能量。在此示例中, 我们选择n = 100, 因此?x = 1/100。下面的MATLAB脚本将计算和绘制功率。
t=linspace (0, 10, 100);
v=sin (3. *t);
i=0.1. *(exp (0.2.*v)-1);
p=v.*i;
plot(t, p);
grid;
title('Power vs Time');
xlabel('seconds');
ylabel('watts')
【MATLAB Trapz】功率以统一的方式变化, 如图所示

文章图片
下面的MATLAB脚本计算并绘制能量。
energy=trapz (t, p), plot (t, energy, '+');
grid;
title ('Energy vs Time');
...xlabel('seconds');
ylabel('joules')energy =0.1013
因此, 能量的值为0.1013焦耳。能量如图所示:

文章图片
推荐阅读
- MATLAB变量
- MATLAB控制语句
- MATLAB程序设计环境
- MATLAB辛普森法则
- MATLAB梯形法则
- MATLAB图形用户界面
- MATLAB高斯和高斯-乔丹消除
- MATLAB数值积分(正交)
- MATLAB插值详解