数学建模算法大全层次分析法

上式称为n次Lagrange插值多项式,由方程(3)解的唯一性,n?1个节点的n次Lagrange插值多项式存在唯一。

1.1.3 用Matlab作Lagrange插值

Matlab中没有现成的Lagrange插值函数,必须编写一个M文件实现Lagrange插值。

设n个节点数据以数组x0,y0输入(注意Matlat的数组下标从1开始),m个插值点以数组x输入,输出数组y为m个插值。编写一个名为lagrange.m的M文件: function y=lagrange(x0,y0,x); n=length(x0);m=length(x); for i=1:m z=x(i); s=0.0; for k=1:n p=1.0; for j=1:n if j~=k

p=p*(z-x0(j))/(x0(k)-x0(j)); end end

s=p*y0(k)+s; end

y(i)=s; end

1.2 牛顿(Newton)插值

在导出Newton公式前,先介绍公式表示中所需要用到的差商、差分的概念及性质。

1.2.1 差商

定义 设有函数f(x),x0,x1,x2,?为一系列互不相等的点,称

f(xi)?f(xj)xi?xj即

(i?j)为f(x)关于点xi,xj一阶差商(也称均差)记为f[xi,xj],

f[xi,xj]?f(xi)?f(xj)xi?xj

称一阶差商的差商

f[xi,xj]?f[xj,xk]xi?xk为f(x)关于点xi,xj,xk的二阶差商,记为f[xi,xj,xk]。一般地,称 f[x0,x1,?,xk?1]?f[x1,x2,?,xk]

x0?xk为f(x)关于点x0,x1,?,xk的k阶差商,记为

f[x0,x1,?,xk?1]?f[x1,x2,?,xk]f[x0,x1,?,xk]?

x0?xk容易证明,差商具有下述性质: f[xi,xj]?f[xj,xi]

f[xi,xj,xk]?f[xi,xk,xj]?f[xj,xi,xk]

1.2.2 Newton插值公式 线性插值公式可表成

?1(x)?f(x0)?(x?x0)f[x0,x1]

称为一次Newton插值多项式。一般地,由各阶差商的定义,依次可得

f(x)?f(x0)?(x?x0)f[x,x0]

f[x,x0]?f[x0,x1]?(x?x1)f[x,x0,x1]

f[x,x0,x1]?f[x0,x1,x2]?(x?x2)f[x,x0,x1,x2]

??

f[x,x0,?,xn?1]?f[x0,x1,?,xn]?(x?xn)f[x,x0,?,xn]

将以上各式分别乘以1,(x?x0),(x?x0)(x?x1),?,(x?x0)(x?x1)?(x?xn?1),然后相加并消去两边相等的部分,即得

f(x)?f(x0)?(x?x0)f[x0,x1]?? ?(x?x0)(x?x1)?(x?xn?1)f[x0,x1,?,xn] ?(x?x0)(x?x1)?(x?xn)f[x,x0,x1,?,xn]记

Nn(x)?f(x0)?(x?x0)f[x0,x1]?? ?(x?x0)(x?x1)?(x?xn?1)f[x0,x1,?,xn]Rn(x)?(x?x0)(x?x1)?(x?xn)f[x,x0,x1,?,xn]

??n?1(x)f[x,x0,x1,?,xn]显然,Nn(x)是至多n次的多项式,且满足插值条件,因而它是f(x)的n次插值多项式。这种形式的插值多项式称为Newton插值多项式。Rn(x)称为Newton插值

余项。

Newton插值的优点是:每

>>鐏炴洖绱戦崗銊︽瀮<<
12@gma联系客服:779662525#qq.com(#替换为@)