Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab中的lyapchol命令不起作用_Matlab - Fatal编程技术网

Matlab中的lyapchol命令不起作用

Matlab中的lyapchol命令不起作用,matlab,Matlab,Matlab中的lyapchol命令需要一个具有负特征值的函数,这样才能成功地计算文法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

Matlab中的lyapchol命令需要一个具有负特征值的函数,这样才能成功地计算文法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_新,B_新)

使用lyapchol时出错(第58行) 在“lyapchol(A,B,…)”命令中,A或(A,E)必须具有所有 它们的特征值在左半平面上。 TBR中的错误(第55行) Lc=lyapchol(A,B_新)

帮助李亚普乔尔 连续时间Lyapunov方程的lyapchol平方根解算器

我有一个状态空间模型

谁能帮我一下,或者告诉我为什么lyapchol现在能正常工作?
非常感谢您的帮助。

编辑:在这个解决方案中,我使用了
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

编辑:在这个解决方案中,我使用了
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

我将矩阵转换为平方,现在发生了一些奇怪的事情:/我得到了这样一个错误:在“lyapchol(A,B)”命令中使用lyapchol(第38行)时出错,A必须是平方矩阵。TBR中的错误(第57行)Lc=lyapchol(AA,BB)我正在使用您的数据,没有错误。你有什么版本的MATLAB?是否
大小(A)=6x1
?数组A是否有可能不稳定,尽管它具有负特征值?矩阵A是另外两个数组相乘的结果,因此A=-C^-1*G。然而,当我得到C(C^-1)的反转数组时,我得到一个警告“矩阵对于工作精度是奇异的”。它有什么重要性吗?数组C是可逆的吗?“矩阵对于工作精度来说是奇异的”意味着逆矩阵的计算不精确,但是对于某些特定的精度来说,使用它是很好的。您可以通过
C*C^-1
检查这一点,它必须是
I
身份矩阵。最后,我不认为这会有什么不同。我将我的矩阵转换为平方,现在发生了一些奇怪的事情:/我得到了这样一个错误:在“lyapchol(a,B)”命令中使用lyapchol(第38行)时出错,a必须是平方矩阵。TBR中的错误(第57行)Lc=lyapchol(AA,BB)我正在使用您的数据,没有错误。你有什么版本的MATLAB?是否
大小(A)=6x1
?数组A是否有可能不稳定,尽管它具有负特征值?矩阵A是另外两个数组相乘的结果,因此A=-C^-1*G。然而,当我得到C(C^-1)的反转数组时,我得到一个警告“矩阵对于工作精度是奇异的”。它有什么重要性吗?数组C是可逆的吗?“矩阵对于工作精度来说是奇异的”意味着逆矩阵的计算不精确,但是对于某些特定的精度来说,使用它是很好的。您可以通过
C*C^-1
检查这一点,它必须是
I
身份矩阵。最后,我不认为这会有什么不同。