本記事ではPythonで因数分解を計算する方法を解説します。
Pythonで因数分解を行うためには、SymPyという代数計算ライブラリを使用します。
因数分解とは
まずは因数分解について簡単に解説します。
因数分解とは多項式を積の形で表すことです。
\[ x^2+3x+2=(x+1)(x+2) \]
上記の例ですと、左辺は+や-が混じった式から、右辺の積の形に変形することを因数分解といいます。
SymPyのインストール
まずは事前準備としてSymPyのインストールを下記のコマンドで行います。
pip install sympy
これで準備完了です。
Pythonで因数分解を計算する方法
最初にimport sympy
でライブラリをインポートし、x = sympy.Symbol('x')
で変数を定義したうえで、sympy.factor
で因数分解を行うことができます。
import sympy
x = sympy.Symbol('x')
sympy.factor(x**2 + 3*x + 2)

先程は次数が2でしたが、それ以上でも因数分解可能です。
以下は、次数が3、4の例です。
import sympy
x = sympy.Symbol('x')
sympy.factor(x**3 + 6*x**2 + 11*x + 6)

import sympy
x = sympy.Symbol('x')
sympy.factor(x**4 + 10*x**3 + 35*x**2 + 50*x + 24)

変数が二つや三つになった場合にも同様に、変数を定義すれば因数分解が可能です。
試しに、二つ目の変数yをy = sympy.Symbol('y')
、三つ目の変数zをz = sympy.Symbol('z')
で定義したうえで、先程と同じくsympy.factor
で因数分解を行ってみましょう。
# 変数が二つの場合
import sympy
x = sympy.Symbol('x')
y = sympy.Symbol('y')
sympy.factor(2*x**2 - 2*x*y + x - y)

# 変数が三つの場合
import sympy
x = sympy.Symbol('x')
y = sympy.Symbol('y')
z = sympy.Symbol('z')
sympy.factor(2*x**2 - x*y + 2*x*z - y**2 + y*z)

Pythonで式を展開する方法
先ほど因数分解を行った式を逆に展開することも可能です。
最初にimport sympy
でライブラリをインポートし、x = sympy.Symbol('x')
で変数を定義したうえで、sympy.expand
で因数分解を行うことができます。
import sympy
x = sympy.Symbol('x')
sympy.expand((x + 1)*(x + 2))

import sympy
x = sympy.Symbol('x')
sympy.expand((x + 1)*(x + 2)*(x + 3))

import sympy
x = sympy.Symbol('x')
sympy.expand((x + 1)*(x + 2)*(x + 3)*(x + 4))

import sympy
x = sympy.Symbol('x')
y = sympy.Symbol('y')
sympy.expand((x - y)*(2*x + 1))

import sympy
x = sympy.Symbol('x')
y = sympy.Symbol('y')
z = sympy.Symbol('z')
sympy.expand((2*x + y)*(x - y + z))

