牛顿插值法原理及应用

牛顿插值法原理及应用
牛顿插值法原理及应用

牛顿插值法原理及应用

牛顿插值法

插值法是利用函数f (x)在某区间中若干点的函数值,作出适当的特定函数,在这些点上取已知值,在区间的其他点上用这特定函数的值作为函数f (x)的近似值。如果这特定函数是多项式,就称它为插值多项式。当插值节点增减时全部插值基函数均要随之变化,这在实际计算中很不方便。为了克服这一缺点,提出了牛顿插值。牛顿插值通过求各阶差商,递推得到的一个公式:

f(x)=f[x0]+f[x0,x1](x-x0)+f[x0,x1,x2](x-x0)(x-x1)+...f[x0,...xn](x-x 0)...(x-xn-1)+Rn(x)。

插值函数

插值函数的概念及相关性质[1]

定义:设连续函数y-f(x) 在区间[a,b]上有定义,已知在n+1个互异的点

x0,x1,…xn上取值分别为y0,y1,…yn (设a≤ x1≤x2……≤xn≤b)。若在函数类中存在以简单函数P(x) ,使得P(xi)=yi,则称P(x) 为f(x)的插值函数.

称x1,x2,…xn 为插值节点,称[a,b]为插值区间。

定理:n次代数插值问题的解存在且唯一。

牛顿插值法C程序

程序框图#include

void main()

