from libsolve2 import * from fractions import Fraction def f_eye(dim): return Matrix([ [0 if i != j else 1 for i in range(dim)] for j in range(dim) ]) matrices = { 'A': Matrix([ [ 2, -3, 1, 3], [ 9, -9, 1, 4], [-5, 2, -6, -2], [-5, 2, -1, -7] ]), 'B': Matrix([ [ 2, -3, 1, 3], [ 5, -7, 1, 2], [-5, 2, -6, -2], [-9, 4, -1, -9] ]), 'C': Matrix([ [-6, -8, -4, 3], [ 1, 1, 3, -2], [-1, -4, -7, 1], [ 1, 8, 4, -8] ]) } for name, m in matrices.items(): print() print(f'{name} polynomial is {(m - f_eye(4) * x).det()}') m5 = m + f_eye(4) * 5 print(f'{name} + 5E =\n{m5}') print(f'rank({name} + 5E) = {m5.rank()}') print(f'rank({name} + 5E)**2 = {(m5@m5).rank()}') print(f'rank({name} + 5E)**3 = {(m5@m5@m5).rank()}')