Пример #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="other"></param>
        /// <returns></returns>
        public VectorXD Solve(VectorXD other, DenseSolverType denseSolverType = DenseSolverType.ColPivHouseholderQR)
        {
            double[] vout = new double[Rows];
            switch (denseSolverType)
            {
            case DenseSolverType.PartialPivLU:
                EigenDenseUtilities.SolvePartialPivLU(GetValues(), Rows, Cols, other.GetValues(), vout);
                break;

            case DenseSolverType.FullPivLU:
                EigenDenseUtilities.SolveFullPivLU(GetValues(), Rows, Cols, other.GetValues(), vout);
                break;

            case DenseSolverType.LDLT:
                EigenDenseUtilities.SolveLDLT(GetValues(), Rows, Cols, other.GetValues(), vout);
                break;

            case DenseSolverType.LLT:
                EigenDenseUtilities.SolveLLT(GetValues(), Rows, Cols, other.GetValues(), vout);
                break;

            case DenseSolverType.ColPivHouseholderQR:
            default:
                EigenDenseUtilities.SolveColPivHouseholderQr(GetValues(), Rows, Cols, other.GetValues(), vout);
                break;
            }

            return(new VectorXD(vout));
        }