误差
2026年03月03日
程设计科 / 计算方法
7159字符
阅读量:Loading

一、误差的基本概念

由数学方法解决实际问题时,通常按照以下过程:

引起误差的原因有很多:

  1. 模型误差:实际问题的解与数学模型解的之差。
  2. 观测误差:数学问题的一些参量的值往往由观测得到,但是观测不可能绝对准确,由此产生的误差称为“观测误差”。
  3. 截断误差:一般数学问题难以求出精确解,需要简化为较易求解的问题,以简化问题的解作为原问题解的近似,例如泰勒展开后省略后面的无穷多项。
  4. 舍入误差:计算过程中,受到机器字长的限制,无穷小数和位数很多的数必须舍入成一定的位数,这样的误差为“舍入误差”。

二、绝对误差和相对误差

为准确值的一个近似值,称:

为近似值的绝对误差,简称误差。

根据测量工具或计算情况,可以估计出的取值范围,即估出误差绝对值的一个上界:

为近似值的绝对误差限,绝对误差限越小越好。根据绝对误差限的定义,可以将准确值写作:

为准确值的近似值,称绝对误差与准确值之比为近似值的相对误差,记作

由于计算过程中准确值难以得知。所以一般取相对误差为:

证明相对误差可以如上取得:

很小时,可以得到:

可知两者的差是的高阶无穷小,可以忽略不计。

同样,相对误差只能估计其上限,如果存在正数使得:

称其为的相对误差限,显然,误差限与近似值绝对值之比的一个相对误差限。

三、误差的传播

1、基本运算中的误差估计

由微分学,当自变量的改变量(误差)很小时,函数的微分作为函数的改变量的主要线性部分可以近似函数的改变量,故可以利用微分运算公式导出误差运算公式。设数值计算中求得的解与参量有关,记为:

设不同参量的近似值为,相应的解也会产生误差:

假设在点处可微,则当参量误差很小时,根据:

解的绝对误差为:

其相对误差为:

根据上面两式,可以得到和差积商的误差公式:

这样,再根据三角不等式,可以得到:

2、算法的数值稳定性

计算一个数学问题,求积分制:

注意到:

根据被积分式,知随着增大,递减,递减且大于,可以得到:

即:

可以设计两种算法:

  1. 按照递推公式以此计算出的近似值。
  2. ,按照递推公式一次计算出的近似值。

使用方法一计算,下面给出其MATLAB代码:(代码中的I(n)代表

format long
I = zeros(25,1);
I(1) = log(1.2);
for n = 1:24
I(n+1) = 1/n - 5 * I(n);
end
I(1:25)

然后使用方法二计算,下面给出其MATLAB代码:

format long
I = zeros(25,1);
I(25) = (1 / (6 * 25) + 1 / (5 * 25)) / 2;
for n = 24:-1:1
I(n) = (1 / n - I(n+1)) / 5;
end
I(1:25)

分别比较它们的输出结果:

方法一方法二
00.1823215567939550.182321556793955
10.0883922160302270.088392216030227
20.0580389198488650.058038919848866
30.0431387340890100.043138734089005
40.0343063295549500.034306329554975
50.0284683522252490.028468352225126
60.0243249055404190.024324905541035
70.0212326151550460.021232615151969
80.0188369242247700.018836924240154
90.0169264899872630.016926489910342
100.0153675500636860.015367550448288
110.0140713405906620.014071338667650
120.0129766303800230.012976639995085
130.0120399250229600.012039876947652
140.0112289463137730.011229186690311
150.0105219350978040.010520733215111
160.0098903245109820.009896333924444
170.0093719068568570.009341859789542
180.0086960212712710.008846256607844
190.0091514725910160.008400295908150
200.0042426370449220.007998520459251
210.0264058623944400.007626445322793
22-0.0865747665176540.007322318840580
230.4763520934578330.006866666666667
24-2.34009380062250.007333333333333

两种方法在值较小的时候,结果十分相近。但是按照方法一计算的结果,在时,积分值已经小于,显然是错误的,这是舍入误差在计算过程中的传播所引起的后果,设有误差,假设在计算过程中不产生新的舍入误差,则由递推公式,可以得知第项的误差为:

即每递推一次,误差的绝对值就扩大五倍,上述计算过程中采用format long有16位有效数字,故:

那么在第时,误差满足:

,已经没有任何一位有效数字。而第二种方法中,尽管的取值精度不高,其误差限:

但是每一次递推,其误差的绝对值都在减小,到时,满足:

上述事实说明,对于同一数学问题,使用的算法不同,效果也不同,我们称计算过程中舍入误差不增长的算法具有数值稳定性,否则数值就是不稳定的。例如上述问题中,方法一数值不稳定,方法二数值稳定,我们希望选择数值更加稳定的方法。

四、数值计算中应该注意的问题

1、避免两个相近的数相减

根据相对误差公式:

可知两数之差的相对误差为:

非常接近时,的相对误差很大,有效数字位数严重丢失,常常需要改变计算公式。下面是一些常用变换方法:

2、避免大数吃小数的情况

计算机在进行运算过程中,首先要把参加运算的数字进行对阶,即把两数都写成绝对值小于而阶码相同的数,例如要改写为:

如果计算机只能表示四位小数,那么计算出来的只有,大数部分把小数部分吃掉了。所以在连加过程中,先把较小的数字相加,然后再加大数,这样小数累加后的进位不会先被大数吃掉。

3、避免除数的绝对值远小于被除数的绝对值

根据公式:

时,舍入误差可能增大很多。

4、要简化运算、减少运算次数,提高效率

对于计算的数值,如果直接使用的麦克劳林级数展开,取前项的和用来计算近似值,截断误差为,如果要求误差小于,则,要对前十万项求和,计算量很大,并且舍入误差积累使得有效数字丢失严重,如果使用级数:

来计算,取,取级数的前五项即可满足要求。显然这种方法更有效。

对于计算多项式的值:

如果直接相加,那么需要做次乘法和次加法,但是改为使用秦九韶算法:

则只需要进行次加法和次乘法。

作者信息:老官童鞋gogo
发表于:2026年03月03日
本文标题: 误差