数值方法:练习题及分步解答

免费的数值方法练习题,附图示、提示和完整详细解答。每次数值都不同,分三个难度:求根与插值, 梯形法则与辛普森法则, 欧拉法、休恩法与龙格–库塔法。

免费练习题简单
xyx₀ = 0

对 f(x) = e−x − x 取初值 x₀ = 0,应用牛顿–拉弗森法。求 x2。

f(x) = e−x − xf′(x) = −e−x − 1x₀ = 0
下一题 →
免费练习数值方法立即练习数值方法每天 5 道免费题目,无需绑定银行卡。

练习内容

  1. 简单求根与插值
  2. 中等梯形法则与辛普森法则
  3. 困难欧拉法、休恩法与龙格–库塔法

如何求解数值方法问题

  1. 求根:二分法要检查变号,牛顿法要计算 f 和 f′,并在迭代值表中保留六位或更多位数字。
  2. 求表中的值:在两个相邻的点之间做线性插值。
  3. 求积分:求出 h = (b − a)/n,列出每个节点处的 f,应用权重(梯形法则为 1, 2, …, 2, 1;n 为偶数时辛普森法则为 1, 4, 2, …, 4, 1),再乘以 h/2 或 h/3。
  4. 求常微分方程:从 t₀ 出发,用 yₙ₊₁ = yₙ + h·f(tₙ, yₙ)(欧拉法)或平均斜率(休恩法)逐步前进,每步一行,直到到达所要求的 t。

常见错误

  • 保留了二分区间中错误的那一半,或者数错了步数。
  • 在牛顿–拉弗森法中写成 x − f′/f 而不是 x − f/f′。
  • 在梯形法则中给内部节点权重 1,或者对奇数条窄条使用辛普森法则。
  • 过早地四舍五入迭代值。
  • 为到达终止时间,欧拉法多做或少做了一步。

关键公式

二分法
c = (a + b)/2, width after n steps (b − a)/2ⁿ
牛顿–拉弗森法
xn+1 = xₙ − f(xₙ)/f′(xₙ)
线性插值
y = y₁ + (y₂ − y₁)(x − x₁)/(x₂ − x₁)
梯形法则
T = (h/2)[f₀ + 2f₁ + … + 2fn−1 + fₙ], h = (b − a)/n
辛普森法则(n 为偶数)
S = (h/3)[f₀ + 4f₁ + 2f₂ + … + 4fn−1 + fₙ]
梯形法则的误差界
|E| ≤ (b − a)h²M/12, M = max|f″|
欧拉
yn+1 = yₙ + h·f(tₙ, yₙ)
休恩法
yn+1 = yₙ + (h/2)(k₁ + k₂), k₂ = f(tₙ + h, yₙ + hk₁)
RK4
yn+1 = yₙ + (h/6)(k₁ + 2k₂ + 2k₃ + k₄)

从零开始学习数值方法

学习本课之前: 导数, 积分, 微分方程

1为什么需要数值方法,以及二分法

许多方程和积分的答案没有公式:x = cos x、∫e−x²dx,或大多数微分方程。数值方法一步一步地计算答案,可达到你所需要的任何精度。

二分法在 f 变号的区间 [a, b] 上求 f(x) = 0 的根。取中点 c = (a + b)/2,保留仍然变号的那一半。

例:f(x) = x² − 2 在 [1, 2] 上。c₁ = 1.5 给出 f = 0.25 > 0,所以保留 [1, 1.5]。c₂ = 1.25 给出 f = −0.4375 < 0,所以保留 [1.25, 1.5]。然后 c₃ = 1.375。

每一步使区间减半,所以 n 步之后宽度为 (b − a)/2ⁿ。二分法很慢,但只要有变号,它总是有效。

自测 二分法从长度为 1 的区间开始。10 步之后区间宽度是多少?
  1. 1/100
  2. 1/1024
  3. 1/10
  4. 1/20

答案: 1/1024. 每一步都减半:1/2¹⁰ = 1/1024 ≈ 0.001。除以 10 或 20 是把逐步减半当成了线性减小。

2牛顿–拉弗森法

牛顿–拉弗森法沿切线下降到 x 轴,并把交点作为下一个猜测值:

