HOWTO · Python
Python 行列式
このチュートリアルでは、Python で正方行列の行列式を見つける方法を示します。
このページの内容
行列式は正方行列、つまり行数と列数が等しい行列に関連付けられたスカラーです。2×2 行列 [[7, 5], [2, 4]] については、式 (7 × 4) − (5 × 2) を使って行列式 18 が得られます。Python では、NumPy は数値配列に便利な選択肢であり、SymPy は整数や記号の計算を正確に保つことができます。以下の例では、同じ 2×2 および 3×3 行列に対して両方のライブラリを使用しているため、計算に合った方法を選べます。
numpy.linalg.det() を使って Python で正方行列の行列式を計算する
python -m pip install numpy を使用して、プログラムを実行する予定の Python 環境に NumPy をインストールします。このコマンドは、python として呼び出されるインタープリター用にパッケージをインストールします。ノートブックや仮想環境では、そのコマンドがコードを実行する環境と同じ環境を対象にしていることを確認してください。完全な例では、NumPy をインポートし、2 つの正方配列を作成し、それぞれに numpy.linalg.det() を呼び出します。この API は、配列のような行列を入力として受け取る関数です。この例は実行可能なコードとして提供されていますが、その実行時の出力は取得されていません。
import numpy as np
matrix_2x2 = np.array([[7, 5], [2, 4]])
matrix_3x3 = np.array([[7, 5, 3], [2, 4, 1], [5, 8, 6]])
print("2x2 determinant:", np.linalg.det(matrix_2x2))
print("3x3 determinant:", np.linalg.det(matrix_3x3))
これらの成分では、正確な数学的結果は 18 と 65 です。NumPy は浮動小数点演算で計算するため、出力される表現には正確な整数とのわずかな精度の差が現れる場合があります。これは数値計算では想定内のことであり、それだけで行列や計算が間違っていることを意味するものではありません。後の操作が返される精度に依存する場合は、その精度を保持してください。表示のために丸めるのは、アプリケーションの許容範囲がそれを許す場合に限ります。中間結果を丸めると、後の計算に影響する可能性があります。入力値が測定値や近似値である場合、行列式もまた、出力される桁数に関係なく近似値です。
NumPy は、行列がすでに配列である場合や、数値線形代数を扱う場合に役立ちます。この関数はさまざまなサイズの正方行列を受け付け、NumPy は行列のバッチに対しても操作できます。この記事では、入力と結果を比較しやすいよう、例を 1 つの 2×2 配列と 1 つの 3×3 配列に留めています。行列式は正方行列に対してのみ定義されるため、この操作を選ぶ前に、各行数と列数が一致していることを確認してください。
SymPy を使って Python で正方行列の行列式を計算する
この例の Python 環境には、python -m pip install sympy で SymPy をインストールします。NumPy の場合と同様に、コードを実行するインタープリターと環境を使用してください。SymPy は入力を Matrix オブジェクトとして表し、その det() メソッドで結果を計算します。この例では NumPy のプログラムと同じ成分を繰り返しているため、ライブラリの動作を比較しやすくなっています。この例は実行可能なコードとして提供されていますが、その実行時の出力は取得されていません。
import sympy as sp
matrix_2x2 = sp.Matrix([[7, 5], [2, 4]])
matrix_3x3 = sp.Matrix([[7, 5, 3], [2, 4, 1], [5, 8, 6]])
print("2x2 determinant:", matrix_2x2.det())
print("3x3 determinant:", matrix_3x3.det())
整数の成分では、SymPy はこれらの例に対して浮動小数点の近似値ではなく、正確な整数値を返します。Matrix.det() は SymPy 行列から行列式を得るために使用されるメソッドです。小文字の sympy という綴りは Python のインポートに属し、本文でのライブラリ名は SymPy です。記号変数から行列を構築して結果に式を保持することもでき、特定の値を代入する前に式を導出する際に便利です。
正確な演算や記号式が重要な場合は SymPy を選び、数値配列や浮動小数点の線形代数には NumPy を選びます。どちらの例も、正確な結果が 18 と 65 になる小さな行列を使用しているため、入力成分が意図した行の順序になっていることを確認する簡単な方法にもなります。これらのライブラリは異なる計算モデルを提供します。SymPy は可能な限り正確な形を保持し、NumPy は数値計算のために設計されています。結果の使用方法に基づいて選択し、後の計算に十分な精度を保持してください。