I wrote a user-defined function in matlab that is supposed to take the derivative of a function f(x) in the point that correspond to (x,f(x)). Here's the code
Obviously if you insert a real small tolerance (f(x(ii)+h)-f(x(ii))) would be zero even if the derivative is not zero. I'm trying to come up with something but I just don't know what to do.
function [fprime]=numderivative(f,x,h,tol) hd=h*10^-1; hh=h; hhdd=hd; itnum=numel(x); error=tol+1; for ii=1:itnum while error>tol fprime1=(f(x(ii)+h)-f(x(ii)))/h; fprime2=(f(x(ii)+hd)-f(x(ii)))/hd; error=abs(fprime1-fprime2); h=h*10^-1; hd=h*10^-1; end fprime(ii)=fprime1; h=hh; hd=hhdd; error=tol+1; end