跳转至

误差

误差的类型

误差描述了数值计算中近似解的精确程度,可分为以下几类:

  • 截断误差在数值运算中运用近似方法表示准确数值运算或数量而引起的,也叫方法误差。

  • 舍入误差由于计算机字长的限制而产生的误差。

  • 不与数值方法相关的误差,如测量误差等。

误差的度量

绝对误差

\(x^*\) 为精确值,\(\tilde{x}\) 为近似值,则称 \(\tilde{x}\) 的绝对误差为

\[ E(\tilde{x})=x^*-\tilde{x} \]

绝对误差具有量纲,反映了近似值与精确值之间的差距,但不能很好地反映近似值的精度。

绝对误差限

\(\exists\; \delta>0\),使得 \(\left\vert E(\tilde{x}) \right\vert=\left\vert x^*-\tilde{x} \right\vert\le\delta\),则称 \(\delta\)\(\tilde{x}\) 的绝对误差限。

相对误差

\(x^*\) 为精确值,\(\tilde{x}\) 为近似值,则称 \(\tilde{x}\) 的相对误差为:

\[ E_r(\tilde{x})=\frac{x^*-\tilde{x}}{x^*}\times 100 \% \quad(x^*\ne 0) \]

相对误差不具有量纲,能够较好地反映误差的特性及近似值的精度。需要注意的是,由于 \(x^*\) 更难确定,在分析时,我们也用 \(\frac{x^*-\tilde{x}}{\tilde{x}}\) 作为相对误差。似乎没有往年题目会因为这两者的辨析产生歧义,不过可以在答疑时进一步确认。

相对误差限

\(\exists\delta_r>0\),使得 \(\left\vert E_r(\tilde{x}) \right\vert=\left\vert \frac{x^*-\tilde{x}}{x^*} \right\vert\le\delta_r\),则称 \(\delta_r\)\(\tilde{x}\) 的相对误差限。同样地,有时也将分母换成 \(\tilde{x}\)

有效数字

如果近似值 \(\tilde{x}\) 的误差不超过某位的半个单位,该位数字到 \(\tilde{x}\) 的第一位非零数字共有 \(n\) 位,那么这 \(n\) 位数字称 为\(\tilde{x}\) 的有效数字。

\[ \tilde{x}=\pm 10^k\times 0.a_1a_2\cdots a_n \]

\(\left\vert x^*-\tilde{x} \right\vert\le\frac 12\times 10^{k-n}\) 时,称 \(\tilde{x}\)\(x^*\)\(n\) 位有效数字。

误差和有效数字的关系

由相对误差的定义 \(E_r(\tilde{x})=\frac{E(\tilde{x})}{\left\vert \tilde{x} \right\vert}\) 可知 \(\delta_r(\tilde{x})=\frac{\delta(\tilde{x})}{\left\vert \tilde{x} \right\vert}\)

有效数字和相对误差限的关系由以下定理给出:

  • \(\tilde{x}\)\(n\) 位有效数字,则 \(\left\vert \frac{x^* - \tilde{x}}{x^*} \right\vert \le \frac{1}{2a_1} \times 10^{1-n}\)
  • \(\left\vert \frac{x^* - \tilde{x}}{x^*} \right\vert \le \frac{1}{2(a_1+1)} \times 10^{1-n}\),则 \(\tilde{x}\) 至少具有 \(n\) 位有效数字。

误差的传播

函数误差的传播

\(f(x)\)\(\tilde{x}\) 的邻域上可微,由其在 \(x=\tilde{x}\) 的泰勒展开式 \(f(x^*)\approx f(\tilde{x})+f'(\tilde{x})(\tilde{x}-x^*)\) 近似可得

\[ \left\vert f(\tilde{x})-f(x^*) \right\vert\le \left\vert f'(\tilde{x}) \right\vert\cdot \left\vert \tilde{x}-x^* \right\vert \]

由此对近似函数 \(f(\tilde{x})\) 的误差限和相对误差限分别有如下估计式:

\[ \begin{cases} \delta f(\tilde{x})\le\left\vert f'(\tilde{x}) \right\vert\cdot\delta(\tilde{x}) \\ \delta_r f(\tilde{x})\le \left\vert \frac{f'(\tilde{x})}{f(\tilde{x})}\right\vert\cdot\delta(\tilde{x}) \end{cases} \]

对于二元函数,若 \(f(x,y)\)\((\tilde{x},\tilde{y})\) 的邻域上可微,由其泰勒展开式:

\[ f(x^*,y^*)\approx f(\tilde{x},\tilde{y})+\frac{\partial f(\tilde{x},\tilde{y})}{\partial x}(x^*-\tilde{x})+\frac{\partial f(\tilde{x},\tilde{y})}{\partial y}(y^*-\tilde{y}) \]

近似可得

\[ \left\vert f(x^*,y^*)-f(\tilde{x},\tilde{y}) \right\vert\le \left\vert \frac{\partial f(\tilde{x},\tilde{y})}{\partial x}\right\vert\cdot\left\vert x^*-\tilde{x} \right\vert+\left\vert \frac{\partial f(\tilde{x},\tilde{y})}{\partial y}\right\vert\cdot\left\vert y^*-\tilde{y} \right\vert \]

由此对近似函数 \(f(\tilde{x},\tilde{y})\) 的误差限和相对误差限分别有如下估计式:

\[ \begin{cases} \delta f(\tilde{x},\tilde{y})\le \left\vert \frac{\partial f(\tilde{x},\tilde{y})}{\partial x}\right\vert\cdot\delta(\tilde{x})+\left\vert \frac{\partial f(\tilde{x},\tilde{y})}{\partial y}\right\vert\cdot\delta(\tilde{y}) \\ \delta_r f(\tilde{x},\tilde{y})=\left\vert \frac{\delta f(\tilde{x},\tilde{y})}{f(\tilde{x},\tilde{y})}\right\vert \end{cases} \]

算术误差的传播

将算术运算视为二元函数,可以算出加减乘除运算的误差传播公式:

\[ \begin{cases} \delta(\tilde{x}\pm\tilde{y})\le\delta(\tilde{x})+\delta(\tilde{y}) \\ \delta_r(\tilde{x}\pm\tilde{y})\le\frac{\delta(\tilde{x})+\delta(\tilde{y})}{\left\vert \tilde{x}\pm\tilde{y} \right\vert} \end{cases} \]
\[ \begin{cases} \delta(\tilde{x}\tilde{y})\le\left\vert \tilde{y} \right\vert\delta(\tilde{x})+\left\vert \tilde{x} \right\vert\delta(\tilde{y}) \\ \delta_r(\tilde{x}\tilde{y})\le\frac{\delta(\tilde{x})}{\left\vert \tilde{x} \right\vert}+\frac{\delta(\tilde{y})}{\left\vert \tilde{y} \right\vert} = \delta_r(\tilde{x}) + \delta_r(\tilde{y}) \end{cases} \]
\[ \begin{cases} \delta(\frac{\tilde{x}}{\tilde{y}}) \le \frac{1}{\left\vert \tilde{y} \right\vert}\delta (\tilde{x})+\left\vert \frac{\tilde{x}}{\tilde{y}^2} \right\vert\delta(\tilde{y}) \\ \delta_r(\frac{\tilde{x}}{\tilde{y}}) \le \frac{\delta(\tilde{x})}{\left\vert \tilde{x} \right\vert}+\frac{\delta(\tilde{y})}{\left\vert \tilde{y} \right\vert}=\delta_r(\tilde{x})+\delta_r(\tilde{y}) \end{cases} \]