Courses
1 + 2 + 4 + 8 + ... が、たったひとつのすっきりした公式で表せることを不思議に思ったことはありませんか?
級数とは、数列の項を足し合わせたものにすぎません。各項が毎回同じ数を掛けて増減していくとき、それは等比級数です。その一定の掛け数を公比と呼び、これが全体の要になっています。
等比級数は、ローン返済、信号の減衰、アルゴリズム解析など、あらゆる場面に現れます。これを扱えることは、データに関わる人にとって必須の数学スキルです。
この記事では、主要な公式、無限等比級数に有限の和が生じる条件、そして実例を取り上げて解説します。
Python の基礎がわかっていれば、次のステップに進む準備は万端です。全16時間のMachine Learning Fundamentals in Python コースにご参加ください。
等比級数とは?
等比級数とは、各項が前の項に一定の比(公比)を掛けて得られる項の総和です。
たとえば、1 + 2 + 4 + 8 + 16 を考えます。各項は直前の項の2倍です。この倍にする要素が、等比であることの本質です。
あらゆる等比級数は次の2つの値で定義されます。
- 初項(
a)——級数の開始値 - 公比(
r)——次の項を得るために各項に掛ける一定の倍率
もし a = 1、r = 2 なら 1 + 2 + 4 + 8 + ...。a = 3、r = 0.5 なら 3 + 1.5 + 0.75 + ...。構造は常に同じです。
つまり、等比級数とは、a から始めて各段階で r を掛ける繰り返しの掛け算を、すべて足し合わせたものなのです。
等比数列と等比級数の違い
この2つの用語はよく混同されますが、違いは一文で説明できます。
等比数列は 1, 2, 4, 8, 16 のような数の並び、等比級数はそれらを足し合わせたもの、つまり 1 + 2 + 4 + 8 + 16 = 31 のことです。
並んでいる数自体は同じですが、行う操作が異なります。数列は並べ、級数は合計します。
有限等比級数の公式
等比級数の最初の n 項の和は、次の公式で与えられます。

最初の n 項の和の公式
ここで:
-
a= 初項 -
r= 公比 -
n= 項数
簡単な例を見てみましょう。1 + 2 + 4 + 8 の最初の4項の和を求めたいとします。ここでは a = 1、r = 2、n = 4 です。

等比級数の簡単な例
手計算でも確認できます:1 + 2 + 4 + 8 = 15。公式なら一発で求まります。n が大きいときほど、この差が効いてきます。
無限等比級数と収束
頭を切り替える必要のある概念ですが、無限級数でも有限の和を持つことがあります。
たとえば 1 + 0.5 + 0.25 + 0.125 + ...。項はどれだけでも足し続けられますが、合計は決して 2 を超えません。各項が前の項より小さくなり続け、十分に小さくなるため、和は発散せず一定の値に近づいていくからです。
この性質を収束と呼び、成立する条件はただひとつ:|r| < 1 です。
公比が -1 と 1 の間(端点を含まない)にあるとき、項は進むごとに小さくなります。項は 0 に近づき、追加の寄与が次第に小さくなるため、和が落ち着くのです。
もし |r| ≥ 1 なら、項は小さくなりません。同じ大きさのままか、むしろ大きくなり、和は増え続けます。これは発散級数で、有限の和は持ちません。
r の絶対値記号には注意が必要です。公比が -0.5 の場合も収束します。符号は交互に変わっても、項は 0 に近づいていくからです。
無限等比級数の公式
|r| < 1 のとき、無限等比級数は次のたったひとつの公式で和を求められます。

無限等比級数の公式
ここで a は初項、r は公比です。級数は止まらないので、n は不要です。
前の節の例を使いましょう:1 + 0.5 + 0.25 + 0.125 + ...。ここでは a = 1、r = 0.5 です。

