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);
        }
Ejemplo n.º 2
0
        Coord newPointGZ(Coord x)
        {
            int length = x.coord.Length;

            double[] arr_p = new double[length];
            Coord    p     = new Coord(arr_p);

            points          = points % amountVar;
            p.coord[points] = Func.diff_4(y, x, points);
            p = p / p.Norma;
            LinearSearch f1 = new LinearSearch(x, p, y);

            f1.Svenn5();
            f1.Bolcano(5);
            f1.Davidon();
            alfa = f1.alfa_min;
            Coord x_2 = x + alfa * p;

            points++;
            return(x_2);
        }