【SymPy・Python】逆行列の計算方法のinv()の使い方について


はるか
SymPyで逆行列の計算ができる。

ふゅか
そうそう!コードを少し書くだけで計算できるのよ!
目次
1. SymPy を使用した逆行列
1.1. SymPy とは
SymPy は Python のライブラリで、数式をシンボル(記号)で扱うことができます。例えば、式の微分や積分、方程式の解法、行列の演算などをプログラムで実行できます。行列の逆行列計算は、その機能の一つです。
1.2. 逆行列とは
逆行列とは、行列 \( A \) に対して以下の条件を満たす行列 \( A^{-1} \) のことを指します。
\[ A^{-1}A = A A^{-1} = I \]
ここで \( I \) は単位行列です。
2. SymPy を使った逆行列計算

はるか
例えば、行列 Aがあったら、
A.inv()
で逆行列を計算できる。手計算より楽。
ふゅか
うん!それに簡単に、計算結果が合っているか確認できるわ!
2.1. 逆行列を計算するコード例
以下のコードは、具体的な行列の逆行列を計算する例です。
from sympy import Matrix
# 行列を定義
A = Matrix([
[1, 2, 3],
[0, 1, 4],
[5, 6, 0]
])
# 逆行列を計算
A_inv = A.inv()
# 結果を表示
print("行列 A:")
print(A)
print("逆行列 A^(-1):")
print(A_inv)
2.2. 実行結果
上記のコードを実行すると、以下のような出力が得られます
行列の積を計算すると、単位行列になることを確認できます。
3. 逆行列計算の注意点

はるか
でも注意点もある。正方行列じゃないと、逆行列は計算できない。

ふゅか
そうそう!例えば、行列式が0の場合もダメ!そのときはエラーが出るよね。「NonInvertibleMatrixError」ってやつ!
3.1. 行列が正方行列であることを確認する
\( A \) が正方行列でなければ、逆行列は計算できません。正方行列でない場合、MatrixError
が発生します
以下の例を見てみましょう。階数rankが1であるので、逆行列が存在しないことは、すぐにわかります。
from sympy import Matrix
B = Matrix([
[1, 2],
[2, 4]
])
# 逆行列を計算
B_inv = B.inv()
出力結果:
NonInvertibleMatrixError: Matrix det == 0; not invertible.
このエラーは、行列の行列式がゼロであるため、逆行列が存在しないことを意味します。
3.2. シンボリックな逆行列の計算
SymPy の強みは、数値だけでなく、シンボリックな逆行列も計算できる点です。
from sympy import Matrix, symbols
# シンボリック変数を定義
a, b, c, d = symbols('a b c d')
# 行列を定義
C = Matrix([
[a, b],
[c, d]
])
# 逆行列を計算
C_inv = C.inv()
# 結果を表示
print("シンボリックな行列 C:")
print(C)
print("\n逆行列 C^(-1):")
print(C_inv)
出力結果

はるか
SymPyを使うと、逆行列の計算が早い。コードで手軽に試せるし。

ふゅか
そうね!特に手計算が難しい場合、プログラムで一発で計算できるのはありがたいよね!
PR