收藏 分享(赏)

数值分析计算方法.doc

上传人:精品资料 文档编号:10534611 上传时间:2019-11-26 格式:DOC 页数:11 大小:136.21KB
下载 相关 举报
数值分析计算方法.doc_第1页
第1页 / 共11页
数值分析计算方法.doc_第2页
第2页 / 共11页
数值分析计算方法.doc_第3页
第3页 / 共11页
数值分析计算方法.doc_第4页
第4页 / 共11页
数值分析计算方法.doc_第5页
第5页 / 共11页
点击查看更多>>
资源描述

1、计算方法实验内容一实验一:用两种不同的顺序计算 ,分析其误差的变化。6483.1102n1.实验目的:通过正序反序两种不同的顺序求和,比较不同算法的误差;了解在计算机中大数吃小数的现象,以后尽量避免;体会单精度和双精度数据的差别。2.算法描述:累加和 s=0;正序求和:对于 n=1,2,3,10000s+=1.0/(n*n);反序求和:对于 n=10000,9999,9998,.,1s+=1.0/(n*n);3.源程序:#双精度型#includecvoid main()double s=0;int n;for(n=1;n=1;n-)s+=1.0/(n*n);printf(“反序求和结果是:%l

2、fn“,s);#单精度型#includevoid main()float s=0;int n;for(n=1;n=1;n-)s+=1.0/(n*n);printf(“反序求和结果是:%fn“,s);4.运行结果:双精度型运行结果:单精度型运行结果:5.对算法的理解与分析:舍入误差在计算机中会引起熟知的不稳定,算法不同,肯结果也会不同,因此选取稳定的算法很重要。选取双精度型数据正反序求和时结果一致,但选用单精度型数据时,求和结果不一致,明显正序求和结果有误差,所以第一个算法较为稳定可靠。二实验二:1、拉格朗日插值按下列数据x i-3.0 -1.0 1.0 2.0 3.0y i1.0 1.5 2.

3、0 2.0 1.0作二次插值,并求 x =-2,x =0,x =2.75 时的函数近似值1232 牛顿插值按下列数据x i0.30 0.42 0.50 0.58 0.66 0.72y i1.04403 1.08462 1.11803 1.15603 1.19817 1.23223作五次插值,并求 x =0.46,x =0.55,x =0.60 时的函数近似值.121.实验目的:通过拉格朗日插值和牛顿插值的实例,了解两种求解方法,并分析各自的优缺点。2.算法描述:3.源程序:拉格朗日插值:#include#define k 2void main()double L,Y,a;double x3;d

4、ouble y3;for(int p=0;pvoid main()int i,j;double a66,y,s,x;for(j=0;j=0;j-)s*=x-aj0;y+=s;printf(“结果是: %lfn“,y);4.运行结果:拉格朗日运行结果:牛顿插值运行结果:5.对算法的理解与分析:(1)拉格朗日插值:该公式是对一系列点加权求和。内插通常优于外推。选择的区间包括 x,插值效果越好,高次插值通常优于低次插值,但并不是意味着插值次数越高越好。优点:编程容易实现。缺点:如果发现当前的插值方法 不够精确,就要增加插值节点的个数。拉格朗日基函数每一个都要重新计算,效率低。 (2)牛顿插值:优点:

5、如果当前插值方法不稳定,需要增加插值节点个数,只需要计算新家节点所增加的差商即可,之前的计算结果可以被复用,比拉格朗日插值节省计算量,效率高,精度高,更为稳定。三实验三:分别用复化梯形公式和复化辛卜生公式计算 f(x)=sin(x)/x 的积分,并与准确值比较判断精度。1.实验目的:通过实例体会各种算法的精度。熟练掌握复化梯形,复化辛普森,复化柯特斯求积方法的程序。2.算法描述:复化梯形:fc(x)=sinx/x,N 等分,a,b 是积分区间;令 s=fc(a)+fc(b),对于 i=a+1.0/N,a+2.0/N,.(i#include#define N 8#define a 0#defin

6、e b 1double fc(double x)double y;y=sin(x)/x;return y;void tx()double s,i;s=fc(a)+fc(b);for(i=a+1.0/N;i#includedouble fc(double x)double y;y=x*x*x-3*x-1;return y;void main(void)double fa=fc(1),fb=fc(3),a=1,b=3,f,x0;int k=0;for(;ba)f=fc(a+b)/2);if(f=0)x0=(a+b)/2;break;elseif(fa*f#includedouble Iterate

7、1(double x)double y;y=pow(3*x+1),1.0/3);return y;double Derivative1(double x)double y;y=pow(3*x+1),-2.0/3);return y;double Iterate2(double x)double y;y=(1-x*x*x)/3.0;return y;double Derivative2(double x)double y;y=-x*x;return y;double Iterate3(double x)double y;y=(3*x+1)/(x*x);return y;double Deriva

8、tive3(double x)double y;y=(-3*x-2)/(x*x*x);return y;void main(void)double x2=2.0,x1;int k=0;double a1=Derivative1(x2);if(fabs(a1)=pow(10,-4)*0.5);printf(“近似根是: %lf 准确根是:1.87938524n“,x1);printf(“迭代次数是: %dn“,k);double a2=Derivative2(x2);if(fabs(a2)=pow(10,-4)*0.5);printf(“近似根是: %lf 准确根是:1.87938524n“,x

9、1);printf(“迭代次数是: %dn“,k);double a3=Derivative3(x2);if(fabs(a3)=pow(10,-4)*0.5);printf(“近似根是: %lf 准确根是:1.87938524n“,x1);printf(“迭代次数是: %dn“,k);牛顿迭代法:#include#includedouble Iterate(double x)double y;y=x*x*x-3*x-1;return y;double Derivative(double x)double y;y=3*x*x-3;return y;void main()double x0=2.0

10、,x1;double f0,f01,f1,f11;f0=Iterate(x0);f01=Derivative(x0);int k=0;x1=x0-f0/f01;for(;fabs(x0-x1)=pow(10,-4)*0.5;f0=f1,f01=f11)x0=x1;x1=x0-f0/f01;f1=Iterate(x1);f11=Derivative(x1);k+;if(f11=0)printf(“牛顿迭代法失效 n“);break;printf(“近似根是: %lf 准确根是:1.87938524n“,x1);printf(“迭代次数是:%dn“,k);4.运行结果:二分法运行结果:简单迭代法运行结果:牛顿迭代法运行结果:

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报