Pythonで連立方程式を解く方法

Python

今回はPythonで連立方程式を解く方法を解説します。

SymPyをインストールする

Pythonで連立方程式を解くためにSymPyというライブラリをインストールします。
SymPyは代数計算ができます。連立方程式の計算以外にも、微分、積分など様々な計算が可能です。

pip install sympy

SymPyで連立方程式を解く

早速、SymPyで連立方程式を解いてみましょう。
試しに下記の式を解いてみます。

\begin{eqnarray} x+y&=&4 \\ x+2y&=&10 \end{eqnarray}

先にコードを紹介すると次の通りです。

# ①ライブラリのインポート
import sympy

# ②変数の定義
x = sympy.Symbol('x') 
y = sympy.Symbol('y')

# ③式の定義
equation_1 = x + y - 4
equation_2 =   x + 2*y - 10

# ④式を解く
print(sympy.solve([equation_1, equation_2]))

コードの解説は以下の通りです。

連立方程式を解くための手順
  • ライブラリのインポート

    sympyをインポートします。

  • 変数の定義

    使用する変数を定義します。今回はxとyが該当します。

  • 式の定義

    式を定義します。その際に、式 = 0の形式にします。
    今回の場合は、\begin{eqnarray} x+y&=&4 \\ x+2y&=&10 \end{eqnarray}
    から、\begin{eqnarray} x+y-4 &=& 0 \\ x+2y-10 &=& 0 \end{eqnarray}
    へ変形し、そのあとにコードにします。

  • 式を解く

    sympy.solveで式を解きます。

以上の手順を実行すると、下記の結果を出力します。

{x: -2, y: 6}

変数が3つの場合も手順は同じです。試しに次の連立方程式を解いてみましょう。

\begin{eqnarray} x+y+z&=&10 \\ 2x+y+z&=&5 \\ x+y+2z &=& 15 \end{eqnarray}

# ①ライブラリのインポート
import sympy

# ②変数の定義
x = sympy.Symbol('x') 
y = sympy.Symbol('y')
z = sympy.Symbol('z')

# ③式の定義
equation_1 = x + y + z - 10
equation_2 = 2*x + y + z - 5
equation_3 = x + y + 2*z - 15

# ④式を解く
print(sympy.solve([equation_1, equation_2, equation_3]))

③において、式は下記に変換します。
\begin{eqnarray} x+y+z-10&=&0 \\ 2x+y+z-5&=&0 \\ x+y+2z-15 &=& 0 \end{eqnarray}

結果は次の通りです。

{x: -5, y: 10, z: 5}
タイトルとURLをコピーしました