Заглянув в эту книгу еще раз, вот что я там нашел:
"Если функция задана таблично, то для нахождения ее производной необходимо построить какой-нибудь интерполяционный многочлен..." Пусть это будет например, dY[k](x)=(Y[k+1] - Y[k-1])/(2*h).
Тогда, программа будет выглядеть так:
{заполняем таблицу значениями функции}
k:=998;
c:=1; h:=0.1;
while k<>1001 do begin
y[c]:=2*sqr(x)+3*x-5;
k:=k+h;
inc(c);
end;
{находим полином в каждой точке, это и будет искомая производная}
for j:=1 to c-1 do begin
dy[c]:=(y[c+1]-y[c-1])/(2*h);
writeln(dy[c]);
end;
Вот оказывается как все просто.
"Повысить точность можно использовав более сложный интерполяционный многочлен Лагранжа ".