1 / 5
文档名称:

数值分析实验报告(六).doc

格式:doc   大小:64KB   页数:5页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

数值分析实验报告(六).doc

上传人:小博士 2019/10/8 文件大小:64 KB

下载得到文件列表

数值分析实验报告(六).doc

相关文档

文档介绍

文档介绍::..数值分析实验报告(六):插值法。:运用牛顿、拉格朗日插值法。:用牛顿、拉格朗口插值法求插值多项式P(x)和x=0是的值P(O),X-:*include<>*include<>*include<>typedefstructData{floatx;floaty;}Data;//变量x和函数值y的结构Datad[20];〃最多二十组数据floatf(ints,intt)〃牛顿插值法,用以返冋插商{if(t==s+1)return(-d[s].y)/(d[-d[s].x);elsereturn(f(s+1,t)-f(s,t-1))/(d[t].x-d[s].x);}floatNewton(floatx,intcount){intn;while(l)cout«^请输入n值(即n次插值):”;//获得插值次数cin»n;if(n<=count-l)//插值次数不得人于count—1次break;elsesystemC'cls");)//初始化t,y,ytofloatt=;floaty=d[0].y;floatyt=;〃计算y值for(intj=l;j<=n;j++){t=(x-d[j-lyt=f(O,j)*t;//cout«f(0,j)«endl;y=y+yt;}returny;}floatlagrange(floatx,intcount){floaty=;for(intk=0;k<count;k++)//这儿默认为count—1次插值{floatp=;//初始化pfor(intj=0;j<count;j++){〃计算p的值if(k==j)continue;//判定是否为同一个数p=p*(x-d[j].x)/(d[k].x-d[j].x);}y=y+p*d[k].y;〃求和}returny;〃返回y的值}voidmain(){floatx,y;intcount;while(l){cout«H请输入x[i],y[i]的组数,不得超过20组:”;〃要求用户输入数据组数cin»count;if(count<=20)break;〃检査输入的是凸介法system(”cis”);〃获得各组数据for(inti=0;i<count;i++){coutvv”请输入笫u«i+l«u组X的值:”;cin»d[i].x;coutvv”请输入第“vvi+lvv“组y的值:“;cin»d[i].y;//systemC'cls");)coutvv”请输入x的值:“;〃获得变量x的值cin»x;while(l){=3;coutvv”请您选择使用哪种插值法计算:"vvendl;cout«H(0):退出n«endl;cout«Hcout«H(1):LagrangeH«endl;(2):NewtonH«endl;cout«"输入你的选择:";cin»choice;〃取得用户的选择项if(choice==2){coutvv“你选择了牛顿插值计算方法,其结果为:”;y=Newton(x,count);break;//调用相应的处理函数}if(choice==