现代控制理论课程实验一:线性系统状态空间分析与运动解
一、实验目的
掌握线性系统状态空间标准型、解及其模型转换。
二、实验设备与软件:
MATLAB数值分析软件
三、实验原理:
3.1、求矩阵特征值和特征向量命令格式
[V J]=eig(A)
cv= eig(A)
说明:V特征向量,J是Jordan型;cv是特征值列向量
3.2、求运动的方法
(1)利用Laplace逆变换----适合于连续/离散线性系统
采用ilaplace/ iztrans对传递函数求逆,这种方法一般是零输入情况下求响应。
(2)用连续(离散)状态转移矩阵表示系统解析解----适合于线性定常系统
对连续线性定常系统有:
显然要计算系统状态转移矩阵 ,有多种方法,如定义法、Laplace变换法、Sylvester方法。
在Matlab中采用了Pade逼近求取的方法,调用格式为:phi=expm( )。
对离散线性定常系统有:
3.3、状态方程的数值积分方法----适合于连续的线性和非线性系统
采用直接数值积分可以很容易地处理各种定常/时变和线性/非线性系统。有很多数值积分方法,其中有一类预测-修正数值积分方法+自适应步长调整的算法比较有效。在Matlab/Simulink中包含的多种有效的、适用于不同类型的ODE(Ordinary Differential Equations)求解算法,典型的是Runge-Kutta算法,其通常使用的函数格式如下:
[t,x] = ode45(odefun,[ti,tf],x0,options)----采用四阶、五阶Runge-Kutta算法
[t,x] = ode23(odefun,[ti,tf],x0,options)----采用二阶、三阶Runge-Kutta算法
说明:a.这两个函数是求解非刚性常微分方程组的函数,还有一些求解刚性 常微分方程组的方法,如ode15s ode23s ode23t ode23tb
等。
b.参数options为积分的误差设置,取值为相对误差’reltol’ 和绝对误差’abstol’;[ti,tf]求解的时间范围;x0是初值向量;[t,x]是解。
c. Runge-Kutta算法是最常用的数值方法,请查阅相关资料,阅读算法的原理与计算格式。
下面是一个例子:
3.4、利用Cotrol ToolBox中的离散化求解函数----适合于LTI系统
a.用step()/impulse()函数求取阶跃输入/冲激输入时系统的状态响应:
当系统G是连续的情况下:
调用[y,t,x]=step/impulse(G)会自动对连续系统G选取采样时间范围和采样周期;
调用[y,t,x]=step/impulse(G,ti:Ts:tf)由有户自已定义对连续系统G的采样时间范围和采样周期。
当系统G是离散的情况下:
调用[y,t,x]=step/impulse(G)会按离散系统G给出的采样周期计算;
调用[y,t,x]=step/impulse(G,ti:Ts:tf)时Ts必须与离散系统G给出的采样周期一致。
b.用lsim()函数求取任意输入时系统的状态响应
调用格式:[y,x,t]=lsim(G,u,ti:Ts:tf,x0)(要注意连续系统与离散系统的情况)
c.零输入响应可用initial()函数
调用格式:[y,x,t]=initial(G,x0) (要注意连续系统与离散系统的情况)
3.5、利用Simulink环境求取响应----适于所有系统求取响应
使用Simulink求取线性或非线性系统的响应
调用格式如下:[t,x,y]=sim(‘XX.mdl’, ti:Ts:tf, options,u)