更新:2024/11/22

【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