/// <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); }
/// <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; }
/// <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; }
/// <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; }
/// <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; }
/// <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; }