『Python数値計算ノート』ではアフィリエイトプログラムを利用して商品を紹介しています。

【SymPy】式の展開と因数分解

多項式の展開(sympy.expand)

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

# SYMPY_EXPAND

# In[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 で多項式を展開したいときは sympy.expand() を使います。

# In[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

因数分解(sympy.factor)

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

# SYMPY_FACTORIZATION

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

# In[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)

コメント