更新:2024/09/20

PythonのSymPyの因数分解・factor()・例題について

ふゅか
ふゅか
SymPyはPythonの中でもとても強力なツールで、数式を操作したり因数分解ができちゃうんだ!
はるか
はるか
因数分解に使えるメソッドは、factor。

1. Sympyで因数分解

SymPyを使用して因数分解を行うことも可能です。SymPyのfactorメソッドを使用すると、多項式や式の因数分解を簡単に行うことができます。以下に、基本的な因数分解の方法をいくつか示します。

はるか
はるか
まずは単純な多項式で試してみる。

1.1. 基本的な使用例

まず、SymPyのfactorメソッドを使用して、単純な多項式の因数分解を行う方法を示します。

import sympy as sp

# 変数の定義
x = sp.symbols('x')

# 多項式の定義
f = x**2 - 5*x + 6

# 因数分解
factored_f = sp.factor(f)

print("因数分解:", factored_f)

このコードは、多項式 \( f(x) = x^2 - 5x + 6 \) を因数分解し、結果を表示します。出力は次のようになります。

1.2. 多変数の因数分解

はるか
はるか
次に、多変数の因数分解。
ふゅか
ふゅか
うん、多変数の場合も同じようにできるよ!例えば、\( g(x, y) = x^2 - y^2 \) の場合はどうなるかな?

多変数の多項式も因数分解することができます。

# 変数の定義
x, y = sp.symbols('x y')

# 多変数の多項式の定義
g = x**2 - y**2

# 因数分解
factored_g = sp.factor(g)

print("因数分解:", factored_g)

このコードは、多変数の多項式 \( g(x, y) = x^2 - y^2 \) を因数分解し、結果を表示します。出力は次のようになります。

1.3. より複雑な式の因数分解

SymPyはより複雑な式の因数分解もサポートしています。以下にその例を示します:

# 変数の定義
x, y = sp.symbols('x y')

# 複雑な式の定義
h = x**3 + 3*x**2*y + 3*x*y**2 + y**3

# 因数分解
factored_h = sp.factor(h)

print("因数分解:", factored_h)

このコードは、複雑な多項式 \( h(x, y) = x^3 + 3x^2y + 3xy^2 + y^3 \) を因数分解し、結果を表示します。出力は次のようになります。

1.4. 分数を含む式の因数分解

分数を含む因数分解もすることができます。

# 変数の定義
x = sp.symbols('x')

# 分数式の定義
f = (x**3 - 3*x**2 + 3*x - 1) / (x - 1)

# 因数分解
factored_f = sp.factor(f)

print("因数分解:", factored_f)

このコードは、分数式 \( f(x) = \frac{x^3 - 3x^2 + 3x - 1}{x - 1} \) を因数分解し、結果を表示します。出力は次のようになります。

2. 例題

2.1. 例題 1: 3次の多項式の因数分解

次の多項式を因数分解してください。

\[ f(x) = x^3 - 6x^2 + 11x - 6 \]

Sympyを使用して、この多項式を因数分解します。

from sympy import symbols, factor

# 変数を定義
x = symbols('x')

# 多項式を定義
polynomial = x**3 - 6*x**2 + 11*x - 6

# 因数分解
factored_polynomial = factor(polynomial)
factored_polynomial

因数分解された形は次の通りです。

2.2. 例題 2: 4次の多項式の因数分解

次の4次多項式を因数分解してください。

\[ g(x) = x^4 - 5x^3 + 6x^2 + 4x - 8 \]

Sympyを使ってこの多項式を因数分解します。

# 多項式を定義
polynomial2 = x**4 - 5*x**3 + 6*x**2 + 4*x - 8

# 因数分解
factored_polynomial2 = factor(polynomial2)
factored_polynomial2

因数分解された形は次の通りです。

2.3. 例題 3: 三角関数や指数関数を含む多項式の因数分解

次の多項式を因数分解してください。

\[ h(x, y) = e^x \sin^2 x - 4e^{2x}\sin x  \]

Sympyで因数分解を行います。

import sympy as sp

# Define variables
x, y = sp.symbols('x y')

# Define the polynomial
h = sp.exp(x) * sp.sin(x)**2 - 4 * sp.exp(2*x) * sp.sin(x)

# Factor the polynomial
factored_h = sp.factor(h)
factored_h

因数分解された形は次の通りです。

PR