数值分析 第2章 插值法
- 格式:ppt
- 大小:2.89 MB
- 文档页数:105
1 / 21数值分析实验二:插值法1 多项式插值的震荡现象1.1 问题描述考虑一个固定的区间上用插值逼近一个函数。
显然拉格朗日插值中使用的节点越多,插值多项式的次数就越高。
我们自然关心插值多项式的次数增加时, 是否也更加靠近被逼近的函数。
龙格(Runge )给出一个例子是极著名并富有启发性的。
设区间[-1,1]上函数21()125f x x=+ (1)考虑区间[-1,1]的一个等距划分,分点为n i nix i ,,2,1,0,21 =+-= 则拉格朗日插值多项式为201()()125nn ii iL x l x x ==+∑(2)其中的(),0,1,2,,i l x i n =是n 次拉格朗日插值基函数。
实验要求:(1) 选择不断增大的分点数目n=2, 3 …. ,画出原函数f(x)及插值多项式函数()n L x 在[-1,1]上的图像,比较并分析实验结果。
(2) 选择其他的函数,例如定义在区间[-5,5]上的函数x x g xxx h arctan )(,1)(4=+=重复上述的实验看其结果如何。
(3) 区间[a,b]上切比雪夫点的定义为 (21)cos ,1,2,,1222(1)k b a b ak x k n n π⎛⎫+--=+=+ ⎪+⎝⎭(3)以121,,n x x x +为插值节点构造上述各函数的拉格朗日插值多项式,比较其结果,试分析2 / 21原因。
1.2 算法设计使用Matlab 函数进行实验, 在理解了插值法的基础上,根据拉格朗日插值多项式编写Matlab 脚本,其中把拉格朗日插值部分单独编写为f_lagrange.m 函数,方便调用。
1.3 实验结果1.3.1 f(x)在[-1,1]上的拉格朗日插值函数依次取n=2、3、4、5、6、7、10、15、20,画出原函数和拉格朗日插值函数的图像,如图1所示。
Matlab 脚本文件为Experiment2_1_1fx.m 。
可以看出,当n 较小时,拉格朗日多项式插值的函数图像随着次数n 的增加而更加接近于f(x),即插值效果越来越好。
第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 ++-= 由以上计算可知,三种方法得到的多项式是相同的。
第一章 绪论(12) 第二章 插值法(40-42)2、当2,1,1-=x 时,4,3,0)(-=x f ,求)(x f 的二次插值多项式。
[解]372365)1(34)23(21)12)(12()1)(1(4)21)(11()2)(1()3()21)(11()2)(1(0))(())(())(())(())(())(()(2221202102210120120102102-+=-++--=+-+-⨯+------⨯-+-+-+⨯=----+----+----=x x x x x x x x x x x x x x x x x x x y x x x x x x x x y x x x x x x x x y x L 。
3、给出x x f ln )(=的数值表用线性插值及二次插值计算54.0ln 的近似值。
X 0.4 0.5 0.6 0.7 0.8 x ln -0.916291 -0.693147 -0.510826 -0.357765 -0.223144[解]若取5.00=x ,6.01=x ,则693147.0)5.0()(00-===f x f y ,510826.0)6.0()(11-===f x f y ,则604752.182321.1)5.0(10826.5)6.0(93147.65.06.05.0510826.06.05.06.0693147.0)(010110101-=---=--⨯---⨯-=--+--=x x x x x x x x x y x x x x y x L ,从而6202186.0604752.19845334.0604752.154.082321.1)54.0(1-=-=-⨯=L 。
若取4.00=x ,5.01=x ,6.02=x ,则916291.0)4.0()(00-===f x f y ,693147.0)5.0()(11-===f x f y ,510826.0)6.0()(22-===f x f y ,则 217097.2068475.404115.2)2.09.0(5413.25)24.0(3147.69)3.01.1(81455.45)5.06.0)(4.06.0()5.0)(4.0()510826.0()6.05.0)(4.05.0()6.0)(4.0()693147.0()6.04.0)(5.04.0()6.0)(5.0(916291.0))(())(())(())(())(())(()(22221202102210120120102102-+-=+--+-⨯++-⨯-=----⨯-+----⨯-+----⨯-=----+----+----=x x x x x x x x x x x x x x x x x x x x x x y x x x x x x x x y x x x x x x x x y x L ,从而61531984.0217097.21969765.259519934.0217097.254.0068475.454.004115.2)54.0(22-=-+-=-⨯+⨯-=L补充题:1、令00=x ,11=x ,写出x e x y -=)(的一次插值多项式)(1x L ,并估计插值余项。
Ch2. 插值法§1. 插值问题引例 矿井中某处的瓦斯浓度y 与该处距地面的距离x 有关,现用仪器测得从地面到井下500米每隔50米的瓦斯浓度数据(,)(0,1,2,,10)= i i x y i ,根据这些数据完成下列工作:(1)寻找一个函数,要求从此函数中可近似求得从地面到井下500米之间任意一点处的瓦斯浓度;(2)估计井下600米处的瓦斯浓度。
第一个问题可归结为“已知函数在n x x x ,,,10⋅⋅⋅处的值,求函数在区间[]n x x ,0内其它点处的值”,这种问题适宜用插值方法解决。
但对第二个问题不宜用插值方法,因为600米已超出所给数据范围,用插值函数外推插值区间外的数据会产生较大的误差。
解决第二个问题的常用方法是,根据地面到井下500处的数据求出瓦斯浓度与地面到井下距离之间的函数关系)(x f ,由)(x f 求井下600米处的瓦斯浓度。
定义 设)(x f y =在[]b a ,中1+n 个点n x x x <⋅⋅⋅<<10处的值)(i i x f y =为已知,现根据上述数据构造一个简单函数)(x p ,使i i y x p =)(,这种问题称为插值问题。
i x x p x f ),(),(,i i y x p =)(分别称为被插值函数、插值函数、插值节点和插值条件。
若)(x p 为多项式,则此问题称为多项式插值或代数插值。
定理1 在插值节点n x x x ,,,10⋅⋅⋅处,取给定值n y y y ,,,10⋅⋅⋅,且次数不高于n 的插值多项式是存在且唯一的。
证 令n n x a x a a x p +⋅⋅⋅++=10)(,则根据插值条件i i y x p =)(有下列等式:⎪⎪⎩⎪⎪⎨⎧=+⋅⋅⋅++=⋅⋅⋅⋅⋅⋅=+⋅⋅⋅++==+⋅⋅⋅++=n n n n n n nn nn yx a x a a x p y x a x a a x p y x a x a a x p 10111101000100)()()( (关于i a 的1+n 阶线性方程组), 其系数行列式是范德蒙(V andermonde )行列式()011111100≠-=⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅=∏≥>≥j i n j innnnn x xx x x x x x D 。
第二章插值法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次多项式的曲线拟合,再根据数据曲线形状,求一个另外函数的拟合曲线,用图示数据曲线及相应的三种拟合曲线。
第二章 插值法在科学研究与工程技术中,常常遇到这样的问题:由实验或测量得到一批离散样点,要求作出一条通过这些点的光滑曲线,以便满足设计要求或进行加工。
反映在数学上,即已知函数在一些点上的值,寻求它的分析表达式。
此外,一些函数虽有表达式,但因式子复杂,不易计算其值和进行理论分析,也需要构造一个简单函数来近似它。
解决这种问题的方法有两类:一类是给出函数()f x 的一些样点,选定一个便于计算的函数()x ϕ形式,如多项式、分式线性函数及三角多项式等,要求它通过已知样点,由此确定函数()x ϕ作为()f x 的近似,这就是插值法;另一类方法在选定近似函数的形式后,不要求近似函数过已知样点,只要求在某种意义下在这些样点上的总偏差最小。
这类方法称为曲线(数据)拟合法。
设已知区间[,]a b 上的实值函数f 在1n +个相异点[,]i x a b ∈处的函数值(),0,1,,i if f x i n ==,要求构造一个简单函数()x ϕ作为函数()f x 的近似表达式()()f x x ϕ≈使得()(),0,1,,i i i x f x f i n ϕ=== (2-1)这类问题称为插值问题。
称f 为被插值函数;()x ϕ为插值函数;0,,n x x 为插值节点;(2-1)为插值条件。
若插值函数类{()}x ϕ是代数多项式,则相应的插值问题为代数插值。
若{()}x ϕ是三角多项式,则相应的插值问题称为三角插值。
若{()}x ϕ是有理分式,则相应的插值问题称为有理插值。
§1 Lagrange 插值1.1 Lagrange 插值多项式设函数f 在1n +个相异点01,,,n x x x 上的值(),0,1,,i i f f x i n ==是已知的,在次数不超过n 的多项式集合n P 中,求()n L x 使得(),0,1,,n i i L x f n n == (2-2)定理1 存在惟一的多项式n nL P ∈满足插值条件(2-2)。
数值分析--第2章插值法第2章 插值法在科学研究与工程技术中,常常遇到这样的问题:由实验或测量得到一批离散样点,要求作出一条通过这些点的光滑曲线,以便满足设计要求或进行加工。
反映在数学上,即已知函数在一些点上的值,寻求它的分析表达式。
此外,一些函数虽有表达式,但因式子复杂,不易计算其值和进行理论分析,也需要构造一个简单函数来近似它。
解决这种问题的方法有两类:一类是给出函数)(x f 的一些样点,选定一个便于计算的函数)(x ϕ形式,如多项式、分式线性函数及三角多项式等,要求它通过已知样点,由此确定函数)(x ϕ作为)(x f 的近似,这就是插值法;另一类方法在选定近似函数的形式后,不要求近似函数过已知样点,只要求在某种意义下在这些样点上的总偏差最小。
这类方法称为曲线(数据)拟合法。
设已知函数f 在区间],[b a 上的1+n 个相异点ix 处的函数值(),0,,iif f x i n ==,要求构造一个简单函数()x ϕ作为函数()f x 的近似表达式()()f x x ϕ≈,使得()(),0,1,,iiix f x f i n ϕ=== (2-1) 这类问题称为插值问题。
称f 为被插值函数;()x ϕ为插值函数;nx x ,,0 为插值节点;(2-1)为插值条件。
若插值函数类{()}x ϕ是代数多项式,则相应的插值问题为代数插值。
若{()}x ϕ是三角多项式,则相应的插值问题称为三角插值。
若{()}x ϕ是有理分式,则相应的插值问题称为有理插值。
§1 Lagrange 插值1.1 Lagrange 插值多项式设函数f 在1+n 个相异点01,,,nx x x 上的值n i x f f ii ,,1,0),( ==是已知的,在次数不超过n 的多项式集合n P 中,求()nL x 使得(),0,1,,n i iL x f n n == (2-2) 定理2.1 存在惟一的多项式nn P L ∈满足插值条件(2-2)。
数值分析第2章插值法插值法是数值分析中常用的一种数值逼近方法,用于在给定一组有限数据点的情况下,通过构造合适的数学模型来估计这些数据点之间的未知数值。
插值法的应用广泛,包括图像处理、计算机辅助设计、数值计算等领域。
常见的插值方法有拉格朗日插值、牛顿插值、埃尔米特插值以及样条插值等。
这些方法都是基于多项式的插值形式,通过构造一个多项式函数来逼近数据点,并据此对未知点进行估计。
拉格朗日插值是一种基于拉格朗日多项式的插值方法。
对于给定的n+1个不同的数据点 (x0, y0), (x1, y1), ..., (xn, yn),拉格朗日插值构造了一个n次多项式Ln(x),满足:Ln(x) = y0L0(x) + y1L1(x) + ... + ynLn(x)其中,L0(x),L1(x),...,Ln(x)是拉格朗日基函数,定义为:Lk(x) = ∏(i≠k)(x - xi)/(xk - xi) (k = 0, 1, ..., n)拉格朗日插值方法的优点是简单易用,但随着数据点数量的增加,拉格朗日多项式的计算复杂度也会大大增加。
牛顿插值是另一种基于多项式的插值方法,它使用差商的概念来构造插值多项式。
对于给定的n+1个不同的数据点 (x0, y0), (x1, y1), ..., (xn, yn),牛顿插值构造了一个n次多项式Nn(x),满足:Nn(x) = y0 + c0(x - x0) + c1(x - x0)(x - x1) + ... + cn(x -x0)(x - x1)...(x - xn-1)其中,c0 = Δy0/(x0 - x1),ci = Δyi/(xi - xi+1) (i = 0, 1, ..., n-1),Δyi = yi+1 - yi。
牛顿插值方法相比于拉格朗日插值方法,在计算多项式时具有更高的效率,尤其是在需要更新数据点时。
此外,牛顿插值方法还可以通过迭代的方式得到更高次数的插值多项式。