Analytical derivative of a function is equivalent to convolution of that function with $s$ in Laplace domain. Numerical derivatives are limited in bandwidth due to finite sampling rate, so they are not synonymous with convolving the signal with with $s$ term. At higher frequencies one would expect attenuation of the numerically differentiated signal from one that was computed analytically. Recently, I found that there are some differences at the low frequency limit as well which I cannot explain.
Attached is a plot of a signal sampled from a normal distribution (blue) and it's first derivative in time (red). As expected, at high frequencies the derivative signal begins to attenuate. But why does it not cross $\omega$ = 1 rad/s or 0.16 Hz as would be the case if the solution was obtained analytically?
Here's the code I am running in MATLAB
sr = 100000; y = randn(1,sr); dydt = y; for i = 2:length(y)-1 dydt(i) = (y(i+1)-y(i-1))*sr*2; end hold on, plot(abs(fft(y))); plot(abs(fft(dydt))); set(gca, 'YScale', 'log') set(gca, 'XScale', 'log')