C#,数值计算——正态分布(Normal distribution)的计算方法与源程序

using System;

namespace Legalsoft.Truffer
{
    public class Normaldist : Erf
    {
        private double mu { get; set; }
        private double sig { get; set; }

        public Normaldist(double mmu = 0.0, double ssig = 1.0)
        {
            this.mu = mmu;
            this.sig = ssig;
            if (sig <= 0.0)
            {
                throw new Exception("bad sig in Normaldist");
            }
        }

        public double p(double x)
        {
            return (0.398942280401432678 / sig) * Math.Exp(-0.5 * Globals.SQR((x - mu) / sig));
        }

        public double cdf(double x)
        {
            return 0.5 * erfc(-0.707106781186547524 * (x - mu) / sig);
        }

        public double invcdf(double p)
        {
            if (p <= 0.0 || p >= 1.0)
            {
                throw new Exception("bad p in Normaldist");
            }
            return -1.41421356237309505 * sig * inverfc(2.0 * p) + mu;
        }
    }
 }
 

猜你喜欢

转载自blog.csdn.net/beijinghorn/article/details/131988613
今日推荐