Вот мой код:
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 points = {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 ,Я действительно застрял в этом, кто-нибудь может мне помочь, как произвести такой вывод?