更新:2024/07/20

PythonとSymPyで連立方程式を簡単に解く方法

はるか
はるか
SymPyを使って連立方程式を解く。

ふゅか
ふゅか
そうね、最初に基本的な使い方から説明するわね♪

1. SymPyを利用した連立方程式

SymPyを使用して連立方程式を解くことができます。連立方程式を解くためには、solveメソッドを使用します。

sp.solve(eqs, sym)
  • eqsは方程式
  • symは変数

以下に、SymPyを使用して連立方程式を解く基本的な方法を示します。

ふゅか
ふゅか
まずは、SymPyのsolveメソッドを使って連立方程式を解く方法を見てみましょう!
はるか
はるか
うん、eqsに方程式を、symに変数を指定する。

2. SymPyを利用したPythonコード

2.1. 基本的な使用例

2つの変数 \(x\) と \(y\) を含む連立方程式を解く例です。

import sympy as sp

# 変数の定義
x, y = sp.symbols('x y')

# 方程式の定義
eq1 = sp.Eq(x + y, 2)  # x + y = 2
eq2 = sp.Eq(x - y, 0)  # x - y = 0

# 連立方程式を解く
solution = sp.solve((eq1, eq2), (x, y))

print("解:", solution)

このコードは、次の連立方程式を解きます。

  1. \( x + y = 2 \)
  2. \( x - y = 0 \)

出力は次のようになります。

2.2. 多変数の連立方程式

ふゅか
ふゅか
次に、多変数の連立方程式を解く方法を見てみましょう。
はるか
はるか
うん、x, y, z を含む連立方程式。

3つの変数 \(x\), \(y\), \(z\) を含む連立方程式を解く例です。

# 変数の定義
x, y, z = sp.symbols('x y z')

# 方程式の定義
eq1 = sp.Eq(x + y + z, 6)  # x + y + z = 6
eq2 = sp.Eq(x - y + z, 2)  # x - y + z = 2
eq3 = sp.Eq(x + y - z, 4)  # x + y - z = 4

# 連立方程式を解く
solution = sp.solve((eq1, eq2, eq3), (x, y, z))

print("解:", solution)

このコードは、次の連立方程式を解きます。

  1. \( x + y + z = 6 \)
  2. \( x - y + z = 2 \)
  3. \( x + y - z = 4 \)

出力は次のようになります。

2.3. 連立方程式の解が一つでない場合

ふゅか
ふゅか
連立方程式の解が一つでない場合を見てみましょう。
# 変数の定義
x, y, z = sp.symbols('x y z')

# 方程式の定義
eq1 = sp.Eq(x + y + z, 0)  # x + y + z = 0
eq2 = sp.Eq(x - y + z, 2)  # x - y + z = 2

# 連立方程式を解く
solution = sp.solve((eq1, eq2), (x, y, z))

print("解:", solution)

出力は次のようになります。

2.4. 非線形な連立方程式

ふゅか
ふゅか
最後に、非線形な連立方程式を解く方法を見てみましょう!
はるか
はるか
非線形方程式もSymPyで解ける。

非線形方程式を含む連立方程式を解く例です。

# 変数の定義
x, y = sp.symbols('x y')

# 非線形方程式の定義
eq1 = sp.Eq(x**3 + y**3, 1)  # x^3 + y^3 = 1
eq2 = sp.Eq(x**2 - y, 0)     # x^2 - y = 0

# 連立方程式を解く
solution = sp.solve((eq1, eq2), (x, y))

print("解:", solution)

このコードは、次の非線形方程式を解きます。

  1. \( x^2 + y^2 = 1 \)
  2. \( x^3 - y = 0 \)

出力は次のようになります。

PR