> NDD := proc(N,X,F)
# NDD := proc(N::integer,X::array,F::array) is better
local i, j, x, value;
for j from 2 to N do
for i from N to j by -1 do
F[i]:=(F[i]-F[i-1])/(X[i]-X[i-j+1]);
od;
od;
printf("NDD: "); for i from 1 to N do printf("%f
",F[i]); od; printf("\n");
# Horner¡¦s
scheme:
printf("Enter
x to evaluate interpolating polynomial:\n");
x := scanf("%f")[1];
value := F[N];
for i from N-1
to 1 do
value := F[i] + (x-X[i]) * value;
od;
printf("p(%f)=%f\n",
x,value);
end:
> N:=4:
X:=array(1..4,[2,4,1,3]):
F:=array(1..4,[60,210,24,120]):
NDD(N,X,F);
NDD: 60.000000 75.000000 13.000000
1.000000
Enter x to evaluate interpolating
polynomial:
> 4
p(4.000000)=210.000000