- 目次
- 理解
- 事例
- コード
- まとめ
【理解】階差数列の数学的解説
階差数列の公式について
数列 $\{a_n\}$ の階差数列を $\{b_n\}$ として, また和を $S_n$ とします。
階差数列
$b_n = a_{n+1} - a_n$
定義(階差数列)
数列 $\{ a_n \}_{n\in \mathbb{N}}$ について, $$\displaystyle b_{n} = a_{n+1} - a_n$$ で定義される数列 $\{ b_n \}_{n\in \mathbb{N}}$ を階差数列という.
階差数列を含む漸化式
数列 $\{ a_n \}_{n\in \mathbb{N}}$ の漸化式として $$a_{n+1} - a_n = f(n)$$ が成り立っているとする. $f(n)$ は自然数 $n$ の関数である.
このとき, $b_n=f(n)$ という数列 $\{ b_n \}_{n\in \mathbb{N}}$ は $\{ a_n \}_{n\in \mathbb{N}}$ の階差数列である.
例えば,
$1$, $3$, $6$, $10$, $15$, $21$, $28$, $\cdots$
の階差数列は,
$2$, $3$, $4$, $5$, $6$, $7$, $\cdots$
です。
$\displaystyle a_n = a_1 + \sum_{k=1}^{n-1} b_k$ $(n \geq 2 )$
階差数列 $\{ b_n \}$ から元の数列 $\{ a_n \}$ の一般項を求める式を理解してみよう。
階差数列から元の数列の導出
数列 $\{ a_n \}_{n}$ の初項が $a_1$ であり, 階差数列が $\{ b_n \}_{n}$ であるとする.
$n \geq 2$ のとき,
$\displaystyle a_n = a_1 + \sum_{k=1}^{n-1}b_k$
である.
証明.
$\{a_n\}$ の階差数列 $\{ b_n \}$ の定義は
$b_n = a_{n+1}-a_n$
であった.
$n \geq 2$ のとき, $b_1$, $\cdots$, $b_{n-1}$ を $\{a_n\}$ で表し, 和を取る.
$\begin{array}{ccccc}
b_{n-1} &= &a_{n} &- &a_{n-1} \\
\vdots & = & \vdots & - & \vdots \\
b_2 &= &a_{3} &- &a_2 \\
b_1 &= &a_2 &- &a_1 \\ \hline
\displaystyle \sum_{k=1}^{n-1}b_k &= &a_n &- & a_1
\end{array}$
ゆえに, $n \geq 2$ のとき,
$\displaystyle a_n = a_1 + \sum_{k=1}^{n-1}b_k$
は成り立つ.
たとえば,
$1$, $3$, $6$, $10$
という数列の階差数列は,
$2=3-1$
$3=6-3$
$4=10-6$
の, $2$. $3$, $4$ です。
$2 + 3+ 4$ $=10-1$
なので, 元の数列の初項の $1$ に階差数列を3つ足すと, 4番目の $10$ になっています。
$\displaystyle \sum_{k=1}^{n} b_k = a_{n+1}-a_1$
階差数列 $\{ b_n \}$ の和は元の数列 $\{ a_n \}$ で簡単に書けることを示してみよう。
命題
数列 $\{ a_n \}_{n}$ の階差数列を $\{ b_n \}_{n}$ とする. 階差数列の和について,
$\displaystyle \sum_{k=1}^nb_k = a_{n+1} - a_1$
証明.
$\{a_n\}$ の階差数列 $\{ b_n \}$ の定義は
$b_n = a_{n+1}-a_n$
であった.
$b_1$, $\cdots$, $b_{n}$ を $\{a_n\}$ で表し, 和を取る.
$\begin{array}{ccccc}
b_{n} &= &a_{n+1} &- &a_{n} \\
b_{n-1} &= &a_{n} &- &a_{n-1} \\
\vdots & = & \vdots & - & \vdots \\
b_2 &= &a_{3} &- &a_2 \\
b_1 &= &a_2 &- &a_1 \\ \hline
\displaystyle \sum_{k=1}^{n}b_k &= &a_{n+1} &- & a_1
\end{array}$
ゆえに,
$\displaystyle \sum_{k=1}^nb_k = a_{n+1} - a_1$
は成り立つ.
たとえば,
$1$, $3$, $6$, $10$
という数列の階差数列は,
$2=3-1$
$3=6-3$
$4=10-6$
の, $2$. $3$, $4$ です。
$2 + 3+ 4$ $=10-1$ $=9$
になっています。
数列の和の階差数列
$a_n = S_{n} - S_{n-1}$ $(n \geqq 2)$
$a_1=S_1$
数列 $\{ a_n \}$ とその和 $S_n$ の関係式を理解してみよう。
公式
数列 $\{ a_n \}_{n}$ の和を $ S_n$ とする.
$a_1=S_1$ であり,
$n \geq 2$ のとき,
$\displaystyle a_n = S_n - S_{n-1}$
である.
証明.
$\{a_n\}$ の階差数列 $\{ b_n \}$ の定義は
$b_n = a_{n+1}-a_n$
であった.
$n \geq 2$ のとき, $b_1$, $\cdots$, $b_{n-1}$ を $\{a_n\}$ で表し, 和を取る.
$\begin{array}{ccccc}
b_{n-1} &= &a_{n} &- &a_{n-1} \\
\vdots & = & \vdots & - & \vdots \\
b_2 &= &a_{3} &- &a_2 \\
b_1 &= &a_2 &- &a_1 \\ \hline
\displaystyle \sum_{k=1}^{n-1}b_k &= &a_n &- & a_1
\end{array}$
ゆえに, $n \geq 2$ のとき,
$\displaystyle a_n = a_1 + \sum_{k=1}^{n-1}b_k$
は成り立つ.
たとえば,
$1$, $3$, $6$, $10$
という数列の階差数列は,
$2=3-1$
$3=6-3$
$4=10-6$
の, $2$. $3$, $4$ です。
$2 + 3+ 4$ $=10-1$
なので, 元の数列の初項の $1$ に階差数列を3つ足すと, 4番目の $10$ になっています。
階比数列
$b_n = a_{n+1} / a_n$
定義(階比数列)
数列 $\{ a_n \}_{n\in \mathbb{N}}$ について, $$\displaystyle b_{n} = \frac{a_{n+1}}{a_n}$$ で定義される数列 $\{ b_n \}_{n\in \mathbb{N}}$ を階比数列という. ただし, $a_n \neq 0$ であるとする.
階比数列を含む漸化式
数列 $\{ a_n \}_{n\in \mathbb{N}}$ の漸化式として $$\frac{a_{n+1}}{a_n} = f(n)$$ が成り立っているとする. $f(n)$ は自然数 $n$ の関数である.
このとき, $b_n=f(n)$ という数列 $\{ b_n \}_{n\in \mathbb{N}}$ は $\{ a_n \}_{n\in \mathbb{N}}$ の階比数列である.
例えば,
$1$, $2$, $6$, $24$, $120$, $720$, $5040$, $\cdots$
の階比数列は,
$2$, $3$, $4$, $5$, $6$, $7$, $\cdots$
です。
$\displaystyle a_n = a_1 \times \prod_{k=1}^{n-1} b_k$ $(n \geq 2 )$
階比数列 $\{ b_n \}$ から元の数列 $\{ a_n \}$ の一般項を求める式を理解してみよう。
階比数列から元の数列の導出
数列 $\{ a_n \}_{n}$ の初項が $a_1$ であり, 階比数列が $\{ b_n \}_{n}$ であるとする.
$n \geq 2$ のとき,
$\displaystyle a_n = a_1 \times \prod_{k=1}^{n-1} b_k$
である.
証明.
$\{a_n\}$ の階比数列 $\{ b_n \}$ の定義は
$\displaystyle b_n = \frac{a_{n+1}}{a_n}$
であった.
$n \geq 2$ のとき, $b_1$, $\cdots$, $b_{n-1}$ を $\{a_n\}$ で表し, 積を取る.
$\begin{array}{ccccc}
b_{n-1} &= &a_{n} & / &a_{n-1} \\
\vdots & = & \vdots & / & \vdots \\
b_2 &= &a_{3} & / &a_2 \\
b_1 &= &a_2 & / &a_1 \\ \hline
\displaystyle \prod_{k=1}^{n-1}b_k &= &a_n &/ & a_1
\end{array}$
$\displaystyle \frac{a_n}{a_{n-1}} \cdot \frac{a_{n-1}}{a_{n-2}} \cdots \frac{a_3}{a_2} \cdot \frac{a_2}{a_1}$ $\displaystyle = \frac{a_n}{a_1}$
ゆえに, $n \geq 2$ のとき,
$\displaystyle a_n = a_1 \times \prod_{k=1}^{n-1}b_k$
は成り立つ.
たとえば,
$1$, $2$, $6$, $24$, $\cdots$
という数列の階比数列は,
$2=2/1$
$3=6/2$
$4=24/6$
の, $2$. $3$, $4$ です。
$2 \cdot 3\cdot 4$ $=24/1$
なので, 元の数列の初項の $1$ に階比数列を3つかけると, 4番目の $24$ になっています。
定義(階比数列)
数列 $\{ a_n \}_{n\in \mathbb{N}}$ について, $$\displaystyle b_{n} = \frac{a_{n+1}}{a_n}$$ で定義される数列 $\{ b_n \}_{n\in \mathbb{N}}$ を階比数列という. ただし, $a_n \neq 0$ であるとする.
階比数列を含む漸化式
数列 $\{ a_n \}_{n\in \mathbb{N}}$ の漸化式として $$\frac{a_{n+1}}{a_n} = f(n)$$ が成り立っているとする. $f(n)$ は自然数 $n$ の関数である.
このとき, $b_n=f(n)$ という数列 $\{ b_n \}_{n\in \mathbb{N}}$ は $\{ a_n \}_{n\in \mathbb{N}}$ の階比数列である.
【事例】階差数列の具体例
カエル🐸ゲーム
[ゲームのルール]
奇数個のマスを用意する。真ん中は空欄として、片側を相手の巣、もう片側を自分の巣とする。相手の巣に自分の🐸を置く。
- 全てのカエル🐸を自分の巣に帰ることができたらゲームクリア
- カエル🐸の移動は、1マスだけ動くか、一匹だけ飛び越えるのいずれか
- 同じマスに2匹以上のカエル🐸🐸を同時に置くことはできない

