Matlab中的命令lyapchol不起作用

时间:2016-10-12 23:17:44

标签: matlab

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现在可以正常工作? 非常感谢你。

1 个答案:

答案 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