这是我的代码:
Double[] x = {1.0, 2.0, 3.0};
Double[] fx = {1.0, 8.0, 27.0};
s = x.length;
Double[][] newton = new Double[(2*s)-1][s+1];
for(int i=0, z=0;i<s;i++,z+=2){
newton[z][0]=x[i];
newton[z][1]=fx[i];
}
int i=1, ii=2, j=2, ss=s;
for(int z=0;z<s-1;z++,j++,ss-=1,ii++){
for(int y=0;y<ss-1;y++,i+=2){
newton[i][j]=(newton[i+1][j-1]-newton[i-1][j-1])/(newton[i+(ii-1)][0]-newton[i-(ii-1)][0]);
}
i=ii;
}
}
对不起丑陋的代码。给定 x 点 = {1, 2, 3} 和 f(x) = {1, 8, 27},上面的代码将生成一个二维数组,如下所示:
1.0 1.0
7.0
2.0 8.0 6.0
19.0
3.0 27.0
这是一个划分的差异表。
然后,我想生成它的插值多项式函数。因此,对于上面的例子,使用牛顿多项式规则,输出函数应该是 1 + 7(x-1) + 6(x-1)(x-2) = 6x^2-11x+6。我真的坚持这一点,任何人都可以帮助我如何产生这样的输出?