欢迎来到天天文库
浏览记录
ID:13612101
大小:71.05 KB
页数:4页
时间:2018-07-23
《lagrange插值与newton插值算法编程》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Lagrange插值与Newton插值算法编程专业:电路与系统姓名:邹鑫学号:20120217161.程序流程用C++编程实现函数的插值计算,由用户依次输入节点个数(设为20个节点以内)以及各个节点对应的x值和y值来描述已知函数的插值,最后输入所求的x值,程序就分别用公式计算出所求插值x对应的函数y值。2.Lagrange插值2.1.源程序:#include#includetypedefstructdata{floatx;floaty;}Data;Datad[20];//创建一个元素为20的d数组floatlagrange(floatx,intcoun
2、t){floaty=0.0;//先清零yfor(intk=0;k3、:";//要求输入数据组数cin>>count;//获得总共有几组的组数for(inti=0;i>d[i].x;cout<<"请输入第"<>d[i].y;}cout<<"请输入x的值:";//获得插入变量x的值cin>>x;cout<<"拉格朗日插值计算结果为:"<4、)=x2的5个节点值,求x=3.73时的拉格郎日插值:41.Newton插值1.1.源程序:#include#includetypedefstructdata{floatx;floaty;}Data;Datad[20];//创建一个元素为20的d数组floatf(ints,intt)//牛顿插值法,用以返回插商{if(t==s+1)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,intcount5、){intn;cout<<"请输入n值(即n次插值):";//获得插值次数cin>>n;floatt=1.0;floaty=d[0].y;floatyt=0.0;for(intj=1;j<=n;j++){t=(x-d[j-1].x)*t;yt=f(0,j)*t;y=y+yt;//y求和}returny;//返回y的值}//========================================================voidmain(){floatx,y;intcount;cout<<"请输入x[i],y[i]的组数,不得超过20组:";//要求用户输入数据组数cin>>co6、unt;4for(inti=0;i>d[i].x;cout<<"请输入第"<>d[i].y;}cout<<"请输入x的值:";//获得插入变量x的值cin>>x;y=Newton(x,count);cout<<"Newton插值计算结果为:"<
3、:";//要求输入数据组数cin>>count;//获得总共有几组的组数for(inti=0;i>d[i].x;cout<<"请输入第"<>d[i].y;}cout<<"请输入x的值:";//获得插入变量x的值cin>>x;cout<<"拉格朗日插值计算结果为:"<4、)=x2的5个节点值,求x=3.73时的拉格郎日插值:41.Newton插值1.1.源程序:#include#includetypedefstructdata{floatx;floaty;}Data;Datad[20];//创建一个元素为20的d数组floatf(ints,intt)//牛顿插值法,用以返回插商{if(t==s+1)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,intcount5、){intn;cout<<"请输入n值(即n次插值):";//获得插值次数cin>>n;floatt=1.0;floaty=d[0].y;floatyt=0.0;for(intj=1;j<=n;j++){t=(x-d[j-1].x)*t;yt=f(0,j)*t;y=y+yt;//y求和}returny;//返回y的值}//========================================================voidmain(){floatx,y;intcount;cout<<"请输入x[i],y[i]的组数,不得超过20组:";//要求用户输入数据组数cin>>co6、unt;4for(inti=0;i>d[i].x;cout<<"请输入第"<>d[i].y;}cout<<"请输入x的值:";//获得插入变量x的值cin>>x;y=Newton(x,count);cout<<"Newton插值计算结果为:"<
4、)=x2的5个节点值,求x=3.73时的拉格郎日插值:41.Newton插值1.1.源程序:#include#includetypedefstructdata{floatx;floaty;}Data;Datad[20];//创建一个元素为20的d数组floatf(ints,intt)//牛顿插值法,用以返回插商{if(t==s+1)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
5、){intn;cout<<"请输入n值(即n次插值):";//获得插值次数cin>>n;floatt=1.0;floaty=d[0].y;floatyt=0.0;for(intj=1;j<=n;j++){t=(x-d[j-1].x)*t;yt=f(0,j)*t;y=y+yt;//y求和}returny;//返回y的值}//========================================================voidmain(){floatx,y;intcount;cout<<"请输入x[i],y[i]的组数,不得超过20组:";//要求用户输入数据组数cin>>co
6、unt;4for(inti=0;i>d[i].x;cout<<"请输入第"<>d[i].y;}cout<<"请输入x的值:";//获得插入变量x的值cin>>x;y=Newton(x,count);cout<<"Newton插值计算结果为:"<
此文档下载收益归作者所有