插值法的推导过程

插值法的推导过程
插值法的推导过程

插值法

生产实践中常常出现这样的问题:给出一批离散样点,要求作出一条通过这些点的光滑曲线,以便满足设计要求或进行加工。反映在数学上,即已知函数在一些点上的值,寻求它的分析表达式。因为由函数的表格形式不能直接得出表中未列点处的函数值,也不便于研究函数的性质。此外,有些函数虽有表达式,但因式子复杂,不容易算其值和进行理论分析,也需要构造一个简单函数来近似它。

解决这种问题的方法有两类:一类是给出函数()x f 的一些样点值,选定一个便于计算的函数形式,如多项式、分式线性函数及三角多项式等,要求它通过已知样点,由此确定函数()x ?作为()x f 的近似。这就是插值法。另一类方法在选定近似函数的形式后,不要求近似函数过已知样点,只要求在某种意义下他在这些点上的总偏差最小。这类方法称为曲线(数据)拟合法。

1、 拉格朗日(Lagrange )插值

1. Lagrange 插值多项式

先讨论只有两个节点0x ,()11=n x 的插值多项式。由前所述,插值多项式应设为()x a a x 101+=?,且满足插值条件

()()0001001x f y x a a x ==+=? ()()1111011x f y x a a x ==+=?

解此方程组得

1010010x x x y x y a --=

,1

01

01x x y y a --=0

所以,两个节点的一次插值多项式为

()x x x y y x x x y x y x 1

01

01010011--+--=

? (5-6)

这是用过两点()00,y x ,()11,y x 的直线()x y 1?=近似曲线()x f y =,故这种插值又称为线性插值。

如果将式(5-6)改写成以下形式

()0

101101

1x x x x y x x x x y x --+--=? (5-7) 式(5-7)中,()x 1?被表成两个线性函数的线性组合。记

()101

0x x x x x l --=

,()0

101x x x x x l --= 显然,它们满足

()100=x l ,()010=x l ()001=x l ,()111=x l

即()()10,

=i x l i 在对应的插值点i x 处的取值为1,在其他点处取值为0,不难想象,以对应点处的函数值为系数对它们作线性组合所得的函数,不仅仍是线性

的,且必定满足插值条件。由此得到启发,当节点增多到1+n 个时,可以先构造n 次多项式()()n i x l i ,,1,0 =,它们满足

()?

??=≠=i j i

j x l j i ,1,0 (5-8)

然后以对应点处的函数值为系数作线性组合,即得所要求的插值多项式。下面

推导()()n i x l i ,,1,0 =的表达式。

由式(5-8),多项式()x l i 有n 个根()i j n j x j ≠=,,,1,0 ,且()1=i i x l ,故它必定是以下形式

()()()()()

()()()()()∏

≠=+-+-=--=--------=n i

j j j

i j n i i i i i i n i i i n i x x x x x x x x x x x x x x x x x x x x x l 0110110,,1,0 (5-9) 这些函数称为Lagrange 插值基函数。利用它们立即得出插值问题的解

()()???

?

? ??

--==∏

∑∑≠===n i

j j j

i j

n i i n

i i i n x x x x y x l y x 000? (5-10a ) 事实上,因为每个插值基函数()()n i x l i ,,1,0 =都是n 次多项式,故()x n ?是至多n 次多项式。由式(5-8)又得

()()()n k y x l y x k n

i k i i k n ,,1,00

===∑=?

即()x n ?满足插值条件式(5-2)。

式(5-10a )称为n 次Lagrange 插值多项式。为了以后便于区别,常用()x L n 代替()x n ?,以突出表示这是由Lagrange 插值所得到的插值多项式,即

()()∑==n

i i i n x l y x L 0 (5-10b )

由前面讨论的结果,1+n 个节点的n 次Lagrange 插值多项式存在唯一,式(5-5)为插值余项。式(5-10b )形式对称,容易编制程序。

2、牛顿(Newton )插值

