Skip to content

第 9 章 定积分 ​

学习目标 ​

  • 理解黎曼和与定积分的定义
  • 掌握定积分的基本性质
  • 掌握微积分基本定理(牛顿-莱布尼茨公式)
  • 理解反常积分的含义,会算基本类型
  • 会用 NumPy 做数值积分并与精确值对照

9.1 从面积问题出发 ​

问一个「小学延伸」的问题:抛物线 与 轴、直线 围成的区域,面积是多少?

小学只会算矩形、三角形、圆的面积。曲线的面积没有现成公式,但有一个朴素的想法:把弯曲的区域切成很多细长的小条,每条近似看成矩形,加起来就是面积的近似值;切得越细,近似越准。这就是黎曼和。

9.2 黎曼和 ​

把区间 平均分成 份,每份宽度

分点:。第 个小区间是 。在每个小区间的右端点取函数值 ,把它当作这条小矩形的「高度」,第 条矩形的面积就是 。

把所有矩形面积加起来,得到右端点黎曼和:

符号 (读作 sigma)表示求和:从 加到 。对 :

用平方和公式 :

当 ,。这就是那块区域的面积。

黎曼和

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

fig, axes = plt.subplots(1, 2, figsize=(12, 4.6))
x = np.linspace(0, 2, 400)

for ax, n in zip(axes, [6, 30]):
    ax.plot(x, x**2, color="tab:blue", label="y = x²")
    edges = np.linspace(0, 2, n + 1)
    dx = edges[1] - edges[0]
    for i, xr in enumerate(edges[1:]):
        ax.add_patch(plt.Rectangle((edges[i], 0), dx, xr**2,
                     facecolor="tab:orange", alpha=0.35, linewidth=0.6,
                     edgecolor="tab:red"))
    ax.set_title(f"n = {n} 个矩形:面积 ≈ 面积的真值")
    ax.set_xlim(0, 2.05)
    ax.set_ylim(0, 4.4)
    ax.legend(fontsize=9)
    ax.grid(True, linestyle=":", alpha=0.5)

fig.suptitle("黎曼和:切得越细,越接近曲线下的面积")
fig.savefig("book/public/figs/fig09-riemann.png", dpi=120, bbox_inches="tight")
plt.close(fig)

用 Python 直接算 :

python
import numpy as np

def riemann_sum(f, a, b, n):
    dx = (b - a) / n
    x = np.linspace(a, b, n + 1)
    return np.sum(f(x[1:])) * dx  # 右端点

def f(x):
    return x ** 2

for n in [10, 100, 1000, 10000]:
    print(f"n = {n:<6} 黎曼和 = {riemann_sum(f, 0, 2, n):.6f}")
print("精确值 8/3  =", 8 / 3)
text
n = 10     黎曼和 = 3.080000
n = 100    黎曼和 = 2.706800
n = 1000   黎曼和 = 2.670668
n = 10000  黎曼和 = 2.667067
精确值 8/3  = 2.6666666666666665

9.3 定积分的定义 ​

定积分(definite integral):函数 在区间 上的定积分定义为黎曼和的极限:

其中 是第 个小区间内任意取的点(左端点、右端点、中点都行—— 时结果相同)。 叫积分下限, 叫积分上限, 叫积分变量。

记号里有两个部分,各有来历:

  • 求和号 拉长、变形,成了 (所以「积分」本义是「累加」);
  • 小条宽度 无限变细,写成 ,提醒积分是「无穷多个无穷窄的条」的极限。

几何含义:当 时, 就是曲线与 轴围成的面积;当 有正有负,它表示「上方面积减下方面积」的净面积。

9.4 定积分的基本性质 ​

以下性质都从定义(黎曼和的极限)直接推出,也符合面积的直觉:

  1. 线性:;
  2. 反向区间:;
  3. 零区间:;
  4. 区间可加:;
  5. 保号性:若 在 上成立,则 。

区间可加性特别有用:把难算的区间拆成几段分别算。比如 是分段函数时,每段单独积分再相加。

9.5 微积分基本定理 ​

定积分用「切条求和」定义,计算起来很痛苦。微积分基本定理把定积分和求导(不定积分)联系起来,让计算变得简单。

先定义面积函数:

它表示「从 到 的累积量」,是 的函数。

微积分基本定理(第一部分):若 连续,则

即:面积函数的导数等于被积函数本身。「累积量的变化率等于当前值」——比如位移 ,其导数 ,正好是速度。

证明思路:看差商

