基于塞尔维斯特准则的二次型标量函数的正定性判断
现代控制理论-4-控制系统的稳定性分析

外部稳定性只适用于线性系统,内部稳定性不但适用于线性系 统,而且也适用于非线性系统。对于同一个线性系统,只有在 满足一定的条件下两种定义才具有等价性。
不管哪一种稳定性,稳定性是系统本身的一种特性,只和系统 本身的结构和参数有关,与输入-输出无关。
V ( x)半负定
同时有
& V
(
x
)
-
2
x22
不可能恒为零。
由判据2可知,系统在原点处的平衡状态是渐近稳定的。
27
4.5 李雅普诺夫方法 在线性系统中的应用
28
一、线性定常连续系统的稳定性分析
目的:将李氏第二法定理来分析线性定常系统 x& Ax 的稳定性
讨论:V选&(x择) 二(x次T P型x)函 x&数T PVx +(xx)TPxx& TP(xAx为)T P李x +氏x函T PA数x。
如果d 与初始时刻 t0无关,则称平衡状态xe为一致渐近稳定。
渐近稳定几何表示法:
10
3、大范围渐近稳定
如果对状态空间的任意点,不管初始偏差有多大,都有渐
近稳定特性,即:lim x t
- xe
0
对所有点都成立,称平衡状态xe为大范围渐近稳定的。其
渐近稳定的最大范围是整个状态空间。
必要性:整个状态空间中,只有一个平衡状态。 (假设有2个平衡状态,则每个都有自己的稳定范 围,其稳定范围不可能是整个状态空间。)
(2) 求系统的特征方程:
det(lI
-
A)
l
- 1
求得: l1 2,l2 -3
第七节:二次型的正定性

,
则:
,故f正定,即A正定。同理可证:A负定
T A BB 注:(1)请同学们将上述关于矩阵
。
正负定的判定总结一下 (2)大家可否按不同的体系对上述 关于矩阵正负定的判定进行证明,以 加强推证能力的训练。 (3)关于正负定的运算,应用也可
注:(1)请同学们将上述关于 矩阵正负定的判定总结一下 (2)大家可否按不同的体系对 上述关于矩阵正负定的判定进行 证明,以加强推证能力的训练。 (3)关于正负定的运算,应用 也可总结一下。
,故又得推论2 A正定
。
推论3 A正定
存在可逆矩阵p
' PAP I
,使
2 2 fx (, x ) 3 x 2 x x 3 x 例5.7.1 判断二次型 1 2 1 1 2 2
的正定性。 解方法一: 利用定理5.10的推论1, 求 A的特征值。
3 A 1 1 3
Y BY正定。
反之,如
正定 f YBY
,
Y 0
时, f 0故当
从而 即
X 0 时, Y 0
f X A X Y B Y 0
X 正定 正定即 f XA X XA
f Y B Y 正定。同理
X 负定(不定) f XA
f Y B Y 负定(不定)。
二次型的正定性
§5.7 二次型的正定性 一、正负定的定义 二次型的另一个重要问题是分类问题。 对于标准形式的有心二次曲线椭圆
x2 y2 2 1及双曲线 2 a b
x2 y2 2 1 2 a b
,前者二次型
对于任意一组x,y不 全为零或对任意的
x2 y2 2 2 a b
x X 0 y
现代控制理论-稳定性的判定

