0
我需要通过x
计算瑞利函数的危险率PDF /(1-CDF)。如何在Matlab中准确计算危险率?
x = 0:0.001:2.5;
HR = pdf('rayl',x,sqrt(1/18))./(1-cdf('rayl',x,sqrt(1/18)));
plot(x,HR)
这里情节变得有趣的在大约x = 2
。我如何提高人力资源的准确性?
我需要通过x
计算瑞利函数的危险率PDF /(1-CDF)。如何在Matlab中准确计算危险率?
x = 0:0.001:2.5;
HR = pdf('rayl',x,sqrt(1/18))./(1-cdf('rayl',x,sqrt(1/18)));
plot(x,HR)
这里情节变得有趣的在大约x = 2
。我如何提高人力资源的准确性?
您遇到数字问题,特别是catastrophic cancellation。试着绘制你的风险率函数,the complementary CDF只是分母,在semilogy
情节:
x = 0:0.001:2.5;
semilogy(x,1-cdf('rayl',x,sqrt(1/18)))
正如你所看到的,有问题位之前,X = 2时,分母是大约machine epsilon ,eps
。这是当cdf('rayl',x,sqrt(1/18))
为约1。
幸运的是,MATLAB提供解决的办法与CDF的计算互补CDF选项或尾概率,经由'upper'
选项cdf
直接:
x = 0:0.001:2.5;
HR = pdf('rayl',x,sqrt(1/18))./cdf('rayl',x,sqrt(1/18),'upper');
plot(x,HR)
现在如预期的那样返回斜率为18的直线。 raylcdf
函数也支持这个选项。
对于标记不清楚的人,有什么不清楚的地方?只是“有趣”的定义?我认为这很明显,这是一个数字问题。 – horchler
“有趣”的描述当然没有什么帮助,并且要弄清楚它的“有趣”需要运行Matlab代码(除了Matlab之外,本身还需要访问统计工具箱)。你正在削减谁能和谁愿意弄清楚真正的问题是什么,因为这是写的方式。问题应该是独立的,以避免这种情况并提供存档价值。事实证明,这个问题与Matlab无关,所以一个更好的书面问题对许多用户都有潜在的价值。 – Brick
@ Brick:我明白你的观点。这是我在此的头一篇博文。我会尽量在下次更具体! – Matt