[SymPy] 多項式の展開と因数分解

[SymPy] 多項式の展開と因数分解

多項式の展開

 多項式 A と多項式 B の積をつくると、(多項式 A) * (多項式 B) という形で返ってきます。

# sympyをインポート
import sympy

# 文字を定義
sympy.var('a b')

# 多項式を定義
f1 = a + 5 * b + 2
f2 = a + 2 * b + 5

# 多項式の積
g = f1 * f2

print(g)
(a + 2*b + 5)*(a + 5*b + 2)

 
 多項式を展開 したいときは sympy.expand()関数 を使います。

# SymPy 多項式の展開

# sympyをインポート
import sympy

# 記号 (Symbol) を定義
sympy.var('a b')

# 多項式を定義
f1 = a + 5 * b + 2
f2 = a + 2 * b + 5

# 多項式の展開
g = sympy.expand(f1 * f2)

print("f1 × f2 =", g)
f1 × f2 = a**2 + 7*a*b + 7*a + 10*b**2 + 29*b + 10

 

因数分解

 因数分解 するときは sympy.factor()関数を使います。
 $a^2+5a+6$ を因数分解してみましょう。

# SymPy 因数分解[1]

# sympyをインポート
import sympy

# 記号を定義
sympy.var('a')

# 多項式を定義
f = a ** 2 + 5 * a + 6

# fを因数分解
print(sympy.factor(f))
(a + 2)*(a + 3)

 次は $a^2+7ab+4ac+10b^2+11bc+3c^2$ を因数分解してみます。

# SymPy 因数分解[2]

# sympyをインポート
import sympy

# 記号を定義
sympy.var('a b c')

# 多項式を定義
f = a ** 2 + 7 * a * b + 4 * a * c + 10 * b ** 2 + 11 * b * c + 3 * c ** 2

# fを因数分解
print(sympy.factor(f))
(a + 2*b + c)*(a + 5*b + 3*c)