Courses
有没有想过,1 + 2 + 4 + 8 + ... 这样的一串数,如何用一个简洁的公式来表示?
级数就是把一个数列的项加在一起。当每一项都通过乘以同一个数来得到下一项时,这个级数就是等比级数。这个恒定的乘数称为公比,它是整个结构的关键。
等比级数无处不在,从贷款还款、信号衰减,到算法分析。掌握它们是处理数据时必备的数学技能。
本文将介绍关键公式,解释无限等比级数何时会有有限和,并通过真实示例加以说明。
如果您掌握了 Python 基础,就可以学习更有趣的内容了。欢迎报名我们的 16 小时 Machine Learning Fundamentals in Python 课程。
什么是等比级数?
等比级数是这样一类项的和:每一项都通过将前一项乘以一个常数比得到。
例如,1 + 2 + 4 + 8 + 16。每一项都是前一项的两倍。这个翻倍的因素使其成为等比。
每个等比级数由两个值决定:
- 首项(
a)——级数的起始值 - 公比(
r)——从一项得到下一项所乘的常数倍
如果 a = 1 且 r = 2,就得到 1 + 2 + 4 + 8 + ...。如果 a = 3 且 r = 0.5,就得到 3 + 1.5 + 0.75 + ...。结构始终相同。
这就是核心思想。任何等比级数都只是从 a 出发,每一步按 r 缩放的重复乘法。
等比数列 vs 等比级数
这两个术语常被混用,但一句话就能说明区别。
等比数列只是一个数字列表: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 始终是“为得到下一项所乘的值”——不是项与项之间的差,也不是首项除以第二项。对 3 + 6 + 12 + 24 而言,公比是 2,不是 3。用任一项除以前一项即可得到 r,并用几对相邻项复核,确保它确实是常数。
结语
等比级数就是把重复的乘法加总起来。每一项都由前一项按同一比例得到,这使模式可预测、公式也容易理解。
收敛条件——|r| < 1——是您必须记住的一件事。它将具有有意义有限和的级数,与无限增长的级数区分开来。如果这一步判断错了,后续得到的结果都不成立。
核心也就这些。找出公比,检查收敛条件,应用正确的公式。就是如此。
如果您觉得等比级数不难,欢迎阅读我们最新的 泰勒级数:从近似到优化 博文——数学不如本文简单,但讲解同样清晰。
等比级数常见问答
什么是等比级数?
等比级数是把这样一组项相加:每一项都由前一项乘以一个称为公比的常数得到。例如,1 + 2 + 4 + 8 是一个等比级数,其首项为 1,公比为 2。等比数列与等比级数的关键区别在于:数列是列出各项,级数是将其相加。
无限等比级数在何时收敛?
当公比的绝对值小于 1(记作 |r| < 1)时,无限等比级数收敛。在该条件下,各项足够快地趋向于 0,使得总和趋于一个有限值。若 |r| ≥ 1,则级数发散,没有有限和。
等比级数在现实中有哪些应用?
等比级数出现在金融、物理和计算机科学中。在金融中,复利与年金计算依赖等比级数结构。在计算机科学中,它们出现在每步将问题规模减半的递归算法分析中,如二分查找与归并排序。
有限与无限等比级数公式有何区别?
有限公式 S_n = a(1 - r^n) / (1 - r) 精确求和前 n 项,除 r = 1 外适用任意 r。无限公式 S = a / (1 - r) 仅在 |r| < 1 时适用,给出级数延展到无穷时的总和。不先检查收敛性就使用无限公式,是处理等比级数时最常见的错误之一。
如何求等比级数的公比?
用任一项除以前一项即可。例如,在 3 + 6 + 12 + 24 中,用 6 除以 3 得到公比 2。为确保该级数确为等比,检查其他相邻几对项的比值是否相同——若不恒定,就不是等比级数。