龙格现象

合集下载

拉格朗日插值龙格现象的matlab实现

拉格朗日插值龙格现象的matlab实现

拉格朗日插值法在实践中的应 用
在数值分析中的应用
单击此处添加标题
插值法:拉格朗日插值法是数值分析中常用的插值方法之一,具有简单易 行、计算量小等优点。
单击此处添加标题
数据拟合:拉格朗日插值法可以用于数据拟合,通过对已知数据进行插值, 得到未知数据的近似值。
单击此处添加标题
数值微积分:拉格朗日插值法在数值微积分中也有广泛应用,例如在求解 函数的导数、积分等运算时,可以利用拉格朗日插值法进行近似计算。
龙格现象
龙格现象的定义
定义:当插值多项式的阶数过高时, 插值结果可能变得不可预测或出现 剧烈振荡
解决方法:在实际应用中,应避免 使用过高的插值多项式阶数,而应 选择合适的阶数以保证插值结果的 稳定性和准确性
添加标题
添加标题
添加标题
添加标题
原因:由于高阶插值多项式对数据 点的敏感性增强,导致插值结果不 稳定
拉格朗日插值龙格现象的 Matlab实现
汇报人:XX
单击输入目录标题 拉格朗日插值法 龙格现象 拉格朗日插值法在Matlab中的实现 拉格朗日插值法的龙格现象分析 拉格朗日插值法在实践中的应用
添加章节标题
拉格朗日插值法
插值法的定义
插值法是一种数学方法,通过已知的离散数据点,构造一个多项式函数,使得该函数在 数据点处的取值等于已知的数据点值。
算法收敛性:在某些情况下,龙格现象可能导致算法收敛速度减慢,增加计算时间和计算成本。
实际应用限制:由于龙格现象的存在,某些数值方法在实际应用中可能受到限制,无法处理某些 复杂问题。
算法改进需求:为了克服龙格现象的影响,需要研究和发展新的数值方法和算法,提高数值计算 的稳定性和精度。
拉格朗日插值法在Matlab中的 实现

Runge现象的研究

Runge现象的研究
幂激励矩阵 V 和插值输出列向量 y 分别为:
[ ] =a a0 , a1,, an T ∈ Rn+1
1

=V
1
x0 x1

x0n x1n


R ( n +1)×( n +1)
1
xn

xnn

[ ] =y y0 , y1,, yn T ∈ Rn+1
DOI: 10.12677/aam.2019.88175
Received: August 6th, 2019; accepted: August 21st, 2019; published: August 28th, 2019
Abstract
Firstly, this paper explains the Runge phenomenon generated by high-order polynomial interpolation, and proves that the interpolation polynomial divergence is obtained by calculating the systematic error. Secondly, taking the Runge function, inverse trigonometric function and fractional function as examples, the interpolation polynomial of the function is obtained by using the equally spaced Newton interpolation, and then the interpolation residual function expression is obtained, and then the midpoint of adjacent two nodes is calculated. The error at the location determines that the above three functions have generated the Runge phenomenon. Thirdly, the three algorithms of Chebyshev node, piecewise linear interpolation and cubic spline interpolation are introduced and verified, which can avoid the Runge phenomenon. Finally, the approximation performance index is proposed, and based on the optimal polynomial construction coefficient and order double determination method, the algorithm has excellent function approximation effect while avoiding the Runge phenomenon.

利用MQ拟插值解决高次插值所出现的龙格现象

利用MQ拟插值解决高次插值所出现的龙格现象

利用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附件,插值值与真实值偏差非常大,存在较大的震荡。

龙格现象

龙格现象
龙格现象
在计算方法中,有利用多项式对某一函数的近似逼近,这样,利用多项式就可以 计算相应的函数值。例如,在事先不知道某一函数的具体形式的情况下,只能测 量得知某一些分散的函数值。例如我们不知道气温随日期变化的具体函数关系, 但是我们可以测量一些孤立的日期的气温值,并假定此气温随日期变化的函数满 足某一多项式。这样,利用已经测的数据,应用待定系数法便可以求得一个多项 式函数 f(x)。应用此函数就可以计算或者说预测其他日期的气温值。一般情 况下,多项式的次数越多,需要的数据就越多,而预测也就越准确。 例外发生了:龙格在研究多项式插值的时候,发现有的情况下,并非取节点(日 期数)越多多项式就越精确。著名的例子是 f(x)=1/(1+25x^2).它的插值函数 在两个端点处发生剧烈的波动,造成较大的误差。究其原因,是舍入误差造成的。 具体的情况可参考下列 Mathematica 程序: n = 10; x = Range[-1, 1, 2/n]; y = 1./(1 + 25 x^2); p = Transpose[{x, y}]; Clear[t]; f = LagrangeInterpolation[x, y, t]; Show[ Plot[{1./(1 + 25 t^2), f}, {t, -1, 1}], ListPlot[p, PlotStyle -> PointSize[0.02]] ] 程序演示 Matlab 程序演示 (一) 代码 >> f=inline('1/6-y/30','t','y'); [t,y]=ode45(f,[0,5],[0]); plot(t,y) >> hold on plot(t,5-5*exp(-t/30面是 MATLAB 中演示插值的 M 文件: %演示龙格函数的插值情况 for i=3:2:11

第三章(二) 埃尔米特-样条插值法

第三章(二) 埃尔米特-样条插值法

2
x x1 x x 0 h1 ( x ) 1 2 x x . x1 x 0 1 0
2

x x1 g 0 (x) a(x x0 ) , x 0 x1
2
∵g0(x0)=g0(x1)=0, g'0(x1)=0
据用得越多越好,解决这一矛盾的办法就是改用分段低次插值。
所谓分段低次插值就是用分段多项式来代替单个高阶多项式
作插值,即先把整个插值区间分成若干个小区间,然后在每个子 区间上分别用低次插值多项式(如线性插值或抛物线插值等), 然后再将每个子区间上的插值函数拼接在一起,作为整个插值区 间上的插值函数。
• 分段线性插值
2
2
x x1 x x 0 h1 ( x ) 1 2 . x1 x 0 x1 x 0
2
2
x x1 x x0 g 0 (x) (x x0 ) , ( x ) ( x x1 ) g1 . x 0 x1 x1 x 0
, [ 1,1]. 0 ( x ) ? x L1
将[−1,1]10等分,步长 h = 2/10 = 0.2, 取节点 xi = −1 + 0.2i, i =
0,1,2,…,10。以 (xi, f(xi))为插值点,构造L10(x):
L1 0 ( x )
) f ( x i ) li ( x )
先构造 h0(x), 设
由h0(x0) = 1,
x x1 h0 ( x ) (a bx ) . x 0 x1
2
∵h0(x1)=h'0(x1)=0

matlab中曲线拟合所用到的多项式逼近的表达式

matlab中曲线拟合所用到的多项式逼近的表达式

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. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

二.主要方、步骤:
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还处在学习阶段,导致编写程序花掉了较长时间;而且由于不会该程序的有格式输出,导致数据绘图阶段花费了更多的功夫。

相关文档
最新文档