summaryrefslogtreecommitdiffstats
path: root/4/one.py
blob: 341c3838f1d5fe38d8fb5c6f08c3a9d0baa1999e (plain) (blame)
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()}')