Lagrange插值法的编程实现_第1页
Lagrange插值法的编程实现_第2页
Lagrange插值法的编程实现_第3页
Lagrange插值法的编程实现_第4页
Lagrange插值法的编程实现_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Lagrange插值法的编程实现Lagrange插值法。在实际工程问题中,往往需要由已知的少数几个数据点去求一个不知道函数解析式的函数在其它一些点上的值。这就要求对离散的数据建立一个连续的数学模型,构造插值函数去近似代替一个复杂的或未知解析表达式的函数。Lagrange插值属于代数插值,实际中高次插值用得不多,常用的是低次插值和分段低次插值,最基本的是两点线性插值和三点抛物线插值。两点线性插值的表达式为:y=yO*(x-x1)/(xO-x1)+y1*(x-xO)/(x1-xO);三点抛物线插值的表达式为:y=yO*(x-x1)*(x-x2)/(xO-x1)*(xO-x2)+y1*(x-xO)*

2、(x-x2)/(x1-xO)*(x1-x2)+y2*(x-xO)*(x-x1)/(x2-xO)*(x2-x1);n点高次插值的表达式为:y=yO*(x-x1)*(x-x2)*(x-xn)/(x0-x1)*(x0-x2)*.*(x0-xn)+y1*(x-x0)*(x-x2)*(x-xn)/(x1-x0)*(x1-x2)*.*(x1-xn)+.+yn*(x-xO)*(x-x1)*.*(x-xn-1)/(xn-x0)*(xn-x1广*(xn-xn-1)。Lagrange插值法的matlab程序如下:functionyO,N,m=Lagrange_eval(X,Y,xO)m=length(X);N=z

3、eros(m,1);yO=O;fori=1:mN(i)=1;forj=1:mifj=iN(i)=N(i)*(x0-X(j)/(X(i)-X(j);endendy0=y0+Y(i)*N(i);end程序很简洁,短短几行代码就把这个算法表示出来,运行时输入初始参数也很简单。matlab对于不定长数组的处理,以及对返回参数的灵活处理让我感到很震撼。另外,matlab的数组下标是以1开始的,这可能会带来一些不方便。相应的C语言代码如下:#include#include#includefloatlagrange(float*x,float*y,floatxx,intn)/*拉格朗日插值算法*/inti,

4、j;float*a,yy=0.0;/*a作为临时变量,记录拉格朗日插值多项式*/a=(float*)malloc(n*sizeof(float);for(i=0;i=n-1;i+)ai=yi;for(j=0;j=20)printf(Error!Thevalueofnmustin(0,20).);getch();return1;if(n輛報二x一|j_i0山=lu_dOIP16Axxruv%,】=UXX.AX)6ue6PIIAAxx赳浜尼輛報M隼总岸*SMo3c%=ue0s=rp%K=lu_d(+LUHVO丄)oC语言中被调用函数使用不定长数组,必须以指针作为形参,而实参采用数组,数组长度应作为一个参数传递。用代码显式给定义的临时数组开辟存储空间,在函数的最后还要把临时数组占用的内存单元释放掉。函数返回值需在被调用函数代码中使用return语句,且只可以有一个返回值。明显看出,matlab在算法设计方面的巨大优势,这还只是matla

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论