#include <boost/math/distributions/cauchy.hpp>
template <class RealType = double, class Policy = policies::policy<> > class cauchy_distribution; typedef cauchy_distribution<> cauchy; template <class RealType, class Policy> class cauchy_distribution { public: typedef RealType value_type; typedef Policy policy_type; BOOST_MATH_GPU_ENABLED cauchy_distribution(RealType location = 0, RealType scale = 1); BOOST_MATH_GPU_ENABLED RealType location()const; BOOST_MATH_GPU_ENABLED RealType scale()const; };
柯西-洛伦兹分布以奥古斯丁·柯西和亨德里克·洛伦兹的名字命名。它是一个连续概率分布,其概率密度函数 (PDF) 由下式给出:
位置参数 x0 是分布峰值的位置(分布的众数),而尺度参数 γ 指定 PDF 在最大高度一半处的半宽度。如果位置为零,尺度为 1,则结果为标准柯西分布。
该分布在物理学中很重要,因为它是描述受迫共振的微分方程的解,而在光谱学中,它是谱线线形的描述。
下图显示了分布如何随位置参数变化而移动
下图显示了形状(尺度)参数如何改变分布
BOOST_MATH_GPU_ENABLED cauchy_distribution(RealType location = 0, RealType scale = 1);
构造一个柯西分布,其位置参数为 location,尺度参数为 scale。当这些参数取默认值(location = 0,scale = 1)时,结果为标准柯西分布。
要求 scale > 0,否则调用 domain_error。
BOOST_MATH_GPU_ENABLED RealType location()const;
返回分布的位置参数。
BOOST_MATH_GPU_ENABLED RealType scale()const;
返回分布的尺度参数。
支持所有分布通用的常用非成员访问器函数:累积分布函数、概率密度函数、分位数、风险函数、累积风险函数、__logcdf、__logpdf、均值、中位数、众数、方差、标准差、偏度、峰度、超额峰度、范围 和 支持。对于此分布,所有非成员访问器函数都标有 BOOST_MATH_GPU_ENABLED
,并且可以在主机和设备上运行。
但请注意,柯西分布没有均值、标准差等。请参阅 数学上未定义的函数,以控制这些函数是否应因 BOOST_STATIC_ASSERTION_FAILURE 而编译失败,这是默认行为。
或者,如果调用 均值、标准差、方差、偏度、峰度 和 超额峰度 函数,它们都将返回 domain_error。
随机变量的域是 [-[max_value], +[min_value]]。
柯西分布是根据标准库 tan
和 atan
函数实现的,因此应该具有非常低的错误率。
在下表中,x0 是分布的位置参数,γ 是其尺度参数,x 是随机变量,p 是概率,q = 1-p。
函数 |
实现说明 |
---|---|
|
使用关系式:pdf = 1 / (π * γ * (1 + ((x - x0 ) / γ)2)) |
cdf 及其补 |
cdf 通常由下式给出
但这在 x -> -∞ 时会遭受抵消误差。 相反,使用基于函数 atan2 的数学上等效的表达式
通过对称性,补是
|
分位数 |
无论我们是从概率还是从其补数开始,都使用相同的过程。首先,将参数 p 减小到 [-0.5, 0.5] 范围,然后使用关系式
我们是从 x0 加还是减取决于我们是否从补数开始。 |
众数 |
位置参数。 |