Scipy-linalg
SciPy-リナル
SciPyは、最適化された ATLAS LAPACK および BLAS ライブラリを使用して構築されます。 非常に高速な線形代数機能を備えています。 これらの線形代数ルーチンはすべて、2次元配列に変換できるオブジェクトを必要とします。 これらのルーチンの出力も2次元配列です。
SciPy.linalg対NumPy.linalg
scipy.linalgには、numpy.linalgにあるすべての関数が含まれています。 さらに、scipy.linalgには、numpy.linalgにはない他の高度な機能もいくつかあります。 numpy.linalgよりもscipy.linalgを使用するもう1つの利点は、BLAS/LAPACKサポートで常にコンパイルされることです。一方、NumPyではこれはオプションです。 したがって、NumPyのインストール方法によっては、SciPyバージョンの方が高速になる場合があります。
一次方程式
例として、次の連立方程式を解くことが望ましいと仮定します。
x、y、zの値について上記の方程式を解くために、下に示すように逆行列を使用して解ベクトルを見つけることができます。
\ begin \ {bmatrix} x \\ y \\ z \ end \ {bmatrix} = \ begin \ {bmatrix} 1&3&5 \\ 2&5&1 \\ 2&3&8 \ end \ {bmatrix} ^ \ {-1} \ begin \ {bmatrix} 10 \\ 8 \\ 3 \ end \ {bmatrix} = \ frac \ {1} \ {25} \ begin \ {bmatrix} -232 \\ 129 \\ 19 \ end \ {bmatrix} = \ begin \ {bmatrix} -9.28 \\ 5.16 \\ 0.76 \ end \ {bmatrix}。
ただし、より高速で数値的に安定した linalg.solve コマンドを使用することをお勧めします。
ソルバー関数は、2つの入力「a」と「b」を取ります。「a」は係数を表し、「b」はそれぞれの右側の値を表し、ソリューション配列を返します。
次の例を考えてみましょう。
上記のプログラムは、次の出力を生成します。
決定基を見つける
正方行列Aの行列式は、多くの場合| A |と表されます。線形代数でよく使用される量です。 SciPyでは、これは* det()*関数を使用して計算されます。 入力として行列を受け取り、スカラー値を返します。
次の例を考えてみましょう。
上記のプログラムは、次の出力を生成します。
固有値と固有ベクトル
固有値-固有ベクトル問題は、最も一般的に使用される線形代数演算の1つです。 次の関係を考慮することにより、正方行列(A)の固有値(λ)および対応する固有ベクトル(v)を見つけることができます-
Av =λv*
次の例を考えてみましょう。
上記のプログラムは、次の出力を生成します。
特異値分解
特異値分解(SVD)は、正方形ではない行列への固有値問題の拡張と考えることができます。
次の例を考えてみましょう。
上記のプログラムは、次の出力を生成します。