/// <summary> /// Сдвиг случайной величины /// </summary> /// <param name="A"></param> /// <param name="m"></param> /// <returns></returns> public static ConRandVal operator -(ConRandVal A, double m) { ConRandVal S = new ConRandVal(A); S.x = (double t) => { return(t - m); }; return(S); }
//Операторы /// <summary> /// Случайная величина в степени /// </summary> /// <param name="a"></param> /// <param name="n"></param> /// <returns></returns> public static ConRandVal operator ^(ConRandVal a, int n) { ConRandVal S = new ConRandVal(a); S.x = (double t) => { return(Math.Pow(t, n)); }; return(S); }
/// <summary> /// По неравенству Чебышева вероятность того, что случайная величина отклонится от мат. ожидания не менее чем на eps /// </summary> /// <param name="R"></param> /// <param name="eps"></param> public static void NerCheb(ConRandVal R, double eps) { Console.WriteLine("<= {0}", R.Dis / eps / eps); }
/// <summary> /// Центральный момент /// </summary> /// <param name="R"></param> /// <param name="n"></param> /// <returns></returns> public static double CenM(ConRandVal R, int n) { return(MatExp((R - R.M) ^ n)); }
/// <summary> /// Начальный момент /// </summary> /// <param name="R"></param> /// <param name="n"></param> /// <returns></returns> public static double BegM(ConRandVal R, int n) { return(MatExp((R) ^ n)); }
/// <summary> /// Дисперсия /// </summary> /// <param name="R"></param> /// <returns></returns> public static double Dispersion(ConRandVal R) { return /*CenM(R, 2);*/ (MatExp(R ^ 2) - R.M * R.M); }
//Методы /// <summary> /// Мат. ожидание /// </summary> /// <param name="R"></param> /// <returns></returns> public static double MatExp(ConRandVal R) { Func <double, double> xf = (double t) => { return(R.x(t) * R.f(t)); }; return(FuncMethods.DefInteg.ImproperFirstKind(xf)); }
/// <summary> /// Конструктор нормального распределения по умолчанию /// </summary> public ConRandVal() { ConRandVal T = new ConRandVal(BasisDistribution.Normal, 0, 1); this.f = T.f; this.m = T.m; this.d = T.d; }
} //по плотности распределения /// <summary> /// Конструктор копирования /// </summary> /// <param name="S"></param> public ConRandVal(ConRandVal S) { this.f = S.f; this.F = S.F; this.x = S.x; this.TypeValue = S.TypeValue; }