/// <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); }