第 10 章 定积分的应用
学习目标
- 掌握微元法(元素法)的思想
- 用定积分求平面图形的面积
- 用定积分求旋转体体积
- 用定积分求曲线弧长
- 用定积分解决物理问题(位移与功)
- 会用 NumPy 数值验证
10.1 微元法:切、近似、求和、取极限
第 9 章算面积的过程,可以提炼成一套通用的方法,叫微元法(也叫元素法):
- 切:把整体切成很多小片(微元);
- 近似:每片用简单的形状近似,写出这一小片的量 ;
- 求和取极限:把所有小片的量加起来,得到 。
对面积来说,微元是「宽 、高 的小条」,面积微元 ,总面积 。换成体积、弧长、功,微元的形状不同,但套路完全一样。
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.13274122871834510.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 J10.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 | 是 ,不是 |
| 力随位置变化时还用 | 变力做功必须积分 |
| 黎曼和选错端点还断言「偏大/偏小」 | 单调函数才有确定方向;一般情况用误差分析或直接取中点 |
章末练习
基础
- 求 与 围成的区域面积(先求交点)。
- 求 在 上绕 轴旋转的体积。
- 弹簧 N/m,从 m 拉到 m,做功多少?
提高
- 求 从 到 绕 轴旋转的体积。
- 已知 ,求 0 到 2 秒的位移,并与 比较。
挑战
- 求 ()绕 轴旋转的体积,并与球体积公式 对照。
- 用数值积分验证:半径为 的圆的周长 (提示:对 用弧长公式)。
章末自测
每题选择一个最佳答案。本书不附答案:完成后交由老师或 AI 老师批改讲解。
- 两条曲线围成的面积,微元高是?
- A.
- B. (上减下)
- C.
- D.
- 与 围成的面积是?
- A.
- B.
- C.
- D.
- 旋转体体积(圆盘法)的公式是?
- A.
- B.
- C.
- D.
- 在 绕 轴旋转的体积是?
- A.
- B.
- C.
- D.
- 弧长公式是?
- A.
- B.
- C.
- D.
- 弧长微元 来自?
- A. 相似三角形
- B. 勾股定理
- C. 圆面积公式
- D. 平均变化率
- 变力做功 等于?
- A.
- B.
- C.
- D.
- 弹簧 ,从 0.2 拉到 0.5 m,做功?
- A. J
- B. J
- C. J
- D. J
- 微元法的四个步骤是?
- A. 猜、试、错、改
- B. 切、近似、求和、取极限
- C. 微分、积分、求导、验证
- D. 建模、求解、画图、总结
- 位移等于?
- A.
- B.
- C.
- D.
