當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python SciPy linalg.solve_discrete_lyapunov用法及代碼示例


本文簡要介紹 python 語言中 scipy.linalg.solve_discrete_lyapunov 的用法。

用法:

scipy.linalg.solve_discrete_lyapunov(a, q, method=None)#

求解離散 Lyapunov 方程

參數

a, q (M, M) 數組

分別對應上式中的 A 和 Q 的方陣。必須具有相同的形狀。

method {‘direct’, ‘bilinear’},可選

求解器的類型。

如果沒有給出,如果M小於10,則選擇direct,否則選擇bilinear

返回

x ndarray

離散李雅普諾夫方程的解

注意

本節介紹可通過 ‘method’ 參數選擇的可用求解器。默認方法是直接的如果M小於 10 並且bilinear否則。

方法直接的使用離散 Lyapunov 方程的直接解析解。該算法在例如,[1].但是,它需要具有維數的係統的線性解\(M^2\) 因此即使是中等大小的矩陣,性能也會迅速下降。

方法雙線性使用雙線性變換將離散的李雅普諾夫方程轉換為連續的李雅普諾夫方程\((BX+XB'=-C)\) 其中\(B=(A-I)(A+I)^{-1}\) \(C=2(A' + I)^{-1} Q (A + I)^{-1}\) .連續方程可以有效求解,因為它是 Sylvester 方程的特例。變換算法來自 Popov (1964),如[2].

參考

[1]

Hamilton, James D. 時間序列分析,普林斯頓:普林斯頓大學出版社,1994 年。265。印刷。 http://doc1.lbfl.li/aca/FLMF037168.pdf

[2]

Gajic、Z. 和 M.T.J.庫雷希。 2008. 係統穩定性和控製中的 Lyapunov 矩陣方程。多佛工程叢書。多佛出版物。

例子

給定 a 和 q 求解 x:

>>> import numpy as np
>>> 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

相關用法


注:本文由純淨天空篩選整理自scipy.org大神的英文原創作品 scipy.linalg.solve_discrete_lyapunov。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。