まず、固有値がすべて であるとします1
。A
あなたの行列のヨルダン標準形にしましょう。A^{-1}
次に、行列の乗算と加算のみを使用して計算できます
A^{-1} = I + (I-A) + (I-A)^2 + ... + (I-A)^k
どこでk < dim(A)
。なぜこれが機能するのですか?生成関数は素晴らしいからです。展開を思い出す
(1-x)^{-1} = 1/(1-x) = 1 + x + x^2 + ...
これは(1-x)
、無限和を使用して反転できることを意味します。行列を反転しA
たいので、
A = I - X
を解くとX
が得られますX = I-A
。したがって、代入により、
A^{-1} = (I - (I-A))^{-1} = 1 + (I-A) + (I-A)^2 + ...
I
ここでは、 number の代わりに恒等行列を使用してい1
ます。ここで対処すべき収束の問題がありますが、これは実際には問題ではありません。A
はジョルダン形式で、すべての固有値が に等しいという仮定により、は対角線上にすべての s を持つ上三角で1
あることがわかります。したがって、対角線上にすべての s を持つ上三角形です。したがって、 のすべての固有値はであるため、その特性多項式はであり、その最小多項式は一部のです。行列はその最小 (および特性) 多項式を満たすため、これは. したがって、上記の級数は有限であり、最大の非ゼロ項は次のとおりです。A
1
I-A
0
I-A
0
x^dim(A)
x^{k+1}
k < dim(A)
(I-A)^{k+1} = 0
(I-A)^k
. それで収束します。
ここで、一般的なケースとして、行列を Jordan 形式に変換して、ブロック三角行列を作成します。たとえば、次のようになります。
A 0 0
0 B 0
0 0 C
各ブロックは、対角線に沿って単一の値を持ちます。その値がa
の場合A
、上記のトリックを使用して を反転し1/a * A
、逆を乗算しa
ます。完全な行列はブロック三角行列であるため、逆行列は次のようになります。
A^{-1} 0 0
0 B^{-1} 0
0 0 C^{-1}
ブロックが3つあることに特別なことはないので、これはいくつあっても機能します。
このトリックは、Jordan 形式のマトリックスがある場合はいつでも機能することに注意してください。この場合の逆行列の計算は、行列の乗算のみを含むため、Matlab では非常に高速です。単一の行列の累乗のみが必要なため、トリックを使用して高速化することもできます。ただし、行列を Jordan 形式にするのに非常にコストがかかる場合は、これは役に立たないかもしれません。