实验一误差传与算法稳定性
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一:误差传播与算法稳定性
一:实验内容
考虑一个简单由积分定义的序列: 显然0,1,2,.n I n >=L 当n=1时,1
110
1/x I xe dx e -==⎰
。而对于2n ≥时,利用分步积分
易得:
另一方面,我们有1
1
1
1/(1)n x n n I x e dx x dx n -=
≤=+⎰
⎰。
由以上递推关系,我们可以得到计算序列{}n I 的两种方法。 (Ⅰ) 11/I e =,111/,n 1,2,3,..n n I I -=-=⋯ (Ⅱ) 0N E =, 11,,1,2,,3,2n
n E E n N N N n
--=
=--L 二:实验要求及实验结果
(1) 分别用算法(Ⅰ)、(Ⅱ)计算,并且在计算机中分别采用5位、6位和7位有效数字,
请判断哪种算法能给出更精确的结果。 实验过程:
ⅰ)编写MA TLAB 程序如下:
a= input ('请输入有效位数a:'); %设定有效数字位数 syms n In
In=vpa((exp(-1)),a) %vpa 设定结果有效数字 for n=2:10; In=vpa((1-n*In),a) %循环计算
End
运行文件,输入有效数字a 分别为5位、6位和7位,得到运算结果如下表格所示:
ⅱ)编写MA TLAB 程序如下: function In=NO1B
b= input ('请输入有效位数b:'); syms n En
En=vpa(0,b) for n=10:-1:2;
En=vpa(((1-En)/n),b) End
由以上两种算法所得到的数据可知,对算法11/I e =,111/,n 1,2,3,..n n I I -=-=⋯从8I 开始,结果变得无规律,各个有效位数计算结果都不一样,这是因为随着计算的n 增大,误差会越来越大。而对0N E =, 11,,1,2,,3,2n
n E E n N N N n
--=
=--L ,5位、6位和7位结果相近,随着有效数字位数的增加,结果越来越精确。
(2) 两种算法的优劣,与你第一感觉是否吻合。请从理论上证明你的实验得出的结果,
解释实验得到的结果,算法(Ⅰ)中的计算误差为1e ,由1I 递推计算N I 的误差为n e ;算法(Ⅱ)中的N I 计算误差为N ε,由N I 向前递推计算n I (n N <)的误差为n ε。如果在上述两算法中都假定后面的计算不再引入其它误差,试给出n e 与1e 的关系和
n ε与N ε的关系。
ⅰ)**
11|||||(1)(1)|n n n n n e I I nI nI --=-=---11(1)!||n n |e |n e -===-L 。
ⅱ)因为*
1111||(1)(1)||N N N N I I N N N
εε-=
---=由此类推,对n ||||(1) (1) N N n εε= -+n N 。 (3) 算法(Ⅰ)中的1e 会很小,当n 增大时,n e 的变化趋势如何?算法(Ⅱ)中N ε通常相对 较大,当n 减小时,误差n ε又是如何传播的?也就是说比较一下上述两个算法,当某一步产生误差后,该误差对后面的影响是衰减还是扩张的。 ⅰ)算法(Ⅰ)中,** 11|||||(1)(1)|n n n n n e I I nI nI --=-=---11(1)!||n n |e |n e -===-L 。 当1e 很小时,随着n 的增大,n e 以阶乘为系数迅速增大。所以当某一步产生误差后,该误差最后面的影响是扩张的。 ⅱ)算法(Ⅱ)中1 ||||(1) (1) N N n εε= -+n N ,虽然开始N ε很大,但是随着n 的增大, n ε以阶乘为除数迅速减小。所以当某一步产生误差后,该误差最后面的影响是衰减的。 (4) 通过理论分析与计算实验,针对(Ⅰ)和(Ⅱ)的稳定性给出你的结论。 ⅰ)算法(Ⅰ)中,** 11|||||(1)(1)|n n n n n e I I nI nI --=-=---11(1)!||n n |e |n e -===-L 。 当某一步产生误差后,该误差最后面的影响是扩张的,所以该算法是不稳定的。 ⅱ)算法(Ⅱ)中1 ||||(1) (1) N N n εε= -+n N ,虽当某一步产生误差后,该误差最后面 的影响是衰减的,所以该算法是稳定的。