無限等比級数の例
無限和はちょうど 2 になります。項をいくらでも足し続けても、それを超えることはありません。
この公式は |r| < 1 の場合にのみ有効である点は重要です。級数が発散するなら、この公式は使えず、無意味な結果になります。適用前に、必ず収束条件を確認してください。
収束が重要な理由
無限級数のすべてが有限の和に落ち着くわけではありません。中には増え続けるものもあります。
1 + 2 + 4 + 8 + ... を考えます。ここでは r = 2、つまり各項は前の項より大きくなります。和は限界を持たず、際限なく増大します。これは発散級数で、無限和の公式を当てはめても意味のない結果しか得られません。
同じことは r = 1 のときにも起こります。3 + 3 + 3 + 3 + ... は蓄積が止まらず、有限の和は存在しません。
だからこそ、公式を使う前に |r| < 1 を確認するのは必須です。級数が発散していても、公式は明らかな形で壊れるわけではありません——見かけ上もっともらしい数を返しますが、完全に誤りなのです。
Python での等比級数
ここまでの内容をコードに落とし込みましょう。有限和と無限和の両方の公式を実装し、結果を検証し、項を増やしたときの部分和の挙動を可視化します。
有限等比級数
有限等比級数の公式を実装するのに必要な Python のロジックは、これだけです。
def finite_geometric_sum(a, r, n):
if r == 1:
return a * n
return a * (1 - r**n) / (1 - r)
result = finite_geometric_sum(a=1, r=2, n=4)
print(f"Finite sum (a=1, r=2, n=4): {result}")

Python による有限等比級数
無限等比級数
無限級数でも考え方は同様ですが、条件に違反した場合はエラーを送出する必要があります。
def infinite_geometric_sum(a, r):
if abs(r) >= 1:
raise ValueError(f"Series diverges for |r| >= 1. Got r={r}.")
return a / (1 - r)
# Example: 1 + 0.5 + 0.25 + ... (a=1, r=0.5)
result = infinite_geometric_sum(a=1, r=0.5)
print(f"Infinite sum (a=1, r=0.5): {result}")

Python による無限等比級数
この関数は |r| >= 1 のときにエラーを送出するため、誤った答えが黙って返されることはありません。
収束の可視化
ここからが面白いところです。収束する級数では、n が増えるにつれ部分和は理論上の極限に近づくはずです。プロットしてみましょう。
import numpy as np
import matplotlib.pyplot as plt
COLOR_DARK = "#1a1a2e"
COLOR_GREEN = "#03EF62"
COLOR_LIGHT_GRAY = "#cccccc"
a, r = 1, 0.5
n_terms = 30
theoretical_limit = infinite_geometric_sum(a, r)
# Compute partial sums
terms = a * r ** np.arange(n_terms)
partial_sums = np.cumsum(terms)
# Plot
fig, ax = plt.subplots(figsize=(10, 5), facecolor=COLOR_DARK)
ax.set_facecolor(COLOR_DARK)
ax.plot(range(1, n_terms + 1), partial_sums, color=COLOR_GREEN, linewidth=2, label="Partial sums")
ax.axhline(y=theoretical_limit, color=COLOR_LIGHT_GRAY, linewidth=1, linestyle="--", label=f"Limit = {theoretical_limit}")
ax.scatter(range(1, n_terms + 1), partial_sums, color=COLOR_LIGHT_GRAY, s=30, zorder=3)
# Style
for spine in ax.spines.values():
spine.set_visible(False)
ax.spines["bottom"].set_visible(True)
ax.spines["bottom"].set_color(COLOR_LIGHT_GRAY)
ax.spines["bottom"].set_alpha(0.3)
ax.tick_params(colors=COLOR_LIGHT_GRAY)
ax.xaxis.label.set_color(COLOR_LIGHT_GRAY)
ax.yaxis.label.set_color(COLOR_LIGHT_GRAY)
ax.set_xlabel("Number of terms")
ax.set_ylabel("Partial sum")
ax.set_title("Convergence of geometric series (a=1, r=0.5)", color=COLOR_LIGHT_GRAY, pad=15)
legend = ax.legend(facecolor=COLOR_DARK, edgecolor=COLOR_LIGHT_GRAY, labelcolor=COLOR_LIGHT_GRAY)
legend.get_frame().set_alpha(0.3)
plt.tight_layout()
plt.show()

