Matlab中的命令lyapchol需要A具有负特征值,以便成功计算grammian Wc。
我正在尝试lyapchol(A,B),其中A的特征值是:
-7.702072757196139e+22
-4.204548769720415e+17
-4.132730155685816e+17
-1.469863557258663e+17
-1.341487748044014e+17
-1.245824642151246e+17
而B的特征值是:
3.266756797951905e+30
5.904640027563640e+29
1.072475598423812e+28
3.756253951769876e+27
2.511451875694431e+14
1.031563230676382e+14
如您所见,A的所有特征值都包含在左半平面中,但Matlab给出了错误: 使用lyapchol时出错(第58行) 在“lyapchol(A,B,..)”命令中,A或(A,E)必须具有所有的特征值 左半平面。 TBR出错(第49行) Lc = lyapchol(A_new,B_new)
使用lyapchol时出错(第58行) 在“lyapchol(A,B,..)”命令中,A或(A,E)必须全部 它们的特征值在左半平面上。 TBR出错(第55行) Lc = lyapchol(A,B_new)
帮助lyapchol lyapchol平方根求解器用于连续时间Lyapunov方程。
R = lyapchol(A,B) computes a Cholesky factorization X = R'*R of
the solution X to the Lyapunov matrix equation:
A*X + X*A' + B*B' = 0
All eigenvalues of A must lie in the open left half-plane for R
to exist.
R = lyapchol(A,B,E) computes a Cholesky factorization X = R'*R of
X solving the generalized Lyapunov equation:
A*X*E' + E*X*A' + B*B' = 0
All generalized eigenvalues of (A,E) must lie in the open left
half-plane for R to exist.
我有一个状态空间模型。
有人可以帮助我,或者让我知道为什么lyapchol现在可以正常工作? 非常感谢你。
答案 0 :(得分:0)
修改:在此解决方案中,我使用了您在问题中提供的eA = eig(A);
和eB=eig(B);
。
eA =
1.0e+22 *
-7.702072757196139
-0.000042045487697
-0.000041327301557
-0.000014698635573
-0.000013414877480
-0.000012458246422
eB =
1.0e+30 *
3.266756797951905
0.590464002756364
0.010724755984238
0.003756253951770
0.000000000000000
0.000000000000000
你应该使矩阵平方,这样可行:
AA = diag(eA);
BB = diag(eB);
lyapchol(AA,BB)
ans =
1.0e+20 *
0.083233469335677 0 0 0 0 0
0 6.439004539621816 0 0 0 0
0 0 0.117965196978860 0 0 0
0 0 0 0.069278972388738 0 0
0 0 0 0 0.000000000000005 0
0 0 0 0 0 0.000000000000002
如果您希望结果采用与输入相同的格式,则获取对角线值:
CC = lyapchol(AA,BB)
diag(CC)
ans =
1.0e+20 *
0.083233469335677
6.439004539621816
0.117965196978860
0.069278972388738
0.000000000000005
0.000000000000002