Main Content

lyap

連続時間リアプノフ方程式を解く

説明

lyap は、特別な、または一般的なリアプノフ方程式を解くために使用します。リアプノフ方程式は、システムの平方根平均二乗 (RMS) 動作の安定性理論や調査など、さまざまな制御領域で使用されます。

X = lyap(A,Q) は、リアプノフ方程式 AX+XAT+Q=0 の解を返します。ここで、AQ は同じサイズの正方行列を表します。Q が対称行列の場合、解 X も対称行列になります。

X = lyap(A,B,C) は、Sylvester 方程式 AX+XB+C=0 の解を返します。ここで、入力 A は m 行 m 列の行列、入力 B は n 行 n 列の行列、CX はいずれも m 行 n 列の行列です。

X = lyap(A,Q,[],E) は、一般化されたリアプノフ方程式 AXET+EXAT+Q=0 を解きます。ここで、Q は対称行列です。この構文には空の大かっこ [] を使用しなければなりません。大かっこの中に値を入れると、関数はエラーを返します。

すべて折りたたむ

この例では、リアプノフ方程式を解く方法を示します。

AX+XAT+Q=0,

ここで、

A=[12-3-4] および Q=[3111] です。

A 行列は安定で、Q 行列は正定値です。

行列を定義します。

A = [1 2; -3 -4];  
Q = [3 1; 1 1];

リアプノフ方程式を解くには、lyap 関数を使用します。

X = lyap(A,Q)
X = 2×2

    6.1667   -3.8333
   -3.8333    3.0000

関数は対称行列 X を返します。X が正定値であるかどうかを確認するために、固有値を計算できます。

eig(X)
ans = 2×1

    0.4359
    8.7308

解は正定値です。

この例では、Sylvester 方程式を解く方法を示します。

AX+XB+C=0,

ここで、A=5B=[4333]、および C=[21] です。

行列を定義します。

A = 5;
B = [4 3; 3 3];
C = [2 1];

これらの ABC の値について、lyap 関数を使用して Sylvester 方程式を解きます。

X = lyap(A,B,C)
X = 1×2

   -0.2063   -0.0476

結果は 1 行 2 列の行列になります。

この例では、一般化されたリアプノフ方程式 AXET+EXAT+Q=0 を解く方法を示します。

乱数値をもつ行列 AE を生成します。

rng(0)
A = rand(2)
A = 2×2

    0.8147    0.1270
    0.9058    0.9134

E = randn(2)
E = 2×2

    0.3188   -0.4336
   -1.3077    0.3426

複素数値をもつ対称行列 Q を生成します。

Q = complex(randn(2),randn(2));
Q = Q*Q'
Q = 2×2 complex

  15.6642 + 0.0000i   5.6211 + 4.1271i
   5.6211 - 4.1271i  16.9265 + 0.0000i

一般化されたリアプノフ方程式を解きます。

X = lyap(A,Q,[],E)
X = 2×2 complex

  -2.0000 + 0.0000i  19.6841 - 3.6552i
  19.6841 + 3.6552i  20.9934 + 0.0000i

X は 2 行 2 列の対称行列になります。

入力引数

すべて折りたたむ

入力行列。次のサイズの行列として指定します。

  • AQEmm 列の正方行列

  • Bnn 列の行列

  • Cmn 列の行列

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fi
複素数のサポート: あり

出力引数

すべて折りたたむ

解。行列として返されます。リアプノフ方程式の場合、解 Xmm 列の正方行列です。Sylvester 方程式の場合、解 XC と同じサイズの行列です。

制限

連続リアプノフ方程式は、A の固有値 α1,α2,...,αn および B の固有値 β1,β2,...,βn がすべてのペア (i,j) について αi+βj0 を満たす場合に一意の解をもちます。

この条件に違反が生じると、lyap はエラー メッセージを生成します。

Solution does not exist or is not unique.

アルゴリズム

lyap はリアプノフ方程式に SLICOT ルーチン SB03MD および SG03AD を、Sylvester 方程式に SB04MD (SLICOT) と ZTRSYL (LAPACK) を使用します。

参照

[1] Bartels, R. H., and G. W. Stewart. “Algorithm 432 [C2]: Solution of the Matrix Equation AX + XB = C [F4].” Communications of the ACM 15, no. 9 (September 1972): 820–26. https://doi.org/10.1145/361573.361582.

[2] Barraud, A. “A Numerical Algorithm to solveA^{T}XA - X = Q.” IEEE Transactions on Automatic Control 22, no. 5 (October 1977): 883–85. https://doi.org/10.1109/TAC.1977.1101604.

[3] Hammarling, S. J. “Numerical Solution of the Stable, Non-Negative Definite Lyapunov Equation Lyapunov Equation.” IMA Journal of Numerical Analysis 2, no. 3 (1982): 303–23. https://doi.org/10.1093/imanum/2.3.303.

[4] Penzl, Thilo. “Numerical Solution of Generalized Lyapunov Equations.” Advances in Computational Mathematics 8, no. 1 (January 1, 1998): 33–48. https://doi.org/10.1023/A:1018979826766.

[5] Golub, G., S. Nash, and C. Van Loan. “A Hessenberg-Schur Method for the Problem AX + XB= C.” IEEE Transactions on Automatic Control 24, no. 6 (December 1979): 909–13. https://doi.org/10.1109/TAC.1979.1102170.

バージョン履歴

R2006a より前に導入

参考

|