【python-control】リアプノフ方程式の解を計算

当記事では、python-controlでリアプノフ方程式の解を求める方法について紹介します。

リアプノフ方程式とは

リアプノフ方程式(Lyapunov)とは、システムの安定性を調べるのに使われる式です。
リアプノフ方程式は次のように表されます。

(1) \begin{eqnarray*} \mathbf{A}\mathbf{X}+\mathbf{X}\mathbf{A}^{T}+\mathbf{Q}=0 \end{eqnarray*}

このリアプノフ方程式が方程が任意の正定行列 (\mathbf{Q}>0) に対して唯一の正定解を持つとき、システムが漸近安定となります。
(正定行列は対称行列なので、全ての固有値が正の実数値)
python-controlの「control.lqr」メソッドを用いると、Matlabのlyap関数のようにリカッチ方程式の解Pを計算できます。
※python-controlはMatlab風ライブラリなので、Matlabの資料が役に立ちます

参考文献
1 【制御理論】リアプノフ方程式
2 python-controlドキュメント:lyapメソッドの使い方
3 Matlabドキュメント:lyap関数の使い方

ソースコード

次のシステムのリアプノフ方程式の解を求めるサンプロプログラムです。

from control.matlab import *
import numpy as np
    
def main():
  # システム行列の定義
  A = np.array([[-2, 1],
                [2, -3]])
  Q = np.array([[1, 0],
                [0, 1]])
  # リアプノフ方程式の解Pを計算
  P = lyap(A, Q)
  # 結果表示
  print("リアプノフ方程式の解P=:\n",P)

if __name__ == "__main__":
  main()

実行結果

リアプノフ方程式の解P=:
 [[ 0.35  0.2 ]
 [ 0.2   0.3 ]]
関連記事