xn+1 = xₙ − f(xₙ)/f′(xₙ)
xx₀ = 2x₁ = 1.5√2f(x) = x² − 2

对于 f(x) = x² − 2,f′(x) = 2x,x₀ = 2:x₁ = 2 − 2/4 = 1.5,x₂ = 1.5 − 0.25/3 = 1.416667,x₃ = 1.414216。根为 √2 = 1.414214。

在根附近,牛顿法每一步大约使正确数字的位数加倍。当 f′(xₙ) 接近 0,或者起点离根很远时,它可能失败。

每个迭代值至少保留六位数字;过早四舍五入会使该方法无法继续改进。

自测 对 f(x) = x² − 5 从 x₀ = 2 出发做一步牛顿法,得到……
  1. 1.75
  2. 2.25
  3. 2.2
  4. 2.5

答案: 2.25. f(2) = −1,f′(2) = 4,所以 x₁ = 2 − (−1)/4 = 2.25。加上 −1/4 而不是减去它会得到 1.75。

3线性插值

表格只给出某些点的值。线性插值在两个相邻的表格点之间画一条直线:

y = y₁ + (y₂ − y₁)·(x − x₁)/(x₂ − x₁)

例:表中给出 f(1) = 2.0 和 f(2) = 2.6。在 x = 1.4 处,比例为 0.4,所以 f(1.4) ≈ 2.0 + 0.6·0.4 = 2.24。

反插值的做法相同,只是反过来:要找 y = 2.3 的位置,比例为 (2.3 − 2.0)/0.6 = 0.5,所以 x ≈ 1.5。

4梯形法则与辛普森法则

要对 f 从 a 到 b 积分,把区间分成 n 条宽度为 h = (b − a)/n 的窄条,节点为 x₀, x₁, …, xₙ。

梯形法则把每条窄条中的曲线换成直线。每个内部节点属于两条窄条,所以计两次:

T = (h/2)[f₀ + 2f₁ + 2f₂ + … + 2fn−1 + fₙ]
0.51y = x²x

辛普森法则每次通过三个节点拟合一条抛物线。它要求 n 为偶数:

S = (h/3)[f₀ + 4f₁ + 2f₂ + 4f₃ + … + 4fn−1 + fₙ]

对于 ∫01 x² dx = 1/3,取 n = 2 (h = 0.5):T = 0.25·(0 + 0.5 + 1) = 0.375,而 S = (0.5/3)·(0 + 1 + 1) = 0.3333,是精确值。

梯形法则的误差按 h² 缩小,辛普森法则的按 h⁴ 缩小:把 h 减半,辛普森法则的精度约提高 16 倍。

自测 梯形法则给节点 x₀, x₁, x₂, x₃ 的权重分别是多少?
  1. 1, 1, 1, 1
  2. 1, 2, 2, 1
  3. 1, 4, 2, 1
  4. 1, 4, 4, 1

答案: 1, 2, 2, 1. 两个端点只属于一条窄条,内部点属于两条,所以权重是 1, 2, 2, 1,再乘以因子 h/2。带 4 的权重属于辛普森法则。

5微分方程的欧拉法与休恩法

对于 y′ = f(t, y),y(t₀) = y₀,以步长 h 沿时间向前推进。欧拉法使用每一步起点处的斜率:

yn+1 = yₙ + h·f(tₙ, yₙ)

休恩法(改进欧拉法)先用欧拉法预测,再取两端斜率的平均:k₁ = f(tₙ, yₙ),k₂ = f(tₙ + h, yₙ + h·k₁),yn+1 = yₙ + (h/2)(k₁ + k₂)。

欧拉法的误差与 h 成正比,休恩法的与 h² 成正比。经典龙格–库塔法 (RK4) 使用四个斜率,精度达到 h⁴。

例题讲解

用欧拉法、步长 h = 0.1,求解 y′ = y,y(0) = 1,直到 t = 0.3,并与精确解 eᵗ 比较。

1

第 1 步

y₁ = 1 + 0.1·1 = 1.1
2

第 2 步

y₂ = 1.1 + 0.1·1.1 = 1.21
3

第 3 步

y₃ = 1.21 + 0.1·1.21 = 1.331
4

比较

