Rice分布的数值计算

我在极坐标下的二维无规行走中讨论到Rice分布:

(1)   \begin{equation*} p_R\left(r\right)=\frac{r}{\sigma^2}I_0\left(\frac{r\mu_r}{\sigma^2}\right)\exp\left(-\frac{r^2+\mu_r^2}{2\sigma^2}\right) \end{equation*}

当无规行走发生的“位置”(\mu_r)离原点很远时,\mu_r值很大,而分布的极值也大至处于r=\mu_r处,因此,能看到分布主要特征的r范围也在\mu_r附近。这时,式(1)中的第一类修正贝塞尔函数I_0\left(\frac{r\mu_r}{\sigma^2}\right)的值会很大,而自然指数项\exp\left(-\frac{r^2+\mu_r^2}{2\sigma^2}\right)会很小,但整个式(1)的值仍然是适中的。在MATLAB输入上式计算时,会因为计算过程中涉及到很大的和很小的值,所以尽管最终结果的值是适中的,计算也会溢出。这时可以利用第一类修正贝塞尔函数的渐近展开1。当\alpha为定值、\left|z\right|很大且\left|\mathrm{arg}z\right|<\frac{\pi}{2}时,

(2)   \begin{equation*} \begin{aligned} I_\alpha\left(z\right)&=\frac{\exp\left(z\right)}{\sqrt{2\pi z}}\left[1-\frac{4\alpha^2-1}{8z}-\frac{\left(4\alpha^2-1\right)\left(4\alpha^2-9\right)}{2!\left(8z\right)^2}\right.\\ &\left.-\frac{\left(4\alpha^2-1\right)\left(4\alpha^2-9\right)\left(4\alpha^2-25\right)}{3!\left(8z\right)^3}+\cdots\right]\\ &\approx\frac{\exp\left(z\right)}{\sqrt{2\pi z}}\left[1+O\left(z^{-1}\right)\right] \end{aligned} \end{equation*}

z越大,级数会衰减得越快.如果z足够大,I_0可近似为\frac{\exp\left(z\right)}{\sqrt{2\pi z}}。这个近似式并不改变I_0很大的事实。但如果将式(2)代入式(1),

(3)   \begin{equation*} p_R\left(r\right)=\frac{r\exp\left[-\frac{\left(r-\mu_r\right)^2}{2\sigma^2}\right]}{\sqrt{2\pi r\mu_r\sigma^2}}\left[1+\frac{\sigma^2}{8r\mu_r}-\frac{9\sigma^4}{128r^2\mu_r^2}+\cdots\right] \end{equation*}

可见,无论\mu_r多大,p_r\left(r\right)其实只跟r\mu_r之差有关。式(3)只需要计算\exp\left[-\left(r-\mu_r\right)^2\right]。由于Rice分布的r范围主要在\mu_r附近,因此r\mu_r之差是很小的,因此这一计算不会溢出。

实际计算时,可先判断\mu_r\sigma^2的取值是否使式(1)的计算溢出了,若溢出,按式(3)计算时,可根据\mu_r\sigma^2的取值大小决定舍去级数的哪些尾项。按照MATLAB的计算极限,能让式(1)溢出的情况,也就必然能使式(3)的所有尾项都舍去了。