Lagrange插值多项式
拉格朗日插值法
优点与缺点
拉格朗日插值法的公式结构整齐紧凑,在理论分析中十分方便,然而在计算中, 当插值点增加或减少一个时,所对应的基本多项式就需要全部重新计算,于是整 个公式都会变化,非常繁琐。这时可以用重心拉格朗日插值法或牛顿插值法来代 替。此外,当插值点比较多的时候,拉格朗日插值多项式的次数可能会很高,因 此具有数值不稳定的特点,也就是说尽管在已知的几个点取到给定的数值,但在 附近却会和“实际上”的值之间有很大的偏差(如右下图)。这类现象也被称为龙 格现象,解决的办法是分段用较低次数的插值多项式。
为拉格朗日基本多项式(或称插值基函数),其表达式为:
。 拉格朗日基本多项式 为0。
的特点是在
上取值为1,在其它的点
上取值
范例
假设有某个二次多项式函数 ,已知它在三个点上的取值为:
要求 的值。 首先写出每个拉格朗日基本多项式:
然后应用拉格朗日插值法,就可以得到 的表达式( 为函数 的插值函数):
此时代入数值
拉格朗日插值法
Lagrange polynomial 维基百科,自由的百科全书
定义
对某个多项式函数,已知有给定的 个取值点:
其中 对应着自变量的位置,而 对应着函数在这个位置(每一个y值都不等于0)的取 值。 假设任意两个不同的 都互不相同,那么应用拉格朗日插值公式所得到的拉格朗 日插值多项式为:
其中每个
就可以求出所需之值:
。
证明
存在性 对于给定的k+1个点: ,拉格朗日插值法的思路是找到一个 在一点 取值为1,而在其他点取值都是0的多项式 。这样,多项式
在点 满足 取值为 ,而在其他点取值都是 0。而多项式 就可以
在其它点取值为0的多项式容易找到,例如: 它在点 取值为: 。由于已 经假定 两两互不相同,因此上面的取值不等于 0。于是,将多项式除以这个取 值,就得到一个满足“在 取值为1,而在其他点取值都是0的多项式”:
第二节 插值多项式的构造
π
π
π
π
l1 ( x ) =
− 1296
π4
1296
x( x −
π
4
)( x −
π
3
)( x −
π
2
)
l2 ( x) =
l3 ( x ) = −
π
4
x( x −
π
6
)( x −
π
4
)( x −
π
2
)
x( x − )( x − )( x − ) π 6 3 2 144 π π π l4 ( x ) = 4 x ( x − )( x − )( x − ) π 6 4 3
x − x1 x − x0 + y1 x0 − x1 x1 − x0
解 :f ( x ) = ln x , x 0 = 1 0 , x1 = 1 1, x = 1 0 .5
10.5 − 11 10.5 − 10 ln(10.5) ≈ P(10.5) = × 2.303 + × 2.398 = 2.350 5 10 − 11 11 − 10
f ( n +1) (ξ ) ω n +1 ( x ) ξ ∈ [ a , b ] 截 断 误 差 :R n ( x ) = f ( x ) − Pn ( x ) = ( n + 1)! ω n +1 ( x ) = ( x − x 0 )( x − x1 ) ⋯ ( x − x n )
(1)n = 1 时线性插值 在两个互异节点x0 , x1处的函数 值y0 , y1 , 构造线性函数 p1 ( x) = a0 + a1 x 求出p1 ( x) = y0l0 ( x) + y1l1 ( x) x − x0 x − x1 其中l0 ( x) = ,l1 ( x) = x0 − x1 x1 − x0
研究生数值分析(14)拉格朗日(Lagrange)插值多项式 共22页PPT资料
事实上,
s5 i0 n 0 L 1 (5 ) 0 0 .01 ; s 05 i0 1 n 0 L ~ 1 ( 0 5 ) 0 0 .005
因此做线性内插时取 x00.2,x10.3 相应地 y01 .2 2 1 4 ,y11 .3 4 9 9
由线性插值公式,得
L 1 (x ) 0 x .2 0 0 .3 .3 1 .2 2 1 4 0 x .3 0 0 .2 .2 1 .3 4 9 9
所得近似值为
e 0 . 2 8 5 L 1 ( 0 . 2 8 5 ) 0 0 . 2 . 2 8 5 0 0 . 3 . 3 1 . 2 2 1 4 0 0 . 2 . 3 8 5 0 . 0 2 . 2 1 . 3 4 9 9 1 . 3 3 0 6
由线性插值余项公式
所以
s in 5 0 0 L 1 ( 5 0 ) 1 2 2 3 ( 1 8 0 )2 2 0 5 0 .0 1 3 1 9 0
同理,由
s5 i 0 n L ~ 0 1 ( 5 ) 1 2 0 ( s) i1 n ( ) 2 ( 8 5 4 0 0 ) 5 5 ( 6 0 )3 0 0 0 6 0
插值多项式⑤称为拉格朗日插值多项式,记作 L n ( x )
当n=2时,由⑤式可得三点插值公式
L 2 ( x ) y 0 ( ( x x 0 x x 1 1 ) ) ( ( x x 0 x x 2 2 ) ) y 1 ( ( x x 1 x x 0 0 ) ) ( ( x x 1 x x 2 2 ) ) y 2 ( ( x x 2 x x 0 0 ) ) ( ( x x 2 x x 1 ) 1 ) 这是一个二次函数。用二次函数 L 2 ( x ) 近似
第5章 实四Lagrange插值多项式
第5章 实验四Lagrange 插值多项式实验目的:理解Lagrange 插值多项式的基本概念,熟悉Lagrange 插值多项式的公式及源代码,并能根据所给条件求出Lagrange 插值多项式,理解龙格现象。
5.1 Lagrange 插值多项式 Lagrange 插值多项式的表达式: 1,,2,1,)()()(,)()(1111+=--==∏∑+≠=+=n i x x x x x l x l y x L n ij j j i j i n i i i 。
其中)(x l i 被称为插值基函数,实际上是一个n 次多项式。
)(x l i 的这种表示具有较好的对称性。
公式具有两大优点:(1)求插值多项式,不需要求解线性方程组,当已知数据点较多时,此公式更能显示出优越性。
(2)函数值可以用符号形式表示,数据点未确定的纵坐标可用多项式表示。
5.2 Lagrange 插值多项式源代码I% 功能: 对一组数据做Lagrange 插值 % 调用格式:yi=Lagran_(x,y,xi) % x,y 数组形式的数据表 % xi:待计算y 值的横坐标数组 % yi 用Lagrange 插值算出的y 值数组 function fi=Lagran_(x,f,xi)fi=zeros(size(xi)); np1=length(f); for i=1:np1z=ones(size(xi)); for j=1:np1if i~=j,z=z.*(xi-x(j))/(x(i)-x(j));end endfi=fi+z*f(i); end return例5.1 已知4对数据(1.6,3.3),(2.7,1.22),(3.9,5.61),(5.6,2.94)。
写出这4个数据点的Lagrange 插值公式,并计算出横坐标xi=[2.101,4.234]时对应的纵坐标。
解:4个数据点的Lagrange 插值公式为:)9.36.1(*)7.26.5(*)6.16.5()9.3(*)7.2)(6.1(*94.2)6.59.3(*)7.29.3(*)6.19.3()6.5(*)7.2(*)6.1(*9.3)6.57.2(*)9.37.2(*)6.17.2()6.5(*)9.3(*)6.1(*22.4)6.56.1(*)9.36.1(*)7.26.1()6.5(*)9.3(*)7.2(*3.3)(3------+------+------+------=x x x x x x x x x x x x x L清单5.1 clearx=[1.6, 2.7, 3.9, 5.6]; y=[3.3, 1.22, 5.61, 2.94]; xi=[2.101,4.234]; yi=Lagran_(x,y,xi); xx=1.5:0.05:6.5; yy=Lagran_(x,y,xx); plot(xx,yy,x,y,'o')其结果为:yi =1.0596 6.6457xg (x ):-, d a t a p o i n t s :o图5.1 插值多项式曲线图5.3 Lagrange插值多项式源代码II% 输入:x是插值节点横坐标向量;y是插值节点对应纵坐标向量。
Lagrange插值多项式
Y=sin(X),
Matlap 中没有现成的 Lagrange 插值函数 Ln( x) yk lk ( x) ,所以先编写一个 M 文件实现 Lagrange 插值。 设 n 个节点数据以数组 x, y 输入, 输入我们想求的 x0, 就可获得结果 z。 以 y=sin(x)为例, 取[-pi, pi], 节点为 X=-pi:0.1:pi, Y=sin(X), 画出 Lagrange 插值多项式的图像和被插值函数的图像,观察两个函数的拟合程度。 三、 计算过程 (1) 实现 lagrange 插值多项式函数程序如下: function z=lagrange(x,y,x0) n=length(x); s=0; l=1; for i=1:n; for j=1:n if j~=i; l=l*(x0-x(j))/(x(i)-x(j)); end end s=s+l*y(i) end z=s; (2)m文件调用lagrange插值函数 x=-pi:0.1:pi;y=sin(x);plot(x,y,'r') hold on x0=-3:0.1:3; y1=[]; n=length(x0); for i=1:n z=lagrange(x,y,x0(i)); y1=[y1,z]; end
问题的分析涉及的理论知识与求解的方法等matlap中没有现成的lagrange插值函数所以先编写一个m文件实现lagrange个节点数据以数组xy输入输入我们想求的x0就可获得结果z
实验报告一
班级: 数学与应用数学
学号:
姓名:
成绩:
一、 实验问题 编写一个函数实现 Lagrange 插值多项式, 要求 (1)输入: 节点 X, 及节点上的函数值 Y, 某个数 x, 输出: 输出 x 对应的 Lagrange 插值多项式的值。 (2)以 y=sin(x)为例, 取[-pi, pi], 节点为 X=-pi:0.1:pi, 画出 Lagrange 插值多项式的图像和被插值函数的图像。 二、 问题的分析(涉及的理论知识与求解的方法等)
多项式插值_Lagrange插值
l1( x)
(x ( x1
x0 x0
)( )(
x x2) x1 x2 )
l2
(
x)
(x ( x2
x0 x0
)( )(
x x1 ) x2 x1 )
则有
l j ( xi
)
ij
1, 0,
i j i j
称 l0(x) , l1(x),l2(x)为二次插值多项式的基函数。
An
(
xn
x0 )(
xn
yn x1)( xn
xn1 )
将
A0
(
x0
x1 )(
x0
y0 x2 )(x0
xn )
A1
(
x1
x0
)(
x1
y1 x2
)(
x1
xn
)
代入下式:
,
An
(xn
x0
)(
xn
yn x1 )(
xn
xn1 )
Ln(x) A0(x x1)( x x2 )(x xn ) A1(x x0 )( x x2 )(x xn )
xi yi
x0 y0
x1 y1
求解 L1(x)=a1 x+a0
使得 f(x) ≈ L1(x), x ∈[x0 , x1].
根据点斜式得到
L1( x)
y0
y1 x1
y0 x0
(x
x0 )
Lagrange插值多项式
1
lk (x)
1
lk 1 ( x)
o
xk
xk 1
x
o
xk
xk 1
x
(2) n 2 :已知 f ( xk 1 ) yk 1 ,f ( xk ) yk ,f ( xk 1 ) yk 1 , 求L2 ( x) , L2 ( xi ) yi ,i k 1 ,k ,k 1 ; 即求过 ( xk 1 ,yk 1 ) ,( xk ,yk ) ,( xk 1 ,yk 1 ) 的抛物线; 考虑L2 ( x) lk 1 ( x) yk 1 lk ( x) yk lk 1 ( x) yk 1,其中li ( x) 为二次多项式,且满足: 1 ,i j li ( x j ) ij ,i ,j k 1 ,k ,k 1 ; 0 ,i j 易得:lk 1 ( x) A( x xk )( x xk 1 ) ,再由lk 1 ( xk 1 ) 1 ,
—六位有效
高度(m) 0 100 300 1000 1500 2000 . 压强 (kgf/m2) 0.9689 0.9322 0.8969 0.8515 0.7984 0.7485
试用二次插值法求1200米处的压强值.
解:设x为高度,y为大气压强的值, 选取(1000,0.8515) ,(1500,0.7984), (2000,0.7485)三点构造二次插 值多项式 (x-x1)(x-x2) (x-x0)(x-x2) (x-x0)(x- x1) p2(x)=------------------ y0 + --------------- y1 + --------------- y2 (x0-x1)(x0-x2) (x1-x0)(x1-x2) (x2-x0)(x2-x1) 代入已知的数值,得 p2(1200)=0.8515(1200-1500)(12002000)/(1000-1500)(1000-2000)+0.7984(1200-1000)(12002000)+0.7485(1200-1000)(1200-1500)/(2000-1000)(20001500)=300*800*0.8515/500/1000+200*800*0.7984/500/500200*300*0.7485/500/1000=0.82980 所以 y(1200) p2(1200)= 0.82980 (kgf/m2)
数值分析Lagrange插值多项式
其余的将M值及f2[x_]修改即可,得到插值函数修改分f3[x_]即可。
1 n+1 !
f
n+1
(εx )
n i=0(x
− xi )
其中 εx 为区间内一点
但 Lagrange 插值法没有承接性,可以进行改良。
【Lagrange 插值算法描述】 1. 对给定函数选取其区间上的一系列节点并计算其函数值,得到点列 (x0 , y0 ),…,( xn , yn ); 2. 通过上述点列构造 Lagrange 基函数li x = 出 Lagrange 插值函数Ln x =
【实验】 通过 Mathematica 编写程序得到如下结果: N=5: 1. 取xi = 5 −
10 N
i , i = 0,1, … ,N 得到:
(1) 插值点为:
(2) 由上述插值点构造出 Lagrange 插值函数:
(3)由题目所给出的条件计算误差得到:
插值函数与原函数的图像为:
其中蓝色为原函数图像,红色为插值函数图像,可以看出在 0 点误差最大,与 我们的计算结果相吻合。
n k=0 yk lk (x); n x −x i j=0 x −x i j j ≠i
,并由该基函数构造
3. 由多项式插值误差定理来估计其误差: f x −p x =
1 n+1 !
f
n+1
(εx )
n i=0(x
− xi )
其中 εx 为区间内一点
但此题有自己的估计误差的要求,则我们依照题意估计误差。
n x −x i j=0 x −x i j j ≠i
,
li x = δij
n k=0 yk lk (x)
来构造 Lagrange 插值多项式: Ln x =
拉格朗日(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) 为基础,就能直接写出满足插值条件
第5章 实四Lagrange插值多项式
第5章 实验四Lagrange 插值多项式实验目的:理解Lagrange 插值多项式的基本概念,熟悉Lagrange 插值多项式的公式及源代码,并能根据所给条件求出Lagrange 插值多项式,理解龙格现象。
5.1 Lagrange 插值多项式 Lagrange 插值多项式的表达式: 1,,2,1,)()()(,)()(1111+=--==∏∑+≠=+=n i x x x x x l x l y x L n ij j j i j i n i i i 。
其中)(x l i 被称为插值基函数,实际上是一个n 次多项式。
)(x l i 的这种表示具有较好的对称性。
公式具有两大优点:(1)求插值多项式,不需要求解线性方程组,当已知数据点较多时,此公式更能显示出优越性。
(2)函数值可以用符号形式表示,数据点未确定的纵坐标可用多项式表示。
5.2 Lagrange 插值多项式源代码I% 功能: 对一组数据做Lagrange 插值 % 调用格式:yi=Lagran_(x,y,xi) % x,y 数组形式的数据表 % xi:待计算y 值的横坐标数组 % yi 用Lagrange 插值算出的y 值数组 function fi=Lagran_(x,f,xi)fi=zeros(size(xi)); np1=length(f); for i=1:np1z=ones(size(xi)); for j=1:np1if i~=j,z=z.*(xi-x(j))/(x(i)-x(j));end endfi=fi+z*f(i); end return例5.1 已知4对数据(1.6,3.3),(2.7,1.22),(3.9,5.61),(5.6,2.94)。
写出这4个数据点的Lagrange 插值公式,并计算出横坐标xi=[2.101,4.234]时对应的纵坐标。
解:4个数据点的Lagrange 插值公式为:)9.36.1(*)7.26.5(*)6.16.5()9.3(*)7.2)(6.1(*94.2)6.59.3(*)7.29.3(*)6.19.3()6.5(*)7.2(*)6.1(*9.3)6.57.2(*)9.37.2(*)6.17.2()6.5(*)9.3(*)6.1(*22.4)6.56.1(*)9.36.1(*)7.26.1()6.5(*)9.3(*)7.2(*3.3)(3------+------+------+------=x x x x x x x x x x x x x L清单5.1 clearx=[1.6, 2.7, 3.9, 5.6]; y=[3.3, 1.22, 5.61, 2.94]; xi=[2.101,4.234]; yi=Lagran_(x,y,xi); xx=1.5:0.05:6.5; yy=Lagran_(x,y,xx); plot(xx,yy,x,y,'o')其结果为:yi =1.0596 6.6457xg (x ):-, d a t a p o i n t s :o图5.1 插值多项式曲线图5.3 Lagrange插值多项式源代码II% 输入:x是插值节点横坐标向量;y是插值节点对应纵坐标向量。
拉格曼公式
拉格朗日插值多项式(Lagrange Interpolation Polynomial)是一种用于在已知数据点之间进行插值的方法。
它可以用一个简单的公式表示如下:
假设有n+1个互不相同的数据点(x0, y0), (x1, y1), ..., (xn, yn),其中xi和yi分别是已知的数据点的横纵坐标。
那么拉格朗日插值多项式可以表示为:
L(x) = Σ(yi * li(x))
其中,i从0到n,li(x)是拉格朗日基础多项式(Lagrange basis polynomial),其表达式为:
li(x) = Π[(x - xj) / (xi - xj)], j ≠ i
在这个公式中,Σ表示求和运算,Π表示连乘运算。
这样得到的L(x)就是通过拉格朗日插值法得到的插值多项式。
需要注意的是,拉格朗日插值多项式在实际应用中可能会因为龙格现象(Runge's phenomenon)而导致插值结果出现震荡,因此在实际工程中可能会考虑其他插值方法或者对数据进行适当处理来减少这种影响。
Lagrange 插值多项式与Newton插值
专业序号姓名日期实验1Lagrange 插值多项式【实验目的】1.掌握用MATLAB计算拉格朗日插值方法,改变节点的数目,对插值结果进行初步分析;2.掌握用MATLAB的插值方法并通过实例学习用插值解决实际问题。
3. 观察Runge现象的演示。
【实验内容】Lagrange 插值多项式按照 P74 图4-4 的方法编 Lagrange 插值多项式function y = mylagpoly(X,Y,x)X,Y 采样点x 自变量(向量)y 多项式的函数值要特别注意大小写,x,y 和 t 都是向量【程序如下】:% exp4_2.m --- Runge现象的演示(内含 L 和 N 插值多项式)function try_Runge% 见 P84f = inline('1./(1+25*x.^2)'); % 定义函数n = 11;X = linspace(-1,1,n); % n 等分( n+1 个点),插值点横坐标Y = f(X); % 插值点纵坐标x = -1 : 0.01 : 1; % 加细 xy = mylagpoly(X,Y,x)plot(x,f(x),'r',X,Y,'o',x,y,'b')title('Runge现象') % 加标题legend('y=1/(1+25*x^2)','插值点 ','等分的10次插值多项式',0) % 加标签function y = mylagpoly(X,Y,x)n = length(X);y = zeros(size(x));for i = 1:nt=1;for j = 1:nif j ~= it = t.*((x-X(j))/(X(i)-X(j))); % 注意这里是点乘,字母与书上不同,此时t变成向量了endendy=y+ t.*Y(i);end【运行结果如下】:【结果分析】:拉格朗日插值实验通过离散的点来构造一个函数来逼近原来的函数,理论上应该是点越多,构造函数应该会越来越逼近原函数,但是却发生了Range现象,所以在利用拉格朗日插值法来构造函数来逼近原函数时,应该选择适当的点来逼近原函数,但即使如此,依然不能有效的避免Range现象。
Lagrange插值多项式
成 绩 评 定 表 类 别 评 分 标 准 积极出勤、遵守纪律 主动完成设计任务 比较规范、基本正确 功能达到实验要求 及时递交、填写规范 内容完整、体现收获 分值 30 分 30 分 40 分 得分 合 计
上机表现 程序代码 实验报告
计算机科学与工程学院
说明:
评阅教师:
日 期:
年
月
日
2
计算机科学与工程学院
已知函数 y=f(x)在若干点 xi 的函数值 y i = f xi (i=0,1, ,n) 一个差值问题就是 求一“简单”的函数 p(x):p( xi )= y i ,i=0,1, ,n, (1)
则 p(x)为 f(x)的插值函数,而 f(x)为被插值函数会插值原函数, x 0 , x1 , x 2 ,..., xn 为插值节点,式(1)为插值条件,如果对固定点 x 求 f( x )数值解,我们称 x 为一 个插值节点,f( x ) p( x )称为 x 点的插值,当 x [min( x 0 ,x1 ,x 2 ,..., xn ),max( x 0 ,
4
计算机科学与工程学院 cin>>x; y=lagrange(x,count); cout<<y<<endl; } else { cout<<"输入有误"<<endl; } }
测试用例:
线性插值内插
线性插值外插
5
计算机科学与工程学院
抛物线插值
实验总结:
由测试用例可知,一般来说,内插时插值收敛于实际函数,一旦超出内插的范围,插值函 数会发散,且离插值区间越远外推误差越大。使用不用的插值方法在同一点外推的值也会 相差很多,这说明外推本身就存在很大的不确定性。相对来说,线性插值内插比外插较为 准确, 抛物线插值比线性插值更为准确, 函数变化陡峭时节点增多可以增加插值的准确性。
拉格朗日插值多项式的原理介绍及其应用
拉格朗⽇插值多项式的原理介绍及其应⽤ 插值,不论在数学中的数值分析中,还是在我们实际⽣产⽣活中,都不难发现它的⾝影,⽐如造船业和飞机制造业中的三次样条曲线。
那么,什么是插值呢?我们可以先看⼀下插值的定义,如下: (定义)如果对于每个1≤i≤n,P(x i)=y i,则称函数y=P(x)插值数据点(x1,y1),...,(x n,y n). 插值的定义⽆疑是清楚明了的,⽽在众多的数学函数中,多项式⽆疑是最简单,最常见的函数,关于它的理论研究也最为透彻。
因此,我们可以不妨先考虑利⽤多项式来进⾏插值。
那么,这样的多项式是否总是存在呢?答案是肯定的,因为我们有如下定理: (多项式插值定理)令(x1,y1),...,(x n,y n)是平⾯中的n个点,各x i互不相同。
则有且仅有⼀个n−1次或者更低的多项式P满⾜P(x i)=y i,i=1,2,...,n. 证明:先⽤归纳法证明存在性,再证明唯⼀性。
当n=1时,常函数(0次)P1(x)=y1即符合要求。
假设当n−1时存在⼀个次数≤n−2的多项式P n−1,使得P n−1(x i)=y i,i=1,2,...,n−1.则令P n(x)=P n−1(x)+c(x−x1)(x−x2)...(x−x n−1)(x−x n),其中c为待定系数,利⽤P n(x n)=y n即可求出待定系数c.此时,P n(x i)=y i,i=1,2,...,n,且P n(x)的次数≤n−1.这样就证明了存在性。
其次证明唯⼀性。
假设存在两个这样的多项式,设为P(x)和Q(x),它们次数≤n−1且都插值经过n个点,即P(x i)=Q(x i)=y i,i=1,2,...,n.令H(x)=P(x)−Q(x),H的次数也≤n−1,且有n个不同的根x1,x2,...,x n.因此,由多项式基本定理可知,H(x)为0多项式,即恒等于0,故有P(x)=Q(x).这样就证明了存在性。
证毕。
拉格朗日多项式插值
拉格朗日多项式插值法浅析摘要拉格朗日插值多项式是一种最常见的多项式插值法,也是一种最常用的逼近工具。
“学以致用 ”是每一门学科都致力追求的境界,数学自然也不例外。
下面,探讨拉格朗日插值法的基本原理、如何构造拉格朗日多项式、拉格朗日多项式的误差界,并用 MATLAB 程序来实现这一数学算法的自动化,为复杂的分析研究提供了一条数学算法的捷径。
【关键词】:拉格朗日多项式 算法实现 MATLAB在科学研究和实际的工程设计中,几乎所有的问题都可以用)(x f y =来表示其某种内在规律的数量关系。
但理想化的函数关系在实际工程应用中是很难寻找 的,对于那些没有明显解析式的函数关系表达式则只能通过实验观察的数据,利用多项式对某一函数的进行逼近,使得这个逼近函数能够反映)(x f 的特性,而且利用多项式就可以简便的计算相应的函数值。
例如我们不知道气温随日期变化的具体函数关系,但是我们可以测量一些孤立的日期的气温值,并假定此气温随日期变化的函数满足某一多项式。
这样,利用已经测的数据,应用待定系数法便可以求得一个多项式函数f (x )。
应用此函数就可以计算或者说预测其他日期的气温值。
一般情况下,多项式的次数越多,需要的数据就越多,而预测也就越 准确。
当然,构造组合多项式方法比较多,如线性方程求解、拉格朗日系数多项式以及构造牛顿多项式的分段差分和系数表等等,这里只对拉格朗日多项式插值法进行深入探讨。
一、拉格朗日多项式插值算法基本原理函数)(x f y =在区间[a,b]上有定义,在是[ a,b]上取定的 N + 1个互异节点, 且在这些点处的函数值)(0x f , )(1x f ,…,)(n x f 为已知, 即 yi =f (xi ) , (N i ...1,0=),若存在一个和)(x f 近似的函数)(x P N ,满足)()(i i N x f x P = (N i ...1,0=) (1)则称 φ(x) 为 f (x) 的一个插值函数, 点i x 为插值节点,(1)称为插值条件, 区间[a,b]称为插值区间, 而误差函数)()(x P x f E N N -=称为插值余项。
拉格朗日(Lagrange)插值
18
x1 x2 利用 x0 = π , x1 = π L1 ( x ) = x π / 4 × 1 + x π / 6 × 1 6 4 π / 6 π / 4 2 π / 4 π / 6 2 π sin 50 0 ≈ L1 ( 5 ) ≈ 0.77614 这里 f ( x) = sin x , f (2) (ξ x ) = sinξ x , ξ x ∈(π , π ) 内插通常优于外插。 ) 18 内插通常优于外插。2选择 6 3 ( f (ξ x ) 而 1要计算的3x 所在的区间的x π )( x π ) , R1 ( x) = ( < sinξ x < 2 2 2! 6 4 端点,插值效果较好。 端点,插值效果较好。 sin 50° = 0.7660444… 0.01319 < R1 ( 5π ) < 0.00762 18
+1)
( n + 1) ! Nhomakorabeax
Rn ( x) =
(n + 1) !
∏( x x )
i i =0
注:
M n +1 n 作为误差估计上限。 将 ( n + 1)! ∏ | x x i | 作为误差估计上限。 i =0
通常不能确定 ξx , 而是估计
f ( n + 1 ) ( x ) ≤ M n + 1, x∈(a,b) ∈
这样求Lagrange插值多项式计算量大,不便于实际应用。 Lagrange插值多项式计算量大 注: 这样求Lagrange插值多项式计算量大,不便于实际应用。 过两点直线。 一次多项式插值 --- 过两点直线。 过三点抛物线。 二次多项式插值 --- 过三点抛物线。 则插值多项式不唯一 不唯一。 若不将多项式次数限制为 n ,则插值多项式不唯一。
拉格朗日(Lagrange)插值
( n 1) !
i0
( ( 1 0 (x Rolle’s f ( x ) Ln (若)至少个有 n+1根 ( x 0 ) Rnx)x )K ( x),则 xi ) R n ( x ) Theorem: x ( x ) 充分光滑, i 0 n 存在 ( x 0 , x 1 ) 使得 ( ) 0 。 任意固定 x xi (i = 0, 求导 考察 ( t ) Rn ( t ) K ( x ) ( t x i ) 注意这里是对 t …, n), 0 ( x 0 , x 1 ), 1 i ( 0 1 , x 2 ) x 推广:若 ( x 0 ) ( x 1 ) ( x 2 ) 0 (x)有 n+2 个不同的根x0) …0xn x ( , ( n) 1 ) ( x ) 0(, ) ( a , b ) x 0 使得 ( 0 ) ( 1 0 1 使得
于是 : L 2 ( x )
再利用 l 0 ( x 0 ) 1 C
1 ( x 0 x 1 )( x 0 x 2 )
( x x0 )( x x1 ) l2 ( x ) ( x2 x0 )( x2 x1 )
l ( x) y
i i0
2
i
l 0 ( x ) y 0 l1 ( x ) y1 l 2 ( x ) y 2
i0 n
[证明]上式的左端为插值基函数的线性组合,其组合 系数均为1。显然,函数f(x) 1在这n +1个节点取值 为1,即yi=f (xi) 1 (i=0,1,…,n), 它的n次Lagrange插值多项式为:
Ln ( x ) l i ( x ) y i l i ( x )
5次lagrange插值函数多项式
5次拉格朗日插值多项式函数%% 求取五次Lagrange多项式L5(x).clear;clc;X = [0.4 0.55 0.65 0.80 0.95 1.05];Y = [0.41075 0.57815 0.69675 0.90000 1.000000 1.25382]; % 求取插值基函数:L0_(x).syms xla_0 = 1;for ii = 2:length(X)if(ii == 1)continueelseL_0 = (x-X(ii))/(X(1)-X(ii));la_0 = la_0*L_0;endendL0_x = collect(la_0);% 求取插值基函数:L1_(x).la_1 = 1;for ii = 1:length(X)if (ii == 2)continueelseL_1 = (x-X(ii))/(X(2)-X(ii));la_1 = la_1*L_1;endendL1_x = collect(la_1);% 求取插值基函数:L2_(x).la_2 = 1;for ii = 1:length(X)if (ii == 3)continueelseL_2 = (x-X(ii))/(X(3)-X(ii));la_2 = la_2*L_2;endendL2_x = collect(la_2);% 求取插值基函数:L3_(x).la_3 = 1;for ii = 1:length(X)if (ii == 4)continueelseL_3 = (x-X(ii))/(X(4)-X(ii));la_3 = la_3*L_3;endendL3_x = collect(la_3);% 求取插值基函数:L4_(x).la_4 = 1;for ii = 1:length(X)if (ii == 5)continueelseL_4 = (x-X(ii))/(X(5)-X(ii));la_4 = la_4*L_4;endendL4_x = collect(la_4);% 求取插值基函数:L5(x).la_5 = 1;for ii = 1:length(X)if (ii == 6)continueelseL_5 = (x-X(ii))/(X(6)-X(ii));la_5 = la_5*L_5;endendL5_x = collect(la_5);% 求取五次Lagrange多项式函数.Lagrange5_x = eval(collect(L0_x*Y(1)+L1_x*Y(2)+L2_x*Y(3)+L3_x*Y(4)+L4_x*Y(5)+L5_x*Y(6 )))P = sym2poly(Lagrange5_x); % 得到五次Lagrange多项式函数的系数向量.K1 = polyval(P,0.596); % 进行多项式求值.fprintf('f(0.596)的值为:f(1.8) = %f\n',K1);K2 = polyval(P,0.99); % 进行多项式求值.fprintf('f(0.99)的值为:f(1.8) = %f\n',K1);% 绘制五次Lagrange多项式函数L5(x).for jj = 1:length(X)K = polyval(P,X(jj));YY(jj)=K;endplot(X,YY);title('\bf\it5次Lagrange插值函数曲线','FontName','黑体','FontSize',12); grid onxlabel('\itx轴','FontName','黑体','FontSize',12);ylabel('\ity轴','FontName','黑体','FontSize',12);。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
宁夏师范学院数学与计算机科学学院
《数值分析》实验报告
实验序号:1实验项目名称:Lagrange插值多项式
end
L(k,:)=V;
end
C=y*L
五、实验结果与数据处理
1.(1)清单:
>> clear
>> clf
>> x=[1,2,2.5];
>> y=x+2./x;
>> [C,L]=lagran(x,y);
C =
0.4000 -1.2000 3.8000
>> xx=[1.5,1.2];
>> yy=polyval(C,xx)
yy =
2.9000 2.9360
(2)清单
>> clear,clf
>> x=[0.5,1,3,5];
>> y=x+2./x;
>> [C,L]=lagran(x,y);
C =
-0.2667 2.5333 -6.3333 7.0667
>> xx=[1.5,1.2];
>> yy=polyval(C,xx)
yy =
2.3667 2.6539
2.
清单:
>> x=0:pi/16:pi/2;
>> y=x.*sin(x);
>> [C,L]=lagran(x,y);
C =
Columns 1 through 8
-0.0001 -0.0003 0.0089 -0.0005 -0.1663 -0.0001 1.0000 -0.0000
Column 9
>> xx=0:pi/16:pi/2;
>> yy=polyval(C,xx);
>> plot(xx,yy,'b',x,y,'.')
>> hold on
>> a=polyfit(x,y,4)
>> grid on
六、分析与讨论
通过本次的实验,我初步掌握了
综合运用专业及基础知识,解决实际数学问题的能力,运行过程中有几处错误,但照提示改过就出结果了。
七、教师评语。