private static MatrixNxN <T> CreateMatrixForCramersRule(MatrixNxN <T> matrixFrom, int skipColumn, List <T> equationRightSideResults)
        {
            var matrix = new MatrixNxN <T>(matrixFrom);

            matrix.SetColumn(skipColumn, equationRightSideResults);
            return(matrix);
        }
        private static MatrixNxN <T> CreateSubmatrix(MatrixNxN <T> matrix, int skipRow, int skipColumn)
        {
            var submatrix = new MatrixNxN <T>(matrix.Rows - 1);
            var column    = 0;

            for (int k = 0; k < matrix.Columns; k++)
            {
                if (k != skipColumn)
                {
                    var columnValues = matrix.GetColumn(k).ToList();
                    columnValues.RemoveAt(skipRow);
                    submatrix.SetColumn(column, columnValues);
                    column++;
                }
            }
            return(submatrix);
        }