C ++:拉格朗日多项式插值,用于插值在场上定义的多项式

时间:2015-06-09 22:24:42

标签: c++ linear-algebra interpolation polynomials

我需要一个字段中拉格朗日插值的C ++源代码。因此,给定n对(x,y),我可以在场上构造多项式。我的代码如下,但它没有输出正确的结果:

bigint* interpolate (int n, bigint *x, bigint *y,bigint N) {
  int d,i;
  bigint temp,temp2,temp3;
  for (d = 1; d < n; d++) {
    for (i = 0; i < n - d; i++) {
      int j = i + d;

      mul( temp,x[j], y[i]);
      mpz_mul( temp2,x[i], y[i+1] );
      sub( temp2,temp2,temp );
      sub( temp3, x[j], x[i] ); temp3=x[j]-x[i]
      invert(temp3,temp3,N); 
      mul(y[i] ,temp2, temp3 );// y[i]=temp2 * temp3
    }
  }
  return y;
}

这里N是模数,n是对数,x和y是包含x_i和f(x_i)= y_i元素的大整数数组。

0 个答案:

没有答案