资源描述:
《Lagrange插值基函数构造插值多项式》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、数学与软件科学学院实验报告学期・至第学期年月日课!呈名称:计算机数值务法专业:级班实验编号:1实验项目一次、二次Lagrange插值多项式指导教师张莉姓名:学号:实验成绩:一、实验目的及要求实验目的:体会使用Lagrange插值基函数构造插值多项式的特点,熟悉使用一次或二次Lagrange插值多项式近似函数y=f(x)的算法。掌握Lagrange插值多项式近似函数f(x)的误差表达式,并会熟练应用。实验要求:1.给出一次、二次Lagrange插值算法2•用C语言实现算法3・给出误差分析。二、实验内容用下列插值节点数据,构造一次和二次La
2、grange插值多项式,并计算f(11.5),f(12.5)的值。(f(x)=sinx)X11F(x)0.19080912130.2079120.224951要求:所需数据都从键盘读入,最后输出结果.三、实验步骤(该部分不够填写•请填写附页)步骤一:用为代码描述lagrange插值多项式的算法Step1:输入:插值节点控制数n,插值点序列(xi,yi),i=O,l,...n,要计算的函数点x.Step2:forj=0ton{{forj=0ton对于给定的x,计算lagrangc基函数li(x)然后求tmp=tmp*(x-xj)/(xi-
3、xj);fx=fx+tmp*yi;Step3:输111结果。步骤二:编辑程序如下:typedefstructtagPOINT{doublex;doubley;}POINT;/*thestructerofpoint*/〃点的结构intmain(){intn,i,j;POINTpointsLMAX_N+lJ;doubletmp=1.0;doublex;doublelagrange=0.0;clrscr();printf(”lnputnvaluescanf(n%dn,&n);/*thenumberofthepointsinserted*/
4、〃输入被插值点的个数if(n>MAX_N){printf("Thei叩utnislargerthanMAX_N,pleaseredefinetheMAX_N.");return1;1if(n<=0){printf("Pleasei叩utanumberbetween1and%d.",MAX_N);}printf("Nowinputthe(x_i,y_i),i=O,...%d:",n);fbr(i=O;i<=n;i++)scanf("%lf%lf',&points[i].x,&points[i].y);〃输入被插值点printf
5、("Nowinputthexvalue:*');/*thevalueofx*/scanf(“%f,&x);〃输入待求的点的第一个分量for(i=0;i<=n;i++){for(j=0;j<=n&&j!=i;j++)tmp*=(x-pointsfj].x)/(points[i].x-points[jl.x);lagrange+=tmp*points[i].y;}〃用lagrange來求多项式printf(Mtheresultsis%lf',lagrange);#includc//定义点的最大维数#defineMAXN3r
6、eturn0;实验报告附页四、实验结果分析与评价(该部分不够填写•请填写附页)构造lagrange—次插值多项式,求点f仃1.5),选取前两个插值点Inputnualue:1Nowinputthe■■■!_:110.190807120.207912Nowinputthexvalue:11・5theresultsis0.294763构造lagrange—次插值多项式,求点f(12.5),选取后两个插值点Inputnualue:1Nowinputthe〈X—i.y—i〉.iW.■■.1:120.207912130.224951Nowinpu
7、tthexualue:12.5theresultsis0.320388_构造lagrange二次插值多项式,求点f(11.5),结果为:F:MYD0CU1我的课程'程序设1TCTC.EXEInputnualue:2Novjinputthej.1=0^...2:hl0.190809120.207912130.224951Nouinputthexualue:11.5theresultsis0.266646构造lagrange二次插值多项式,求点f(12.5),结果为:F八MYDOClT1我的课程程序设"1T
8、CTC.EXEInputnualue:2Nowinputthe