牛顿插值!!
我的主程序中调用牛顿插值出现错误!!
void newton(double x[N],double y[N],double xx,double fx)
{
double **Y;Y=new double*[N];
for(int i=0;i <N;i++)
{
Y[i]=new double[N];
}
for(i=0;i <N;i++)//把已知的给Y的第一列,y[N][N]各阶均差
{
Y[i][0]=y[i];
}
for(i=0;i <N;i++)
{
for(int j=1;j <N;j++)//初始化y矩阵的其它数据
{
Y[i][j]=0;
}
}
for(int j=1;j <N;j++)//求各阶均差
{
for(int i=j;i <N;i++)
{
Y[i][j]=(Y[i][j-1]-Y[i-1][j-1])/(x[i]-x[i-j]);
}
}
fx=Y[0][0];//用插值法计算xx点的函数值
double mid;
for(i=1;i <N-1;i++)
{
mid=1;
for(int j=0;j <i;j++)
{
mid=mid*(xx-x[j]);
fx=fx+Y[i][i]*mid;
}
}
}
提示:error C2065: 'N ' : undeclared identifier
error C2057: expected constant expression
error C2466: cannot allocate an array of constant size 0
error C2057: expected constant expression
以上的错误都是第一行的!
请高手指教!谢谢!!!!
[解决办法]
最前面加上
#define N 1024
[解决办法]
修改函数,传入N:
void newton(double *x,double *y, int N, double xx, double fx)