数学、制御理論におけるシルベスター方程式(シルベスターほうていしき、)とは、次の形式の行列方程式であるこの方程式は等価な次の形式で書かれることも多い: AX − XB = C。

ここで行列 A,B,C は与えられており、等式を満たすような行列 X が求めるべき解である。全ての行列の成分は複素数であるとする。方程式が意味を持つために、行列は適当なサイズでなければならない。例えば、全ての行列が同一サイズの正方行列である等である。より一般には、A と B がそれぞれサイズ n , m の正方行列であれば、X と C はいずれも n 行 m 列の行列でなければいけない。

シルベスター方程式が一意的な解 X を持つのは、行列 A と −B が共通する固有値を持たないとき、またそのときに限る。

より一般的には、方程式 AX + XB = C は(次元が有限とは限らない)バナッハ空間上の有界作用素間の等式であるとして考察されてきた。この場合も解についての条件はほとんど同じである:方程式が一意的な解 X を持つのは、A と −B のスペクトルが交わりを持たないとき、またそのときに限るBhatia and Rosenthal, 1997。

解の存在と一意性 クロネッカー積および vec作用素 の記法を用いると、シルベスター方程式は次のように書き直せる。

ここで は 行列、 は 行列、 は 行列、 は の単位行列である。この形に書くと、方程式は 係数行列による線型方程式系と見ることができるしかし、この形に書き直した方程式は数値計算には適していない。計算量が増大する上、悪条件(ill-conditioned)となる可能性があるからである。。

命題 複素数成分の 行列 と が与えられたとき、シルベスター方程式が任意の に対して一意的な解 を持つための必要十分条件は と が共通の固有値を持たないことである。

証明 で定まる線型写像 を考える。

(i) と が共通の固有値を持たないとする。このときそれらの固有多項式 と の最大公約数は定数 である。よって複素係数多項式 と を、 が成り立つようにとることができる(ベズーの補題)。ケイリー・ハミルトンの定理より、行列多項式として であるので、。

を の任意の解とする。このとき であり、この等式を の右辺に繰り返し適用して 。よって写像 の核の次元は0であり、階数・退化次数の定理より は可逆となるから、任意の に対し一意的な解 が存在する。

(ii) 逆に、 が行列 と の共通の固有値であるとする。 は転置行列 の固有値でもあることに注意すると、零ベクトルでないベクトル , で , を満たすものが存在する。行列 を となるよう選ぶ。右辺は の複素共役である。

このとき には解 が存在しない。なぜなら、複素数体上の双線型形式(半双線型形式ではない)を と定めて を考えると、この最左辺は

となって矛盾するからである。

ロスの除去法則

複素数成分行列 (サイズはそれぞれ )が与えられたとき、次の2つの n + m 次正方行列 , が互いに相似なのはどのようなときか問うことができる。この必要十分条件は AX − XB = C を満たす行列 X、言い換えるとシルベスター方程式の解が存在することである。これはロスの除去法則(Roth's removal rule)として知られている。

次のことは簡単に確認できる:もし AX − XB = C であれば、

ロスの除去法則はバナッハ空間上の無限階有界作用素へ一般化することはできないBhatia and Rosenthal, p.3。

数値計算 シルベスター方程式の解を求める古典的なアルゴリズムにがある。これは と をQR法によってシューア標準形に変形し、三角行列に対する後退代入によって解を得るものである。このアルゴリズムの算術処理には (ランダウのO-記法)の計算量が必要であり、GNU OctaveにおけるLAPACKの lyap 関数でも計算量は同じであるhttps://octave.sourceforge.io/control/function/lyap.html(この言語での sylvester 関数も参照のことhttps://www.gnu.org/software/octave/doc/interpreter/Functions-of-a-Matrix.html syl 関数はGNU Octave Version 4.0以降非推奨となった。)。いくつかの特殊な画像処理への応用においては、導出されるシルベスター方程式は閉じた形で解が書ける。

関連項目 リアプノフ方程式

脚注

参考文献

外部リンク Online solver for arbitrary sized matrices. Mathematica function to solve the Sylvester equation MATLAB function to solve the Sylvester equation