Lagrange插值

合集下载

lagrange 共节点方法

lagrange 共节点方法

lagrange 共节点方法Lagrange插值是一种用于估计给定数据点集的未知函数的方法。

它的共节点方法是一种特定的Lagrange插值方法,它利用相同的节点来构造多个Lagrange插值多项式。

让我来详细解释一下。

首先,Lagrange插值的基本思想是使用一个多项式来通过给定的数据点。

假设我们有n+1个不同的数据点(x0, y0), (x1,y1), ..., (xn, yn),其中xi和yi分别是自变量和因变量的值。

Lagrange插值多项式L(x)可以通过以下公式计算得到:L(x) = Σ(yi li(x)), i=0 to n.其中li(x)是Lagrange基本多项式,它的表达式为:li(x) = Π(j=0 to n, j ≠ i) ((x xj) / (xi xj))。

这样,我们就可以得到通过这n+1个数据点的Lagrange插值多项式L(x)。

而共节点方法是Lagrange插值的一种特殊方法,它使用相同的节点来构造多个Lagrange插值多项式。

这意味着对于给定的n次Lagrange插值多项式,我们可以通过选择不同的插值节点来得到不同的插值多项式。

这种方法的优点是可以减少计算量,因为我们可以在不同的插值节点上重复使用已经计算好的Lagrange插值多项式。

然而,共节点方法也有一些局限性,因为它要求所有的插值多项式共享相同的插值节点,这可能会导致插值多项式之间的相互影响,从而影响插值的准确性。

因此,在使用共节点方法时,需要仔细考虑插值节点的选择,以确保插值多项式的准确性和稳定性。

总的来说,Lagrange插值的共节点方法是一种在选择相同插值节点的情况下构造多个Lagrange插值多项式的方法。

它在一定情况下可以减少计算量,但需要注意插值节点的选择以确保插值的准确性。

希望这个回答能够帮助你更好地理解Lagrange插值的共节点方法。

第一章 第一节 Lagrange插值公式.

第一章 第一节 Lagrange插值公式.

Rn
x

M n+1 n +1
max ! axb
n+1
x
Lagrange余项定理在理论上有重要价值,它刻画了 Lagrange插值的某些基本特征。
n
注1 余项中含有因子n+1 x x xi ,如果插值点x 偏离插 i0
值节点xi 比较远,插值效果可能不理想。如何选择节点xi ,
可以证明,插值问题1.1、1.2 的解是存在且唯一的。为了
得到 Lagrange 公式的一般形式,我们先从最简单的一次插 值入手。
二、线性插值
已知:
x
x0
x1
y
y0
y1
求一个一次多项式P1(x) ,使满足
P1(xi ) yi ,i 0,1.
即求过点 x0, y0 , x1, y1 的一次曲线
使
Rn x
f x Pn x
f n+1
n +
1!
n+1

x

1.9
记 M n+1

max
a xb
f n+1 x ,于是由1.9 式可得
或者
Rn
x

M n+1
n +1!
n+1 x

1.10
max axb
简单才行。如果仅仅给出了一系列节点上的函数值
f xi yi ,i 0,1, 2,L , n ,则应采用 Lagrange 插值。
如果只提供了 f x 的一些离散值,并没给出具体的分析式 子, 就无法利用公式1.9 估计误差了。下面介绍另一种误差

Lagrange 插值

Lagrange 插值

今天的上机作业1. Lagrange 插值给出()ln f x x 的数值表用Lagrange 插值计算ln 0.54的近似值。

2.Newton 插值用Newton 插值计算x=0.41的近似值。

