插值方法综述报告.doc
《插值方法综述报告.doc》由会员分享,可在线阅读,更多相关《插值方法综述报告.doc(9页珍藏版)》请在冰豆网上搜索。
实用数值方法(Matlab)
综述报告题目:
插值方法综述
小组成员姓名:
毛晓雯学号:
201202070607班级:
机自6班
2014-2015
(1)学期
提交日期:
2014年12月29日
插值方法综述
1插值方法总结
在离散数据基础上补插出连续函数是计算数学中最基本最常用的手段,是函数逼近的重要方法,利用它可以通过函数在有限个点处的取值状况估算该函数在其它点处的值。
因此,插值方法是观测数据处理、函数近似表示、计算几何造型等所常用的工具,又是导出其它许多数值方法的依据。
在教材的第二章中我们重点学习了Lagrange插值、Aitken逐步插值、Taylor插值和Hermite插值,另外也初步了解了分段插值和样条插值。
下面对此做一简单介绍:
首先,Lagrange插值要求其插值函数与所逼近的函数在一系列节点上取相同的函数值,其形式为。
Aitken逐步插值是对Lagrange插值的改进,它是将多点的Lagrange插值化归为两点插值的重复,是一个规模递减的过程。
Talor插值则是要求插值函数与原来的函数在一系列节点上导数相同,其形式。
Hermite插值综合了Lagrange插值和Talor插值,它既要求插值函数与原来的函数在节点上具有相同的函数值,又要求其在节点上导数相同。
Hermite插值函数可通过待定系数法、余项校正法、基函数法这三种方法构造。
分段插值是将插值函数逐段多项式化,选取分段多项式最为插值函数。
最后样条插值是指选取样条函数作为插值函数,是一种改进的分段插值,具有光滑性和间断性。
2Newton插值方法
Newton插值方法与我们教材中的Aitken逐步插值相似,它们都是对Lagrange插值方法的改进,克服了Lagrange插值在增加插值节点后,必须重新计算所有的插值基函数的缺点。
首先我们设通过n+1个点的n次插值多项式为
(2-1)
其中,为待定系数,由插值条件
可得:
当时,
当时,,推得
当时,,推得
依次递推,可得。
为了给出系数的一般表达式,下面引进差商的概念。
2.1差商的定义和性质
定义设在点处的取值分别为,称
为函数在处的一阶差商,并记为;一般地,将
(2-2)
称为在处的阶差商。
差商的计算可列表进行(见表1-1)
表2-1差商表
一阶差商
二阶差商
三阶差商
四阶差商
性质1在处的阶差商可以表示为函数值,的线性组合,形如
(2-3)
其中,。
性质2差商具有对称性,即在中任意改变节点的次序,其值不变。
性质3对于次多项式的阶差商,当时,是次多项式,而当时,其值恒等于零。
2.2Newton插值公式
设在处,函数的取值分别为和,由差商的定义
从而有
类似地,由各阶差商的定义,可以依次得到
……
(2-4)
对式(2-4)的第二式两边同乘,第三式两边同乘,……,依此类推,将最后一式两边同乘。
然后将上面分别乘过不同因式后所有n+1个等式两边相加,整理得
(2-5)
记
(2-6)
(2-7)
则
(2-8)
称为n次Newton插值多项式,为相应的截断误差。
显然,是不超过n次的多项式,若能验证满足插值条件
(2-9)
则通过n+1个点的插值多项式就可按式(2-6)进行构造。
而要验证插值条件式(2-9),只需证明即可。
事实上,设是任意一个不超过n次的多项式,将按式(2-5)展开,则由差商性质3可知其截断误差为零,即
(2-10)
现取在节点的Lagrange插值多项式作为式(2-10)中的,则也可表示成
(2-11)
又由于
所以式(2-11)中在各节点处的各阶差商值等于在这些节点处相应的各阶差商值,故
(2-12)
即确实满足插值条件式(2-9)。
Newton插值公式的优点是:
但增加一个节点时,即增加一次插值多项式的次数时,只要在增加一项就行了,且有递推关系式
(2-13)
其中,是增加的节点。
这时截断误差为
其中,介于之间。
对于节点的n次插值多项式,分别用Lagrange插值方法和Newton插值方法,则可分别表示为
和
结合式(2-12),两个插值多项式的余项也应相等,即有
因此可以得到差商的另一个重要性质:
性质4
(2-14)
其中,介于的最小值和最大值之间。
2.3Newton插值的算法
步1计算、、、…、
步2计算Newton插值多项式中,,得到n各多项式
步3将得到的n个多项式相加,得到牛顿插值多项式
步4利用所得到的插值多项式,估算取其它值时的值
2.4实际算例
已知在点=2,2.1,2.2的值,试作二次Newton插值多项式。
若增加一个点=2.3,再求三次Newton插值多项式。
2.0
2.1
2.2
2.3
1.414214
1.449138
1.483240
1.516575
0.34924
0.34102
0.33335
-0.04110
-0.03835
0.009167
故二次Newton插值多项式是:
三次Newton插值多项式是:
由此可见,当增加一个节点时,即增加一次插值多项式次数时,Newton插值多项式只要增加一项即可。
当插值节点个数相对较多时,我们可以用Matlab编程求解。
如下:
已知在2.0~2.5段上各点的值如下表,试求Newton插值多项式。
2.0
2.1
2.2
2.3
2.4
2.5
2.6
1.414214
1.449138
1.483240
1.516575
1.549193
1.581138
1.612452
1)在编辑窗口建立一个M文件Newton.m
输入:
function[p2,z]=Newton(x,y,t)
%输入参数中x,y为已知插值点的坐标,t为插值点
%输出参数中p2为所求得的牛顿插值多项式,z为利用多项式所得的各插值点t的函数值。
n=length(x);
P
(1)=y
(1);
fori=2:
n
x1=x;y1=y;
x1(i+1:
n)=[];
y1(i+1:
n)=[];
n1=length(x1);
s1=0;
forj=1:
n1
t1=1;
fork=1:
n1
ifk==j
continue;
else
t1=t1*(x1(j)-x1(k));
end
end
s1=s1+y1(j)/t1;
end
P(i)=s1;
end
b(1,:
)=[zeros(1,n-1)P
(1)];
cl=cell(1,n-1);
fori=2:
n
u1=1;
forj=1:
i-1
u1=conv(u1,[1-x(j)]);
cl{i-1}=u1;
end
cl{i-1}=P(i)*cl{i-1};
b(i,:
)=[zeros(1,n-i),cl{i-1}];
end
p2=b(1,:
);
forj=2:
n
p2=p2+b(j,:
);
end
iflength(t)==1
m=0;
fori=1:
n
m=m+p2(i)*t^(n-i);
end
z=m;
else
k1=length(t);
m=zeros(1,k1);
forj=1:
k1
fori=1:
n
m(j)=m(j)+p2(i)*t(j)^(n-i);
end
z=m;
end
end
plot(t,z,'y',x,y,'*r')
2)在工作窗口写主程序:
x=[2.02.12.22.32.42.52.6];
y=[1.4142141.4491381.4832401.5165751.5491931.5811381.612452];
t=2.0:
0.05:
2.6;
[u,v]=newTon(x,y,t)
3)运算结果为
u=
0.0069-0.09460.5338-1.58982.5831-1.75051.3421
v=
Columns1through11
1.41421.43181.44911.46631.48321.5000
1.51661.53301.54921.56521.5811
Columns12through13
1.59691.6125
故其Newton插值多项式为
4)用Matlab作出其图像