网站大量收购闲置独家精品文档,联系QQ:2885784924

数值分析计算方法.doc

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数值分析计算方法

《计算方法》实验内容 一.实验一:用两种不同的顺序计算,分析其误差的变化。 实验目的:通过正序反序两种不同的顺序求和,比较不同算法的误差;了解在计算机中大数吃小数的现象,以后尽量避免;体会单精度和双精度数据的差别。 算法描述:累加和s=0; 正序求和: 对于n=1,2,3,......,10000 s+=1.0/(n*n); 反序求和: 对于n=10000,9999,9998,.....,1 s+=1.0/(n*n); 源程序: #双精度型# #includestdio.hc void main() { double s=0; int n; for(n=1;n=10000;n++) s+=1.0/(n*n); printf(正序求和结果是:%lf\n,s); s=0; for(n=10000;n=1;n--) s+=1.0/(n*n); printf(反序求和结果是:%lf\n,s); } #单精度型# #includestdio.h void main() { float s=0; int n; for(n=1;n=10000;n++) s+=1.0/(n*n); printf(正序求和结果是:%f\n,s); s=0; for(n=10000;n=1;n--) s+=1.0/(n*n); printf(反序求和结果是:%f\n,s); } 运行结果: 双精度型运行结果: 单精度型运行结果: 对算法的理解与分析:舍入误差在计算机中会引起熟知的不稳定,算法不同,肯结果也会不同,因此选取稳定的算法很重要。选取双精度型数据正反序求和时结果一致,但选用单精度型数据时,求和结果不一致,明显正序求和结果有误差,所以第一个算法较为稳定可靠。 二.实验二: 1、拉格朗日插值 按下列数据 x -3.0 -1.0 1.0 2.0 3.0 y 1.0 1.5 2.0 2.0 1.0 作二次插值,并求x=-2,x=0,x=2.75时的函数近似值 2牛顿插值 按下列数据 x 0.30 0.42 0.50 0.58 0.66 0.72 y 1.04403 1.08462 1.11803 1.15603 1.19817 1.23223 作五次插值,并求x=0.46,x=0.55,x=0.60时的函数近似值. 1.实验目的:通过拉格朗日插值和牛顿插值的实例,了解两种求解方法,并分析各自的优缺点。 2.算法描述: 3.源程序: 拉格朗日插值: #includestdio.h #define k 2 void main() { double L,Y,a; double x[3]; double y[3]; for(int p=0;p=2;p++) scanf(%lf%lf,x[p],y[p]); for(int q=0;q=2;q++) { Y=0; scanf(%lf,a); for(int j=0;j=k;j++) { L=1; for(int i=0;i=k;i++) if(i!=j) L*=(a-x[i])/(x[j]-x[i]); Y+=L*y[j]; } printf(x=%lf的函数值是:%lf\n,a,Y); } } 牛顿插值: #includestdio.h void main() { int i,j; double a[6][6],y,s,x; for(j=0;j=1;j++) for(i=0;i6;i++) scanf(%lf,a[i][j]); for(j=2;j=5;j++) for(i=j-1;i=5;i++) a[i][j]=(a[i][j-1]-a[i-1][j-1])/(a[i][0]-a[i-j+1][0]); for(int k=0;k3;k++) { scanf(%lf,x); y=0; for(i=0;i5;i++) { s=a[i][i+1]; for(j=i-1;j=0;j--) s*=x-a[j][0]; y+=s; } printf(结果是:%lf\n,y); } 运行结果: 拉格朗日运行结果: 牛顿插值运行结果: 对算法的理解与分析: (1)拉格朗日插值: 该公式是对一系列点加权求和。内插通常优于外推。选择的区间包括x,插值效果越好,高次插值通常优于低次插值,但并不是意味着插值次数越高越好。 优点:编程容易实现。 缺点:如果发现当

文档评论(0)

文档精品 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:6203200221000001

1亿VIP精品文档

相关文档