lagrange.c

来自「数值计算方法中几个重要的算法用VC++实现」· C语言 代码 · 共 48 行

C
48
字号
/*********************************************/
/*                                           */
/*            langrange插值                  */
/*                                           */
/*********************************************/

#include<math.h>
#include<stdio.h>
#include<malloc.h>
#define type "%lf"  /*-定义数据类型-*/
typedef double Dtype;

Dtype f(Dtype x)
{
	return sqrt(x);
}

void main()
{
	int i,j,n;
	Dtype *x,*y,Ln,l,xv;

    printf("Please input n (n>0)\n");
    scanf("%d",&n);	
	
	x=(Dtype*)malloc(sizeof(Dtype)*(n+1));
	y=(Dtype*)malloc(sizeof(Dtype)*(n+1));
    
    printf("Please input array x[0..%d]:\n",n);
	for(i=0;i<n+1;i++)
	{
		scanf(type,&x[i]);
		y[i]=f(x[i]);/*-由输入的xi值计算f(xi)的值-*/
	}
	/*-由lagrange插值多项式计算Ln(x)-*/
	printf("Please input x:");
	scanf(type,&xv);
	Ln=0;
	for(i=0;i<n+1;i++)
	{
		l=1;
		for(j=0;j<n+1;j++)
			if(j!=i) l*=(xv-x[j])/(x[i]-x[j]);
		Ln+=l*y[i];
	}
	printf("Ln("type")="type,xv,Ln);

}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?