主题:拉格朗日插值函数的c++代码
#include<iostream>
#define N 4
using namespace std;
float upper(float ,int,float *);
float under(int,float *);
int main()
{
int i;
float a[N],b[N],l[N],L=0.0,u;
cout<<"Please input a,b"<<endl;
for(i=0;i<=N;i++)
cin>>a[i];
for(i=0;i<=N;i++)
cin>>b[i];
cout<<"Please input x"<<endl;
cin>>u;
for(i=0;i<=N;i++)
l[i]=upper(u,i,a)/under(i,a);
for(i=0;i<=N;i++)
L+=l[i];
cout<<"x:";
for(i=0;i<=N;i++)
cout<<" "<<a[i];
cout<<endl;
cout<<"y:";
for(i=0;i<=N;i++)
cout<<" "<<b[i];
cout<<endl;
cout<<"L("<<u<<")="<<L;
return 0;
}
float upper(float x,int i,float *a)
{
float z=1.0;
int k;
for(k=0;k<i;k++)
z*=(x-*(a+k));
k=i+1;
for(k=i+1;k<=N;k++)
z*=(x-*(a+k));
return z;
}
float under(int i,float *a)
{
float z=1.0;
int k;
for(k=0;k<i;k++)
z*=(*(a+i)-*(a+k));
k=i+1;
for(k=i+1;k<=N;k++)
z*=(*(a+i)-*(a+k));
return z;
}
这是我写的拉格朗日插值函数的代码。输入一组x,y和所要求的x值,可以求出在拉格朗日插值函数中的近似值。
但是执行的时候,总是发现在输出那组计算的数时总是出错
cout<<"x:";
for(i=0;i<=N;i++)
cout<<" "<<a[i];
cout<<endl;
cout<<"y:";
for(i=0;i<=N;i++)
cout<<" "<<b[i];
cout<<endl;
而且貌似估计出的近似值也不对。
就算近似值不对是我的算法有问题,但输出x,y我总不见得会错吧。希望有高手能帮我找到我代码中的BUG.谢谢了
#define N 4
using namespace std;
float upper(float ,int,float *);
float under(int,float *);
int main()
{
int i;
float a[N],b[N],l[N],L=0.0,u;
cout<<"Please input a,b"<<endl;
for(i=0;i<=N;i++)
cin>>a[i];
for(i=0;i<=N;i++)
cin>>b[i];
cout<<"Please input x"<<endl;
cin>>u;
for(i=0;i<=N;i++)
l[i]=upper(u,i,a)/under(i,a);
for(i=0;i<=N;i++)
L+=l[i];
cout<<"x:";
for(i=0;i<=N;i++)
cout<<" "<<a[i];
cout<<endl;
cout<<"y:";
for(i=0;i<=N;i++)
cout<<" "<<b[i];
cout<<endl;
cout<<"L("<<u<<")="<<L;
return 0;
}
float upper(float x,int i,float *a)
{
float z=1.0;
int k;
for(k=0;k<i;k++)
z*=(x-*(a+k));
k=i+1;
for(k=i+1;k<=N;k++)
z*=(x-*(a+k));
return z;
}
float under(int i,float *a)
{
float z=1.0;
int k;
for(k=0;k<i;k++)
z*=(*(a+i)-*(a+k));
k=i+1;
for(k=i+1;k<=N;k++)
z*=(*(a+i)-*(a+k));
return z;
}
这是我写的拉格朗日插值函数的代码。输入一组x,y和所要求的x值,可以求出在拉格朗日插值函数中的近似值。
但是执行的时候,总是发现在输出那组计算的数时总是出错
cout<<"x:";
for(i=0;i<=N;i++)
cout<<" "<<a[i];
cout<<endl;
cout<<"y:";
for(i=0;i<=N;i++)
cout<<" "<<b[i];
cout<<endl;
而且貌似估计出的近似值也不对。
就算近似值不对是我的算法有问题,但输出x,y我总不见得会错吧。希望有高手能帮我找到我代码中的BUG.谢谢了