Pythonで因数分解を計算する方法

Python

本記事では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))
楽天Kobo電子書籍ストア
¥2,750 (2025/03/14 23:06時点 | 楽天市場調べ)
\楽天ポイント4倍セール!/
楽天市場
タイトルとURLをコピーしました