数值计算的误差
误差来源
- 模型误差: 将实际问题时出现的误差。因为实际问题转化为数学模型时会省略很多东西,因此难免会有误差。
- 观测误差: 在测量一些物理量(长度等)时产生的误差。
- 截断误差: 求近似解产生的误差。例如泰勒公式使用若干项进行求解就会舍去后面的项
- 舍入误差: 使用计算机计算时,由于计算机表达位数有限,因此会产生舍入误差
误差和有效数字
假设x为准确值, $x^$为x的一个近似值,$e^ = x^ - x$为近似值的*绝对误差,简称误差。
通常我们不知道准确值,但是我们有时候我们可以估计出一个上限,记作$\varepsilon^$,称为*误差限
即 $|x^ - x| \le \varepsilon^$
相对误差: 绝对误差与真实值的比值,记作$e_r^*$
通常情况下我们无法获得x,因此相对误差可以写成$\frac{x^ - x}{x^ }$
相对误差也有误差限,记作$\varepsilon_r^$,即$\varepsilon_r^ = \frac{\varepsilon^}{x^}$
有效数字定义
若近似值$x^$的误差限是某一位的半个单位,那么该位到第一位非零数字共有n位,就说$x^$ 有n位有效数字
其中$a_i$在[0, 9]范围内
根据上面公式,可以得知3.141是三位有效数字,因为:
$|x - x^| \le \frac{1}{2} \times 10^{m-n+1}$ ,即$x^ - \frac{1}{2} \times 10^{m-n+1} \le x \le \frac{1}{2} \times 10^{m-n+1}$
而$\pi$不在[$3.141 - 0.001 \times \frac{1}{2}, 3.141 + 0.001 \times \frac{1}{2}$]范围内,因此它不是4位有效数字(m=0)
定理:若$x^$的相对误差限$\varepsilon_r^ \le \frac{1}{2(a_1 + 1)} \times 10^{-(n-1)}$,则x^*至少有n位有效数字
这个定理说明了有效数字越多,相对误差限越小
误差估计
根据上面的公式,我们可以求出多元函数的误差公式
例如$\varepsilon (x_1^ x_2^ ) \approx \frac{\partial f}{\partial x_1^} \varepsilon(x_1^ ) + \frac{\partial f}{\partial x_2^} \varepsilon(x_2^ )$
即$\varepsilon (x_1^ x_2^ ) \le |x_1^ | \varepsilon(x_2^ ) + |x_2^ | \varepsilon (x_1^ )$
病态问题和条件数
如果输入数据有微小扰动会造成输出数据有较大的误差,这就是病态问题。相对误差比值(条件数)为:
$C_p$越大,说明输出误差和输入误差的比值越大,说明这个问题就是病态问题。一般认为$\ge$10就是病态问题。