如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
韩山师范学院数学与应用数学系课程:数值计算方法第页共NUMPAGES5页实验名称:实验一误差与算法优劣日期:2012-09-19【实验目的】1、理解截断误差对数据精度的影响。2、理解舍入误差所引起的数值不稳定性,并初步掌握如何消除或减小误差。3、了解如何简化算法步骤,减少运算次数。【实验内容】一、利用公式:,编程求π的近似值,分别取10000项与20000项进行计算,将计算结果与π的值3.1415926…进行比较,得出其绝对误差。二*、一元二次方程求根计算方案比较编程求方程的根,其中(1)分别采用单精度和双精度存放a、b、c和方程的根,比较两个根的结果有什么不同,为什么?(2)采用如下两种计算方案。方案I方案II(带*是选做内容)三、编程计算多项式的值。方法1:直接计算。方法2:秦九韶算法用以上两种方法分别计算多项式在x=0.7处的值。比较两种方法的计算量。四、编程计算9255的值方法1:直接逐个相乘方法2:9255=9•92•94•98•916•932•964•9128比较两种方法的计算量。【实验结果】第一题:10000项:PI=3.14149265359003e=9.999999975862650e-005er=3.183098854154750e-00520000项:PI=3.14154265358982e=4.999999996835314e-005er=1.591549429911603e-005第二题:、单精度:x1=500000000x2=0;双精度:x1=500000000x2=1;、方案一:x1=500000000x2=0;方案二:x1=500000000x2=1;第三题:直接计算:k=21p=-18.0718秦九韶算法:k=6p=-18.0718【结果分析】第一题:从以上数据可知,10000项的误差比20000项的大,20000项求出的结果更接近,也就是说,项越多,截断误差越小,结果越精确。第二题:用单精度和双精度求得的两个根中一个相等,一个不相等;因为用单精度求得的一个根是对的,另一个根是错的,而双精度的两个根都是对的;采用方案一求得的根一个是正确,一个错误,而采用方案二求得的两个根都是对的;第三题:由两种算法得出的结果都是-18.0718,但是直接算法要经过21次乘法才得到这个结果,而用秦九韶算法则只需6次就可以求出,所以秦九韶算法比直接算法过程更简便。【教师评语和成绩】成绩:指导教师:日期:附录:第一题:10000项:x=1;t=-1;fori=2:10000x=x+t*1/(2*i-1);t=t*(-1);endPI=x*4;e=pi-PI;er=e/pi;formatlong20000项:x=1;t=-1;fori=2:20000x=x+t*1/(2*i-1);t=t*(-1);endPI=x*4;e=pi-PI;er=e/pi;formatlong第二题:单精度:a=1;b=-(5*10^8+1);c=5*10^8;a=single(a);b=single(b);c=single(c);disc=b*b-4*a*c;p=-b/(2*a);q=sqrt(disc)/(2*a);x1=p+q;x2=p-q;双精度:a=1;b=-(5*10^8+1);c=5*10^8;a=double(a);b=double(b);c=double(c);disc=b*b-4*a*c;p=-b/(2*a);q=sqrt(disc)/(2*a);x1=p+q;x2=p-q;方案一:a=1;b=-(5*10^8+1);c=5*10^8;a=single(a);b=single(b);c=single(c);disc=b*b-4*a*c;p=-b/(2*a);q=sqrt(disc)/(2*a);x1=p+q;x2=p-q;方案二:a=1;b=-(5*10^8+1);c=5*10^8;a=single(a);b=single(b);c=single(c);disc=b*b-4*a*c;p=-b/(2*a);q=sqrt(disc)/(2*a);ifb<0.0x1=p+q;elsex1=p-q;endx2=c/(a*x1);第三题:直接算法:a=[7,-7,1,3,-5,2];x=0.7;P=-20;k=0;fori=1:6tmp=a(i);forj=1:itmp=tmp*x;k=k+1;endP=P+tmp;en