3.插值法的全部内容把chap_2试验.doc 的全部内容作一边,粘在这个文件里(包括图形)答:grange 插值function f=lagrange_5(x) x0=[0.4,0.5,0.6,0.7,0.8];y0=[-0.916291,-0.693147,-0.510826,-0.356675,-0.223144]; L1=0;m=length(x0);n=length(y0);if m~=n, error('向量x 与y 的长度必须一致');end for i=1:nL=ones(1,length(x)); for j=1:n if j~=iL=L.*(x-x0(j))/(x0(i)-x0(j)); end endL1=L1+L*y0(i); end L1lagrange_5(0.54) L1 =-0.616142715200002.Newton插值function f=newton_li5(x) %x0为入的节点值,y0相应节点的函数值x0=[0.25 0.30 0.39 0.45 0.53];y0=[0.5000 0.5477 0.6245 0.6708 0.7280];n=length(x0)%syms xfor i=1:nf(i,1)=y0(i);endhx=f(1,1);xx=(1.0);for k=2:nfor i=k:nf(i,k)=(f(i,k-1)-f(i-1,k-1))/(x0(i)-x0(i-k+1)); %构造差商表endxx=xx*(x-x0(k-1));hx=hx+f(k,k)*xx; %计算函数的近似值end%f=expand(hx)Hxnewton(0.41)n =5hx =0.64030542443064ans =0.50000000000000 0 0 0 00.54770000000000 0.95400000000000 0 0 00.62450000000000 0.85333333333333 -0.71904761904761 0 00.67080000000000 0.77166666666666 -0.54444444444446 0.87301587301575 00.72800000000000 0.71500000000000 -0.40476190476189 0.60731538992422 -0.948930296755483.插值法的全部内容把chap_2试验.doc的全部内容作一边,粘在这个文件里(包括图形)P28 例22点插值function f=lagrange_2(x)x0=[0.32,0.34];y0=[0.314567,0.333487];L1=0;m=length(x0);n=length(y0);if m~=n, error('向量x与y的长度必须一致');endfor i=1:nL=ones(1,length(x));for j=1:nif j~=iL=L.*(x-x0(j))/(x0(i)-x0(j));endendL1=L1+L*y0(i);endL1lagrange_2(0.3367)L1 =0.330365200000003点插值function f=lagrange_3(x)x0=[0.32,0.34,0.36];y0=[0.314567,0.333487,0.352274];L1=0;m=length(x0);n=length(y0);if m~=n, error('向量x与y的长度必须一致');endfor i=1:nL=ones(1,length(x));for j=1:nif j~=iL=L.*(x-x0(j))/(x0(i)-x0(j));endendL1=L1+L*y0(i);endL1lagrange_3(0.3367)L1 =0.33037436203750Lagrange插值法%eg1_lagr.mclear;clf;xx=linspace(-5,5,50); y=sin(xx); %作被插函数的图象disp('n x=4.5处的插值绝对误差的绝对值')x1=linspace(-5,5,3); y1=sin(x1); yy1=lagr1(x1,y1,xx); %2次插值chazhi_y45_2=lagr1(x1,y1,4.5);gd_wucha_limit_y45_2=abs(chazhi_y45_2-sin(4.5));disp(sprintf('%d %15.4f %15.4f',2,chazhi_y45_2,gd_wucha_limit_y45_2))x2=linspace(-5,5,5); y2=sin(x2); yy2=lagr1(x2,y2,xx); %4次插值chazhi_y45_4=lagr1(x2,y2,4.5);gd_wucha_limit_y45_4=abs(chazhi_y45_4-sin(4.5));disp(sprintf('%d %15.4f %15.4f',4,chazhi_y45_4,gd_wucha_limit_y45_4))x3=linspace(-5,5,9); y3=sin(x3); yy3=lagr1(x3,y3,xx); %8次插值chazhi_y45_8=lagr1(x3,y3,4.5);gd_wucha_limit_y45_8=abs(chazhi_y45_8-sin(4.5));disp(sprintf('%d %15.4f %15.4f',8,chazhi_y45_8,gd_wucha_limit_y45_8))plot(xx,y,'m-');hold on,pause,plot(x1,y1,'rs',xx,yy1,'r-'); hold on,pause,plot(x2,y2,'b*',xx,yy2,'b-'); hold on,pause,plot(x3,y3,'ko',xx,yy3,'k-'); hold on计算函数值function f=newton_li4(x) %x0为入的节点值,y0相应节点的函数值x0=[0.40,0.55,0.65,0.80,0.90,1.05];y0=[0.41075,0.57815,0.69675,0.88811,1.02652,1.25382];n=length(x0)%syms xfor i=1:nf(i,1)=y0(i);endhx=f(1,1);xx=(1.0);for k=2:nfor i=k:nf(i,k)=(f(i,k-1)-f(i-1,k-1))/(x0(i)-x0(i-k+1)); %构造差商表endxx=xx*(x-x0(k-1));hx=hx+f(k,k)*xx; %计算函数的近似值end%f=expand(hx)hxnewton(0.596)n =5hx =0.77193768707246ans =0.50000000000000 0 0 0 00.54770000000000 0.95400000000000 0 0 00.62450000000000 0.85333333333333 -0.71904761904761 0 00.67080000000000 0.77166666666666 -0.54444444444446 0.87301587301575 00.72800000000000 0.71500000000000 -0.40476190476189 0.60731538992422 -0.94893029675548Newton插值法%eg1_newton.mclear;clf;xx=linspace(-5,5,50); y=sin(xx); %作被插函数的图象disp('n x=4.5处的插值绝对误差的绝对值')x1=linspace(-5,5,3); y1=sin(x1); yy1=newton1(x1,y1,xx,2); %2次插值chazhi_y45_2=newton1(x1,y1,4.5,2);gd_wucha_limit_y45_2=abs(chazhi_y45_2-sin(4.5));disp(sprintf('%d %15.4f %15.4f',2,chazhi_y45_2,gd_wucha_limit_y45_2))x2=linspace(-5,5,5); y2=sin(x2); yy2=newton1(x2,y2,xx,4); %4次插值chazhi_y45_4=newton1(x2,y2,4.5,4);gd_wucha_limit_y45_4=abs(chazhi_y45_4-sin(4.5));disp(sprintf('%d %15.4f %15.4f',4,chazhi_y45_4,gd_wucha_limit_y45_4))x3=linspace(-5,5,9); y3=sin(x3); yy3=newton1(x3,y3,xx,8); %8次插值chazhi_y45_8=newton1(x3,y3,4.5,8);gd_wucha_limit_y45_8=abs(chazhi_y45_8-sin(4.5));disp(sprintf('%d %15.4f %15.4f',8,chazhi_y45_8,gd_wucha_limit_y45_8))plot(xx,y,'m-');hold on,pause,plot(x1,y1,'rs',xx,yy1,'r-'); hold on,pause,plot(x2,y2,'b*',xx,yy2,'b-'); hold on,pause,plot(x3,y3,'ko',xx,yy3,'k-'); hold on。

拉格朗日(Lagrange)插值

拉格朗日(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) 为基础,就能直接写出满足插值条件

lagrange插值的原理

lagrange插值的原理

lagrange插值的原理
Lagrange插值是一种数值分析方法,用于在已知一些点上的函数值的情况下,通过一个多项式来近似这个函数。

其基本原理如下:
1. 首先,根据给定的插值节点和函数值,构造一个n次多项式。

2. 利用插值基函数的概念,构造n次Lagrange插值多项式。

插值基函数是n个线性无关的n次多项式,它们在插值节点上的值等于相应的函数值。

3. 通过插值基函数,构建一个关于待求点x的n次多项式。

待求点的近似值可以通过求解这个多项式在x处的值来得到。

Lagrange插值的优势在于,它可以根据给定的插值节点和函数值精确地构造出一个多项式,从而在插值节点附近实现较高的近似精度。

然而,Lagrange插值也存在一定的局限性,例如在插值节点外的预测精度可能会降低,而且计算复杂度较高。

需要注意的是,Lagrange插值不仅适用于一元函数的插值,还适用于多元函数的插值。

在实际应用中,Lagrange插值被广泛应用于数学、物理、工程等领域的问题求解。

拉格朗日(Lagrange)插值算法

拉格朗日(Lagrange)插值算法

拉格朗⽇(Lagrange)插值算法拉格朗⽇插值(Lagrange interpolation)是⼀种多项式插值⽅法,指插值条件中不出现被插函数导数值,过n+1个样点,满⾜如下图的插值条件的多项式。

也叫做拉格朗⽇公式。

这⾥以拉格朗⽇3次插值为例,利⽤C++进⾏实现:1//利⽤lagrange插值公式2 #include<iostream>3using namespace std;45double Lx(int i,double x,double* Arr)6 {7double fenzi=1,fenmu=1;8for (int k=0;k<4;k++)9 {10if (k==i)11continue;12 fenzi*=x-Arr[k];13 fenmu*=Arr[i]-Arr[k];14 }15return fenzi/fenmu;16 }1718int main()19 {20double xArr[4]={};21double yArr[4]={};22//输⼊4个节点坐标23 cout<<"请依次输⼊4个节点的坐标:"<<endl;24for (int i=0;i<4;i++)25 cin>>xArr[i]>>yArr[i];2627//输⼊要求解的节点的横坐标28 cout<<"请输⼊要求解的节点的横坐标:";29double x;30 cin>>x;31double y=0;32for (int i=0;i<4;i++)33 y+=Lx(i,x,xArr)*yArr[i];34 printf("x=%lf时,y=%lf\n",x,y);3536//分界,下⾯为已知y求x37 cout<<"请输⼊要求解的节点的纵坐标:";38 cin>>y;39 x=0;40for (int i=0;i<4;i++)41 x+=Lx(i,y,yArr)*xArr[i];42 printf("y=%lf时,x=%lf\n",y,x);4344 system("pause");45return0;46 }作者:耑新新,发布于转载请注明出处,欢迎邮件交流:zhuanxinxin@。

多项式插值_Lagrange插值

多项式插值_Lagrange插值

φ(xk)=f(xk)=yk , k=0,1, … ,n
(2)
这时称 y=f(x)为被插值函数, φ(x) 称为插值函数, xk 称 为插值节点,式(2)称为插值条件,寻求插值函数φ(x) 的方法称为插值方法.
二、多项式插值问题
在构造插值函数时,函数类的不同选取, 对应着 各种不同的插值方法,这里主要研究函数类P是代数 多项式,即所谓的多项式插值问题。
多项式插值,从几何角度看,就是寻求n次代数曲 线 y=pn(x) 通过n+1个点(xk , yk) (k=0,1,…,n)作为 f(x) 的 近似(如下图).
y pn( x)
y f (x)
设 pn(x)=a0+ a1x+…+an xn ,当满足如下的插值条件 时,即
pn(xk) = f(xk) = yk , k = 0,1, … ,n
f(x) ≈ L1(x)=y0l0(x)+y1 l1(x)
二、抛物线插值(n=2)
已知
xi x0 x1 x2 yi y0 y1 y2
求解 L2(x)=a2x2+a1 x+a0
使得 f(x) ≈ L2(x), x ∈[x0 , x2].
关于二次多项式的构造采用如下方法:令
L2(x)=A(x-x1)(x-x2)+B(x-x0)(x-x2)+C(x-x0)(x-x1)
插值问题
§1 多项式插值问题 §2 Lagrange插值多项式
§1 多项式插值问题
一、插值问题
设函数 y=f(x)在区间[a,b]连续, 给定n+1个点
a≤ x0 < x1 < … < xn≤b
(1)
已知 f(xk)=yk (k=0,1,…,n) ,在函数类中寻找一函数φ(x) 作为 f(x) 的近似表达式,使满足

拉格朗日(Lagrange)插值

拉格朗日(Lagrange)插值
x) 每个 li 有 n 个根 x0 … xi … xn, 是n次多项式。
li ( x) = Ci ( x x0 )...(x xi )...(x xn ) = Ci ( x x j ) ji j =0 1 li ( xi ) = 1 Ci = j i ( xi xj )
l ( x) y
i =0 i
1
i
l0(x)
l1(x)
称为拉格朗日插值基函数 , 满足条件 li(xj)=ij /* Kronecker Delta */
n1
希望找到li(x),i = 0, …, n 使得 li(xj)=ij ;然后令
Pn ( x ) =
l (x) y
i=0 i
n
i
,则显然有Pn(xi) = yi 。
§4.2 拉格朗日(Lagrange)插值
n 求 n 次多项式 Pn ( x) = a0 a1 x an x 使得
Pn ( x i ) = y i ,
i = 0 , ... , n
条件:无重合节点,即 i j
xi x j
一. 插值多项式的存在唯一性 定理4.2.1 : 在 n 1 个互异节点 xk 处满足插值条件 Pn ( xk ) = yk
n
f
( n 1)
( n 1 ) ( x0 ) = = ( xn ) = 0( n 1 ) ( x ) Ln ( x ) K ( x )( n 1) ! = Rn ( x ) K ( x ) ( n 1) ! ( n) 存在 (a, b) 使得 ( ) = 0 ( n 1 ) n ( n 1 ) f ( ) x f ( x) Rn ( x ) = ( x xi ) = K ( x) (n 1) ! i =0 ( n 1) !

拉格朗日(Lagrange)插值

拉格朗日(Lagrange)插值
x0
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 ,则插值多项式不唯一。

6-1 lagrange插值

6-1 lagrange插值

其中a=(x0-x1)(x0-x2)
b=(x1-x0)(x1-x2) c=(x2-x0)(x2-x1)
3.三点二次插值多项式为:
总结:三点二次插值就是用过三点(x0,y0)、 (x1,y1)、(x2,y2)的抛物线来近似曲线y=f(x), 因此也称三点二次插值为抛物线插值。
3. 4点3次插值
3. 5点4次插值如何写?
二、Hermite (埃尔米特)插值
特点:不但节点处值相同,一阶导数也相同。 Hermite 插值多项式为: n
H(x)= ∑{[1-2(x-xi)*li’(xi)]*li2(x)*yi+(x-xi)*li2(x) *y’i} i=0
用hi(x)表示1-2(x-xi)*li’(xi)]*li2(x) 用ki(x)表示(x-xi)*li2 (x) 当n=1时,即两个节点x0、x1 Hermite 插值多项式为(分 段三次插值法):
x0-x1
x0-x1
将a0和a1的值带到插值多项中得到:
2点1次插值也叫线性插值。
4x)=a0+a1x+a2x2 , 满足: a0+a1x0+a2x02=y0 a0+a1x1+a2x12=y1
a0+a1x2+a2x22=y2
a0=x1x2y0/a+x0x2y1/b+x0x1y2/c a1=-(x1+x2)y0/a-(x0+x2)y1/b-(x0+x1)y2/c a2=y0/a+y1/b+y2/c
得 到 : H3(x)=2(1+2(x-1)(x-2)2+3(1-2(x-2))(x-1)2-(x-2)(x-1) 2=-3x3+13x2-17x+9 当x=1.5时函数值为:2.625 当x=1.7时函数值为:2.931

《Lagrange插值》课件

《Lagrange插值》课件

更高效的插值算法介绍
简要介绍一些比Lagrange插 值更高效、更精确的插值算 法,并对其特点进行分析。
总结与展望
总结Lagrange插值的优点和应用前景,探讨该方法的未来发展方向和可能的扩展领域。
参考文献
相关文献推荐
介绍与Lagrange插值相关的优秀文献,供进一步学习和研究之用。
研究领域的进展
分享Lagrange插值在相关研究领域中的最新进展和重要成果。
相关专家学者的成果分享
介绍在Lagrange插值领域取得杰出成就的专家学者及其成果。
《Lagrange插值》PPT课 件
本PPT课件介绍Lagrange插值的概述、数学表达式、实例分析、算法优劣比 较、总结与展望。将深入剖析LaHale Waihona Puke range插值的基本思想和应用前景。
概述
什么是Lagrange插值?为什么使用Lagrange插值?Lagrange插值的基本思想 是什么?这一部分将首先解答这些问题。
数学表达式
Lagrange插值公式的推导、值多项式的计算、以及Lagrange插值多项式的刻 画在这一部分将一一介绍。
实例分析
一元实例
通过一个一元Lagrange插 值实例来深入理解这种方 法的应用和原理。
多元实例
探索多元Lagrange插值的 实例,揭示其在实际问题 中的应用和效果。
应用案例分析
通过具体案例分析,揭示 Lagrange插值方法解决实 际问题的能力和局限性。
算法优劣比较
与牛顿插值的比较
对比Lagrange插值与牛顿插 值方法的优劣,以及它们在 不同情景下的适用性。
Lagrange插值算法的优 缺点
评估Lagrange插值方法的优 点与缺点,探讨其在不同场 景下的性能和限制。

拉格朗日(Lagrange)插值

拉格朗日(Lagrange)插值
n
( 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 )

第4章 Lagrange插值

第4章 Lagrange插值
n
x xi i 0 x j xi
i j

l j (x j ) 1 l j ( xi ) 0 i j
显然 l j ( x ) 满足{
Lagrange插值函数Ln(x)
定理 4.2 在[a、b]上有
2 n
span 1, x, x , , x span l0 ( x), l1 ( x), l2 ( x), , ln ( x)
这只是一张函数表;有的函数虽然有解析表达式,但由于计 算复杂,使用不方便,通常也构造一个函数表。如三角函数表、 对数表、平方根表、立方根表等等。
引言
科学实验得到数据: i , yi ) (x yi f ( xi ) (i 0,1,2,..., n), 它反映客观存在的函数y f ( x)在这些点的情况: (i 0,1,..., n) (i 0,1,2,..., n)。 但f ( x)时未知的。因此就想寻找函数 ( x ) f ( x ) 且保持 ( xi ) f ( xi ) yi 的插值函数。 称xi为节点, ( x)为f ( x)关于节点xi (i 0,1,2,..., n)
o i 0 i j n
2o v v l j y j ; 4) 输出 : u, v。
4.3 误差估计
定理 4.3 设函数 f ( x) C n [a, b] , f ( n1) ( x) 在开区间 (a,b)内存在,则 Lagrange 插值多项式 Ln( x) 的余式有如下估 计式
第4章 函数逼近的插值法 与曲线拟和法
引言
许多实际问题都用函数y f (x)来表示某种内在规律的数量
关系,其中相当一部分函数是通过实验或观测得到的.虽然 f (x)
在某个区间[a,b]上是存在的,有的还是连续的,但却只能 给出[a,b]上一系列点 xi的函数值yi f ( xi )

数值分析实验四(Lagrange插值)

数值分析实验四(Lagrange插值)

《数值分析》实验报告实验编号:实验四课题名称:Lagrange插值一、算法介绍对Lagrange型的n次插值多项式,先构造n+1个插值节点x[0],x[1],…,x[n]上的n次插值基函数对任一点xi所对应的插值基函数l[i](x)=[(x-x[0])…(x-x[i-1])(x-x[i+1])…(x-x[n])]/[(x[i]-x[0])…(x[i]-x[i-1])(x[i]-x[i+1 ])…(x[i]-x[n])],其中i=0,1,2,…,n。

有了这n+1个n次插值基函数,n次Lagrange 型插值多项式就容易写出来了,表达式为:f(x)=y[1]*l[1](x)+y[2]*l[2](x)+…+y[n]*l[n](x)。

此程序中n=10。

二、程序代码// testView.cpp : implementation of the CTestView class//#include "stdafx.h"#include "test.h"#include "testDoc.h"#include "testView.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif/////////////////////////////////////////////////////////////////////////////// CTestViewIMPLEMENT_DYNCREATE(CTestView, CView)BEGIN_MESSAGE_MAP(CTestView, CView)//{{AFX_MSG_MAP(CTestView)// NOTE - the ClassWizard will add and remove mapping macros here.// DO NOT EDIT what you see in these blocks of generated code!//}}AFX_MSG_MAP// Standard printing commandsON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)END_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////// CTestView construction/destructionCTestView::CTestView(){// TODO: add construction code here}CTestView::~CTestView(){}BOOL CTestView::PreCreateWindow(CREATESTRUCT& cs){// TODO: Modify the Window class or styles here by modifying // the CREATESTRUCT csreturn CView::PreCreateWindow(cs);}/////////////////////////////////////////////////////////////////////////////// CTestView drawingvoid CTestView::OnDraw(CDC* pDC){CTestDoc* pDoc = GetDocument();ASSERT_V ALID(pDoc);// TODO: add draw code for native data hereint i,j,k;double x,y,p_x,p_y,l,xx[100],f[100],F[100],sum,p_sum;CPen MyPen,*OldPen;pDC->SetViewportOrg(400,400); //定义坐标原点for(i=-500;i<500;i++){pDC->SetPixel(0,i,RGB(0,0,0));pDC->SetPixel(i,0,RGB(0,0,0)); //画出坐标}pDC->TextOut(-210,5,"-1");pDC->TextOut(196,5,"1");//原函数MyPen.CreatePen(PS_SOLID,1,RGB(255,0,0));//定义画笔颜色OldPen=pDC->SelectObject(&MyPen);x=-1.0,y=1/(1+25*x*x);p_x=x*200;p_y=-y*200;pDC->MoveTo(p_x,p_y);for (x=-1.0;x<=1.0;x+=0.0001){y=1/(1+25*x*x);p_x=x*200;p_y=-y*200;pDC->LineTo(p_x,p_y);}pDC->SelectObject(OldPen);MyPen.DeleteObject();//Lagrange插值x=-1.0;MyPen.CreatePen(PS_SOLID,1,RGB(0,255,0));OldPen=pDC->SelectObject(&MyPen);for(i=0;i<=10;i++){f[i]=1/(1+25*x*x);xx[i]=x;x+=0.2;}x=-1.0;y=1/(1+25*x*x);p_x=x*200,p_y=-y*200; //将x和y坐标各放大200倍pDC->MoveTo(p_x,p_y);for(k=0;k<=1000;k++){sum=0;for(i=0;i<=10;i++){l=1;for(j=0;j<=10;j++){if(i!=j)l=l*(x-xx[j])/(xx[i]-xx[j]);}sum+=f[i]*l;}p_x=x*200;p_y=-sum*200;pDC->LineTo(p_x,p_y);x+=0.002;}pDC->SelectObject(OldPen);MyPen.DeleteObject();}/////////////////////////////////////////////////////////////////////////////// CTestView printingBOOL CTestView::OnPreparePrinting(CPrintInfo* pInfo){// default preparationreturn DoPreparePrinting(pInfo);}void CTestView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/){// TODO: add extra initialization before printing}void CTestView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/){// TODO: add cleanup after printing}/////////////////////////////////////////////////////////////////////////////// CTestView diagnostics#ifdef _DEBUGvoid CTestView::AssertValid() const{CView::AssertValid();}void CTestView::Dump(CDumpContext& dc) const{CView::Dump(dc);}CTestDoc* CTestView::GetDocument() // non-debug version is inline{ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CTestDoc)));return (CTestDoc*)m_pDocument;}#endif //_DEBUG/////////////////////////////////////////////////////////////////////////////// CTestView message handlers三、运算结果截屏红色的曲线为原函数图像,绿色曲线为Lagerange插值多项式函数对应的图像四、算法分析上述图像中绿色的曲线为Lagrange插值多项式所对应的图像,通过观察可见函数图像在靠近区间端点的地方出现了Runge现象。

lagrange插值法

lagrange插值法

lagrange 插值法实验基本原理: lagrange 插值法是用来解决离散点的插值问题。

若给定两个插值点),(),,(1100y x y x 其10x x ≠,在公式中取1=n ,则La g r a n g e 插值多项式为:)()()()()()(001010010110101x x x x y y y x x x x y x x x x y x p ---+=--+--=是经过),(),,(1100y x y x 的一条直线,故此法称为线性插值法。

2、若函数给定三个插值点 2,1,0),,(=i y x i i ,,其中i x 互不相等,在公式中取1=n ,则Lagrange 插值多项式为: ))(())(())(())(())(())(()(1202102210120120102102x 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 p ----+----+----=是一个二次函数,若2,1,0),,(=i y x i i 三点不在一条直线上,则该曲线是一条抛物线,这种插值法称为二次插值或抛物插值。

为了解决这个问题,我们为此构造了这个矩阵⎪⎪⎪⎪⎪⎪⎪⎪⎪⎭⎫ ⎝⎛----+---.........))(())(()())((12010212010212010x x x x x x x x x x x x x x x x 就可以找到相应系数。

实验结果分析:在应用拉格朗日插值法时应注意以下几个问题:1、在能获得原始资料时应尽量获取原始资料, 不能盲目地用组数据代入公式来估计未知数据。

2、在利用拉格朗日多项式进行插值估计时, 要求所研究范围的值的变化不受特殊或偶照因素的影响, 即的值是在正常条件下的。

3、如果有两组值(i x ,iy ),(j x ,j y ) 的i x =j x ;则这两组值只能取一组代入多项式计算, 否则便会出现 i y 与j y 的项分母为零的情况这种情况对于这种情况, 用哪组值代入多项式估计更好, 往往不易确定。

数学基础课里的lagrange插值公式

数学基础课里的lagrange插值公式

数学基础课里的lagrange插值公式lagrange插值公式:
1. Lagrange插值法是一种经典的插值方法,在数学和工程领域里都是一种常用的数值算法,也可以用来求解一元函数的极值点。

它实际上是对有n个数据点(比如:xi,yi)的函数f ( x) 进行拟合,形成n-1阶有理曲线,使得拟合曲线经过这些数据点。

2. Lagrange插值公式的可求性:在n个点的插值中,已知n个数据点(xi,yi),求使拟合曲线恰
好经过n个点的系数 ak 的问题。

3. Lagrange 插值公式:向量f (x) 和向量自变量x 可定义如下:f (x) = (f1 (x),f2 (x),…,fn-1 (x),fn (x));xi = (x1,x2,…,xn),那么有f (x) = Σ
j=1 n Lj(x).fj (*j = 1, 2,…, n*)
(其中Lj (x) 为Lagrangebasis 的基函数,可定义为:Lj (x) =Π(x/xj, i !=j))
4. Lagrange 插值公式的优点:
(1) Lagrange插值法简单易懂,实现简单;
(2) Lagrange插值法的拟合精度高;
(3) Lagrange插值法的拟合速度也是很快的,适用
性强。

5. Lagrange 插值公式的缺点:
(1) Lagrange插值法拟合数据点多时,计算量大;
(2) Lagrange插值法只适用于有n个数据点的插值,不能求解多元插值。

Lagrange插值

Lagrange插值

Rolle’s Theorem的推论: 若 ( x)充分光滑,且
(x0)(xn)0 存在 (a,b)使得 (n)()0
a
16
证明 由于Rn(xi) =0 ,i=0,1,…,n
记为Ln(x)= f(xj)lj(x)
a
15
二、插值余项 /* Remainder */
定理1 若 f (n1) (x) 在[a , b]内存在, 则在[a , b]上
的n+1个互异的点,对 f(x)所作的n次Lagrange插
值多项式Ln (x) 有误差估计
R n(x)f(x)Ln(x)f(n (n 1)1 ()!)i n0(xxi)
a
8
通过解上述方程组求得插值多项式pn(x)的方 法并不可取。 这是因为当n较大时解方程组的计 算量较大,而且方程组系数矩阵的条件数一般 较大(可能是病态方程组), 当阶数n越高时, 病态越重。
为此我们必须从其它途 径来求 pn(x): 不通过求解方程组而获 得插值多项式。
a
9
三、插值多项式的构造方法
求 n 次多项式 P n (x ) a 0 a 1x a n x n使得
P n(xi)yi,i0,1 ,L,n
n = 1 已知 x0 , x1 ; y0 , y1 ,求
P1(x)a0a1x使 得 P 1 (x 0 ) y 0 ,P 1 (x 1 ) y 1
可见 P1(x) 是过 ( x0 , y0 ) 和 ( x1, y1 ) 两点的直线。
n x
x
i
x x i0 j
i
ij
j =0,1,…,n
知识点二
这里每个lj(x)都是n次多项式,且容易验证lj(x)满 足
lj (xi) 10,,
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

10
线性插值函数
f(x)
(x0 ,y0) (x1,y1) ,
P1(x)
x0
x1
可见
是过

两点的直线。 两点的直线。
11
抛物插值函数
p2(x) ≈ f(x)
f(x)
x0
x1
x2
因过三点的二次曲线为抛物线,故称为抛物插值。 因过三点的二次曲线为抛物线,故称为抛物插值。
12
N次插值函数
b]上对给定 1个不同结点 个不同结点: 设连续函数 y = f ( x ) 在[a, b]上对给定n + 1个不同结点: 分别取函数值 其中 试构造一个次数不超过n的插值多项式
n n
27
N次插值多项式7 次插值多项式7
n 设节点 a ≤ x0 < x1 < < xn ≤ b ,且 f 满足条件 f ∈C [a, b] ,
内存在, 内存在 f ( n + 1 )在[a , b]内存在 考察截断误差
Rn (x) = f (x) Ln (x)
罗尔定理 : 若 ( x ) 在[x0 ,
线性插值基函数 l0 ( x), l1 ( x) 满足下述条件
xi
l0 ( x) l1 ( x)
x0
1 0
x1
0 1
并且他们都是一次函数。 并且他们都是一次函数。 注意他们的特点对下面的推广很重要
18
一次Lagrange插值多项式(6) 一次Lagrange插值多项式(6)
我们称 l0 ( x ) 为点 x0 的一次插值基函数,( x ) 为点 的一次插值基函数, l1
P ( x) = a0 + a1x + a2 x2 ++ an xn n
使 P (x) 满足条件 n
P (xi ) = yi , i = 0, 1,, n n
f ( x)称 被 函 , pn ( x)称 值 项 , 条 (3 3)称 值 件 为 插 数 插 多 式 件 插 条 , x0, x1,, xn称 值 点 这 求 数 似 的 法 为 值 插 节 种 函 近 式 方 称 插 法 几 上 其 质 用 过 +1个 ( x1, y1)(i = 0,1,, n)的 项 曲 何 , 实 是 通 n 点 多 式 线 = pn ( x),当 曲 y = f ( x)的 似 线 图 示 y 作 线 近 曲 .如 所
xi l0 ( x) l1 ( x) x0 x1 x2
xn
1 0
0 1
0 0
0 0
ln ( x)
0
0
0
1
24
N次插值多项式4 次插值多项式4
求n次多项式
lk ( x ) , k
1,…, = 0, 1, , n
1, lk ( xi ) = 0,

n
k=i k≠i
i = 0, 1, 2,…, n
第二讲 Lagrange插值 Lagrange插值
1
主要知识点
插值的基本概念,插值多项式的存在唯一性; 插值的基本概念,插值多项式的存在唯一性; Lagrange插值(含线性插值、抛物插值、n次 Lagrange插值(含线性插值、抛物插值、 插值 Lagrange插值公式); Lagrange插值公式); 插值公式 插值余项; 插值余项; 插值方法:(1)解方程组、(2)基函数法。 插值方法:(1 解方程组、(2 基函数法。 :( 、(
p 求多项式 y = p1 ( x ),使 p1 ( x0 ) = y0,1 ( x1 ) = y1。其几何意
的一条直线, 义,就是通过两点 A( x0 , y0 ), B( x1 , y1 ) 的一条直线, 如图所示。 如图所示。
14
一次Lagrange插值多项式(2) 插值多项式(2)
一次插值多项式
Pn ( xi ) = ∑ yk l k ( xi ) = yi
k =1
即 pn ( x ) 满足插值条件 的表达式, 的根, 根据 lk ( x ) 的表达式,xk 以外所有的结点都是 lk ( x ) 的根,
25
N次插值多项式5 次插值多项式5
因此令
lk ( x) = λ ( x x0 )( x x1 ) ( x xk 1 )( x xk +1 ) ( x xn )
2
插值问题描述
设已知某个函数关系 y = f ( x) 在某些离散点上的 函数值: 函数值:
x x0 x1 y y0 y1
xn 1 xn yn 1 yn
插值问题:根据这些已知数据来构造函数 插值问题: y = f ( x) 的一种简单的近似表达式,以便于计算 的一种简单的近似表达式, 点 x ≠ xi , i = 0,1,, n 的函数值 f ( x) ,或计算函数 的一阶、二阶导数值。 的一阶、二阶导数值。
21
其中
N次插值函数1 次插值函数1
我们看到,两个插值点可求出一次插值多项 式 式 , 而三个插值点可求出二次插值多项 当插值点增加到n+1个时 , 我们可以利 个时, 。 当插值点增加到 个时 ,
插值方法写出n次插值多项式 用 Lagrange插值方法写出 次插值多项式 插值方法写出 如下所示: 如下所示:
P2 ( x) = y0l0 ( x) + y1l1 ( x) + y2l2 ( x)
( x x0 )( x x2 ) ( x x1 )( x x2 ) l0 ( x) = l1 ( x) = ( x0 x1 )( x0 x2 ) ( x1 x0 )( x1 x2 ) ( x x0 )( x x1 ) l2 ( x ) = ( x2 x0 )( x2 x1 )
9
个节点
个等式, n+1个等式,得到一个
关于多项式里系数的线性方程组,解此线性方程组, 关于多项式里系数的线性方程组,解此线性方程组,便得
拉格朗日插值公式
拉格朗日(Lagrange)插值公式的基本思想是, 拉格朗日 ( Lagrange ) 插值公式的基本思想是 , n+1 把 pn(x) 的 构 造 问 题 转 化 为 n+1 个 插 值 基 函 数 (x)(i=0 ,n)的构造 li(x)(i=0,1,…,n)的构造。 ,n)的构造。
8
插值方法
一、解方程组法: 解方程组法: 类似插值唯一性定理证明过程, 类似插值唯一性定理证明过程,先设插值多项式函 数为 Pn ( x ) = a0 + a1 x + a2 x 2 + + an x n ,将 1 n+ 的函数值代入多项式里,便得到 的函数值代入多项式里, 到所要求的插值多项式。 到所要求的插值多项式。 二、基函数法:一种既能避免解方程组,又能适合于计算机 基函数法:一种既能避免解方程组, 求解的方法,下面将具体介绍。 求解的方法,下面将具体介绍。
19
二次Lagrange插值多项式1 二次Lagrange插值多项式1
线性插值只利用两对值 近似值,误差较大。 近似值,误差较大。 及 求得的
p2(x)是x的二次函数,称为二次插值多项式。 的二次函数, 是 的二次函数 称为二次插值多项式。 通过三点的插值问题称为二次插值或抛物插值。 通过三点的插值问题称为二次插值或抛物插值。
7
存在唯一性定理证明( 存在唯一性定理证明(续)
此方程组的系数行列式为
1 x0 D= 1 x1 1 xn

x x
2 0
x x
n 0
2 1
n 1
=
0≤ j < i ≤ n
∏(x
i
xj)
x
2 n
x
n n
范得蒙行列式 !
xi ≠ x j
i = 1,2, n;
j = 1,2, n
时,
D ≠ 0, 因此,Pn(x)由a0, a1,…, an唯一确定。 , 因此, , 唯一确定。
= λ∏ ( x x j )
j =0 j≠k n
又由
lk ( xk ) = 1
,得:
1 λ= ( xk x0 )( xk x1 )( xk xk 1 )( xk xk +1 )( xk xn )
26
N次插值多项式6 次插值多项式6
( x x0 )( x x1 ) ( x x k 1 )( x x k +1 )( x x n ) lk ( x ) = ( x k x0 )( x k x1 )( x k x k 1 )( x k x k +1 )( x k x n )
Pn ( x ) = a0 + a1 x + + a n x n
使之满足条件
Pn ( x i ) = y i
i = 0, 1, 2,…, n
xi ≠ x j
13
要求:无重合节点, 要求:无重合节点,即 i ≠ j
一次Lagrange插值多项式(1) 插值多项式(1)
已知函数 y = f ( x ) 在点 x0 , x1上的值为 y0 , y1 ,要
x1 ]连续,在 ( x0 , x1 )充分光滑, 连续, 充分光滑,
存在
ξ ∈ ( x0 , x1 ) 使得 。
3
多项式插值定义
在众多函数中,多项式最简单、最易计算, 在众多函数中 多项式最简单、最易计算,已知函数 y = f (x)在n +1 多项式最简单 , ,n 个互不相同的点处的函数值 yi = f (xi ),i = 0,1 ,为求 的近似式, y = f (x的近似式,自然应当选 n 次多项式 )
20
二次Lagrange插值多项式2 二次Lagrange插值多项式2
设被插函数在插值节点 x0 , x1 , x2 处的函数值为
y0 , y1 , y2 以过节点 ( xi , yi ) (i = 0,1, 2) 的二次函数
相关文档
最新文档