これが私のコードです:
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} とすると、上記のコードは次のような 2 次元配列を生成します。
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になります。私は本当にこれに行き詰まっています。そのような出力を生成する方法を誰か助けてもらえますか?