计算方法-误差
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
e( y*) y y* f (x) f (x*)
f ' ( )(x x*) f ' (x*) e(x*)
14
得到误差传递公式(估计式): 绝对误差传递系数
e( y*) f ' (x*) e(x*)
相对误差传递系数
er ( y*)
x* f
f (
' (x*) x*)
er
(
x*)
亦称条件数cond
11
(3) 有效数字: 将 x*写成小数形式
x* 10k 0.a1a2 an , a1 0
若 x*的绝对误差界
0.510kn
则称 x*为 x 的具有 n 位有效数字的近
似值。或有
r
|
x*
|
0.5 10kn 10k 0.a1
~ 110n
12
• 三看举例2: 1 x 1
x=1.234567887654321e-15
r ( y*) | ( y-y*)/y* | 1.58057913435369 r1( y*) | ( y-y*)/y | 0.61249008538913
16
对于二元函数 y f ( x1, x2 ), y* f ( x1*, x2*) e( y*) y y* f ( x1, x2 ) f ( x1*, x2*)
>> eps ans =
2.220446049250313e-016
5
• 实数的浮点数表示:
IEEE浮点数标准规定用 64 bits (8 bytes)来存储 一个实数(双机器精度)
符号位 指数位
尾数位
指数部分:
6
(1)正规化的数:当
设 : E F 1023
其中: (2)非正规化的数:当
(3)Inf:当
*
er
(
x2
*)
又如,对于 y x12 x22
y x1 2x1 ,
y x2 2x2 ,
所以:
( y*) 2 | x1* | ( x1*) 2 | x2* | ( x2*)
r ( y*) |
2( x1*)2 y*
| r ( x1*)
|
2( x2*)2 y*
| r ( x2*)
2 max{ r ( x1*), r ( x2*)}
1 22
x2 2!
1 x2 3 x3 35 x4
22 2! 23 3! 24
4!
6.172839438271605e-16
3 23
x3 3!
35 24
x4 4!
6.1728394382716030948026634659e-16 3
• 举例3-1:计算机的精度限制(舍入误差)
-- 在matlab中运行计算:
k wn 1 k wn1
dx
dt dy
dt
mg
忽略的风的影响 等其他次要因素 带来的误差就是 模型误差。
-- 其阻力系数
k 1C A
2
中的风阻系
数 C 一般是通过实验观测得到的,并不是精
确的值,所含的误差就是观测误差。重力加速
度 g 的值也有观测(参量)误差。 2
• 举例2:截断误差和舍入误差
|
er*( x)
|
|
x |
x* x* |
|
r 使得
r
x x* x*
则称 Leabharlann Baidur是 x*的相对误差界(限) 。
10
• 再看举例2: 1 x 1
>> x=1.234567887654321e-15; 精确值: y = 0.000000000000000
617283943827160 309480266346594
1.021405182655144e-014
(3) 绝对值太小的数不宜作除数
(4) 警惕大数“吃掉”小数
>> x=1e16; y=1;
>> x+y
ans =
1.000000000000000e+016
>> vpa(x+y,20)
ans =
10000000000000000.
若D1* 10.02, D2* 4.95,则
S* 75.89789999 59.61, (S*) 1.5645
4
相对误差r (S*) (S*) / | S* | 0.0262456 2.7%
20
也可以直接用估计式来估计相对误差,根据
r(
y*)
|
( f x1
)*
|
|
x1 * y*
| r ( x1*)
I n 1
I* n1
|
n
(
I
* n1
)
n(n
1)
(
I
* n2
)
n! (I0*)
(
I
* 20
)
20!
(
I0*
)
(2.4329e+
018)(2.
3315e
-
015)
5600
算法2的误差估计:
In1 (1 In ) / n, (n 40,39, ,21) ,
~(
I
* n1
)
|
I n 1
I* n1
||
对于D1* 9.95, D2* 5.1,则 S* 60.47
估计式估计的相对误差r (S*) 0.02819 3%
21
§4. 应注意的几个原则
(1) 算法要稳定
举例6:计算
I20 e1
1 x20exdx
0
算法1:In 1 nIn1,(n 1,2, ,20),
算法2:In1 (1 In ) / n,(n N, N 1, ,21)
0.30e-31 0.49e-15 15位
13
§3. 误差的分析
f 输入 x 初始误差e(x*),er (x*)
输出 y f (x) 结果误差e( y*),er ( y*)
y f (x), y* f (x*)
e( y*) ?e(x*) ,er ( y*) ? er (x*) 对于普通的函数(设一阶导数光滑)有:
x 4 1 3
y 3x z 1 y
按公式,显然,理论上 z 的精确值是0。 不过计算机的计算结果却是非0的:
>> z z=
2.220446049250313e-016
4
• 举例3-2:又如:
%% 例3-2: >> 1.2-0.2-1 ans =
0 >> 1.2-1-0.2 ans =
-5.551115123125783e-017 >>
Why? s=(1-s)/n;
end
end
>> s
>> s
s =5642.041639996838
s = 0.04554488407582 22
算法1的误差估计:
In 1 nIn1,(n 1,2, ,20) ,
( I n* )
|
In
I
* n
||
(1
nI n 1 )
(1
nI
* n1
)
|
n
|
第一章 误 差 §1. 误差的来源
实际 问题
数学 模型
(1) 模型误差, (2) 观测/参量误差, (3) 截断/方法误差, (4) 舍入误差。
数值 方法
计算机 计算
1
• 举例1:模型误差和观测误差
-- 高尔夫球的抛射轨迹(考虑空气阻力, 但不空考虑风的影响)
m m
d2x dt2 d2y dt2
I0 e1(e 1) = 0.63212055882856
精确值: I20 0.04554488407582
算法1的计算结果:
算法2的计算结果:
>> s=0.63212055882856;
>> s=0; %或 s=-1000;
>> for n=1:20
>> for n=40:-1:21
s=1-n*s;
9
§2. 绝对误差、相对误差与有效数字 若 x 是精确值, x* 是其近似值。
(1) 绝对误差:e * (x) (x x*)
若存在已知值 使得 | e * (x) || x x* |
则称 是 x* 的绝对误差界(限) 。
(2)
当 x* 0 时,定义相对误差:er*(x)
若存在已知值
(1
In )
/
n
(1
I
* n
)
/
n
|
1 n
|
In
I
* n
|
1 n
~(
I
* n
)
1 n(n
1)
~(
I
* n1
)
(n
1) N!
!
~(
I
* N
)
~(
I
* 20
)
20! 40!
~(
I
* 40
)
(2.9818e-
030)(1e3)
3e
-
027
23
(2) 相近两数避免相减
>> x=3.14159265358979; >> y=3.14159265358980; >> y-x ans =
举例4:计算 tg(1.57079),tg(1.57078)
x 1.57079 , x* 1.57078
(x*) | x x* | 0.00001
r (x*) | (x x*) / x* | 6.410-6
| f ' (x*) | 1 3.8 109
c os2 ( x*)
15
( y*) | f ' (x*) | (x*) 3.8 104
>> sqrt(1+x)-1 绝对误差 相对误差 有效数字位数
y* =0.6661338147750939e-15
0.49e-16 0.8e-1
1位
>> x/(sqrt(1+x)+1)
y1*=0.6172839438271602e-15
0.11e-31 0.18e-15 15位
>> 0.5*x
y2*=0.6172839438271605e-15
18
• 四看举例2: 1 x 1
x=1.234567887654321e-15
>> sqrt(1+x)-1
误差传递分析:
y*
=0.6661338147750939e-15
(1)y1 1 x (x1 x2 )
>> x/(sqrt(1+x)+1)
er ( y1) er (x) eps
y1*=0.6172839438271602e-15 (2)y2 sqrt( y1)
| x * f ' (x*) / f (x*) |
1
9.6 104
s in( x*) c os (x*)
r ( y*) 0.6
y = tan(x) 1.580579134162482e+ 005
y* = tan(x*) 6.124900853150305e+ 004
( y*) =| y-y* | 9.680890488474515e+ 004
19
举例5:教材第7页例4
S
4
( D12
D22 )
f (D1, D2 )
(D1*) 0.05cm ,
r
(
D1*
)
0.05 10 0.05
0.00503
(D2*) 0.1cm ,
r
( D2* )
5
0.1 0.1
0.02041
(S*)
|
2
D1*
| (D1*)
|
2
D2*
|
( D2* )
,尾数不为 0 时
(4)NaN:当
,尾数为 0 时
7
实数 的浮点数表示为 一般情况下: 机器精度 的定义为使下列不等式成立的最小正数:
所以:
8
• 数值计算方法的研究主要讨论
实际 问题
数学 模型
数值 方法
计算机 计算
➢ 截断(方法)误差的大小—收敛性。 ➢ 舍入误差的影响—稳定性。
保证数值解的精度!
>> sqrt(1+x)-1
绝对误差 相对误差
y* =6.661338147750939e-016 0.49e-16 0.08
>> x/(sqrt(1+x)+1) y1*=6.172839438271602e-016 1.1e-31 0.18e-15
>> 0.5*x
y2*=6.172839438271605e-016 3.0e-31 0.49e-15
-- 计算
算法 (1) 1 x 1
x
(2) 1 x 1
1 x 1 , x=1.234567887654321e-15
截断误差
x的舍入误差导致 计算结果的误差
0
6.661338147750939e-16
0
6.172839438271602e-16
(3) 1 x 1 1 x
2
(4)
1x 2
(
f x1
)
*
x1 y
* *
er
(
x1*)
(
f x2
)
*
x2 y
* *
er
(
x2
*)
17
例如,对于加法 y x1 x2 y y 1, 所以: x1 x2
e( y*) e( x1*) e( x2*)
er ( y*)
x1 * x1 * x2
* er ( x1*)
x1
x2 * * x2
|
( f x2
)*
|
|
x2 * y*
| r
( x2 *)
应用于本例,有
r (S*)
|
2( D1* )2 (D1*)2 (D2*)2
| r (D1*) |
2( D2* )2 (D1*)2 (D2*)2
| r (D2*)
2.64567εr (D1*) 0.64567εr (D2*) 0.026486 2.7%
>> 0.5*x
f (x) er ( y2 ) 0.5er ( y1) 0.5eps
y2*=0.6172839438271605e-15
er ( y)
y2 y2
1
er
(
y2
)
1 y2
1
er
(1)
(3)y y2 1 (x1 x2 )
0.5 eps 1 eps
y2 1
y2 1
0.8 1015 eps
f ( x1, x2 ) f ( x1*, x2 ) f ( x1*, x2 ) f ( x1*, x2*)
f
(1, x2 )
x1
( x1
x1*)
f
( x1*,2 )
x2
( x2
x2*)
f
( x1*, x2*) x1
e * ( x1)
f
( x1*, x2
x2*)
e * (x2 )
er
(
y*)