function z=deriva(x,n,h,func)
// z=deriva(x,n,h,func)
// 
// derivada via regra de n pontos centrada
// 
// Entradas:  x = pontos onde se deseja derivar 
//            n = 1,3,5,... numero de pontos da formula
//            h = espacamento da malha
//            func = string descrevendo a fc, por ex. func = 'x*exp(x)'
// Saida:     
//            z = d(func)/dx no ponto x
//
// Eduardo. 18/04/10

//  vide exemplo de problema de arredondamento no programa 
//  exempl_probl_arrredondamento.sce

x_=x;
for j=1:(n-1)/2
x_ = [ x-j*h x_ x+j*h];
end

func=strcat(['y=',func]);
deff('[y]=ff(x)',func);
y = ff(x_);

dp=diag(1:(n-1),1)*(lagr(x_,y))';
z=(x.^(0:n-1))*dp

endfunction




