
function [y, err_est] = differenze_centrali (f,x0,h,a,b)

% Uso:
%   function [y, err_est] = differenze_centrali (f,x_0,h,a,b)
%
% Dati di ingresso:
%  f:       funzione vettoriale;
%  x0: punto in cui si vuole approssimare D^2f(x_0);
%  h: passo della formula delle differenze centrali;
%  a,b: estremi dell'intervallo [a,b] di definizione della funzione 
%
% Dati di uscita:
%   y:       approssimazione di D^2f(x_0).
%  err_est: stima dell'errore assoluto compiuto.

if ((x0-h) <= a) | ((x0+h) >= b)
    y=NaN;
    fprintf('\n \t non si puo'' applicare il metodo delle differenze centrali');
    return;
end

% derivata seconda calcolata numericamente
y=(f(x0+h)-2*f(x0)+f(x0-h))/h^2;

% derivata seconda calcolata numericamente con passo minore
H=h/100;
yH=(f(x0+H)-2*f(x0)+f(x0-H))/H^2;

% stima dell'errore compiuto
err_est=abs(yH-y);

