对于一个线性系统,系统稳定性(stability)可以帮助判断随着时间的推移系统是否能够收敛至某一个值从而达到稳定。系统稳定性通常依赖于状态变量,系统输入,以及系统输出来判定。其中,系统由自身性质决定的稳定性被称作渐进稳定性(asymptotic stability),其与系统输入输出均无关,因此渐进稳定性代表了系统自然响应时的内稳定性(internal stability);系统由输入和输出信号相关的稳定性称为有界输入有界输出(bounded input-bounded output)稳定性,其与外界变量有关,因此有界输入有界输出稳定性表征系统受迫响应时的外稳定性(external stability)。
给定一个线性时不变系统的状态空间方程:

判断其渐进稳定性时,由于与系统输入输出无关,故将系统输入及输出移除,简化为如下系统:

系统初始状态为x0且x0大小是有界的(||x0||<v,v为有界正实数),简化系统的解析解如下所示:

其中,T为由A矩阵的特征向量组成的转换矩阵,L为由A矩阵的特征值组成的对角矩阵。若L矩阵中最大的特征值实部为负(max(λ)=max(σ)±jω, max(σ)<0),系统所有的特征值将位于复平面左侧。当时间t趋近于无穷时,系统将收敛至0。此时系统被称作是渐进稳定(asymptotically stable)的。注意,此种判断方式仅对于线性系统有效。
沿用前一部分的线性时不变系统,判断有界输入有界输出稳定性时,考虑输入和输出,令输入||u(t)||<d(d为有界正实数),系统输出可由如下卷积得到:

上式中,g(t)=C*expm(At)*B为系统的冲激响应。
对于一个线性时不变系统,其输出中必然存在输入与系统冲激响应与输入的卷积分量。系统输入有界,为使系统的输出是有限的,系统的冲激响应的模(绝对值)需要在时间区间[0,∞)内绝对可积(积分值有界),即:

当时间t趋近于无穷时,冲激响应的模为0,冲激响应是可积的。当矩阵A最大特征值实部位于复平面左侧时,不等式右侧的值为有界的,在冲激响应和输入均有界的情况下,由输出的卷积式可得知其大小也是有界的。若输出为有界的(||y(t)||<e(e为有界正实数)),此时系统是有界输入有界输出稳定的。同时由冲激响应卷积式可知,当线性时不变系统是渐进稳定的,其也满足有界输入有界输出稳定性。
本案例给出两个不同系统分别进行渐进稳定性和有界输入有界输出稳定性验证。
系统一用于验证系统的渐进稳定性。系统设置为:A1 = [0 1;1 0],B1 = [0;1],C1 = [1 0;0 1],D1 = [0;0]。系统特征值为1,-1。由于该系统最大特征值实部位于复平面右侧,系统并非渐进稳定的。取x0 = [1;0.5],绘制系统无输入时的状态随时间的变化。

由上图可知,系统逐渐偏移原点,与非渐进稳定结论相符。
系统二用于验证有界输入有界输出稳定性。系统设置为:A2 = [0 1;-1 -1],B2 = [0;1],C2 = [1 0],D2 = 0。绘制系统的冲激响应:

在时间趋近于无穷时,冲激响应的大小趋近于0,冲激响应可积,因此系统输出有界。当系统输入有界时,系统将满足有界输入有界输出稳定性。令输入u(t)=2,绘制系统输出随时间的变化:

从图中可以观察到系统的输出不超过一个最大值,满足有界输入有界输出稳定性。
文本系统设置,操作,绘图代码如下:
%初始化
clear all; close all; clf(); clc;%系统设置 A1 = [0 1;1 0]; B1 = [0;1]; C1 = [1 0;0 1]; D1 = [0;0]; %验证系统的渐进稳定性 [T1,d1] = eig(A1); fprintf('系统特征值为:%.2f, %.2f',d1(1,1),d1(2,2));
%绘制系统状态变化
%开始时间,采样时间,结束时间 t_start = 0; ts = 0.01; t_end = 3; %设置时间变量 t = t_start:ts:t_end; %建立状态空间系统 sys1 = ss(A1,B1,C1,D1); %零输入 u = zeros(size(t)); %系统初始状态 x0 = [1;0.5]; %系统动态 x = lsim(sys1,u,t,x0); %绘制结果 figure(1);clf(); plot(t',x(:,1),t',x(:,2));legend('x1','x2'); xlabel('时间(s)');ylabel('x');title('系统一自然响应'); %系统设置A2 = [0 1;-1 -1]; B2 = [0;1]; C2 = [1 0]; D2 = 0; %建立状态空间系统 sys2 = ss(A2,B2,C2,D2); %绘制系统的冲激响应 figure(2);clf(); [y2, t] = impulse(sys2); figure(2);clf(); plot(t, y2); xlabel('时间(s)'); ylabel('g'); title('系统二冲激响应');
%绘制系统输出变化
%开始时间,采样时间,结束时间 t_start = 0; ts = 0.01; t_end = 100; %设置时间变量 t = t_start:ts:t_end; %输入 u = 2*ones(size(t)); %系统动态 y = lsim(sys2,u,t); %绘制结果 figure(3);clf(); plot(t',y); xlabel('时间(s)');ylabel('y');title('系统二输出');