二元拉格朗日插值Fortran程序设计实验(共16页).doc
《二元拉格朗日插值Fortran程序设计实验(共16页).doc》由会员分享,可在线阅读,更多相关《二元拉格朗日插值Fortran程序设计实验(共16页).doc(16页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上二元拉格朗日插值一 实验目的-程序功能利用FORTRAN编程实现二元拉格朗日插值求解函数在给定点的函数值。设已知插值节点(xi,yi)(i=1,m,j=1,n)及对应函数值zij=f(xi,yi) (i=1,m,j=1,n),用拉格朗日插值法求函数在给定点(x,y)处的对应函数值z。二 实验内容1、 了解和学习FORTRAN程序语言,会编写一些小程序;2、 学习和理解拉格朗日插值的原理及方法,并拓展至二元拉格朗日插值方法;3、 利用FORTRAN编程实现二元拉格朗日插值法;4、 举例进行求解,并对结果进行分析。三 实验原理及方法1、基本概念已知函数y=f(x)在若干点
2、的函数值=(i=0,1,n)一个差值问题就是求一“简单”的函数p(x):p()=,i=0,1,n, (1)则p(x)为f(x)的插值函数,而f(x)为被插值函数会插值原函数,.,为插值节点,式(1)为插值条件,如果对固定点求f()数值解,我们称为一个插值节点,f()p()称为点的插值,当min(,.,),max(,.,)时,称为内插,否则称为外插式外推,特别地,当p(x)为不超过n次多项式时称为n阶Lagrange插值。2、Lagrange插值公式 2.1 线性插值设已知 ,及=f() ,=f(),为不超过一次多项式且满足=,=,几何上,为过(,),(,)的直线,从而得到 =+(x-). (2
3、)为了推广到高阶问题,我们将式(2)变成对称式=(x)+(x). (3)其中,(x)=,(x)=。均为1次多项式且满足()=1且()=0;()=0且()=1。(4)两关系式可统一写成 2.2 n阶Lagrange插值(5)设已知,.,及=f()(i=0,1,.,n),为不超过n次多项式且满足(i=0,1,.n).易知 其中,均为n次多项式且满足式(4)(i,j=0,1,.,n),再由(ji)为n次多项式的n个根,知=c.最后,由c=,i=0,1,.,n.总之得到:(6)(7)(6)式为n阶Lagrange插值公式,其中,(i=0,1,n)称为n阶Lagrange插值的基函数。3 二元拉格朗日插
4、值方法 对于一元函数y=f(x),得到n+1个数据点(,)(i=0,1,n),可由(6)、(7)式求得n阶Lagrange插值公式,然后求函数在y=f(x)在x点的函数值。 对于二元函数,若知道数据点(i=1,m,j=1,n),可利用两次拉格朗日插值计算在点(x,y)的函数值,方法如下: (1)对每个( i=1,m),以( j=1,n)为插值节点,( j=1,n)为对应函数值,y为插值变量,作一元函数插值得( i=1,m);(2) 以( i=1,m)为插值节点,( i=1,m)为对应函数值,x为插值变量,作一元函数插值求得(x,y)点的值z。四 FORTRAN编程a) 开发环境使用Compaq
5、 Visual Fortran 6.6进行程序设计,编程实现二元拉格朗日插值算法。b) 使用说明先编出一元拉格朗日差值算法子程序lagrange,然后编写二元拉格朗日插值算法程序lagrange2,其中两次调用lagrange子程序。Lagrange(xa,ya,n,x,y)n 整型变量,输入参数,节点个数xa n个元素的一维实数型数组,输入参数,存放自变量插值节点xi(i=1,n)ya n个元素的一维实数型数组,输入参数,存放函数值(y1,yn)Tx 实型变量,输入参数,插值自变量y 实型变量,输出参数,所求值*Lagrange2(x1a, x2a,ya,m,n,x1, x2,y)m 整型变
6、量,输入参数,x自变量节点个数n 整型变量,输入参数,y自变量节点个数x1a m个元素的一维实数型数组,输入参数,存放x自变量插值节点xi(i=1,m)x2a n个元素的一维实数型数组,输入参数,存放y自变量插值节点yj(j=1,n)x1 实型变量,输入参数,插值x自变量x2 实型变量,输入参数,插值y自变量ya mn个元素的二维实数型数组,输入参数,存放(xi,yj)(i=1,m,j=1,n)函数值(y1,yn)Ty 实型变量,输出参数,所求插值结果c) 程序代码Lagrange子程序SUBROUTINE lagrange(xa,ya,n,x,y) integer n,nmaxreal x,
7、y,xa(n),ya(n),l(n),dy parameter(nmax=10) integer i,j l(1)=1 do j=2,n l(1)=l(1)*(x-xa(j)/(xa(1)-xa(j) !计算l1(x) end do do i=2,n-1 l(i)=1 do j=1,i-1 l(i)=l(i)*(x-xa(j)/(xa(i)-xa(j) end do do j=i+1,n l(i)=l(i)*(x-xa(j)/(xa(i)-xa(j) !计算li(x),1in end do end do l(n)=1 do j=1,n-1 l(n)=l(n)*(x-xa(j)/(xa(n)-x
8、a(j) !计算ln(x) end doy=0 do i=1,n y=y+l(i)*ya(i) !计算y=求和li(x)*ya(i) end do end subroutine lagrange Lagrange子程序说明: 已知数据点(xa(i),ya(i))(i=0,1,n),求插值多项式,其中 先求,程序中l(n)为一维实型数组,存放插值基函数,l(1)即为; 然后,对于i=2, ,n-1, 最后计算 求和得到 (i=1,2,,n) 对于每一个自变量x输入参数,可以得到一个y输出参数。Lagrange2子程序SUBROUTINE lagrange2(x1a,x2a,ya,m,n,x1,x
9、2,y) integer n,nmax,m,mmaxreal x1,x2,y,x1a(m),x2a(n),ya(m,n) parameter(nmax=100,mmax=100)integer i,jreal ym(mmax),yn(nmax)do i=1,m do j=1,n yn(j)=ya(i,j) !对每一个xi,以(yj,zij)作为插值节点 end do call lagrange(x2a,yn,n,x2,ym(i) !求得(xi,y)的函数值uiend do call lagrange(x1a,ym,m,x1,y) !以(xi,ui)插值点求(x,y)函数值end subrout
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二元 拉格朗日插值 Fortran 程序设计 实验 16
限制150内