我的主程序中调用牛顿插值出现错误!!
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
以上的错误都是第一行的!
请高手指教!谢谢!!!!

解决方案 »

  1.   

    最前面加上
    #define N 1024
      

  2.   

    要是我输入的x与y数据的个数大于1024,就选择一个最大的就可以了吧?
    宏定义的N的大小与我输入的数据的个数不相等也没关系吧??
    谢谢!!
      

  3.   

    N没定义
    double *x,double *y,double xx,double fx,int N
      

  4.   

    给lfchen(一条晚起的虫--床上用品专卖) :
    只有N作为宏定义才可以解决所有的4个错误!上面的double *x,double *y,double xx,double fx,int N只能解决一个N的问题!!!
      

  5.   

    修改函数,传入N:
    void  newton(double  *x,double  *y, int N, double  xx, double  fx)