Skip to content

第 3 章 极限 ​

学习目标 ​

  • 理解数列极限与函数极限的含义
  • 掌握极限的四则运算法则
  • 理解无穷小与无穷大
  • 掌握夹逼定理与两个重要极限
  • 会用 NumPy 数值验证极限

3.1 数列的极限:越走越近,但不一定到达 ​

第 2 章反复出现一个动作:「让 越来越小,看结果逼近哪个数」。这一章把这个动作正式化,它叫极限。

先从最简单的对象开始:数列。把整数 按规则排成一串数:

这一串数越来越接近 0。虽然每一项都不是 0,但想让它多接近 0 都行:想让 与 0 的距离小于 ,只要取 ;想让距离小于 ,取 。这种「要多接近有多接近」,就叫收敛。

数列极限:若对任意给定的正数 (可以任意小),都存在正整数 ,使得当 时,有

则称数列 的极限是 ,记作 。

直觉版本:无论你给多小的误差 , 从某一项之后就一直待在这个误差范围内。注意两个细节:

  1. 只要求「从某一段之后」,前面几项怎么跳都无所谓,极限看的是尾巴;
  2. 可以永远不等于 ——极限是「逼近的目标」,不是「必须到达的终点」。
python
for n in range(1, 8):
    print(f"n = {n}   a_n = {1/n:.6f}")
text
n = 1   a_n = 1.000000
n = 2   a_n = 0.500000
n = 3   a_n = 0.333333
n = 4   a_n = 0.250000
n = 5   a_n = 0.200000
n = 6   a_n = 0.166667
n = 7   a_n = 0.142857

3.2 函数极限:自变量逼近某一点 ​

数列的自变量 只能往无穷大走。函数更丰富:自变量 可以逼近任何一点 。

函数极限:设函数 在 附近有定义(可以不定义在 本身),若当 无限接近 但 时, 无限接近常数 ,就记作

严格定义:对任意 ,都存在 ,使得当 时,有 。

严格定义里的 是「允许 偏离 多远」, 是「要求 离 多近」:先给定任意小的 ,总能找到足够小的 ,让 在 的这个邻域内时函数值全部落在 的 范围内。这保证「接近 就接近 」,没有任何反例。

验证 在 时的极限是 4,左右两边都逼近:

python
for h in [1, 0.1, 0.01, 0.001, -0.001, -0.01, -0.1, -1]:
    x = 2 + h
    print(f"x = {x:7.3f}   f(x) = {x**2:7.4f}")
text
x =   3.000   f(x) =  9.0000
x =   2.100   f(x) =  4.4100
x =   2.010   f(x) =  4.0401
x =   2.001   f(x) =  4.0040
x =   1.999   f(x) =  3.9960
x =   1.990   f(x) =  3.9601
x =   1.900   f(x) =  3.6100
x =   1.000   f(x) =  1.0000

左边()与右边()同时逼近 4,所以极限存在且等于 4。

函数极限

python
import matplotlib.pyplot as plt
from matplotlib import font_manager
for f in font_manager.findSystemFonts():
    if any(k in f for k in ("NotoSansCJK", "NotoSansSC", "wqy", "SimHei", "msyh", "PingFang")):
        font_manager.fontManager.addfont(f)
plt.rcParams["font.sans-serif"] = ["Noto Sans CJK SC", "WenQuanYi Zen Hei", "SimHei", "Microsoft YaHei", "PingFang SC"]
plt.rcParams["axes.unicode_minus"] = False

import numpy as np

x = np.linspace(1.2, 2.8, 400)
y = x ** 2

fig, ax = plt.subplots(figsize=(7, 5.5))
ax.plot(x, y, color="tab:blue", label="f(x) = x²")

# 极限的「带」:x 靠近 2 时,f(x) 落在 4 附近
ax.fill_between([1.8, 2.2], 3.96, 4.04, color="tab:orange", alpha=0.18, label="f(x) 在 4 附近")
ax.fill_between([1.9, 2.1], 3.96, 4.04, color="tab:green", alpha=0.28, label="更窄的 x 范围")

ax.scatter([2], [4], color="tab:red", s=40, zorder=4)
ax.annotate("(2, 4)", (2, 4), textcoords="offset points", xytext=(10, -10), color="tab:red")
ax.axhline(4, color="tab:red", linestyle="--", linewidth=1)
ax.axvline(2, color="tab:red", linestyle="--", linewidth=1)

