您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > 中北大学数值分析1-4实验报告
实验类别:数值分析专业:信息与计算科学班级:13080241学号:1308024120姓名:杨燕中北大学理学院1实验一函数插值方法【实验内容】给定一元函数()yfx的1n个节点值()jjyfx(0,1,)jn,数据如下:jx0.40.550.650.800.951.05jy0.410750.578150.696750.901.001.25382求五次Lagrange多项式5()Lx或分段三次插值多项式或Newton插值多项式,并计(0.596)f,(0.99)f的值。(提示:结果为(0.596)f≈0.625732,(0.99)f≈1.05423)【实验方法与步骤】利用Lagrange插值公式00()nninkikkiikxxLxyxx,用C语言编写出插值多项式程序如下:#includestdio.h#defineN5floatx[]={0.4,0.55,0.65,0.80,0.95,1.05};floaty[]={0.41075,0.57815,0.69675,0.90,1.00,1.25382};floatp(floatxx){inti,k;floatpp=0,m1,m2;for(i=0;i=N;i++){m1=1;m2=1;for(k=0;k=N;k++)if(k!=i){m1*=xx-x[k];2m2*=x[i]-x[k];}pp+=y[i]*m1/m2;}returnpp;}main(){printf(f(0.596)=%lf\n,p(0.596));printf(f(0.99)=%lf\n,p(0.99));}【实验结果】【思考】1、给出的程序求(1.06)f行不行,精度高不高?2、五次Lagrange多项式与Newton插值多项式是同一个多项式吗?五次Lagrange多项式与Newton插值多项式是同一个多项式。3、为什么高次插值不能令人满意?一般来说,节点个数越多,插值函数和被插值函数就有越多的地方相等。但是随着插值节点个数的增加,两个插值节点之间插值函数并不一定能够很好地逼近被插值函数。再次,从舍入误差看,高次插值由于计算量大,可能会产生更严重的误差积累,所以,稳定性得不到保证。此时就会出现龙格现象。实验类别:数值分析专业:信息与计算科学班级:13080241学号:1308024120姓名:杨燕中北大学理学院1实验二函数逼近与曲线拟合【实验内容】1、编写出Legendre、Chebyshev多项式的程序;2、从随机的数据中找出其规律性,给出其近似表达式,在生产实践和科学实验中大量存在,通常利用数据的最小二乘法求得拟合曲线。例如在某冶炼过程中,根据统计数据的含碳量与时间关系,试求含碳量y与时间t的拟合曲线。(t分)0510152025303540455055410y01.72.162.863.443.874.154.374.514.584.024.64i111111111111【实验方法与步骤】1、用C编写语言出Legendre多项式的程序如下:#includestdio.hdoublep(intn,doublex){if(n==0)return1;elseif(n==1)returnx;elsereturn((2*n-1)*x*p(n-1,x)-(n-1)*p(n-2,x))/n;}intmain(){intn;doublex;doubley;2printf(inputn,x:\n);scanf(%d%lf,&n,&x);y=p(n,x);printf(%lf\n,y);return0;}2、给出表格数据的近似解析表达式为;()tabt,选取基函数0()1x,1()xx,则得到00,12,1110010,,iix,112110,iix,1100,iiff,1110,iiiffx,于是得方程组0001010111,,,,,,abfabf,用C语言编写曲线拟合的程序如下:#includestdio.h#defineMax_N25main(){inti,n;doublex[Max_N],y[Max_N];doublea11,a12,a21,a22,d1,d2;doublea,b;printf(\nInputnvalue:);do{scanf(%d,&n);if(nMax_N)printf(\npleasere_inputnvalue:);}while(nMax_N||n=0);3printf(inputx[i],i=0,...%d:\n,n-1);for(i=0;in;i++)scanf(%lf,&x[i]);printf(inputy[i],i=0,...%d:\n,n-1);for(i=0;in;i++)scanf(%lf,&y[i]);for(i=0;in;i++){a21+=x[i];a22+=x[i]*x[i];d1+=y[i];d2+=x[i]*y[i];}a12=a21;a11=n;a=(d1*a22-d2*a12)/(a11*a22-a12*a21);b=(d1*a21-d2*a11)/(a21*a12-a22*a11);printf(slove:P(x)=%f+%fx\n,a,b);getchar();return0;}3、为作比较,用MATLAB进行曲线拟合,编写的程序如下:x=[0510152025303540455055];y=[01.272.162.863.443.874.154.374.514.584.024.64];p=polyfit(x,y,1);disp([num2str(p(1)),'*x+',num2str(p(2))]);xx=linspace(0,60,60);yy=polyval(p,xx);plot(x,y,'rx',xx,yy)4【实验结果】1、C语言编写的Legendre多项式的程序结果如下:2、C语言拟合的曲线结果如下:3、MATLAB拟合的曲线结果和误差分析结果如下:5拟合的方程为:0.0727621.3215yx【思考】1、最佳一致逼近与最佳平方逼近的区别是什么?最佳一致逼近中的范数取的是无穷大范数,公式为:()()minmax()()nPHaxbfxPxfxPx。最佳平方逼近中的范数取的是二范数,公式为:222()()min()()nbaPHfxPxfxPxdx。2、曲线拟合与最佳平方逼近的区别是什么?曲线拟合中的()fx是,ab上的一个列表函数,公式为:2220min()()miiPifPfxPx。最佳平方逼近中的()fx是一个未知函数,公式为:222()()min()()nbaPHfxPxfxPxdx。3、能用什么方法确定最小二乘法的拟合函数?拟合的方法除了最小二乘法外,还有拉格朗日插值法、牛顿插值法、区间二分法、雅克比迭代法和牛顿科特斯数值积分法等,都可以确定拟合函数。实验类别:数值分析专业:信息与计算科学班级:13080241学号:1308024120姓名:杨燕中北大学理学院1实验三数值积分与数值微分【实验内容】选用复合梯形公式,复合Simpson公式,Romberg算法、高斯算法计算(1)14204sinIxdx(2)1204xeIdxx(3)120ln(1)1xIdxx【实验方法与步骤】1、用C语言编写Romberg算法数值积分的程序如下:#includestdio.h#includemath.h#defineepsilon0.0001/*求基函数*/floatf(floatx){return(sqrt(4-sin(x)*sin(x)));}/*梯形公式*/floatRomberg(floata,floatb){intk=1;floatS,x,T1,T2,S1,S2,C1,C2,R1,R2,h=b-a;T1=h/2*(f(a)+f(b));while(1){S=0;x=a+h/2;do{S+=f(x);x+=h;}while(xb);T2=(T1+h*S)/2.0;2if(fabs(T2-T1)epsilon)return(T2);S2=T2+(T2-T1)/3.0;if(k==1){T1=T2;S1=S2;h/=2;k+=1;continue;}if(fabs(S2-S1)epsilon)return(S2);C2=S2+(S2-S1)/15.0;if(k==2){C1=C2;T1=T2;S1=S2;h/=2;k+=1;continue;}if(fabs(C2-C1)epsilon)return(C2);R2=C2+(C2-C1)/63.0;if(k==3){R1=R2;C1=C2;T1=T2;S1=S2;h/=2;k+=1;continue;}if(fabs(R2-R1)epsilon)return(R2);R1=R2;C1=C2;T1=T2;S1=S2;h/=2;k+=1;}}3main(){inti;floata,b,S;printf(\nInputbeginandend:);scanf(%f%f,&a,&b);S=Romberg(a,b);printf(Solveis:%f,S);scanf(%,S);}2、再用复合Simpson公式计算同一个积分,并比较其结果,且用C语言编写的程序如下:#includestdio.h#includemath.hfloatf(floatx){return(sqrt(4-sin(x)*sin(x)));}floatSimpson(floata,floatb){intk=1,n=20;floats,x1,x2,h=(b-a)/n,c=a+h/2;s=h/6*(f(a)+f(b)+4*f(c));for(k=1;k=n-1;k++){x1=a+k*h;x2=x1+h/2;s=s+(2*h/3)*f(x2)+(h/3)*f(x1);}4return(s);}main(){inti;floata,b,s;printf(请输入a,b:);scanf(%f%f,&a,&b);s=Simpson(a,b);printf(解为:%f,s);scanf(%,s);}3、分别取不同步长()/hban,试比较计算结果(如10,20n等);4、给定精度要求,试用变步长算法,确定最佳步长。【实验结果】1、所给三个定积分的结果如下:2、对第一个定积分14204sinIxdx用Romberg算法和复合Simpson公式计算的结果分别如下:53、步长为()/10hba时,所给三个定积分的结果如下:4、步长为()/20hba时,所给三个定积分的结果如下:【思考】1、复合求积公式的优点是什么?复合求积公式通过把区间分成若干个子区间,再在每个子区间上用低阶求积公式来提高求积的精度。2、Romberg算法与与牛顿-柯特斯求积算法的联系是什么?Romberg算法与与牛顿-柯特斯求积算法的节点都是等距选取均匀分布的,且8n的牛顿-柯特斯公式因为误差太大而不能使用。3、高斯算法的求积节点如何确定?以这些节点为零的多项式101()()()()nnxxxxxxx与任何次数不超过n的多项式()px带权()x正交,即:1()()()0bnapxxxdx。4、牛顿-柯特斯求积与高斯算法的节点分布有什么不同?牛顿-柯特斯求积的节点是等距选取均匀分布的,而高斯算法的节点是满足以这些节点为零的多项式101()()()()nnxxxxxxx与任何次数不超过n的多项式()px带权()x正交,即是不均匀分布的。实验类别:数值分析专业:信息与计算科学班级:13080241学号:1308024120姓名:杨燕中北大学理学院1实验四线性方程组的直接解法
本文标题:中北大学数值分析1-4实验报告
链接地址:https://www.777doc.com/doc-2797099 .html