第二周上机作业.docx_第1页
第二周上机作业.docx_第2页
第二周上机作业.docx_第3页
第二周上机作业.docx_第4页
第二周上机作业.docx_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第二周上机作业 张丁 3140105614问题叙述:分别以单精度和双精度两种数据类型分析以下问题:第一题: 计算n=10000时 fn=in1i*1i*1i*1i 的值,分别按从i=1到10000 和i=10000到1计算对比误差并分析结果问题分析:首先先要明确:单精度和双精度区别:单精度实数在内存中占32bit 有效数字为67位双精度实数占内存单元为64bit 有效数字为1516位所以从理论上来说,双精度计算精度更高一些。下面使用matlab进行操作:(在没有强调的情况下,matlab默认才用双精度,采用single函数能够定义数据类型为单精度)1. 单精度matlab程序sum1=0;sum2=0;sum1=single(sum1); %转化为单精度sum2=single(sum2); %转化为单精度for x=1:1:10000 sum1=sum1+single(1/(x4); %顺序计算,并且数据类型为单精度endfor y=10000:-1:1 sum2=sum2+single(1/(y4); %倒序计算,并且数据类型为单精度enda=vpa(sum1) %显示小数b=vpa(sum2) %显示小数运行结果:2. 双精度matlab程序sum1=0;sum2=0;for x=1:1:10000 sum1=sum1+1/(x4);%顺序计算endfor y=10000:-1:1 sum2=sum2+1/(y4);%倒序计算enda=vpa(sum1)%显示小数b=vpa(sum2) %显示小数运行结果:又将级数1/n4进行傅立叶展开求得无穷级数趋近于:pi4/90,运用公式:相对误差=abs(真值-计算值)/真值*100%,可求得相对误差整理结果:顺序计算倒序计算顺序相对误差倒序相对误差单精度计算结果1.082322120666503906251.082323193550109863281251.0284e-04%3.7106e-06%双精度计算结果1.0823232337108610323639368289151.08232323371080485507889079599412.5583e-11%3.0773e-12%结果分析:由matlab运算结果可知,双精度的运算结果相较单精度较为精确。符合我们之前的猜想。原因是由于双精度的有效数字更多,在运算过程中所产生的舍入误差较少,所以精度会更高。 而关于倒序相加精度更高的原因是:在进行无穷级数求和时(实际操作中,项数为有限值),以升序对级数进行求和时,通常初始项大于后面的项,不可避免的重复出现大数和小数相加的情况,而在计算机运算处理时,需对阶处理(即取相同的阶运算,小数的尾数会很小),会出现:大数+小数大数。因此,级数求和时,可反向相加;在本题中,由10000到1循环时,相加的数是由小到大的。这样随着相加结果的增大,所加上的数也越来越大,这样就使得相加的两个数相差较小,舍入误差较小。结果也就更加精确。问题叙述:第二题:已知x=10000;按下列公式计算y,哪种更准确?1. 单精度程序:x1=10000;x=single(x1);%转化为单精度sum1=0;sum2=0;sum1=sqrt(x+1/x)-sqrt(x-1/x);%第一种计算方法sum2=2/(x*(sqrt(x+1/x)+sqrt(x-1/x);%第二种计算方法a=vpa(sum1)%显示小数b=vpa(sum2)%显示小数运行结果:2. 双精度程序:x=10000;sum1=0;sum2=0;sum1=sqrt(x+1/x)-sqrt(x-1/x);%第一种计算方法sum2=2/(x*(sqrt(x+1/x)+sqrt(x-1/x);%第二种计算方法a=vpa(sum1)b=vpa(sum2)运行结果:整理结果:第一种算法第二种算法单精度计算结果0.00.00000099999999747524270787835121154785双精度计算结果0.000000999999997475242707878351211547850.000001结果分析:由matlab程序运算结果可知,双精度计算结果较单精度更为精确,这一现象分析与第一题相同;而在相同精度的条件下,第二种算法更为准确,原因是第一种算法的减号两端的数较为接近,而这种情况下,相减会发生减性抵消,所以误差较大。小结:在matlab使用过程中,这两道题都说明了,双精度浮点数所能表示的数字范围比单精度大得多,计算也更加准确;所以我们编写时应注意到自己要用到的数字是否超出了单精度所能表示的范围,还有很重要一点:单精度和双精度在计算机中的表示格式虽一样,但由于位数不同,应注意数值的传递是否发生了类型的转换,否则很容易出现问题。然而单精度的好处在于所占的储存位数更少,运行更快,所以我们要根据实际情况选择数据类型;其次通过这两道题,我们可以总结出一些避免误差危害的原则:1、选择数值稳定的计算方法,避开不稳定的算式。2、注意简化计算步骤及公式,设法减少运算次数;选用运算次数少的算式,尤其是乘方幂次要低,以减少舍入误差,同时可节约计算机的机时。3、合理安排计算顺序,防止大数“淹没”小数。多个数相加时,最好从

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论