08083122-李岩-拉格朗日插值法&&牛顿插值法
插值法(拉格朗日插值)

)
CN插i 次jn值i拉(x多格项x朗j )式日
li (xi ) 1
Ci
ji
( xi
1 xj)
j0
li ( x)
n ji
(x xj) (xi x j )
j0
n
Ln ( x) li ( x) yi i0
➢ 插值余项 /* Remainder */
用简单的插值函数L n(x)代替原复杂函数f(x),其 精度取决于截断误差,即插值余项.
x1
x2
利用
x0
6
,
x1
4
L1
(
x
)
x /
/ 6
4 /
4
1 2
x /
/ 4
6 /
6
1 2
sin
而
50内0 插L1(通518常) 优0于.77外61推4 。这选里择f (x) 12要端s0计in.点0算1x3,1的9插23x,值R所1(效R51在18(果x)的)较区f0好(.220间)(0!。7x的6) (2x
定理 (插值多项式的存在唯一性) 满足 P( xi ) yi , i 0, ... , n
的 n 阶插值多项式是唯一存在的。
证明: ( 利用Vandermonde 行列式论证)
a0 a1x0 ... an x0n y0 a0 a1x1 ... an x1n y1 ...
a0 a1xn ... an xnn yn
•
7、最具挑战性的挑战莫过于提升自我 。。20 20年12 月下午 2时16 分20.12. 1214:1 6December 12, 2020
•
8、业余生活要有意义,不要越轨。20 20年12 月12日 星期六 2时16 分39秒1 4:16:39 12 December 2020
拉格朗日插值法

优点与缺点
拉格朗日插值法的公式结构整齐紧凑,在理论分析中十分方便,然而在计算中, 当插值点增加或减少一个时,所对应的基本多项式就需要全部重新计算,于是整 个公式都会变化,非常繁琐。这时可以用重心拉格朗日插值法或牛顿插值法来代 替。此外,当插值点比较多的时候,拉格朗日插值多项式的次数可能会很高,因 此具有数值不稳定的特点,也就是说尽管在已知的几个点取到给定的数值,但在 附近却会和“实际上”的值之间有很大的偏差(如右下图)。这类现象也被称为龙 格现象,解决的办法是分段用较低次数的插值多项式。
为拉格朗日基本多项式(或称插值基函数),其表达式为:
。 拉格朗日基本多项式 为0。
的特点是在
上取值为1,在其它的点
上取值
范例
假设有某个二次多项式函数 ,已知它在三个点上的取值为:
要求 的值。 首先写出每个拉格朗日基本多项式:
然后应用拉格朗日插值法,就可以得到 的表达式( 为函数 的插值函数):
此时代入数值
拉格朗日插值法
Lagrange polynomial 维基百科,自由的百科全书
定义
对某个多项式函数,已知有给定的 个取值点:
其中 对应着自变量的位置,而 对应着函数在这个位置(每一个y值都不等于0)的取 值。 假设任意两个不同的 都互不相同,那么应用拉格朗日插值公式所得到的拉格朗 日插值多项式为:
其中每个
就可以求出所需之值:
。
证明
存在性 对于给定的k+1个点: ,拉格朗日插值法的思路是找到一个 在一点 取值为1,而在其他点取值都是0的多项式 。这样,多项式
在点 满足 取值为 ,而在其他点取值都是 0。而多项式 就可以
在其它点取值为0的多项式容易找到,例如: 它在点 取值为: 。由于已 经假定 两两互不相同,因此上面的取值不等于 0。于是,将多项式除以这个取 值,就得到一个满足“在 取值为1,而在其他点取值都是0的多项式”:
拉格朗日插值法理论及误差分析

浅析拉格朗日插值法目录:一、 引言二、 插值及多项式插值的介绍 三、 拉格朗日插值的理论及实验四、 拉格朗日插值多项式的截断误差及实用估计式 五、 参考文献一、引言插值在数学发展史上是个古老问题。
插值是和拉格朗日(Lagrange )、牛顿(Newton )、高斯(Gauss )等著名数学家的名字连在一起的。
在科学研究和日常生活中,常常会遇到计算函数值等一类问题。
插值法有很丰富的历史渊源,它最初来源人们对天体研究——有若干观测点(我们称为节点)计算任意时刻星球的位置(插值点和插值)。
现在,人们在诸如机械加工等工程技术和数据处理等科研都有很好的应用,最常见的应用就是气象预报。
插值理论和方法能解决在实际中当许多函数表达式未知或形式复杂,如何去构造近似表达式及求得在其他节点处的值的问题。
二、插值及多项式插值1、插值问题的描述设已知某函数关系()y f x =在某些离散点上的函数值:插值问题:根据这些已知数据来构造函数()y f x =的一种简单的近似表达式,以便于计算点,0,1,,i x x i n ≠=的函数值()f x ,或计算函数的一阶、二阶导数值。
xx 0y y1y 1n y -ny 1x 1n x -nx2、插值的几何意义插值的几何意义如图1所示:图1 3、多项式插值 3.1 基本概念假设()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 == (3.1)通常把上述01n x x x <<< 称为插值节点,把()P x 称为()f x 的插值多项式,条件(3.1)称为插值条件,并把求()P x 的过程称为插值法。
3.2 插值多项式的存在性和唯一性 如果插值函数是如下m 次的多项式:1011()m m m m m P x a x a x a x a --=+++那么插值函数的构造就是要确定()m P x 表达式中的m+1个系数011,,,m ma a a a -。
插值法和拉格朗日插值法

算法:插值法和拉格朗日插值法 拉格朗日生平约瑟夫·拉格朗日(Joseph-Louis Lagrange,1736~1813)全名为约瑟夫·路易斯·拉格朗日,法国著名数学家、物理学家。
1736年1月25日生于意大利都灵,1813年4月10日卒于巴黎。
他在数学、力学和天文学三个学科领域中都有历史性的贡献,其中尤以数学方面的成就最为突出。
拉格朗日父亲是法国陆军骑兵里的一名军官,后由于经商破产,家道中落。
据拉格朗日本人回忆,如果幼年时家境富裕,他也就不会作数学研究了,因为父亲一心想把他培养成为一名律师。
拉格朗日个人却对法律毫无兴趣。
拉格朗日科学研究所涉及的领域极其广泛。
他在数学上最突出的贡献是使数学分析与几何与力学脱离开来,使数学的独立性更为清楚,从此数学不再仅仅是其他学科的工具。
拉格朗日总结了18世纪的数学成果,同时又为19世纪的数学研究开辟了道路,堪称法国最杰出的数学大师。
同时,他的关于月球运动(三体问题)、行星运动、轨道计算、两个不动中心问题、流体力学等方面的成果,在使天文学力学化、力学分析化上,也起到了历史性的作用,促进了力学和天体力学的进一步发展,成为这些领域的开创性或奠基性研究。
在柏林工作的前十年,拉格朗日把大量时间花在代数方程和超越方程的解法上,作出了有价值的贡献,推动一代数学的发展。
他提交给柏林科学院两篇著名的论文:《关于解数值方程》和《关于方程的代数解法的研究》。
把前人解三、四次代数方程的各种解法,总结为一套标准方法,即把方程化为低一次的方程(称辅助方程或预解式)以求解。
拉格朗日也是分析力学的创立者。
拉格朗日在其名著《分析力学》中,在总结历史上各种力学基本原理的基础上,发展达朗贝尔、欧拉等人研究成果,引入了势和等势面的概念,进一步把数学分析应用于质点和刚体力学,提出了运用于静力学和动力学的普遍方程,引进广义坐标的概念,建立了拉格朗日方程,把力学体系的运动方程从以力为基本概念的牛顿形式,改变为以能量为基本概念的分析力学形式,奠定了分析力学的基础,为把力学理论推广应用到物理学其他领域开辟了道路。
《拉格朗日插值》课件

线性插值基函数 l0(x),l1(x) 满足下述条件
xi
x0
x1
l0 ( x )
1
0
l1 ( x )
0
1
并且他们都是一次函数。
注意他们Байду номын сангаас特点对下面的推广很重要
《拉格朗日插值》
18
一次Lagrange插值多项式(6)
• 我们称 l 0 ( x )为点 x 0 的一次插值基函数,l 1 ( x ) 为点 x 1 的一次插值基函数。它们在对应的插值点上取
个互不相同的点处的函数值 y f (x ),i 0,1,,,n 为求
i
i
y f (x的) 近似式,自然应当选 n 次多项式
Pn (x) a0 a1x a2x2 an xn
使 P (x) 满足条件 n
Pn(xi ) yi , i 0, 1, ,n
f ( x)称为被插函数, pn ( x)称插值多项式,条件(3 3)称插值条件, x0,x1, , xn称插值节点 这种求函数近似式的方法称为插值法 几何上,其实质是用通过n 1个点( x1, y1)(i 0,1, , n)的多项式曲 线y pn ( x),当作曲线y f (x)的近似曲线.如图所示
又由 lk (xk ) 1 ,得:
(x k x 0 )x k ( x 1 ) (x k 1 x k 1 )x k ( x k 1 ) (x k x n )
《拉格朗日插值》
26
N次插值多项式6
l k ( x ) ( x k ( x x 0 x ) 0 ) x k x ( ( x x 1 1 ) ) ( ( x x k x x k k 1 1 ) ) x x k ( ( x k x k 1 ) 1 ) ( x ( x k x n ) x n )
拉格朗日插值法课程设计

摘要插值法是函数逼近的一种重要方法,是数值计算的基本课题.数学上来说,拉格朗日插值法可以给出一个恰好穿过二维平面上若干个已知点的多项式函数.Lagrange 插值是n次多项式插值,其成功地用构造插值基函数的方法,解决了求n次多项式插值函数问题.Lagrange插值的基本思想是将待求的n次多项式插值函数改写成另一种表示方式,再利用插值条件确定其中的待定函数,从而求出插值多项式.拉格朗日插值法是一种很实用的插值方法,可以应用在渔业资源评估中、化学中、工程中、工业中、机械设计与制造领域,以及计算机方面.本课题意在将拉格朗日插值法应用到实际中,主要通过程序的编写(有拉格朗日插值法的Matlab和C语言实现)将算法在计算机中实现,求得相应的解.进一步体现拉格朗日插值法在解决问题时的实际意义.关键词插值基函数;插值多项式;Lagrange插值;算法AbstractInterpolation function approximation is a kind of important method, numerical calculation is the basic subject.Mathematical speaking,Lagrange interpolation method can give a right through the two dimensional plane several known point polynomial grange interpolation is n times polynomial interpolation,which succeeded in structure interpolation basis function method,solve the on times polynomial interpolation function problem. Lagrange interpolation basic idea is to will stay for n times polynomial interpolation function rewritten into another means,reuse interpolation condition to determine the required function,so as to find out the interpolation polynomial.Lagrange interpolation method is a very practical interpolation method, can be used in fishery resources evaluation,chemistry,engineering, industry, mechanical design and manufacturing,and computers to.This topic will be Lagrange interpolation method was used to practice,mainly through the process of writing(with Lagrange interpolation method of Matlab and C language implementation)algorithm is realized in computer,get the corresponding solution.Further reflected Lagrange interpolation method in solving problems of practical significance.Keywords interpolation basis function;Interpolation polynomial;Lagrange interpolation;algorithm目录引言 (1)第一章拉格朗日插值法 (2)§1.1 基本概念 (2)§1.2 拉格朗日插值法 (2)§1.2.1 基函数 (2)§1.2.2拉格朗日插值公式 (3)§1.2.3 余项与误差估计 (4)第二章拉格朗日插值法的程序设计及应用 (8)§2.1拉格朗日插值法的Matlab实现 (8)§2.2拉格朗日插值法的C语言实现 (9)§2.2.1 流程图 (9)§2.2.2 C语言编程 (10)§2.3 拉格朗日插值法的应用 (11)§2.3.1 在渔业资源评估上的应用 (11)§2.3.2 利用拉格朗日插值法解决传热过程中的导热系数 (12)参考文献 (14)附录A (15)附录B (16)引言在数值分析中,拉格朗日插值法是以法国十八世纪数学家约瑟夫·路易斯·拉格朗日命名的一种多项式插值方法.约瑟夫·拉格朗日(Joseph Louis Lagrange),法国数学家、物理学家.他在数学、力学和天文学三个学科领域中都有历史性的贡献,其中尤以数学方面的成就最为突出.拉格朗日对流体运动的理论也有重要贡献,提出了描述流体运动的拉格朗日方法.1795年,拉格朗日在其著作《师范学校数学基础教程》中发表了这个插值方法,从此他的名字就和这个方法联系在一起.数据建模有两大方法:一类是插值方法,另一类是拟合函数,一般的说,插值法比较适合数据准确或数据量小的情形.然而Lagrange 插值有很多种,1阶,2阶,…n 阶.我们可以利用拉格朗日插值求方程,根据它的程序求原方程的图像.拉格朗日插值法可以找到一个多项式,其恰好在各个观测的点取到观测到的值.实际问题中所遇到的许多函数很难找到它的解析表达式.有时通过实验或数值计算所得到的也只是一些离散的(一般是互不相同)点i x (i=0,1,...,n )上的函数值,在实际应用中,一般将这些数据列成数据表格的形式.通常,将这种用数据表格形式给出的函数称为列表函数,其中点n x x x ,...,,10称为结点.根据函数)(x f 已有的数据表格来计算函数)(x f 在一些新的点x 处的函数值,这就是插值法所要解决掉问题.插值法的基本思想是,首先设法根据表格中已有的函数值值来构造一个简单的函数)(x y 作为)(x f 的近似表达式,然后再用)(x y 来计算新的点上的函数值作为)(x f 的近似值.通常可以选多项式函数作为近似函数)(x y ,因为多项式具有各阶导数,求值也比较方便.本课题研究的是拉格朗日插值法的程序设计,计算机实现,以及拉格朗日插值法的应用.第一章 拉格朗日插值法§1.1 基本概念下面介绍有关拉格朗日插值法的相关概念. 定义1.1 设函数)(x f y =在区间],[b a 上有定义,且已知在点b x x x a n ≤<<<≤...10上的值n y y y ,...,,10,若存在一简单函数,使n i y x P i i ,...,1,0,)(== (1.1)成立,就称)(x P 为)(x f 的插值函数,点n x x x ,...,,10称为插值节点,包含插值节点的区间],[b a 称为插值区间,求插值函数)(x P 的方法称为插值法. 若)(x P 是次数不超过n 的代数多项式,即,...)(10n n x a x a a x P +++=其中i a 为实数,就称)(x P 为插值多项式,相a a a x P ++=21)(应的插值法称为多项式插值.定义1.2 设给定数据点),(i i y x ,n i ,...,1,0=(互异),欲找二者的近似关系)(x P ,满足(1)),()(x P x P n ∈ (2)n i y x P i i ,...,1,0,)(==则称)(x P 为n 次代数插值多项式. 定理1.1 满足条件(1.1)的插值多项式)(x P 是存在唯一的.直接求解方程组就可以得到插值多项式)(x P ,但这是求插值多项式最繁杂的方法,一般是不用的,下面将给出构造插值多项式更简单的方法.§1.2 拉格朗日插值法§1.2.1 基函数为了构造插值多项式,我们先定义插值基函数.定义 1.3 设n x x x ,...,,10是给定的彼此互异的1+n 个插值结点, n i x f y i i ,...,1,0),(==为给出的函数值,则)(...)()()(1100x l y x l y x l y x P n n n +++=是唯一的次数不超过n 的,满足n i y x P i i n ,...,2,1,0,)(==的多项式.其中为拉格朗日插值基函数,)(x P n 为拉格朗日插值函数. 下面介绍基函数)(x l i 的性质.性质1.1 ⎩⎨⎧≠==,,0,,1)(j i j i x l j i性质1.2 n i x P x l n i ,...,1,0),()(=∈性质1.3 1)(0≡∑=x l ni i§1.2.2 拉格朗日插值公式定理1.2 n 次代数插值问题的解为)()()(0x L x l y x P n i ni i ==∑=称为拉格朗日插值多项式. 特殊化,得到如下插值公式. (1)线性插值)(1x L设已知0x ,1x 及0y =f(0x ) ,1y =f(1x ),)(1x L 为不超过一次多项式,且满足 )(01x L =0y ,)(11x L =1y , 几何上,)(1x L 为过(0x ,0y ),(1x ,1y )的直线,从而得到 . )()(0010101x x x x y y y x L ---+= (1.2) 为了推广到高阶问题,我们将式(1.2)变成对称式 )(1x L =0l (x )0y +1l (x)1y . 其中,0l (x )=101x x x x --,1l (x)=010x x x x --.均为1次多项式且满足 0l (x )=1且1l (x)=0.或0l (x )=0且1l (x)=1.两关系式可统一写成. ⎩⎨⎧≠==,,0,,1)(j i j i x l j i (1.3)(2)抛物线插值)(2x L假定插值结点为11,,+-i i i x x x ,要求抛物线插值(即二次插值)多项式)(2x L ,使它满足.1,,1,)(2+-==i i i j y x L i j我们知道在几何上就是通过三点),(11--i i y x ,),(i i y x ,),(11++i i y x 的抛物线.为了求出)(2x L 的表达式,可采用基函数法,此时基函数)(),(1x l x l i i -及)(1x l i +是二次函数,且在节点上分别满足条件⎪⎭⎪⎬⎫-===+-===+===+++---.,1,0)(,1)(;1,1,0)(,1)(;1,,0)(,1)(111111i i j x l x l i i j x l x l i i j x l x l j i i i j i i i j i i i (1.4)满足条件(1.4)的插值基函数是很容易求出的,例如求)(1x l i -,因它有两个零点i x 及1+i x ,故可表示为))(()(11+---=i i i x x x x A x l ,其中A 为待定系数,可由条件1)(11=--i i x l 定出))((1111+----=i i i i x x x x A ,于是))(())(()(11111+--+-----=i i i i i i i x x x x x x x x x l .同理可得))(())(()(1111+-+-----=i i i i i i i x x x x x x x x x l ,))(())(()(11111i i i i i i i x x x x x x x x x l ----=+-+-+.利用二次插值基函数)(),(1x l x l i i -,)(1x l i +,立即得到二次插值多项式)()()()(11112x l y x l y x l y x L i i i i i i ++--++=, (1.5)显然,它满足条件)1,,1()(2+-==i i i j y x L j j .将上面求得的)(),(1x l x l i i -,)(1x l i +代入(1.5)式,得))(())(())(())(())(())(()(111111111111112i i i i i i i i i i i i i i i i i i i i i x x x x x x x x y x x x x x x x x y x x x x x x x x y x L ----+----+----=+-+-++-+-+--+-.§1.2.3余项与误差估计拉格朗日插值用来求n 个节点的(n-1)次插值多项式,它就是线性插值和抛物线插值的推广和延伸.我们设有n 个节点,则拉格朗日插值的表达式表示为:1211111,1211()()()()()()()()()()()()n nn j k k n k kk k j j k k k k k k k k n k jx x x x x x x x x x x x g x y y x x x x x x x x x x x x -+===≠-+---⋅⋅⋅--⋅⋅⋅-==--⋅⋅⋅--⋅⋅⋅--∑∑∏ 若在],[b a 上用)(x L n 近似)(x f ,则其截断误差为)()()(x L x f x R n n -=,也称为插值多项式的余项.关于插值余项估计有以下定理.下面的定理说明了用插值多项式)(x L n 近似代替函数)(x f 时的余项.定理1.3 (余项定理) 设)()(x f n 在],[b a 上连续,)()1(x f n +在),(b a 内存在,节点b a x x x n ≤<<<≤...10,)(x L n 是满足条件.,...,1,0,)(n j y x L j j n ==的插值多项式,则对任何],[b a x ∈,插值余项)()!1()()()()(1)1(x n f x L x f x R n n n n +++=-=ωξ, (1.6)这里),(b a ∈ξ且依赖于x ,))...()(()(101n n x x x x x x x ---=+ω.这里需要说明如下两点.(1)在插值多项式的余项公式中,包含有)()1(ξ+n f ,其中,ξ一般与插值结点),...,1,0(n j x j =以及插值点x 有关,因此,ξ一般是无法知道的,这就对余项的估计带来了困难.(2)由插值多项式的余项公式可以看出,当被插值的函数)(x f 为次数不高于n 的多项式时,其n 次插值多项式就是它本身,因为此时0)()1(=+ξn f ,即余项为0. 应当指出,余项表达式只有在)(x f 的高阶导数存在时才能应用.ξ在),(b a 内的具体位置通常不可能给出,如果我们可以求出1)1()(max ++≤≤=n n bx a M x f ,那么插值多项式)(x L n 逼近)(x f 的截断误差限是)()!1()(11x n M x R n n n +++≤ω. 当1=n 时,线性插值余项为];,[),)()((21)()(21)(1010''2''1x x x x x x f x f x R ∈--==ξξωξ当2=n 时,抛物线插值的余项为].,[),)()()((61)(20210'''2x x x x x x x x f x R ∈---=ξξ利用余项表达式(1.6),当)()(n k x x f k ≤=时,由于)0()1(=+x f n ,于是有,0)()(0=-=∑=x l x x x R i ni k i kn由此得.,...,1,0,)(0n k xx l x ki ni k i ==∑= (1.7)特别当0=k 时,有.1)(0=∑=x l ni i (1.8)(1.7)式和(1.8)式也是插值基函数的性质,利用它们还可求一些和式的值.例1 已知函数表sin 6π=0.5000,sin 4π=0.7071,sin 3π=0.8660,分别由线性插值与抛物插值求sin92π的数值解,并由余项公式估计计算结果的精度. 解(1)这里有三个节点,线性插值需要两个节点,根据余项公式,我们选取前两个节点,易知:sin 92π≈1L (92π)=0.5000+645000.07071.0ππ--(92π-6π)=0.5000+0.207132⨯=0.6381截断误差, )92(1πR =)492)(692(2)(sinx ππππ--''310615.7361821-⨯=⨯⨯≤ππ, 得.105.010615.713--⨯<⨯=ζ知结果至少有1位有效数字. (2)易知sin 92π+⨯=≈5000.0)3-6)(4-6()33-92)(4-92()92(2πππππππππL ⨯----))(())((3464392692ππππππππ0.7071+ 8660.04363492692⨯----))(())((ππππππππ=7071.0985000.092⨯+⨯⨯-910.8660=0.6434 . 截断误差为:≤---'''==ξπππππππx x R )492)(492)(692(6)(sin )92(2210861..09361861-⨯=⨯⨯⨯πππ 得.105.010861.824--⨯<⨯=ζ知结果至少有两位数字. 比较本题精确解sin=92π0.642787609...,实际误差限分别为0.0047和0.00062.第二章拉格朗日插值法的程序设计及应用§2.1拉格朗日插值法的Matlab实现在Matlab中,利用Lagrange插值方法进行多项式插值,并将图形显式出来.实现Lagrange插值的步骤如下:Step1 定义函数f = 1./(25*x^2+1)将其保存在f.m 文件中,具体程序如下: function y = f1(x)y = 1./(25x.^2+1);Step2 定义拉格朗日插值函数,将其保存在lagrange.m 文件中,具体实现程序编程见附录A.Step3 建立测试程序,保存在text.M文件中,实现画图:x=-1:0.001:1;y=(1+25.*x.^2).^-1;p=polyfit(x,y,n);py=vpa(poly2sym(p),10);plot_x=-1:0.001:1;f1=polyval(p,plot_x);figureplot(x,y,'r',plot_x,f1)输入n=6时,出现如下面的图2.1所示.图2.1 Largange插值图像通过图2.1可以看出当n=6时,被插图像与插值图像没有很好的模拟,于是重新运行text.M,并选择n=15,运行,显示如图2.2所示.图2.2 Largange插值图像综合图2.1和图2.2的Lagrange插值图像可以看出,n=15时的被插图像与插值图像实现了很好的模拟.结果分析:由图2.1和图2.2可以看出n的次数越高,越能实现较好的模拟,从而模拟的效果越好,从图2.2就可以看出两条曲线接近重合,而图一两条直线却分开很多,误差较大,精度也不高.因此在实际的应用中应该尽量在给定的条件下增加n的次数,才能实现与原函数较好的重合,才能使计算的结果更加的准确,从而减小了误差.§2.2 拉格朗日插值法的C语言实现在Visual C++中,用C语言实现拉格朗日插值.§2.2.1 流程图要用C语言实现拉格朗日插值,先画出流程图.程序流程图:↓图2.3 流程图§2.2.2 C语言编程用C语言编程的步骤如下:Step1定义拉格朗日插值算法;Step2 int n;{如果n>=20或n<=0,则输出"Error!The value of n must in (0,20)."}for i:=0 to n-1{输入x和y的值}Step3输出根据给定的点求出其对应的拉格朗日插值多项式的值 .举例如下:已知当x=1,-1,2时f(x)=0,-3,4,求f(1.5)的值.源程序见附录B.运行结果如下:图2.4 截屏§2.3 拉格朗日插值法的应用拉格朗日插值法可以应用在各个方面.§2.3.1 在渔业资源评估上的应用:应用拉格朗日插值法拟合鱼类体长与体重之间的关系,使用计算机VB 语言进行编写程序,与常用的线性回归法、Ricker 法进行比较,得出体长与体重的关系式为k nk n kj j jk j k n k k n y x x x x x l y x P ∑∏∑=≠==--==000)()()(在资源评估过程中,当测量次数确定为n j ,...,1,0=时,将测量到同一种不同大小的鱼类样品对应的体长与体重数据),(j j y x ,其中j x 表示第j 条鱼的体长,j y 表示第j 条鱼的体重,即求作n 次多项式)(x P n ,使满足条件,,...,1,0,)(n j Y X P j j n == (2.1) 点j X (它们互不相同,若在测量中有相同的体长值归为一组数值)称为插值节点.用几何的语言来表达这类插值,就是通过体长与体重关系曲线)(x f y =上给定的1+n 个点n j y x j j ,..,1,0),,(=,求作一条n 次代数曲线)(x P y n =作为)(x f y =的近似.解决这个问题时先从构造插值基函数入手,这里的插值基函数),...,1,0)((n k x l k =是n 次多项式,且满足条件,,1,0)( ⎝⎛=≠==k j kj x l kj j k δ (2.2) 这表明除k x 以外的所有节点都是)(x l k 的零点,故∏≠=-=nk j j j k x x c x l 0)()(, (2.3)按(2.2)式中的第2个条件1)(=k k x l 确定其中的系数c ,结果有 .)(0∏≠=--=nk j j jk j k x x x x x l (2.4)利用插值基函数容易得出方程(2.1)的解 y nk nkj j jk j nk k k n y x x x x x l y x P ∑∑=≠==--==000)()()((2.5)通过这个方程,我们可以从同一种鱼类对应体长求得相应较为精确的近似体重.§2.3.2 利用拉格朗日插值法解决传热过程中的导热系数化学工程手册中通常给出的导热系数是离散数据,而此数据误差较大1为了减小导热系数的误差,我们可采用拉格朗日插值法求得准确度较高的导热系数. 以苯为例,求160℃下的λ值.根据表2-1中所给出的值,可确定为共有5个节点,能构造4次插值函数)(4t ϕ. 首先构造:)(0t L ))()()(()(43210t t t t t t t t A t L ----=, 而1)(00=t L ,故=)(0t L ))()()(())()()((403020104321t t t t t t t t t t t t t t t t --------,则,.0476.0)160(0=L同理可构造),(),(),(),(4321t L t L t L t L 求得;2105.0)160(1-=L ;4481.0)160(2=L =)160(3L 0.9592;.2380.0)160(4-=L这样,4次插值函数)(4t ϕ为=)160(4ϕ=∑=)160(4i iL λ)160()160()160()160()160(443322110L L L L L λλλλλ++++=0.0235.也就是说用拉格朗日插值法求得苯在160C 下的导热系数为0.0235)/(C m w ⋅. 拉格朗日插值法还可以应用在基于拉格朗日插值法修正地形影响的分布式降水模型研究中,基于质心拉格朗日插值的GPS 轨道标准化方法,基于高维拉格朗日插值法的三坐标测量机测量误差建模,基于拉格朗日插值的射线图像增强技术,基于拉格朗日插值的参数曲线隐式化等方面.参考文献[1]Jhon H. Mathews Kurtis D.Fink .数值方法(MATLAB版).电子工业出版社.2002年[2]关治.数值计算方法.清华大学大学出版社.2005年[3]徐士良.数值方法与计算机实现[M].清华大学出版社.2010年[4]李庆扬.数值分析[M].北京:清华大学出版社.2008年附录A Matlab编程funtion y=lagrange(x0,y0,x)m= length(x);n=length(x0)for i=1:nl(i)=1endfor i=1:mfor j=1:nfor k=1:nif j==kcontinueendl(j)=(x(i)-x0(k))/(x0(j)-x0(k))*l(j);endendendy=0for i=1:ny = y0(i)*l(i)+yEnd附录B C语言编程#include <iostream>#include <conio.h>#include <malloc.h>float lagrange(float *x,float *y,float xx,int n) /*拉格朗日插值算法*/ {int i,j;float *a,yy=0.0; /*a作为临时变量,记录拉格朗日插值多项式*/a=(float *)malloc(n*sizeof(float));for(i=0;i<=n-1;i++){a[i]=y[i];for(j=0;j<=n-1;j++)if(j!=i) a[i]*=(xx-x[j])/(x[i]-x[j]);yy+=a[i];}free(a);return yy;}int main(){ int i;int n;float x[20],y[20],xx,yy;printf("Input n:");scanf("%d",&n);if(n>=20){printf("Error!The value of n must in (0,20)."); getch();return 1; }if(n<=0){printf("Error! The value of n must in (0,20)."); getch(); return 1; }for(i=0;i<=n-1;i++){printf("x[%d]:",i);scanf("%f",&x[i]);}printf("\n");for(i=0;i<=n-1;i++){printf("y[%d]:",i);scanf("%f",&y[i]); }printf("\n");printf("Input xx:");scanf("%f",&xx);yy=lagrange(x,y,xx,n);printf("x=%f,y=%f\n",xx,yy);getch();}。
拉格朗日插值法
拉格朗日抛物线插值法1、定义若多项式l j (j=0,1,2...n )在n+1个节点x 0<x 1<...<x n 上满足条件就称这n+1个n 次多项式l 0(x),l 1(x),....l n (x)为节点x 0,x 1,....x n 上的n 次插值基函数称之为拉格朗日多项式, 都是n 次多项式 。
2、Matlab 文件 M 文件 Lagrage.mFunction yi=lagrage(x,y,xi) n=length(x); S=0; For k=1:n t=1; for(j=1:n) if j~=kt=t*(xi-yi)/x(k)-x(j);0,()(0,1,,)1,i j j il x j n j i≠⎧==⎨=⎩00()()()()()(0,1,,)n i i i n x x x x l x x x x x i n --=--=11()()i i x x x x -+--11()()i i i i x x x x -+--∏≠=--=ni j j ji j x x x x 0end endS=t*y(k)+s; end; yi=s; 3、例题 1)计算115 解:L 2(x)=0201021))(())((y x x x x x x x x ----+1201020))(())((y x x x x x x x x ---- +2201010))(())((y x x x x x x x x ----=10)44(21)144)(121(⨯-⨯---x x + 11)23(21)144)(100(⨯-⨯--x x +122344)144)(100(⨯⨯--x x L 2(115)= 10)44(21)29(6⨯-⨯--⨯-x +11)23(21)29(15⨯-⨯-⨯ +122344)6(15⨯⨯-⨯ ≈10.7228在Matlab 窗口输入x 100 121 144 y101112>>x=[100 121 144] ; y=[10 11 12] ; y2=lagrage(x,y,115) ; 输出 y2=10.72282)计算π92sin 解:4926πππ<<866.0))(())((707.0))(())((5.0))(())(()(120210210120201021⨯----+⨯----+⨯----=x x x x x x x x x x x x x x x x x x x x x x x x x L 6380.0)92(≈πL 在Matlab 窗口输入 >>x=[6π 4π 3π] ;y=[0.5 0.707 0.866] ; y2=lagrage(x,y,2PI/9) ; 输出 y2=0.6380均差与牛顿插值多项式1、 1)定义称000)()(],[x x x f x f x x f k k k --=为函数)(x f 关于k x x ,0的一阶均差,1100210],[],[],,[x x x x f x x f x x x f k k --=称为)(x f 的二阶均差。
拉格朗日(Lagrange)插值
p2(7) =
(1–4)(1–9)
*1 + (4–1)(4–9)
*2
(7–1)(7–4)
+ (9–1)(9–4) * 3
= 2.7
例5.4 已知函数y=f(x)在节点上满足
x x0 x1 x2
y y0 y1 y2
求二次多项式 p(x) = a0 + a1x + a2x2
使之满足 p(xi) = yi
li (x的) 插值
lk (x0 ) 0,,lk (xk1) 0,lk (xk ) 1,lk (xk1 ) 0,,lk (xn ) 0
即
lk
(xi )
ki
1 0
(i k) (i k)
由条件 lk (xi ) 0 ( i k)知, x0 , x1,, xk1, xk1,, xn
都是n次 lk (x) 的零点,故可设
l0 (x)
再由另一条件 l0 (x0
c(x
) 1
x1 )( x x2
确定系数
)
c
(x0
1 x1)( x0
x2
)
从而导出
l0 (x)
(x (x0
x1)( x x2 ) x1 )( x0 x2 )
类似地可以构造出满足条件: l1(x1) 1, l1(x0 ) 0,
的插值多项式
l1 ( x)
lk (x)
j0 jk
n
x xj
n
(xk x j )
j0 xk x j
jk
j0 jk
称 lk (x) 为关于基点 xi 的n次插值基函数(i=0,1,…,n)
以n+1个n次基本插值多项式 lk (x)(k 0,1,, n) 为基础,就能直接写出满足插值条件
《拉格朗日插值法》课件
根据已知的插值点和插值函数的性质 ,确定多项式的阶数。
求解插值多项式的系数
求系数
通过已知的插值点和构造的插值多项式,求解出多项式的系数。
验证解的正确性
通过已知的插值点和求解出的系数,验证解的正确性。
04
拉格朗日插值法的应用实例
在数值分析中的应用
数值积分
拉格朗日插值法可用于数值积分,通过插值多项式对被积函数进行近似,进而求得积分的近似值。
全局插值能力较弱
拉格朗日插值法主要适用于局部插值,对于全局插值问题可能不太 适用。
06
拉格朗日插值法的改进与发
展
改进方法
提高精度
通过增加插值基函数的数量, 可以更精确地逼近函数,从而
提高插值的精度。
处理异常值
引入稳健性估计方法,对异常 值进行识别和处理,以提高插 值的稳定性。
优化算法
改进算法以提高计算效率,减 少计算量,使得插值过程更加 快速和高效。
图像处理
在图像处理中,可以使用拉格朗日插值法对图像进行放大、缩小或旋转等变换,保持图 像的清晰度和连贯性。
三维模型重建
在三维模型重建中,可以使用拉格朗日插值法对点云数据进行插值,得到连续光滑的三 维模型表面。
05
拉格朗日插值法的优缺点
优点
01
02
03
简单易行
拉格朗日插值法是一种直 观且易于理解的方法,不 需要复杂的数学工具即可 实现。
工程
用于解决各种实际问题,如机 械振动、流体动力学和电路分 析等。
物理学
用于模拟和预测各种物理现象 ,如力学、电磁学和量子力学 等。
02
拉格朗日插值法的基本概念
拉格朗日插值法的定义
拉格朗日插值算法描述
拉格朗日插值算法描述一、引言插值算法是数学中用于填充函数在某些离散点之间的“洞”或“空白”的一种方法。
其中,拉格朗日插值算法是最著名和最早的插值方法之一。
它是由意大利数学家约瑟夫·拉格朗日于1795年提出的,用于解决多项式插值问题。
拉格朗日插值算法在数值分析、计算几何、信号处理和数值预测等领域有广泛的应用。
二、算法简介拉格朗日插值算法是一种通过已知的离散数据点构造一个多项式来逼近未知函数的方法。
该算法的基本思想是,对于一组已知的离散数据点,构造一个次数最低的多项式,使得这个多项式满足给定的数据点。
该算法的优点是简单易懂,且具有较高的计算效率。
三、算法步骤1.初始化:选择一组已知的离散数据点 (x0, y0), (x1, y1), ..., (xn, yn),并设置一个初始值为 yp(x) = yn,其中 n 是数据点的个数。
2.迭代计算:对于 i = n-1, n-2, ..., 0,进行以下步骤:3. a. 计算拉格朗日基本多项式 Li(x):如果 i = 0,则 Li(x) = 1;否则,Li(x) = (xi+1 - x) / (xi+1 - xi) 当 x ≠ xi 且 i = 0,1,...,n-1,且 Li(xi) = 0。
4. b. 更新插值多项式:yp(x) = yp(x) + Li(x) * [yn - yp(xn)] 当 x ≠ xi 且 i = 0,1,...,n-1。
5.返回结果:最终得到的插值多项式即为所求的结果。
四、算法特点1.高效性:与牛顿插值算法相比,拉格朗日插值算法的计算复杂性更低。
因为牛顿法的计算复杂性为O(n^2),而拉格朗日法的计算复杂性为O(n^3)。
2.稳定性:拉格朗日插值算法具有一定的数值稳定性,特别是在处理病态问题时表现较好。
这是因为拉格朗日插值多项式的零点与原始数据点完全一致,从而在处理具有较多重复数据点的情况时能够保持良好的数值稳定性。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
试验三.拉格朗日插值和牛顿插值
1.实验目的:
掌握Lagrange插值法和Newton插值法。
2.问题提出
设函数f(x)的函数值表:
用两种插值法求f(0.13)和f(0.36)的近似值。
3.源程序(java)
public class数值计算实验3s {
//拉格朗日插值法
static double L(double x,double x0,double x1,double y0,double y1)//静态函数传入5个参数
{
double l;
l=(x-x1)/(x0-x1)*y0+(x-x0)/(x1-x0)*y1;
System.out.println("拉格朗日插值多项式:
f(x)=(x-"+x1+")/"+y0/(x0-x1)+"+(x-"+x0+")/"+y1/(x1-x0));
System.out.println("近似解\t"+l);
return l;
}
//牛顿插值法
static double N(double x)//牛顿插值法求函数值,参数x
{
double a[]=new double[]{0,0.1,0.2,0.3,0.4},b[]=new
double[]{0.5,0.5398,0.5793,0.6179,0.7554},c[]=new double[4],d[]=new
double[3],e[]=new double[2],f[]=new double[1],y;
for(int j=0;j<4;j++)
{
c[j]=(b[j+1]-b[j])/(a[j+1]-a[j]);
}
for(int j=0;j<3;j++)
{
d[j]=(c[j+1]-c[j])/(a[j+2]-a[j]);
}
for(int j=0;j<2;j++)
{
e[j]=(d[j+1]-d[j])/(a[j+3]-a[j]);
}
for(int j=0;j<1;j++)
{
f[j]=(e[j+1]-e[j])/(a[j+4]-a[j]);
}
//牛顿插值多项式
y=b[0]+c[0]*(x-a[0])+d[0]*(x-a[0])*(x-a[1])+e[0]*(x-a[0])*(x-a[1])*(x-a[2])+f[ 0]*(x-a[0])*(x-a[1])*(x-a[2])*(x-a[3]);
System.out.println("牛顿插值多项
式:f(x)="+b[0]+"+"+c[0]+"*(x-"+a[0]+")+("+d[0]+")*(x-"+a[0]+")*(x-"+a[1]+")+("+e[0] +")*(x-"+a[0]+")*(x-"+a[1]+")*(x-"+a[2]+")+"+f[0]+"*(x-"+a[0]+")*(x-"+a[1]+")*(x-"+ a[2]+")*(x-"+a[3]+")");
System.out.println("近似解\t"+y);
return y;
}
public static void main(String args[])//主函数
{
System.out.println("拉格朗日插值法:");
L(0.13,0.1,0.2,0.5398,0.5793);//输入书中给出的参数即可
L(0.36,0.3,0.4,0.6179,0.7554);
System.out.println("牛顿插值法:");
N(0.13);
N(0.36);
}
}
4.结果截图
拉格朗日插值法:
拉格朗日插值多项式:f(x)=(x-0.2)/-5.397999999999999+(x-0.1)/5.793
近似解0.55165
拉格朗日插值多项式:f(x)=(x-0.4)/-6.178999999999998+(x-0.3)/7.553999999999997
近似解0.7003999999999999
牛顿插值法:
牛顿插值多项
式:f(x)=0.5+0.39799999999999947*(x-0.0)+(-0.014999999999992797)*(x-0.0)*(x-0.1)+(-0 .10000000000004268)*(x-0.0)*(x-0.1)*(x-0.2)+41.83333333333345*(x-0.0)*(x-0.1)*(x-0.
2)*(x-0.3)
近似解0.553650285
牛顿插值多项
式:f(x)=0.5+0.39799999999999947*(x-0.0)+(-0.014999999999992797)*(x-0.0)*(x-0.1)+(-0 .10000000000004268)*(x-0.0)*(x-0.1)*(x-0.2)+41.83333333333345*(x-0.0)*(x-0.1)*(x-0.
2)*(x-0.3)
近似解0.67796816
5.结果分析
①编写的函数L要传入5个参数(如果用二次差值法要传入7个参数),因为采用的一次插值法,故要传入两点坐标和未知量x,为提高精度,采用的内插法,所以每次两点都会变化;但是没有循环结构,结构清晰紧凑,便于常理分析;缺点,用已知数据节点求出插值多项式后又获得新的数据点,要用它连同原来的数据点一起求出插值多项式,即从已计算出的n次插值多项式求出n+1次插值多项式是很复杂且困难的。
②对于N函数只需要传入一个参数x,因为牛顿插值法主要就是计算出差商,而对于本题差商是固定的,共4阶,只需计算一次,就可以得出牛顿插值多项式,这就是一个x的函数。
4阶差商所以就用了4个for循环,计算出差商,这使函数内部很复杂,但是计算一次就可以了,以后只需要调用函数;虽然函数本身复杂些,但对于处理大量数据的时候是很方便的,有“一劳永逸”的效果。
另外它克服了函数L从n次插值到n+1次计算困难的缺点。