示例#1
0
        /// <summary>
        /// Method is used to get matrix rang.
        /// </summary>
        /// <param name="matrix">Initial matrix to get its rang.</param>
        /// <returns>Matrix rang.</returns>
        public static int GetRang(MatrixT <T> matrix)
        {
            int rank = 0;
            int q    = 1;

            while (q <= MatrixT <int> .GetMinValue(matrix.Elements.GetLength(0), matrix.Elements.GetLength(1)))
            {
                MatrixT <T> matbv = new MatrixT <T>(q, q);

                for (int i = 0; i < (matrix.Elements.GetLength(0) - (q - 1)); i++)
                {
                    for (int j = 0; j < (matrix.Elements.GetLength(1) - (q - 1)); j++)
                    {
                        for (int k = 0; k < q; k++)
                        {
                            for (int c = 0; c < q; c++)
                            {
                                matbv[k, c] = matrix[i + k, j + c];
                            }
                        }

                        if (MatrixT <T> .GetMatrixDeterminant(matbv) != 0)
                        {
                            rank = q;
                        }
                    }
                }

                q++;
            }

            return(rank);
        }