高次插值的震荡性
- 格式:docx
- 大小:38.96 KB
- 文档页数:2
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),即插值效果越来越好。
matlab高阶多项式插值高阶多项式插值是一种常用的数值计算方法,它可以用于在给定的数据点上拟合出一个高次多项式函数。
在实际应用中,高阶多项式插值经常被用来逼近并预测未知的数据点,从而帮助我们更好地理解和分析数据。
让我们来了解一下什么是多项式插值。
在数学上,多项式插值是指通过给定的数据点,构造出一个多项式函数,使得该函数能够完全通过这些数据点。
而高阶多项式插值则是指使用高次的多项式函数来拟合数据,以尽可能准确地描述数据的变化趋势。
高阶多项式插值在实际应用中具有广泛的用途。
例如,在金融领域中,我们可以使用高阶多项式插值来预测股票价格的走势;在天气预报中,我们可以使用高阶多项式插值来预测未来几天的气温变化;在电子商务中,我们可以使用高阶多项式插值来预测用户的购买行为等等。
那么,高阶多项式插值是如何实现的呢?在MATLAB中,我们可以使用polyfit函数来进行高阶多项式插值。
该函数可以通过最小二乘法来拟合数据,从而得到一个最优的多项式函数。
具体步骤如下:我们需要准备一组离散的数据点,这些数据点可以是实际观测到的数据,也可以是由其他方法得到的数据。
然后,我们使用polyfit函数来拟合这些数据点,指定拟合的多项式次数。
拟合完成后,我们可以得到一个多项式函数的系数,从而可以使用这个多项式函数来对未知的数据点进行预测。
在实际应用中,高阶多项式插值需要注意一些问题。
首先,我们需要选择合适的多项式次数,以充分拟合数据,但又避免过拟合的问题。
过高的多项式次数可能会导致插值函数在数据点之间产生震荡现象,而过低的多项式次数可能会导致插值函数无法准确地描述数据的变化趋势。
高阶多项式插值还需要注意数据的光滑性和采样点的密度。
如果数据点之间的距离过大,插值函数可能会在数据点之间产生不必要的波动;而如果数据点之间的距离过小,插值函数可能会对噪声敏感。
高阶多项式插值是一种常用的数值计算方法,它可以用于在给定的数据点上拟合出一个高次多项式函数。
拉格朗日插值与多阶多项式在数学领域中,拉格朗日插值是一种常用的插值方法,用于通过已知的数据点构造一个多项式函数,以逼近未知函数。
这种方法以法国数学家约瑟夫·拉格朗日的名字命名,他在18世纪提出了这一概念。
拉格朗日插值的基本思想是通过构造一个多项式函数,使其在已知数据点处与未知函数相等。
这个多项式函数被称为拉格朗日插值多项式。
它的形式为:P(x) = Σ yi * Li(x)其中,P(x)是拉格朗日插值多项式,yi是已知数据点的函数值,Li(x)是拉格朗日基函数。
拉格朗日基函数Li(x)的定义如下:Li(x) = Π (x - xj) / (xi - xj)其中,i ≠ j,xi和xj是已知数据点的横坐标。
通过拉格朗日插值,我们可以在已知数据点处构造一个多项式函数,从而近似地描述未知函数的行为。
这个多项式函数的阶数取决于已知数据点的个数。
如果已知数据点的个数为n+1,那么拉格朗日插值多项式的最高阶数为n。
多阶多项式是指多项式函数的阶数大于1的情况。
在拉格朗日插值中,我们可以通过增加已知数据点的个数来构造更高阶的多项式函数,从而提高近似的精度。
然而,需要注意的是,随着阶数的增加,多项式函数的复杂性也会增加。
高阶多项式函数可能会在数据点之间产生震荡现象,这被称为龙格现象。
为了避免这种情况,我们需要谨慎选择数据点,以及适当控制多项式函数的阶数。
除了拉格朗日插值,还有其他插值方法,例如牛顿插值和埃尔米特插值。
这些方法都有各自的特点和适用范围。
在实际应用中,我们需要根据具体问题的需求来选择合适的插值方法。
总结起来,拉格朗日插值是一种常用的插值方法,通过构造多项式函数来近似描述未知函数的行为。
多阶多项式可以提高近似的精度,但需要注意控制阶数,以避免龙格现象的出现。
在实际应用中,我们需要根据具体问题的需求来选择合适的插值方法。
通过插值方法,我们可以更好地理解和分析数据,从而为问题的解决提供有力的支持。
大家都知道插值在数学建模中很重要,现在介绍几种常用插值下面介绍几种基本的、常用的插值:拉格朗日多项式插值、牛顿插值、分段线性插值、Hermite插值和三次样条插值。
1.拉格朗日多项式插值拉格朗日插值就是给定n个数,让你用不超过n-1次的多项式你逼近它,当然这n个点要能满足多项式。
这是一种最基本的思想,计算很简单,先计算n个基函数,基函数可以自己上网搜一下,因为这里打出公式有点麻烦。
然后就是把每个点的y值乘以他的基函数,把这n个式子相加,最后化简就ok了。
下面我把代码写出来,我这些代码全是自己写的,注释比较详细,这里只以lagrange为例,其余都放在附件里了。
%定义myLagrange函数,参数为向量x,y,由用户调用该函数时输入function L=myLagrange (x,y)%n 插值结点的个数n=length(x);%L myLagrange函数计算的多项式系数行列式L=zeros(1,n);%%使用双重for循环,第一个for循环是fori=1:n%aa=1;%ww=1;%for循环for j=1:n%如果i不等于jif j~=i%累加法计算aa=a*(x(i)-x(j));%用向量乘法函数conv计算ww=conv(w,[1,-x(j)]);%if语句结束符end%第二个for循环结束符end%递归法计算L,其中y(i)/a*w表示第i个元素L=y(i)/a*w+L;%第一个for结束符end没错,就这么几句代码,所以很简单的。
2.牛顿插值牛顿插值其实是为了解决拉格朗日插值不能增加新的点来说的。
拉格朗日插值只能接受给定的那么多点,了然后插值。
如果你想再加一个点,它会重新开始计算,这个很费时间和内存。
因此牛顿插值就诞生了。
了解牛顿插值前要学习下差商和差分两个简单的概念。
Newton 插值的优点是:每增加一个节点,插值多项式只增加一项,即因而便于递推运算。
而且Newton 插值的计算量小于Lagrange 插值。
《数值分析》实验报告实验序号:实验五 实验名称: 分段线性插值法1、 实验目的:随着插值节点的增加,插值多项式的插值多项式的次数也增加,而对于高次的插值容易带来剧烈的震荡,带来数值的不稳定(Runge 现象)。
为了既要增加插值的节点,减小插值的区间,以便更好的逼近插值函数,又要不增加插值多项式的次数以减少误差,可采用分段线性插值。
2、 实验内容:求一个函数ϕ(x )用来近似函数f (x ),用分段线性插值的方法来求解近似函数ϕ(x )并画出近似函数图像及原函数图像。
设在区间[a,b]上,给定n+1个插值节点b x x x x a n =<<<<=...210和相应的函数值n y y y ,...,,10,求一个插值函数)(x ϕ,满足以下条件:(1)),...,2,1,0()(n j y x j j ==ϕ; (2) )(x ϕ在每一个小区间[1,+j j x x ]上是线性函数。
对于给定函数11-,2511)(2≤≤+=x x x f 。
在区间[]11-,上画出f (x )和分段线性插值函数)(x ϕ的函数图像。
1. 分段线性插值的算法思想:分段线性插值需要在每个插值节点上构造分段线性插值基函数)(x l j ,然后再作它们的线性组合。
分段线性插值基函数的特点是在对应的插值节点上函数值取 1,其它节点上函数值取0。
插值基函数如下:⎪⎩⎪⎨⎧≤≤--=其它 ,0,)(101010x x x x x x x x l ⎪⎪⎪⎪⎩⎪⎪⎪⎪⎨⎧≤<--≤≤--=+++---其它 ,0,,)(111111j j j j j j j j j j j x x x x x x x x x x x x x x x l⎪⎩⎪⎨⎧≤≤--=---其它 ,0,)(111n n n n n n x x x x x x x x l 设在节点a ≤x0<x1<…≤b=f(xi),(i=0,1,2,…,n)求折线函数L (x )满足:(1) L(x)∈C[a,b](2) L(x[i]=y[i])(3) L(x)在每个小区间(x[i],x[i+1])上是线性插值函数¢(x )叫做区间[a,b]上对数据(x[j],y[j])(j=0,1,2,…,n)的分段区间函数。
三次样条插值的求解摘要:分段低次插值虽然解决了高次插值的振荡现象和数值不稳定现象,使得插值多项式具有一致收敛性,保证了插值函数整体的连续性,但在函数插值节点处不能很好地保证光滑性要求,这在某些要求光滑性的工程应用中是不能接受的。
如飞机的机翼一般要求使用流线形设计,以减少空气阻力,还有船体放样等的型值线,往往要求有二阶光滑度(即有二阶连续导数)。
因此,在分段插值的基础上,引进了一种新的插值方法,在保证原方法的收敛性和稳定性的同时,又使得函数具有较高的光滑性的样条插值。
关键字:三转角方程 三弯矩阵方程0. 引言1,三次样条函数定义1:若函数2()[,]S x a b C ∈,且在每个小区间上1,j j x x +⎡⎤⎦⎣上是三次多项式,其中01n a x x x b ⋯=<<<= 是给定节点,则称()s x 是节点01,,,n x x x ⋯上的三次样条函数。
若节点j x 上 给定函数值()j j y f x =(0,1,)j n ⋯= ,且()j j s x y = (0,1,)j n ⋯= (1.1)成立,则称 ()s x 为三次样条差值函数。
从定义知,要求出()s x ,在每个应小区间1[,]j j x x + 上确定4个待定系数,共有 n 个小区间,故应确定4n 个参数,根据()s x 在[,]a b 上二阶导数连续,在节点()1,2,3,,1j x j n ⋯=-处应满足连续性条件(0)(0),j j s x s x -=+ ''(0)(0),j j s x s x -=+''''(0)(0)j j s x s x -=+ (1.2) 共有 3n-3个条件,再加上()s x 满足插值条件(1.1),共有4n-2个条件,因此还需要2个条件才能确定()s x 。
通常可在区间[,]a b 端点0,n a x b x ==上各加一个条件(称边界条件),边界条件可根据实际的问题要求给定。
数值分析课程实验报告——插值逼近题目一.Runge 函数的插值1. Runge 函数Runge 函数的表达式为:21()125R x x =+ 其在[-1,1]区间上的函数图像如图1.1。
在课程学习中我们知道,对Runge 函数进行高次插值时有可能在两端出现不收敛的情况,即Runge 现象。
下面将分别用四种不同的插值方法在[-1,1]区间上对Runge 函数进行插值,并分析是否产生Runge 现象,比较插值效果。
图1.1.Runge 函数在[-1,1]区间的函数图像2.Newton 插值首先根据课本上的Newton 插值算法进行编程(代码略)。
核心思想就是用符号变量进行中间运算,以便将最终的插值函数用符号表达式表示出来,并进一步生成图像。
此处插值节点选择为等距插值节点,即:0.1(0,1,2,,)i x ih i =-+= (20)其中h=0.1。
插值曲线与原曲线的对比如图1.2(蓝色为原曲线,红色为插值曲线)。
从图中看出,在区间中部,二者吻合较好;但在区间两端二者则产生了明显偏差,甚至可以达到一个非常大的数值(e20量级)。
因此,在等距节点的20次Newton 插值下,产生了明显的Runge 现象。
图1.2.Newton 插值曲线与原曲线对比3. Lagrange 插值此处同样是根据Lagrange 插值的具体算法进行编程。
但插值节点不再是等距分布,而是如下形式:21cos()(0,1,2,,)42i i x i π+==…20 插值曲线与原曲线的对比如图1.3(蓝色为原曲线,红色为插值曲线)。
从图中看出,插值曲线与原曲线吻合的很好,没有产生明显的Runge 现象。
对比产生了明显Runge 现象的20次Newton 插值,Lagrange 插值的最高次数虽然也是20,但由于此处的插值节点不是等距分布的(事实上,此处采用的插值节点正是Chebyshev 多项式的零点),而是中间疏两边密,因此两侧较密的节点很好地抑制了Runge 现象。
插值算法的介绍及其在数学建模中的应用一、插值的介绍及其作用数模比赛中,常常需要根据已知的样本点进行数据的处理和分析,而有时候现有数据较少或数据不全,不足以支撑分析的进行,这时就需要使用插值法“模拟产生”一些新的但又比较靠谱的值来满足需求,这就是插值的作用。
在直观上,插值就是找到一个连续函数使其经过每个样本点插值法还可用于短期的预测问题(插值与拟合经常会被弄混,为了区分,这里简要介绍一下拟合:即找到一个函数,使得该函数在最小二乘的意义下与已知样本点的总体差别最小,该函数不一定要经过样本点。
通常情况下,拟合要求已知样本点的数据较多,当数据较少时不适用)二、插值法原理三、插值法的分类注:下面的1、2、3、4 并非是并列关系,几个部分之间也有交叉,目的在于逐渐引出数学建模中最常用的两种插值方法:三次样条插值与三次埃尔米特插值。
1、普通多项式插值多项式插值中,拉格朗日插值与牛顿插值是经典的插值方法,但它们存在明显的龙格现象(下面会解释龙格现象),且不能全面反映插值函数的特性(仅仅保证了插值多项式在插值节点处与被插函数有相等的函数值)。
然而在许多实际问题中,不仅要求插值函数与被插值函数在所有节点处有相同的函数值,它也需要在一个或全部节点上插值多项式与被插函数有相同的低阶甚至高阶的导数值。
对于这些情况,拉格朗日插值和牛顿插值都不能满足。
因此,数学建模中一般不使用这两种方法进行插值,这里也不再介绍这两种方法。
龙格现象(Runge phenomenon): 1901年,Carl Runge 在他的关于高次多项式插值风险的研究中,发现高次插值函数可能会在两端处波动极大,产生明显的震荡,这种现象因此被称为龙格现象。
所以在不熟悉曲线运动趋势的前提下,我们一般不轻易使用高次插值。
下面是对函数f(x)=\cfrac{1}{1+x^2}不同次数拉格朗日插值多项式的比较图,其中红线为函数本身图像。
可以发现,n值越大,在两端的波动越大。
例6.5.1 作下列函数在指定区间上的n 次拉格朗日插值多项式)(x L n )10,8,6,4,2(=n 的图形,并讨论插值多项式)(x L n 的次数与误差)(x R n 的关系.
(1)))432sin 3tan(cos(
)(2x x x f ++=,],[ππ-∈x ;(2)211)(x x f +=,]5,5[-∈x . 解 将计算n 次拉格朗日插值多项式)(x L n
的值的MATLAB 程序保存名为lagr1.m 的M 文件.
function y=lagr1(x0,y0,x)
n=length(x0); m=length(x);
for i=1:m
z=x(i);s=0.0;
for k=1:n
p=1.0;
for j=1:n
if j~=k
p=p*(z-x0(j))/(x0(k)-x0(j));
end
end
s=p*y0(k)+s;
end
y(i)=s;
end (1)现提供作n 次拉格朗日插值多项式)(x L n 的图形的MATLAB 程序,保存名为 Li1.m
的M 文件
m=150; x=-pi:2*pi/(m-1): pi;
y=tan(cos((3^(1/2)+sin(2*x))./(3+4*x.^2)));
plot(x,y,'k-'),
gtext('y=tan(cos((sqrt(3)+sin(2x))/(3+4x^2)))'),pause n=3; x0=-pi:2*pi/(3-1):pi;
y0=tan(cos((3^(1/2)+sin(2*x0))./(3+4*x0.^2))); y1=lagr1(x0,y0,x);hold on,
plot(x,y1,'g<'),gtext('n=2'),pause,hold off
n=5; x0=-pi:2*pi/(n-1):pi;
y0=tan(cos((3^(1/2)+sin(2*x0))./(3+4*x0.^2))); y2=lagr1(x0,y0,x);hold on,
plot(x,y2,'b:'),gtext('n=4'),pause,hold off
n=7; x0=-pi:2*pi/(n-1):pi;
y0=tan(cos((3^(1/2)+sin(2*x0))./(3+4*x0.^2))); y3=lagr1(x0,y0,x);hold on,
plot(x,y3,'rp'),gtext('n=6'),pause,hold off
n=9; x0=-pi:2*pi/(n-1):pi;
y0=tan(cos((3^(1/2)+sin(2*x0))./(3+4*x0.^2))); y4=lagr1(x0,y0,x);hold on,
plot(x,y4,'m*'),gtext('n=8'),pause,hold off
n=11; x0=-pi:2*pi/(n-1):pi;
y0=tan(cos((3^(1/2)+sin(2*x0))./(3+4*x0.^2))); y5=lagr1(x0,y0,x);hold on,
plot(x,y5,'g:'),gtext('n=10')
title('高次拉格朗日插值的振荡')
在MA TLAB 工作窗口输入名为 Li1.m 的M 文件的文件名
>> Li1.m
回车运行后,便会逐次画出)(x f 在区间],[ππ-上的n 次拉格朗日插值多项式)(x L n )10,8,6,4,2(=n 的图形(略).
(2)在MA TLAB 工作窗口输入程序
m=101; x=-5:10/(m-1):5; y=1./(1+x.^2);
z=0*x;plot(x,z,'r',x,y,'k-'),
gtext('y=1/(1+x^2)'),pause
n=3; x0=-5:10/(n-1):5; y0=1./(1+x0.^2);
y1=lagr1(x0,y0,x);hold on,
plot(x,y1,'g'),gtext('n=2'),pause,hold off
n=5; x0=-5:10/(n-1):5; y0=1./(1+x0.^2);
y2=lagr1(x0,y0,x);hold on,
plot(x,y2,'b:'),gtext('n=4'),pause,hold off
n=7; x0=-5:10/(n-1):5; y0=1./(1+x0.^2);
y3=lagr1(x0,y0,x);hold on,
plot(x,y3,'r'),gtext('n=6'),pause,hold off
n=9; x0=-5:10/(n-1):5; y0=1./(1+x0.^2);
y4=lagr1(x0,y0,x);hold on,
plot(x,y4,'r:'),gtext('n=8'),pause,hold off
n=11; x0=-5:10/(n-1):5; y0=1./(1+x0.^2);
y5=lagr1(x0,y0,x);hold on,
plot(x,y5,'m'),gtext('n=10')
title('高次拉格朗日插值的振荡')
回车运行后,便会逐次画出)
1
/(
12x
y+
=在区间]5,5
[-上的n次拉格朗日插值多项式
)
(x L
n
)
10
,8,6,4,2
(=
n的图形(略).。