/// <summary>
        /// Расчет одного значения
        /// </summary>
        /// <param name="inp">Независимая переменная</param>
        /// <returns>Прогноз</returns>
        public double Predict(double inp)
        {
            Vector data = ExtensionOfFeatureSpace.Polinomial(inp, X.N - 1);
            double outp = GeomFunc.ScalarProduct(data, param);

            return(outp);
        }
        /// <summary>
        /// Расчет одного значения
        /// </summary>
        /// <param name="inp">Независимая переменная</param>
        /// <returns>Прогноз</returns>
        public double Predict(double inp)
        {
            Vector data = ExtensionOfFeatureSpace.GaussRBF(inp, X, sig);
            double outp = GeomFunc.ScalarProduct(data, param);

            return(outp);
        }
        /// <summary>
        /// Полиномиальная регрессия
        /// </summary>
        public PolynomialRegression(Vector inp, Vector outp, int nPoly = 3)
        {
            _nPoly = nPoly;
            Vector[] vects = new Vector[inp.N];

            for (int i = 0; i < inp.N; i++)
            {
                vects[i] = ExtensionOfFeatureSpace.Polinomial(inp[i], nPoly);
            }

            mR = new MultipleRegression(vects, outp);
        }
        /// <summary>
        /// Регрессия по косинусам
        /// </summary>
        /// <param name="inp">Вектор входа</param>
        /// <param name="outp">Вектор входа</param>
        /// <param name="cos"></param>
        public CosRegression(Vector inp, Vector outp, int cos = 3)
        {
            _cos = cos;
            Vector[] vects = new Vector[inp.N];

            for (int i = 0; i < inp.N; i++)
            {
                vects[i] = ExtensionOfFeatureSpace.SinCos(inp[i], cos);
                vects[i] = vects[i].AddOne();
            }

            mR = new MultipleRegression(vects, outp);
        }
        private void Param()
        {
            A = new Matrix(n, n);

            Vector[] vect = new Vector[n];
            for (int i = 0; i < n; i++)
            {
                vect[i] = ExtensionOfFeatureSpace.GaussRBF(newX[i], newX, sigma);
            }

            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < n; j++)
                {
                    A[i, j] = vect[i][j];
                }
            }

            Kramer kram = new Kramer();

            param = kram.GetAnswer(A, newY);
        }
        private void Param()
        {
            Matrix A = new Matrix(X.N, X.N);

            Vector[] vect = new Vector[X.N];
            for (int i = 0; i < X.N; i++)
            {
                vect[i] = ExtensionOfFeatureSpace.Polinomial(X[i], X.N - 1);
            }

            for (int i = 0; i < X.N; i++)
            {
                for (int j = 0; j < X.N; j++)
                {
                    A[i, j] = vect[i][j];
                }
            }

            Kramer kram = new Kramer();

            param = kram.GetAnswer(A, Y);
        }
        /// <summary>
        /// Прогноз
        /// </summary>
        /// <param name="inp">Значение незав. переменной</param>
        public double Predict(double inp)
        {
            Vector X = ExtensionOfFeatureSpace.SinCos(inp, _cos);

            return(mR.Predict(X.AddOne()));
        }
        /// <summary>
        /// Прогноз
        /// </summary>
        /// <param name="inp">Значение незав. переменной</param>
        public double Predict(double inp)
        {
            Vector X = ExtensionOfFeatureSpace.GaussRBF(inp, newX, sigma);

            return(GeomFunc.ScalarProduct(X, param));
        }
        /// <summary>
        /// Прогноз
        /// </summary>
        /// <param name="inp">Значение незав. переменной</param>
        public double Predict(double inp)
        {
            Vector X = ExtensionOfFeatureSpace.Polinomial(inp, _nPoly);

            return(mR.Predict(X));
        }
        /// <summary>
        /// Прогноз
        /// </summary>
        /// <param name="inp">Значение незав. переменной</param>
        public double Predict(double inp)
        {
            Vector X = ExtensionOfFeatureSpace.Sinc(inp, newX);

            return(GeomFunc.ScalarProduct(X, param));
        }
        /// <summary>
        /// Прогноз
        /// </summary>
        /// <param name="inp">вход</param>
        /// <returns>выход</returns>
        public double Predict(double inp)
        {
            Vector X = ExtensionOfFeatureSpace.Polinomial(inp, n - 1);

            return(GeomFunc.ScalarProduct(X, param));
        }