scipy.linalg.solve_discrete_lyapunov¶
- scipy.linalg.solve_discrete_lyapunov(a, q, method=None)[源代码]¶
求解离散的李亚普诺夫方程 \(AXA^H - X + Q = 0\) 。
- 参数
- a, q(M,M)类数组
方阵分别对应于上述方程式中的A和Q。必须有相同的形状。
- method{‘直接’,‘双线性’},可选
求解器的类型。
如果没有给予,则选择成为
direct如果M小于10,并且bilinear不然的话。
- 退货
- xndarray
离散Lyapunov方程的解
参见
solve_continuous_lyapunov计算连续时间Lyapunov方程的解
注意事项
本节介绍可通过‘method’参数选择的可用求解器。默认方法为 直接 如果
M小于10,并且bilinear不然的话。方法 直接 使用离散Lyapunov方程的直接解析解。该算法给出,例如, [1]. 然而,它需要有量纲的系统的线性解。 \(M^2\) 因此,即使对于中等大小的矩阵,性能也会迅速下降。
方法 双线性 使用双线性变换将离散的Lyapunov方程转换为连续的Lyapunov方程 \((BX+XB'=-C)\) 哪里 \(B=(A-I)(A+I)^{{-1}}\) 和 \(C=2(A' + I)^{{-1}} Q (A + I)^{{-1}}\) 。连续方程是Sylvester方程的特例,可以有效地求解。变换算法来自Popov(1964),如中所述 [2].
0.11.0 新版功能.
参考文献
- 1
“时间序列分析”,普林斯顿:普林斯顿大学出版社,1994年。265.打印出来。http://doc1.lbfl.li/aca/FLMF037168.pdf
- 2
题名/责任者:My-T.J.2008年。系统稳定与控制中的Lyapunov矩阵方程。多佛工程丛书。多佛出版公司。
示例
给定的 a 和 q 解算 x :
>>> from scipy import linalg >>> a = np.array([[0.2, 0.5],[0.7, -0.9]]) >>> q = np.eye(2) >>> x = linalg.solve_discrete_lyapunov(a, q) >>> x array([[ 0.70872893, 1.43518822], [ 1.43518822, -2.4266315 ]]) >>> np.allclose(a.dot(x).dot(a.T)-x, -q) True