等比数列——比が一定の列と無限級数
等比数列とは
たとえば、コロナウイルスが「1人が2人に感染させる」パターンで広がるとします。1人 → 2人 → 4人 → 8人 → 16人……と、毎回2倍になっていきます。これが等比数列の考え方です。
等比数列(とうひすうれつ)とは、隣り合う項の比が常に一定の数列です。この一定の比を公比(こうひ)と呼び、 で表します。
例:(公比 )
毎年 倍に増える投資、毎回半分になる薬の量、コンピュータのデータサイズ——等比数列は指数的な成長・減衰を記述する最も基本的な道具です。
一般項の公式
「 番目の項はいくつか?」を求める公式です。
初項 、公比 の等比数列の第 項は:
aₙ = a₁ · rⁿ⁻¹
考え方は、「最初の値()を 回、 倍する」です。
: ✓ : ✓ : ✓
| () | () | |
|---|---|---|
| 1 | 1 | 16 |
| 2 | 2 | 8 |
| 3 | 4 | 4 |
| 4 | 8 | 2 |
| 5 | 16 | 1 |
指数的成長を「見る」
等差数列の棒グラフが階段状だったのに対して、等比数列の棒グラフは爆発的に伸びる(または急速に縮む)形になります。
「等差は毎回足し算」「等比は毎回掛け算」——この違いが大きな差を生みます。
マウスを左右に動かして公比 を変えてみましょう。 で成長、 で収束する様子が確認できます。
var a1, r, n, i, val, x, h, barW, maxVal;
function loop() {
ctx.clearRect(0, 0, W, H);
a1 = 1;
r = 0.5 + (mx / W) * 2.5;
n = 10;
barW = Math.floor((W - 60) / n) - 4;
var vals = [];
for (i = 0; i < n; i++) {
vals.push(a1 * Math.pow(r, i));
}
maxVal = Math.max.apply(null, vals);
if (maxVal < 1) maxVal = 1;
for (i = 0; i < n; i++) {
val = vals[i];
h = Math.min(220, (val / maxVal) * 220);
x = 30 + i * ((W - 60) / n);
var t = i / (n - 1);
var red = Math.round(59 + t * 220);
var grn = Math.round(200 - t * 100);
var blu = Math.round(246 - t * 150);
ctx.fillStyle = 'rgb(' + red + ',' + grn + ',' + blu + ')';
ctx.fillRect(x, 250 - h, barW, h);
ctx.fillStyle = '#94a3b8';
ctx.font = '11px monospace';
ctx.textAlign = 'center';
ctx.fillText(val < 100 ? val.toFixed(1) : val.toFixed(0), x + barW / 2, 264);
}
ctx.fillStyle = '#e2e8f0';
ctx.font = '14px monospace';
ctx.textAlign = 'left';
ctx.fillText('a₁ = 1 r = ' + r.toFixed(2), 20, 22);
ctx.fillText('aₙ = 1 × ' + r.toFixed(2) + 'ⁿ⁻¹', 20, 42);
ctx.fillStyle = r > 1 ? '#f87171' : '#34d399';
ctx.fillText(r > 1 ? '▲ 指数的成長(r > 1)' : '▼ 指数的減衰(0 < r < 1)', 20, 300);
requestAnimationFrame(loop);
}
loop(); 等比数列の和の公式
「両辺に をかけると、ほとんどの項が重なる」という発想で導きます。
両辺に をかけて引く「等比数列の和の導出」:
Sₙ = a₁ + a₁r + a₁r² + … + a₁rⁿ⁻¹
r·Sₙ = a₁r + a₁r² + … + a₁rⁿ⁻¹ + a₁rⁿ
──────────────────────────────────────────────
(1-r)Sₙ = a₁ - a₁rⁿ = a₁(1 - rⁿ)
「 倍してから引くと、中間の項がきれいに消えて、最初と最後だけ残る」——これが等比数列の和の鍵です。
したがって( のとき):
Sₙ = a₁(1 - rⁿ) / (1 - r)
のとき:(全て同じ値なので 倍)
無限等比級数:|r| < 1 のとき
なら ()なので:
直感的には:公比が より小さければ、各項が急速に に近づき、無限に足し続けても有限の値に収まります。
有名な例:
これは「1枚のケーキを半分ずつ切り続けると、無限に切っても元の1枚になる」という直感と一致します。
別の例えを使えば——1メートル進んで、また0.5メートル進んで、また0.25メートル進んで……と永遠に続けても、合計は2メートルを超えません。
収束の可視化
、公比 ()のとき、 が に収束していく様子を観察しましょう。マウスを動かして を変えてみてください。 が小さいほど素早く収束し、 が1に近いほどゆっくり収束します。
var a1, r, i, Sn, partial, limit;
var nSteps = 20;
function loop() {
ctx.clearRect(0, 0, W, H);
a1 = 1;
r = 0.1 + (mx / W) * 0.88;
limit = a1 / (1 - r);
var partials = [];
Sn = 0;
for (i = 0; i < nSteps; i++) {
Sn += a1 * Math.pow(r, i);
partials.push(Sn);
}
var maxY = limit * 1.1;
var ox = 40, oy = 260, pw = W - 80;
// limit line
ctx.strokeStyle = '#fbbf2466';
ctx.lineWidth = 1;
ctx.setLineDash([6, 4]);
var limitY = oy - (limit / maxY) * 240;
ctx.beginPath();
ctx.moveTo(ox, limitY);
ctx.lineTo(ox + pw, limitY);
ctx.stroke();
ctx.setLineDash([]);
ctx.fillStyle = '#fbbf24';
ctx.font = '12px monospace';
ctx.textAlign = 'left';
ctx.fillText('S = ' + limit.toFixed(3), ox + pw + 4, limitY + 4);
// partial sums
ctx.strokeStyle = '#60a5fa';
ctx.lineWidth = 2;
ctx.beginPath();
for (i = 0; i < partials.length; i++) {
var px = ox + i * (pw / (nSteps - 1));
var py = oy - (partials[i] / maxY) * 240;
if (i === 0) ctx.moveTo(px, py); else ctx.lineTo(px, py);
ctx.fillStyle = '#60a5fa';
ctx.beginPath();
ctx.arc(px, py, 3, 0, Math.PI * 2);
ctx.fill();
ctx.beginPath();
if (i > 0) { ctx.moveTo(ox + (i-1) * (pw/(nSteps-1)), oy - (partials[i-1]/maxY)*240); ctx.lineTo(px, py); }
}
ctx.stroke();
ctx.fillStyle = '#e2e8f0';
ctx.font = '14px monospace';
ctx.textAlign = 'left';
ctx.fillText('r = ' + r.toFixed(3) + ' 収束値 1/(1-r) = ' + limit.toFixed(3), 20, 22);
ctx.fillText('S₂₀ = ' + partials[nSteps-1].toFixed(4), 20, 42);
requestAnimationFrame(loop);
}
loop(); 等比数列の応用
複利計算
「利息にも利息がつく」複利は等比数列そのものです。元本 、年利 、 年後の金額:
これは初項 、公比 の等比数列です。たとえば年利 5% なら公比 1.05——毎年1.05倍になっていきます。
等比数列の応用例
| 場面 | 初項 | 公比 |
|---|---|---|
| 人口成長(年率2%) | 現在人口 | 1.02 |
| 放射性崩壊(半減期ごと) | 初期量 | 0.5 |
| デジタルデータ(バイト→KB→MB) | 1 | 1024 |
まとめ
- 等比数列:「毎回同じ数を掛ける」数列。等差数列(毎回足す)とは違います
- 一般項:——「最初の値を 回 倍する」
- 和の公式:()——「 倍してから引く」で導出
- 無限等比級数: のとき に収束——ケーキを半分ずつ切っても全体は1枚
- 等比数列は複利・人口増加・放射線の減衰など、身近な「指数的変化」を表す
次回は数列の和のシグマ記法と各種公式を学びます。