Exemplo n.º 1
0
        /// <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;
        }