参考资料:
书籍: 数值分析简明教程/王兵团,张作泉,张平福编著. --北京:清华大学出版社;北京交通大学出版社,2012.8
视频:学堂在线APP中北京交通大学“数值分析I”
前期回顾
- 【数值分析】01-绪论-重要性、计算机中的数系与运算特点
重要性:
- 减少计算机科学计算式的错误;
- 使计算机计算的结果更可信;
- 计算机解决实际问题四个步骤:数学建模-》选择数值方法-》编写程序-》上机计算
机器数系及运算特点:
- 机器数系是有限实数集合;
- 表达式:f(β,t,L,U)={βc×0.a1a2a3⋯at∣ai∈{0,1,⋯,β−1},L≤c≤U}f(\beta,t,L,U)=\{\beta^c\times 0.a_1a_2a_3\cdots a_t|a_i\in\{0,1,\cdots,\beta-1\},L\leq c \leq U\}f(β,t,L,U)={βc×0.a1a2a3⋯at∣ai∈{0,1,⋯,β−1},L≤c≤U}
- 计算机对数的接收:首先判断给定实数是否属于给定机器数系,如果属于,则原样接收;不属于但给定实数是否在最小值与最大值之间,用接近给定实数fl(x)fl(x)fl(x)表示并记录x
- 计算处理:加减:先对阶、运算、舍入;乘除:运算、舍入
科学计算的实质是用近似的数据,去获得可用的结果,强调计算结果的可用性,而不是准确性。
科学计算保证计算结果可用性的依据是对计算误差控制。那本期咱们就来学习误差。
1.3 误差
所谓误差就是准确值与近似值的差异。
1.3.1 误差的来源
主要来源有4个方面:
- 模型误差(也称描述误差)
建立数据模型时引入的误差,不是数值分析可以解决的;
- 观测误差(也称数据误差)
采集元素数据时引入的误差,也不是数值分析能解决的问题,例如:仪器精度等
- 截断误差(也称方法误差)
对计算的数学公式做简化处理后所产生的误差。由于科学结算经常要把一些数学函数变成计算机易于处理的形式,总会产生截断误差,是数值分析主要研究的误差;
- 舍入误差(也称计算误差)
计算机因数系有限,在接收和运算数据时引起的误差,也是数值分析关注的内容;
1.3.2 误差的定义
绝对误差(简称误差)定义: 设xxx是准确值,x∗x^*x∗是xxx的一个近似值,称差x∗−xx^*-xx∗−x为近似值x∗x^*x∗的绝对误差,简称误差,记为e∗或e(x∗)e^*或e(x^*)e∗或e(x∗),即e(x∗)=x∗−xe(x^*)=x^*-xe(x∗)=x∗−x。
由于准确值xxx通常是未知的,故误差e∗e^*e∗一般是计算不出来的,为此引入误差限对误差进行估计。
误差限定义:满足∣e∗∣=∣x∗−x∣≤ϵ∗|e^*|=|x*-x|\leq \epsilon^*∣e∗∣=∣x∗−x∣≤ϵ∗的正数ϵ∗\epsilon^*ϵ∗为近似值x∗x^*x∗的误差限。
误差限一般可以求出,例如用具有毫米刻度的皮尺去测量某个物件的长度,测得的数据与物件的实际长度不会超过半个毫米,这半个毫米就是物件长度的误差限。
误差限给出了准确值xxx所在范围为x∗−ϵ∗≤x≤x∗+ϵ∗x^*-\epsilon^*\leq x\leq x^*+\epsilon^*x∗−ϵ∗≤x≤x∗+ϵ∗,该范围常用x=x∗±ϵ∗x=x^*\pm \epsilon^*x=x∗±ϵ∗
通常误差限一般取为获得该近似数仪器精度的半个单位,显然误差限ϵ∗\epsilon^*ϵ∗越小,近似值越准确。
绝对误差不能反映近似值x∗x^*x∗的近似程度,为描述近似数的近似程度,需要引入相对误差:
相对误差定义:设xxx是准确值,x∗x^*x∗是xxx的一个近似值,称e∗x=x∗−xx\frac{e^*}{x}=\frac{x^*-x}{x}xe∗=xx∗−x为近似值x∗x^*x∗的相对误差,记为er∗或er(x∗)e_r^*或e_r(x^*)er∗或er(x∗),即er(x∗)=e∗x=x∗−xxe_r(x^*)=\frac{e^*}{x}=\frac{x^*-x}{x}er(x∗)=xe∗=xx∗−x
相对误差的绝对值越小,近似程度越高。
由于准确值xxx通常是未知的,故相对误差一般是计算不出来的,为此引入相对误差限对相对误差进行估计。
称满足∣er(x∗)∣=∣x∗−xx∣≤ϵr∗|e_r(x^*)|=|\frac{x^*-x}{x}|\leq \epsilon_r^*∣er(x∗)∣=∣xx∗−x∣≤ϵr∗为正数ϵr∗\epsilon_r^*ϵr∗为近似数x∗x^*x∗的相对误差限。
使用中常用绝对误差限来估计,为方便估计相对误差限制,实用中常用e∗x∗=x∗−xx∗\frac{e^*}{x^*}=\frac{x^*-x}{x^*}x∗e∗=x∗x∗−x进行误差限计算。
1.3.3 数值计算的误差
带有误差的数经过四则运算后误差的变化有如下估算关系:
定理1-1 假设x∗和y∗x^*和y^*x∗和y∗分别是准确值x和yx和yx和y的一个近似值,则有:
(1)四则运算的绝对误差估计:e(x∗±y∗)=e(x∗)±e(y∗)e(x∗×y∗)≈y∗e(x∗)+x∗e(y∗)e(x∗y∗)≈y∗e(x∗)−x∗e(y∗)(y∗)2e(x^*\pm y^*)=e(x^*)\pm e(y^*)\\ \space \\ e(x^*\times y^*)\approx y^*e(x^*)+x^*e(y*)\\ \space \\ e(\frac{x^*}{y^*})\approx \frac{y^*e(x^*)-x^*e(y^*)}{(y^*)^2}e(x∗±y∗)=e(x∗)±e(y∗) e(x∗×y∗)≈y∗e(x∗)+x∗e(y∗) e(y∗x∗)≈(y∗)2y∗e(x∗)−x∗e(y∗)
(2)四则运算的相对误差估计:er(x∗±y∗)≈x∗er(x∗)±y∗er(y∗)x∗±y∗er(x∗×y∗)≈er(x∗)+er(y∗)e(x∗y∗)≈er(x∗)−er(y∗)e_r(x^*\pm y^*)\approx\frac{x^*e_r(x^*) \pm y^*e_r(y^*)}{x^*\pm y^*}\\ \space \\ e_r(x^*\times y^*)\approx e_r(x^*)+e_r(y*)\\ \space \\ e(\frac{x^*}{y^*})\approx e_r(x^*)-e_r(y^*)er(x∗±y∗)≈x∗±y∗x∗er(x∗)±y∗er(y∗) er(x∗×y∗)≈er(x∗)+er(y∗) e(y∗x∗)≈er(x∗)−er(y∗)
近似数xxx的绝对误差和相对误差与微分的关系:绝对误差与微分:dx=e(x∗)相对误差与微分:dlnx=er(x∗)绝对误差与微分:dx=e(x^*)\\ 相对误差与微分:d\ln x=e_r(x^*)绝对误差与微分:dx=e(x∗)相对误差与微分:dlnx=er(x∗)
【例1-2】考查函数y=xny=x^ny=xn的相对误差与自变量x的相对误差关系。
解:两边同时去对数得:lny=nlnx⟹dlny=ndlnx由相对误差与微分关系式:dlnx=er(x∗)故:er((x∗)n)=ner(x∗)由此可知函数xn的相对误差为自变量x的相对误差的n倍两边同时去对数得:\\ \ln y=n\ln x\Longrightarrow d \ln y=nd\ln x \\ 由相对误差与微分关系式:d\ln x=e_r(x^*)\\ 故:e_r((x^*)^n)=ne_r(x^*)\\ 由此可知函数x^n的相对误差为自变量x的相对误差的n倍两边同时去对数得:lny=nlnx⟹dlny=ndlnx由相对误差与微分关系式:dlnx=er(x∗)故:er((x∗)n)=ner(x∗)由此可知函数xn的相对误差为自变量x的相对误差的n倍。
处理一般函数计算的误差问题常用Taylor展开式进行估计:
定理1-2 设多元函数u=f(x1,x2,⋯,xn)u=f(x_1,x_2,\cdots,x_n)u=f(x1,x2,⋯,xn),向量自变量(x1,x2,⋯,xn)(x_1,x_2,\cdots,x_n)(x1,x2,⋯,xn)的近似值为(x1∗,x2∗,⋯,xn∗)(x_1^*,x_2^*,\cdots,x_n^*)(x1∗,x2∗,⋯,xn∗),则有多元函数f(x1,x2,⋯,xn)f(x_1,x_2,\cdots,x_n)f(x1,x2,⋯,xn)的误差估计:
(1)e(f(x1∗,x2∗,⋯,xn∗))≈∑i=1n∂f(x1∗,x2∗,⋯,xn∗)∂xie(xi∗)e(f(x_1^*,x_2^*,\cdots,x_n^*))\approx \sum_{i=1}^{n}\frac{\partial f(x_1^*,x_2^*,\cdots,x_n^*)}{\partial x_i}e(x_i^*)e(f(x1∗,x2∗,⋯,xn∗))≈∑i=1n∂xi∂f(x1∗,x2∗,⋯,xn∗)e(xi∗)
(2)ϵ(f(x1∗,x2∗,⋯,xn∗))≈∑i=1n∣∂f(x1∗,x2∗,⋯,xn∗)∂xi∣ϵ(xi∗)\epsilon(f(x_1^*,x_2^*,\cdots,x_n^*))\approx \sum_{i=1}^{n}|\frac{\partial f(x_1^*,x_2^*,\cdots,x_n^*)}{\partial x_i}|\epsilon(x_i^*)ϵ(f(x1∗,x2∗,⋯,xn∗))≈∑i=1n∣∂xi∂f(x1∗,x2∗,⋯,xn∗)∣ϵ(xi∗)
(3)ϵr(f(x1∗,x2∗,⋯,xn∗))≈∑i=1n∣∂f(x1∗,x2∗,⋯,xn∗)∂xi∣ϵ(xi∗)∣f(x1∗,x2∗,⋯,xn∗)∣≈ϵ(f(x1∗,x2∗,⋯,xn∗))∣f(x1∗,x2∗,⋯,xn∗)∣\epsilon_r(f(x_1^*,x_2^*,\cdots,x_n^*))\approx \sum_{i=1}^{n}|\frac{\partial f(x_1^*,x_2^*,\cdots,x_n^*)}{\partial x_i}|\frac{\epsilon(x_i^*)}{|f(x_1^*,x_2^*,\cdots,x_n^*)|}\approx \frac{\epsilon(f(x_1^*,x_2^*,\cdots,x_n^*))}{{|f(x_1^*,x_2^*,\cdots,x_n^*)|}}ϵr(f(x1∗,x2∗,⋯,xn∗))≈∑i=1n∣∂xi∂f(x1∗,x2∗,⋯,xn∗)∣∣f(x1∗,x2∗,⋯,xn∗)∣ϵ(xi∗)≈∣f(x1∗,x2∗,⋯,xn∗)∣ϵ(f(x1∗,x2∗,⋯,xn∗))
【例1-3】 设有一长方体水池,测得其长、宽、深分别为50m±0.01m,25m±0.01m,20m±0.01m50m\pm 0.01m,25m\pm 0.01m,20m\pm 0.01m50m±0.01m,25m±0.01m,20m±0.01m,试按所给数据求出该水池的容积,并给出绝对误差限和相对误差限。
**解:**令l,w,h,vl,w,h,vl,w,h,v分别代表长方体的长、宽、深、容积,由长方体体积公式可得:v=v(l,w,h)=lwhv=v(l,w,h)=lwhv=v(l,w,h)=lwh
由题意可得长、宽、深的近似值和误差限如下:近似值:l∗=50m,w∗=25m,h∗=20m误差限:ϵ(l∗)=ϵ(w∗)=ϵ(h∗)=0.01m近似值:l^*=50m,w^*=25m,h^*=20m \\ 误差限:\epsilon(l^*)=\epsilon(w^*)=\epsilon(h^*)=0.01m近似值:l∗=50m,w∗=25m,h∗=20m误差限:ϵ(l∗)=ϵ(w∗)=ϵ(h∗)=0.01m
按所给数据求出该水池的容积为:v(l∗,w∗,h∗)=l∗w∗h∗=50×25×20=2500m3v(l^*,w^*,h^*)=l^*w^*h^*=50\times 25 \times 20=2500m^3v(l∗,w∗,h∗)=l∗w∗h∗=50×25×20=2500m3
依据多元函数绝对误差限制公式可得:ϵ(v(l∗,w∗,h∗))≈∂v∗∂lϵ(l∗)+∂v∗∂wϵ(w∗)+∂v∗∂hϵ(h∗)≈w∗h∗ϵ(l∗)+l∗h∗ϵ(w∗)+w∗l∗ϵ(h∗)≈25×20×0.01+50×25×0.01+50×20×0.01≈27.50m3\epsilon(v(l^*,w^*,h^*))\approx \frac{\partial v*}{\partial l}\epsilon(l^*)+ \frac{\partial v*}{\partial w}\epsilon(w^*)+ \frac{\partial v*}{\partial h}\epsilon(h^*)\\ \approx w^*h^*\epsilon(l^*)+l^*h^*\epsilon(w^*)+w^*l^*\epsilon(h^*)\\ \approx 25\times20\times 0.01+50\times 25 \times 0.01+50\times 20 \times 0.01\\ \approx27.50m^3ϵ(v(l∗,w∗,h∗))≈∂l∂v∗ϵ(l∗)+∂w∂v∗ϵ(w∗)+∂h∂v∗ϵ(h∗)≈w∗h∗ϵ(l∗)+l∗h∗ϵ(w∗)+w∗l∗ϵ(h∗)≈25×20×0.01+50×25×0.01+50×20×0.01≈27.50m3
依据多元函数相对误差限制公式可得:ϵr(v∗)≈ϵ(v∗)v∗=27.50/2500=0.11%\epsilon_r(v^*)\approx \frac{\epsilon(v*)}{v^*}=27.50/2500=0.11\%ϵr(v∗)≈v∗ϵ(v∗)=27.50/2500=0.11%
故绝对容积的误差限和相对误差限分别为27.50立方米、0.11%0.11\%0.11%
1.3.4 计算机的舍入误差
设计算机的数系为f(β,t,L,U)f(\beta,t,L,U)f(β,t,L,U),m和M是其中绝对值最小和最大的正数,某数x=±βc×0.a1a2⋯,a1≠0满足m<∣x∣<M,x∉f(β,t,L,U)x=\pm \beta^c\times 0.a_1a_2\cdots,a_1\neq 0满足m\lt |x| \lt M,x\notin f(\beta,t,L,U)x=±βc×0.a1a2⋯,a1=0满足m<∣x∣<M,x∈/f(β,t,L,U),则计算机舍入处理后以数fl(x)fl(x)fl(x)接收,则
fl(x)=±βc×a‾a‾={0.a1a2⋯at,0≤at+1<β20.a1a2⋯at+β−t,at+1≥β2}fl(x)=\pm \beta^c\times \overline{a}\\ \overline{a}= \left \{ \begin{matrix} 0.a_1a_2\cdots a_t,0\leq a_{t+1}\lt \frac{\beta}{2} \\ 0.a_1a_2\cdots a_t+\beta^{-t},a_{t+1}\ge \frac{\beta}{2} \end{matrix} \right \}fl(x)=±βc×aa={0.a1a2⋯at,0≤at+1<2β0.a1a2⋯at+β−t,at+1≥2β}
因此计算机对xxx的舍入绝对误差和舍入相对误差有如下估计:
(1) ∣e(fl(x))∣=∣x−fl(x)∣≤0.5×βc−t|e(fl(x))|=|x-fl(x)|\leq 0.5 \times \beta^{c-t}∣e(fl(x))∣=∣x−fl(x)∣≤0.5×βc−t
(2)∣er(fl(x))∣=∣x−fl(x)∣∣x∣≤0.5×β1−t|e_r(fl(x))|=\frac{|x-fl(x)|}{|x|}\leq 0.5 \times \beta^{1-t}∣er(fl(x))∣=∣x∣∣x−fl(x)∣≤0.5×β1−t
由上述公式可知,计算机对任何实数的舍入相对误差限与实数本身无关,只与计算机字长ttt有,其值为0.5×β1−t0.5 \times \beta^{1-t}0.5×β1−t,通常定义eps=0.5×β1−teps=0.5 \times \beta^{1-t}eps=0.5×β1−t为计算机的精度。