block1=>operation: 实际问题
block2=>operation: 数学模型
block3=>operation: 数值计算方法
block4=>operation: 程序设计
block5=>operation: 计算机计算求出结果
block1->block2->block3->block4->block5
设数x是精确值x∗的一个近似值。
- 模型误差:无法避免,数值分析不研究。
- 观测误差:无法避免,数值分析不研究。
- 截断误差(方法误差):人为主观采用某种近似方法造成。
- 舍入误差(计算误差):计算机只能存放浮点数近似值造成。
|
|
|
绝对误差 |
e(x) |
e=∣x∗−x∣ |
绝对误差限 |
ε(x) |
∣x∗−x∣≤ε(x) |
相对误差 |
er(x) |
er=∣∣∣∣∣xx∗−x∣∣∣∣∣ |
相对误差限 |
εr(x) |
∣∣∣∣∣xx∗−x∣∣∣∣∣=er(x)≤εr(x)=xε(x) |
- 相对误差应为∣∣∣∣∣x∗x∗−x∣∣∣∣∣,但在实际计算中,认为x是准确的,可将分母替换为x。
由f(x∗)−f(x)=f′(x)(x∗−x)+2f′′(ξ)(x∗−x)2,得
ε[f(x)]≈∣f′(x)∣ε(x)∣
推理得
ε[f(x1,⋯,xn)]≈k=1∑n∣∣∣∣∣∂xk∂f∣∣∣∣∣ε(xk)
- ε(x1±x2)=ε(x1)+ε(x2),(这里等式右边就是只有加号)
- ε(x1⋅x2)≈∣x1∣ε(x2)+∣x2∣ε(x1)
- ε(x2x1)≈∣x2∣2∣x1∣ε(x2)+∣x2∣ε(x1)
- εr(x1⋅x2)=εr(x1)+εr(x2)
设x和y的相对误差均为er=0.001,则x⋅y的相对误差为多少。
- er(x)=0.001<εr(x)
- er(y)=0.001<εr(y)
- er(xy)<εr(xy)=εr(x)+εr(y)
- 故er(x⋅y)约为0.002
设x和y的绝对误差均为e=0.001,则x−y的绝对误差为多少。
- e(x)=0.001<ε(x)
- e(y)=0.001<ε(y)
- e(x−y)<ε(x−y)=ε(x)+ε(y)
- 故e(x−y)约为0.002
设x=1.24是由精确值x∗经过四舍五入得到的近似值。
问
- 绝对误差限ε是多少?
- 相对误差限εr是多少?
解
- 1.235≤x∗<1.245
- ⇒ε=0.005
- ⇒εr=1.240.005≈0.4
结论
凡是由精确值经过四舍五入得到的近似值,其绝对误差限等于该近似值末位的半个单位。
计算球的体积(V=34πr3)要使相对误差限εr(V)=1001,问εr(r)应为多少。
解
由题意得
- εr(V)=Vε(V)=1001
由误差估计式得
- ε[V(r)]=4πr2⋅ε(r)
综上可得
- 1001=Vε(V)=34πr34πr2ε(r)=3rε(r)
- εr(r)=rε(r)=3001
如果x的绝对误差限e是它的某一数位的半个单位(比如四舍五入这种情况),并且从x左起第一个非零数字到该数位共有n位,则称这n个数字为x的有效数字。即x近似x∗时有n位有效数字。此外,我们认为精确值的有效数字有无穷多位。
数x总可以写成
x=±0.a1a2…ak×10m
其中a1=0、{a2,⋯,ak}∈[0,9],该形式即称为标准浮点数。
当且仅当等价于充要条件
x作为x∗的近似值,具有n位有效数字,当且仅当
∣x∗−x∣=e≤21×10m−n
- m:近似值x写成标准浮点数时的指数位置取值。
- n:近似值x的有效数字位数。
该方程反映了绝对误差e和有效位数n之间的关系。
求相对误差限
若x有n位有效数字,则其相对误差限为:
εr=2a11×101−n
- a1:近似值x写成标准浮点数后,小数点后第一个非0数字。
- n:近似值x取得的有效数字位数。
求有效数字
若x的相对误差限满足:
εr=2(a1+1)1×101−n
则x至少有n位有效数字。
使x∗=2的近似值的绝对误差e小于10−5。
问
- 应取几位有效数字n?
- 近似值x的取值为多少?
解
- 2=1.414⋯=0.141⋯×101⇒m=1
- 令∣2−x∣≤21×10m−n=21×10−5
- 得n=6,x=1.41421。
x=0.01458663为真值x∗=0.01451845的近似,则x的有效数字位数n为?
解
x=0.1458663×10−1 ⇒ m=−1
e=0.00006418=0.6418×10−4≤21×10m−n=21×10−3
综上可得n=2
即计算过程中,舍入误差不增长。
数值计算若干原则
- 避免两个相近的数相减(会造成有效数字丢失)
- 防止大数吃掉小数
- 绝对值过小的数不宜做除数
- 简化计算程序,减少计算次数
- 选用数值稳定性好的算法
为减少舍入误差影响,应将10−99改写为
110−99×10+9910+99=10+991
递推公式{y0=2yn=10yn−1−1n=1,2,…,如果取y0=2≈1.41作计算
(1)则计算到y10时,误差为多少?
(2)计算公式数值稳定吗?
解
e0=2−1.41e1=10e0e2=10e1=102e0…e10=1010e0=1010(2−1.41)
明显,随着迭代次数增加,误差越来越大,故计算公式是不稳定的。
计算(2−1)6的近似值,取2=1.414,在4位计算机上,试问以下哪种算法误差较小。
①:(2+1)61
②:(3+22)31
解
①:(2−1)6=[2+1(2−1)(2+1)]6=(2+1)61
②:(2+1)61=[(2+1)2]31=(3+22)31
设初始误差ε=2−1.414<1
①:(C1+ε)61)
②:(C2+2ε)31
可以看出ε61>>8ε31
故②方法更好。