C#, cálculo numérico: método de cálculo y programa fuente de distribución F basado en la función Beta

 

utilizando el sistema;

espacio de nombres Legalsoft.Truffer
{     public class Fdist : Beta     {         private double nu1 { get; colocar; }         privado doble nu2 { obtener; colocar; }         fac doble privado { obtener; colocar; }




        public Fdist(doble nnu1, doble nnu2)
        {             this.nu1 = nnu1;             esto.nu2 = nnu2;             if (nu1 <= 0.0 || nu2 <= 0.0)             {                 throw new Exception("bad nu1,nu2 in Fdist");             }             fac = 0.5 * (nu1 * Math.Log(nu1) + nu2 * Math.Log(nu2)) + Globals.gammln(0.5 * (nu1 + nu2)) - Globals.gammln(0.5 * nu1) - Globals.gammln (0,5 * nu2);         }







        public double p(doble f)
        {             if (f <= 0.0)             {                 throw new Exception("bad f in Fdist");             }             return Math.Exp((0.5 * nu1 - 1.0) * Math.Log(f) - 0.5 * (nu1 + nu2) * Math.Log(nu2 + nu1 * f) + fac);         }





        public double cdf(doble f)
        {             if (f < 0.0)             {                 throw new Exception("bad f in Fdist");             }             return betai(0.5 * nu1, 0.5 * nu2, nu1 * f / (nu2 + nu1 * f));         }





        public double invcdf(doble p)
        {             if (p <= 0.0 || p >= 1.0)             {                 throw new Exception("mala p en Fdist");             }             doble x = invbetai(p, 0.5 * nu1, 0.5 * nu2);             devuelve nu2 * x / (nu1 * (1.0 - x));         }  }     }









 

Supongo que te gusta

Origin blog.csdn.net/beijinghorn/article/details/131745220
Recomendado
Clasificación