//операторы /// <summary> /// Смещение СВ /// </summary> /// <param name="A"></param> /// <param name="m"></param> /// <returns></returns> public static DisRandVal operator -(DisRandVal A, double m) { DisRandVal M = new DisRandVal(A); for (int i = 0; i < M.X.Deg; i++) { M.X[i] -= m; } return(M); }
/// <summary> /// Случайная величина в степени /// </summary> /// <param name="A"></param> /// <param name="n"></param> /// <returns></returns> public static DisRandVal operator ^(DisRandVal A, int n) { DisRandVal M = new DisRandVal(A); for (int i = 0; i < M.X.Deg; i++) { M.X[i] = Math.Pow(M.X[i], n); } return(M); }
/// <summary> /// Мат. ожидание СВ /// </summary> /// <param name="R"></param> /// <returns></returns> public static double MatExp(DisRandVal R) { double sum = 0; for (int i = 0; i < R.X.Deg; i++) { sum += R.X[i] * R.p[i]; } return(sum); }
/// <summary> /// Конструктор по умолчанию /// </summary> /// <param name="n"></param> public DisRandVal(int n) { double[] a = new double[n]; X = new Vectors(n); p = new Vectors(n); double val = 1.0 / n; for (int i = 0; i < n; i++) { a[i] = val; } DisRandVal r = new DisRandVal(a); this.X = r.X; this.p = r.p; }
/// <summary> /// По неравенству Чебышева вероятность того, что случайная величина отклонится от мат. ожидания не менее чем на eps /// </summary> /// <param name="R"></param> /// <param name="eps"></param> public static void NerCheb(DisRandVal 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(DisRandVal 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(DisRandVal R, int n) { return(MatExp((R) ^ n)); }
/// <summary> /// Дисперсия /// </summary> /// <param name="R"></param> /// <returns></returns> public static double Dispersion(DisRandVal R) { return(CenM(R, 2)); }
/// <summary> /// Конструктор копирования /// </summary> /// <param name="r"></param> public DisRandVal(DisRandVal r) { X = new Vectors(r.X); p = new Vectors(r.p); }