拉格朗日插值算法简介及其C++实现
来源:互联网 发布:丰趣海淘 知乎 编辑:程序博客网 时间:2024/06/05 09:36
一、拉格朗日插值法
是以法国十八世纪数学家约瑟夫·路易斯·拉格朗日命名的一种多项式插值方法。许多实际问题中都用函数来表示某种内在联系或规律,而不少函数都只能通过实验和观测来了解。如对实践中的某个物理量进行观测,在若干个不同的地方得到相应的观测值,拉格朗日插值法可以找到一个多项式,其恰好在各个观测的点取到观测到的值。这样的多项式称为拉格朗日(插值)多项式。
二、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();
}
- 排序算法简介及其C实现
- 排序算法简介及其C实现
- 纸上谈兵: 排序算法简介及其C实现
- 拉格朗日插值算法简介及其C++实现
- 卡尔曼滤波简介及其算法实现代码(C++/C/MATLAB)
- 卡尔曼滤波简介及其算法实现代码(C++/C/MATLAB)
- 卡尔曼滤波简介及其算法实现代码(C++/C/MATLAB)
- 卡尔曼滤波简介及其算法实现代码(C++/C/MATLAB)
- [教程] 卡尔曼滤波简介及其算法实现代码(C++/C/MATLAB)
- 卡尔曼滤波简介及其算法实现代码(C++/C/MATLAB)
- 卡尔曼滤波简介及其算法实现代码(C++/C/MATLAB)
- “多线程”简介及其C代码实现框架
- LRU算法总结及其C算法实现
- CRC_16 原理及其C语言算法实现
- 排序算法要点及其C语言实现
- 算法及其分析简介
- 卡尔曼滤波简介及其算法实现代码(转)
- 【杂谈】【转载】卡尔曼滤波简介及其算法实现代码
- 编译ardublockly的步骤
- 开发维护大型 Java 项目的建议
- 【CodeForces
- C++学习-对象数组
- 底部导航栏:类似微信风格的底部导航条(需要选中和不选中的两种图标)
- 拉格朗日插值算法简介及其C++实现
- ceph运维常用指令
- SqlServer2008安装过程详解~
- RPM打包技术与典型SPEC文件分析
- 关于百度echarts map地图的使用之分布图
- 关于做开源技术的一些思考
- 远程计算机或设备将不接受连接,IE无法上网
- Anastasia and pebbles (Codeforces-789A)
- poj 2394 Checking an Alibi--(Dijkstra)