章节摘要:本章跟着一条主线走——同一个非线性方程,初值差一点点,牛顿法一次六步收敛、一次原地爆炸。围绕这条主线,我们排查非线性求根的三大事故源(初值、导数、收敛域),再过渡到优化战场,看梯度下降为何在山谷里锯齿慢爬、拟牛顿与信赖域如何治这些病。
考察方程 x^3 - 2x - 5 = 0(牛顿本人的原始例题,真根约 2.0946)。从 x0 = 2 出发,牛顿法五六步收敛到全精度;把初值挪到 x0 = 0 附近或更远,迭代可能冲出有效区域、在两个山头之间来回震荡、或者干脆发散到无穷。同一种算法,命运完全由初值写定——这就是非线性世界的第一定律:没有全局保证,只有局部契约。
主线由此展开:3.1 解剖牛顿法的局部收敛机制,搞清"二次收敛"这张支票的兑现条件;3.2 把牛顿法摔在各种现场(导数为零、多根、震荡)做事故分析,引出阻尼、混合策略、信赖域这些"安全带";3.3 切换到优化视角——求根的表兄弟,看梯度下降的锯齿病与拟牛顿法的手术方案。
本章的认知转折是从"算法收敛性"的教科书叙述切换到"收敛域"的工程视角:快速算法只在你付不起的地方快。牛顿法在半径 r 的收敛球内二步收敛,球外却可能灾难性发散;全局策略牺牲少量速度换取"一定能到"的合同。成熟的数值软件(SciPy 的 root、minimize)内部全是混合策略——先稳健地逼近,再切换高速档。理解这个设计哲学,比背下任何单个算法都重要。
本章代码实验的共同骨架值得留意:每个求根或优化案例都保留完整轨迹而不是只打印终点。三个节的实验互相引用同一批函数(谐振子的梯度、Rosenbrock 的谷形),建议在读完 3.3 后回头重跑 3.1 的牛顿实验——用优化的眼光再看一次求根,会有不同的收获。
判据速记:看到迭代序列相邻两步残差几乎不变,查循环或平坦区;看到步长突然增大几个数量级,查导数是否消失;看到优化在山谷里来回横跳,条件数大概率过千。
非线性求根处理的是"找到零点",下一章处理"沿着时间演化"——微分方程的数值解把迭代推向极致:不是迭代几步,而是迭代几百万步,误差的长期累积成为头号嫌疑人。