我的目标是解决方程称为Lyapunov方程,即发现在以下等式x的系统:求解系统
A*X + X*transpose(A) +Q = 0
加上另一个线性约束是X*v = 0
其中所有矩阵A,X,Q都是n×n矩阵,v是长度为n的向量。
如何在matlab中找到这样的X?
我的目标是解决方程称为Lyapunov方程,即发现在以下等式x的系统:求解系统
A*X + X*transpose(A) +Q = 0
加上另一个线性约束是X*v = 0
其中所有矩阵A,X,Q都是n×n矩阵,v是长度为n的向量。
如何在matlab中找到这样的X?
在Matlab中求解李雅普诺夫方程非常简单。无论是连续和离散Lyapunov方程具有一个内置的功能:
连续Lyapunov方程:lyap
(see Matlab documentation here)
离散Lyapunov方程:dlyap
(see Matlab documentation here)
额外注意事项:如果链接不起作用,或者您想快速检查Matlab函数的文档offlin e,每个内置的Matlab函数都有一个可通过help NameOfTheFunction
访问的简短帮助页面。 此外,通过在Matlab终端中键入doc NameOfTheFunction
,还可以通过示例离线检索网页上可见的扩展帮助页面。
鉴于下列连续Lyapunov方程:
A*X + X*transpose(A) + Q = 0
一个稳定A
和正在Matlab将溶液明确Q
被给定为:
X = lyap(A,Q)
在某些情况下方程略有不同:
A*X + X*B + C = 0
这个等式调用Sylvester方程,并与再解内置在Matlab的Lyapunov函数:
X = lyap(A,B,C)
同样的模拟解决方案的步骤为离散的情况下,李亚普诺夫和Sylvester方程看,其中存在略有不同:
A*X*transpose(A) -X + Q = 0 -> X = dlyap(A,Q)
A*X*B - X + C = 0 -> X = dlyap(A,B,C)
常见堆栈溢出约定是在答案中包含样板解决方案代码。外部链接可能会过期。虽然我同意这种情况在MATLAB官方文档中不太可能,但一小段代码确实可以帮助应对闪耀。 –
我会补充一点。 –
@ChristofVermeersch谢谢,我很清楚这一点。然而,lyap是针对矩阵A是满秩的情况(即A的秩是n)。由于我的矩阵A的排名是n-1 lyap不起作用。但是,添加条件X * v = 0会导致X具有唯一的解决方案。但我在问我该怎么做? – solver
您是否尝试过使用Google寻找解算器?我相信你会找到许多有用的网站。如果你仍然有问题,请根据你的发现修改原来的问题,并尝试。 [我如何问一个好问题?](http://stackoverflow.com/help/how-to-ask) – Arpi