每日精学 148|Newton迭代定点倒数

2026-09-25

← 技术专题 · 每日精学目录

雷达 · 通信 · 电子战 / 基础精学 148

倒数的Newton迭代把每步误差平方,在归一化正输入和合适初值下快速收敛;定点舍入最终形成精度底限。

01
模型与符号

正输入归一化到 1≤ d<2,实数初值取 r0=1/2,每步定点运算使用加宽中间量。

d:归一化正除数(无量纲)

rk:倒数近似(无量纲)

ϵk:相对残差(无量纲)

F:定点小数位(bit)

02
从模型到公式

Newton公式

对 f(r)=1/r−d=0 使用Newton法,

f^{\prime}(r)=-1/r^2

得到

r_{k+1}=r_k-\frac{1/r_k-d}{-1/r_k^2}=r_k(2-dr_k).

每步只需要乘法和减法。

误差平方

令 ϵk=1−drk,则

\epsilon_{k+1}=1-dr_k(2-dr_k)=(1-dr_k)^2=\epsilon_k^2.

当 |ϵ0|<1 时二次收敛。

所选区间和初值给出 0<ϵ0≤1/2,故 |ϵk|≤2−2k。

定点更新

整数尺度 S=2F,D表示d,R表示r,可采用

T=\lfloor DR/S\rfloor,\qquad R_{new}=\lfloor R(2S-T)/S\rfloor.

两处取整引入误差,精确平方律不再严格成立;

迭代到残差接近一个量化单位后应停止,并单独处理零、负数及去归一化指数。

定点误差底与二次收敛区

精确倒数迭代 x+=x(2−dx) 的相对残差定义为 e=1−dx,代入得到

e^{+}=1-dx(2-dx)=(1-dx)^2=e^2.

只要初始 |e|<1,精确算术残差二次收敛。

若一次迭代的实际输出另含绝对误差 η,则

\widetilde e^{+}=e^2-d\eta.

当 e2 已与 |dη| 相当,继续迭代不再保证精度按平方改善;

甚至可能在几个相邻码之间停留。初值区间、乘积宽度和每次缩放位置共同决定可用精度。零分母没有倒数,负数或未归一化输入也不能未经处理套用正分母初值范围。

03
物理含义

每次迭代利用当前乘积偏离1的程度纠正倒数,正确位数在实数模型中近似倍增。

04
固定参数算例

对归一化区间密集扫描,验证前4步实数误差平方律和Q14整数实现最终误差,检查端点及单步整数公式。

固定参数数值验证结果
量数值
小数位数14
denominator count16384
square law error3.47197163194e-16
initial relative residual0.5
iteration4 relative residual1.52587890625e-05
Q14 max absolute error6.103515625e-05
Q14 error in lsb1
图 1:Newton迭代定点倒数的理论关系与固定参数验证图 1:Newton迭代定点倒数的理论关系与固定参数验证

图 1 Newton迭代定点倒数的理论关系与固定参数验证

表中数值和图中曲线由 MATLAB 实际运行得到,随机种子为 20261067;运行版本与完整结果另存为独立文件。

05
数字实现的边界

RTL实现Q14单步更新,输入a为D、b为R,使用64位乘积和两次算术右移,输出新R;归一化、初值、迭代计数与异常输入处理由外部完成。 RTL 采用同步有效信号和异步低有效复位;

空拍保持状态且输出无效。除另有说明外,输入为16位有符号整数,结果为64位有符号整数,测试范围内不截断或饱和。输出在采样时钟上升沿更新。自检覆盖连续样本、空拍和复位;

未进行器件布局布线、时序收敛或功耗验证。

独立自检程序已在 Icarus Verilog 13.0 中实际运行并通过。该结果不包含器件综合、静态时序分析或板级测试。

06
适用范围

Newton倒数用于归一化增益、比例计算和以乘法替代除法的数据通路。归一化指数可独立保存,尾数在固定区间内迭代。输入为零或接近最小正值时应有单独控制路径,不能把常规迭代当作异常值处理。

07
工程上需要注意

不满足初始残差小于1时不保证收敛。

输入未归一化会改变字长与初值有效范围。

重复迭代无法消除量化底限,还可能形成循环。

倒数的Newton迭代把每步误差平方,在归一化正输入和合适初值下快速收敛;定点舍入最终形成精度底限。

内容依据:每日精学第 148 课《Newton迭代定点倒数》。图表沿用原课固定参数数值结果,属于数值验证,不代表设备实测。

阅读7
分享
写评论...