BIBO 稳定的充要条件是
G ( s )的 所 有 极 点 都 在 s 平 面 的 左 半 平 面 。
( 3 )、BIBO 稳定和渐进稳定的关系 由于 G ( s )
N (s) D( s) C ( sI A )
1
det( sI A ) sI A
1 2 Cu
2
[1] 思路 :
电感中储能
1 2
Li
2
[ 2 ] 系统的复杂性和多样性 ,使得一个具体的系统 的能量 函数不好直观的找出。李雅普诺夫定义了一个 正定的标量函数
V ( X ) ,作为虚 构的广义能量函数。 然后,根据 V ( X ) 的符号特征
来判断系统 的稳定性。
V (X )
V (X )
[ 2]、若 A的特征值,至少有一个 具有正实部,则原系统 的平
衡状态 X e是不稳定的。
[ 3 ]、若 A 的特征根至少有一个实 部为零,则原非线性系 统的
平衡状态 X e的稳定性取决于高阶导 数项 ( X ),而不能用
A 的特征值符号确定。
例:系统状态方程为
x1 x1 x1 x 2 x 2 x 2 x1 x 2
当 t t 0后, ( t )的运动轨迹始终在 S ( ) 的范围内,称这种系统 为 X
稳定系统。
电气工程学院
( 2 )、
即 如果存在
X 0 X e ( , t 0 ) 或 S
X (t ) X e
欧几里德范数
1 2
或 S ( )
结论:系统是稳定的。
2
式中; X ( t ) X e x 1 x 1 e ) ( x 2 x 2 e ) ( x x ) 2 ( n ne x2 S( )
李雅普诺夫稳定判据.ppt

例4.13 非线性系统的状态方程为
x1 x 2
x2
x1 (x12
x
2 2
)
x1 x2 (x12 x22 )
分析其平衡状态的稳定性。
解:确定平衡点:
xxe2e1
xe2 xe1
xe1(xe21 xe22 ) 0 xe2 (xe21 xe22 ) 0
取Q=I,P
P11
P12
P12
P22
,代入
T
得
0 1
1 P11
1
P12
P12 P22
P11
P12
P12 0
P22
1
1 1
10
0 1
P12
P11
P12
P12
P22 P22
不恒等于0,V (x) 也不恒等于0,因此, 系统平衡状态是大范围渐进稳定的。
李雅普诺夫函数不是唯一的。本例也可
取 则
V ( x)
1 2
[( x1
x2 ) 2
2 x12
x
2 2
]
V (x) (x1 x2 )(x1 x 2 ) 2x1 x1 x2 x 2
根据上述定义容易检验下列标量函数的正定性
1) V (x) = x12 2x22 是正定的;
2) V (x) = (x1 x2 )2 是半正定的,因为当 x1 x2 时 , V ( x) =0;
3)V (x) 0
李雅普诺夫稳定性方法

李雅普诺夫稳定性方法李雅普诺夫第一方法又称间接法,它是通过系统状态方程的解来判断系统的稳定性。
如果其解随时间而收敛,则系统稳定;如果其解随时间而发散,则系统不稳定。
李雅普诺夫第二方法又称直接法,它不通过系统状态方程的解来判断系统的稳定性,而是借助李雅普诺夫函数对稳定性作出判断,是从广义能量的观点进行稳定性分析的。
例如有阻尼的振动系统能量连续减小(总能量对时间的导数是负定的),系统会逐渐停止在平衡状态,系统是稳定的。
由于李雅普诺夫第一方法求解通常很烦琐,因此李雅普诺夫第二方法获得更广泛的应用。
李雅普诺夫第二方法的难点在于寻找李雅普诺夫函数。
迄今为止,尚没有通用于一切系统的构造李雅普诺夫函数的方法。
对于系统[]t ,f x x= ,平衡状态为,0e =x 满足()0f e =x 。
如果存在一个标量函数()x V ,它满足()x V 对所有x 都具有连续的一阶偏导数;同时满足()x V 是正定的;则 (1)若()x V 沿状态轨迹方向计算的时间导数()dt /)(dV Vx x = 为半负定,则平衡状态稳定;(2) 若()x V 为负定,或虽然()x V 为半负定,但对任意初始状态不恒为零,则平衡状态渐近稳定。
进而当∞→∞→)(V x x 时,,则系统大范围渐近稳定;(3) 若()x V为正定,则平衡状态不稳定。
判断二次型x x x P )(V τ=的正定性可由赛尔维斯特(Sylvester )准则来确定,即正定(记作V(x)>0)的充要条件为P 的所有主子行列式为正。
如果P 的所有主子行列式为非负,为正半定(记作V(x)≥0);如果-V(x)为正定,则V(x)为负定(记作V(x)<0);如果-V(x)为正半定,则V(x)为负半定(记作V(x)≤0)。
例:[]正定。
则)(V 01121412110,041110,010x x x 1121412110x x x )(V 321321x x >---->>----=⎥⎥⎦⎤⎢⎢⎣⎡⎥⎥⎦⎤⎢⎢⎣⎡ 例:)x x (x x x )x x (x x x 22212122221121+--=+-=(0,0)是唯一的平衡状态。
§6.4二次型的定性

魏尔斯特拉斯 (1815.10~1897.2)
德国数学家。以ε-δ语言,系统地建立了分析学的严谨基 础;比较系统的完成了二次型的理论,对同时化两个二次型为标 准形给出了一个一般的方法 。
小 结:
1.用正交替换法与配方法化二次型为标准形; 2.正交变换的几何意义; 3.判别实二次型的定性。
例 设 A是 n阶实对称矩阵,证明:当 t充分大时,
定义 对实二次型
f ( x1 , x2 ,
) = X T AX , xn
, cn ,恒有
若对任意n个不全为零的实数 c1 , c2 , (1) f ( c1 , c 2 , (2) f ( c1 , c2 ,
, cn ) > 0 ,则称实二次型 f 是正
, cn ) ≥ 0 ,且至少存在n个不全为
=
T X 0 AX 0
>0
g = Y T BY 是正定二次型。 即
(2)设 g = Y T BY 是正定二次型。因 g = Y T BY 可通过可逆线性替换 Y = C −1 X 化为 f = X T AX , 故由(1)的结论可得
f = X AX
T
是正定二次型。 同理可证,f 与 g 也同为负定、半正定、半负定 或不定。 ▌
A = BT B ; (3)存在不可逆的实矩阵B,使得
(4)A的特征值全部非负,且其中至少有一个等 于零; (5)A的各阶主子式全部非负,且其中至少有一 个等于零。
西尔维斯特 (1814.9~1897.3)
英国数学家,他在二次型的化简和创立标准形理论方面起了 重要作用。西尔维斯特得到了著名的惯性定理,以及利用顺序主 子式判别正定性的西尔维斯特定理。
则 Q是正交矩阵且
⎛9 ⎞ ⎜ ⎟ T −1 18 Q AQ = Q AQ = ⎜ ⎟ ⎜ − 18 ⎟ ⎠ ⎝
系统稳定性及其李雅普诺夫稳定

第四章系统稳定性及其李雅普诺夫稳定4-1 稳定性一般概念对于一个实际的控制系统,其工作的稳定性无疑是一个极其重要的问题,因为一个不稳定的系统在实际应用中是很难有效地发挥作用的。
从直观上看,系统的稳定性就是一个处于稳态的系统,在某一干扰信号的作用下,其状态偏离了原有平衡位置,如果该系统是稳定的,那么当干扰取消后有限的时间内,系统会在自身作用下回到平衡状态;反之若系统不稳定,则系统永远不会回到原来的平衡位置。
系统的稳定一般有外部稳定和内部稳定两种。
外部稳定又称作输出稳定,也就是当系统在干扰取消后,在一定时间内,其输出会恢复到原来的稳态输出。
输出稳定有时描述为系统的BIBO稳定,即有限的系统输入只能产生有限的系统输出。
系统内部稳定主要针对系统内部状态,反映的是系统内部状态受干扰信号的影响。
当扰动信号取消后,系统的内部状态会在一定时间内恢复到原来的平衡状态,则称系统状态稳定。
在经典控制论中,研究对象都是用高阶微分方程或传递函数描述的单输入单输出(SISO)系统,反映的仅是输入输出的关系,不会涉及系统内部的状态。
因此经典控制论中只讨论系统的输出稳定问题。
系统的稳定性是系统本身的特性,与系统的外部输入(控制)无关。
在经典控制论中,我们通过研究线性定常系统的特征根的情况来判断系统的输出稳定性:如果系统的特征根都有负的实部(即都在复平面的左部),则系统输出稳定。
对于n阶线性连续系统,其特征方程为:…………………………(4-1)当n≥4时,要求出其所有特征根是非常困难的,从而要想通过解出高阶系统的特征根来判别系统稳定性也是不现实的。
所以1877年劳斯(Routh)和1895年霍尔维茨(Hurwitz)分别提出了有名的劳斯-霍尔维茨稳定判据,它可以通过线性定常系统特征方程的系数的简单代数运算来判别系统输出稳定性,而不必求出各个特征根。
有关Routh-Hurwitz判据的详细内容请参阅有关经典控制论教材。
当系统不是线性定常系统时,或者对于系统内部状态稳定问题,经典控制论中的方法就不好解决了,这就需要下面介绍的李雅普诺夫(Lyapunov)稳定性的理论。
4.3 李雅普诺夫稳定判据

4.3.1 预备知识
1.标量函数的正定性
标量函数的正定性定义如下: V(x) 0 则称 V ( x ) 是 V(x) 0 ;当 x 0 时, 1)当 x 0 时, 正定的; 2)若 V ( x ) 除原点和某些状态下为零,而其余部分都 大于零,则称 V ( x ) 为半正定的; 3)若 V ( x ) 是正定的,则称 V (x) 是负定的; 4)若 V ( x ) 是半正定的,则称 V (x) 是半负定的; 5)若 V ( x ) 既可以是正值, 也可以是负值,则称 V ( x ) 是 不定的。
P11 P21 n Pn1
P12 P22 Pn 2
P1n P2 n Pnn
( 4.33)
二次型标量函数 V ( x ) 为正定的充要条件是矩阵P的所 有主子行列式为正,即:
1 0
2 0
……
n 0
(4.34)
二次型标量函数 V ( x ) 为负定的充要条件是矩 阵P的各阶主子式满足:
No Image
当 为负定时,平衡状态是渐近稳定的; ( x) ,V ( x ) 当 V 为负定,且 x 时,平衡状态 是大范围渐近稳定的; ( x ) 为半负定时,平衡状态是李氏意义下 当 V 稳定的; ( x) ( x ) 是半负定的, V 当 V 不恒等于0时,平 衡状态是大范围渐近稳定的; ( x ) 为正定时,则平衡状态是不稳定的。 当 V 标量函数称为李雅普诺夫函数。
i
=
0 0
i为偶数 i为奇数
(4.35)
4.3.2 李雅普诺夫稳定判据
若非线性连续系统的状态方程为:
x f ( x , t )
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
{
for(int i=1;i<n;i++)//实现将余子式存入数组b中
{
for(int j=0;j<n;j++)
{
if(j==c)continue;
b[num++]=a[i*n+j];
}
}
num=0;
if(c%2==0)x=1;//i+j(此时行0,故只考虑列)为偶数,加法预算
default:break;
}
printf("\n");
}
}
}
double Mat::Read(int i,int j)
{
return this->data[i*cols+j];
}
(2)Main.cpp
#include "base.h"
void main()
{
Mat A;
int n;
double* a;
flag=1;
}
}
}
if(flag)
cout<<"该矩阵不是实对数矩阵"<<endl;
else Judge_ZD(A);
}
解题步骤如下:
赛尔维斯特判据
,
根据赛尔维斯特(Sylvester),可以通过判断对称矩阵P的定号性来确定二次型函数的定号性。
则
矩阵P正定的充要条件是所有的顺子主子式都是正的,即 ;
矩阵P负定的充要条件是
(三)程序设计流程图:
(四)程序设计实现
输入:矩阵A,n阶方阵
输出:二次型标量函数V(x)是正定的、负定的、既不是正定的也不是负定的
}
}
void Mat::PrintMat()
{
int j;
if(data==NULL)cout<<endl<<"还没给该矩阵赋值"<<endl;
else
{
for(int i=0;i<rows;i++)
{
switch(type)
{
case INT:
case DOUBLE:
for(j=0;j<cols;j++)cout<<”\t”<<data[i*cols+j];
}
}
void Judge(Mat A)
{
int flag=0;
for(int i=0; i<A.rows; i++)
{//判断是否为实对数矩阵
for(int j=i+1; j<A.cols; j++)
{
if(A.Read(i,j) != A.Read(j,i))
{
printf("P(%d,%d)!= P(%d,%d)\n",i,j,j,i);
else x=-1;//i+j为奇数,减法运算
sum += a[c] * Fun(n-1,b) * x;//计算行列式的值
}
return sum;
}
//============求行列式的值(并返回)=================
double Det(Mat A)
{
if(A.cols != A.rows)
r[A.cols-1]=Det(A);
}
if(r[0]==0)flag=0;
else if(r[0]>0)//判断△1,若>0判断是否为正定
{//若<0判断是否为负定,否则都不是
flag=2;
for(i=1; i<n; i++)
if(r[i]<=0)flag=0;
}
else
{
flag=1;
for(i=1; i<n; i++)
switch((i+1)%2)
{
case 0://若偶数<=0,既不是正定也不是负定
if(r[i]<=0)flag=0;
break;
case 1://若奇数>=0,既不是正定也不是负定
if(r[i]>=0)flag=0;
break;
}
}
for(i=0; i<n; i++)cout<<"△"<<i+1<<" = "<<r[i]<<endl;//输出各△的值
A.PrintMat();//输出原矩阵
cout<<endl;
Judge(A);//判断是否为实对数矩阵、正定性
//system("pause");
}
(3)Base.cpp
#include "base.h"
#include "mat.h"
//============用递归法求行列式的值(并返回)=================
for(int i=0; i<n; i++)//实现将a(x,y)的余子式存入B矩阵
{
if(i==x)continue;
for(int j=0; j<n; j++)
{
if(j==y)continue;
B->data[num++] = A.Read(i,j);
}
}
num=0;
}
//========================判断正定性============================
cout<<"请输入方阵的维数:";
cin>>n;
a=new double[n*n];
cout<<"请输入方阵:"<<endl;
for(int i=0;i<n*n;i++)
cin>>a[i];
A.CreateMat(n,n,DOUBLE,a);//创建矩阵A并赋值
cout<<"原矩阵:"<<endl;
窗体顶端
基于塞尔维斯特准则的二次型标量函数的正定性判断
((窗体顶端
窗体底端
(一)任务要求:
参照Leverrier-Faddeeva递推算法的程序设计范例,编写程序实现基于塞尔维斯特准则的二次型标量函数的正定性判断。
要求:编写程序设计报告,含:任务需求分析、程序流程、实现方法、测试验收、源代码等
(二)解析:
double Fun( int n, double *a )
{
if(1==n)return a[0];
double* b;
double sum = 0;//i,j为行与列,sum为行列式的值
int x=0,num=0; //用x判断(-1)^(i+j)的正负
b=new double[(n-1)*(n-1)];//数组用来存放代数余子式
switch(flag)
{
case 0:cout<<"该二次型标量函数V(x)既不是正定的也不是负定的"<<endl;
break;
case 1:cout<<"该二次型标量函数V(x)是负定的"<<endl;
break;
case 2:cout<<"该二次型标量函数V(x)是正定的"<<endl;
break;
data[i] = (int)A[i];
break;
case DOUBLE:
for(i=0; i<r*c; i++)
data[i] = (double)A[i];
break;
default:
data = NULL;
break;
}
else
{
for(i=0; i<r*c; i++)//循环赋值
data[i] = 0;
void Judge_ZD(Mat A)
{
int i, n=A.cols;
int flag;//flag用来判断正负定
double *r;
r = new double[n];// r用来存放各△的值
r[n-1]=Det(A);//求出△n
for(i=n-1; i>0; i--)
{
YuZiShi(A, i,i, &A);//求出矩阵A(i,i)的余子式并覆盖在A中
{
printf("该矩阵的行与列不相等");
return 0;
}
return Fun( A.cols, A.data);
}
//求A矩阵的余子式,结果放在矩阵B中
void YuZiShi(Mat A, int x, int y, Mat* B)
{
int num=0;
int n=A.cols;
B->CreateMat(n-1, n-1, DOUBLE);//创建矩阵B用来存放余子式(Biblioteka )结果(六)程序验证与测试
包含三个cpp文件
Mat.cpp包含类Mat的各成员函数、
Base.cpp实现矩阵的一些基本操作
包括:求行列式的值、
矩阵的余子式、
判断正定性
(1)Mat.cpp
#include "Mat.h"