精确值为 e0.3 = 1.349859,所以整体误差为 0.0189。从 y₀ 出发做一步休恩法会得到 1 + 0.05·(1 + 1.1) = 1.105,而 e0.1 = 1.105171。

答案

用欧拉法得 y(0.3) ≈ 1.331;误差 0.019 大致与 h 成比例地缩小。

6常见错误与考试题型

  • 把二分法的第一个中点算作第 0 步,或者保留了区间中错误的那一半。
  • 在牛顿法中写成 x − f′/f 而不是 x − f/f′。
  • 在梯形法则中忘记内部节点的因子 2,或者用 h 代替 h/2。
  • 对奇数条窄条使用辛普森法则。
  • 在欧拉法中使用了步末的斜率,或者少做了一步。

简单:二分法、牛顿迭代以及表中插值。中等:梯形法则和辛普森法则、它们的误差以及所需的窄条数。困难:微分方程的欧拉法、休恩法和龙格–库塔法的步骤。

自测 y′ = 2y,y(0) = 1。取 h = 0.2 做一步欧拉法得到什么?
  1. 1.2
  2. 1.49
  3. 1.4
  4. 2.4

答案: 1.4. y₁ = 1 + 0.2·(2·1) = 1.4。斜率中忘记因子 2 会得到 1.2;1.49 是精确值 e0.4。

在应用中一步一步地学在应用中一步一步地学

例题详解

例题 1简单

二分法从长度为 4 的区间开始。每一步使区间减半。区间短于 0.0001 之前,至少需要多少步 n?

b − a = 4ε = 0.0001

求: n

显示提示
  1. n 步之后区间长度为 (b − a)/2ⁿ。
  2. 解 4/2ⁿ < 0.0001,即 2ⁿ > 40000。
  3. n > log₂(40000) = 15.29
显示答案和分步解答

求根与插值:二分法保留一个函数 f 变号的区间 [a, b];每一步取中点 c = (a + b)/2,并保留仍然变号的那一半,所以 n 步之后区间宽度为 (b − a)/2ⁿ。牛顿–拉弗森法沿切线走到坐标轴:xn+1 = xn − f(xn)/f′(xn);在单根附近,每一步大约使正确数字的位数加倍。两个表格点之间的线性插值:y = y₁ + (y₂ − y₁)(x − x₁)/(x₂ − x₁)。

条件

4/2ⁿ < 0.0001 → 2ⁿ > 40000

对数

n > ln(40000)/ln 2 = 15.29
n = 16

校核

2¹⁵ = 32768 < 40000 < 2¹⁶ = 65536

答案

n = 16
例题 2中等
xy00.511.5

用梯形法则取 n = 3 条窄条,近似计算 ∫01.5 √(1 + x³) dx。给出 T。

f(x) = √(1 + x³)[a, b] = [0, 1.5]n = 3

求: T

显示提示
  1. h = (1.5 − 0)/3 = 0.5;节点为 0, 0.5, 1, 1.5。
  2. 权重:1, 2, 2, …, 2, 1;T = (h/2)·Σ wᵢfᵢ。
  3. 加权和为 Σ wᵢfᵢ = 8.041398。
显示答案和分步解答

数值积分:把 [a, b] 分成 n 条宽度为 h = (b − a)/n 的窄条,节点为 x₀ … xₙ。梯形法则:T = (h/2)[f₀ + 2f₁ + 2f₂ + … + 2fn−1 + fₙ]。辛普森法则(n 为偶数):S = (h/3)[f₀ + 4f₁ + 2f₂ + 4f₃ + … + 4fn−1 + fₙ]。梯形法则的误差按 h² 缩小(误差界 (b − a)h²·M/12,其中 M = max|f″|),辛普森法则按 h⁴ 缩小,所以在节点数相同时辛普森法则通常精确得多。

ixᵢf(xᵢ)体重001110.51.060662211.414214231.52.091651

节点与函数值

h = 0.5
Σ wᵢfᵢ = 1 + 2·1.06066 + 2·1.414214 + 2.09165 = 8.041398

梯形法则

T = (0.5/2)·8.041398 = 2.01

答案

T = 2.01

这个积分没有初等原函数,这正是需要数值方法的情形。

例题 3困难
00.10.20.30.40.40.60.81ty(0, 0.5)