[特別ルール(2024〜2025年)]
ゲームの最中に協力を妨げるような言動(蛙化)があればやり直し
※蛙化せずに、カエル🐸が巣に帰るゲーム。
【数学としてゲーム】
カエル🐸ゲームをクリアする最短手数を求めてください。
高校受験の入試問題
$n$ を正の整数とする。$xy$ 平面上で4点 $(n,0)$, $(0,n)$, $(−n,0)$, $(0,−n)$ を頂点とする正方形の内部または周上にある格子点の個数を求めよ。ただし, 格子点とは $x$ 座標と $y$ 座標がともに整数である点のことである。
(開成高校 06 改)
RPGでの経験値計算(Memo)
準備中
【コード】Pythonで階差数列の計算
階差数列[seq[i+1] - seq[i] for i in range(len(seq)-1)]
※seq
…元の数列
Pythonで、数列を定めるリストから階差数列のリストを作成する方法を習得しよう。
説明
数列を定義するリスト(例えばseq
)に対して,
[seq[i+1] - seq[i] for i in range(len(seq)-1)]
と定めたリストは階差数列を表す。
Pythonコード. [5, 7, 3, 4, 8]
の階差数列を出力する。
seq = [5, 7, 3, 4, 8]
diff_seq = [seq[i+1] - seq[i] for i in range(len(seq)-1)]
print(diff_seq)