ax.set_xlim(1.2, 2.8)
ax.set_ylim(1.2, 8.2)
ax.grid(True, linestyle=":", alpha=0.5)
ax.legend(loc="upper left")
ax.set_title("lim_{x→2} x² = 4:范围越缩越紧")
fig.savefig("book/public/figs/fig03-limit.png", dpi=120, bbox_inches="tight")
plt.close(fig)

一个关键事实,必须牢牢记住:

极限只看 靠近 时函数的行为,不管 那一点本身的值。哪怕 不存在,极限也可能存在。这个区别在第 4 章讲「连续」时会再次登场。

3.3 极限的四则运算法则 ​

设 、,则:

和、差法则的证明思路(这是理解的关键):要求 任意小。由三角不等式,

给定 ,让 与 的距离小于 、 与 的距离小于 ,两者加起来就小于 。乘积法则与商法则的证明同样用 - 语言,思路是「把差距拆成可控的小块」;这一章先记住结论,重点是会用。

用法示例:求 。

这里每步都用了「和、差、积」法则。事实上,对多项式函数,直接把 代进去就得到极限值——这叫代入法。但注意:代入法只对连续函数可靠(第 4 章解释),遇到 型必须先化简。

3.4 无穷小与无穷大 ​

无穷小:极限为 0 的量。比如 、、(当 )。注意「无穷小」不是「很小的数」,而是「以 0 为极限的变量」—— 虽然小,但它是个常数,不是无穷小。

无穷大:当 (或 )时, 无限增大,记作 (或 )。无穷大不是数,而是一种「无界变化」的描述。

无穷小的用处:极限计算中,「 型」的困难,在于分子分母同时趋于 0,不能直接除。解决办法是先比较两个无穷小「谁趋于 0 更快」。例如:

分子 和分母 都是无穷小,但它们在 0 附近「速度相当」,比值趋于 1。这就是下一个重要极限。

3.5 两个重要极限 ​

第一个重要极限:

这里的 用弧度。几何推导(不依赖计算器):在单位圆中,圆心角 (很小)对应的扇形夹在两个三角形之间,比较面积得到

当 时,,两边都逼近 1,由夹逼定理(下一节), 也逼近 1。

python
import numpy as np

for x in [1.0, 0.5, 0.1, 0.01]:
    print(f"x = {x:<5}  sin(x)/x = {np.sin(x)/x:.6f}")
text
x = 1.0    sin(x)/x = 0.841471
x = 0.5    sin(x)/x = 0.958851
x = 0.1    sin(x)/x = 0.998334
x = 0.01   sin(x)/x = 0.999983

第二个重要极限:

这是自然常数 的由来之一(第 6 章会从「增长」的角度再讲它)。数值上:

python
for n in [1, 10, 100, 1000, 100000]:
    print(f"n = {n:<7} (1+1/n)^n = {(1 + 1/n)**n:.8f}")
text
n = 1       (1+1/n)^n = 2.00000000
n = 10      (1+1/n)^n = 2.59374246
n = 100     (1+1/n)^n = 2.70481383
n = 1000    (1+1/n)^n = 2.71692393
n = 100000  (1+1/n)^n = 2.71826824

逼近 2.71828,但永远不相等——极限是目标,不是终点。

3.6 夹逼定理 ​

夹逼定理(挤压定理):若在 附近有

且 ,则 。

直觉:三个选手赛跑, 被夹在 和 中间。、 都跑到 ,中间的 想不跑到 都不行。刚才推导 用的就是这个定理。

经典例子:()。 在 0 附近剧烈震荡,但正弦函数的值永远在 和 之间,所以

两边都趋于 0,由夹逼定理,。

python
import numpy as np

for x in [1.0, 0.5, 0.1, 0.01]:
    print(f"x = {x:<5} f(x) = {x**2 * np.sin(1/x):.7f}")
text
x = 1.0   f(x) = 0.8414710
x = 0.5   f(x) = 0.2273244
x = 0.1   f(x) = -0.0054402
x = 0.01  f(x) = -0.0000506

夹逼定理

python
import matplotlib.pyplot as plt
from matplotlib import font_manager
for f in font_manager.findSystemFonts():
    if any(k in f for k in ("NotoSansCJK", "NotoSansSC", "wqy", "SimHei", "msyh", "PingFang")):
        font_manager.fontManager.addfont(f)
plt.rcParams["font.sans-serif"] = ["Noto Sans CJK SC", "WenQuanYi Zen Hei", "SimHei", "Microsoft YaHei", "PingFang SC"]
plt.rcParams["axes.unicode_minus"] = False

