簡體   English   中英

如何在Matlab中准確計算危險率?

[英]How to do I calculate the hazard rate accurately in Matlab?

我需要計算x瑞利函數的危險率PDF /(1-CDF)。

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 如何提高HR的准確性?

您正在遇到數字問題,特別是災難性的取消 嘗試在semilogy圖上semilogy繪制危險率函數的分母, 即補充CDF

x = 0:0.001:2.5;
semilogy(x,1-cdf('rayl',x,sqrt(1/18)))

互補瑞利CDF圖

如您所見,當分母大約為機器epsilon eps時,x = 2之前就有問題了。 這是cdf('rayl',x,sqrt(1/18))約為1。

幸運的是,Matlab提供了一種解決此問題的方法,該選項可以直接通過cdf'upper'選項來計算互補CDF或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函數也支持此選項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM