当前位置:文档之家› 计算方法——插值法综述

计算方法——插值法综述

计算方法——插值法综述
计算方法——插值法综述

计算方法——插值法

11223510 李晓东

在许多实际问题及科学研究中,因素之间往往存在着函数关系,然而,这种关系经常很难有明显的解析表达,通常只是一些离散数值。有时即使给出了解析表达式,却由于表达式过于复杂,使用不便,且不易于计算与分析。解决这类问题我们往往使用插值法:用一个“简单函数”)(x ?逼近被计算函数)(x f ,然后用)(x ?的函数值近似替代)(x f 的函数值。插值法要求给出)(x f 的一个函数表,然后选定一种简单的函数形式,比如多项式、分段线性函数及三角多项式等,通过已知的函数表来确定)(x ?作为)(x f 的近似,概括地说,就是用简单函数为离散数组建立连续模型。

一、 理论与算法

(一)拉格朗日插值法

在求满足插值条件n 次插值多项式)(x P n 之前,先考虑一个简单的插值问题:对节点),,1,0(n i x i =中任一点)0(n k x k ≤≤,作一n 次多项式)(x l k ,使它在该点上取值为1,而在其余点),,1,1,1,0(n k k i x i +-=上取值为零,即

?

?

?≠==k i k

i x l i k 01)( (1.1)

上式表明n 个点n k k x x x x x ,,,,,,1110 +-都是n 次多项式)(x l k 的零点,故可设

)())(())(()(1110n k k k k x x x x x x x x x x A x l -----=+-

其中,k A 为待定系数。由条件1)(=k k x l 立即可得

)())(()(1

110n k k k k k k k x x x x x x x x A ----=

+-

(1.2)

故 )

())(()()

())(()()(110110n k k k k k k n k k k x x x x x x x x x x x x x x x x x l --------=

+-+-

(1.3)

由上式可以写出1+n 个n 次插值多项式)(,),(),(10x l x l x l n 。我们称它们为在1+n 个节点n x x x ,,,10 上的n 次基本插值多项式或n 次插值基函数。

利用插值基函数立即可以写出满足插值条件的n 次插值多项式 )()()(1100x l y x l y x l y n n +++

(1.4)

根据条件(1.1),容易验证上面多项式在节点i x 处的值为),,1,0(n i y i =,因此,它就是待求的n 次插值多项式)(x P n 。

形如式(1.4)的插值多项式就是拉格朗日插值多项式,记为)(x L n ,即

)())(()()())(()()

()()()(1101100

1100n k k k k k k n k k n

k k

n n n x x x x x x x x x x x x x x x x y x l y x l y x l y x L --------=+++=+-+-=∑ (1.5)

为了便于上机,常将拉格朗日插值多项式(1.5)改写成:

∑∏=≠=????

?

?????????

??--=n k n

k

j j j k j

k n x x x x y x L 00)( (1.6)

下图给出了利用式(1.6)计算x 处函数值)(x L n 的程序流程图:

根据流程图用matlab 语言编写的函数为:

y ←0 输入x i ,y i (i=1,2...,n )及n,x y ←y+P*y k

输出x,y

k=1,2,...,n

P ←1 j=1,2,...,n

j=k?

P ←P *(x -x j )/(x k -x j )

function y=lagrange(x0,y0,x) n=length(x0);m=length(x); for i=1:m s=0.0; for k=1:n p=1.0; for j=1:n if j~=k

p=p*(x(i)-x0(j))/(x0(k)-x0(j)); end end s=p*y0(k)+s; end y(i)=s; end

(二)分段线性插值法

由于高次的插值多项式有不收敛现象,有时会出现较大的误差,不能有效的逼近被插函数,所以人们提出了用分段的低次多项式逼近被插函数,这就是分段插值方法。常见的有分段线性插值和分段二次插值,本文使用的是分段线性插值法。

当给定了n 个点n x x x <<21上的函数值n y y y ,,,21 后,若要计算点i x x ≠处函数值)(x f 的近似值。可先选取两个节点i x 与1+i x ,使[]1,+∈i i x x x ,然后在小区间[]1,+i i x x 上座线性插值,即得:

()i

i i

i i i i i

x x x x y x x x x y x P x f --+--=≈++++11

111)(

(2.1)

相应的程序流程图如下:

输入x i ,y i (i=1,2,...,n )及n,x

j=1,2,...,n -1

输出x,P 1(x)

按公式(2.1)计算P 1(x)

x ∈[x j ,x j +1]?

根据流程图用matlab 语言编写的函数为:

function y=seg_linear(x0,y0,x) n = length(x0);m=length(x); for i=1:m for j=1:n-1 if x(i)>=x0(j) if x(i)<=x0(j+1)

y(i)=y0(j)*(x(i)-x0(j+1))/(x0(j)-x0(j+1))+y0(j+1)*(x(i)-x0(j))/(x0(j+1)-x0(j));

end end end end

(三)牛顿插值法

设有函数()x f , 210,,x x x ,为一系列互不相等的点,称[]()()()

j i x x x f x f x x f j

i j i j i ≠--=,为()x f 关于点j i x x ,的一阶差商。一般的称

[][][]k

k k k x x x x x f x x x f x x x f --=

-01011010,,,,,,,,,

(3.1)

为()x f 关于点k x x x ,,,10 的k 阶差商。 则

()()()x R x N x f n n +=

其中

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

n n n x x x f x x x x x x x x x f x x x x x x f x x x f x N ,,,,,,1011021010000 ----+

+--+-+= (3.2)

()()()()[]n n n x x x f x x x x x x x R ,,,1110 ----=

(3.3)

显然,()x N n 是满足插值条件的至多n 次的多项式。可得()()()n i x N x f i n i ,,1,0 ==。 因而它是()x f 的n 次的插值多项式。我们称()x N n 为牛顿插值多项式。

在实际计算中,经常利用由式(3.1)构造出的差商表3.1计算差商,即由表3.1

中加下划横线的差商值直接构造插值多项式(3.2)

()k k x f x 一阶差商 二阶差商 三阶差商 四阶差商

程序流程图为:

y ←y+F (1,1)

输出F,y

输入x i ,y i (i=1,2,...,n )及n,x

j=2,3,...,n i=j,j+1,...,n F (i,j )←[F (i,j -1)-F (i -1,j -1)]/(x i -x i -j+1) t ←1 i=1,2,...,k -1 t ←(x -x i )*t j=2,3,...,n y ←y+F (j,j )*t 表3.1

function y=newton(x0,y0,x)

x0=x0(:);y0=y0(:);

n=length(x0);m=length(x);

F=zeros(n,n); %均差表二维矩阵,对角线上元素对应

y=0*x; %插值点对应的近似值

F(:,1)=y0; %均差表第一列为已知节点函数值

for j=2:n

for i=j:n

F(i,j)=(F(i,j-1)-F(i-1,j-1))/(x0(i)-x0(i-j+1));

end

end

for j=1:m

for k=2:n

t=1;

for i=1:k-1

t=(x(j)-x0(i))*t;

end

y(j)=y(j)+F(k,k)*t;

end

y(j)=y(j)+F(1,1);

end

disp('差商表:')

F=[x0,F];

disp(F)

二、例题分析

给出)

f的函数表

(x

x0.4 0.55 0.65 0.80 0.90 1.05 f0.41075 0.57815 0.69675 0.88811 1.02652 1.25382 )

(x

1、用Lagrange插值法计算)

42

(0.f

f

f、

、的近似值;

f

(0.596)

(

1.0

)

753

(0.

)

2、用分段线性插值法计算)

f

(0.f

f

42

、的近似值;

f、

(

1.0

)

753

(0.596)

(0.

)

3、构造差商表,用牛顿插值法计算)

f

(0.f

f

42

f、

、的近似

753

(

1.0

)

)

(0.

(0.596)

值。

先将函数表存放到matlab的workspace中以便调用:

1、Lagrange插值

2、分段线性插值

3、牛顿插值法

拉格朗日插值的优点:它的形式是对称的,这样很容易编程上机实现。它在理论上十分重要。牛顿插值的优点:在计算插值多项式及求解函数近似值都比较方便且计算量相对较小。从公式中可以看出:每增加一个节点,插值多项式只增加一项,因此便于递推运算,所以其具有灵活增加节点的优点。

两者的不同点:牛顿插值的计算量比拉格朗日要省,更利于程序设计。由插值多项式的唯一性可知,n次牛顿插值多项式与n次拉格朗日插值多项式是等价的,它们只是表示形式不同。因此,牛顿余项和拉格朗日余项也是等价的,故matlab计算结果二者一致。

绘制所求点及已知节点在坐标中的位置,在matlab中运行:

plot(x,y3,'rv',x,y2,'g^',x0,y0,'-.y',x0,y0,'ob')

得到坐标图:

放大其中两组点可以看出,牛顿插值法和拉格朗日插值法有较高的精度,误差很小,

而分段线性插值的误差略大。但是牛顿仅对节点处的函数作了约束,如果插值条件再增加节点处对导数的限制的话,解决这个问题的方法就是要利用 Hermite 插值多项式。但是由于高次插值存在不稳定性,会出现龙格(Runge)现象,一般实际计算很少使用高次插值,更多的使用分段低次插值。

数值计算方法比较

有限差分方法(FDM:Finite Difference Method)是计算机数值模拟最早采用的方法,至今仍被广泛运用。该方法将求解域划分为差分网格,用有限个网格节点代替连续的求解域。有限差分法以Taylor级数展开等方法,把控制方程中的导数用网格节点上的函数值的差商代替进行离散,从而建立以网格节点上的值为未知数的代数方程组。有限差分法主要集中在依赖于时间的问题(双曲型和抛物型方程)。有限差分法方面的经典文献有Richtmeyer & Morton的《Difference Methods for Initial-Value Problems》;R. LeVeque《Finite Difference Method for Differential Equations》;《Numerical Methods for C onservation Laws》。 注:差分格式: (1)从格式的精度来划分,有一阶格式、二阶格式和高阶格式。 (2)从差分的空间形式来考虑,可分为中心格式和逆风格式。 (3)考虑时间因子的影响,差分格式还可以分为显格式、隐格式、显隐交替格式等。 目前常见的差分格式,主要是上述几种形式的组合,不同的组合构成不同的差分格式。差分方法主要适用于有结构网格,网格的步长一般根据实际地形的情况和柯朗稳定条件来决定。 构造差分的方法: 构造差分的方法有多种形式,目前主要采用的是泰勒级数展开方法。其基本的差分表达式主要有三种形式:一阶向前差分、一阶向后差分、一阶中心差分和二阶中心差分等,其中前两种格式为一阶计算精度,后两种格式为二阶计算精度。通过对时间和空间这几种不同差分格式的组合,可以组合成不同的差分计算格式。 有限差分法的不足:由于采用的是直交网格,因此较难适应区域形状的任意性,而且区分不出场函数在区域中的轻重缓急之差异,缺乏统一有效的处理自然边值条件和内边值条件的方法,难以构造高精度(指收敛阶)差分格式,除非允许差分方程联系更多的节点(这又进一步增加处理边值条件韵困难)。另外它还有编制不出通用程序的困难。 有限差分法的优点:该方法是一种直接将微分问题变为代数问题的近似数值解法,数学概念 直观,表达简单,精度可选而且在一个时间步内,对于一个给定点来说其相关的空间点只是 与该相邻的几点,而不是全部的空间点。是发展较早且比较成熟的数值方法 广义差分法(有限体积法)(GDM:Generalized Difference Method):1953年,Mac—Neal 利用积分插值法(也称积分均衡法)建立了三角网格上的差分格 式,这就是以后通称的不规划网格上的差分法.这种方法的几何误差小,特别是给出了处理自然边值条件(及内边值条件)的有效方法,堪称差分法的一大进步。1978年,李荣华利用有限元空间和对偶单元上特征函数的推广——局部Taylor展式的公项,将积分插值法改写成广义Galerkin法形式,从而将不规则网格差分法推广为广义差分法.其基本思路是,将计算区域划分为一系列不重复的控制体积,并使每个网格点周围有

数值分析插值算法源程序

#include #include float f(float x) //计算ex的值 { return (exp(x)); } float g(float x) //计算根号x的值 { return (pow(x,0.5)); } void linerity () //线性插值 { float px,x; float x0,x1; printf("请输入x0,x1的值\n"); scanf("%f,%f",&x0,&x1); printf("请输入x的值: "); scanf("%f",&x); px=(x-x1)/(x0-x1)*f(x0)+(x-x0)/(x1-x0)*f(x1); printf("f(%f)=%f \n",x,px); } void second () //二次插值 { float x0,x1,x2,x,px; x0=0; x1=0.5; x2=2; printf("请输入x的值:"); scanf("%f",&x); px=((x-x1)*(x-x2))/((x0-x1)*(x0-x2))*f(x0)+((x-x0)*(x-x2))/((x1-x0)*(x1-x2))*f(x1)+((x-x0)* (x-x1))/((x2-x0)*(x2-x1))*f(x2);

printf("f(%f)=%f\n",x,px); } void Hermite () //Hermite插值 { int i,k,n=2; int flag1=0; printf("Hermite插值多项式H5(x)="); for(i=0;i<=n;i++) { int flag=0; flag1++; if(flag1==1) { printf("y%d[1-2(x-x%d)*(",i,i); } else { printf("+y%d[1-2(x-x%d)*(",i,i); } for(k=0;k<=n;k++) { if(k!=i) { flag++; if(flag==1) { printf("(1/x%d-x%d)",i,k); } else { printf("+(1/x%d-x%d)",i,k);

线性插值法计算公式解析

线性插值法计算公式解析 LELE was finally revised on the morning of December 16, 2020

线性插值法计算公式解析 2011年招标师考试实务真题第16题:某机电产品国际招标项目采用综合评价法评标。评标办法规定,产能指标评标总分值为10分,产能在100吨/日以上的为10分,80吨/日的为5分,60吨/日以下的为0分,中间产能按插值法计算分值。某投标人产能为95吨/日,应得()分。A. B.8.75 C. D. 分析:该题的考点属线性插值法又称为直线内插法,是评标办法的一种,很多学员无法理解公式含义,只能靠死记硬背,造成的结果是很快会遗忘,无法应对考试和工作中遇到的问题,对此本人从理论上进行推导,希望对学员有所帮助。 一、线性插值法两种图形及适用情形 F F F2

图一:适用于某项指标越低得分越高的项目 评分计算,如投标报价得分的计算 图二:适用于某项投标因素指标越高,得分越高的 情形,如生产效率等 二、公式推导 对于这个插值法,如何计算和运用呢,我个人认为考生在考试时先试着画一下上面的图,只有图出来了,根据三角函数定义,tana=角的对边比上邻边,从图上可以看出,∠A是始终保持不变的,因此,根据三角函数tana,我们可以得出这样的公式

图一:tana=(F1-F2)/(D2-D1)=(F-F2)/(D2-D)=(F1-F)/(D-D1),通过这个公式,我们可以进行多种推算,得出最终公式如下 F=F2+(F1-F2)*(D2-D)/ (D2-D1) 或者F= F1-(F1-F2)*(D-D1)/(D2-D1) 图二:tana=(F1-F2)/(D2-D1)=(F-F2)/ (D-D1)=(F1-F) /(D2-D) 通过这个公式我们不难得出公式: F= F2+(F1-F2)*(D-D1)/(D2-D1) 或者F=F1-(F1-F2)*(D2-D)/(D2-D1) 三:例题解析 例题一:某招标文件规定有效投标报价最高的得30分,有效投标报价最低的得60分,投标人的报价得分用线性插值法计算,在评审中,评委发现有效的最高报价为300万元,有效最低的报价为240万元,某A企业的有效投标报价为280万元,问他的价格得分为多少 分析,该题属于图一的适用情形,套用公式 计算步骤:F=60+(30-60)/(300-240)*(280-240)=40 例题二:某招标文件规定,水泵工作效率85%的3分,95%的8分,某投标人的水泵工作效率为92%,问工作效率指标得多少分

计算方法实验报告 插值

实验名称:插值计算 1引言 在生产和科研中出现的函数是多种多样的。常常会遇到这样的情况:在某个实际问题中,虽然可以断定所考虑的函数f(x)在区间[a,b]上存在且连续,但却难以找到它的解析表达式,只能通过实验和观测得到在有限个点上的函数值。用这张函数表来直接求出其他点的函数值是非常困难的,在有些情况下,虽然可以写出f(x)的解析表达式,但由于结构十分复杂,使用起来很不方便。面对这些情况,构造函数P(x)作为f(x)的近似,插值法是解决此类问题比较古老却目前常用的方法,不仅直接广泛地应用与生产实际和科学研究中,而且是进一步学习数值计算方法的基础。 设函数y=f(x)在区间[a,b]上连续,且在n+1个不同的点a≤x0,x1……,xn≤b上分别取值y0,y1……,yn. 插值的目的就是要在一个性质优良、便于计算的函数φ中,求一简单函数P(x),使P(xi)=yi(i=0,1…,n)而在其他点x≠xi上,作为f(x)的近似。 通常,称区间[a,b]为插值区间,称点x0,x1,…,xn为插值节点,上式为插值条件,称函数类φ为插值函数类,称P(x)为函数f(x)在节点x0,x1,…,xn处的插值函数,求插值函数P(x)的方法称为插值法。 2实验目的和要求 用matlab定义分段线性插值函数、分段二次插值函数、拉格朗日插值函数,输入所给函 数表,并利用计算机选择在插值计算中所需的节点,计算f(0.15),f(0.31),f(0.47)的近似值。

3算法描述 1.分段线性插值流程图

2.分段二次插值流程图

3.拉格朗日插值流程图

4程序代码及注释 1.分段线性插值

数值分析常用的插值方法

数值分析报告 班级: 专业: 流水号: 学号: 姓名:

常用的插值方法 序言 在离散数据的基础上补插连续函数,使得这条连续曲线通过全部给定的离散数据点。插值是离散函数逼近的重要方法,利用它可通过函数在有限个点处的取值状况,估算出函数在其他点处的近似值。 早在6世纪,中国的刘焯已将等距二次插值用于天文计算。17世纪之后,牛顿、拉格朗日分别讨论了等距和非等距的一般插值公式。在近代,插值法仍然是数据处理和编制函数表的常用工具,又是数值积分、数值微分、非线性方程求根和微分方程数值解法的重要基础,许多求解计算公式都是以插值为基础导出的。 插值问题的提法是:假定区间[a,b〕上的实值函数f(x)在该区间上n+1个互不相同点x0,x1……x n处的值是f(x0),……f(x n),要求估算f(x)在[a,b〕中某点的值。其做法是:在事先选定的一个由简单函数构成的有n+1个参数C0, C1,……C n的函数类Φ(C0,C1,……C n)中求出满足条件P(x i)=f(x i)(i=0,1,……n)的函数P(x),并以P(x)作为f(x)的估值。此处f(x)称为被插值函数,x0,x1,……xn 称为插值结(节)点,Φ(C0,C1,……C n)称为插值函数类,上面等式称为插值条件,Φ(C0,……C n)中满足上式的函数称为插值函数,R(x)=f(x)-P(x)称为插值余项。

求解这类问题,它有很多种插值法,其中以拉格朗日(Lagrange)插值和牛顿(Newton)插值为代表的多项式插值最有特点,常用的插值还有Hermit 插值,分段插值和样条插值。 一.拉格朗日插值 1.问题提出: 已知函数()y f x =在n+1个点01,,,n x x x L 上的函数值01,,,n y y y L ,求任意一点 x '的函数值()f x '。 说明:函数()y f x =可能是未知的;也可能是已知的,但它比较复杂,很难计算其函数值()f x '。 2.解决方法: 构造一个n 次代数多项式函数()n P x 来替代未知(或复杂)函数()y f x =,则 用()n P x '作为函数值()f x '的近似值。 设()2012n n n P x a a x a x a x =++++L ,构造()n P x 即是确定n+1个多项式的系数 012,,,,n a a a a L 。 3.构造()n P x 的依据: 当多项式函数()n P x 也同时过已知的n+1个点时,我们可以认为多项式函数 ()n P x 逼近于原来的函数()f x 。根据这个条件,可以写出非齐次线性方程组: 20102000 20112111 2012n n n n n n n n n n a a x a x a x y a a x a x a x y a a x a x a x y ?++++=?++++=?? ? ?++++=?L L L L L 其系数矩阵的行列式D 为范德萌行列式: ()20 0021110 2111n n i j n i j n n n n x x x x x x D x x x x x ≥>≥= = -∏L L M M M M L

数值计算方法复习题2

习题二 1. 已知 ,求的二次值多项式。 2. 令 解:; ,介于x和0,1决定的区 间内;,当时。 的数表,分别用线性插值与二次插值求 3. 给出函数 ,试利用拉格朗日余项定理写出以为节点的三次 4. 设 插值多项式。 ,求及的值。1,0 5. 已知 6. 根据如下函数值表求四次牛顿插值多项式,并用其计算 , 的如下函数值表,解答下列问题(1)试列出相应 7. 已知函数 的差分表;(2)分别写出牛顿向前插值公式和牛顿向后插值公式。 解:向前插值公式

向后插值公式 8. 下表为概率积分 的数据表,试问:1)时, 积分 在各点的数据(取五位有效数 9. 利用 字),求方程 在0.3和0.4之间的根的近似值。0.3376489 10. 依据表10中数据,求三次埃尔米特插值多项式。 11. 依据数表11 项式。 上给出的等距节点函数表,用分段线性插值求 12. 在 的近似值,要使截断误差不超过 取? 13. 将区间 分成n等分,求在上的分段三次埃尔米 特插值多项式,并估计截断误差。 14、给定的数值表

用线性插值与二次插值计算ln0.54的近似值并估计误差限 解:仍可使用n=1及n=2的Lagrange插值或Newton插值,并应用误差估计。线性插值时,用0.5及0.6两点,用Newton插值 误差限 ,因,故 二次插值时,用0.5,0.6,0.7三点,作二次Newton插值 误差限, 故 15、在-4≤x≤4上给出的等距节点函数表,若用二次插值法 求的近似值,要使误差不超过,函数表的步长h应取多少? 解:用误差估计式, 令因 得

16、若,求和 解:由均差与导数关系 于是 17、若互异,求 的值,这里p≤n+1. 解:,由均差对称性 可知当有 而当P=n+1时 于是得 18、求证 解:只要按差分定义直接展开得 19、已知的函数表

数值分析拉格朗日插值法.doc

``````````````````````````````````````````` 数值分析拉格朗日插值法 拉格朗日插值的算法设计及应用 【摘要】 本文简介拉格朗日插值,它的算法及程序和拉格朗日在实际生活中的运用。运用了拉格朗日插值的公式,以及它在MATLAB 中的算法程序,并用具体例子说明。拉格朗日插值在很多方面都可以运用,具有很高的应用价值。 【关键词】 拉格朗日;插值;公式;算法程序;应用;科学。 一、绪论 约瑟夫·拉格朗日(Joseph Louis Lagrange),法国数学家、物理学家。他在数学、力学和天文学三个学科领域中都有历史性的贡献,其中尤以数学方面的成就最为突出。拉格朗日对流体运动的理论也有重要贡献,提出了描述流体运动的拉格朗日方法。数据建模有两大方法:一类是插值方法,另一类是拟合函数一般的说,插值法比较适合数据准确或数据量小的情形。然而Lagrange 插值有很多种,1阶,2阶,…n 阶。我们可以利用拉格朗日插值求方程,根据它的程序求原方程的图像。下面我具体介绍分析一下拉格朗日插值的算法设计及应用。 二、正文 1、基本概念 已知函数y=f(x)在若干点i x 的函数值i y =()i x f (i=0,1,???,n )一个差值问题就是求一“简单”的函数p(x):p(i x )=i y ,i=0,1,???,n, (1) 则p(x)为f(x)的插值函数,而f(x)为被插值函数会插值原函数,0x ,1x ,2x ,...,n x 为插值节点,式(1)为插值条件,如果对固定点-x 求f(-x )数值解,我们称- x 为一个插值节点,f(-x )≈p(-x )称为-x 点的插值,当-x ∈[min(0x ,1x ,2x ,...,n x ),max(0x ,1x ,2x ,...,n x )]

数值计算方法教案_插值方法

复习: 1.数值计算方法的含义 2.误差及误差限 3.误差与有效数字 4.数值计算中应注意的问题 第二章 插值方法 一.插值的含义 问题提出: 已知函数()y f x =在n+1个点01,,,n x x x 上的函数值01,,,n y y y ,求任意一点x '的函数值()f x '。 说明:函数()y f x =可能是未知的;也可能是已知的,但它比较复杂,很难计算其函数值()f x '。 解决方法: 构造一个简单函数()P x 来替代未知(或复杂)函数()y f x =,则用()P x '作为函数值 ()f x '的近似值。 二、泰勒(Taylor )插值 1.问题提出: 已知复杂函数()y f x =在0x 点的函数值()0f x ,求0x 附近另一点0x h +的函数值 ()0f x h +。 2.解决方法: 构造一个代数多项式函数()n P x ,使得()n P x 与()f x 在0x x =点充分逼近。 泰勒多项式为: ()()()()()()()()()200000002!! n n n f x f x P x f x f x x x x x x x n '''=+-+-++- 显然,()n P x 与()f x 在0x x =点,具有相同的i 阶导数值(i=0,1,…,n )。 3.几何意义为:

()n P x 与()f x 都过点()()00,x f x ; ()n P x 与()f x 在点()()00,x f x 处的切线重合; ()n P x 与()f x 在点()()00,x f x 处具有相同的凹凸性; 其几何意义可以由下图描述,显然函数()3f x 能相对较好地在0x 点逼近()f x 。 4.误差分析(泰勒余项定理): ()()()()()()1 101! n n n f P x f x x x n ξ++-=-+,其中ξ在0x 与x 之间。 5.举例: 已知函数()f x =() 115f 。 分析:本题理解为,已知“复杂”函数()f x =0x =100点的函数值为()010f x =,求0x 的附近一点0x +15的函数值()015f x +。 解: (1)构造1次泰勒多项式函数()1P x :()()()()1000P x f x f x x x '=+-。 其中()()010010f x f ==,()1 212 f x x -'=,()()0110020f x f ''==,则有: ()150.05P x x =+ 故有()()111511510.75f P ≈= 误差分析: ()()()()2 1 1151151151002! f P f ξ''-=-

计算方法——插值法综述

计算方法——插值法 11223510 李晓东 在许多实际问题及科学研究中,因素之间往往存在着函数关系,然而,这种关系经常很难有明显的解析表达,通常只是一些离散数值。有时即使给出了解析表达式,却由于表达式过于复杂,使用不便,且不易于计算与分析。解决这类问题我们往往使用插值法:用一个“简单函数”)(x ?逼近被计算函数)(x f ,然后用)(x ?的函数值近似替代)(x f 的函数值。插值法要求给出)(x f 的一个函数表,然后选定一种简单的函数形式,比如多项式、分段线性函数及三角多项式等,通过已知的函数表来确定)(x ?作为)(x f 的近似,概括地说,就是用简单函数为离散数组建立连续模型。 一、 理论与算法 (一)拉格朗日插值法 在求满足插值条件n 次插值多项式)(x P n 之前,先考虑一个简单的插值问题:对节点),,1,0(n i x i =中任一点)0(n k x k ≤≤,作一n 次多项式)(x l k ,使它在该点上取值为1,而在其余点),,1,1,1,0(n k k i x i +-=上取值为零,即 ? ? ?≠==k i k i x l i k 01)( (1.1) 上式表明n 个点n k k x x x x x ,,,,,,1110 +-都是n 次多项式)(x l k 的零点,故可设 )())(())(()(1110n k k k k x x x x x x x x x x A x l -----=+- 其中,k A 为待定系数。由条件1)(=k k x l 立即可得 )())(()(1 110n k k k k k k k x x x x x x x x A ----= +- (1.2) 故 ) ())(()() ())(()()(110110n k k k k k k n k k k x x x x x x x x x x x x x x x x x l --------= +-+- (1.3) 由上式可以写出1+n 个n 次插值多项式)(,),(),(10x l x l x l n 。我们称它们为在1+n 个节点n x x x ,,,10 上的n 次基本插值多项式或n 次插值基函数。 利用插值基函数立即可以写出满足插值条件的n 次插值多项式 )()()(1100x l y x l y x l y n n +++ (1.4)

计算方法简明教程插值法习题解析

第二章 插值法 1.当1,1,2x =-时,()0,3,4f x =-,求()f x 的二次插值多项式。 解: 0120121200102021101201220211,1,2, ()0,()3,()4;()()1 ()(1)(2)()()2()()1 ()(1)(2) ()()6 ()()1 ()(1)(1) ()()3 x x x f x f x f x x x x x l x x x x x x x x x x x l x x x x x x x x x x x l x x x x x x x ==-===-=--==-+-----==------= =-+-- 则二次拉格朗日插值多项式为 2 20 ()()k k k L x y l x ==∑ 0223()4() 14 (1)(2)(1)(1)23 537623 l x l x x x x x x x =-+=---+ -+= +- 2.给出()ln f x x =的数值表 用线性插值及二次插值计算的近似值。 解:由表格知, 01234012340.4,0.5,0.6,0.7,0.8;()0.916291,()0.693147()0.510826,()0.356675()0.223144 x x x x x f x f x f x f x f x ======-=-=-=-=- 若采用线性插值法计算ln 0.54即(0.54)f , 则0.50.540.6<<

2 112 1 221 11122()10(0.6)()10(0.5)()()()()() x x l x x x x x x l x x x x L x f x l x f x l x -==----= =---=+ 6.9314 7(0.6) 5.10826( x x =--- 1(0.54)0.62021860.620219L ∴=-≈- 若采用二次插值法计算ln 0.54时, 1200102021101201220212001122()() ()50(0.5)(0.6) ()() ()() ()100(0.4)(0.6) ()()()() ()50(0.4)(0.5) ()() ()()()()()()() x x x x l x x x x x x x x x x x l x x x x x x x x x x x l x x x x x x x L x f x l x f x l x f x l x --==------==-------= =----=++ 500.916291(0.5)(0.6)69.3147(0.4)(0.6)0.51082650(0.4)(0.5 x x x x x x =-?--+---?--2(0.54)0.61531984 0. 615320L ∴=-≈- 3.给全cos ,090x x ≤≤ 的函数表,步长1(1/60),h '== 若函数表具有5位有效数字,研究用线性插值求cos x 近似值时的总误差界。 解:求解cos x 近似值时,误差可以分为两个部分,一方面,x 是近似值,具有5位有效数字,在此后的计算过程中产生一定的误差传播;另一方面,利用插值法求函数cos x 的近似值时,采用的线性插值法插值余项不为0,也会有一定的误差。因此,总误差界的计算应综合以上两方面的因素。 当090x ≤≤ 时, 令()cos f x x = 取0110,( )606018010800 x h ππ===?= 令0,0,1,...,5400i x x ih i =+= 则5400902 x π = = 当[]1,k k x x x -∈时,线性插值多项式为

(完整版)数值分析插值法

第二章插值法 2.在区间[-1,1]上分别取n=10,20用两组等距节点对龙哥函数f(x)=1/(1+25*x^2)做多项式插值及三次样条插值,对每个n值,分别画出插值函数及f(x)的图形。 (1)多项式插值 ①先建立一个多项式插值的M-file; 输入如下的命令(如牛顿插值公式): function [C,D]=newpoly(X,Y) n=length(X); D=zeros(n,n) D(:,1)=Y' for j=2:n for k=j:n D(k,j)=(D(k,j-1)- D(k-1,j-1))/(X(k)-X(k-j+1)); end end C=D(n,n); for k=(n-1):-1:1 C=conv(C,poly(X(k))) m=length(C); C(m)= C(m)+D(k,k); end ②当n=10时,我们在命令窗口中输入以下的命令: clear,clf,hold on; X=-1:0.2:1; Y=1./(1+25*X.^2); [C,D]=newpoly(X,Y); x=-1:0.01:1; y=polyval(C,x); plot(x,y,X,Y,'.'); grid on; xp=-1:0.2:1; z=1./(1+25*xp.^2); plot(xp,z,'r') 得到插值函数和f(x)图形:

③当n=20时,我们在命令窗口中输入以下的命令:clear,clf,hold on; X=-1:0.1:1; Y=1./(1+25*X.^2); [C,D]=newpoly(X,Y); x=-1:0.01:1; y=polyval(C,x); plot(x,y,X,Y,'.'); grid on; xp=-1:0.1:1; z=1./(1+25*xp.^2); plot(xp,z,'r') 得到插值函数和f(x)图形:

相关主题
文本预览
相关文档 最新文档