右边是在宽度 的区间上求 的平均值。 越小,这个平均值越接近 (连续性保证),所以差商的极限是 。

微积分基本定理(第二部分,牛顿-莱布尼茨公式):若 是 的任意一个原函数,则

常记作 。

推导:由第一部分, 是 的原函数;而 也是原函数,两者相差常数:。代入 :左边 ,所以 。代入 :得 ,移项即得公式。

现在算第 9.1 节的面积,一步到位:

微积分基本定理

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

t = np.linspace(0, 2, 400)
fig, axes = plt.subplots(1, 2, figsize=(12, 4.4))

# 左:∫_0^x t dt = x²/2(三角形面积)
axes[0].fill_between(t, t, color="tab:orange", alpha=0.35)
axes[0].plot(t, t, color="tab:blue", label="f(t) = t")
axes[0].set_title("面积 = ∫_0^x t dt = x²/2")
axes[0].set_xlim(0, 2.05)
axes[0].set_ylim(0, 2.2)

# 右:面积函数 F(x) = x²/2 及其导数 f(x) = x
x = np.linspace(0, 2, 400)
axes[1].plot(x, x**2 / 2, color="tab:green", label="F(x) = x²/2")
axes[1].plot(x, x, color="tab:blue", linestyle="--", label="F'(x) = x")
axes[1].set_title("F'(x) = f(x):基本定理第一部分")
axes[1].set_xlim(0, 2.05)
axes[1].set_ylim(0, 2.2)

for ax in axes:
    ax.axhline(0, color="black", linewidth=0.8)
    ax.axvline(0, color="black", linewidth=0.8)
    ax.grid(True, linestyle=":", alpha=0.5)
    ax.legend(fontsize=9)

fig.savefig("book/public/figs/fig09-ftc.png", dpi=120, bbox_inches="tight")
plt.close(fig)

9.6 计算示例 ​

例 1:。

例 2:。

正弦曲线在 上与 轴围成的面积正好是 2,可以用数值积分验证:

python
import numpy as np

x = np.linspace(0, np.pi, 100001)
dx = x[1] - x[0]
area = np.sum(np.sin(x)) * dx   # 黎曼和(右端点)
print("数值面积 ≈", area)
print("精确值   =", 2)
text
数值面积 ≈ 1.9999999998355065
精确值   = 2

9.7 反常积分 ​

积分区间无穷大,或者被积函数在某个点无界,叫反常积分。处理办法是把它写成普通积分的极限。

类型一(无穷区间):

例子:。

面积有限(等于 1),尽管区域延伸到无穷远——这叫收敛。若极限不存在或为无穷大,叫发散。

python
import numpy as np

for b in [10, 100, 1000, 10000]:
    x = np.linspace(1, b, 500000)
    dx = x[1] - x[0]
    approx = np.sum(1 / x[:-1] ** 2) * dx  # 左端点黎曼和(偏大)
    print(f"b = {b:<6} ∫_1^b 1/x² dx ≈ {approx:.6f}")
print("极限值 = 1")
text
b = 10      ∫_1^b 1/x² dx ≈ 0.900009
b = 100     ∫_1^b 1/x² dx ≈ 0.990099
b = 1000    ∫_1^b 1/x² dx ≈ 1.000000
b = 10000   ∫_1^b 1/x² dx ≈ 1.009966

类型二(无界函数):。 在 处无界,改写成:

9.8 动手实践:用微积分基本定理算积分 ​

python
import numpy as np

def F(x):
    return x**3 / 3 + x

exact = F(3) - F(1)
x = np.linspace(1, 3, 100001)
dx = x[1] - x[0]
numerical = np.sum((x[1:] ** 2 + 1)) * dx

print("基本定理:", exact)
print("黎曼和  :", numerical)
text
基本定理: 10.666666666666666
黎曼和  : 10.666746666751457

两者在小数点后四位完全一致,黎曼和还在向精确值收敛。

常见错误 ​

错误写法/理解原因
定积分结果里写 定积分是数,不是函数族,不需要 ; 属于不定积分
忘记 区间反向,积分变号
微积分基本定理把 写成 顺序是「上限代入减下限代入」
把积分变量 和上限 混为一谈在 里,被积变量是 , 是上限
反常积分当普通积分直接代上限 要先取有限上限 ,算完再取极限

章末练习 ​

基础

  1. 用微积分基本定理计算:、、。
  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.
    • C.
    • D.
  10. 微积分基本定理把定积分与什么联系起来?
    • A. 极限
    • B. 导数(原函数)
    • C. 连续
    • D. 数列