常用插值算法程序

常用插值算法程序

ID:19735851

大小:81.00 KB

页数:20页

时间:2018-10-05

常用插值算法程序_第1页
常用插值算法程序_第2页
常用插值算法程序_第3页
常用插值算法程序_第4页
常用插值算法程序_第5页
资源描述:

《常用插值算法程序》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、1拉格朗日插值的Matlab实践Matlab中没有现成的拉格朗日插值函数,必须编写一M文件实现拉格朗日插值。设n个节点数据以数组x0, y0输入(注意Matlab的数组下标从1开始),m 个插值点以数组x输入,输出数组y 为m 个插值。编写一个名为lagrange.m的M文件:function y=lagrange(x0,y0,x);n=length(x0);m=length(x);for i=1:mz=x(i);s=0.0;for k=1:np=1.0;for j=1:nif j~=kp=p*(z-x0(

2、j))/(x0(k)-x0(j));endends=p*y0(k)+s;endy(i)=s;end作者:lq梦里不知是客2008-4-2808:28回复此发言 2回复:拉格朗日插值的Matlab实践#include#include#includetypedef struct data{ float x; float y;}Data;//变量x和函数值y的结构Data d[20];//最多二十组数据float f(int s,int t)//牛顿插

3、值法,用以返回插商{ if(t==s+1) return (d[t].y-d[s].y)/(d[t].x-d[s].x); else return (f(s+1,t)-f(s,t-1))/(d[t].x-d[s].x); }float Newton(float x,int count){ int n; while(1) { cout<<"请输入n值(即n次插值):";//获得插值次数 cin>>n; if(n<=count-1)// 插值次数不得大于count-1次 break; else system("

4、cls"); }//初始化t,y,yt。 float t=1.0; float y=d[0].y; float yt=0.0;//计算y值 for(int j=1;j<=n;j++) { t=(x-d[j-1].x)*t; yt=f(0,j)*t; //cout<

5、 { float p=1.0;//初始化p for(int j=0;j>cou

6、nt; if(count<=20) break;//检查输入的是否合法 system("cls"); }//获得各组数据 for(int i=0;i>d[i].x; cout<<"请输入第"<>d[i].y; system("cls"); } cout<<"请输入x的值:";//获得变量x的值 cin>>x; while(1) { int choice=3; cout<<"请您选

7、择使用哪种插值法计算:"<>choice;//取得用户的选择项 if(choice==2) { cout<<"你选择了牛顿插值计算方法,其结果为:"; y=Newton(x,count);break;//调用相应的处理函数 } if(choice==1) { cout<<"你选择了拉格朗日插值计算

8、方法,其结果为:"; y=lagrange(x,count);break;//调用相应的处理函数 } if(choice==0) break; system("cls"); cout<<"输入错误!!!!"<

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。