C语言实现拉格朗日插值法和牛顿插值法

拉格朗日插值法的实现就是通过构造函数,通过已知几对数据然后估算输入对应的数据所得得值。

 通过例子可知道拉格朗日法,假设有三组数据分别为(x0,y0),(x1,y1),(x2,y2),与第一个y值相乘得数的分母是(x0-x1)*(x0-x2),分子是:(x-x1)*(x-x2),第二个数就是分母是(x1-x0)*(x1-x2),分子是(x-x0)*(x-x2),第三个数分子是:(x-x0)*(x-x1),分母是(x2-x0)*(x2-x1).

代码实现:

#include<stdio.h>
# define N 100	
int main()
{
    //设置数据; 
	int n,i,j;double l[N],l1[N],l2[N],x,f=1.0,y=0 ,x1[N],y1[N];
	printf("输入已知数据对数:"); 
	scanf("%d",&n); 
	printf("输入一个x,输入一个y:");
	for(i=0;i<n;i++)
	{  
		//先输入一个x,再输入一个y 
		scanf("%lf",&x1[i]);
		scanf("%lf",&y1[i]);
		//将数据进行赋初值 
		l1[i]=1;
		l2[i]=1;
	}
	printf("输入最后已知的x,求y:") ;//输入数据对
	scanf("%lf",&x);
	//赋初值
	//进行l(x)的分子分母构造 
	for(i=0;i<n;i++)
	{
		for(j=0;j<n;j++)
		{
			l1[i]=1.0*l1[i]*(x-x1[j]);//分子构造
			if(i!=j)
			  {
			   l2[i]=1.0*l2[i]*(x1[i]-x1[j]);//分母构造
			  }
		}
	
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值