3.7 方程的近似求解 (选学)
3.7 方程的近似求解 (选学)¶
在科学研究和工程技术中,经常会遇到方程求根的问题。对于一些简单的方程,例如一元二次方程,我们可以用公式求解。但是对于更复杂的方程,例如高次代数方程或者超越方程,往往不存在求根公式,或者求根公式非常复杂难以应用。这时就需要利用数值方法来求方程的近似解。
3.7.1 二分法¶
基本思想:
设 f(x) 在 [*a*, b] 上连续,且 f(a)f(b) < 0,根据零点定理,方程 f(x) = 0 在 (a, b) 内至少有一个实根。二分法的基本思想是:通过不断地将区间 [*a*, b] 分成两半,并判断根在哪一半,逐步缩小根所在的区间,从而得到一个近似解。
具体步骤:
- 取区间中点 x0 = (a + b)/2,并计算 f(x0)。
- 如果 f(x0) = 0,则 x0 就是方程的根。
- 如果 f(a)f(x0) < 0,则根在区间 (a, x0) 内,令 a1 = a, b1 = x0。
- 如果 f(a)f(x0) > 0,则根在区间 (x0, b) 内,令 a1 = x0, b1 = b。
- 对新区间 [*a1, *b1] 重复上述步骤,得到一系列区间 [*a*, b] ⊃ [*a1, *b1] ⊃ [*a2, *b2] ⊃ ... ⊃ [*an, *bn] ⊃ ...,且每个区间都是前一个区间的一半。
- 当区间的长度 bn - an 小于给定的精度 ε 时,取区间 [*an, *bn] 的中点 (an + bn)/2 作为方程的近似解。
说明:
- 二分法是一种简单易行的求根方法,它对函数 f(x) 的要求不高,只要 f(x) 在 [*a*, b] 上连续即可。
- 二分法的收敛速度比较慢,它是一种线性收敛的方法。
- 二分法只能求方程的实根。
例 3.7.1 用二分法求方程 x3 - x - 1 = 0 在 (1, 1.5) 内的根,精确到 0.01。
解: 设 f(x) = x3 - x - 1,则 f(1) = -1 < 0, f(1.5) = 0.875 > 0。
取 a = 1, b = 1.5,则 x0 = (1 + 1.5)/2 = 1.25,f(1.25) = -0.296875 < 0。
由于 f(1.25)f(1.5) < 0,所以根在 (1.25, 1.5) 内。取 a1 = 1.25, b1 = 1.5,则 x1 = (1.25 + 1.5)/2 = 1.375,f(1.375) ≈ 0.2246 > 0。
由于 f(1.25)f(1.375) < 0,所以根在 (1.25, 1.375) 内。取 a2 = 1.25, b2 = 1.375,则 x2 = (1.25 + 1.375)/2 = 1.3125,f(1.3125) ≈ -0.0515 < 0。
以此类推,我们可以得到一系列区间:
| n | an | bn | xn | f(xn) |
|---|---|---|---|---|
| 0 | 1 | 1.5 | 1.25 | -0.296875 |
| 1 | 1.25 | 1.5 | 1.375 | 0.224609 |
| 2 | 1.25 | 1.375 | 1.3125 | -0.051514 |
| 3 | 1.3125 | 1.375 | 1.34375 | 0.082611 |
| 4 | 1.3125 | 1.34375 | 1.328125 | 0.014576 |
| 5 | 1.3125 | 1.328125 | 1.3203125 | -0.018711 |
| 6 | 1.3203125 | 1.328125 | 1.32421875 | -0.00212 |
当 n = 6 时,区间长度 b6 - a6 = 0.0078125 < 0.01,所以取 x6 = 1.32421875 作为方程的近似解,精确到 0.01。
3.7.2 切线法 (牛顿法)¶
基本思想:
切线法,也称牛顿法,是一种迭代法。它的基本思想是:利用函数 f(x) 在 x0 处的泰勒展开式的一次近似 f(x) ≈ f(x0) + f'(x0)(x - x0) 来代替 f(x),从而将非线性方程 f(x) = 0 的求根问题转化为线性方程 f(x0) + f'(x0)(x - x0) = 0 的求根问题。
具体步骤:
- 选取一个初始近似值 x0。
- 计算 f(x0) 和 f'(x0)。
- 如果 f'(x0) ≠ 0,则令 \(\(x_1 = x_0 - \frac{f(x_0)}{f'(x_0)}\)\)。
- 如果 f'(x0) = 0 或者 |x1 - x0| ≥ ε (ε 为给定的精度),则停止迭代。
- 否则,令 x0 = x1,返回步骤 2。
几何解释:
x1 是曲线 y = f(x) 在点 (x0, f(x0)) 处的切线与 x 轴的交点的横坐标。
说明:
- 牛顿法是一种常用的求根方法,它的收敛速度比较快,通常具有平方收敛速度。
- 牛顿法要求函数 f(x) 具有一阶连续导数。
- 牛顿法的收敛性与初始值 x0 的选取有关,x0 必须取得充分靠近真解。
例 3.7.2 用牛顿法求方程 x3 - x - 1 = 0 在 (1, 1.5) 内的根,精确到 0.001。
解: 设 f(x) = x3 - x - 1,则 f'(x) = 3x2 - 1。
取 x0 = 1.5,则
x1 = x0 - f(x0)/f'(x0) = 1.5 - 0.875/5.75 ≈ 1.347826
x2 = x1 - f(x1)/f'(x1) ≈ 1.347826 - 0.100682/4.449975 ≈ 1.325200
x3 = x2 - f(x2)/f'(x2) ≈ 1.325200 - 0.002058/4.268468 ≈ 1.324718
x4 = x3 - f(x3)/f'(x3) ≈ 1.324718 - 0.00000092/4.264633 ≈ 1.324718
由于 |x4 - x3| < 0.001,所以取 x4 = 1.324718 作为方程的近似解,精确到 0.001。
例 3.7.3 求 √2 的近似值 (精确到 0.00001)。
解: 求 √2 相当于求方程 x2 - 2 = 0 的正根。
设 f(x) = x2 - 2,则 f'(x) = 2x。取 x0 = 1.5,则
x1 = x0 - f(x0)/f'(x0) = 1.5 - 0.25/3 ≈ 1.416667
x2 = x1 - f(x1)/f'(x1) ≈ 1.416667 - 0.006945/2.833334 ≈ 1.414216
x3 = x2 - f(x2)/f'(x2) ≈ 1.414216 - 0.000006/2.828432 ≈ 1.414214
由于 |x3 - x2| < 0.00001,所以取 x3 = 1.414214 作为 √2 的近似值,精确到 0.00001。