//Lagrange插值
#include <stdio.h>
#include <stdlib.h>
#define MAX 10
int NUM;//需要已知点个数-1=插值次数
double X[MAX];
double Y[MAX];
void Input_Data()
{
int i;
printf("N次插值:\n");
printf("N=");
scanf("%d",&NUM);
printf("X向量:\n");
for(i=0;i<=NUM;i++)
scanf("%lf",&X[i]);
printf("Y向量:\n");
for(i=0;i<=NUM;i++)
scanf("%lf",&Y[i]);
}
double Lagrange(double X_Location)
{
int i,j;
double Y_result=0;
double p[NUM];
for(i=0;i<=NUM;i++)
{
p[i]=Y[i];
for(j=0;j<=NUM;j++)
{
if(j!=i)
p[i]=p[i]*(X_Location-X[j])/(X[i]-X[j]);
}
Y_result+=p[i];
}
return Y_result;
}
int main()
{
double X_location,Result;
Input_Data();
printf("X:\n");
scanf("%lf",&X_location);
Result=Lagrange(X_location);
printf("Result:%lf\n",Result);
return 0;
}
C语言实现拉格朗日迭代(计算方法)
最新推荐文章于 2023-08-18 22:15:59 发布