好库网 好库网首页 | 我的好库
VC开发指南

C语言实现拉格朗日插值

发布者:vchelp
发布日期:2015/12/12 20:22:19   更新日期:2015/12/12 20:22:19
阅读次数:1204
评分:4.80
介绍:本实例演示的便是在己知六个样点值的情况下,用拉格朗日插值法计算出给定某x值处的近似函数值。
正文:

     我们常常遇到这样的问题:给出一批离散的样点,要求作出一条通过这些样点的光滑曲线,以满足设计要求或进行加工。反应在数学上,即己知函数在一些点上的值,寻求它的分析表达式,以便求得它在某个给定点的近似值。这个过程就称为插值。

    插值的基本思想是设法构造一个简单的函数y=p(x)作为实际函数f(x)的近似表达式,然后算出p(x)的值,以此得到f(x)的近似值。本实例演示的便是在己知六个样点值的情况下,用拉格朗日插值法计算出给定某x值处的近似函数值。

 

 x  0  0.1  0.195  0.3  0.401   0.5
 y  0.39894  0.39695  0.39142  0.38138  0.36812  0.35206

 

 求函数在x=0.12处的函数值。源码如下:

#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>

double LAG(int,double *,double *,double);

void main()
{
	int n;
	double *x,*y,t,lag;
	t = 0.15;
	n = 6;
	x = (double*)calloc(n,sizeof(double));
	if(x == NULL)
	{
		printf("内存分配失败\n");
		exit(1);
	}
	y = (double*)calloc(n,sizeof(double));
	if(y == NULL)
	{
		printf("内存分配失败\n");
		exit(1);
	}
	x[0] = 0;
	x[1] = 0.1;
	x[2] = 0.195;
	x[3] = 0.3;
	x[4] = 0.401;
	x[5] = 0.5;

	y[0] = 0.39894;
	y[1] = 0.39695;
	y[2] = 0.39142;
	y[3] = 0.38138;
	y[4] = 0.36812;
	y[5] = 0.35206;

	lag = LAG(n,x,y,t);
	printf("拉各朗日插值后得到的结果是:\n");
	printf("f(%.2f)=%e\n",t,lag);
	free(x);
	free(y);
}

double LAG(n,x,y,t)
int n;
double *x;
double *y;
double t;
{
	int i,j;
	double p,s;
	s = 0;
	for(i=0;i<n-1;i++)
	{
		p = 1;
		for(j=0;j<n-1;j++)
			if(i!=j)
				p*=(t-x[j])/(x[i]-x[j]);
			s+=p*y[i];
	}
	return (s);
}

 

 


评论 [发表评论]
  • 尊敬的计算机人员你们好,
    我是北京鼎方诚知识产权,马腾,
    主要代理软件著作权版权登记、加急。
    通过我们办理登记最快1天出证,最低500元出登记证书,咱们性价比最高。
    有意请联系 手机18801098737   QQ 1659296665   E-mail:mateng@dingfc.com
    网址:www.dingfc.com

    m13323017108

    2016/9/21 11:50:55


  • 更多评论
账号 密码 还没帐号呢,现在注册一个?

免责声明:好库网所展示的信息由买卖双方自行提供,其真实性、准确性和合法性由信息发布人负责。好库网不提供任何保证,并不承担任何法律责任。