如果将直线用点斜式方程表示,即把线性插值公式改写成以下形式

)()(00

10

101x x x x y y y x ---+

=? (5-13) 由此导出插值多项式的又一种表示形式——牛顿插值公式。 2.1 差商

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

()(j i x x x f x f j

i j i ≠--为)(x f 关于点j i x x ,的一阶差商(也称均差),记为

],[j i x x f ,即

j

i j i j i x x x f x f x x f --=

)()(],[

类似于高阶导数的定义,称一阶差商的差商

k

i k j j i x x x x f x x f --]

,[],[

为)(x f 关于点k j i x x x ,,的二阶差商,记为],,[k j i x x x f 。一般地,称

k

k k x x x x x f x x x f ---021110]

,,,[],,,[

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

k

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

-02111010]

,,,[],,,[],,,[ (5-14)

2.2 Newton 插值公式

按定义5.1线性插值公式(5-13)可表示成

],[)()()(10001x x f x x x f x -+=? (5-17)

式(5-17)称为一次Newton 插值多项式。一般地,由各阶差商的定义,依次可得

],[)()()(000x x f x x x f x f -+= ],,[)(],[],[101100x x x f x x x x f x x f -+=

],,,[)(],,[],,[210221010x x x x f x x x x x f x x x f -+=

],,,[)(],,,[],,,[01010n n n n x x x f x x x x x f x x x f -+=-

将以上各式分别乘以1,)(0x x -,))((10x x x x --, ,)())((110----n x x x x x x ,然后相加并消去两边相等的部分,即得

]

,,,[)())((],,,[)())((],,[))((],[)()()(101010110210101000n n n n x x x x f x x x x x x 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 f

---+---++--+-+=- (5-18) 记

]

,,,[)())((],,[))((],[)()()(10110210101000n 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 ----++--+-+= (5-19)

],,,,[)(],,,,[)())(()(1011010n n n n n x x x x f x x x x x f x x x x x x x R +=---=ω (5-20) 则

)()()(x R x N x f n n += 显然,)(x N n 是至多n 次的多项式。而由

()n i x x x x f x x R n i i n i n ,,1,00],,,,[)()(101 ===+ω

得),,1,0)(()(n i x N x f i n i ==。这表明)(x N n 满足插值条件式(5-2),因而它是)(x f 的n 次插值多项式。这种形式的插值多项式称为Newton 插值多项式。

3、 埃尔米特(Hermite )插值

如果对差值函数,不仅要求它在节点处与函数同值,而且要求它与函数有相同的一阶、二阶甚至更高阶的导数值,这就是Hermite 插值问题。 3.1 Hermite

设已知函数)(x f y =在1+n 个互异节点n x x x ,,,10 上的函数值

),,1,0)((n i x f y i i ==和导数值),,1,0)((n i x f y i i ='=',要求一个至多12+n 次的多项式)(x H ,使得

),,1,0()(,)(n i y x H y x H i i i i ='='= (3-1) 满足条件(3-1)的多项式)(x H 称为Hermite 插值多项式。

我们仍采用构造插值基函数的方法来求Hermite 插值多项式。可以设想,如果有两组函数),,1,0)((),(n i x H x h i i =,它们满足:

(1)),,1,0)((),(n i x H x h i i =都是至多12+n 次多项式;

(2)()n j x h i j i

j x h j i j i ,,1,00)(,,1,0)( =='??

?=≠= (3-2) ()n j i

j i

j x H x H j

i j i ,,1,0,1,0)(,0)( =???=≠='= 则多项式

[]∑='+=n

i i i i i x H y x h y x H 0)()()(

必定满足插值条件式(3-1),且次数不超过12+n 。按条件式(3-2),)(x h i 在)(i j x j ≠处函数值与导数值均为0,故它们应含因子)()(2i j x x j ≠-,因此可以设为

)()]([)(2

x l x x b a x h i i i -+= (3-3)

其中)()()()(11i n

i n i x x x x x l ++'-=ωω为Lagrange 插值基函数。由条件式(3-2),)(x h i 还应满足

,1)(=i i x h 0)(='i i x h 代入式(3-3),得

1)()(2

===a x al x h i i i i

)(2)

()()]([2)()(2='+='-++='i i i i i i i i i i i i x l a b x l x l x x b a x bl x h

其解为)(2i i x l a b '-=。所以

[])

()()(21)(x l x l x x x h i i i i i ''--=),,1,0(n i = (3-4)

同理,由于)(x H i 在)(i j x j ≠处的函数值与导数值均为0,而0)(=i i x H ,故可设

)()()(x l x x c x H i i i '-= 代入条件式(3-2)得

1)()(2

=='i i i i x cl x H

于是1=c ,因此

)()()(2

x l x x x H i i i -= ),,1,0(n i = (3-5) 所以Hermite 插值多项式为

[]

[]{}

∑∑==''-+'--='+=n

i i i i i i i i i n

i i i i i y x l x x y x l x l x x x H y x h y x H 0

2

20

)()()()()(21)()()( (3-6)

特别地,当1=n 时,有

2

10

10100

21)(????

??--???? ?

?--+=x x x x x x x x x h

2

010

101121)(???

? ??--???? ??--+=x x x x x x x x x h ()2

10

100)(????

??---=x x x x x x x H

()2

010

11)(???

? ??---=x

x x x x x x H 所以,两个节点的三次Hermite 插值多项式为

12

10

102

101012

10

10102

101010

)()(2121)(y x x x x x x y x x x x x x y x x x x x x x x y x x x x x x x x x H '???

?

??---+'???? ??---+???

? ??--???? ??--++???? ??--???? ?

?--+= (3-7)

4、 样条插值

许多工程技术中提出的计算问题对插值函数的光滑性有较高要求,如飞机

的机翼外形,内燃机的进、排气门的凸轮曲线,都要求曲线具有较高的光滑程度,不仅要连续,而且要有连续的曲率 ,即二阶导数连续。这就导致了样条插值的产生。 4.1 三次样条插值

利用样条函数进行插值,即取插值函数为样条函数,称为样条插值。例如,分段线性插值是一次样条插值。下面只介绍三次样条插值,即已知函数)(x f y =在区间],[b a 上的1+n 个节点

b x x x a n =<<<= 10 上的值),,1,0)((n i x f y i i ==,求插值函数)(x S ,使得 (1)).,1,0()(n i y x S i i ==;

(2)在每个小区间)1,,1,0](,[1-=+n j x x j j 上)(x S 是三次多项式,记为

)(x S j ;

(3))(x S 在],[b a 上二阶连续可微, 则函数)(x S 称为)(x f 的三次样条插值函数。

可以证明,在一定的边条件下,三次样条插值问题的解是存在唯一的。下面讨论三次样条插值函数的求法。

由于)(x S 在每个小区间上都是三次多项式,故共有n 4个参数。为简化计算,取节点上的导数值或二阶导数值为参数,来导出三次样条插值函数的表达式。 4.2

以节点处的二阶导数值为参数的三次样条插值函数

设),,1,0()(n i M x S i i ==''。因为在小区间],[1+j j x x 上)()(x S x S j =是三次多项式,故)(x S j ''为线性函数,由Lagrange 插值公式得 j

j j

j

j j j h x x M h x x M x S 1

1

)(++---='' (4-1)

其中j j j x x h -=+1。将上式积分两次,并代入插值条件

11)(,)(++==j j j i j j y x S y x S ,得

)1,,1,0(666)(6)()(1

2

2

113

13

1

-=-???

? ??---???

? ??-+---=+++++n j h x x h M y h x x h M y h x x M h x x M x S j j j j i j j

j j j j

j j

j

j j j (4-2)

求导得

)

1,,1,0()(6

)(2)(26161)(2)(2)(112

1212

2

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

?

??--???

? ??-+

---='++++++++n j M M h h y y x x h M x x h M h M y h h M y h x x h M x x h M x S j j j

j i j j j j j j j j j i j j j j j

j j j

j j j j

(4-3) 因为)(x S 在节点处一阶导数连续,故应有

)0()0()0()0(1-'=-'=+'=+'-j j j j j j x S x S x S x S )1,,2,1(-=n j 即 ()()111

1

1

1

16

2

6

2-----++--

-+

=---+

-

j j

j j j j j j j

j j j

j

j j j M M

h h y y M h

M M

h h y y M h

化简得

()1,,163

61

111111-=--

-=+-+

--++---n j h y y h y y M h M h h M h j j j j i j j i

j i

j j j (4-4) 令

j

j j j h h h +=

--11α

j

j j j j h h h +=

-=-11αβ

)/(61111j j j j i j i j j h h h y y h y y c +???

?

??---=---+ (4-5) 则式(4-4)改写成

)1,,2,1(211-==+++-n j c M M M j j j j j j βα (4-6)

式(4-6)给出了含1+n 个参数n o M M M ,,,1 的1-n 个方程,称为三次样条的M 关系式,或按其力学意义,称为三弯矩方程。为完全确定这些参数,需

要根据问题的具体情况,在区间的两个端点处给出条件,称为边界条件。常用的边界条件有以下三种:

(1)

给定两端点处的导数值n y b S y a S '=''=')(,)(0

。特别地,当00

='='n y y 时,样条曲线在端点处呈水平状态。 (2)

给定两端点处的二阶导数值n y b S y a S ''=''''='')(,)(0。特别地,当00

=''=''n y y 时,称为自然边界条件。 (3)

如果)(x f 是以a b -为周期的周期函数,则)(x S 也应是具有同样周期的周期函数,在端点处需满足

)0()0(),0()0(-''=+''-'=+'b S a S b S a S

将这三种边界条件中的任意一种与三弯矩方程(4-6)联立,即可求出参数),,1,0(n i M i =。

如果问题要求)(x S 满足边界条件(1),由式(4-6)得

()010

00100062)(M M h h y y M h y a S ---+-='=' ()11

1116

2)(-------

-+-='='n n n n n n n n n

M M h h y y M h y b S 化简的

???

? ??'--=

+00010

106

2y h y y h M M

???

? ??--'=+----111162n n n n n n n h y y y h M M (4-7) 式(4-7)和式(4-6)联立,即得关于参数),,1,0(n i M i =的1+n 阶线性方程组,其矩阵形式为

???

?

?????

?

??????????=???????????????????????????????????

????

?----n n n n n

n n c c c c c M M M M M 1210121011

2

2

1

10

22

222

αβαβαβα

β

其中???

? ??

--'=???? ??'--=

==---11100010

006,6,11n n n n n n n h y y y h c y h y y h c αβ,。这是三对角方程组,可用追赶法求解。

如果问题要求)(x S 满足边界条件(2),即

n y M y M ''=''=00

0, 此时方程组(4-6)中实际只有1-n 个未知数,其矩阵形式的

???????

?????????''-''-=???????????????????????????????

?--------n n n n n n n n n y c c c y c M M M M 112

20

1112211

12

2

21

22

2

2

βααβαβαβ

(4-8)

这仍是三对角方程组。

如果问题要求)(x S 满足周期边界条件(3),将边界条件

n n M M x S x S =-'=+'00),0()0(与方程组(4-6)联立,得到n 阶方程组

?????

??

?

????????=????????

????????????????????

????----n n n n n

n

n n c c c c M M M M 12112111

1

2

11

22

22

αββαβααβ (4-9) 其中???

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

------11001101001016

,,n n n n n n n n n n h y y h y y h h c h h h h h h βα。其求解过程类似于求解三对角方程组的追赶法。

容易验证,这三种情形所得到的方程组的系数矩阵均为严格对角占优阵,

因此方程组有唯一解。将解代入式(4-2),即得三次样条插值函数。

数值计算方法比较

有限差分方法(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法形式,从而将不规则网格差分法推广为广义差分法.其基本思路是,将计算区域划分为一系列不重复的控制体积,并使每个网格点周围有

插值法数值上机实验报告

插值法数值上机实验报告 实验题目: 利用下列条件做插值逼近,并与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插值图像对原函数图像的逼近情形。见下图:

牛顿插值法原理及应用

牛顿插值法 插值法是利用函数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

数值分析插值算法源程序

#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);

线性插值法计算公式解析

线性插值法计算公式解析 2011年招标师考试实务真题第16题:某机电产品国际招标项目采用综合评价法评标。评标办法规定,产能指标评标总分值为10分,产能在100吨/日以上的为10分,80吨/日的为5分,60吨/日以下的为0分,中间产能按插值法计算分值。某投标人产能为95吨/日,应得()分。A.8.65 B.8.75 C.8.85 D.8.95 分析:该题的考点属线性插值法又称为直线内插法,是评标办法的一种,很多学员无法理解公式含义,只能靠死记硬背,造成的结果是很快会遗忘,无法应对考试和工作中遇到的问题,对此本人从理论上进行推导,希望对学员有所帮助。 一、线性插值法两种图形及适用情形 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%,问工作效率指标得多少分? 分析:此题属于图二的适用情形,套用公式 F=3+(92%-85%)*(8-3)/(95%-85%)=3+7/2=6.5 (此文档部分内容来源于网络,如有侵权请告知删除,文档可自行编辑修改内容, 供参考,感谢您的配合和支持)

数值分析实验报告记录

数值分析实验报告记录

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

数值分析实验报告 (第二章) 实验题目: 分别用二分法、牛顿迭代法、割线法、史蒂芬森迭代法求方程 的根,观察不同初始值下的收敛性,并给出结论。 问题分析: 题目有以下几点要求: 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

牛顿插值法试验报告

. 牛顿插值法一、实验目的:学会牛顿插值法,并应用算法于实际问题。 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) 回车得到:

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

实验报告:牛顿差值多项式&三次样条 问题:在区间[-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)。

计算方法实验报告 插值

实验名称:插值计算 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

内插法计算公式

内插法计算公式 内插法计算公式 1、X1、Y1为《建设工程监理与相关服务收费标准》附表二中计费额的区段值;Y1、Y2为对应于X1、X2的收费基价;X为某区段间的插入值道;Y为对应于X由插入法计算而得的收费基价。 2、计费额小于500万元的,以计费额乘以3.3%的收费专率计算收费基价; 3、计费额大于1,000,000万元的,以计费额乘以1.039%的收费率计算收费基价。 【例】若计算得计费额为600万元,计算其收费基价属。 根据《建设工程监理与相关服务收费标准》附表二:施工监理服务收费基价表,计费额处于区段值500万元(收费基价为16.5万元)与1000万元(收费基价为30.1万元)之间,则对应于600万元计费额的收费基价: 内插法(Interpolation Method) 什么是内插法 在通过找到满足租赁交易各个期间所支付的最低租金支付额及租赁期满时租赁资产估计残值的折现值等于租赁资产的公平价值的

折现率,即租赁利率的方法中,内插法是在逐步法的基础上,找到两个接近准确答案的利率值,利用函数的连续性原理,通过假设关于租赁利率的租赁交易各个期间所支付的最低租金支付额及租赁期满时租赁资产估计残值的折现值与租赁资产的公平价值之差的函数为线性函数,求得在函数值为零时的折现率,就是租赁利率。 内插法原理 数学内插法即“直线插入法”。其原理是,若A(i1,b1),B(i2,b2)为两点,则点P(i,b)在上述两点确定的直线上。而工程上常用的为i在i1,i2之间,从而P在点A、B之间,故称“直线内插法”。 数学内插法说明点P反映的变量遵循直线AB反映的线性关系。 上述公式易得。A、B、P三点共线,则 (b-b1)/(i-i1)=(b2-b1)/(i2-i1)=直线斜率,变换即得所求。 内插法的具体方法 求得满足以下函数的两个点,假设函数为线性函数,通过简单的比例式求出租赁利率。 以每期租金先付为例,函数如下: A表示租赁开始日租赁资产的公平价值; R表示每期租金数额; S表示租赁资产估计残值; n表示租期; r表示折现率。 通过简单的试错,找出二个满足上函数的点(a1,b1)(a2,b2),

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 >>。。。 以下是程序运行截图:

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

摘要在时间价值及内部报酬率计算时常用到插入法,但初学者对该方法并 不是很容易理解和掌握。本文根据不同情况分门别类。利用相似三角形原理推 导出插入法计算用公式。并将其归纳为两类:加法公式和减法公式,简单易懂、理解准确、便于记忆、推导快捷。 关键词插入法;近似直边三角形;相似三角形 时间价值原理正确地揭示了不同时点上资金之间的换算。是财务决策的基 本依据。为此,财务人员必须了解时间价值的概念和计算方法。但在教学过程中。笔者发现大多数教材插值法(也叫插入法)是用下述方法来进行的。如高等 教育出版社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。

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

《数值分析》课程实验报告 用拉格朗日和牛顿插值法求解函数值 算法名称用拉格朗日和牛顿插值法求函数值 学科专业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。

数值计算方法复习题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、已知的函数表

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

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

目录 计算方法实验 (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主要模块 程序一共分成三层,最底层是数据结构部分,负责存储数据,第二层是交互部分,即多项式方程部分,负责输入输出获得数据,最上层是核心的算法部分,负责处理已获得的数据。具体功能如下: ●数据结构部分 数据结构部分是整个程序的最底层,负责存储部分。因方程系数作为数据元素插入和删除操作较少,而顺序表空间利用率大且查看方便,故此程序选用顺序表保存系数。数据结构文件中写的是有关顺序表的所有基本操作以供其他文件调用。本次实验使用列主元高斯消元法作为求解方程组的方法,所以也用了二维顺序表存储数组。综上,数据结构部分文件是前两个试验的文件内容和,稍作修改。 ●常系数微分方程部分 多项式方程部分是程序的第二层,内容主要是常系数微分方程导数的计算和显示菜单部分。 ●算法部分 算法部分分为两个文件,一个是插值部分,一个是拟合部分。 插值部分文件负责有关插值的核心算法,处于整个程序最上层部分,负责拉格朗日插值法和牛顿插值法的具体实现过程。调用方程文件的函数,将获得的数据进行处理运算,将结果返回给方程主函数和输出的第二层。每种方法有两个函数,一个为仅仅实现一次插值的算法,另一个是和方程部分联系的

计算方法(李桂成著) 实验报告 插值问题

实验报告(作业) 课程名称计算方法 班级与班级代码 专业数学与应用数学 指导教师 学号 姓名 提交日期 2012年6月1日 广东商学院教务处制

目录 一、实验目的 (1) 二、实验方法 (1) (1)拉格朗日插值 (1) (2)牛顿插值 (1) 三、实验内容 (2) 四、实验程序 (2) (1)拉格朗日插值 (2) (2)牛顿插值 (3) 五、实验结果 (4) (1) 拉格朗日插值 (4) (2)牛顿插值 (4) 六、结果分析 (4)

实验四 插值问题 一、 实验目的 用拉格朗日插值和牛顿插值的方法,在已知函数在点n x x x ,,,10 的函数值n y y y ,,,10 的情况下,求插值节点x 的函数值y ,即求)(x f 。并比较结果,说明为什么相等。 二、 实验方法 (1) 拉格朗日插值 根据n x x x ,,,10 ;n y y y ,,,10 构造插值多项式 ()k n k n k j j j k i n y x x x x x p ????? ? ??--=∑∏ =≠=00 将插值点x 代入上式,就可得到函数)(x f 在点x 处的函数值的近似值。 (2) 牛顿插值 根据n x x x ,,,10 ;n y y y ,,,10 构造插值多项式 ()()()()()()()() 110100100,,,,----++-+=n n n x x x x x x x x x f x x x x f x f x N 牛顿插值公式中各项的系数就是函数)(x f 的各阶均差(差商) ()()n x x x f x x f x f ,,,,,,),(10100 ,因此,在构造牛顿插值公式时,常 常先把均值差列成一个表,此表称为均差表。

matlab计算方法实验报告3(插值问题)

计算方法实验报告(3) 学生姓名杨贤邦学号指导教师吴明芬实验时间2014.4.9地点综合实验大楼203 实验题目插值方法 实验目的●掌握拉格朗日、牛顿插值法的算法思想; ●根据相关数据,用Matlab或C现实拉格朗日、牛顿插值法 实验内容●拉格朗日、牛顿插值法及其Matlab实现; ●题目由同学从学习材料中任意选两题。

算法分析与源程序拉格朗日插值: function y=chazhi_lage(x0,y0,x) i=length(x0); y=0; for j=1:i p=1; for k=1:i if j~=k p=p*(x-x0(k))/(x0(j)-x0(k)); end end y=y0(j)*p+y; end end 牛顿插值: function y=chazhi_newton(x0,y0,x) n=length(x0); a(1)=y0(1); s=1; yy=0; for i=2:n a(i)=y0(i); s=(x-x0(i-1))*s; for j=1:i-1 a(i)=(a(i)-a(j))/(x0(i)-x0(j)); end yy=a(i)*s+yy; end y=a(1)+yy;

实验结果与分析1.依据以下数据表:分别用牛顿插值和拉格朗日插值求f(1.2)的值 x-2-10123 f(x)-5111725 拉格朗日插值法结果:>>chazhi_lage(a,b,1.2) ans=1.52800000000000 牛顿插值法结果:>>chazhi_newton(a,b,1.2) ans=1.52800000000000 2.已知:√100=10,√121=11,√144=12,分别用拉格朗日和牛顿插值法求√115的近似值。 拉格朗日插值法结果:>>chazhi_lage(x,y,115) ans=10.72275550536420 牛顿插值法结果:>>chazhi_newton(x,y,115) ans=10.72275550536420 有上述实验结果分析,无论用拉格朗日或者牛顿的插值法计算出来的结果都是一样的,这是可以理解的,毕竟这两种方法都是通过构造n 次插值多项式求得。区别是牛顿插值是一种具有递推性质的插值公式,即公式不用依赖于全部插值节点。当这种递推形式无疑使编程实现的难度高于拉格朗日插值,而且个人还觉得这种算法的时间复杂度比拉格朗日插值法要高。 其它编写牛顿插值法有点难度,特别是编写差商的那部分,开始时有着想放弃的倾向,不过最后坚持下来,参考了别人的算法,然后才编写了出来·· 成 绩 考 核 算法分析与源程序(50%),实验结果及分析(30%),实验报告(20%) 指导老师签名:

相关文档
最新文档