||
传统的连续微分方程求解是通过手动转为差分方程,然后for语句求解。而当考虑系统的传感采样和事件触发传输时,控制系统的呈现多维时间尺度。而以最小时间尺度的微分方程对象作为基准时间单位时,需要设置多个时间变量,和使用嵌套for循环以及变量赋值,比较麻烦。因此,需要使用ODE45函数对微分方程求解以简化控制系统仿真流程。
首先,对微分方程进行描述。方法1:通过建立.m文件的方式,建立函数。但对于多智能体系统,需要多个m文件,不便管理。本文推荐使用匿名函数语句对微分方程组进行描述。使用匿名函数的好处是不必为仅需要简短定义的函数编辑和维护文件。
F18_1=@(~,x)[A(1,1)*x(1)+A(1,2)*x(2)+B(1,1)*u1(1,k)+B(1,2)*u1(2,k);
A(2,1)*x(1)+A(2,2)*x(2)+B(2,1)*u1(1,k)+B(2,2)*u1(2,k); ];%
[~,y1]=ode45(F18_1,[0 h], x1(:,k));
x1(:,k+1)=[y1(length(y1),1);y1(length(y1),2)];
https://ww2.mathworks.cn/help/matlab/matlab_prog/anonymous-functions.html
变量 F18_1
是一个函数句柄。@
运算符创建句柄,@
运算符后面的圆括号 ()
包括函数的输入参数。再者,注意输出[~,y1]中为了减少使用变量,用‘~’表示.
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-9-23 16:08
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社