Pythonで漸化式を計算する方法

Python

本記事ではPythonで漸化式を計算する方法を解説します。
Pythonで漸化式を計算するために、SymPyというライブラリを使用します。

SymPyをインストールする

Pythonで漸化式を解くためにSymPyというライブラリをインストールします。
SymPyは代数計算ができます。漸化式の計算以外にも、連立方程式、微分、積分、分数、素因数分解など様々な計算が可能です。

pip install sympy

漸化式の実装について

漸化式には様々な種類のものがありますが、今回は下記の

  • 等差数列
  • 等比数列
  • 階差数列

について解説してゆきます。

等差数列

例えば、2, 5, 8, 11,…という初項2、公差3の等差数列を考えましょう。
これを漸化式に変換すると、下記の通りになります。

\begin{eqnarray} a_{1} = 2、a_{n} – a_{n-1} = 3 \end{eqnarray}

この漸化式を下記のように0 = (式)の形式に変換する必要があります。

\begin{eqnarray} a_{1} = 2、a_{n} – a_{n-1} -3 = 0 \end{eqnarray}

それではSymPyを使用して解いてみましょう。

# ①ライブラリのインポート
import sympy

# ②変数の定義
sympy.var('n')

# ③関数の定義
a = sympy.Function('a')

# ④漸化式の定義
f = a(n)-a(n-1)-3

# ⑤漸化式の計算
sympy.rsolve(f, a(n), {a(1):2})
等差数列
  • ライブラリのインポート

    まず、SymPyライブラリをインポートします。

  • 変数の定義

    続いて変数を定義します。ここではnを変数として定義しております。

  • 関数の定義

    続いて関数を定義します。ここではaを関数として定義しております。

  • 漸化式の定義

    漸化式を定義します。先ほど0=(式)の形に変換した際の(式)の部分をfに代入します。

  • 漸化式の計算

    sympy.rsolveで漸化式を解きます。
    第一引数には漸化式を与えます。
    第二引数には解かれるべき関数を入力します。
    第三引数には初項の値を与えます。

先程のコードを実際に実行すると下記の通りの結果となります。

漸化式は下記の結果になります。

\begin{eqnarray} a_{n} = 3n – 1 \end{eqnarray}

等比数列

例えば、2, 6, 18, 54,…という初項2、公比3の等差数列を考えましょう。
これを漸化式に変換すると、下記の通りになります。

\begin{eqnarray} a_{1} &=& 2 \\ a_{n} &=& 3a_{n-1} \end{eqnarray}

等差数列と同様に漸化式を下記のように0 = (式)の形式に変換します。

\begin{eqnarray} a_{1} = 2、a_{n} – 3a_{n-1} = 0 \end{eqnarray}

それではSymPyを使用して解いてみましょう。

# ①ライブラリのインポート
import sympy

# ②変数の定義
sympy.var('n')

# ③関数の定義
a = sympy.Function('a')

# ④漸化式の定義
f = a(n)-3*a(n-1)

# ⑤漸化式の計算
sympy.rsolve(f, a(n), {a(1):2})

先程のコードを実際に実行すると下記の通りの結果となります。

漸化式は下記の結果になります。

\begin{eqnarray} a_{n} = 2・3^{n-1} \end{eqnarray}

階差数列

最後に、1, 3, 6, 10, 15…という初項1、公差nの階差数列を考えましょう。
これを漸化式に変換すると、下記の通りになります。

\begin{eqnarray} a_{1} = 1、a_{n} = a_{n-1} + n \end{eqnarray}

等差数列と同様に漸化式を下記のように0 = (式)の形式に変換します。

\begin{eqnarray} a_{1} = 2、a_{n} – a_{n-1} – n = 0 \end{eqnarray}

それではSymPyを使用して解いてみましょう。

# ①ライブラリのインポート
import sympy

# ②変数の定義
sympy.var('n')

# ③関数の定義
a = sympy.Function('a')

# ④漸化式の定義
f = a(n)-a(n-1)-n

# ⑤漸化式の計算
sympy.rsolve(f, a(n), {a(1):1})

先程のコードを実際に実行すると下記の通りの結果となります。

漸化式は下記の結果になります。

\begin{eqnarray} a_{n} = \frac{1}{2}n(n-1) \end{eqnarray}

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