Ejemplo n.º 1
0
        //Функция для высчитывания новой точки
        Coord newPoint(Coord x1, Coord x2, opt OptBeta)
        {
            opt Beta = OptBeta;

            Grad = Coord.Gradient(y, x2, amountVar);
            //Если k = 1, n+1, 2n+1...
            if (k % amountVar == 1)
            {
                p = -Grad;
            }
            else
            {
                double beta = Beta(x2, x1);
                p = -Grad + (beta * p);
            }
            //Запускаем линейный поиск
            p = p / p.Norma;
            LinearSearch f1 = new LinearSearch(x2, p, y);

            f1.Svenn(20);
            f1.Bolcano(20);
            f1.Davidon();
            alfa = f1.alfa_min;
            p    = p / p.Norma;
            Coord x3 = x2 + alfa * p;

            return(x3);
        }