高次插值的震荡性

合集下载

数值分析实验报告--实验2--插值法

数值分析实验报告--实验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),即插值效果越来越好。

计算方法 1.3 分段线性插值

计算方法 1.3 分段线性插值
易知, S1 ( x )为是一条折线函数,在每个小区间 [xi , xi1 ] 上可表示为:
x x x x i 1 i ˆ S ( x ) y y , x x x 1 i i 1 i i 1 x x x x i i 1 i 1 i 于是, S1 ( x ) 是在 [ a , b ] 上是连续函数。
x [xj , xj ] 1 x [xj, xj 1] 其他
2)在插值节点 x 0 上,插值基为:
2 ( x x ) l ( x ) x [ x ,x ] 0 0 0 1 B ( x ) 0 0 其他 3)在插值节点 x n 上,插值基为:
2 ( x x ) l ( x ) n n B ( x ) n 0
1
左,右连接起来!
x
j1
xj
x
j1
2 2 H ( x ) 1 2 l ( x ) l ( x ) y 1 2 l ( x ) l ( x ) y 3 j 1 j j j j 1 j 1 2 2 ( x x ) l ( x ) y ( x x ) l ( x ) y j j j j 1j 1 j 1
k axb
提示:类似于前面的误差估计。 几点说明:
1)只要节点间距充分小,插值法总能获得所要求的精度。 2)局部性。如果修改某个数据,则插值曲线仅在某个局部范围内受影响。
插值节点 x 上,取值为 0 .即 k,k j 1 lj (x k ) 0 k j k j
2 )在每个小区间 [x 上,插值基 lj (x )都是线性函数 . i, x i 1]
基于以上两方面,我们观察
1
右 左
x
j1

matlab高阶多项式插值

matlab高阶多项式插值

matlab高阶多项式插值高阶多项式插值是一种常用的数值计算方法,它可以用于在给定的数据点上拟合出一个高次多项式函数。

在实际应用中,高阶多项式插值经常被用来逼近并预测未知的数据点,从而帮助我们更好地理解和分析数据。

让我们来了解一下什么是多项式插值。

在数学上,多项式插值是指通过给定的数据点,构造出一个多项式函数,使得该函数能够完全通过这些数据点。

而高阶多项式插值则是指使用高次的多项式函数来拟合数据,以尽可能准确地描述数据的变化趋势。

高阶多项式插值在实际应用中具有广泛的用途。

例如,在金融领域中,我们可以使用高阶多项式插值来预测股票价格的走势;在天气预报中,我们可以使用高阶多项式插值来预测未来几天的气温变化;在电子商务中,我们可以使用高阶多项式插值来预测用户的购买行为等等。

那么,高阶多项式插值是如何实现的呢?在MATLAB中,我们可以使用polyfit函数来进行高阶多项式插值。

该函数可以通过最小二乘法来拟合数据,从而得到一个最优的多项式函数。

具体步骤如下:我们需要准备一组离散的数据点,这些数据点可以是实际观测到的数据,也可以是由其他方法得到的数据。

然后,我们使用polyfit函数来拟合这些数据点,指定拟合的多项式次数。

拟合完成后,我们可以得到一个多项式函数的系数,从而可以使用这个多项式函数来对未知的数据点进行预测。

在实际应用中,高阶多项式插值需要注意一些问题。

首先,我们需要选择合适的多项式次数,以充分拟合数据,但又避免过拟合的问题。

过高的多项式次数可能会导致插值函数在数据点之间产生震荡现象,而过低的多项式次数可能会导致插值函数无法准确地描述数据的变化趋势。

高阶多项式插值还需要注意数据的光滑性和采样点的密度。

如果数据点之间的距离过大,插值函数可能会在数据点之间产生不必要的波动;而如果数据点之间的距离过小,插值函数可能会对噪声敏感。

高阶多项式插值是一种常用的数值计算方法,它可以用于在给定的数据点上拟合出一个高次多项式函数。

参数三次埃尔米特插值实例分析

参数三次埃尔米特插值实例分析

2
公式推导
参数三次曲线,简称 PC 曲线,表示为: ������(t) = ������0 + ������1 t + ������2 ������ 2 + ������3 ������ 3 , ������ ∈ [0,1] 确定四个系数矢量的方法是给定曲线两端点及其切矢。 对函数中参数 t 求导,得: ������������ ������′ (������) = = ������1 + 2������2 ������ + 3������3 ������ 2 ������������ 用������ = 0,1代入以上两式,得: ������0 = ������(0) ������0 + ������1 + ������2 + ������3 = ������(1) ������1 = ������′ (0) ������1 + 2������2 + 3������3 = ������′ (1) 写成矩阵形式: ������(0) 1 0 0 0 ������0 ������ ������(1) 1 1 1 1 1 [ ] [������ ] = ′ ������ (0) 0 1 0 0 2 ������ 0 1 2 3 3 [������′ (1)] 于是可得: ������0 1 0 0 0 ������(0) ������1 0 0 1 0 ������(1) [������ ] = [ ] 2 −3 3 −2 −1 ������′ (0) ������3 2 −2 1 1 [������′ (1)] 将上式代入函数方程,得: 1 0 0 0 ������(0) 0 0 1 0 ������(1) ������(t) = [1 ������ ������ 2 ������ 3 ] [ ] −3 3 −2 −1 ������′ (0) 2 −2 1 1 [������′ (1)] 上式即与标量形式的三次埃尔米特插值相对应的参数形式,即定义在区间������ ∈ [0,1]

拉格朗日插值与多阶多项式

拉格朗日插值与多阶多项式

拉格朗日插值与多阶多项式在数学领域中,拉格朗日插值是一种常用的插值方法,用于通过已知的数据点构造一个多项式函数,以逼近未知函数。

这种方法以法国数学家约瑟夫·拉格朗日的名字命名,他在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的情况。

在拉格朗日插值中,我们可以通过增加已知数据点的个数来构造更高阶的多项式函数,从而提高近似的精度。

然而,需要注意的是,随着阶数的增加,多项式函数的复杂性也会增加。

高阶多项式函数可能会在数据点之间产生震荡现象,这被称为龙格现象。

为了避免这种情况,我们需要谨慎选择数据点,以及适当控制多项式函数的阶数。

除了拉格朗日插值,还有其他插值方法,例如牛顿插值和埃尔米特插值。

这些方法都有各自的特点和适用范围。

在实际应用中,我们需要根据具体问题的需求来选择合适的插值方法。

总结起来,拉格朗日插值是一种常用的插值方法,通过构造多项式函数来近似描述未知函数的行为。

多阶多项式可以提高近似的精度,但需要注意控制阶数,以避免龙格现象的出现。

在实际应用中,我们需要根据具体问题的需求来选择合适的插值方法。

通过插值方法,我们可以更好地理解和分析数据,从而为问题的解决提供有力的支持。

Matlab插值方法学习Hermite,lagrange,Newton

Matlab插值方法学习Hermite,lagrange,Newton

大家都知道插值在数学建模中很重要,现在介绍几种常用插值下面介绍几种基本的、常用的插值:拉格朗日多项式插值、牛顿插值、分段线性插值、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 ==上各加一个条件(称边界条件),边界条件可根据实际的问题要求给定。

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

例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的图形(略).。

相关文档
最新文档