{

float x[11],y[11][11],xx,temp,newton;

int i,j,n;

printf("Newton插值:\n请输入要运算的值:x=");

scanf("%f",&xx);

printf("请输入插值的次数(n<11):n=");

scanf("%d",&n);

printf("请输入%d组值:\n",n+1);

for(i=0;i

{ printf("x%d=",i);

scanf("%f",&x[i]);

printf("y%d=",i);

scanf("%f",&y[0][i]);

}

for(i=1;i

for(j=i;j

{ if(i>1)

y[i][j]=(y[i-1][j]-y[i-1][j-1])/(x[j] -x[j-i]);

else

y[i][j]=(y[i-1][j]-y[i-1][j-1])/(x[j]-x[j-1]) ;

printf("%f\n",y[i][i]);

}

temp=1;newton=y[0][0];

for(i=1;i

{ temp=temp*(xx-x[i-1]);

newton=newton+y[i][i]*temp;

}

printf("求得的结果为:N(%.4f)=%9f\n",xx,newton);

牛顿插值法Matlab程序

function f = Newton(x,y,x0)

syms t;

if(length(x) == length(y))

n = length(x);

c(1:n) = 0.0;

else

disp('x和y的维数不相等!');

return;

end

f = y(1);

y1 = 0;

l = 1;

for(i=1:n-1)

for(j=i+1:n)

y1(j) = (y(j)-y(i))/(x(j)-x(i));

end

c(i) = y1(i+1);

l = l*(t-x(i));

f = f + c(i)*l;

simplify(f);

y = y1;

if(i==n-1)

if(nargin == 3)

f = subs(f,'t',x0);

else

f =

collect(f); %将插值多项式展开

f = vpa(f, 6);

end

end

牛顿插值法

摘要:值法利用函数f (x)在某区间中若干点的函数值,作出适当的特定函数,在这些点上取已知值,在区间的其他点上用这特定函数的值作为函数f (x)的近似值。如果这特定函数是多项式,就称它为插值多项式。利用插值基函数很容易得到拉格朗日插值多项式,公式结构紧凑,在理论分析中甚为方便,但当插值节点增减时全部插值基函数均要随之变化,整个公式也将发生变化,这在实际计算中是很不方便的,为了克服这一缺点,提出了牛顿插值。

牛顿插值通过求各阶差商,递推得到的一个公式:f(x)=f[x0]+f[x0,x1](x-x0)+f[x0,x1,x2](x-x0)(x-x1)+...f[x0,...xn](x-x 0)...(x-xn-1)+Rn(x)

关键词:牛顿插值法流程图程序实现

一、插值法的由来

在许多实际问题及科学研究中,因素之间往往存在着函数关系,然而,这种关系经常很难有明显的解析表达,通常只是由观察与测试得到一些离散数值。有时,即使给出了解析表达式,却由于表达式过于复杂,不仅使用不便,而且不易于进行计算与理论分析。解决这类问题的方法有两种:一种是插值法,另一种是拟合法。插值法是一种古老的数学方法,它来自生产实践,早在一千多年前,我国科学家在

研究历法上就应用了线性插值与二次插值,但它的基本理论却是在微积分产生之后才逐渐完善的,其应用也日益增多,特别是在计算机软件中,许多库函数,如等的计算实际上归结于它的逼近函数的计算。逼近函数一般为只含有算术运算的简单函数,如多项式、有理分式(即多项式的商)。在工程实际问题当中,我们也经常会碰到诸如此类的函数值计算问题。被计算的函数有时不容易直接计算,如表达式过于复杂或者只能通过某种手段获取该函数在某些点处的函数值信息或者导数值信息等。因此,我们希望能用一个“简单函数”逼近被计算函数,然后用该简单函数的函数值近似替代被计算函数的函数值。这种方法就叫插值逼近或者插值法。

逐次线性插值法优点是能够最有效地计算任何给定点的函数值,而不需要写出各步用到的插值多项式的表达式。但如果解决某个问题时需要插值多项式的表达式,那么,它的这个优点就成了它的缺点了。能不能根据插值条件构造一个插值多项式,它既有具体的表达式,又很容易用它计算任何点的函数值呢?牛顿插值法能作到这一点。

二、牛顿插值法的概念

牛顿插值多项式的表达式

)

())(())(()(1

1

1

2

1

x

x x x x x c x x x x c x x c c N n n

n

--???--???+--+-+=

问题是如何根据插值条件

()y x N i

i

n

=,i=0,1,2???n

来计算待定系数c c c c n ???210,,?

)

()(00

x y

x N f n

==

知, )

(00

0x y

c f ==。

由 )()(1

1

1

x y x N f n

== 知

y x x c c 1

1

1

)(=-+

因而

[]

x x x x x x x x y y c f

f f 1

1010

1

11

,)

()(?--=

-

-=,

其中 []x x f 10, 称为函数f(x)在x x 10,点的一阶商。

)

()(22

2

x y

x N f n

==

y x x x x c x x c c 2

1

2

2

2

1

1

))(()(=--+-+

因而

()()()]

,,[)

(],[],[)

(]

,[)

)(()](,[)](,[)

)(()](,[))(()](,[2

1

2

1

2

1

2

1

12

1

21

2

2

2

1

1

1

1

2

1

2

2

2

1

1

1

2

1

2

2

2

1

2

2

x x x x x x x x x x x x x x x y y x x x x x x x x x x x x y y x x x x x x x x y y y y x x x x x x x x y y c f f f f f f f f ?--=----=

-----+-=

-----+-=

-----=

其中],,[210x x x f 称为函数f (x)在x x x 210,,点的二阶差商。实际上,它是一阶差商的差商。一般地,如果已知一阶差商],[],,[11x x x x i i i i f f +-, 那么就可以计算二

阶差商 x x

x x x x x x x i i i i i i i i i f f f 1

1

1111_]

,[],[],,[-+-++--=

类似于上述过程不断地推导下去,可得

],

,,[)

(]

,,[],[],

,,,,[)

(]

,,,[],,,[],

,,,[)

(]

,,[],,[210012102144321004321043214

3210032103213x x x x x x x x x x x x x c x x x x x x x x x x x x x x x c

x x x x x x x x x x x x c n n n n f f f f f f f f f ????-???-???=

?

????--=

?--=-

其中,

],,,,[3210x x x x f ],,,,,[43210x x x x x f ],,,,,,[543210x x x x x x f 分别称为函数

f (x)在相应点处的三阶差商,四阶差商和n 阶差商。实际上,

c

c c c n

???2

1

,, 的计算可通过以下简易地构造函数的差商来完成。 x

c x f 0

0)(=

x

1

)

(1x f

c x x f 1

10],[=

x

2

)

(2x f

]

,[21x x f

c x x x f 2210],,[=

x

3

)

(3x f

]

,[32x x f

]

,1[32

,x x x f

c x x x x f 33210],,,[=

x

4

)

(4x f

]

,[43x x f

]

,,[432x x x f

]

,,1[432

,x x x x f

c x x x x x f 4

43210],,,,[=

. . .

. . .

. . .

. . .

. . .

. . .

按上述方式构造插值多项式的方法叫做牛顿插值法。根据插值多项式的惟一性知,其截断误差与拉格朗日插值法相同, 即:

)

()()!

1(1

π1)

1(x n n n n f

R +++=

ξ

但也可以表示成差商形式。这是因为以x x x x n ???210,,为节点的多项式

)

(],[)()(11101

x x x x N N

n n n n f x x ∏???+=+++

从而 )(],[)()()(111101111x x x x x N x N x n n n n n n n n f f +++++++∏???+==

于是)(x N n 的截断误差可表为

)

(],,,[)(1

1

1

x f x n n n

x x x x R ∏

++???=

顺便指出,因为牛顿插值多项式具有性质:

)

())(](,[)()(121101x x x x x x x x x N N

n n n n

f x x ---???--???+=

所以,类似于逐次线性插值法,也可以把上述和式中的第二项

)

())(](,[12110x x x x x x x x x n n f --???--???

看成是估计

)

(1

x N

n - 的一种实用误差估计式。

与差商概念密切联系的另一个概念是差分,它是指在等距节点上函数值的差。所谓等距节点,是指对给定的常数h (称为步长),节点

)2,1,0(,0

n i ih x x i

???=+=称f x x

k

i i f f ?

?-+)()(1

x i

处的一阶向前差

分;

称 f

x x i

i i f f ?

?--)()(1

x i

处的一阶向后差分;

称 f

x x i

h i h i f f δ

?-+)1()(22

x i

处的中心差分。一阶差分的差分称为二阶差分,

即 f

f f

i

i

i ???

-?

+2

1

称为

x i

处的二阶向前差分。

一般地,m 阶向前和向后差分可定义如下:

????????=?

????

==?-???-??-+--+-3,2,,111111m m m f f f f f f i m i m i i m i m i

三、牛顿插值法的实现

1、【算法】

步骤1:输入节点(xj,yj),精度ξ,计值点xx,f0→p,1→T,1→i;

步骤2:对k=1,2,……,i依次计算k阶均差

f[xi-k,xi-k+1,…,xi] = (f[xi-k+1,…,xi]- f[xi-k,…,xi])/( xi -xi-k ) (1)、若| f[x1,…,xi]- f[x0,…,xi-1]|< ξ,则p为最终结果Ni-1(x),步骤3:

余项Ri-1= f[x0,…,xi](xx-xi-1)T。

(2)、否则(xx-xi-1)*T→T,p+ f[x0,…,xi]*T→p,转步骤4。步骤4:若i

2、【流程图】

NO

YES i+1→ i NO

|g i-1-q i-1|<

(x i -x i-1)T →T p+q i *T →p

k = 1,2,……,i

q k →g k

k

k

q i (xx-x n-1)*T →R

输出P,R,n

STOP 2

3、【程序清单】#include"stdio.h"

#define n 4//牛顿插值的次数

void main()

{

float a[n+1][n+2]={0},s=0,t=1,x;

int i,j;

printf("请输入xi及yi的值//要求先输入xi再输入yi然后输入下一组\n");

for(i=0;i

for(j=0;j<2;j++)

scanf("%f",&a[i][j]);

for(j=1;j

for(i=j;i

a[i][j+1]=(a[i][j]-a[i-1][j])/(a[i][0]-a[i-j][0]);

printf("输出xi,yi及各阶均差\n");

for(i=0;i

{

for(j=0;j

printf("%6.5f ",a[i][j]);

printf("\n");

}

printf("输出牛顿插值表达式\n");

printf("N%d(x)=",n);

for(i=0;i

{

printf("%6.5f",a[i][i+1]);

for(j=0;j

printf("(x-%3.2f)",a[j][0]);

if(i==n)

break;

printf("+");

}

printf("\n");

printf("输入插值点x=");

scanf("%f",&x);

for(i=0;i

for(j=0;j

t*=(x-a[j][0]);s+=a[i][i+1]*t;

}printf("N%d(%4.3f)=%6.5f\n",n,x,s);} 4.【程序实现】

参考文献:

Richard L. Burden, J. Douglas Faires, Numerical Analysis (Seventh Edition), Brooks Pub. Co.,2001.

2. 蔡大用,白峰杉. 高等数值分析. 清华大学出版社,北京,1998.

3. 邓建中,刘之行. 计算方法(第二版).西安交通大学出版社,2001.

4. 韩旭里. 数值分析. 中南大学出版社,2003.

致谢

本文得以顺利完成,非常感谢我的指导教师。从论文的选题直到论文的最终完成,他都给予我尽心尽力的指导。老师严谨的治学态度深深地影响着我,对我今后的学习,工作,生活必将产生影响。借此机会,特向老师表示最诚挚的感谢。

感谢南昌工程学院理学系的所有领导和老师。他们严谨的学风,渊博的知识,诲人不倦的品格一直感染和激励着我不断上进,使我大学四年的时光充实而有意义,“自强不息,格物致知”,在这里我所学到的一切,必将使我受益终生。

在本论文的写作中,我也参照了大量的著作和文章,许多学者的科研成果及写作思路给了我很大的启发,在此向这些学者们表示由衷的感谢,感谢我的家人,同学,朋友对我的大力支持,他们的无私奉献,关爱和支持使我能够继

续去追求自己的人生理想和目标。感谢所有关心,帮助和支持我的人。

常见的插值方法及其原理

常见的插值方法及其原理 这一节无可避免要接触一些数学知识,为了让本文通俗易懂,我们尽量绕开讨厌的公式等。为了进一步的简化难度,我们把讨论从二维图像降到一维上。 首先来看看最简单的‘最临近像素插值’。 A,B是原图上已经有的点,现在我们要知道其中间X位置处的像素值。我们找出X位置和A,B位置之间的距离d1,d2,如图,d2要小于d1,所以我们就认为X处像素值的大小就等于B处像素值的大小。 显然,这种方法是非常苯的,同时会带来明显的失真。在A,B中点处的像素值会突然出现一个跳跃,这就是为什么会出现马赛克和锯齿等明显走样的原因。最临近插值法唯一的优点就是速度快。 图10,最临近法插值原理 接下来是稍微复杂点的‘线性插值’(Linear) 线性插值也很好理解,AB两点的像素值之间,我们认为是直线变化的,要求X点处的值,只需要找到对应位置直线上的一点即可。换句话说,A,B间任意一点的值只跟A,B有关。由于插值的结果是连续的,所以视觉上会比最小临近法要好一些。线性插值速度稍微要慢一点,但是效果要好不少。如果讲究速度,这是个不错的折衷。 图11,线性插值原理

其他插值方法 立方插值,样条插值等等,他们的目的是试图让插值的曲线显得更平滑,为了达到这个目的,他们不得不利用到周围若干范围内的点,这里的数学原理就不再详述了。 图12,高级的插值原理 如图,要求B,C之间X的值,需要利用B,C周围A,B,C,D四个点的像素值,通过某种计算,得到光滑的曲线,从而算出X的值来。计算量显然要比前两种大许多。 好了,以上就是基本知识。所谓两次线性和两次立方实际上就是把刚才的分析拓展到二维空间上,在宽和高方向上作两次插值的意思。在以上的基础上,有的软件还发展了更复杂的改进的插值方式譬如S-SPline, Turbo Photo等。他们的目的是使边缘的表现更完美。

二次插值算法

二次插值法亦是用于一元函数在确定的初始区间内搜索极小点的一种方法。它属于曲线拟合方法的范畴。 一、基本原理 在求解一元函数的极小点时,常常利用一个低次插值多项式来逼近原目标函数,然后求该多项式的极小点(低次多项式的极小点比较容易计算),并以此作为目标函数的近似极小点。如果其近似的程度尚未达到所要求的精度时,可以反复使用此法,逐次拟合,直到满足给定的精度时为止。 常用的插值多项式为二次或三次多项式,分别称为二次插值法和三次插值法。这里我们主要介绍二次插值法的计算公式。 假定目标函数在初始搜索区间中有三点、和 ,其函数值分别为、和(图1},且满足,,即满足函数值为两头大中间小的性质。利用这三点及相应的函数值作一条二次曲线,其函数为一个二次多项式 (1) 式中、、为待定系数。

图1 根据插值条件,插值函数与原函数在插值结点、、处函数值相等,得 (2) 为求插值多项式的极小点,可令其一阶导数为零,即 (3) 解式(3)即求得插值函数的极小点(4) 式(4)中要确定的系数可在方程组(2)中利用相邻两个方程消去而得: (5)

(6)将式(5)、(6)代入式(4)便得插值函数极小值点的计算公式: (7)把取作区间内的另一个计算点,比较与两点函数值的大小,在保持两头大中间小的前提下缩短搜索区间,从而构成新的三点搜索区间,再继续按上述 方法进行三点二次插值运算,直到满足规定的精度要求为止,把得到的最后的作为 的近似极小值点。上述求极值点的方法称为三点二次插值法。 为便于计算,可将式(7)改写为 (8) 式中: (9) (10) 二、迭代过程及算法框图 (1)确定初始插值结点 通常取初始搜索区间的两端点及中点为,, 。计算函数值,,,构成三个初始插值结点、、。

插值法数值上机实验报告

插值法数值上机实验报告 实验题目: 利用下列条件做插值逼近,并与R (x) 的图像比较 考虑函数:R x y=1 1+x2 (1)用等距节点X i=?5+i,i=0,1,...,10.给出它的10次Newton插值多项式的图像; π),i=0,1,...,20.给出它的20次Lagrange插值多项式(2)用节点X i=5cos(2i+1 42 的图像; (3)用等距节点X i=?5+i,i=0,1,...,10.给出它的分段线性插值函数的图像;(4)用等距节点X i=?5+i,i=0,1,...,10.给出它的三次自然样条插值函数的图像; (5)用等距节点X i=?5+i,i=0,1,...,10.给出它的分段三次Hermite插值函数的图像; 实验图像结果:

实验结果分析: 1.为了验证Range现象,我还特意做了10次牛顿插值多项式和20次牛顿插值多项式的对比图像,结果如下图(图对称,只截取一半) 可以看出,Range现象在高次时变得更加明显。这也是由于高次多项式在端点处的最值随次数的变大很明显。可以料定高次多项式在两侧端点处剧烈震荡,在更小的间距内急剧上升然后下降,Range现象非常明显。

2.分析实验(2)的结果,我们会惊讶地发现,由于取21个点逼近,原本预料的Range现象会很明显,但这里却和f(x)拟合的很好。(即下图中Lagrange p(x)的图像)。可是上图中取均匀节点的20次牛顿多项式逼近的效果在端点处却很差。料想是由于节点X i=5cos2i+1 42 π ,i=0,1,...,20 取得很好。由书上第五章的 知识,对于函数y=1 1+x ,y 1 2对应的cherbyshev多项式的根恰好为X i= 5cos2i+1 42 π ,i=0,1,...,20 。由于所学限制,未能深入分析。 (3)比较三次样条插值图像和Hermit插值图像对原函数图像的逼近情形。见下图:

arcgis空间内插值教程

GIS空间插值(局部插值方法)实习记录 一、空间插值的概念和原理 当我们需要做一幅某个区域的专题地图,或是对该区域进行详细研究的时候,必须具备研究区任一点的属性值,也就是连续的属性值。但是,由于各种属性数据(如降水量、气温等)很难实施地面无缝观测,所以,我们能获取的往往是离散的属性数据。例如本例,我们现有一幅山东省等降雨量图,但是最终目标是得到山东省降水量专题图(覆盖全省,统计完成后,各地均具有自己的降雨量属性)。 空间插值是指利用研究区已知数据来估算未知数据的过程,即将离散点的测量数据转换为连续的数据曲面。利用空间插值,我们就可以通过离散的等降雨量线,来推算出山东省各地的降雨量了。 二、空间插值的几种方法及本次实习采用的原理和方法 –整体插值方法 ?边界内插方法 ?趋势面分析 ?变换函数插值 –局部分块插值方法 ?自然邻域法 ?移动平均插值方法:反距离权重插值 ?样条函数插值法(薄板样条和张力样条法) ?空间自协方差最佳插值方法:克里金插值 ■局部插值方法的控制点个数与控制点选择问题 局部插值方法用一组已知数据点(我们将其称为控制点)样本来估算待插值点(未知点)的值,因此控制点对该方法十分重要。 为此,第一要注意的是控制点的个数。控制点的个数与估算结果精确程度的关系取决于控制点的分布与待插值点的关系以及控制点的空间自相关程度。为了获取更精确的插值结果,我们需要着重考虑上述两点因素(横线所示)。 第二需要注意的是怎样选择控制点。一种方法是用离估算点最近的点作为控制点;另一种方法是通过半径来选择控制点,半径的大小必须根据控制点的分布来调整。 S6、按照不同方法进行空间插值,并比较各自优劣 打开ArcToolbox——Spatial Analyst 工具——插值,打开插值方法列表,如下图:

牛顿插值法原理及应用

牛顿插值法 插值法是利用函数f (x)在某区间中若干点的函数值,作出适当的特定函数,在这些点上取已知值,在区间的其他点上用这特定函数的值作为函数f (x)的近似值。如果这特定函数是多项式,就称它为插值多项式。当插值节点增减时全部插值基函数均要随之变化,这在实际计算中很不方便。为了克服这一缺点,提出了牛顿插值。牛顿插值通过求各阶差商,递推得到的一个公式: f(x)=f[x0]+f[x0,x1](x-x0)+f[x0,x1,x2](x-x0)(x-x1)+...f[x0,...xn](x-x0 )...(x-xn-1)+Rn(x)。 插值函数 插值函数的概念及相关性质[1] 定义:设连续函数y-f(x) 在区间[a,b]上有定义,已知在n+1个互异的点 x0,x1,…xn上取值分别为y0,y1,…yn (设a≤ x1≤x2……≤xn≤b)。若在函数类中存在以简单函数P(x) ,使得P(xi)=yi,则称P(x) 为f(x)的插值函数. 称x1,x2,…xn 为插值节点,称[a,b]为插值区间。 定理:n次代数插值问题的解存在且唯一。

牛顿插值法C程序 程序框图#include void main() { float x[11],y[11][11],xx,temp,newton; int i,j,n; printf("Newton插值:\n请输入要运算的值:x="); scanf("%f",&xx); printf("请输入插值的次数(n<11):n="); scanf("%d",&n); printf("请输入%d组值:\n",n+1); for(i=0;i

插值法在图像处理中的运用要点

插值方法在图像处理中的应用 作者: 专业姓名学号 控制工程陈龙斌 控制工程陈少峰 控制工程殷文龙 摘要 本文介绍了插值方法在图像处理中的应用。介绍了典型的最近邻插值、双线性插值、双三次插值、双信道插值、分形插值的原理。以分形插值为重点,在图像放大领域用MATLAB进行仿真,并与其它方法的结果做了比对。指出了各种方法的利弊,期待更进一步的研究拓展新的算法以及改进现有算法。

一、引言 人类通过感觉器官从客观世界获取信息,而其中一半以上的信息都是通过视觉获得的。图像作为人类视觉信息传递的主要媒介,具有声音、语言、文字等形式无法比拟的优势,给人以具体、直观的物体形象。在数字化信息时代,图像处理已经成为重要的数据处理类型。数字图像比之传统的模拟图像处理有着不可比拟的优势。一般采用计算机处理或者硬件处理,处理的内容丰富,精度高,变通能力强,可进行非线性处理。但是处理速度就会有所不足。图像处理的主要内容有:几何处理、算术处理、图像增强、图像复原、图像重建、图像编码、图像识别、图像理解等。以上这些图像处理大体上可分为图像的像质改善、图像分析和图像重建三大部分。 日常生活中,越来越多的领域需要高分辨率图像,采用图像插值技术来提高数字图像的分辨率和清晰度,从软件方面进行改进就具有十分重要的实用价值。多媒体通信在现代网络传输中扮演重要角色,因此插值放大提高图像分辨率是一个非常重要的问题。此外,图像变换被广泛用于遥感图像的几何校正、医学成像以及电影、电视和媒体广告等影像特技处理中。在进行图像的一些几何变换时,通常都会出现输出像素坐标和输入栅格不重合的现象,也必须要用到图像插值。图像插值是图像处理中图像重采样过程中的重要组成部分,而重采样过程广泛应用于改善图像质量、进行有损压缩等,因而研究图像插值具有十分重要的理论意义和实用价值。 图像插值是一个数据再生过程。由原始图像数据再生出具有更高分辨率的图像数据。分为图像内插值和图像间插值。前者指将一幅较低分辨率的图像再生出一幅较高分辨率的图像。后者指在若干幅图像之间再生出几幅新的图像。插值过程就是确定某个函数在两个采样点之间的数值时采用的运算过程.通常是利用曲线拟合的方法进行插值算法,通过离散的输入采样点建立一个连续函数,用这个重建的函数求出任意位置处的函数值,这个过程可看作是采样的逆过程。 20世纪40年代末,香农提出了信息论,根据采样定理,若对采样值用sinc函数进行插值,则可准确地恢复原函数,于是sinc函数被接受为插值函数,也称为理想插值函数。理想插值函数有两个缺点: (1)它虽然对带限信号可以进行无错插值,但实际中带限信号只是一小部分信号。 (2)sinc函数的支撑是无限的,而没有函数既是带限的,又是紧支撑的。 为了解决这个问题,经典的办法是刚窗函数截断sinc函数,这个窗函数必须在0剑l 之间为正数,在l到2之间为负数。sinc函数对应的是无限冲激响应,不适于有限冲激相应来进行局部插值。对数字图像来说,对图像进行插值也称为图像的重采样。它分为两个步骤:将离散图像插值为连续图像以及对插值结果图像进行采样。 经典的图像插值算法是利用邻近像素点灰度值的加权平均值来计算未知像素点处的灰度值,而这种加权平均一般表现表现为信号的离散采样值与插值基函数之间的二维卷积。这种基于模型的加权平均的图像插值方法统称为线性方法。经典的插值方法有:最近邻域法,双线性插值,双三次B样条插值,双三次样条插值,sinc函数等。线性方法,它们一个共同点就是,所有这些基函数均是低通滤波器,对数据中的高频信息都具有滤除和抑制效应,因

数值分析实验报告记录

数值分析实验报告记录

————————————————————————————————作者:————————————————————————————————日期:

数值分析实验报告 (第二章) 实验题目: 分别用二分法、牛顿迭代法、割线法、史蒂芬森迭代法求方程 的根,观察不同初始值下的收敛性,并给出结论。 问题分析: 题目有以下几点要求: 1.不同的迭代法计算根,并比较收敛性。 2.选定不同的初始值,比较收敛性。 实验原理: 各个迭代法简述 二分法:取有根区间的重点,确定新的有根区间的区间长度仅为区间长度的一版。对压缩了的有根区间重复以上过程,又得到新的有根区间,其区间长度为的一半,如此反复,……,可得一系列有根区间,区间收敛到一个点即为根。 牛顿迭代法:不动点迭代法的一种特例,具有局部二次收敛的特性。迭代格式为 割线法:是牛顿法的改进,具有超线性收敛的特性,收敛阶为1.618. 迭代格式为 史蒂芬森迭代法:采用不动点迭代进行预估校正。至少是平方收敛的。迭代格式为 这里可采用牛顿迭代法的迭代函数。 实验内容:

1.写出该问题的函数代码如下: function py= f(x) syms k; y=(k^2+1)*(k-1)^5; yy=diff(y,k); py(1)=subs(y,k,x); py(2)=subs(yy,k,x); end 2.分别写出各个迭代法的迭代函数代码如下: 二分法: function y=dichotomie(a,b,e) i=2; m(1)=a; while abs(a-b)>e t=(a+b)/2; s1=f(a); s2=f(b); s3=f(t); if s1(1)*s3(1)<=0 b=t; else a=t; end m(i)=t; i=i+1; end y=[t,i+1,m]; end 牛顿迭代法: function y=NewtonIterative(x,e) i=2; en=2*e;m(1)=x; while abs(en)>=e s=f(x); t=x-s(1)/s(2); en=t-x; x=t; m(i)=t; i=i+1; end y=[x,i+1,m]; end 牛顿割线法: function y=Secant(x1,x2,e) i=3; m(1)=x1,m(2)=x2; while abs(x2-x1)>=e s1=f(x1); s2=f(x2); t=x2-(x2-x1)*s2(1)/(s2(1)-s1( 1)); x1=x2; x2=t; m(i)=t; i=i+1; end

插值法实验报告

实验二插值法 1、实验目的: 1、掌握直接利用拉格郎日插值多项式计算函数在已知点的函数值;观察拉格郎日插值的龙格现象。 2、了解Hermite插值法、三次样条插值法原理,结合计算公式,确定函数值。 2、实验要求: 1)认真分析题目的条件和要求,复习相关的理论知识,选择适当的解决方案和算法; 2)编写上机实验程序,作好上机前的准备工作; 3)上机调试程序,并试算各种方案,记录计算的结果(包括必要的中间结果); 4)分析和解释计算结果; 5)按照要求书写实验报告; 3、实验内容: 1) 用拉格郎日插值公式确定函数值;对函数f(x)进行拉格郎日插值,并对f(x)与插值多项式的曲线作比较。 已知函数表:(0.56160,0.82741)、(0.56280,0.82659)、(0.56401,0.82577)、(0.56521,0.82495)用三次拉格朗日插值多项式求x=0.5635时函数近似值。 2) 求满足插值条件的插值多项式及余项 1) 4、题目:插值法 5、原理: 拉格郎日插值原理: n次拉格朗日插值多项式为:L n (x)=y l (x)+y 1 l 1 (x)+y 2 l 2 (x)+…+y n l n (x)

n=1时,称为线性插值, L 1(x)=y (x-x 1 )/(x -x 1 )+y 1 (x-x )/(x 1 -x )=y +(y 1 -x )(x-x )/(x 1 -x ) n=2时,称为二次插值或抛物线插值, L 2(x)=y (x-x 1 )(x-x 2 )/(x -x 1 )/(x -x 2 )+y 1 (x-x )(x-x 2 )/(x 1 -x )/(x 1 -x 2 )+y 2 (x -x 0)(x-x 1 )/(x 2 -x )/(x 2 -x 1 ) n=i时, Li= (X-X0)……(X-X i-1)(x-x i+1) ……(x-x n) (X-X0)……(X-X i-1)(x-x i+1) ……(x-x n) 6、设计思想: 拉格朗日插值法是根据n + 1个点x0, x1, ... x n(x0 < x1 < ... x n)的函数值f (x0), f (x1) , ... , f (x n)推出n次多項式p(x),然后n次多項式p (x)求出任意的点x对应的函数值f (x)的算法。 7、对应程序: 1 ) 三次拉格朗日插值多项式求x=0.5635时函数近似值 #include"stdio.h" #define n 5 void main() { int i,j; float x[n],y[n]; float x1; float a=1; float b=1; float lx=0; printf("\n请输入想要求解的X:\n x="); scanf("%f",&x1); printf("请输入所有点的横纵坐标:\n"); for(i=1;i

牛顿插值法试验报告

. 牛顿插值法一、实验目的:学会牛顿插值法,并应用算法于实际问题。 x?x)f(二、实验内容:给定函数,已知: 4832401.2)?.?1449138f(2.f.f(20)?1.414214(2.1) 549193.)?1f(2.4516575(f2.3)?1. 三、实验要求:以此作为函数2.15插值多项式在处的值,用牛顿插值法求4 次Newton( 1)2.15?N(2.15)。在MATLAB中用内部函数ezplot绘制出的近似值4次Newton插值多项式的函数图形。 (2)在MATLAB中用内部函数ezplot可直接绘制出以上函数的图形,并与作出的4次Newton插值多项式的图形进行比较。 四、实验过程: 1、编写主函数。打开Editor编辑器,输入Newton插值法主程序语句: function [y,L]=newdscg(X,Y,x) n=length(X); z=x; A=zeros(n,n);A(:,1)=Y';s=0.0; p=1.0; for j=2:n for i=j:n A(i,j)=(A(i,j-1)- A(i-1,j-1))/(X(i)-X(i-j+1)); end end C=A(n,n); for k=(n-1):-1:1 C=conv(C,poly(X(k))); d=length(C);C(d)=C(d)+A(k,k); end y(k)= polyval(C, z); L(k,:)=poly2sym(C); 0 / 3 . %%%%%%%%%%%%%%%%%% t=[2,2.1,2.2,2.3,2.4]; fx=sqrt(t); wucha=fx-Y; 以文件名newdscg.m保存。 2、运行程序。 (1)在MATLAB命令窗口输入: >> X=[2,2.1,2.2,2.3,2.4]; Y =[1.414214,1.449138,1.483240,1.516575,1.549193]; x=2.15;[y,P]=newdscg(X,Y,x) 回车得到:

插值法的原理

《财务管理》教学中插值法的快速理解和掌握 摘要在时间价值及内部报酬率计算时常用到插入法,但初学者对该方法并不是很容易理解和掌握。本文根据不同情况分门别类。利用相似三角形原理推导出插入法计算用公式。并将其归纳为两类:加法公式和减法公式,简单易懂、理解准确、便于记忆、推导快捷。 关键词插入法;近似直边三角形;相似三角形 时间价值原理正确地揭示了不同时点上资金之间的换算。是财务决策的基本依据。为此,财务人员必须了解时间价值的概念和计算方法。但在教学过程中。笔者发现大多数教材插值法(也叫插入法)是用下述方法来进行的。如高等教育出版社2000年出版的《财务管理学》P62对贴现期的。 事实上,这样计算的结果是错误的。最直观的判断是:系数与期数成正向关系。而4.000更接近于3.791。那么最后的期数n应该更接近于5,而不是6。正确结果是:n=6-0.6=5.4(年)。由此可见,这种插入法比较麻烦,不小心时还容易出现上述错误。 笔者在教学实践中用公式法来进行插值法演算,效果很好,现分以下几种情况介绍其原理。 一、已知系数F和计息期n。求利息率i

这里的系数F不外乎是现值系数(如:复利现值系数PVIF年金现值系数PVIFA)和终值系数(如:复利终值系数FVIF、年金终值系数FVIFA)。 (一)已知的是现值系数 那么系数与利息率(也即贴现率)之间是反向关系:贴现率越大系数反而越小,可用图1表示。 图1中。F表示根据题意计算出来的年金现值系数(复利现值系数的图示略有不同,在于i可以等于0,此时纵轴上的系数F等于1),F为在相应系数表中查到的略大于F的那个系数,F对应的利息率即为i。查表所得的另一个比F略小的系数记作F,其对应的利息率为i。

数值分析实验报告-插值、三次样条(教育教学)

实验报告:牛顿差值多项式&三次样条 问题:在区间[-1,1]上分别取n=10、20用两组等距节点对龙格函数2 1()25f x x 作多项式插值及三次样条插值,对每个n 值,分别画出插值函数及()f x 的图形。 实验目的:通过编程实现牛顿插值方法和三次样条方法,加深对多项式插值的理解。应用所编程序解决实际算例。 实验要求: 1. 认真分析问题,深刻理解相关理论知识并能熟练应用; 2. 编写相关程序并进行实验; 3. 调试程序,得到最终结果; 4. 分析解释实验结果; 5. 按照要求完成实验报告。 实验原理: 详见《数值分析 第5版》第二章相关内容。 实验内容: (1)牛顿插值多项式 1.1 当n=10时: 在Matlab 下编写代码完成计算和画图。结果如下: 代码: clear all clc x1=-1:0.2:1; y1=1./(1+25.*x1.^2); n=length(x1); f=y1(:); for j=2:n for i=n:-1:j f(i)=(f(i)-f(i-1))/(x1(i)-x1(i-j+1)); end end syms F x p ; F(1)=1;p(1)=y1(1); for i=2:n F(i)=F(i-1)*(x-x1(i-1)); p(i)=f(i)*F(i);

end syms P P=sum(p); P10=vpa(expand(P),5); x0=-1:0.001:1; y0=subs(P,x,x0); y2=subs(1/(1+25*x^2),x,x0); plot(x0,y0,x0,y2) grid on xlabel('x') ylabel('y') P10即我们所求的牛顿插值多项式,其结果为:P10(x)=-220.94*x^10+494.91*x^8-9.5065e-14*x^7-381.43*x^6-8.504e-14*x^5+123.36*x^4+2.0202e-1 4*x^3-16.855*x^2-6.6594e-16*x+1.0 并且这里也能得到该牛顿插值多项式的在[-1,1]上的图形,并和原函数进行对比(见Fig.1)。 Fig.1 牛顿插值多项式(n=10)函数和原函数图形 从图形中我们可以明显的观察出插值函数在两端点处发生了剧烈的波动,产生了极大的误差,即龙格现象,当n=20时,这一现象将更加明显。 1.2 当n=20时: 对n=10的代码进行修改就可以得到n=20时的代码。将“x1=-1:0.2:1;”改为“x1=-1:0.1:1;”即可。运行程序,我们得到n=20时的牛顿插值多项式,结果为:P20(x)= 260188.0*x^20 - 1.0121e6*x^18 + 2.6193e-12*x^17 + 1.6392e6*x^16 + 2.248e-11*x^15 - 1.4429e6*x^14 - 4.6331e-11*x^13 + 757299.0*x^12 + 1.7687e-11*x^11 - 245255.0*x^10 + 2.1019e-11*x^9 + 49318.0*x^8 + 3.5903e-12*x^7 - 6119.2*x^6 - 1.5935e-12*x^5 + 470.85*x^4 + 1.3597e-14*x^3 - 24.143*x^2 - 1.738e-14*x + 1.0 同样的,这里得到了该牛顿插值多项式的在[-1,1]上的图形,并和原函数进行对比(见Fig.2)。

《财务管理》教学中插值法的快速理解和掌握

摘要在时间价值及内部报酬率计算时常用到插入法,但初学者对该方法并 不是很容易理解和掌握。本文根据不同情况分门别类。利用相似三角形原理推 导出插入法计算用公式。并将其归纳为两类:加法公式和减法公式,简单易懂、理解准确、便于记忆、推导快捷。 关键词插入法;近似直边三角形;相似三角形 时间价值原理正确地揭示了不同时点上资金之间的换算。是财务决策的基 本依据。为此,财务人员必须了解时间价值的概念和计算方法。但在教学过程中。笔者发现大多数教材插值法(也叫插入法)是用下述方法来进行的。如高等 教育出版社2000年出版的《财务管理学》P62对贴现期的。 事实上,这样计算的结果是错误的。最直观的判断是:系数与期数成正向 关系。而4.000更接近于3.791。那么最后的期数n应该更接近于5,而不是6。正确结果是:n=6-0.6=5.4(年)。由此可见,这种插入法比较麻烦,不小心时还容易出现上述错误。 笔者在教学实践中用公式法来进行插值法演算,效果很好,现分以下几种 情况介绍其原理。 一、已知系数F和计息期n。求利息率i 这里的系数F不外乎是现值系数(如:复利现值系数PVIF年金现值系数PVIFA)和终值系数(如:复利终值系数FVIF、年金终值系数FVIFA)。 (一)已知的是现值系数 那么系数与利息率(也即贴现率)之间是反向关系:贴现率越大系数反而越小,可用图1表示。 图1中。F表示根据题意计算出来的年金现值系数(复利现值系数的图示略 有不同,在于i可以等于0,此时纵轴上的系数F等于1),F为在相应系数表 中查到的略大于F的那个系数,F对应的利息率即为i。查表所得的另一个比F 略小的系数记作F,其对应的利息率为i。

matlab(迭代法-牛顿插值)Word版

实验报告内容: 一:不动点迭代法解方程 二:牛顿插值法的MATLAB实现 完成日期:2012年6月21日星期四 数学实验报告一 日期:2012-6-21

所以,确定初值为x0=1 二:不断迭代 算法: 第一步:将f(x0)赋值给x1 第二步:确定x1-x0的绝对值大小,若小于给定的误差值,则将x1当做方程的解,否则回到第一步 编写计算机程序: clear f=inline('0.5*sin(x)+0.4'); x0=1; x1=f(x0); k=1; while abs(x1-x0)>=1.0e-6 x0=x1; x1=f(x0); k=k+1; fprintf('k=%.0f,x0=%.9f,x1=%.9f\n',k,x0,x1) end 显示结果如下: k=2,x0=0.820735492,x1=0.765823700 k=3,x0=0.765823700,x1=0.746565483 k=4,x0=0.746565483,x1=0.739560873

k=6,x0=0.736981783,x1=0.736027993 k=7,x0=0.736027993,x1=0.735674699 k=8,x0=0.735674699,x1=0.735543758 k=9,x0=0.735543758,x1=0.735495216 k=10,x0=0.735495216,x1=0.735477220 k=11,x0=0.735477220,x1=0.735470548 k=12,x0=0.735470548,x1=0.735468074 k=13,x0=0.735468074,x1=0.735467157 >>。。。 以下是程序运行截图:

几种插值法的应用和比较

插值法的应用与比较 信科1302 万贤浩 13271038 1格朗日插值法 在数值分析中,拉格朗日插值法是以法国十八世纪数学家约瑟夫·路易斯·拉格朗日命名的一种多项式插值方法.许多实际问题中都用函数来表示某种内在联系或规律,而不少函数都只能通过实验和观测来了解.如对实践中的某个物理量进行观测,在若干个不同的地方得到相应的观测值,拉格朗日插值法可以找到一个多项式,其恰好在各个观测的点取到观测到的值.这样的多项式称为拉格朗日(插值)多项式.数学上来说,拉格朗日插值法可以给出一个恰好穿过二维平面上若干个已知点的多项式函数.拉格朗日插值法最早被英国数学家爱德华·华林于1779年发现,不久后由莱昂哈德·欧拉再次发现.1795年,拉格朗日在其著作《师范学校数学基础教程》中发表了这个插值方法,从此他的名字就和这个方法联系在一起. 1.1拉格朗日插值多项式 图1 已知平面上四个点:(?9, 5), (?4, 2), (?1, ?2), (7, 9),拉格朗日多项式:)(x L (黑色)穿过所有点.而每个基本多项式:)(00x l y ,)(11x l y , )(22x l y 以及)(x l y ??各穿过对应的一点,并在其它的三个点的x 值上取零. 对于给定的若1+n 个点),(00y x ,),(11y x ,………),(n n y x ,对应于它们的次数不超过n 的拉格朗日多项式L 只有一个.如果计入次数更高的多项式,则有无穷个,因为所有与L 相差 ))((10x x x x --λ……)(n x x -的多项式都满足条件. 对某个多项式函数,已知有给定的1+k 个取值点: ),(00y x ,……,),(k k y x ,

数值分析课程实验报告-拉格朗日和牛顿插值法

《数值分析》课程实验报告 用拉格朗日和牛顿插值法求解函数值 算法名称用拉格朗日和牛顿插值法求函数值 学科专业xxxxx 作者姓名xxxx 作者学号xxxxx 作者班级xxxxxx xxx大学 二〇一五年十二月

《数值分析》课程实验报告

得到的近似值为。 拉格朗日插值模型简单,结构紧凑,是经典的插值法。但是由于拉格朗日的插值多项式和每个节点都有关,当改变节点个数时,需要重新计算。且当增大插值阶数时容易出现龙格现象。 2.牛顿插值法 在命令窗口输入: x=[ ]; y=[ ]; xt=; [yt,N]=NewtInterp(x,y,xt) z=::2; yz=subs(N,'t',z); figure; plot(z,sqrt(z),'--r',z,yz,'-b') hold on plot(x,y,'marker','+') hold on plot(xt,yt,'marker','o') h=legend('$\sqrt{x}$','牛顿','$(x_k,y_k)$','$x=$'); set(h,'Interpreter','latex') xlabel('x') ylabel('y') 得到结果及图像如下: yt = N = - *t^4 + *t^3 - *t^2 + *t +

得到√的近似值为,插值函数为 N =- *t^4 + *t^3 - *t^2 + *t + , 其计算精度是相当高的。 Lagrange插值法和Newton插值法解决实际问题中关于只提供复杂的离散数据的函数求值问题,通过将所考察的函数简单化,构造关于离散数据实际函数f(x)的近似函数P(x),从而可以计算未知点出的函数值,是插值法的基本思路。 实际上Lagrange插值法和Newton插值法是同一种方法的两种变形,其构造拟合函数的思路是相同的,而实验中两个实际问题用两种算法计算出结果是相同的。

牛顿插值法实验报告

牛顿插值法 一、实验目的:学会牛顿插值法,并应用算法于实际问题。 二、实验内容:给定函数 x x f =)(,已知: 414214.1)0.2(=f 449138.1)1.2(=f 483240.1)2.2(=f 516575.1)3.2(=f 549193.1)4.2(=f 三、实验要求: (1)用牛顿插值法求4次Newton 插值多项式在2.15处的值,以此作为函数的近似值)15.2(15.2N ≈。在MATLAB 中用内部函数ezplot 绘制出4次Newton 插值多项式的函数图形。 (2)在MATLAB 中用内部函数ezplot 可直接绘制出以上函数的图形,并与作出的4次Newton 插值多项式的图形进行比较。 四、实验过程: 1、编写主函数。打开Editor 编辑器,输入Newton 插值法主程序语句: function [y,L]=newdscg(X,Y,x) n=length(X); z=x; A=zeros(n,n);A(:,1)=Y';s=0.0; p=1.0; for j=2:n for i=j:n A(i,j)=(A(i,j-1)- A(i-1,j-1))/(X(i)-X(i-j+1)); end end C=A(n,n); for k=(n-1):-1:1 C=conv(C,poly(X(k))); d=length(C);C(d)=C(d)+A(k,k); end y(k)= polyval(C, z); L(k,:)=poly2sym(C);

%%%%%%%%%%%%%%%%%% t=[2,2.1,2.2,2.3,2.4]; fx=sqrt(t); wucha=fx-Y; 以文件名newdscg.m保存。 2、运行程序。 (1)在MATLAB命令窗口输入: >> X=[2,2.1,2.2,2.3,2.4]; Y =[1.414214,1.449138,1.483240,1.516575,1.549193]; x=2.15;[y,P]=newdscg(X,Y,x) 回车得到: y =1.4663 wucha =1.0e-06 * -0.4376 -0.3254 -0.3026 0.0888 0.3385 P = - (4803839603609061*x^4)/2305843009213693952 + (7806239355294329*x^3)/288230376151711744 - (176292469178709*x^2)/1125899906842624 + (1624739243112817*x)/2251799813685248 + 1865116246031207/4503599627370496 (2)在MATLAB命令窗口输入: >> v=[0,6,-1,3]; >> ezplot(P),axis(v),grid >> hold on >> x=0:0.1:6; >> yt=sqrt(x);plot(x,yt,':') >> legend('插值效果','原函数') >> xlabel('X') >> ylabel('Y') >>title('Newton插值与原函数比较') 回车即可得到图像1-1。

计算方法上机作业插值与拟合实验报告

计算方法实验 题目: 班级: 学号: 姓名:

目录 计算方法实验 (1) 1 实验目的 (3) 2 实验步骤 (3) 2.1环境配置: (3) 2.2添加头文件 (3) 2.3主要模块 (3) 3 代码 (4) 3.1主程序部分 (4) 3.2多项式方程部分 (4) 3.3核心算法部分 (8) 3.4数据结构部分 (13) 4运行结果 (19) 4.1拉格朗日插值法运行结果 (19) 4.2牛顿插值法运行结果 (20) 4.3多项式拟合运行结果 (20) 5总结 (21) 拉格朗日插值法 (21) 牛顿插值法 (21) 多项式拟合 (21) 6参考资料 (22)

1 实验目的 1.通过编程对拉格朗日插值法、牛顿插值法以及多项式拟合数据的理解 2.观察上述方法的计算稳定性和求解精度并比较各种方法利弊 2 实验步骤 2.1环境配置: VS2013,C++控制台程序 2.2添加头文件 #include "stdio.h" #include "stdlib.h" #include "stdafx.h" 2.3主要模块 程序一共分成三层,最底层是数据结构部分,负责存储数据,第二层是交互部分,即多项式方程部分,负责输入输出获得数据,最上层是核心的算法部分,负责处理已获得的数据。具体功能如下: ●数据结构部分 数据结构部分是整个程序的最底层,负责存储部分。因方程系数作为数据元素插入和删除操作较少,而顺序表空间利用率大且查看方便,故此程序选用顺序表保存系数。数据结构文件中写的是有关顺序表的所有基本操作以供其他文件调用。本次实验使用列主元高斯消元法作为求解方程组的方法,所以也用了二维顺序表存储数组。综上,数据结构部分文件是前两个试验的文件内容和,稍作修改。 ●常系数微分方程部分 多项式方程部分是程序的第二层,内容主要是常系数微分方程导数的计算和显示菜单部分。 ●算法部分 算法部分分为两个文件,一个是插值部分,一个是拟合部分。 插值部分文件负责有关插值的核心算法,处于整个程序最上层部分,负责拉格朗日插值法和牛顿插值法的具体实现过程。调用方程文件的函数,将获得的数据进行处理运算,将结果返回给方程主函数和输出的第二层。每种方法有两个函数,一个为仅仅实现一次插值的算法,另一个是和方程部分联系的

拉格朗日插值法理论及误差分析

目录: 一、 引言 二、 插值及多项式插值的介绍 三、 拉格朗日插值的理论及实验 四、 拉格朗日插值多项式的截断误差及实用估计式 五、 参考文献 一、引言 插值在数学发展史上是个古老问题。插值是和拉格朗日(Lagrange )、牛顿(Newton )、高斯(Gauss )等著名数学家的名字连在一起的。在科学研究和日常生活中,常常会遇到计算函数值等一类问题。插值法有很丰富的历史渊源,它最初来源人们对天体研究——有若干观测点(我们称为节点)计算任意时刻星球的位置(插值点和插值)。现在,人们在诸如机械加工等工程技术和数据处理等科研都有很好的应用,最常见的应用就是气象预报。插值理论和方法能解决在实际中当许多函数表达式未知或形式复杂,如何去构造近似表达式及求得在其他节点处的值的问题。 二、插值及多项式插值 1、插值问题的描述 设已知某函数关系()y f x =在某些离散点上的函数值: 插值问题:根据这些已知数据来构造函数()y f x =的一种简单的近似表达式,以便于计算点,0,1,,i x x i n ≠=的函数值()f x ,或计算函数的一阶、二阶导数 值。 2、插值的几何意义 x x 0 y y 1 y 1 n y -n y 1 x 1 n x -n x

插值的几何意义如图1所示: 图1 3、多项式插值 基本概念 假设()y f x =是定义在区间,a b ????上的未知或复杂函数,但一直该函数在点01n a x x x b ≤<< <≤处的函数值01,,n y y y 。找一个简单的函数,例如函数 ()P x ,使之满足条件 (),0,1,2, ,,i P x y i n == () 通常把上述01n x x x << < 称为插值节点,把()P x 称为()f x 的插值多项 式,条件()称为插值条件,并把求()P x 的过程称为插值法。 插值多项式的存在性和唯一性 如果插值函数是如下m 次的多项式: 1011()m m m m m P x a x a x a x a --=++ + 那么插值函数的构造就是要确定()m P x 表达式中的m+1个系数 011,, ,m m a a a a -。由于插值条件包含n+1独立式,只要m=n 就可证明插值函数多 项式是唯一存在。 实际上,由n+1个插值条件可得

常见插值法

常见插值法 【摘 要】插值方法在数值分析中起着非常重要的作用。在此介绍一些常见的插值方法及 其应用范例。 【关键字】数值分析;插值方法;应用; 1. 插值法定义 插值法又称“内插法”,是利用函数f (x)在某区间中 插入若干点的函数值,作出适当的特定函数,在这些 表(1) 插值点 点上取已知值,在区间的其他点上用这特定函数的值作为函数f (x)的近似值,这种方法称为插值法。如果这特定函数是多项式,就称它为插值多项式。 2.常见的插值法及其构造 Lagrange 插值法 (a).公式推导: 表(1)的Lagrange 插值的插值多项式 ∑==n i i i x l x f x 0 n )()()(L ,(j=0,1,2....n)。 其中插值基函数是 ∏ ≠=--=n j i i j i j x x x x x l 0 n ) ()()(,(i,j=0,1 2...n) 。 其插值余项为 其中),b a (∈ ξ,∏≠=+--=n j i i j i j x x x x x 0 1n )() ()(ω (b).matlab 实现方法: Matlab 没有直接求解的相关函数,现编译如下: function yi = Lagarange_chazhi(x,y,xi) % 求拉格朗日插值,并返回一个输入为xi 时的函数值 % x 为插值点向量,至少有三项 % y 为插值点值的向量,项数与x 相同 m = length(x); %求插值个数 m1 = length(y); if m<=2 error('项数不足!'); end if m~=m1 error('!!!y 的项数应与x 相同!!!'); end %对参数的判断 lag_hanshu = 0; syms X ; for (l = 1:m) %构造插值基函数 la = y(l); for a = (1:l-1) la = la*(X-x(a))/(x(l)-x(a)); end for a = (l+1:m) la = la*(X-x(a))/(x(l)-x(a)); end format long lag_hanshu = lag_hanshu+la; %求解出插值函数 end yi = subs( lag_hanshu,'X',xi); %返回插值函数输入为xi 时的值 End (c).方法缺陷:当插值点个数7n ≥时,将产生 龙格现象: 经典例子,对) 251(1 )(2x x f += 进行拉格朗日插 0x 1x 2x ....... 1-n x n x 0y 1y 2y ....... 1-n y n y ), (!)1() ()()()(1)1(x n f x L x f x R n n n n +++=-=ωξ

相关文档
最新文档