Exemple #1
0
 public Triangular(IDistribution d)
 {
     this._distribution = d;
     _sampling = _distribution.GetSampling();
     Center = (Xmax + Xmin) / 2;
     DeltaX = (Xmax - Xmin) / 2;
 }
        /// <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;
        }
        /// <summary>
        /// Применить корректировку)(getWeight) и поработать с нормой .
        /// </summary>
        /// <param name="distribution"></param>
        /// <param name="kernal"></param>
        public void Learm(IDistribution distribution, IKernal kernal)
        {
            double norma = 0.0;
            List<double> ErrFunctionValues = new List<double>();
            LearmSampling = distribution.GetSampling().ToList();
            Signals = new List<double>();
            List<double> faktOj = new List<double>();//Подать на выход новой сети  разность между фактическим и ошидаемым значениями
            do
            {
                foreach (double sample in LearmSampling)
                {
                    Signals.Add(kernal.getDensityFunctionValue(sample));//выходные сигналы сети ска
                }

                for (int i = 0; i < LearmSampling.Count; i++)
                {
                    ErrFunctionValues.Add(this.ErrFunction(LearmSampling.ElementAt(i), Signals.ElementAt(i)));
                }
                List<double> BaskSignals = new List<double>();//Замена функций их производными
                for (int i = 0; i < Signals.Count; i++)//2
                {
                    BaskSignals.Add(kernal.getDerivative(LearmSampling.ElementAt(i)));
                }
                // DeltaWeight = -N*GetGradirnt()
            }
            while (norma > C);
            //Weights//вектор весов
        }
 public EpanichnikovKernal(IDistribution distributiob)
 {
     this._distribution = distributiob;
     _sampling = _distribution.GetSampling();
     r = new Random();
 }
        public GaussianKernal(IDistribution distibution)
        {
            this._distribution = distibution;
            _sampling = _distribution.GetSampling();

        }
 public QuarticKernal(IDistribution distr)
 {
     this._distribution = distr;
     _sampling = _distribution.GetSampling();
 }