1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
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()}')
|