⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 Lagrange插值算法
💻 C
字号:
/*
 * Created on 2005-2-26	by 可冰(k.b)
 *
 * 此算法实现了Lagrange插值.
 * 
 */
 
/**
 * @author k.b
 * 
 * TODO 2005-2-26:
 * 		不过现在还没有实现截断误差的分析
 * 		还可以添加一些功能,如给定一组值后算出所有可能组合的值(有一定
 * 	上限),并可根据截断误差的比较可得出最好的一组数据.
 */


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


//求Lagrange插值:
//输入: ( x[i], y[i] ) 已知的n+1组值; n 多项式次数; x 将求的自变量
//输出: y 求得的函数值
void Lagrange( double* xi, double* yi, const int n,
				double x, double* y )
{
	int i, j;
		
	double tmp = 1.0;	//连乘积
	*y = 0.0;
		
	for( i = 0; i < n+1; i++ )
	{
		for( j = 0, tmp = 1.0; j < n+1; j++ )
		{
			//跳过x[i] - x[i]
			if( j == i ) continue;
			tmp *= ( x - xi[j] ) / ( xi[i] - xi[j] );
		}
		
		*y += tmp * yi[i];
	}
}
//end Lagrange


//初始值:
const int n = 2;	//多项式次数
double xi[] = { 0.5, 0.6, 0.7 };
double yi[] = { 0.47943, 0.56464, 0.64422 };

double x = 0.57891;

//结果值:
double y = 0.0;


int main()
{
	Lagrange( xi, yi, n, x, &y );
	
	printf( "%f", y );
	
	system( "Pause" );
	return 0;
}

⌨️ 快捷键说明

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