您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 汽车理论 > Newton插值的matlab实现
-1-Newton插值的matlab实现成员:黄全P09231474628%付吉P09171273724%颜学俭P09171271624%罗国庭P09171273924%指导老师:刘华2012年5月2日-2-目录Newton插值的matlab实现.......................................................................................................-1-一过程整理......................................................................................................................-3-Newton插值的基本原理............................................................................................-3-二流程图............................................................................................................................-4-三算法设计......................................................................................................................-6-3.1、Newton插值的matlab实现..............................................................................-6-3.2、程序.....................................................................................................................-6-3.3、例题.....................................................................................................................-6-3.4、命令执行图......................................................................................................-7-四参考文献........................................................................................................................-7--3-一过程整理Newton插值的基本原理假设有n+1个不同的节点及函数在节点上的值(x0,y0),……(xn,yn),插值多项式有如下形式:)())(()()()(n10n102010nx-x)(x-xx-xxPxxxxxx(1)其中系数i(i=0,1,2……n)为特定系数,可由插值样条iinyxP)((i=0,1,2……n)确定。根据均差的定义,把x看成[a,b]上的一点,可得f(x)=f(0x)+f[10xx,](0x-x)f[x,0x]=f[10xx,]+f[x,10xx,](1x-x)……f[x,0x,…x1-n]=f[x,0x,…xn]+f[x,0x,…xn](x-xn)综合以上式子,把后一式代入前一式,可得到:f(x)=f(0x)+f[10xx,](0x-x)+f[210xxx,,](0x-x)(1x-x)+…+f[x,0x,…xn](0x-x)…(x-xn)+f[x,0x,…xn]n=Nn(x)+)(xnR其中Nn(x)=f(0x)+f[10xx,](0x-x)+f[210xxx,,](0x-x)(1x-x)+…+f[x,0x,…xn](0x-x)…(x-xn)(2))(xnR=f(x)-Nn(x)=f[x,0x,…xn]n(3)n=(0x-x)…(x-xn)Newton插值的系数i(i=0,1,2……n)可以用差商表示。一般有fk[k10xxx,](k=0,1,2,……,n)(4)把(4)代入(1)得到满足插值条件N)()(iinxfx(i=0,1,2,……n)的n次Newton插值多项式-4-Nn(x)=f(0x)+f[10xx,](1x-x)+f[210xxx,,](1x-x)(2x-x)+……+f[n10xxx,](1x-x)(2x-x)…(1-nx-x).其中插值余项为:)()!()()()()(x1nfxN-xfxR1n1nn介于k10xxx,之间。二流程图-5-开始ints,inttt=s+1NYf(s,t)=(d[t].y-d[s].y)/(d[t].x-d[s].x)f(s,t)=f(s+1,t)-f(s,t-1))/(d[t].x-d[s].x)输入插值次数nfloatt=1.0,y=d[0].y,yt=0.0,intj=1y=(x-d[j-1].x)*t+f(0,j)*t返回yj+1=jYj=nN结束-6-三算法设计3.1、Newton插值的matlab实现构造计算经过点(kkyx,)=))((,kkxfx(k=0,1,2,……,n)的次数小于等于n的牛顿插值多项式:Nn(x)=f(0x)+f[10xx,](1x-x)+f[210xxx,,](1x-x)(2x-x)+……+f[n10xxx,](1x-x)(2x-x)…(1-nx-x)3.2、程序function[c,d]=newploy(x,y)n=length(x);d=zeros(n,n);d(:,1)=y';forj=2:nfork=j:nd(k,j)=(d(k,j-1)-d(k-1,j-1))/(x(k)-x(k-j+1));endendc=d(n,n);fork=(n-1):-1:1c=conv(c,poly(x(k)));m=length(c)c(m)=c(m)+d(k,k);end3.3、例题用程序求已知数据点(1,-3),(2,0),(3,15),(4,48),(5,105),(6,162)的牛顿插值多项式。在命令输入:newpoly([123456],[-3,0,15,48,105,192])回车得到结果:ans=0010-40由此得出牛顿插值多项式为:x4x3-7-3.4、命令执行图例如建立M-文件:t=0:0.1:6;z=t.^3-4*t;x=[123456];y=[-3,0,15,48,105,192];plot(t,z,x,y,'ro');grid命令执行得到如下图形:0123456-50050100150200xy牛顿插值多项式与数据点之间的关系牛顿插值与多项式数据点之间的关系四参考文献《MATLAB程序设计》王建卫取中水凌宾《MATLAB数值分析与应用》张德丰《数值分析》黄明游刘播徐涛
本文标题:Newton插值的matlab实现
链接地址:https://www.777doc.com/doc-1868476 .html