mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-11-03 21:40:52 -05:00 
			
		
		
		
	
		
			
	
	
		
			120 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			120 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
								 | 
							
								[section:rayleigh Rayleigh Distribution]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								``#include <boost/math/distributions/rayleigh.hpp>``
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   namespace boost{ namespace math{
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   template <class RealType = double,
							 | 
						||
| 
								 | 
							
								             class ``__Policy``   = ``__policy_class`` >
							 | 
						||
| 
								 | 
							
								   class rayleigh_distribution;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   typedef rayleigh_distribution<> rayleigh;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   template <class RealType, class ``__Policy``>
							 | 
						||
| 
								 | 
							
								   class rayleigh_distribution
							 | 
						||
| 
								 | 
							
								   {
							 | 
						||
| 
								 | 
							
								   public:
							 | 
						||
| 
								 | 
							
								      typedef RealType value_type;
							 | 
						||
| 
								 | 
							
								      typedef Policy   policy_type;
							 | 
						||
| 
								 | 
							
								      // Construct:
							 | 
						||
| 
								 | 
							
								      rayleigh_distribution(RealType sigma = 1)
							 | 
						||
| 
								 | 
							
								      // Accessors:
							 | 
						||
| 
								 | 
							
								      RealType sigma()const;
							 | 
						||
| 
								 | 
							
								   };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   }} // namespaces
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								The [@http://en.wikipedia.org/wiki/Rayleigh_distribution Rayleigh distribution]
							 | 
						||
| 
								 | 
							
								is a continuous distribution with the
							 | 
						||
| 
								 | 
							
								[@http://en.wikipedia.org/wiki/Probability_density_function probability density function]:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								f(x; sigma) = x * exp(-x[super 2]/2 [sigma][super 2]) / [sigma][super 2]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								For sigma parameter [sigma][space] > 0, and x > 0.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								The Rayleigh distribution is often used where two orthogonal components
							 | 
						||
| 
								 | 
							
								have an absolute value,
							 | 
						||
| 
								 | 
							
								for example, wind velocity and direction may be combined to yield a wind speed,
							 | 
						||
| 
								 | 
							
								or real and imaginary components may have absolute values that are Rayleigh distributed.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								The following graph illustrates how the Probability density Function(pdf) varies with the shape parameter [sigma]:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								[graph rayleigh_pdf]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								and the Cumulative Distribution Function (cdf)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								[graph rayleigh_cdf]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								[h4 Related distributions]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								The absolute value of two independent normal distributions X and Y, [radic] (X[super 2] + Y[super 2])
							 | 
						||
| 
								 | 
							
								is a Rayleigh distribution.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								The [@http://en.wikipedia.org/wiki/Chi_distribution Chi],
							 | 
						||
| 
								 | 
							
								[@http://en.wikipedia.org/wiki/Rice_distribution Rice]
							 | 
						||
| 
								 | 
							
								and [@http://en.wikipedia.org/wiki/Weibull_distribution Weibull] distributions are generalizations of the
							 | 
						||
| 
								 | 
							
								[@http://en.wikipedia.org/wiki/Rayleigh_distribution Rayleigh distribution].
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								[h4 Member Functions]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   rayleigh_distribution(RealType sigma = 1);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Constructs a [@http://en.wikipedia.org/wiki/Rayleigh_distribution
							 | 
						||
| 
								 | 
							
								Rayleigh distribution] with [sigma] /sigma/.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Requires that the [sigma] parameter is greater than zero,
							 | 
						||
| 
								 | 
							
								otherwise calls __domain_error.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   RealType sigma()const;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Returns the /sigma/ parameter of this distribution.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								[h4 Non-member Accessors]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								All the [link math_toolkit.dist_ref.nmp usual non-member accessor functions] that are generic to all
							 | 
						||
| 
								 | 
							
								distributions are supported: __usual_accessors.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								The domain of the random variable is \[0, max_value\].
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								[h4 Accuracy]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								The Rayleigh distribution is implemented in terms of the
							 | 
						||
| 
								 | 
							
								standard library `sqrt` and `exp` and as such should have very low error rates.
							 | 
						||
| 
								 | 
							
								Some constants such as skewness and kurtosis were calculated using
							 | 
						||
| 
								 | 
							
								NTL RR type with 150-bit accuracy, about 50 decimal digits.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								[h4 Implementation]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								In the following table [sigma][space] is the sigma parameter of the distribution,
							 | 
						||
| 
								 | 
							
								/x/ is the random variate, /p/ is the probability and /q = 1-p/.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								[table
							 | 
						||
| 
								 | 
							
								[[Function][Implementation Notes]]
							 | 
						||
| 
								 | 
							
								[[pdf][Using the relation: pdf = x * exp(-x[super 2])/2 [sigma][super 2] ]]
							 | 
						||
| 
								 | 
							
								[[cdf][Using the relation: p = 1 - exp(-x[super 2]/2) [sigma][super 2][space] = -__expm1(-x[super 2]/2) [sigma][super 2]]]
							 | 
						||
| 
								 | 
							
								[[cdf complement][Using the relation: q =  exp(-x[super 2]/ 2) * [sigma][super 2] ]]
							 | 
						||
| 
								 | 
							
								[[quantile][Using the relation: x = sqrt(-2 * [sigma] [super 2]) * log(1 - p)) = sqrt(-2 * [sigma] [super 2]) * __log1p(-p))]]
							 | 
						||
| 
								 | 
							
								[[quantile from the complement][Using the relation: x = sqrt(-2 * [sigma] [super 2]) * log(q)) ]]
							 | 
						||
| 
								 | 
							
								[[mean][[sigma] * sqrt([pi]/2) ]]
							 | 
						||
| 
								 | 
							
								[[variance][[sigma][super 2] * (4 - [pi]/2) ]]
							 | 
						||
| 
								 | 
							
								[[mode][[sigma] ]]
							 | 
						||
| 
								 | 
							
								[[skewness][Constant from [@http://mathworld.wolfram.com/RayleighDistribution.html Weisstein, Eric W. "Weibull Distribution." From MathWorld--A Wolfram Web Resource.] ]]
							 | 
						||
| 
								 | 
							
								[[kurtosis][Constant from [@http://mathworld.wolfram.com/RayleighDistribution.html Weisstein, Eric W. "Weibull Distribution." From MathWorld--A Wolfram Web Resource.] ]]
							 | 
						||
| 
								 | 
							
								[[kurtosis excess][Constant from [@http://mathworld.wolfram.com/RayleighDistribution.html Weisstein, Eric W. "Weibull Distribution." From MathWorld--A Wolfram Web Resource.] ]]
							 | 
						||
| 
								 | 
							
								]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								[h4 References]
							 | 
						||
| 
								 | 
							
								* [@http://en.wikipedia.org/wiki/Rayleigh_distribution ]
							 | 
						||
| 
								 | 
							
								* [@http://mathworld.wolfram.com/RayleighDistribution.html Weisstein, Eric W. "Rayleigh Distribution." From MathWorld--A Wolfram Web Resource.]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								[endsect] [/section:Rayleigh Rayleigh]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								[/
							 | 
						||
| 
								 | 
							
								  Copyright 2006 John Maddock and Paul A. Bristow.
							 | 
						||
| 
								 | 
							
								  Distributed under the Boost Software License, Version 1.0.
							 | 
						||
| 
								 | 
							
								  (See accompanying file LICENSE_1_0.txt or copy at
							 | 
						||
| 
								 | 
							
								  http://www.boost.org/LICENSE_1_0.txt).
							 | 
						||
| 
								 | 
							
								]
							 | 
						||
| 
								 | 
							
								
							 |