图 7.29
的解
$\tan\theta - \tanh\theta = 0$
使用试位法求得。
| $\theta_1$ | $f(\theta_1)$ | $\theta_2$ | $f(\theta_2)$ | $\frac{\theta_1 f(\theta_2) - \theta_2 f(\theta_1)}{f(\theta_2) - f(\theta_1)}$ | $f\left(\frac{\theta_1 f(\theta_2) - \theta_2 f(\theta_1)}{f(\theta_2) - f(\theta_1)}\right)$ |
|---|---|---|---|---|---|
| 3.92 | -0.013 098 | 3.93 | 0.006 808 | 3.926 580 | -0.000 045 |
| 3.926 580 | -0.000 045 | 3.93 | 0.006 808 | 3.926 602 | -0.000 000 |
$\frac{1}{2}(x_1 + x_2)$ 作为根的下一个估计值。试位法使用线性插值来推导根的下一个估计值。连接点 $(x_1, f(x_1))$ 和 $(x_2, f(x_2))$ 的直线由下式给出
$$\frac{y - f(x_1)}{f(x_2) - f(x_1)} = \frac{x - x_1}{x_2 - x_1}$$
该直线在 $x$ 轴上相交于
$$x = \frac{x_1 f(x_2) - x_2 f(x_1)}{f(x_2) - f(x_1)}$$
处,因此这就是根的新估计值。这种方法通常比二分法收敛得更快。在区间 $\tan\theta - \tanh\theta = 0$ 内求 $(3.92, 3.93)$ 的根的计算过程如图 7.29 所示。注意,第一步之后,根的估计值为 $\theta = 3.926 580$ 以及 $f(3.926 580) = 0.000 045$ 。此时根被夹在区间 $(3.926 580, 3.93)$ 内,然后重复该方法。只需两步,我们就得到了根的一个估计值,其值为 $f(\theta) < 10^{-6}$ 。显然,这比二分法收敛得快得多。
二分法和试位法都是区间收缩法(bracketing methods)——已知根位于一个长度不断减小的区间内。因此,它们保证能收敛到一个解。求解方程 $f(x) = 0$ 的另一种方法是设计一个方案,产生一个收敛序列,其极限即为方程的根。这类不动点迭代法基于如下形式的关系 $x_{n+1} = g(x_n)$ 。如果 $\lim_{n \rightarrow \infty} x_n = \alpha$ ,比如说,那么显然 $\alpha = g(\alpha)$ 。为求解方程 $f(x) = 0$ 设计迭代方案的最简单方法,是将方程改写成 $x = g(x)$ 的形式。然后,如果该方案 $x_{n+1} = g(x_n)$ 收敛,则极限将是 $f(x) = 0$ 的一个根。
我们可以将方程 $\tan\theta = \tanh\theta$ 整理为如下形式
$$\theta = \tan^{-1}(\tanh\theta) + k\pi \quad (k = 0, \pm 1, \pm 2, \dots)$$
如果我们取 $k = 1$ 和 $\theta_0 = \frac{5}{4}\pi$ 则利用迭代格式可得
$$\theta_n = \tan^{-1}(\tanh\theta_{n-1}) + \pi$$
该数列
$$\theta_0 = 3.926 991, \quad \theta_1 = 3.926 603, \quad \theta_2 = 3.926 602, \quad \theta_3 = 3.926 602$$
且根为 $\theta = 3.926 602$ (精确到 6 位小数。(取其他的 $k$ 值,当然会得到收敛于其他根的迭代格式,这些根是 $\tan\theta = \tanh\theta$ .)