对 y′ = 1 + sin(ty),y(0) = 0.5,用休恩法(改进欧拉法),取 h = 0.2,估计 y2 ≈ y(0.4)。

y′ = 1 + sin(ty)y(0) = 0.5h = 0.2

求: y2

显示提示
  1. 每一步:k₁ = f(tₙ, yₙ),k₂ = f(tₙ + h, yₙ + h·k₁),yn+1 = yₙ + (h/2)(k₁ + k₂)。
  2. 第 1 步:k₁ = 1,k₂ = 1.139543,y₁ = 0.713954。
  3. 到达 t = 0.4 需要 2 步。
显示答案和分步解答

y′ = f(t, y) 的数值解:欧拉法沿每一步起点处的斜率前进:yn+1 = yₙ + h·f(tₙ, yₙ)。休恩法(改进欧拉法)取起点处斜率与欧拉预测点处斜率的平均:k₁ = f(tₙ, yₙ),k₂ = f(tₙ + h, yₙ + h·k₁),yn+1 = yₙ + (h/2)(k₁ + k₂)。经典龙格–库塔法 (RK4) 结合四个斜率:yn+1 = yₙ + (h/6)(k₁ + 2k₂ + 2k₃ + k₄)。欧拉法的整体误差与 h 成正比,休恩法与 h² 成正比,RK4 与 h⁴ 成正比。

ntₙyₙk₁k₂yₙ₊₁000.511.1395430.71395410.20.7139541.1423061.3681010.964995

休恩法各步

y₁ = 0.5 + (0.2/2)(1 + 1.139543) = 0.713954
y₂ = 0.713954 + (0.2/2)(1.142306 + 1.368101) = 0.964995
00.10.20.30.40.40.60.81ty

图表

y2 = 0.965

答案

y2 = 0.965

问与答

什么是数值方法?

许多方程和积分的答案没有公式:x = cos x、∫e−x²dx,或大多数微分方程。数值方法一步一步地计算答案,可达到你所需要的任何精度。

例:f(x) = x² − 2 在 [1, 2] 上。c₁ = 1.5 给出 f = 0.25 > 0,所以保留 [1, 1.5]。c₂ = 1.25 给出 f = −0.4375 < 0,所以保留 [1.25, 1.5]。然后 c₃ = 1.375。

数值方法题目如何一步步求解?
  1. 求根:二分法要检查变号,牛顿法要计算 f 和 f′,并在迭代值表中保留六位或更多位数字。
  2. 求表中的值:在两个相邻的点之间做线性插值。
  3. 求积分:求出 h = (b − a)/n,列出每个节点处的 f,应用权重(梯形法则为 1, 2, …, 2, 1;n 为偶数时辛普森法则为 1, 4, 2, …, 4, 1),再乘以 h/2 或 h/3。
  4. 求常微分方程:从 t₀ 出发,用 yₙ₊₁ = yₙ + h·f(tₙ, yₙ)(欧拉法)或平均斜率(休恩法)逐步前进,每步一行,直到到达所要求的 t。
数值方法有哪些常见错误?
  • 保留了二分区间中错误的那一半,或者数错了步数。
  • 在牛顿–拉弗森法中写成 x − f′/f 而不是 x − f/f′。
  • 在梯形法则中给内部节点权重 1,或者对奇数条窄条使用辛普森法则。
  • 过早地四舍五入迭代值。
  • 为到达终止时间,欧拉法多做或少做了一步。
数值方法练习包括哪些内容?
  • 简单: 求根与插值
  • 中等: 梯形法则与辛普森法则
  • 困难: 欧拉法、休恩法与龙格–库塔法

每道题的数值都不同,让你掌握方法,而不是记住答案。 卡住了?先打开一个小提示,需要时再查看完整解析。

练习方式

  • 每道题的数值都不同,让你掌握方法,而不是记住答案。
  • 卡住了?先打开一个小提示,需要时再查看完整解析。
  • 你的进度、错题和收藏的题目都会保留,方便考前复习。

本主题的前后主题

先学习

包含此主题的课程

数学与统计中的更多主题

可打印练习卷

免费练习数值方法立即练习数值方法每天 5 道免费题目,无需绑定银行卡。