Skip to content

第5章:非线性方程与求根

二分法

连续函数在端点异号的区间内至少有一个根。二分每次保留仍异号的一半,区间长度经过 k 次变为 (ba)/2k(b-a)/2^k,以中点近似时误差至多是剩余长度的一半。

保证来自连续性与括区间,不要求可微。偶重根可能不改变符号,因此没有异号端点不代表没有根。

Newton 法

用局部线性近似 f(x+d)f(x)+f(x)df(x+d)\approx f(x)+f'(x)d,令其为零,得到

xk+1=xkf(xk)f(xk).x_{k+1}=x_k-\frac{f(x_k)}{f'(x_k)}.

若根 xx^* 附近足够光滑、f(x)0f'(x^*)\ne0,且初值足够近,Taylor 展开给出 ek+1[f(x)/(2f(x))]ek2e_{k+1}\approx[f''(x^*)/(2f'(x^*))]e_k^2,因此局部二次收敛。

条件缺失时可能失败。函数 f(x)=x32x+2f(x)=x^3-2x+2 从 0 出发,下一步为 1,再回到 0,形成二周期,尽管实根存在。

重根与割线

f(x)=(xa)mf(x)=(x-a)^m,Newton 误差满足 ek+1=(11/m)eke_{k+1}=(1-1/m)e_k,只线性收敛。已知重数时可以使用修正步长恢复更快收敛。

割线法用两点差商代替导数,在简单根附近和适当条件下有约 1.618 阶收敛,省去解析导数但失去二分的全局括区间保证。

停止条件与残差

f(x)|f(x)| 小并不保证 x 接近根。若斜率很小,函数残差可小而位置误差仍大;若步长很小,也可能只是舍入或导数计算导致停滞。

可结合括区间宽度、残差缩放、迭代步长和最大迭代数。混合方法用二分保证范围,用 Newton 或割线加速,但每次快速步都要检查是否适合。

多元方程

F(x)=0F(x)=0,Newton 每步解 J(x)d=F(x)J(x)d=-F(x),再更新。Jacobian 接近奇异、初值不佳和函数尺度不同都会影响求解;“把除法换成矩阵逆”只是符号说明,不是推荐实现。

练习

  1. x22=0x^2-2=0 从 1 出发算三步 Newton,并与二分比较。
  2. 验证上述 0、1 二周期。
  3. 推导 m 重根的误差递推,解释二次收敛前提为什么失效。

上次更新: