📜  MATLAB Trapz

📅  最后修改于: 2021-01-07 03:14:16             🧑  作者: Mango

MATLAB Trapz

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时的百分比误差。

确切的值从

对于使用梯形法则进行逼近,我们让x 5代表n = 5的行向量,让x 10代表n = 10的向量,即∆x = 1/5和∆x = 1/10。相应的值表示为y 5和y 10 ,曲线下的面积分别表示为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.6970
area10 =
             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

非线性电机的iv(电流-电压)关系由下式给出

其中v(t)= sin3t。

无论如何,找到

  • 瞬时功率为p(t)= v(t)i(t)= 0.1 sin3t(e 0.2sin3t -1)
  • 能量是瞬时能量的整数MATLAB Trapz

使用零件积分可以对最后一个积分进行解析,但这并不容易。我们可以尝试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脚本计算并绘制能量。

energy=trapz (t, p), plot (t, energy, '+'); grid; title ('Energy vs Time'); ...
xlabel('seconds'); ylabel('joules')
energy =
               0.1013

因此,能量的值为0.1013焦耳。能量如图所示: