階差数列

ここに数列\((a_n)_{n\in\mathbb{N}}\)があるとします.
\[a_1,~a_2,~a_3,~\cdots,a_n\]\(a_n\)を求めましょう.\(a_n\)を求めるためには,
と考えることで
\[
a_n=a_1+(a_2-a_1)+(a_3-a_2)+(a_4-a_3)+\cdots+(a_n-a_{n-1})
\]とかけることがわかります.ただし,この式は\(n=1\)のときは\(a_0\)が出現してしまい成り立たないので,\(n \geq 2\)のもとで成り立つ式であることに注意します.ここに現れる数列\((a_n-a_{n-1})_{n\in\mathbb{N}}\)を,階差数列と呼びます.この式を\(\sum\)記号を用いて少し変形すると
\begin{align*}
a_n=&a_1+(a_2-a_1)+(a_3-a_2)+(a_4-a_3)+\cdots+(a_n-a_{n-1})\tag{1}\\
=&a_1+\displaystyle \sum_{k=1}^{n-1}(a_{k+1}-a_{k})\tag{2}\\
=&a_1+\displaystyle \sum_{k=2}^{n}(a_k-a_{k-1})\\
=&a_1+\displaystyle \sum_{k=0}^{n-2}(a_{k+2}-a_{k+1})
\end{align*}などと変形できることも分かります.さらに,\((2)\)の\(a_{k+1}-a_{k}\)を\(b_k\)とおいたものが,教科書でもお馴染みの公式\[a_n=a_1+\displaystyle \sum_{k=1}^{n-1}b_k\tag{3}\]ですね.

さて,ここまでで見た式\((1),(2),(3)\)の中で覚えるべき式はどれでしょうか.一般的(教科書的)には,最終的な結果である\((3)\)だけでしょう.これを「公式」として覚えておいて,あとはこれを機械的に使うという人がほとんどかと思います.例えば,こういう問題

次の数列\((a_n)_{n \in \mathbb{N}}\)の一般項を求めよ.\[1,~3,~7,~13,~21,~\cdots\]

「あ,階差数列は\(b_n=2n\)だ!→公式!」と考え\[a_n = \displaystyle 1 + \sum_{k=1}^{n-1}2k \quad (n \geq 2)\]とすることと思います.他にも,

次の条件で表される数列\((a_n)_{n\in \mathbb{N}}\)の一般項を求めよ.\[a_1=1,~a_{n+1}-a_{n}=4^n\]

など.これもやはり「あ,階差数列だ!→公式!」と考え,
\[a_n=1+\displaystyle \sum_{k=1}^{n-1} 4^k \quad (n \geq 2)\]と計算することと思います.では,次はどうでしょう.大学入試問題です.

次の条件で表される数列\((a_n)_{n\in \mathbb{N}}\)の一般項を求めよ.
\[a_1=2,~(n-1)a_n=na_{n-1}+1 \quad (n=2,3,\cdots)\]

まずは両辺を\(n(n-1)\)で割って,
\[\frac{a_n}{n}=\frac{a_{n-1}}{n-1}+\frac{1}{n(n-1)}\]移項して,\(\frac{a_n}{n}=b_n\)とおくことで「階差」タイプに帰着します:
\[b_n-b_{n-1}=\frac{1}{n(n-1)}\]ここで,\((3)\)の結果だけを機械的に覚えていると,「あ,階差数列だ!→公式!」からの
\[b_n=b_1+\displaystyle \sum_{k=1}^{n-1} \frac{1}{k(k-1)} \quad (n \geq 2)\quad \text{※誤答}\]
という式になります.で,あれ?\(k=1\)で分母が\(0\)になるぞ?教科書ではうまくいったはずだが??まあその辺はゴニョゴニョ….

一般に,教科書で扱う例題・練習題のほとんどは親切(?)にも公式を機械的に使いさえすれば正答が得られる問題によって構成されています.でも,入試問題がそんな忖度をしてくれるとは限りません.実戦の場で,恐る恐る怪しい解答を一か八かで作るくらいなら,上で見たように,階差数列の成り立ちに立ち戻って確実な解答を作成しよう,と考えるべきです:

解答

\(n \geq 2\)のとき,\[b_n=b_1+(b_2-b_1)+(b_3-b_2)+(b_4-b_3)+\cdots+(b_n-b_{n-1})\]が成り立つ.この式を\(\sum\)記号を用いて表す.今着目している漸化式が\(b_n-b_{n-1}\)という形であるから,これが利用できるように,\(\sum\)の後ろは\(b_k-b_{k-1}\)という形で表すことにする.これに伴い,始まりの\(k\)は\(2\),終わりの\(k\)は\(n\)であることに注意して
\begin{align*}
b_n&=b_1+\displaystyle \sum_{k=2}^{n}(b_k-b_{k-1})\\
&=b_1+\displaystyle \sum_{k=2}^{n}\frac{1}{k(k-1)}\quad(n \geq 2)
\end{align*}と変形する.(以下略)

解答終

このように,結果である\((3)\)を機械的に使おうとするのではなく,その結果に至るまでの過程を再現しようという姿勢で式を作れば,必然的に正答に辿り着くはずです.というわけで,覚えるなら以下のように覚えるのがおすすめです:

\(n\geq 2\)のとき
\begin{align*}
a_n=&a_1+(a_2-a_1)+(a_3-a_2)+(a_4-a_3)+\cdots+(a_n-a_{n-1})\\
=&a_1+\displaystyle \sum_{k=1}^{n-1}(a_{k+1}-a_{k})\left(=a_1+\displaystyle \sum_{k=2}^{n}(a_k-a_{k-1})=a_1+\displaystyle \sum_{k=0}^{n-2}(a_{k+2}-a_{k+1})\right)\\
=&a_1+\displaystyle \sum_{k=1}^{n-1}b_k
\end{align*}

とくに一行目!二行目は上のように与えられた問題に応じて調整して作る.一番有名な三行目はもはやオマケみたいなもの,というわけです.したがって結果的に,覚えるべきは一行目のみですが,しかしこれは「目的の項\(a_n\)に行きつくまでにはそこまでの差を次々と足し加えればいい」という至極アタリマエな事実に過ぎず,その意味でこれはもはや「覚える」という意識すら必要なくなります.

このように,「結果を覚える」だけでなく,その成り立ちまで含めて理解しておく,つまり単純記憶ではなく理屈によって知識を保持しておくと,余計な記憶をせずに済みますし,なにより自信をもって解答を記述できます.その意味で,天下り的に与えれらた見かけ上の結果だけを貰って満足するのではなく,論理を頼りに根っこの方を追いかけて,そのリクツを知ろうとする姿勢は大事だと思います.「結果を覚えるだけ」の勉強に比べ,一見遠回りですが,そんな姿勢は結果的にはより汎用性のある力に繋がりますから.