[SymPy] 展開と因数分解

[SymPy] 展開と因数分解

多項式の展開

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

# PYTHON_SYMPY_EXPAND-1

# 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() を使います。

# PYTHON_SYMPY_EXPAND-2

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

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

 

たった1秒の最強スキル パソコン仕事が10倍速くなる80の方法

新品価格
¥1,382から
(2019/8/6 17:57時点)

因数分解

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

# PYTHON_SYMPY_FACTORIZATION-1

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$ を因数分解してみます。

# PYTHON_SYMPY_FACTORIZATION-2

# 記号を定義
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)