MATLAB线性控制系统分析 - 稳定性分析
1. 线性系统稳定的概念,
如果控制系统在初始条件和扰动下,其瞬态响应随时间的推移而逐渐衰减并趋于原点(原平衡工作点),则称该系统是稳定的;反之,如果控制系统收到干扰作用后,其瞬态响应随时间的推移而发散,输出呈持续震荡过程,或者输出无限制的偏离平衡状态,则称该系统是不稳定的。
2. 线性系统稳定的数学理解
以传递函数的形式理解线性系统稳定性
假设系统的闭环传递函数为:
其Laplace逆变换为:
g(t) 又称为线性系统的脉冲响应函数因为 g(t)=ilaplace(G(s)∗1)
所以对于一个稳定的线性系统,必须要求 a1≥0 ,否则, g(t) 会发散。
a1 为系统特征值的一个代表。
另外根据线性系统响应原理,系统的响应为:
输入信号与脉冲响应信号的卷积,如果脉冲响应信号发散,
系统的响应就会发散,进而可以判断,系统是不稳定的。
以状态方程的形式理解线性系统稳定性
连续系统的的状态方程模型为:
根据状态方程
所以
有上式可知,如果 x(t) 渐进稳定,A矩阵的特征值必须为小于等于0的数。
3. MATLAB的实现方式以及案例分析
有控制理论可知,系统A的特征根和系统的极点是完全一样的,所以如果内获得系统的极点,我们就可以很容易来判断给定线性系统的稳定性。
在控制理论发展初期,由于没有直接可用的计算机软件来求取高阶多项式的根,所以,无法用求根的方法直接判断系统的稳定性,因而出现了一些间接方法,例如控制理论中的Roth判据,Hurwite判据和Lyapunov判据等。
随着计算机和数值积分的发展,我们可以借助类似MATLAB这样的语言,直接获取线性系统的特征值,进而直接判断线性系统的稳定性。
MATLAB提供了一下几个方法查看极点的分布
- 用roots直接求取特征方程的解
- 用pole直接输出系统方程的特征值
- 用pzmap直接在虚轴实轴绘制极点和零点的分布
- 用eig求取系统矩阵A的eigenvalue
例如1
clear all;clc
num=[1 2 3];
den=[1 2 3 4 5 6];
sys=tf(num,den);
p=roots(den)
运行结果为:
p =
0.5517 + 1.2533i
0.5517 - 1.2533i
-1.4918 + 0.0000i
-0.8058 + 1.2229i
-0.8058 - 1.2229i
例如2
clear all;clc
num=[1 2 3];
den=[1 2 3 4 5 6];
sys=tf(num,den);
p=pole(sys)
运行结果为:
p =
0.5517 + 1.2533i
0.5517 - 1.2533i
-1.4918 + 0.0000i
-0.8058 + 1.2229i
-0.8058 - 1.2229i
例如3
clear all;clc
num=[1 2 3];
den=[1 2 3 4 5 6];
sys=tf(num,den);
pzmap(sys)
grid on
运行结果为:
例如4
clear all;clc
num=[1 2 3];
den=[1 2 3 4 5 6];
sys=tf(num,den);
[A,B,C,D]=tf2ss(num,den);
p=eig(A)
运行结果为:
p =
0.5517 + 1.2533i
0.5517 - 1.2533i
-1.4918 + 0.0000i
-0.8058 + 1.2229i
-0.8058 - 1.2229i
另外,我们也可以直接用MATLAB提供的函数isstable(sys)来直接判断线性系统是否稳定,如果返回值为1,则系统稳定,否则不稳定。
例如
clear all;clc
num=[1 2 3];
den=[1 2 3 4 5 6];
sys=tf(num,den);
key=istable(sys)
结果为:
key =
logical
0
所以系统是不稳定的。
更多动力学知识,请参考这里
最后欢迎大家点赞,转发,加关注。更多精彩会持续更新!!