階差数列numpy.diff()
Pythonで、数列を定める配列から階差数列の配列を作成する方法を習得しよう。
説明
numpy
モジュールを利用する。numpy.array()
で配列を指定する。
numpy.diff()
の引数に配列を入力し階差を出力する。
なお, numpy.diff()
は2つ目の引数にn=自然数
を指定することで $n$ 階差を求めることもできる。
Pythonコード. [5, 7, 3, 4, 8]
の階差数列と、2階差の数列を出力する。
import numpy as np
seq = np.array([5, 7, 3, 4, 8])
diff_seq = np.diff(seq)
diff2_seq = np.diff(seq, n=2)
print(diff_seq)
print(diff2_seq)

折れ線グラフで階差数列を観察する

まとめノート
「階差数列」とは
隣り合う二項の差の数列のこと。
定義
数列 $\{ a_n \}$ の階差数列 $\{ b_n \}$ は
$b_n = a_{n+1} - a_n$
である.
A. 階差数列の利用
$n \geqq 2$ の $a_n$ の値は, 階差数列を使って導くことができる.
$\displaystyle a_n = a_1 + \sum_{k=1}^{n-1} b_k$
B. 数列の和 $\{S_n\}$ の階差数列
数列 $\{ a_n \}$ の和を $S_n$ とする。$\{ S_n \}$ の階差数列は $\{ a_n \}$ である.
$S_{n} - S_{n-1} = a_n$ $(n \geqq 2)$
定義
数列 $\{ a_n \}$ の階比数列 $\{ b_n \}$ は
$b_n = a_{n+1} / a_n$
である.
C. 階比数列の利用
$n \geqq 2$ の $a_n$ の値は, 階比数列を使って導くことができる.
$\displaystyle a_n = a_1 \times \prod_{k=1}^{n-1} b_k$
ポイント解説
A
$n \geqq 2$ のとき, $$\begin{aligned}
a_{n} &= a_{n-1} +b_{n-1} \\
&= (a_{n-2} + b_{n-2}) + b_{n-1} \\
&= \displaystyle a_{n-2} + \sum_{k=n-2}^{n-1} b_k \\
&= \cdots \\
&= \displaystyle a_1 + \sum_{k=1}^{n-1} b_k \\
\end{aligned}$$
B
$n \geqq 2$ のとき, $$\begin{aligned}
S_{n} - S_{n-1} &= \sum_{k=1}^n a_k - \sum_{k=1}^{n-1} a_k \\
&= a_n
\end{aligned}$$
C
$n \geqq 2$ のとき, $$\begin{aligned}
a_{n} &= a_{n-1} \cdot b_{n-1} \\
&= a_{n-2} \cdot b_{n-2} \cdot b_{n-1} \\
&= \displaystyle a_{n-2} \times \prod_{k=n-2}^{n-1} b_k \\
&= \cdots \\
&= \displaystyle a_1 \times \prod_{k=1}^{n-1} b_k \end{aligned}$$