资源描述:
《c 数值分析上机实验.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、第一章舍入误差和数值稳定性1:例题利用递推公式计算定积分dx方法一:利用递归公式儿=匚—‘儿-1(n=0,l,2,3・・•・・•・20)11方法二利用递推公式儿-1=呢一7儿(门=0,1,2,3….…20)这两种方法的思路是:1:逆代初值2:根据范围来确定循环次数3:根据逆代函数确定逆代形似4:如何排版1.1:方法一的C语言实现:#inelude#include#includeinain()floaty0=log(6.0)-log(5.0),yl;intn二1;printf(,,y[0]=%-20f,,,y
2、0);while(*=20){yl=1.0/n-5*y0;printf(,,y[%d]=%-20f,,,n/yl);yO=yl;n++;if(n%3==0)printf(nJ;}y[0]=0.182322y[3J=0.043138y[6]=0.024428V(91=0.004076y[121=仁629237y[151=-200.772052y[181=2509?.828993y[ll=0.088392y[4J=0.034310y[71=0.020719y[10]=0.079618y[13J=-8.019263y[161=1003.922745y[191=
3、-125489.087993y[2J=0.058039y[51=0.028448y[81=0.02140?y[111-0.307181y[141=40.167745y[171=-5019.554824y[201=627445.4796881.2:方法二的c语言实现:#inelude#includemain()floaty20=(l/105.0+1/126.0)/20,yl9;intn二20;printf(Hy[20]=%-20f,,,y20);while(n>0){yl9=1.0/(5*n)-y20/5;printf(,,y
4、[%d]=%-20f,,/n-l,yl9);y20=yl9;n-;if(n%3==0)printf(HH);}y[201=0.000873y[171=0.009399y[14J=0.011229y[111=0.014071y[81=0.018837y[5]屯.028468y[21=0.058039y[19]=0.009825y【16#0.009885y[131-0.012040y[10]=0.015368y[?]=0.021233y[41=0.034306y[l]=0.088392y[181=0.008561y[15J=0.010523y[121=0.0
5、1297?y[9J=0.016926y[6]屯.024325y[3)=0.043139y[0]=0.182322通过两种计算方式可以看出第二种的算法收敛2:课后习题13根据pn=(10/5)*pn.1-pn_2可知道pn的相对误差限为en=(10^)*en.1-en_2n二23•……根据书中的例题方法很难比较误差是否增大,现在经过以下递归程序可以看出其结果:#ineludedoublefact(intn);voidmain(){intn;doubleresult;printf("lnputn:");scanf(”%d“,&n);result
6、=fact(n);讦(result==-l)printf(Hlnputerror");/*n的值输入不正确*/elseprintf("wc=%.5f”,result);}doublefact(intn){讦(n<2)return-1;elseif(n==2)/*终止条件*/return0.005;/*起始误差为0.005*/elsereturn(10.0/3)*fact(n-l)-fact(n-2);/*调用递归*/Inputn:4Lc=3.38389rpressanykeytocontinue结果表明当n二4时课差要大于时的课差,所以不稳定。17:编写
7、程序如下#includevoidmain(){floati,j,n;floatsuml=0;floatsum2=0;floatzhi,wcl,A/c2;for(i=2;i<=100;i++){suml+=l/(i*i-l);}printf("suml=%f^suml);for(j=100;j>=2;j-){sum2+=l/(j*j-l);}printf(,,sum2=%f",sum2);zhi=l.O/2*(3.O/2-(l.O/n)-l.O/(n+l));printf(,,zhi=%f,,,zhi);wcl=zhi-suml
8、;wc2=zhi-sum2;printf("wcl=