収束の可視化
部分和は 2.0 に近づいて平坦になっていきます。これが実際の収束の姿です。各追加項の寄与は前の項よりも小さくなり、曲線は理論上の極限に落ち着きます。
等比級数の主な応用
等比級数は、金融、物理、コンピュータサイエンスに横たわる実際のパターンを表現します。
最も身近なのは金融でしょう。一定の利率で投資すると、各期の残高は前期に一定の倍率を掛けたものになります。時間とともに複利で積み上がる価値の総和は等比級数です。同じ構造は、ローンの元利均等返済や年金(アニュイティ)の計算にも当てはまります。
物理では、減衰過程のモデル化に等比級数が使われます。放射性崩壊、信号の減衰、エネルギー散逸などでは、各段階で量が一定の比で減っていきます。無限の時間にわたって崩壊する物質の総量は、収束する等比級数とみなせます。
コンピュータサイエンスでは、アルゴリズム解析に等比級数が現れます。各ステップで問題規模を半分にする再帰的アルゴリズム——二分探索やマージソートなど——では、全レベルで行われる総仕事量を数えると等比級数が生じます。固定倍率で容量を拡張するメモリアロケーションやデータ構造のサイズ設計でも見られます。
等比級数でよくあるミス
等比級数での多くの誤りは、定義の取り違えと、公式の誤用に集約されます。
数列と級数の混同
これが最も一般的です。数列は並び、級数は和です。誰かが「等比級数」を求めているのに、項を列挙してしまえば、質問に答えていないことになります。特に、答えが単一の数として期待されているときに重要な区別です。
|r| ≥ 1 なのに無限和の公式を適用する
これは気づきにくいミスです。S = a / (1 - r) の公式は、級数が収束するときにのみ成り立ちます。r = 2 として小ぎれいな数が得られても、その数には意味がありません。必ず最初に |r| < 1 を確認しましょう。
公比の取り違え
これも見た目以上に厄介です。公比 r は、次の項を得るために掛ける値であり、項同士の差でも、最初の項を2番目の項で割った値でもありません。3 + 6 + 12 + 24 なら公比は 2 であって 3 ではありません。任意の項をそのひとつ前の項で割って r を求め、いくつかの連続する組で同じになることを確認してください。一定でなければ、それは等比級数ではありません。
まとめ
等比級数は、繰り返しの掛け算を合計したものです。各項は前の項に同じ比を掛けて得られるため、パターンは予測可能で、公式も解釈しやすくなります。
収束条件——|r| < 1——は必ず覚えておくべき唯一のポイントです。有限の意味ある和を持つ級数と、際限なく増え続ける級数を分ける境目です。ここを取り違えると、得られる結果には価値がなくなります。
やることは本当にこれだけです。公比を見極め、収束条件を確認し、正しい公式を適用する——それだけです。
等比級数が簡単だと感じたら、最新のTaylor Series: From Approximations to Optimization のブログ記事をお読みください——数学自体は少し難しくなりますが、説明のわかりやすさはそのままです。
等比級数に関する FAQ
等比級数とは何ですか?
等比級数とは、各項が前の項に公比と呼ばれる一定の値を掛けて得られる項の総和です。たとえば 1 + 2 + 4 + 8 は、初項が 1、公比が 2 の等比級数です。等比数列と等比級数の主な違いは、数列は項を並べるだけで、級数はそれらを合計する点にあります。
無限等比級数はいつ収束しますか?
無限等比級数が収束するのは、公比の絶対値が 1 未満、すなわち |r| < 1 のときです。この条件が成り立つと、項が 0 に十分速く近づくため、合計は有限の値に落ち着きます。|r| ≥ 1 の場合、級数は発散し、有限の和を持ちません。
等比級数は現実世界のどこで使われていますか?
等比級数は金融、物理、コンピュータサイエンスで見られます。金融では、複利や年金の計算が等比級数の構造に依拠しています。コンピュータサイエンスでは、二分探索やマージソートのように各ステップで問題規模を半分にする再帰的アルゴリズムの解析に現れます。
有限等比級数の公式と無限等比級数の公式の違いは何ですか?
有限等比級数の公式 S_n = a(1 - r^n) / (1 - r) は、ちょうど n 項を合計し、r が 1 の場合を除き常に使えます。無限等比級数の公式 S = a / (1 - r) は |r| < 1 のときにのみ適用でき、級数が無限に続くすべての項の和を与えます。収束の確認をせずに無限和の公式を使ってしまうのは、等比級数で最もよくある誤りのひとつです。
等比級数の公比はどのように求めますか?
任意の項をその直前の項で割ってください。たとえば 3 + 6 + 12 + 24 では、6 を 3 で割ると公比は 2 です。真に等比かどうか確認するには、他のいくつかの連続した組でも同じ比になるかをチェックしてください——一定でなければ、それは等比級数ではありません。