linalg.solve
NumPyのlinalgには連立方程式を解くsolveが用意されています。引数に連立方程式の係数行列と定数の行列を指定します。
例えば、以下の連立方程式を解く場合を考えます。
\[
\begin{equation}
\begin{cases}
\; 3x+y= 9 \\
\; x+3y= 0
\end{cases}
\end{equation}
\]
連立方程式の変数x、yの係数の及び定数を行列で表すとそれぞれ以下のようになります。
\[
A = \left(
\begin{array}{ll}
3 & 1 \\
1 & 3
\end{array}
\right)
\]
\[
B = \left(
\begin{array}{ll}
9\\
0
\end{array}
\right)
\]
それでは実際にpythonのコードで連立方程式を解いてみましょう。
import numpy as np # 係数行列 coef = np.array([[3, 1], [1, 3]]) # array([[3, 1], # [1, 3]]) # 定数の行列 dep = np.array( [9, 0]) # array([9, 0]) # 連立方程式の解 ans = np.linalg.solve(coef, dep) # array([ 3.375, -1.125]) #
念の為検算してみましょう。
3 * ans[0] + 1 * ans[1] # 9 1 * ans[0] + 3 * ans[1] # 0
正しい答えが得られていたことが確認できました。