线性插值

线性插值

法一:
#include<iostream> 
using namespace std; 
#define L 2 
int main() 
{ 
int C,i,k; 
double x; 
double y=0.0; 
double t=1.0; 
cout<<"请输入已知有多少个点对"<<endl; 
cin>>C;  
double (*p)[L]=new double[C][L]; 
cout<<"输入各个点对的值"<<endl; 
for(i=0;i<C;i++) 
for(k=0;k<L;k++) 
cin>>p[i][k];  
cout<<"输入你要估算的x的值"; 
cin>>x;  
for(k=0;k<C;k++) 
{ 
for(i=0;i<C;i++) 
{ 
if(i==k) continue ;  
t=(x-p[i][0])/(p[k][0]-p[i][0])*t; 
} 
y=y+t*p[k][1]; 
 t=1; 
}  
cout<<"当x="<<x<<" 时,估计的结果为:"<<y<<endl; 
delete[] p; 
}
法二:

#include <stdio.h> 
#include <math.h>
#define N 4
double lagrange(double x[N],double y[N],double xx)//定义一个函数 
{
    double yy,t;
    int j,k;
   yy=0.0;
  for(j=0;j<N;j++)
     {t=1.0;
      for(k=0;k<N;k++)
	 if(k!=j)
	   t=t*(xx-x[k])/(x[j]-x[k]);
  yy=yy+t*y[j];
   }
return yy;
} 

int main()
{
	double xx,yy;
	double x[N]={10,11,12,13};
	double y[N]={2.3026,2.3979,2.4849,2.5649};
	xx=11.75;
	yy=lagrange(x,y,xx);//调用函数 
	printf("y=%lf\n",yy);

}

//结果: 2.463857
posted @ 2020-10-24 16:48  星卅  阅读(419)  评论(0)    收藏  举报