如何在Matlab中计算概率密度函数(PDF)的数值偏导数?我并不是在寻找使用自动差异或符号解决方案的解决方案。
给出了以下示例:
arg = (-1:.01:1)';
mu = 0;
sigma = 0.5;
f = normpdf(arg,mu,sigma);可以计算df/dsigma的数值偏导数吗?还是我不得不使用自动差异或符号数学工具箱?
发布于 2013-11-28 04:28:02
我假设实际函数不是正态分布的PDF。如果只需要一阶导数,则可以尝试使用复阶微分:
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;或者,如果您保持x和mu不变,并且改变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;这种技术快速,简单,非常准确。您可以从我的cdiff下载这个方便的函数,GitHub。
发布于 2013-11-28 04:40:23
我的理解是arg和mu是恒定的,西格玛是不同的。这是一个明显的近似:
arg = 0;
mu = 0;
incr = 0.0001;
sigma = incr:incr:1.5;
f = normpdf(arg,mu,sigma);
d = diff(f) / incr;
plot(sigma(2:end), d, '.')
set(gca, 'XLim', [0.05 1.5])https://stackoverflow.com/questions/20257508
复制相似问题