第二章多项式插值 (2)
- 格式:ppt
- 大小:1.04 MB
- 文档页数:48
第二章 插值法⏹ 多项式插值的存在性 ⏹ Lagrange 插值 ⏹ Newton 插值 ⏹ Hermit 插值 ⏹ 分段低次插值 ⏹ 三次样条插值在生产实践和科学研究所遇到的大量函数中,相当一部分是通过测量或实验得到的。
虽然其函数关系)(x f y =在某个区间[]b a ,是客观存在的,但是却不知道具体的解析表达式,只能通过观察、测量或实验得到函数在区间a ,b]上一些离散点上的函数值、导数值等,因此,希望对这样的函数用一个比较简单的函数表达式来近似地给出整体上的描述。
还有些函数,虽然有明确的解析表达式,但却过于复杂而不便于进行理论分析和数值计算,同样希望构造一个既能反映函数的特性又便于计算的简单函数,近似代替原来的函数。
插值法就是寻求近似函数的方法之一.在用插值法寻求近似函数的过程中,根据所讨论问题的特点,对简单函数的类型可有不同的选取,如多项式、有理式、三角函数等,其中多项式结构简单,并有良好的性质,便于数值计算和理论分析,因此被广泛采用。
本章主要介绍多项式插值、分段多项式插值和样条插值. 2.1 插值多项式的存在唯一性 2.1.1 插值问题设函数)(x f y =在区间],[b a 上有定义,且已知函数在区间],[b a 上n+1个互异点n x x x ,,,10 处的函数值)(i i x f y = i=0,1,…,n ,若存在一个简单函数)(x p y =,使其经过)(x f y =上的这n+1个已知点),(,),,(),,(1100n n y x y x y x (图5-1),即n i y x p i i ,,1,0 ,)( == (2.1.1)那么,函数)(x p 称为插值函数,点n x x x ,,,10 称为插值节点,],[b a 称为插值区间,求)(x p 的方法称为插值法,)(x f 称为被插函数。
若)(x p 是次数不超过n 的多项式,记为)(x p n ,即n n n x a x a a x p +++= 10)(则称)(x p n 为n 次插值多项式,相应的插值法称为多项式插值;若)(x p 为分段多项式,称为分段插值,多项式插值和分段插值称为代数插值。
在数值分析中,拉格朗日插值法是以法国十八世纪数学家约瑟夫·拉格朗日命名的一种多项式插值方法。
许多实际问题中都用函数来表示某种内在联系或规律,而不少函数都只能通过实验和观测来了解。
如对实践中的某个物理量进行观测,在若干个不同的地方得到相应的观测值,拉格朗日插值法可以找到一个多项式,其恰好在各个观测的点取到观测到的值。
这样的多项式称为拉格朗日(插值)多项式。
数学上来说,拉格朗日插值法可以给出一个恰好穿过二维平面上若干个已知点的多项式函数。
拉格朗日插值法最早被英国数学家爱德华·华林于1779年发现[1],不久后(1783年)由莱昂哈德·欧拉再次发现。
1795年,拉格朗日在其著作《师范学校数学基础教程》中发表了这个插值方法,从此他的名字就和这个方法联系在一起[2]。
对于给定的若n+1个点,对应于它们的次数不超过n 的拉格朗日多项式只有一个。
如果计入次数更高的多项式,则有无穷个,因为所有与相差的多项式都满足条件。
定义对某个多项式函数,已知有给定的k + 1个取值点:其中对应着自变量的位置,而对应着函数在这个位置的取值。
假设任意两个不同的x j都互不相同,那么应用拉格朗日插值公式所得到的拉格朗日插值多项式为:其中每个为拉格朗日基本多项式(或称插值基函数),其表达式为:[3]拉格朗日基本多项式的特点是在上取值为1,在其它的点上取值为0。
存在性对于给定的k+1个点:,拉格朗日插值法的思路是找到一个在一点取值为1,而在其他点取值都是0的多项式。
这样,多项式在点取值为,而在其他点取值都是0。
而多项式就可以满足在其它点取值为0的多项式容易找到,例如:它在点取值为:。
由于已经假定两两互不相同,因此上面的取值不等于0。
于是,将多项式除以这个取值,就得到一个满足“在取值为1,而在其他点取值都是0的多项式”:这就是拉格朗日基本多项式。
唯一性次数不超过k的拉格朗日多项式至多只有一个,因为对任意两个次数不超过k的拉格朗日多项式:和,它们的差在所有k+1个点上取值都是0,因此必然是多项式的倍数。
第2章 插值法1、当x=1,-1,2时,f(x)=0,-3,4,求f(x)的二次插值多项式。
(1)用单项式基底。
(2)用Lagrange 插值基底。
(3)用Newton 基底。
证明三种方法得到的多项式是相同的。
解:(1)用单项式基底设多项式为:2210)(x a x a a x P ++=,所以:6421111111111222211200-=-==x x x x x x A 37614421111111424113110111)()()(222211200222221112000-=-=---==x x x x x x x x x f x x x f x x x f a 2369421111111441131101111)(1)(1)(12222112002222112001=--=--==x x x x x x x x f x x f x x f a 6565421111111421311011111)(1)(1)(12222112002211002=--=---==x x x x x x x f x x f x x f x a 所以f(x)的二次插值多项式为:2652337)(x x x P ++-= (2)用Lagrange 插值基底)21)(11()2)(1())(())(()(2010210-+-+=----=x x x x x x x x x x x l)21)(11()2)(1())(())(()(2101201------=----=x x x x x x x x x x x l)12)(12()1)(1())(())(()(1202102+-+-=----=x x x x x x x x x x x lLagrange 插值多项式为:372365)1)(1(314)2)(1(61)3(0)()()()()()()(22211002-+=+-⨯+--⨯-+=++=x x x x x x x l x f x l x f x l x f x L所以f(x)的二次插值多项式为:22652337)(x x x L ++-= (3) 用Newton 基底: 均差表如下:Newton 372365)1)(1(65)1(230))(](,,[)](,[)()(21021001002-+=+-+-+=--+-+=x x x x x x x x x x x x f x x x x f x f x N所以f(x)的二次插值多项式为:22652337)(x x x N ++-= 由以上计算可知,三种方法得到的多项式是相同的。
第二章插值法2.在区间[-1,1]上分别取n=10,20用两组等距节点对龙哥函数f(x)=1/(1+25*x^2)做多项式插值及三次样条插值,对每个n值,分别画出插值函数及f(x)的图形。
(1)多项式插值①先建立一个多项式插值的M-file;输入如下的命令(如牛顿插值公式):function [C,D]=newpoly(X,Y)n=length(X);D=zeros(n,n)D(:,1)=Y'for j=2:nfor k=j:nD(k,j)=(D(k,j-1)- D(k-1,j-1))/(X(k)-X(k-j+1));endendC=D(n,n);for k=(n-1):-1:1C=conv(C,poly(X(k)))m=length(C);C(m)= C(m)+D(k,k);end②当n=10时,我们在命令窗口中输入以下的命令:clear,clf,hold on;X=-1:0.2:1;Y=1./(1+25*X.^2);[C,D]=newpoly(X,Y);x=-1:0.01:1;y=polyval(C,x);plot(x,y,X,Y,'.');grid on;xp=-1:0.2:1;z=1./(1+25*xp.^2);plot(xp,z,'r')得到插值函数和f(x)图形:③当n=20时,我们在命令窗口中输入以下的命令:clear,clf,hold on;X=-1:0.1:1;Y=1./(1+25*X.^2);[C,D]=newpoly(X,Y);x=-1:0.01:1;y=polyval(C,x);plot(x,y,X,Y,'.');grid on;xp=-1:0.1:1;z=1./(1+25*xp.^2);plot(xp,z,'r')得到插值函数和f(x)图形:(2)三次样条插值①先建立一个多项式插值的M-file;输入如下的命令:function S=csfit(X,Y,dx0,dxn)N=length(X)-1;H=diff(X);D=diff(Y)./H;A=H(2:N-1);B=2*(H(1:N-1)+H(2:N));C=H(2:N);U=6*diff(D);B(1)=B(1)-H(1)/2;U(1)=U(1)-3*(D(1));B(N-1)=B(N-1)-H(N)/2;U(N-1)=U(N-1)-3*(-D(N));for k=2:N-1temp=A(k-1)/B(k-1);B(k)=B(k)-temp*C(k-1);U(k)=U(k)-temp*U(k-1);endM(N)=U(N-1)/B(N-1);for k=N-2:-1:1M(k+1)=(U(k)-C(k)*M(k+2))/B(k);endM(1)=3*(D(1)-dx0)/H(1)-M(2)/2;M(N+1)=3*(dxn-D(N))/H(N)-M(N)/2;for k=0:N-1S(k+1,1)=(M(k+2)-M(k+1))/(6*H(k+1));S(k+1,2)=M(k+1)/2;S(k+1,3)=D(k+1)-H(k+1)*(2*M(k+1)+M(k+2))/6;S(k+1,4)=Y(k+1);end②当n=10时,我们在命令窗口中输入以下的命令:clear,clcX=-1:0.2:1;Y=1./(25*X.^2+1);dx0= 0.0739644970414201;dxn= -0.0739644970414201; S=csfit(X,Y,dx0,dxn)x1=-1:0.01:-0.5;y1=polyval(S(1,:),x1-X(1));x2=-0.5:0.01:0;y2=polyval(S(2,:),x2-X(2));x3=0:0.01:0.5; y3=polyval(S(3,:),x3-X(3));x4=0.5:0.01:1;y4=polyval(S(4,:),x4-X(4));plot(x1,y1,x2,y2,x3,y3,x4,y4, X,Y,'.')结果如图:②当n=20时,我们在命令窗口中输入以下的命令:clear,clcX=-1:0.1:1;Y=1./(25*X.^2+1);dx0= 0.0739644970414201;dxn= -0.0739644970414201; S=csfit(X,Y,dx0,dxn)x1=-1:0.01:-0.5;y1=polyval(S(1,:),x1-X(1));x2=-0.5:0.01:0;y2=polyval(S(2,:),x2-X(2));x3=0:0.01:0.5; y3=polyval(S(3,:),x3-X(3));x4=0.5:0.01:1;y4=polyval(S(4,:),x4-X(4));plot(x1,y1,x2,y2,x3,y3,x4,y4, X,Y,'.')结果如图:第三章函数逼近与快速傅里叶变换2.试求3次、4次多项式的曲线拟合,再根据数据曲线形状,求一个另外函数的拟合曲线,用图示数据曲线及相应的三种拟合曲线。