/// <summary> /// Вычисление градиента только для ядра гаусса /// </summary> /// <param name="distribution"></param> public static double Grad(IDistribution distribution, GaussianKernal kernal) { double min = distribution.GetSampling().Min(); double max = distribution.GetSampling().Max(); double x0 = new Random().Next((int)min, (int)max); double xi = x0; double step = 0.0; double YMin = kernal.getDerivative(xi); double xNext = xi - EPSSILON * kernal.getDerivative(xi); while (kernal.getDerivative(xNext) - kernal.getDerivative(xi) > C) { step = xi - EPSSILON * kernal.getDerivative(xi) + xi; YMin = kernal.getDerivative(xi); xi = xNext; xNext = xi + step; } return YMin; }