数值分析常用的插值方法.docx
《数值分析常用的插值方法.docx》由会员分享,可在线阅读,更多相关《数值分析常用的插值方法.docx(14页珍藏版)》请在冰豆网上搜索。
数值分析常用的插值方法
数值分析
报告
班级:
专业:
流水号:
学号:
姓名:
常用的插值方法
序言
在离散数据的基础上补插连续函数,使得这条连续曲线通过全部给定的离散数据点。
插值是离散函数逼近的重要方法,利用它可通过函数在有限个点处的取值状况,估算出函数在其他点处的近似值。
早在6世纪,中国的刘焯已将等距二次插值用于天文计算。
17世纪之后,牛顿、拉格朗日分别讨论了等距和非等距的一般插值公式。
在近代,插值法仍然是数据处理和编制函数表的常用工具,又是数值积分、数值微分、非线性方程求根和微分方程数值解法的重要基础,许多求解计算公式都是以插值为基础导出的。
插值问题的提法是:
假定区间[a,b〕上的实值函数f(x)在该区间上n+1个互不相同点Xo,X1Xn处的值是f(Xo),f(Xn),要求估算f(x)在[a,b〕中
某点的值。
其做法是:
在事先选定的一个由简单函数构成的有n+1个参数Co,
Ci,……Cn的函数类0(Co,Ci,……Cn)中求出满足条件P(Xi)=f(Xi)(i=0,1,……n)的函数P(x),并以P(x)(乍为f(x)的估值。
此处f(x)称为被插值函数,xo,X1,……Xn称为插值结(节)点,①(Co,C1,……Cn)称为插值函数类,上面等式称为插值条件,①
(Co,……Cn)中满足上式的函数称为插值函数,R(x)=f(x)-P(X)称为插值余项。
求解这类问题,它有很多种插值法,其中以拉格朗日(Lagrange)插值和牛顿
(Newton)插值为代表的多项式插值最有特点,常用的插值还有Hermit插值,分段插
值和样条插值。
一.拉格朗日插值
1•问题提出:
已知函数yfx在n+1个点Xo*丄x上的函数值y°,yi丄,y*,求任意一点
X的函数值fX。
说明:
函数yfx可能是未知的;也可能是已知的,但它比较复杂,很难计
算其函数值fX
2.解决方法:
3.
fX,则
构造一个n次代数多项式函数Fnx来替代未知(或复杂)函数y
ao,ai,a2,L,an。
3.构造PnX的依据:
X
。
根据这个条件,
可以写出非齐次线性方程组:
ao
ax
2
a2Xo
L
n
anXo
yo
ao
a1x1
2
a2x
L
n
anX1
y1
L
L
ao
ax
2
a?
Xn
L
n
anXn
yn
Rx逼近于原来的函数
其系数矩阵的行列式D为范德萌行列式:
1XoXo2L
1x1x12L
MMM
1XnXn2L
故当n+1个点的横坐标X。
"丄,Xn各不相同时,方程组系数矩阵的行列式D不等于零,故方程组有唯一解。
即有以下结论。
结论:
当已知的n+1个点的横坐标Xo,Xi,L,xn各不相同时,则总能够构造唯一的n次多项式函数PnX,使PnX也过这n+1个点。
4.几何意义
5.举例:
已知函数fx二,求f115。
分析:
本题理解为,已知“复杂”函数fx,当x=81,100,121,144时,其对应的函数值为:
y=9,10,11,12,当x=115时,求函数值f115。
解:
(1)线性插值:
过已知的(100,10)和(121,11)两个点,构造1次多项式函
数Px,于是有
(2)抛物插值:
构造2次多项式函数巳x,使得它过已知的(100,10)(121,11)
和(144,12)三个点。
于是有2次拉格朗日插值多项式:
则有
其表达式为:
lkx
XXj
j0XkXj
jk
拉格朗日公式特点:
2.每一项中的分子是关于x的n次多项式,分母是一个常数;
3.每一项的分子和分母的形式非常相似,不同的是:
分子是xL,而分母是Xk
7.误差分析(拉格朗日余项定理)
n1n
XXk
k0
其中在X0,X1,L,Xn,X所界定的范围内
针对以上例题的线性插值,有
R115f115115100115121
2!
函数fx在[100,115]区间绝对值的极大值为f1002.5104,
则有:
R115f1150.011250.05
于是近似值f115R11510.71428571428572有三位有效数字。
针对以上例题的抛物线插值,有
f
F2115f115115100115121115144
3!
函数fx在[100,115]区间绝对值的极大值为f1003.75106,则有
F2115f1150.00163125V0.005
于是近似值f115R211510.72275550536420有四位有效数字。
8.拉格朗日插值公式的优点
公式有较强的规律性,容易编写程序利用计算机进行数值计算。
9.拉格朗日插值通用程序
程序流程图如下:
y
输入n
x[i],y[i],(i=0,1,n)
t(即插值点x)
开始
p=0,k=0
k<=n
y
计算l(k)
p=p+l*y[k]
k=k+1
输出P
结束
l=1,
=0
►
n
jy
l=l*(t-x[j])/(x[k]-x[j])
j=j+1
j=k+1
n
j
l=l*(t-x[j])/(x[k]-x[j])
j=j+1
文件lagrange.m女口下:
格朗日插值
closeall
n=input('已知的坐标点数n=?
');
x=input('x1,x2,...,xn=?
');
y=input('y1,y2,...,yn=?
');
%定义t为符号量
xx=input('插值点=?
');
symst
p=0;
fork=1:
n
l=1;
forj=1:
k-1
l=l*(t-x(j))/(x(k)-x(j));
end
forj=k+1:
n
I=l*(t-x(j))/(x(k)-x(j));
end
p=p+l*y(k);
end
p=inline(p);%把符号算式p变为函数形式
fplot(p,[min(min(x),xx)-1,max(max(x),xx)+1]);%画多项式函数
holdon
p(xx)%显示插值点
plot(x,y,'o',xx,p(xx),'*');%画已知点和插值点
在MATLAB命令窗口输入:
lagrange
然后有以下对话过程和结果,
已知的坐标点数n=?
6
x1,x2,...,xn=?
[1,3,5,7,9,11]
y1,y2,...,yn=?
[-1,20,0,-1,12,3]
插值点=?
8
ans=
5.67187500000000
有以下图形:
二.牛顿插值
拉格朗日插值的缺点:
无承袭性(继承性)
若算出3点的抛物插值精度不够,再进行4点的3次多项式插值时,必须从头算起,前面算出的3点抛物插值的计算结果不能利用。
而泰勒插值却是具有承袭性的,如线性插值的结果不精确,那么再加上一项,
就变成了泰勒抛物插值,如:
泰勒1次插值:
RXfXofXoxXo
泰勒2次插值:
P2XfXofXoXXo
而牛顿插值就是具有承袭性的插值公式
1.差商的概念
设n+1个点Xo,"凡互不相等,则定义:
Xi和Xjij两点的一阶差商为:
fX,Xj
、亠、f
Xi,Xj,Xk二点的二阶差商为:
fXi,Xj,Xk—
Xi,Xj,Xk,X|四点的三阶差商为:
fXi,Xj,Xk,X|
Xo2
XXoO
2!
Xi
fXj
XiXj
Xi.XjfXj.Xk
XiXk
n+1个点Xo,捲丄,Xn的n阶差商为:
Xo-X^L,Xn
fX0,X1,L,Xn!
fN,X2,L,Xn
XXn
差商具有对称性:
fXj,XjfXj,Xj;fXj,Xj,XkfXj-X^Xk
2.牛顿插值解决的问题与拉格朗日插值解决的问题相同
只是表述n次多项式pnX的公式不同。
3.牛顿插公式的推导
根据差商的概念,有:
fXfXofX,XoXXofX,Xo是X,Xo两点的一阶差商;
把以上各式从后向前逐次代入,可以得到:
FnXRnX
fX,Xo,X,丄,XnXXXXjLXXn
以上PnX的表达式称为牛顿插值公式,可以证明,n次牛顿插值多项式与n
次拉格朗日插值多项式完全相同,只是表达形式不同。
故,拉格朗日余项定理与牛顿余项定理相同:
RnXPnX
X,Xo,Xi丄
Xn
XXk
^TTkoXXk,
其中在Xo,Xi,L,Xn,X所界定的范围内。
、fn1
则有公式:
fX,Xo,Xi,L,Xn
n1!
4.牛顿插值差商表
Xi
yi
一阶差商
二阶差商
n阶差商
*
x0
yo
1
x1
y1
f[x0,x1]
(x-x0)
x2
y2
f[x1,x2]
f[x0,x1,x2]
(x-x0)(x-x1)
x3
y3
f[x2,x3]
f[x1,x2,x3]
(x-x0)…(x-x2)
…
…
xn-1
yn-1
xn
yn
f[xn-1,xn]
f[xn-2,xn-1,xn]
…
f[x0,…,xn]
(x-x0)…(x-xn-1)
5举例
已知函数f(x)当x=-2,-1,0,1,2时,其对应函数值为f(x)=13,-8,-1,4,1。
求f(0.5)的值。
解:
该题目与例1相比,就是多了一个点,所以和例1的差商表相比,只需多一列,多一行:
xi
yi
一阶差
商
二阶差
商
三阶差
商
四阶差
商
*
-2
13
1
-1
-8
-21
(x+2)
0
-1
7
14
(x+2)(x+1)
1
4
5
-1
-5
(x+2)(x+1)x
2
1
-3
-4
-1
1
(x+2)(x+1)x(x-1)
而5个点的4次牛顿插值多项式P4x是在P3x的基础上多增加1项:
F4x1321x214x2x15x2x1xx2x1xx1
则
f0.5P40.513210.52140.520.5150.520.510.50.520.510.50.5
2.6875
可以在MATLAB下运行程序newton02.m:
p4=inline('13-21*(x+2)+14*(x+2)*(x+1)-5*(x+2)*(x+1)*x+(x+2)*(x+1)*x*(x-1)');
fplot(p4,[-2.5,2.5],'r');
holdon
xi=[-2,-1,0,1,2];
yi=[13,-8,-1,4,1];
plot(xi,yi,'*');
plot(0.5,p4(0.5),'o');
可以得到以下图形:
6.牛顿插值的优点
(1)具有承袭性质
(2)利用差商表,计算多点插值,比拉格朗日公式计算方便。
7.牛顿插值算法的通用程序
以下是程序流程图:
MATLAB的通用程序newton.m为:
%牛顿插值
closeall
n=input('已知的坐标点数n=?
');
x=input('x1,x2,...,xn=?
');
y=input('y1,y2,...,yn=?
');
xx=input('插值点=?
');
%计算差商:
f[x1,x2],f[x1,x2,x3],...,f[x1,x2,...,xn]
f=y;
fori=1:
n-1
%计算第i阶差商
fork=n:
-1:
i+1
f(k)=(f(k)-f(k-1))/(x(k)-x(k-i));
end
end
symst%定义t为符号量
P=f
(1);
fork=2:
n
1=1;
forj=1:
k-1
l=l*(t-x(j));
endp=p+l*f(k);
end
p=inline(p);
%把符号算式p变为函数形式
fplot(p,[min(min(x),xx)-1,max(max(x),xx)+1]);
holdon
%画多项式函数
p(xx)
%显示插值点
plot(x,y,'o',xx,p(xx),'*');
%画已知点和插值点
在MATLAB命令窗口输入:
newton
然后有以下对话过程和结果,
已知的坐标点数n=?
6
x1,x2,...,xn=?
[1,3,5,7,9,11]
y1,y2,...,yn=?
[-1,20,0,-1,12,3]
插值点=?
8ans=
5.67187500000000
有以下图形:
三.总结和展望
插值与逼近都是指用某个简单的函数在满足一定条件下在某个范围内近似代替另一个较复杂的函数或解析表达式未能给出的函数,以便于简化对后者的各种计算或揭示后者的某些性质。
插值方法理论是近似计算和逼近函数的有效方法。
此外,它也是数值微积分,微分方程数值解等数值分析的基础。
在图形处理等很多需要优化的实际中,也有着很广泛的应用。
我们期望在以后的生活中会更加熟练和更好的运用插值方法。
参考文献
[1]李庆扬,王能超,易大义•数值分析[M].:
华中科技大学出版社,1982.
[2]吴才斌.插值方法[J].湖北大学成人教育学院学报,1999,(5).
[3]徐萃薇,孙绳武.计算方法引论[M].:
高等教育出版社,2002.
[4]林鹭.拉格朗日插值多项式的一种并行算法[J].厦门大学学报:
自然科学版,
2004,43(5):
592-595.
[5]吴筑筑.计算方法[M].:
清华大学出版社,2004:
61-84.
[6]杨士俊,王兴华.Hermite插值多项式的差商表示及其应用[J].高校应用数学学报A辑,2006,21
(1):
70-78.
[7]齐东旭,李华山.数据逼近的多结点样条技术[J].中国科学(E辑),1999,29⑷:
334-387.
[8]王仁宏.数值逼近[M].:
高等教育出版社,1999.
[9]孙亮.数值分析方法课程的特点与思想[J].工科数学,2002,18
(1):
84-86.