3.1 误差分析
所谓误差就是真实值或精确值与近似值之差。由于计算机对浮点数的存储、运算都是有误差的,因此需要对计算过程和计算结果进行误差分析、度量误差的大小,“范数”是分析矩阵计算中误差、收敛性问题的重要手段,这些内容也是整个计算方法课程的基础知识。用计算机解决实际数学问题的过程中会产生多种误差,而引起误差的原因也是多方面的,本节将学习误差的基本概念以及数值计算中误差的传播。
3.1.1 误差的来源
一般使用计算机解决实际问题需经过如下几个过程:
根据实际问题建立数学模型的过程中通常会忽略某些次要因素而对问题进行简化,由此产生的误差称为模型误差;很多数学模型都含有若干个参数,而有些参数往往又是观测得到的近似值,如此取得的近似参数与真实参数值之间的误差称为参数误差或观测误差。例如,自由落体运动规律公式是忽略了空气阻力的影响,由此产生的误差就是模型误差;重力加速度通常取g=9.8,实际上参数g的值与落体所在位置的地球纬度和海拔高度有关,此近似参数将导致出现参数误差。
通常在选定数学模型及参数后还要选择数值算法,很多数值算法往往是将一个无限过程截断为有限过程,此类误差称为截断误差或方法误差。例如前述的差商近似导数的计算方法实质上是在如下展开式中
(3.1)
“截断”式(3.1)中Δx的二阶以上无穷小项得到的计算公式,由此产生的误差就是截断误差。
另一方面,因为计算机表示浮点数的字长有限(通常4字节或8字节),除极少量能够准确表示的数据外绝大部分是在超过界定的某位四舍五入所得的近似值,比如圆周率π,等存入计算机内存时均需要在某位进行四舍五入,此种误差称为舍入误差。虽然舍入误差在单步运算时或许微不足道,但是在一个较为复杂且连贯的数值算法中,舍入误差可能会积累、传播,误差分析的任务就是讨论这些误差对最终结果的准确性和整个复杂计算过程的稳定性的影响。
3.1.2 误差类型
(1)绝对误差
定义3.1 设x是准确值,x*是它的一个近似值,称其差
e*=x-x* (3.2)
为x*的绝对误差,简称误差,绝对误差的绝对值的上限记为ε*,称为x*的绝对误差限,简称误差限,即有
|e*|=|x-x*|≤ε* (3.3)
例如在使用圆周率时通常取为π*=3.14,其绝对误差及误差限为:
e*=π-π*=3.1415926…-3.14=0.0015926…
|e*|=|π-π*|=0.0015926…≤0.002=ε*
一般情况下我们无法知道准确值,当然也就无法知道准确的误差值,但是误差限可以限定误差的最大值,也限定了准确值的范围,如用3.14近似圆周率误差不超过ε*=0.002,圆周率的准确值π∈[3.14-ε*,3.14+ε*]。在工程技术或商品规格中通常用如下方式表示产品的误差限:x*=x±ε*。
(2)相对误差
度量误差的另一种方式是相对误差,例如从10±0.1和1000±1中我们肯定不会认为绝对误差限小的比绝对误差限大的更精确。
定义3.2 设x为准确值,x*是它的一个近似值,称比值
(3.4)
为近似值x*的相对误差,相对误差的绝对值的上限记为,称为x*的相对误差限,即有
(3.5)
对于10±0.1和1000±1,我们可以计算出它们的相对误差分别为:
从绝对误差看,后者误差更大些,但从相对误差的角度看,后者却是更为精确。
在式(3.4)中,在可以确定准确值x的前提下也可以取为x作为分母。
(3)有效数字
定义3.3 设x为准确值,其近似值为
x*=±0.a1a2…an×10m (3.6)
这里a1≠0,ai∈{0,1,2,…,9},i=1,2,…,n,m为整数,且
则称近似值x*有p位有效数字。
【例3.1】 圆周率π=3.14159265…,如果取π*=3.1415和π*=3.14159,问分别有几位有效数字?
【解】 ①取π*=3.1415=0.31415×101,有
则取π*=3.1415有4为有效数字,最后一位数字5是无效数字。
②取π*=3.14159=0.314159×101,有
则取π*=3.14159有6为有效数字。
定理3.1 设近似值x*具有式(3.6)的形式,如果x*有n位有效数字或x*是由其准确值四舍五入后得到的近似值,则x*的相对误差限为:
证明:如果x*有n位有效数字,则其绝对误差限为,相对误差限为如果x*是由其准确值四舍五入后得到的近似值,则此近似值必然有n位有效数字,从而结论也必然成立。
(4)近似计算中减少误差的几个策略
①避免两个相近的数相减。我们知道一个近似值,其有效数字越多越为精确,如果两个相近的数相减势必减少其有效数字的个数,使得相对误差变大。
【例3.2】 已知x=1.5846,y=1.5839,求x-y的值。
【解】 x-y=1.5846-1.5839=0.0007,x,y均有5位有效数字,而x-y仅有1位有效数字,使得其有效数字大大地减少。
【例3.3】 已知x=18.496,y=18.493,取4位有效数字,计算x-y的近似值,并估计其相对误差。
【解】 按4位有效数字取近似值,x*=18.50,y*=18.49,计算近似值
x*-y*=18.50-18.49=0.01
按准确值计算的结果 x-y=18.496-18.493=0.003
相对误差为:
在编程序时,可采取以下措施减少误差。
a.尽量使用双精度定义变量。
b.当两个接近的量相减时,最好做等价变换避免损失有效数字,如当x的值较大时,令:
当x与y非常接近时,令:
②避免取绝对值太小的数作为分母。如|y*|≪1时,计算会使绝对误差变大,通常也做等价变换,如|x*|≪1时:
③防止大数“吃掉”小数。
【例3.4】 计算定积分,其中N是一个非常大的正数。
【解】 根据牛顿-莱布尼茨公式得到
但是如果按此式进行计算,由于计算N+1时1可能被N吃掉,所以实际计算时可能会出现N+1=N的情况,因此计算结果会是,但是实际上
结果严重失真。正确的计算方法是:
另一方面,根据积分中值定理有
我们对于N=1010编程实算,计算结果如下:
因为,说明后两个结果的精度优于第一个计算结果。
3.1.3 向量和矩阵的范数
如同误差分析是计算方法的预备知识一样,有关范数的概念也是学习计算方法所必须具备的基础知识。通常用绝对值来度量实数的大小,用模来度量复数的大小,用范数来度量向量、矩阵的大小,范数是论述、证明某些数值方法的收敛性和稳定性所必需的工具,本节将简单介绍范数的有关概念。
(1)向量的范数
定义3.4 如果定义在Rn上的一个实值函数‖•‖,对于任意的x,y∈Rn,α∈R都有
①非负性:‖x‖≥0且仅当x=0时等号成立。
②齐次性:‖αx‖=|α|‖x‖。
③三角不等式:‖x+y‖≤‖x‖+‖y‖。
则称该实值函数‖•‖为Rn上的一个向量范数。
满足定义3.4中三个条件的实值函数均是向量范数,但最常用的向量范数有:
(3.7)
(3.8)
(3.9)
这三种向量范数分别称作1-范数、2-范数、∞-范数,其中2-范数也可表示成内积的形式
(3.10)
对于2-范数与内积的关系,有著名的Cauchy-Schwarz(柯西-许瓦尔兹)不等式:
xTy≤‖x‖2‖y‖2 (3.11)
以上三种向量范数可以统一于p-范数定义之下,p-范数定义如下:
(3.12)
当p=1、2时式(3.12)与式(3.7)和式(3.8)显然是一致的,对于p=∞情况,考虑下列不等式
对此式取p→∞时的极限,则有。
【例3.5】 求向量x=(1,-2,3)T前述的三种向量范数。
【解】 ‖x‖1=1+2+3=6
‖x‖∞=max{1,2,3}=3
如前所述向量范数可以度量向量的“大小”,而范数又不是唯一的,虽然对应同一个向量不同的范数值是不一样的,但是我们可以证明任意两种向量范数是等价的,首先给出向量范数等价性的定义。
定义3.5 设有两种范数‖•‖α,‖•‖β,如果存在常数C1,C2使
C1‖x‖α≤‖x‖β≤C2‖x‖α (3.13)
成立,则称两种范数‖•‖α,‖•‖β是等价的。
按此等价性的定义,常用的三种范数是等价的。事实上很容易证明以下三式成立
三种范数关系的综合不等式为:
(2)矩阵的范数
定义3.6 如果定义在Rn×n上的一个实值函数‖•‖,对于任意的A,B∈Rn×n,α∈R都有如下特性。
①非负性:非负性:‖A‖≥0且仅当A=0时等号成立。
②齐次性:‖αA‖=|α|‖A‖。
③三角不等式:‖A+B‖≤‖A‖+‖B‖。
④相容性:‖AB‖≤‖A‖·‖B‖。
则称该实值函数‖•‖为Rn×n上的一个矩阵范数。
一个最常用而且便于计算的矩阵范数为弗罗贝纽斯(Frobenius)范数,定义如下:
(3.14)
该矩阵范数也简称为矩阵的F-范数,如果把矩阵按相邻行的首尾连接构成向量,则F-范数正是此向量的2-范数。
定义3.7 对于给定的Rn上的向量范数‖x‖和Rn×n上的矩阵范数‖A‖,如果有
‖Ax‖≤‖A‖·‖x‖,∀x∈Rn,∀A∈Rn×n
则称矩阵范数‖A‖与向量范数‖x‖是相容的。
也可以按相容性条件定义从属于向量范数的矩阵范数,即对于指定的向量范数‖•‖来定义矩阵的范数:
(3.15)
如此定义的矩阵范数‖A‖称为向量范数的从属范数,可以证明此从属范数满足矩阵范数定义的4个条件。
从属于向量范数的矩阵1-范数、2-范数、∞-范数的表达式:
(3.16)
(3.17)
式中,λmax(ATA)是矩阵ATA的最大特征值。
对式(3.16)给出证明:将矩阵A按列分块记为A=(A1,A2,…,An),假设第k列向量为范数最大的,即
从可推得
特别取,则,从而式(3.16)成立。
再证明式(3.17),注意到矩阵ATA是半正定对称矩阵,因此必有n个非负的特征值及n个互相正交的特征向量(不妨设是标准正交向量),对其按特征值从大到小排序,记为:
任取x∈Rn,可表示为,再假设‖x‖2=1,则有:
取x=u1,则有,从而有式(3.17)成立。
【例3.6】 求矩阵的各种矩阵范数。
【解】 先计算。
其特征值为:
(3)有关范数的一些结论
向量与矩阵范数的概念在描述一些数值方法的稳定性,证明算法的收敛性方面起到至关重要的作用,本书并不试图在理论方面对范数展开讨论,但是为了支撑之后各章有关定理的理论基础,以下不加证明地给出一些范数的有关定义和定理。
定理3.2 (范数等价定理)设‖•‖α与‖•‖β是两种不同的向量范数和从属的矩阵范数,则存在常数c1,c2(c2≥c1>0),使得对任何x∈Rn,A∈Rn×n,有
c1‖x‖α≤‖x‖β≤c2‖x‖α (3.18)
(3.19)
由于任何两种范数都是等价的,在本书其后的某些章节讨论数值算法的收敛性、稳定性时我们可以以任一种范数对向量、矩阵的“大小”进行度量。
定义3.8 设矩阵A∈Rn×n,其特征值为λ1,λ2,…,λn,则称
(3.20)
为矩阵A的谱半径。
矩阵2-范数与谱半径的关系:
对于对称矩阵:‖A‖2=ρ(A),对于正交矩阵Q,因为QTQ=I,所以有‖Q‖2=1。
定理3.3 设矩阵A∈Rn×n,则对矩阵的任何范数‖•‖均有:
ρ(A)≤‖A‖ (3.21)
本定理说明,谱半径是所有范数的一个下界。
定理3.4 设A∈Rn×n,的充要条件是ρ(A)<1。
以下我们再看一个矩阵范数与矩阵奇异性关系的定理,以便在以后分析线性方程组算法的稳定性、收敛性时使用。
定理3.5 设矩阵B满足‖B‖<1,则矩阵I±B非奇异且
(3.22)
定理3.6 设矩阵Q∈Rn×n是正交矩阵,则对于任意x∈Rn,有
‖Qx‖2=‖x‖2
即正交变换具有2-范数不变性。
【证明】 因为Q是正交矩阵,所以‖Q‖2=‖QT‖2=1,则
‖Qx‖2≤‖Q‖2‖x‖2=‖x‖2=‖QTQx‖2≤‖QT‖2‖Qx‖2=‖Qx‖2从而结论成立。
3.1.4 误差的传递
设x1,x2,…,xn的近似值依次是,,…,,把近似值代入函数y=f(x1,x2,…,xn)运算得y*,显然y*是y的近似值。y*的误差、相对误差如何估计?如果函数y=f(x1,x2,…,xn)在(,,…,)附近有连续的二阶偏导数,函数值y*的误差可用多元函数在(x1,x2,…,xn)处的泰勒展开式得到。
令,Δy=y-y*于是y的误差:
(3.23)
按相对误差定义,y的相对误差为:
(3.24)
【例3.7】 测得某桌面的长a的近似值a*=120cm,宽b的近似值b*=60cm,若已知|a-a*|≤0.2cm,|b-b*|≤0.1cm,试求近似面积s*=a*b*的绝对误差限与相对误差限。
【解】 因为s=ab,,,
故s*的绝对误差限为24cm2,相对误差限为0.33%。