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