有一个连续时间系统如下所示:
matlab代码如下:
t=0.01;
syms s;
a2=[0 0 -285.7143;0 -0.4533 9.0662;5.2650 -5.2131 -42.5958];
b2=[571.4286;0;82.5714];
c2=[1 0 0];
A2=expm(a2*t);
B2=(int(expm(a2*s),0,t)*b1);
但是,当我计算 B1 时,计算机显示“输出被截断”。
请帮我。
多谢。
有一个连续时间系统如下所示:
matlab代码如下:
t=0.01;
syms s;
a2=[0 0 -285.7143;0 -0.4533 9.0662;5.2650 -5.2131 -42.5958];
b2=[571.4286;0;82.5714];
c2=[1 0 0];
A2=expm(a2*t);
B2=(int(expm(a2*s),0,t)*b1);
但是,当我计算 B1 时,计算机显示“输出被截断”。
请帮我。
多谢。
我认为没有必要对矩阵值函数的积分使用符号数学。相反,您可以integral
使用'ArrayValued'
选项:
t = 0.01;
a2 = [0 0 -285.7143;
0 -0.4533 9.0662;
5.2650 -5.2131 -42.5958];
integral(@(s)expm(a2*s),0,t,'ArrayValued',true)
这要快得多,并且返回的结果非常相似syms s;
double(int(expm(a2*s),s,0,t))
(由于数值错误而忽略了微小的虚部)。另请参阅此问题。