第一章 误差与范数
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.1 误差的来源
例1.1.1 用差商h
a f h a f a f )
()()(-+≈
'求x x f ln )(=在3=x 处导数的近似值.取
1.0=h ,1000.0=h ,h =0.000 000 000 000 001和h =0.000 000 000 000 000 1
分别用MATLAB 软件计算,取十五位数字计算.
解 在MATLAB 工作窗口输入下面程序
>>a=3;h=0.1;y=log(a+h)-log(a);yx=y/h
运行后得
yx = 0.32789822822991 将此程序中h 改为0.000 1,运行后得
yx = 0.33332777790385
后者比前者好.再取h = 0.000 000 000 000 001,运行后得
yx = 0.44408920985006
不如前者好.取h = 0.000 000 000 000 000 1,运行后得
yx = 0
算出的结果反而毫无价值.
例1.1.2 分别求方程组b AX =在下列情况时的解,其中A ⎪⎪⎭
⎫
⎝⎛=0111
11
.. (1)⎪⎪⎭
⎫ ⎝⎛=22b ;(2)⎪⎪⎭
⎫
⎝⎛=0122.b . 解 (1) 首先将方程组b AX =化为同解方程b A X 1
-=,然后在MATLAB 工作窗口
输入程序
>> b=[2,2]';A=[1,1;1,1.01]; X=A\b
运行后输出当⎪⎪⎭⎫ ⎝⎛=22b 时,b AX =的解为⎪⎪⎭
⎫
⎝⎛=02X ;
(2)同理可得,当⎪⎪⎭⎫ ⎝⎛=0122.b 时,b AX =的解为⎪⎪⎭
⎫
⎝⎛=11X .
例1.1.3 计算e 的近似值. 解 泰勒级数
e +++++++=!!4!3!21432 n x x x x x n x
)(∞<<-∞x , 取1=x ,得
e +++++++=!1!41!31!2111
n . (1.2)
这是一个无限过程,计算机无法求到精确值.只能在(1.2)取有限项时计算,再估计误差.如果取有限项
!!!!)(
n s n 1
413121111++++++=
作为e 的值必然会有误差,根据泰勒余项定理可知其截断误差为
e !)1()1(
+=
-n e s n θ
)10(<<θ.
如果取(1.2)的前九项,输入程序
>> n=8; s=1;S =1; for
k=1:n s=s*k; S=S+1/s, end s, S,
R=3/(s*(n+1)) 或
>>S1=1+1+1/2+1/(1*2*3)+1/(1*2*3*4)+1/(1*2*3*4*5)+1/(1*2*3
*4*5*6)+1/(1*2*3*4*5*6*7)+1/(1*2*3*4*5*6*7*8),
R1=3/(1*2*3*4*5*6*7*8*9)
运行后结果
S = R =
2.71827876984127 8.267195767195768e-006 因为截断误差为
e ),10(101968.267!93
!)18()1(6-8<<⨯≈<+=
-θθ
e s 所以e 的近似值e ≈≈+++++++
+=!
81
!71!61!51!41!31!2111)1(8 s 2.718 28.
1.2 误差和有效数字
例1.2.1 取282.718作为e 的四舍五入近似值时,求其绝对误差和相对误差. 解 在MATLAB 工作窗口输入程序
>>juewu=exp(1)-2.71828
运行后输出结果为
juewu = 1.828 459 045 505 326e-006
例1.2.2 计算
⎰π20
sin x x
d x 的近似值,并确定其绝对误差和相对误差.
解 因为被积函数x
x
sin 的原函数不是初等函数,故用泰勒级数求之.
++-+-=!
!!!sin 9 75 38
6x x x x x x 421 )(∞<<-∞x , (1.5) 这是一个无限过程,计算机无法求到精确值.可用(1.5)的前四项!
!!75 36
x x x -+-421代替被积函数
x
x
sin ,得 ⎰π
=20
sin x x y d ⎰
π
≈20(x !
!!14275 36
x x x -+-)d x =!
7)2(!5)2(!3)2(27
5
375 3⋅π
-⋅π+⋅π-π=y ˆ. 根据泰勒余项定理和交错级数收敛性的判别定理,得到绝对误差
!
99)2(ˆ9
⋅<-=π
y
y R = WU , 在MA TLAB 命令窗口输入计算程序如下:
syms x
f=1-x^2/(1*2*3)+x^4/(1*2*3*4*5)-x^6/(1*2*3*4*5*6*7) y=int(f,x,0,pi/2),y1=double(y)
y11=pi/2-(pi/2)^3/(3*3*2)+(pi/2)^5/(5*5*4*3*2)-(pi/2)^7/
(7*7*6*5*4*3*2)
inf=int(sin(x)/x,x,0,pi/2) ,infd=double(inf) WU =(pi/2)^9/(9*9*8*7*6*5*4*3*2), R =infd-y11
因为运行后输出结果为: =y 1.370 762 168 154 49,y
ˆ=1.370 744 664 189 38,=R 1.750 396 510 491 47e-005, WU = 1.782 679 830 970 664e-0054
10-<.
所以,y
ˆ的绝对误差为=ε4
10-,故⎰π
=20
sin x x
y d 7 1.370≈x .y
ˆ的相对误差为 =r ε7
1.37010ˆ4
-=
y ε<0.007 3%.
1.3 误差估计的基本方法
例1.3.4 设计三种算法求方程01522=-+x x 在)3,2(的一个正根*
x 的近似值,并研究每种算法的误差传播情况.
解 为解已知方程,我们可以设计如下三种算法,然后将计算结果与此方程的精确解5.2*
=x 比较,观察误差的传播.
算法1 将已知方程化为同解方程=x 2
215x -.取初值20=x ,按迭代公式
2
1215k k x x -=+
依次计算 ,,,,21n x x x ,结果列入表1–3中.
算法2 将已知方程化为同解方程1
215
+=
x x .取初值20=x ,按迭代公式 1
215
1+=
+k k x x
依次计算 ,,,,21n x x x ,结果列入表1–3中.
算法3 将已知方程化为同解方程1
415
22+-+-=x x x x x .取初值20=x ,按迭代公
式为
1
415
22
1
+-+-=+k k k
k k x x x x x 依次计算 ,,,,21n x x x ,结果列入表1–3中.
我们为这三种算法的计算编写两套MATLAB 程序如下: (1)MATLAB 主程序
function [k,juecha,xiangcha,xk]= liti112(x0,x1,limax) % 输入的量--x0是初值, limax 是迭代次数和精确值x; % 输出的量--每次迭代次数k 和迭代值xk,
% --每次迭代的绝对误差juecha 和相对误差xiangcha , x(1)=x0;
for i=1:limax