学习视频:《数值分析》| 华科 | 研究生基础课
误差:一个物理量的真实值与计算值之间的差异。
误差按照来源可分为模型误差、观测误差、截断误差和舍入误差四种:
注意:在数值分析中,我们总假定数学模型是准确的,即不考虑模型误差和观测误差,主要研究截断误差和舍入误差对计算结果的影响。
蝴蝶效应是一个很形象的例子来说明误差的传播与积累带来的危害。如果一个算法是数值不稳定的(也就是误差不可控的),那么随着计算量的增多,其计算误差也会不断积累,最终导致结果失真。
下面用一个数学问题来展示误差的积累:
利用分部积分公式可以计算得:
根据上面的推导,可以得到公式一。
然而,根据公式一计算推导出的结果失真了,这说明这个算法是数值不稳定的。
公式一导致误差积累,不断变大。因此,我们可以将公式一反推得到一个新的公式二,如下所示:
我们还可以对误差作理论的分析:
这个例子给我们带来的启发是:当我们在设计一个算法时,要事先考虑其是否是数值稳定的。误差是不可回避的,算法的稳定性会是一个非常重要的话题。
绝对误差(有时候也叫做误差)的定义如下:
然而,很多时候,我们不知道精确值是多少,因此无法带入上式求得绝对误差。虽然绝对误差在实际中无法计算,但我们可以用估计的方法,算出误差的一个界限,这就是绝对误差限。
由于绝对误差限只是绝对误差的一个界限,因此它不是唯一确定的。但是在实践中,我们希望尽可能获得较小的绝对误差限以更精准的确定绝对误差的范围。
另外,绝对误差和绝对误差限是存在量纲的,因此有时候绝对误差并不能很好地反映近似程度的好坏。
为了解决绝对误差和绝对误差限量纲的问题,引入相对误差的概念:
同样地,类似于绝对误差限,相对误差的界限被定义为相对误差限。
让我们思考如下的问题:
答:(1)是否合理需要看近似程度是否可信,如果可信,那么偷换是合理的。(2)是否反映同一数量级的误差需要根据问题来看。
由此可见,近似值的有效数字越多,其绝对误差越小
有了这个概念,如何求一个数字的有效数字呢?
上图中的形式又被称为标准浮点式或科学计数法
注意:精确值的有效数字可认为有无限多位。
当 3.14、3.141 和 3.15 作为 π \pi π 的近似值时,谁的近似效果更好?
实际上,就是让我们求它们有效数字的位数。
根据定义 ∣ x ∗ − x ∣ ≤ 1 2 ∗ 1 0 m − n |x^*-x|\le\frac{1}{2}*10^{m-n} ∣x∗−x∣≤21∗10m−n 可得:
因此,3.14 和 3.141 的近似程度是更好的。
首先是如何根据有效数字推导出相对误差限
然后是根据相对误差限推导出有效数字
下面看一个例子:
先复习一下拉格朗日中值定理:
然后引出函数的误差估计方法:
先讲函数的绝对误差估计方法:
然后是函数的相对误差的估计方法:
条件数越小,则误差估计就越准
设计算法时,应该避免两个相近的数相减,这样可以减少误差
如果出现了两个相近的数相减,可以考虑改变算法避免两个数相减
下面给出一个例题:
改变算法:
如果找不到适当的方法替代两个相近的数相减,那么只能在计算机上采用双倍字长计算,以提高精度。
在计算机中,只能采用有限位数计算,如果参加运算的数量级相差很大,在它们的加减运算中,绝对值很小的数往往被绝对值较大的数“吃掉”,造成计算结果失真。
由于除数很小,将导致商很大,有可能出现“溢出”问题或者大数“吃掉”小数问题
如果算法的时间复杂度太高,实际计算将可能无法完成
其次,即使是可行算法,则计算量越大积累的误差就可能越大。因此计算量应该越小越好。
有没有办法减少计算量呢,有的,就是改变计算的方法(先化简,再计算),如下所示:
一种算法,如果它的舍入误差积累是可控制的,非递增的,则称其为数值稳定的,否则称其为数值不稳定的。
一个数值不稳定的算法,随着计算量的增大,误差积累会越来越多,导致结果失真
上面是通过实验说明了该算法是数值不稳定的,下面通过公式推导证明:
我们可以修改一下算法,使其变为数值稳定的
实际结果验证可得: