返回首页

拉格朗日插值(拉格朗日插值法例题)

来源:www.homebrew.com.cn   时间:2022-12-28 21:12   点击:295  编辑:admin 手机版

1. 拉格朗日插值法例题

在数值分析中,拉格朗日插值法是以法国十八世纪数学家约瑟夫·拉格朗日命名的一种多项式插值方法。

许多实际问题中都用函数来表示某种内在联系或规律,而不少函数都只能通过实验和观测来了解。如对实践中的某个物理量进行观测,在若干个不同的地方得到相应的观测值,拉格朗日插值法可以找到一个多项式,其恰好在各个观测的点取到观测到的值。

2. matlab拉格朗日插值法例题

拉格朗日插值公式(外文名Lagrange interpolation formula)指的是在节点上给出节点基函数,然后做基函数的线性组合,组合系数为节点函数值的一种插值多项式。

线性插值也叫两点插值,已知函数y = f (x)在给定互异点x0, x1上的值为y0= f (x0),y1=f (x1)线性插值就是构造一个一次多项式:P1(x) = ax + b,使它满足条件:P1 (x0) = y0, P1 (x1) = y1

其几何解释就是一条直线,通过已知点A (x0, y0),B(x1, y1)。

线性插值计算方便、应用很广,但由于它是用直线去代替曲线,因而一般要求[x0, x1]比较小,且f(x)在[x0, x1]上变化比较平稳,否则线性插值的误差可能很大。为了克服这一缺点,有时用简单的曲线去近似地代替复杂的曲线,最简单的曲线是二次曲线,用二次曲线去逼近复杂曲线的情形。[1]

3. 拉格朗日插值法例题三次

构造一组插值基函数.”就是构造一个函数,这个函数在其中一点的值为1,其它点的值为0。这样的话把n个这样的函数加权加起来得到的函数就是在每个点上的值都是需要的了

4. 利用拉格朗日插值法

线性插值也叫两点插值,已知函数y = f (x)在给定互异点x0, x1上的值为y0= f (x0),y1=f (x1)线性插值就是构造一个一次多项式:P1(x) = ax + b,使它满足条件:P1 (x0) = y0, P1 (x1) = y1 其几何解释就是一条直线,通过已知点A (x0, y0),B(x1, y1)

5. 拉格朗日插值法例题四个点

罗尔中值定理能推出拉格朗日中值定理和柯西中值定理,反过来拉格朗日中值定理和柯西中值定理也可以推出罗尔中值定理。

泰勒中值定理是由柯西中值定理推出来的。泰勒中值定理在一阶导数情形就是拉格朗日中值定理。

罗比达法则是柯西中值定理在求极限时应用。

6. 拉格朗日插值法的应用实例

一、拉格朗日插值法

是以法国十八世纪数学家约瑟夫·路易斯·拉格朗日命名的一种多项式插值方法。许多实际问题中都用函数来表示某种内在联系或规律,而不少函数都只能通过实验和观测来了解。如对实践中的某个物理量进行观测,在若干个不同的地方得到相应的观测值,拉格朗日插值法可以找到一个多项式,其恰好在各个观测的点取到观测到的值。这样的多项式称为拉格朗日(插值)多项式。

二、Lagrange基本公式:

拉格朗日插值公式,设,y=f(x),且xi< x < xi+1,i=0,1,…,n-1,有:

Lagrange插值公式计算时,其x取值可以不等间隔。由于y=f(x)所描述的曲线通过所有取值点,因此,对有噪声的数据,此方法不可取。

一般来说,对于次数较高的插值多项式,在插值区间的中间,插值多项式能较好地逼近函数y=f(x),但在远离中间部分时,插值多项式与y=f(x)的差异就比较大,越靠近端点,其逼近效果就越差。

三、C++实现

#include <iostream>

#include <conio.h>

#include <malloc.h>

double lagrange(double *x,double *y,double xx,int n)/*拉格朗日插值算法*/

{

int i,j;

double *a,yy=0.0;/*a作为临时变量,记录拉格朗日插值多项式*/

a=(double *)malloc(n*sizeof(double));

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;

double 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("%lf",&x[i]);

}

printf("\n");

for(i=0;i<=n-1;i++)

{

printf("y[%d]:",i);

scanf("%lf",&y[i]);

}

printf("\n");

printf("Input?xx:");

scanf("%lf",&xx);

yy=lagrange(x,y,xx,n);

printf("x=%.13f,y=%.13f\n",xx,yy);

getch();

}

顶一下
(0)
0%
踩一下
(0)
0%
最新图文