今回はC言語で漸化式と解く. この記事に掲載してあるソースコードは私の GitHub からダウンロードできます. 必要に応じて活用してください. Wikipediaに漸化式について次のように書かれている. 数学における漸化式(ぜんかしき、英: recurrence relation; 再帰関係式)は、各項がそれ以前の項の関数として定まるという意味で数列を再帰的に定める等式である。
引用: Wikipedia 漸化式
数学の学問的な範囲でいうならば, 高校数学Bの「数列」の範囲で扱うことになるので, 知っている人も多いかと思う. 漸化式の2つの顔
漸化式は引用にも示したような, 再帰的な方程式を用いて一意的に定義することができる. しかし, 特別な漸化式において「 一般項 」というものが存在する. ただし, 全ての漸化式においてこの一般項を定義したり求めることができるというわけではない. 基本的な漸化式
以下, $n \in \mathbb{N}$とする. 一般項が簡単にもとまるという点で, 高校数学でも扱う基本的な漸化式は次の3パターンが存在する
等差数列の漸化式
等比数列の漸化式
階差数列の漸化式
それぞれの漸化式について順に書きたいと思います. 等差数列の漸化式は以下のような形をしています. $$a_{n+1}-a_{n}=d \;\;\;(d\, は定数)$$
これは等差数列の漸化式でありながら, 等差数列の定義でもある. この数列の一般項は次ののようになる. 漸化式 階差数列型. 初項 $a_1$, 公差 $d$ の等差数列 $a_{n}$ の一般項は
$$
a_{n}=a_1+(n-1) d
もし余裕があれば, 証明 を自分で確認して欲しい. 等比数列の漸化式は
a_{n+1} = ra_n \;\;\;(r\, は定数)
等差数列同様, これが等比数列の定義式でもある. 一般に$r \neq 0, 1$を除く. もちろん, それらの場合でも等比数列といってもいいかもしれないが, 初項を$a_1$に対して, 漸化式から
$r = 0$の場合,
a_1, 0, 0, \cdots
のように第2項以降が0になってしまうため, わざわざ, 等比数列であると認識しなくてもよいかもしれない. $r = 1$の場合,
a_1, a_1, a_1, \cdots
なので, 定数列 となる.
- Senior High数学的Recipe『漸化式の基本9パターン』 筆記 - Clear
Senior High数学的Recipe『漸化式の基本9パターン』 筆記 - Clear
= C
とおける。$n=1$ を代入すれば
C = \frac{a_1}{6}
が求まる。よって
a_n = \frac{n(n+1)(n+2)}{6} a_1
である。
もしかしたら(1)~(3)よりも簡単かもしれません。
上級レベル
上級レベルでも、共通テストにすら、誘導ありきだとしても出うると思います。
ここでも一例としての問題を提示します。
(7)階差型の発展2
a_{n+1} = n(n+1) a_n + (n+1)! ^2
(8)逆数型
a_{n+1} = \frac{a_n^2}{2a_n + 1}
(9)3項間漸化式
a_{n+2} = a_{n+1} a_n
(7)の解
階差型の漸化式の $a_n$ の係数が $n$ についての関数となっている場合です。
これは(5)のように考えるのがコツです。 まず、$n$ の関数で割って見るという事を試します。$a_{n+1}, a_n$ の項だけに着目して考えます。
\frac{a_{n+1}}{f(n)} = \frac{n(n+1)}{f(n)} a_n + \cdots
この時の係数がそれぞれ同じ関数に $n, n+1$ を代入した形となればよい。この条件を数式にする。
\frac{1}{f(n)} &=& \frac{(n+1)(n+2)}{f(n+1)} \\
f(n+1) &=& (n+1)(n+2) f(n)
この数式に一瞬混乱する方もいるかもしれませんが、単純に左辺の $f(n)$ に漸化式を代入し続ければ、$f(n) = n! (n+1)! $ がこの形を満たす事が分かるので、特に心配する必要はありません。
上の考えを基に問題を解きます。( 上の部分の記述は「思いつく過程」なので試験で記述する必要はありません 。特性方程式と同様です。)
漸化式を $n! (n+1)! $ で割ると
\frac{a_{n+1}}{n! (n+1)! 漸化式 階差数列利用. } = \frac{a_n}{n! (n-1)! } + n + 1
\sum_{k=1}^{n} \left(\frac{a_{k+1}}{k! (k+1)! } - \frac{a_n}{n! (n-1)! } \right) &=& \frac{1}{2} n(n+1) + n \\
\frac{a_{n+1}}{n! (n+1)! } - a_1 &=& \frac{1}{2} n(n+3)
である。これは $n=0$ の時も成り立つので
a_n = n!
漸化式$b_{n+1}=rb_n$が成り立つ. 数列$\{b_n\}$は公比$r$の等比数列である. さて,公比$d$の等比数列$\{a_n\}$の一般項は
でしたから, 今みた定理と併せて漸化式$b_{n+1}=rb_n$は$(**)$と解けることになりますね. 具体例
それでは具体例を考えましょう. $a_1=1$を満たす数列$\{a_n\}$に対して,次の漸化式を解け. $a_{n+1}=a_n+2$
$a_{n+1}=a_n-\frac{3}{2}$
$a_{n+1}=2a_n$
$a_{n+1}=-a_n$
ただ公式を適用しようとするのではなく,それぞれの漸化式を見て意味を考えることが大切です. 2を加えて次の項に移っているから公差2の等差数列
$-\frac{3}{2}$を加えて次の項に移っているから公差$-\frac{3}{2}$の等差数列
2をかけて次の項に移っているから公比2の等比数列
$-1$をかけて次の項に移っているから公比$-1$の等比数列
と考えれば,初項が$a_1=1$であることから直ちに漸化式を解くことができますね. (1) 漸化式$a_{n+1}=a_n+2$より数列$\{a_n\}$は公差2の等差数列だから,一般項$a_n$は初項$a_1$に公差2を$n-1$回加えたものである. よって,一般項$a_n$は
である. (2) 漸化式$a_{n+1}=a_n-\frac{3}{2}$より公差$-\frac{3}{2}$の等差数列だから,一般項$a_n$は初項$a_1$に公差$-\frac{3}{2}$を$n-1$回加えたものである. (3) 漸化式$a_{n+1}=2a_n$より公比2の等比数列だから,一般項$a_n$は初項$a_1$に公比2を$n-1$回かけたものである. Senior High数学的Recipe『漸化式の基本9パターン』 筆記 - Clear. (4) 漸化式$a_{n+1}=-a_n$より公比$-1$の等比数列だから,一般項$a_n$は初項$a_1$に公比$-1$を$n-1$回かけたものである. 次の記事では,証明で重要な手法である 数学的帰納法 について説明します.