非线性方程 · 局部直线

同一个函数,两条迭代路线

橙线与横轴相交的地方给出下一次输入。它只是切线或割线的零点;下一次还要回到函数上检查残差。

Newton · 一点与斜率

当前 x
|f(x)|
求值 f / f′

割线 · 最近两点

当前 x
|f(x)|
求值 f / f′

函数切线或割线下一点到横轴的对应位置

两张几何图分别选择视窗,不能用屏幕上的线长比较两算法的误差。曲线和直线在边界裁剪,没有把图外数值压到边界上。新点超出横轴展示范围时,会明确提示。

残差记录:把数量级摊开

Newton割线
Newton nxₙ|f(xₙ)|
割线 nxₙ|f(xₙ)|

n 是各自的点编号:Newton 从一个初值开始,割线从两个初值开始。函数值会缓存;曲线绘图的采样不计入算法求值数。图中展示的是残差,不把机器里的 √3 当作无限精确真根来绘制“真误差”。

导数都非零,能排除循环吗?

切到 x³−2x+2,从 Newton 初值 0 出发,观察两步后的数值。

异常会单独停止:导数或割线分母为零、非有限数、重复点停滞、两点循环、最多 30 次更新,或 |x| 超过 10⁶。浮点函数值为零只记为“计算零点”;小残差本身不等于无条件的根误差保证。