I assume that the actual function is not the PDF of the normal distribution. You might try using complex step differentiation if you only need the first derivative:
mu = 0;
sigma = 0.5;
f = @(x)normpdf(x,mu,sigma);
x = -1:0.01:1;
h = 2^-28;
dx = imag(f(x+1i*h))/h;
Or if you hold x
and mu
constant and vary sigma
:
mu = 0;
x = 0;
g = @(sigma)normpdf(x,mu,sigma);
sigma = 0.25:0.01:0.75;
h = 2^-28;
dsigma = imag(g(sigma+1i*h))/h;
This technique is fast, simple, and very accurate. You can download this as a convenient function, cdiff
, from my GitHub.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…