实验名称: 实验一 算法的误差与稳定性 指导教师: 数值分析实验组 实验时数: 2 实验设备:安装了Matlab 、C ++、VF 软件的计算机
实验日期:2014年 月 日 实验地点: 第五教学楼北802或902 实验目的:
掌握舍入误差的概念,理解数值稳定性。
实验准备:
1. 在开始本实验之前,请回顾教科书的相关内容;
2. 需要一台准备安装Windows XP Professional 操作系统和装有数学软件的计算机。
实验内容及要求
B 题 舍入误差在数值计算中是一个很重要的概念,在实际计算中,如果选用了不同的算法,由于舍入误差的影响,将会得到截然不同的结果,因此,选取数值稳定性的算法,在数值计算中是十分重要的。
对0,1,2,,20n = 计算定积分
1
10d -=⎰n x n y x e x 分别采用下面两个递推公式进行计算,并比较实验结果分析出哪个算法是稳定,并给出具体原因。
递推公式(1)11(1,2,,20)n n y ny n -=-= ;
递推公式(2)11(20,19,,1)n n y y n n
--== 。
说明:实验过程应包括对问题的简要分析、求解方法、求解步骤、程序及其必要的图表等内容。
实验过程:
本实验所选题为B 题
实验分析:
方案1 1(1,2,3....20)n n y ny n =-=当=0时1
11001x y e dx e --==-⎰递推公式为
1101(1,2,,20)1n n y ny n y e --=-=⎧⎪⎨=-⎪⎩
方案2 11(20,19,,1)n n y y n n --=
= 当0<x<1时,11n n n x e x e x --≤≤则
,则111
11000n n x n dx dx dx x
e x e x --≤≤⎰⎰⎰即11(1)1n e n n y ≤≤++
取递推初值2011111[](1)2(201)20142e e
y ≈+=+++
递推公式为 1201(20,19,,1)11(1)42n n y y n n y e --⎧==⎪⎪⎨⎪=+⎪⎩
n
Y1 Y2 1
0.63212055882856 0.63212055882856 2
0.36787944117144 0.36787944117144 3
0.26424111765712 0.26424111765712 4
0.20727664702865 0.20727664702865 5
0.17089341188538 0.17089341188538 6
0.14553294057308 0.14553294057308 7
0.12680235656152 0.12680235656153 8
0.11238350406936 0.11238350406930 9
0.10093196744509 0.10093196744560 10
0.09161229299417 0.09161229298962 11
0.08387707005829 0.08387707010385 12
0.07735222935878 0.07735222885769 13
0.07177324769464 0.07177325370770 14
0.06694777996972 0.06694770179987 15
0.06273108042387 0.06273217480180 16
0.05903379364190 0.05901737797298 17
0.05545930172957 0.05572195243238 18 0.05719187059731 0.05272680864948
19
-0.02945367075154 0.05091744430931 20
1.55961974427919 0.03256855812313
实验结果分析: 由递推公式(1)知当y1(1)=1-exp(-1)时,yn 应当为精确解,递推公式的每一步都没有误差的取舍,但计算结果18(*)y =0.05719187059731>17y (*)=0.05545930172957
y19(*)出现负值。
由此看出当n 较大时,用递推公式(*)中的(*)n y
近似yn 是不正确的。
主要原因是初值y1=0.63212055882856不是精确值,设误差1((*))e y ,由递推公式(*)知
1((*))((*)),n n e y ne y -=-
则有 211((*))10((*))(2(*))(10)((*))n n n e y e y n e y e y -=-=-=-
误差1((*))e y 的(10)n -倍,由此可见,递推公式计算的误差不仅取决于初值的误差,公式的精确性,还依赖于误差的传递即递推计算的稳定性。
由递推公式(**)20y ≈0.032568558123130
n y 为估计值,并不精确,有201()21e e y e -≤而由1)1(()n n e y e y n -=得01()()n n e y e y n
=-误差e(y0) 随递推公式逐步缩小。
综上所述,在递推公式中,数值计算方法是非常重要的,误差估计,误差传播及递推公式的稳定性都会直接影响递推结果
实验总结(由学生填写): 通过本次试验对算法的误差与稳定性有了更深层的理解,数值分析中数值的计算方法是非常重要的,误差的估计,误差的传播以及递推公式的稳定性都会直接影响递推结果本次的实验的难点在于怎样估计初值以及怎样在编程序中找出递推公式的递推关系。