Skip to content

第 10 章 定积分的应用 ​

学习目标 ​

  • 掌握微元法(元素法)的思想
  • 用定积分求平面图形的面积
  • 用定积分求旋转体体积
  • 用定积分求曲线弧长
  • 用定积分解决物理问题(位移与功)
  • 会用 NumPy 数值验证

10.1 微元法:切、近似、求和、取极限 ​

第 9 章算面积的过程,可以提炼成一套通用的方法,叫微元法(也叫元素法):

  1. 切:把整体切成很多小片(微元);
  2. 近似:每片用简单的形状近似,写出这一小片的量 ;
  3. 求和取极限:把所有小片的量加起来,得到 。

对面积来说,微元是「宽 、高 的小条」,面积微元 ,总面积 。换成体积、弧长、功,微元的形状不同,但套路完全一样。

10.2 平面图形的面积 ​

两条曲线 (上面)与 (下面)围成的区域,在 处的小条高度是 :

例:求 与 围成的区域面积。先找交点:,解得 或 。在 上,,所以

两曲线围成的面积

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, 1, 300)
fig, ax = plt.subplots(figsize=(6.5, 5))
ax.plot(x, x, color="tab:blue", label="y = x")
ax.plot(x, x**2, color="tab:green", label="y = x²")
ax.fill_between(x, x, x**2, color="tab:orange", alpha=0.4)
ax.annotate("面积 = 1/6", (0.5, 0.33), color="tab:red", fontsize=12, ha="center")
ax.set_xlim(0, 1.05)
ax.set_ylim(0, 1.05)
ax.set_aspect("equal")
ax.grid(True, linestyle=":", alpha=0.5)
ax.legend()
ax.set_title("y = x 与 y = x² 围成的区域")
fig.savefig("book/public/figs/fig10-area.png", dpi=120, bbox_inches="tight")
plt.close(fig)
python
import numpy as np

x = np.linspace(0, 1, 100001)
dx = x[1] - x[0]
area = np.sum((x[:-1] - x[:-1] ** 2)) * dx   # 左端点黎曼和,逼近 1/6
print("数值面积 ≈", area)
print("精确值 1/6 =", 1 / 6)
text
数值面积 ≈ 0.16666666665000002
精确值 1/6 = 0.16666666666666666

数值黎曼和逼近 ,吻合笔算结果。

10.3 旋转体体积:圆盘法 ​

把区域绕 轴旋转,得到一个像陀螺一样的旋转体。求体积的微元法:在 处切一刀,截面是圆,半径 ,面积 。厚 的薄圆盘体积

全部加起来:

例:区域 、 绕 轴旋转:

python
import numpy as np

x = np.linspace(0, 4, 100001)
dx = x[1] - x[0]
V = np.sum(np.pi * x) * dx
print("数值体积 ≈", V)
print("精确值 8π =", 8 * np.pi)
text
数值体积 ≈ 25.132992556130638
精确值 8π = 25.132741228718345

10.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(0, 1.6, 400)
fig, ax = plt.subplots(figsize=(7, 5))
ax.plot(x, x**2, color="tab:blue", label="y = x²")

# 微元三角形:在 x=0.9 附近
x0, dx = 0.9, 0.35
dy = 2 * x0 * dx
ax.plot([x0, x0 + dx], [x0**2, (x0 + dx)**2], color="tab:red", linewidth=2.5, label="ds 微元")
ax.plot([x0, x0 + dx], [x0**2, x0**2], color="tab:green", linestyle="--")
ax.plot([x0 + dx, x0 + dx], [x0**2, (x0 + dx)**2], color="tab:orange", linestyle="--")
ax.text(x0 + 0.02, x0**2 - 0.18, "dx", color="tab:green")
ax.text(x0 + dx + 0.03, (x0**2 + (x0+dx)**2) / 2, "dy = f'(x)dx", color="tab:orange")
ax.text(x0 + 0.08, x0**2 + 0.18, "ds = √(dx²+dy²)", color="tab:red")

ax.set_xlim(0, 1.8)
ax.set_ylim(0, 2.7)
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(loc="upper left", fontsize=9)
ax.set_title("弧长微元:勾股定理 ds = √(dx² + dy²)")
fig.savefig("book/public/figs/fig10-arclength.png", dpi=120, bbox_inches="tight")
plt.close(fig)

例:抛物线 从 到 的弧长。:

这个积分没有初等原函数,用数值积分:

python
import numpy as np

def fp(x):
    return 2 * x

x = np.linspace(0, 1, 100001)
dx = x[1] - x[0]
L = np.sum(np.sqrt(1 + fp(x[:-1]) ** 2)) * dx
print("抛物线 y = x² 在 [0,1] 上的弧长 ≈", L)
text
抛物线 y = x² 在 [0,1] 上的弧长 ≈ 1.4789366772196173

与直觉相符:比两端点的直线距离 略长,因为曲线是弯的。

10.5 物理应用:位移与功 ​

位移:已知速度 ,从 到 的位移是速度的积累:

例: m/s,从 1 秒到 3 秒:

功:恒力 移动距离 ,功 。若力随位置变化 ,把位移切成微元 ,,总功

例:弹簧的力 ( 为劲度系数),把它从 m 拉到 m( N/m):

python
import numpy as np

k = 50.0
x = np.linspace(0.2, 0.5, 100001)
dx = x[1] - x[0]
W = np.sum(k * x) * dx
print("数值功 ≈", W, "J")
print("公式 ½k(0.5² - 0.2²) =", 0.5 * k * (0.5**2 - 0.2**2), "J")
text
数值功 ≈ 5.250052500005251 J
公式 ½k(0.5² - 0.2²) = 5.25 J

10.6 动手实践:旋转体体积与 Arc 验证 ​

把 ()绕 轴旋转,体积:

(用到半角公式 ,。)

python
import numpy as np

x = np.linspace(0, np.pi, 100001)
dx = x[1] - x[0]
V = np.sum(np.pi * np.sin(x) ** 2) * dx
print("数值体积 ≈", V)
print("精确值 π²/2 =", np.pi ** 2 / 2)
text
数值体积 ≈ 4.934802180082636
精确值 π²/2 = 4.934802200544679

常见错误 ​

错误写法/理解原因
面积公式写成 且不知哪条在上必须用「上曲线减下曲线」;先确定区间内的大小关系
旋转体体积忘记乘 圆盘面积是 ,体积微元
弧长公式漏了 1是 ,不是
力随位置变化时还用 变力做功必须积分
黎曼和选错端点还断言「偏大/偏小」单调函数才有确定方向;一般情况用误差分析或直接取中点

章末练习 ​

基础

  1. 求 与 围成的区域面积(先求交点)。
  2. 求 在 上绕 轴旋转的体积。
  3. 弹簧 N/m,从 m 拉到 m,做功多少?

提高

  1. 求 从 到 绕 轴旋转的体积。
  2. 已知 ,求 0 到 2 秒的位移,并与 比较。

挑战

  1. 求 ()绕 轴旋转的体积,并与球体积公式 对照。
  2. 用数值积分验证:半径为 的圆的周长 (提示:对 用弧长公式)。

章末自测 ​

每题选择一个最佳答案。本书不附答案:完成后交由老师或 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. 弹簧 ,从 0.2 拉到 0.5 m,做功?
    • A. J
    • B. J
    • C. J
    • D. J
  9. 微元法的四个步骤是?
    • A. 猜、试、错、改
    • B. 切、近似、求和、取极限
    • C. 微分、积分、求导、验证
    • D. 建模、求解、画图、总结
  10. 位移等于?
    • A.
    • B.
    • C.
    • D.