def row_echelon(matlist, K): """ Returns the row echelon form of a matrix with diagonal elements reduced to 1. Examples ======== >>> from sympy.matrices.densesolve import row_echelon >>> from sympy import QQ >>> a = [ ... [QQ(3), QQ(7), QQ(4)], ... [QQ(2), QQ(4), QQ(5)], ... [QQ(6), QQ(2), QQ(3)]] >>> row_echelon(a, QQ) [[1, 7/3, 4/3], [0, 1, -7/2], [0, 0, 1]] See Also ======== rref """ result_matlist = copy.deepcopy(matlist) nrow = len(result_matlist) for i in range(nrow): if result_matlist[i][i] != 1 and result_matlist[i][i] != 0: rowmul(result_matlist, i, 1 / result_matlist[i][i], K) for j in range(i + 1, nrow): if result_matlist[j][i] != 0: rowadd(result_matlist, j, i, -result_matlist[j][i], K) return result_matlist
def row_echelon(matlist, K): """ Returns the row echelon form of a matrix with diagonal elements reduced to 1. Examples ======== >>> from sympy.matrices.densesolve import row_echelon >>> from sympy import QQ >>> a = [ ... [QQ(3), QQ(7), QQ(4)], ... [QQ(2), QQ(4), QQ(5)], ... [QQ(6), QQ(2), QQ(3)]] >>> row_echelon(a, QQ) [[1, 7/3, 4/3], [0, 1, -7/2], [0, 0, 1]] See Also ======== rref """ result_matlist = copy.deepcopy(matlist) nrow = len(result_matlist) for i in range(nrow): if (result_matlist[i][i] != 1 and result_matlist[i][i] != 0): rowmul(result_matlist, i, 1/result_matlist[i][i], K) for j in range(i + 1, nrow): if (result_matlist[j][i] != 0): rowadd(result_matlist, j, i, -result_matlist[j][i], K) return result_matlist