毕节学院实验报告实验名称:误差分析、误差传播及算法稳定性实验报告序号:1组别姓名朱海涛同组实验者周礼伟实验项目计算110eenxnIxdx(0,1,)n并估计误差实验日期2012年9月26日实验类别□√1、验证性实验或基础性实验;□2、综合性实验□3、设计性实验;□4、创新性实验和研究性实验;教师评语实验成绩指导教师(签名)赖志柱年月日实验目的:通过本实验对求解问题的算法进行好坏判断有一个初步了解,并加强对设计一个好算法的理解,体验数值计算稳定性,从而了解数值计算方法的必要性,体会数值计算的收敛性与收敛速度。实验任务与要求:计算110eenxnIxdx(0,1,)n并估计误差(1)建立若干个(不少于两个)计算公式;(2)分析计算公式的理论误差;(3)编写程序(推荐MATLAB)实现(1)中的计算公式、输出结果并比较实际误差;(4)任选正整数mn,要求既从mI计算nI,又从nI计算mI,并分析您的结果。这里0m且9n。小组分工合作说明:实验过程及内容:解:由分部积分可得计算nI的递推公式1111001,1,2,e1.nnxInInIedxe…….(1)若计算出0I,代入(1)式,可逐次求出12,,II…的值。要算出0I就要先算出1e,若用泰勒多项式展开部分和21(1)(1)1(1),2!!kek…并取k=19,用4位小数计算,则得10.3679e,截断误差14711|0.3679|108!4Re.计算过程中小数点后第5位的数字按四舍五入原则舍入,由此产生的舍入误差这里先不讨论。当初值取为000.6321II时,用(1)式递推的计算公式为010.6321A1nnIInI(),n=1,2,…。计算结果见表1的nI列。用0I近似0I产生的误差000EII就是初值误差,它对后面计算结果是有影响的.从表1中看到18I出现负值,这与一切0nI相矛盾。实际上,由积分估值得111110001011(im)(max)11xnnnxxeemexdxIexdxnn(2)因此,当n较大时,用nI近似nI显然是不正确的。这里计算公式与每步计算都是正确的,那么是什么原因合计算结果出现错误呢?主要就是初值0I有误差000EII,由此引起以后各步计算的误差nnnEII满足关系1,1,2,nnEnEn….由此容易推得0(1)!nnEnE,这说明0I有误差0E,则nI就是0E的n!倍误差。例如,n=19,若401||102E,则190||19!||2EE。这就说明8I完全不能近似19I了。它表明计算公式(A)是数值不稳定的。我们现在换一种计算方案。由(2)式取n=19,得11912020eI,我们粗略取1*9911()0.068421010eII,然后将公式(1)倒过来算,即由*9I算出*8I,*7I,…,*0I,公式为*19**10.0342()1(1),198nnIBIInn,1,…,1;计算结果见表1的*nI列。我们发现*0I与0I的误差不超过410。记**nnnEII,则**01||||!nEEn,*0E比*nE缩小了n!倍,因此,尽管*9E较大,但由于误差逐步缩小,故可用*nI近似nI。反之,当用方案(A)计算时,尽管初值0I相当准确,由于误差传播是逐步扩大的,因而计算结果不可靠。此例说明,数值不稳定的算法是不能使用的。程序如下:functionx11=facto(n)%这个函数的功能是求n的阶乘;x11=1;ifn==0x11=1;elsefori=1:nx11=x11*i;endendfunctione_1=telor(k)%这个函数的功能是求e^(-1);用泰勒多项式展开式进行计算的,%k是代表展开到第k+1项e_1=1;ifk==1e_1=1;elsefori=1:ke_1=e_1+(-1)^i/facto(i);endendfunctionjifen(m)I0=1-telor(19);%第一种算法I(1)=I0;fori=1:mI1=1-i*I0;I(i+1)=I1;I0=I1;end%第二种算法Im=(1/2)*(1/(m+1)+telor(19)/(m+1));B(1)=Im;fori=1:mIn=(1/(m+1-i))*(1-Im);B(i+1)=In;Im=In;enddisp('n第1种算法第2种算法');fori=0:(length(B)-1)fprintf('%4d%33.4f%12.4f|\n',i,I(i+1),B(m+1-i));end在Matlab命令窗口输入如下命令即可得到如表1的结果。jifen(19)表1计算结果n第1种算法第2种算法00.63210.632110.36790.367920.26420.264230.20730.207340.17090.170950.14550.145560.12680.126870.11240.112480.10090.100990.09160.0916100.08390.0839110.07740.0774120.07180.0718130.06690.0669140.06270.0627150.05900.0590160.05550.0557170.05720.052718-0.02950.0508191.55960.0342