1 / 22
文档名称:

【精品】数值分析实验报告.doc

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

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

分享

预览

【精品】数值分析实验报告.doc

上传人:pppccc8 2020/3/15 文件大小:417 KB

下载得到文件列表

【精品】数值分析实验报告.doc

相关文档

文档介绍

文档介绍:实验一插值法程序设计与验证利用表中数据计算3次Lagrange插值多项式和Newton插值多项式,计算x=。10123X1234y0-5-63运行结果Lagrange插值X=)"K:\信科092-杨威-09092810了6\lagrange\Debug\"请输入己知点的木数,以回车鸟東…… 注意:最参只能辐人佃个点4请一次性输入己知点横坐标,不同坐标以空格隔开,回车结東1234请一次性输入己知点纵坐标,不同坐标以空格隔开,回车结束0-5-63请输入需要插值的点横坐标,以回车结束……・500000为插值点横坐标得到的纵坐标为:-・・・■Newton插值X=・2.&25「吉吉吉吉吉吉吉士口纟纟纟纟纟纟纟纟犖车车车车车车车5也回回回回回回回回」••直i冋勺勺也勺勺为为笊[^"T・jndE八J勺勺自自自自自自-^—X盲找我亘亘耳穿穿巨召56^-102-3-43芋>>>>>>>>蠻常昭轆豐车结東心分析讨论从结果可以看出,利用拉格朗日插值方法和牛顿插值方法得到的结杲是一-样的,只是精度有区别不同ifULZ,不过这都可以用程序代码控制。以下为C程序代码(1)Lagrange插值多项式程序如下:#include<>#defineMAX10voidlage(floata[],floatb[],floatxjntk){inti,j,m;doublesum=0;doubleprod[MAXJ;fbr(i=0;i<k;i++){for(j=0;jvk;j++){prod[j]=l;for(m=0;m<k;ni++){if(m==j)m++;prod|j]=((x-a[m])/(a[j]-a[m]))*prod|j];sum=sum+prod[i]*b[i];printf(H以%彳为插值点横坐标得到的纵坐标为:\n %f\rT,x,sum);voidmain(){floata[MAX],b[MAX],x;inti,j;intk;printf(“请输入已知点的个数,以回车结束……\n“);printf(n 注意:最多只能输入%d个点\nn,MAX);scanf(”%d”,&k);printf("\n");printtf-请一•次性输入己知点横坐标,不同坐标以空格隔开,回车结束……\n-);for(i=0;ivk;i++)scanf(”%f;&a[i]);printf(n\nn);printf(”请一次性输入已知点纵坐标,不同坐标以空格隔开,回车结束……\n\n”);for(j=O;jvk;j++)scanf(”%f”,&b[j]);printf(W);printf("请输入需要插值的点横坐标,以冋车结束 \n");scanf("%f”,&x);printf('\n");lage(a,b,x,k);system(”pause");}(2)牛顿插值多项式程序如下:#include<>#include<>#include<>typedefstructdatafloatx;floaty;JData;//变量x和函数值y的结构Datad[20];〃最多二十组数据floatf(ints,int()//牛顿插值法,用以返冋插商{if(t==s+l)return(d[t].y-d[s].y)/(d[t].x-d[s].x);elsereturn(f(s+1,t)-f(s,t-1))/(d[t].x-d[s].x);}floatNewton(floatx,intcount){intn;\vhile(1){cout«endl«nW输入n值(即n次插值)(冋车结束):”;〃获得插值次数cin»n;if(n<=count-l)//插值次数不得大于count—1次break;else{system(Hclsu);cout«"n必须小于"vvcountvv"请重新输入"«endl;}}〃初始化〔,y,ytofloatt=;floaty=d[0].y;floatyt=;〃计算y值for(intj=l;j<=n;j++){t=(x-d[j-l].x)*t;yt=f(O,j)*t;//cout«f(Oj)«endl;y=y+yt;}returny;}voidmain()floatx,y;intcount;while(vv”请输入x[i],y[i]的纽•数,不得超过20纽:“;〃要求用户输入数据纽•数cin»count;if(count<=20)break;〃检杳输入的是否合法system(”cls");}〃获得务组数据for(inti=0;i<count;i++){co