import numpy as np

x = np.linspace(-0.8, 0.8, 2000)
f = x ** 2 * np.sin(1 / x)

fig, ax = plt.subplots(figsize=(7, 5))
ax.plot(x, f, color="tab:blue", linewidth=0.8, label="f(x) = x²sin(1/x)")
ax.plot(x, x ** 2, color="tab:red", linestyle="--", label="y = x²")
ax.plot(x, -x ** 2, color="tab:green", linestyle="--", label="y = -x²")
ax.axhline(0, color="black", linewidth=0.8)
ax.axvline(0, color="black", linewidth=0.8)
ax.scatter([0], [0], color="tab:red", s=40, zorder=4)
ax.annotate("极限 = 0", (0, 0), textcoords="offset points", xytext=(8, 10), color="tab:red")

ax.set_xlim(-0.8, 0.8)
ax.set_ylim(-0.65, 0.65)
ax.grid(True, linestyle=":", alpha=0.5)
ax.legend(loc="upper left", fontsize=9)
ax.set_title("夹逼:x²sin(1/x) 被 ±x² 夹住")
fig.savefig("book/public/figs/fig03-squeeze.png", dpi=120, bbox_inches="tight")
plt.close(fig)

3.7 动手实践:求极限的完整流程 ​

求 。直接代入得到 ,但分子可以因式分解:

约分依据:平方差公式 ,且 时 ,可以约分。于是

注意:约分后的 在 处有意义,但原函数在 处没定义(分母为 0)。因为极限不看 这一点本身,所以结果仍然是 4。

python
import numpy as np

for h in [0.1, 0.01, 0.001, -0.001, -0.01, -0.1]:
    x = 2 + h
    ratio = (x ** 2 - 4) / (x - 2)
    print(f"x = {x:7.3f}   比值 = {ratio:7.4f}")
text
x =   2.100   比值 =  4.1000
x =   2.010   比值 =  4.0100
x =   2.001   比值 =  4.0010
x =   1.999   比值 =  3.9990
x =   1.990   比值 =  3.9900
x =   1.900   比值 =  3.9000

常见错误 ​

错误写法/理解原因
认为 极限与函数值无关;该式成立要等第 4 章「连续」的额外条件
遇到 直接说「无意义,没有极限」 只是「不能直接代入」,先化简(因式分解、通分、有理化)再算
把无穷小说成「很小的数」无穷小是极限为 0 的变量,不是某个固定的数
对商法则忘记要求 分母极限为 0 时商法则失效,需要其他方法
用数值表判断极限时只从一边逼近必须左右两边都逼近同一个数,极限才存在

章末练习 ​

基础

  1. 写出数列 的前 5 项,并说出 等于几。
  2. 求 ,写出四则运算法则的应用步骤。
  3. 用因式分解求 。

提高

  1. 用 - 语言解释:为什么 ?若要求 , 至少取多少?
  2. 求 。提示:写成 ,再用第一个重要极限。

挑战

  1. 证明 存在,但 不存在。提示:一个用夹逼,一个找两条不同的逼近路径得到不同结果。
  2. 用 Python 计算 当 的值,猜测它逼近哪个数。

章末自测 ​

每题选择一个最佳答案。本书不附答案:完成后交由老师或 AI 老师批改讲解。

  1. 等于?
    • A. 不存在
    • B.
    • C.
    • D.
  2. 等于?
    • A.
    • B.
    • C. 不存在
    • D.
  3. 极限 与函数值 的关系是?
    • A. 一定相等
    • B. 无关,极限只看 靠近 时的行为
    • C. 必须存在
    • D. 极限更大
  4. 等于?
    • A.
    • B. 不存在
    • C.
    • D.
  5. 设 、,则 等于?
    • A.
    • B.
    • C.
    • D.
  6. 等于?
    • A.
    • B.
    • C. 不存在
    • D.
  7. 等于?
    • A.
    • B.
    • C.
    • D.
  8. 夹逼定理要求 ,且 、 的极限同为 ,则 的极限是?
    • A. 可能不存在
    • B.
    • C.
    • D.
  9. 无穷小指的是?
    • A. 很小的常数
    • B. 极限为 0 的变量
    • C. 负数
    • D. 分数
  10. 判断极限是否存在时,应?
    • A. 只看右侧逼近
    • B. 只看左侧逼近
    • C. 左右两侧逼近同一个数
    • D. 直接代入