龙格现象
- 格式:doc
- 大小:71.50 KB
- 文档页数:6
利用MQ拟插值解决高次插值所出现的龙格现象寿媛;陈豫眉【摘要】Interpolation is an ancient and practical approach mostly used for function approximation .In view of that different interpolation methods have different advantages and disadvantages , this paper is aimed at the re-search on how to solve Runge phenomenon appearing in the Lagrange polynomial interpolation .In practice, piece-wise linear interpolation is frequently used to avoid high order interpolation Runge phenomenon , while MQ quasi-in-terpolation can also be applied for the high-order interpolation Runge phenomenon solution by real example analy-sis.%本文对拉格朗日插值法在高次插值时出现的龙格现象展开研究。
通过实例分析可知,MQ拟插值可以解决高次插值时出现的龙格现象。
【期刊名称】《洛阳师范学院学报》【年(卷),期】2016(035)005【总页数】4页(P6-9)【关键词】拉格朗日插值;线性分段插值;MQ拟插值【作者】寿媛;陈豫眉【作者单位】西华师范大学数学与信息学院,四川南充637009;西华师范大学数学与信息学院,四川南充637009【正文语种】中文【中图分类】O241.3插值是函数逼近的一种重要方法,它可以通过函数在有限个点处的取值,利用形式简单的函数估计出形式复杂、不易计算的函数在其它点处的近似值.常用的插值有多项式插值[1]、样条曲线插值、代数曲线插值等.由于多项式插值具有计算简单等特点,因此常常用做逼近函数.对于一些函数,运用多项式插值,可以构造出形式简单并且具有良好逼近效果的多项式.但并不是所有的函数利用插值多项式都能够得到良好的逼近效果,例如有些函数在插值节点周围会出现龙格现象.龙格现象[2]是指,在区间内取等距插值点,运用插值多项式进行逼近时,逼近多项式在区间两端会发生震荡,并且随着插值次数增高,震荡现象也会严重,因而逼近误差也会增大.为了解决龙格现象,通常使用分段线性插值,利用分区间的低阶多项式对被插值函数进行良好地逼近.本文利用MQ拟插值[3]来解决龙格现象.MQ拟插值中有可调节的形状参数c,并且MQ拟插值自身具有无穷次可微性,因此MQ拟插值继承了分段线性插值函数的优点,同时解决了分段线性插值函数在插值节点处不光滑的缺点,从而可知MQ拟插值能够构造出基于等距节点的插值函数,这种插值函数能良好的逼近原函数,可以消除龙格现象.多项式具有简单、容易计算等特点,而且多项式函数几乎可以逼近所有的函数,因此,常常运用多项式逼近其它复杂、不易计算的函数.对于一个n次插值多项式Pn(x),往往需要求解插值多项式的系数ai(i=0,1,…,n),而且,当n较大时,求解多项式的系数会麻烦.因此,为了简化计算,可以通过拉格朗日插值来构造插值函数.定义1[4] 设a=x0<x1<…<xn=b,已知函数值yi=f(xi)(i=0,1,…,n),Ln(x)为不超过n次的多项式,则拉格朗日插值多项式为li(x)=).利用拉格朗日多项式构造插值时,随着插值节点个数的增加,拉格朗日插值对于原函数的逼近效果并不见得好.因为随着插值节点个数的增多,在插值节点周围会发生震荡现象,并且这种偏离现象往往会随着插值节点个数的增加而越来越严重.为段线性插值.定义2[4] f(x)在[a,b]上具有二阶连续导数,对于节点a=x0<x1<…<xn=b,已知其函数值f(x0), f(x1), …, f(xn),记hi=xi+1-xi,h=maxihi,因此,Ih(x)在每个小区间[xi,xi+1]上可表示为1968年,R.L. Hardy提出一种新的径向基函数——Multi-quadric函数,简称MQ[5],并于1971年首次发表了一篇关于MQ的论文[6]. 现如今,人们主要将MQ用于函数的逼近,也就是函数的插值.但是,利用MQ插值时需要求解一个系数矩阵,而当插值节点的个数很大时,这个系数矩阵往往是病态的.因此,就开始了对MQ拟插值(Lf)(x)的研究.定义3[3] 如果a=x0<x1<…<xn=b,h=max(xj-xj-1),对于给定函数f∈C1[x0, xn]和数据拟插值算子为(L f)(x)=∑fjψj(x),其中ψj(x)是函数φ(‖x-xj‖)的线性组合,φj(x)=φ(‖x-xj‖) c为参数且大于零.Powell和Beatson构造了三种MQ拟插值算子: (LA f)(x),(LB f)(x),(LCf)(x)[7],但是(LC f)(x)需要被插值函数在其端点处的导数信息,这限制了(LC f)(x)在实际中的应用. 因此,Wu和Schaback提出了另一种不需要被插值函数在端点处导数信息的MQ拟插值算子(LD f)(x)[8].MQ拟插值算子(LD f)(x)为.利用拉格朗日插值,分段线性插值和MQ拟插值分别进行函数插值,其中对于MQ拟插值中的形状参数c取为0.05.实验].实验].实验3 f3(x)=arctanx,x∈[-10,10].从实验1到实验3可以看出,对于简单函数,当插值节点的个数为6(即插值次数为5),用拉格朗日插值时,插值函数在插值区间的两端出现了震荡现象,并且随着插值次数的增加,震荡现象越明显.但是利用分段线性插值与MQ拟插值中并没有出现龙格现象,而且拟合的效果比较好.实验表明,除了常用的分段线性插值能够解决高次插值时出现的龙格现象,MQ拟插值也能消除龙格现象.。
实验名称:龙格反例的数值实验实验目的与要求:1、了解切比雪夫多项式零点插值;2、运用切比雪夫多项式零点插值法避免龙格现象。
3、与等距节点构造插值多项式比较。
实验内容:龙格反例的数值实验在区间[–5,5 ]上分别取11阶切比雪夫多项式的零点22)12(cos 5π+=k x k ( k = 0,1,2,……,10) 和等距节点作插值结点,计算函数211)(xx f +=在结点处的值 y k = f (x k )。
构造插值多项式L 10(x ),∑==10010)()(k k k y x l x L 其中,∏≠=--=n k j j j k j k x x x x x l 0)()()(。
取自变量点 t k = – 5 + 0.05k ( k =0,1,…,201),分别计算切比雪夫零点、等距节点插值多项式L k (x )和被插值函数f (x )在离散点t k ( k =0,1,…,201)上的值,并绘出三条曲线比较。
实验环境与器材:9#505机房、《数值分析》实验过程(步骤)或程序代码:function y=Lagrange(x,n,xx,yy)sum=0; %初始化for k=1:n+1lk=1; %初始化for i=1:n+1if k~=ilk=lk*(x-xx(i))/(xx(k)-xx(i));endendsum=lk*yy(k)+sum;endy=sum;clcclearfor i=1:11 %下标只能从1开始x1(i)=-5+10*(i-1)/10;x2(i)=5*cos((2*i-1)*pi/22);y1(i)=1/(1+x1(i)*x1(i));y2(i)=1/(1+x2(i)*x2(i)); %y1,y2分别是在两种节点处得到的函数值endh=0.05;for k=1:202x3(k)=-5+(k-1)*h;y11(k)=Lagrange(x3(k),10,x1,y1);y22(k)=Lagrange(x3(k),10,x2,y2);y(k)=1/(1+x3(k)*x3(k));%y11,y22分别为利用切比雪夫零点和等距节点构造出的插值多项式在离散点处的值endplot(x3,y11,'r');hold onplot(x3,y22,'g');hold onplot(x3,y,'b')%被插值函数在离散点处值的曲线图hold onxlabel('-5<=x<=5');ylabel('y');legend('f(x)=1/(1+x^2)','等距节点插值多项式','切比雪夫多项式零点插值多项式'); xlim([-5,5])实验结果与分析:分析:由高次插值的病态性质,我们知道次数n太高时会出现龙格现象,即L n(x)并不收敛于f(x),由上图我们也可以看到运用等距节点构造的插值多项式的确出现了龙格现象,因此并不适用。
高等数值分析拉格朗日插值多项式切比雪夫高斯龙格现象复合梯形辛普森求积公式解答:1.拉格朗日插值函数:function y=lagrange (a,b,x)y=0;if length(a)==length(b)n=length(a);else disp('ERROR!length(a)!=length(b)')return;endfor i=1:nk=1;for j=1:nif j~=ik=k.*(x-a(j))/(a(i)-a(j));endendy=y+k*b(i);end2.问题(a):function Q_am=100;n=10;x=-1:2/n:1;y=1./(1+9*x.^2);x0=-1:2/m:1;y0=lagrange(x,y,x0);y1=1./(1+9*x0.^2);plot(x0,y0,'--r');hold on;plot(x0,y1,'-b');end3.问题(b):function Q_bm=100;n=10;x=zeros(1,n+1);for i=1:n+1x(i)=cos((2*i-1)*pi/(2*n+2)); endy=1./(1+9*x.^2);x0=-1:2/m:1;y0=lagrange(x,y,x0);y1=1./(1+9*x0.^2);plot(x0,y0,'--r');hold on;plot(x0,y1,'-b');end4.问题(c):main.m(m文件)figure(1)Q_a()figure(2)Q_b()syms xy=1/(1+9*x^2);I0=int(y,-1,1);%准确值n=10;x=-1:2/n:1;y=1./(1+9*x.^2);I1=trapz(x,y);%复合梯形x0=zeros(1,n);for i=1:nx0(i)=(x(i)+x(i+1))/2;endy0=2/n*1./(1+9*x0.^2);I2=I1/3+2*sum(y0)/3;%复合辛普森x1=[-0.5384693101 0.5384693101 -0.9061798459 0.9061798459 0];y1=1./(1+9*x1.^2);A=[0.4786286705 0.4786286705 0.2369268851 0.2369268851 0.5688888889]; I3=y1*A'; %高斯5总结:(1).使用等距节点构造的高次拉格朗日插值多项式在正负1附件,插值值与真实值偏差非常大,存在较大的震荡。
Matlab中曲线拟合所用到的多项式逼近的表达式在Matlab中,曲线拟合是一种常见的数据分析方法,它可以用于找到一组数据点的最佳拟合曲线,从而帮助我们理解数据之间的关系并预测未来的趋势。
而多项式逼近则是曲线拟合中常用的方法之一,它通过一组多项式函数来拟合数据点,以尽可能地接近真实的数据分布。
本文将深入探讨在Matlab中曲线拟合所用到的多项式逼近的表达式,希望能够帮助读者更深入地理解这一主题。
1. 多项式逼近的基本原理多项式逼近是一种通过多项式函数来逼近已知函数的方法。
其基本原理是利用多项式函数的线性组合来近似表示已知函数,通过控制多项式的次数和系数,使得多项式函数能够在一定的范围内最大限度地接近已知函数。
在Matlab中,可以使用polyfit函数来实现多项式逼近,该函数可以根据给定的数据点和多项式次数,计算出最佳的多项式拟合曲线。
2. Matlab中的多项式逼近函数在Matlab中,多项式逼近主要是通过polyfit和polyval这两个函数来实现的。
其中,polyfit函数用于拟合数据点,得到最佳的多项式系数,而polyval函数则用于根据已知的多项式系数和自变量的取值,计算出对应的因变量值。
可以通过如下的代码来实现对一组数据点的多项式拟合:```matlabx = [1, 2, 3, 4, 5];y = [1, 4, 9, 16, 25];n = 2;p = polyfit(x, y, n);```在这段代码中,x和y分别代表已知的数据点,n代表多项式的次数,polyfit函数将会返回多项式的系数p,然后可以使用polyval函数来计算对应自变量值下的因变量值。
3. 多项式逼近的局限性和注意事项虽然多项式逼近是一种常用的曲线拟合方法,但它也有一定的局限性。
多项式逼近要求选择合适的多项式次数,如果次数选择不当,可能会导致过拟合或欠拟合的问题。
在拟合非线性数据时,多项式逼近的效果可能并不理想,这时需要考虑其他曲线拟合方法。
一、判断题1. 区间[a,b]上,若f(a)f(b)<0,则方程f(x)=0在[a,b]内一定有实根。
2. 22/7作为π=3.1415926……近似值,它有3位有效数字。
3. 设P(x)和Q(x)都是n 次多项式,如果在n +1 个不同的节点x i 上都有P(x i )=Q(x i ),则P(x)≡Q(x) 。
4. 取节点01231, 0, 2 ,4x x x x =-===作2()f x x =的插值多项式()p x ,则()p x 次数为2,插值基函数的次数为3。
5. 插值多项式严格通过所有的节点(x i ,y i )。
6. 若k<=n ,P(x)和Q(x)分别是 x k的通过n +1 个不同的节点的牛顿插值多项式和拉格朗日插值多项式则P(x)≡Q(x)≡x k。
7. 插值多项式次数越高,逼近效果越好。
8. 任何一组互异数据,逼近它们的多项式插值函数仅有一个。
9. 插值多项式次数与拟合曲线都严格通过所给定的数据点。
10. 求积公式:⎰30)(dx x f ≈。
f f f f 是插值型的)]3()2(3)1(3)0([83+++11. 牛顿-科特斯求积公式中的求积节点是等分的。
12. 牛顿法求方程ƒ(x)=0的单根, 在ƒ(x)可导的情况下, 至少二阶收敛。
13. 高斯型求积公式是插值型的。
14. 一阶亚当姆斯格式是单步法。
15. 显式的亚当姆斯公式:+-=+-()n n n n h y y f f 1132是单步法。
16. 求初值问题数值解的四阶亚当姆斯公式是多步法。
17. 如果有一常微分方程数值解法的局部截断误差3111()()n n n T y x y O h +++=-=,则该方法是3阶的。
18. 用一般迭代法求方程()0f x =的根,如其迭代过程()1k k x x ϕ+=发散,则方程()0f x = 的无解。
19. 牛顿法求方程ƒ(x)=0的根, 在ƒ(x)可导的情况下, 至少二阶收敛。
二.主要方、步骤:
1.运用FORTRAN编制原函数,拉格朗日插值和线性插值程序;
2.将数据运用grapher将实验数据绘制成图.
三.程序代码:
!龙格现象/高次插值的病态性质
PROGRAM LONGERend
parameter(n=10)
real(8) y(0:20),x(0:20),x1(0:20),y1(0:20),Ih(0:20)
!计算f(x)
open(2,file='y.doc')
write(2,"('x',30x,'f(x)')")
do i=0,n
x(i)=-5.0+10*i/n
y(i)=1.0/(1+x(i)**2)
write(2,*) x(i), y(i)
end do
!计算Ln(x),拉格朗日插值程序
OPEN(2,file='y1.doc')
write(2,"('x1',30x,'Ln(x)')")
do i=0,n-1
x1(i)=(x(i)+x(i+1))/2
y1(i)=0.0
do j=0,n
!计算Wn+1(x),W'n+1(x)
w=1.0
wp=1.0
do k=0,n
w=w*(x1(i)-x(k))
if(k/=j) then
wp=wp*(x(j)-x(k))
end if
end do
y1(i)=y1(i)+y(j)*w/wp/(x1(i)-x(j))
end do
write(2,*) x1(i),y1(i)
end do
!分段线性插值程序
open(2,file='Ih.doc')
write(2,"('x1',30x,'Ih')")
do k=0,n-1
Ih(k)=(x1(k)-x(k+1))/(x(k)-x(k+1))*y(k)+(x1(k)-x(k))/(x(k+1)-x(k))*y( k+1)
write(2,*) x1(k),Ih(k)
end do
print*,'数据已写入指定文件'
end
四.数值结果:
x f(x)
-5.00000000000000 3.846153846153846E-002 -4.00000000000000 5.882352941176471E-002 -3.00000000000000 0.100000000000000 -2.00000000000000 0.200000000000000 -1.00000000000000 0.500000000000000
0.000000000000000E+000 1.00000000000000
1.00000000000000 0.500000000000000
2.00000000000000 0.200000000000000
3.00000000000000 0.100000000000000
4.00000000000000
5.882352941176471E-002
5.00000000000000 3.846153846153846E-002
x1 Ln(x)
-4.50000000000000 1.57872102169562 -3.50000000000000 -0.226196282498366 -2.50000000000000 0.253755465606773 -1.50000000000000 0.235346591310803 -0.500000000000000 0.843407429828903
0.500000000000000 0.843407429828903
1.50000000000000 0.235346591310803
2.50000000000000 0.253755465606773
3.50000000000000 -0.226196282498366
4.50000000000000 1.57872102169562
x1 Ih
-4.50000000000000 4.864253393665158E-002 -3.50000000000000 7.941176470588235E-002 -2.50000000000000 0.150000000000000 -1.50000000000000 0.350000000000000 -0.500000000000000 0.750000000000000
0.500000000000000 0.750000000000000
1.50000000000000 0.350000000000000
2.50000000000000 0.150000000000000
3.50000000000000 7.941176470588235E-002
4.50000000000000 4.864253393665158E-002
Grapher制图部分:
原函数图像:
f(x)
x 拉格朗日插值函数图像:
Ln(x)
x
分段线性插值函数图象:
Ih(x)
x原函数
五.数值结果分析:
○1.从拉格朗日插值函数图象与原函数图像的对比可看出:随着自变量|x︱的增大Ln(x)与f(x)总体上呈现出偏离越来越远的效果;
○2.从分段线性插值函数图象与原函数图像的对比可看出:二者较为近似,
拉格线性插值函数能较好的逼近原函数;
从以上两点可以看出,高次插值多项式Ln(x)近似的效果并不一定好,而通过分段线性插值多项式则能很好的避免高次插值的病态现象。
六.实验收获和体会:
收获:1.能熟练的运用FORTRAN编制原函数,拉格朗日插值和线性插值程序;
2.能够运用grapher将实验数据绘制成图。
体会:由于FORTRAN还处在学习阶段,导致编写程序花掉了较长时间;而且由于不会该程序的有格式输出,导致数据绘图阶段花费了更多的功夫。