コード例 #1
0
        /// <summary>
        ///   Creates a new <see cref="GeneralContinuousDistribution"/>
        ///   using only a cumulative distribution function definition.
        /// </summary>
        ///
        /// <param name="support">The distribution's support over the real line.</param>
        /// <param name="cdf">A cumulative distribution function.</param>
        /// <param name="method">The integration method to use for numerical computations.</param>
        ///
        /// <returns>A <see cref="GeneralContinuousDistribution"/> created from the
        /// <paramref name="cdf"/> whose measures and functions are computed using
        /// numerical integration and differentiation.</returns>
        ///
        public static GeneralContinuousDistribution FromDistributionFunction(
            DoubleRange support, Func <double, double> cdf, IUnivariateIntegration method)
        {
            GeneralContinuousDistribution dist = new GeneralContinuousDistribution();

            dist.support = support;
            dist.cdf     = cdf;
            dist.method  = method;
            return(dist);
        }
コード例 #2
0
        /// <summary>
        ///   Creates a new <see cref="GeneralContinuousDistribution"/> with the given PDF and CDF functions.
        /// </summary>
        ///
        /// <param name="distribution">A distribution whose properties will be numerically estimated.</param>
        ///
        public GeneralContinuousDistribution(UnivariateContinuousDistribution distribution)
        {
            if (distribution == null)
            {
                throw new ArgumentNullException("distribution");
            }

            this.method  = new InfiniteAdaptiveGaussKronrod(100);
            this.pdf     = distribution.ProbabilityDensityFunction;
            this.cdf     = distribution.DistributionFunction;
            this.support = distribution.Support;
        }
コード例 #3
0
        /// <summary>
        ///   Creates a new <see cref="GeneralContinuousDistribution"/> with the given PDF and CDF functions.
        /// </summary>
        ///
        /// <param name="support">The distribution's support over the real line.</param>
        /// <param name="density">A probability density function.</param>
        /// <param name="distribution">A cumulative distribution function.</param>
        ///
        public GeneralContinuousDistribution(DoubleRange support,
                                             Func <double, double> density, Func <double, double> distribution)
        {
            if (density == null)
            {
                throw new ArgumentNullException("density");
            }

            if (distribution == null)
            {
                throw new ArgumentNullException("distribution");
            }

            this.method  = new InfiniteAdaptiveGaussKronrod(100);
            this.pdf     = density;
            this.cdf     = distribution;
            this.support = support;
        }
コード例 #4
0
 /// <summary>
 ///   Creates a new <see cref="GeneralContinuousDistribution"/> 
 ///   using only a cumulative distribution function definition.
 /// </summary>
 /// 
 /// <param name="support">The distribution's support over the real line.</param>
 /// <param name="cdf">A cumulative distribution function.</param>
 /// <param name="method">The integration method to use for numerical computations.</param>
 /// 
 /// <returns>A <see cref="GeneralContinuousDistribution"/> created from the 
 /// <paramref name="cdf"/> whose measures and functions are computed using 
 /// numerical integration and differentiation.</returns>
 /// 
 public static GeneralContinuousDistribution FromDistributionFunction(
     DoubleRange support, Func<double, double> cdf, IUnivariateIntegration method)
 {
     GeneralContinuousDistribution dist = new GeneralContinuousDistribution();
     dist.support = support;
     dist.cdf = cdf;
     dist.method = method;
     return dist;
 }
コード例 #5
0
        /// <summary>
        ///   Creates a new <see cref="GeneralContinuousDistribution"/> with the given PDF and CDF functions.
        /// </summary>
        /// 
        /// <param name="support">The distribution's support over the real line.</param>
        /// <param name="density">A probability density function.</param>
        /// <param name="distribution">A cumulative distribution function.</param>
        /// 
        public GeneralContinuousDistribution(DoubleRange support,
            Func<double, double> density, Func<double, double> distribution)
        {
            if (density == null)
                throw new ArgumentNullException("density");

            if (distribution == null)
                throw new ArgumentNullException("distribution");

            this.method = new InfiniteAdaptiveGaussKronrod(100);
            this.pdf = density;
            this.cdf = distribution;
            this.support = support;
        }
コード例 #6
0
        /// <summary>
        ///   Creates a new <see cref="GeneralContinuousDistribution"/> with the given PDF and CDF functions.
        /// </summary>
        /// 
        /// <param name="distribution">A distribution whose properties will be numerically estimated.</param>
        /// 
        public GeneralContinuousDistribution(UnivariateContinuousDistribution distribution)
        {
            if (distribution == null)
                throw new ArgumentNullException("distribution");

            this.method = new InfiniteAdaptiveGaussKronrod(100);
            this.pdf = distribution.ProbabilityDensityFunction;
            this.cdf = distribution.DistributionFunction;
            this.support = distribution.Support;
        }