数学 数值分析

误差

介绍截断误差、舍入误差、绝对与相对误差,以及规格化浮点数的表示和误差界。

本页目录4 节

误差 #

误差的分类 #

    1. 从实际问题提炼数学问题时忽略的次要因素导致与真实解的差称为模型误差.
    1. 测量如质量、温度等实际值时由于工具精度等原因测量产生的误差称为观测误差数据误差参量误差.
    1. 在数学求解过程中用近似公式代替准确公式求解 (如使用泰勒公式) 产生的误差称为截断误差方法误差.
    1. 由于计算机计算精度不够, 舍入产生的误差称为舍入误差计算误差.

本课程只研究截断误差和舍入误差.

绝对误差、相对误差与准确数字 #

定义

xx 为准确值,x~\widetilde{x} 为近似值。记有符号误差为

Δx=xx~,\Delta_x=x-\widetilde{x},

绝对误差Δx=xx~|\Delta_x|=|x-\widetilde{x}|

若已知 Δxε|\Delta_x|\leqslant\varepsilon,则称 ε0\varepsilon\geqslant0绝对误差界绝对误差限。简记 x=x~±εx=\widetilde{x}\pm\varepsilon,表示

x[x~ε,x~+ε],x\in[\widetilde{x}-\varepsilon,\widetilde{x}+\varepsilon],

并不是说误差只能取两个端点值。

定义

x0x\neq0 时,记有符号相对误差及其大小为

δx=xx~x,δx=xx~x.\delta_x=\frac{x-\widetilde{x}}{x}, \qquad |\delta_x|=\frac{|x-\widetilde{x}|}{|x|}.

满足 δxεr|\delta_x|\leqslant\varepsilon_r 的非负数 εr\varepsilon_r 称为相对误差界

准确值未知且 x~0\widetilde{x}\neq0 时,常用以近似值为分母的量

δ~x=xx~x~\widetilde{\delta}_x=\frac{x-\widetilde{x}}{\widetilde{x}}

估计相对误差。它与 δx\delta_x 不完全相同;当二者分母均非零时,

δx=δ~x1+δ~x,δ~xδx=δ~x21+δ~x.\delta_x=\frac{\widetilde{\delta}_x}{1+\widetilde{\delta}_x}, \qquad \widetilde{\delta}_x-\delta_x =\frac{\widetilde{\delta}_x^2}{1+\widetilde{\delta}_x}.

因此在 δ~x1|\widetilde{\delta}_x|\ll1 时,两种相对误差只相差二阶小量。

δ~xε~r|\widetilde{\delta}_x|\leqslant\widetilde{\varepsilon}_r,可记 x=x~(1+η)x=\widetilde{x}(1+\eta),其中 ηε~r|\eta|\leqslant\widetilde{\varepsilon}_r。 这里 ε~r\widetilde{\varepsilon}_r 是以近似值为分母的误差界,不能与 εr\varepsilon_r 混作同一个定义。

定义

若把 xx 写成科学计数法 (注意与高中定义的差别, 要求整数部分为 00)

x=±10m×0.x1x2,x10x=\pm 10^m\times0.x_1x_2\cdots ,\quad x_1\neq 0

xx 的近似值 x~\widetilde{x} 的绝对误差界为 12×10n\dfrac{1}{2}\times 10^{-n} 时, x~\widetilde{x} 准确到 nn 位小数, 具有 n+mn+m准确数字 (有效数字).

若已知 x~\widetilde{x} 的相对误差界为 12×10t\dfrac{1}{2}\times 10^{-t}, 即

xx~x~12×10t,\dfrac{|x-\widetilde{x}|}{|\widetilde{x}|}\leqslant\dfrac{1}{2}\times 10^{-t},

x~\widetilde{x} 的绝对误差为

xx~x~×12×10t12×10(tm).|x-\widetilde{x}|\leqslant|\widetilde{x}|\times \dfrac{1}{2}\times 10^{-t}\leqslant\dfrac{1}{2}\times 10^{-(t-m)}.

由此可知, x~\widetilde{x} 至少具有 tm+m=tt-m+m=t 位准确数字.

计算机中数的表示与舍入误差 #

计算机中的实数采用浮点表示法, 设计算机采用 β\beta 进制, 字长为 tt, 将非零实数 xx 在计算机上表示为

fl(x)=x~=±{x1β+x2β2++xtβt}×βl=±0.x1x2xt×βl,fl(x)=\widetilde{x}=\pm\left\{\dfrac{x_1}{\beta}+\dfrac{x_2}{\beta^2}+\cdots+\dfrac{x_t}{\beta^t}\right\}\times\beta^l=\pm0.x_1x_2\cdots x_t\times\beta^l,

其中 x1{1,2,,β1}, xi{0,1,,β1} (i=2,3,,t).x_1\in\{1,2,\cdots,\beta-1\},\ x_i\in\{0,1,\cdots,\beta-1\}\ (i=2,3,\cdots,t).

尾数部分: 0.x1x2xt0.x_1x_2\cdots x_t

指数部分: βl\beta^l.

指数: lZl\in\mathbb{Z},也称阶码,其取值范围为 LlU (L<0,U>0)L\leqslant l\leqslant U\ (L<0,U>0)L,UL,U 分别为指数的下、上界。

规格化浮点数: fl(x)fl(x).

浮点数集: F(β,t,L,U)={0}{fl(x)=±0.x1x2xt×βl}F(\beta,t,L,U)=\{0\}\bigcup\{fl(x)=\pm0.x_1x_2\cdots x_t\times\beta^l\}.

浮点数集 F(β,t,L,U)F(\beta,t,L,U)共有 2(β1)βt1(UL+1)+12(\beta-1)\beta^{t-1}(U-L+1)+1 个数,其中非零规格化数的绝对值范围为

flmin(x)=βL1fl(x)βU×(1βt)=flmax(x).fl_{min}(x)=\beta^{L-1}\leqslant|fl(x)|\leqslant\beta^U\times(1-\beta^{-t})=fl_{max}(x).

在计算机运算过程中, 应尽量调整计算顺序, 避免中途计算结果超出表示范围 (称作 “上溢”、“下溢”).

以下采用舍入到最近值fl(x)\operatorname{fl}(x) 是浮点数集中离 xx 最近的数;距离相等时可采用舍入到偶数的规则。假定 β2\beta\geqslant2t1t\geqslant1 均为整数,准确值 x0x\neq0 位于非零规格化数的表示范围内,舍入结果也是非零规格化数,且不发生上溢、下溢。这里不将次正规数纳入误差模型。

在下面的误差界中,按准确值选择阶码 ll,使得 βl1x<βl\beta^{l-1}\leqslant|x|<\beta^l。该区间的浮点间距为 βlt\beta^{l-t},就近舍入的绝对误差不超过半个间距,因此

xfl(x)12βlt,xfl(x)x12βltβl1=12β1t.\begin{aligned} |x-\operatorname{fl}(x)| &\leqslant\frac12\beta^{l-t},\\[10pt] \frac{|x-\operatorname{fl}(x)|}{|x|} &\leqslant\frac{\frac12\beta^{l-t}}{\beta^{l-1}} =\frac12\beta^{1-t}. \end{aligned}

u=12β1tu=\frac12\beta^{1-t} 为该舍入模型的单位舍入误差,则可写作

fl(x)=x(1+δ),δu.\operatorname{fl}(x)=x(1+\delta),\qquad|\delta|\leqslant u.

这个相对误差界只依赖进制和有效位数;截断舍入或下溢时不能直接沿用上述半个间距的结论。

一些计算原则:

  • 为避免大数”吃掉”小数, 若干个数相加时, 宜采取绝对值较小的数优先加的原则.
  • 尽量避免两个相近的数相减.
  • 避免绝对值小的数作除数, 绝对值大的数作乘数.
  • 为减少舍入误差和节省计算时间, 在计算中应尽量简化计算步骤, 减少运算次数. 例如用秦九韶算法将多项式 pn(x)p_n(x) 写作 (((anx+an1)x+an2)x++a1)x+a0(\cdots((a_nx+a_{n-1})x+a_{n-2})x+\cdots+a_1)x+a_0.
  • 选用数值稳定性好的算法.

讨论

评论

正在加载评论…

输入关键词开始搜索。