Matlab中的lyapchol命令不起作用
Matlab中的lyapchol命令需要一个具有负特征值的函数,这样才能成功地计算文法Wc 我尝试lyapchol(A,B),其中A的特征值为: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
-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
身份矩阵。最后,我不认为这会有什么不同。