summaryrefslogtreecommitdiffstats
path: root/4/two_basis.py
blob: d1d71a215583038d9f8a9fa316038704e1ade6c7 (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
39
40
41
42
43
44
45
46
47
from libsolve2 import *
from fractions import Fraction as F

def f_eye(dim):
    return Matrix([
        [0 if i != j else 1 for i in range(dim)]
        for j in range(dim)
    ])

eye = f_eye(6)

m = Matrix([
    [ 4,  -3,  -2,   0,   0,  0],
    [ 0,   2,  -1,   0,   0,  0],
    [ 0,   2,   5,   0,   0,  0],
    [ 1,   1,   1,   2,  -1,  0],
    [-2,  -3,  -3,   4,   6,  0],
    [ 1,   8,   7,  -5,  -3,  3]
])

for_root1 = m - eye * 3

print('(m - 3E)^2 =')
print((for_root1@for_root1).triangled(swap=True))
print()
print()

for_root2 = m - eye * 4

print('(m - 4E)^2 =')
print((for_root2@for_root2).triangled(swap=True))

def make_vec(iter):
    return Matrix([[i] for i in iter])

print()
print('Проверим, лежит ли кто-нибудь из ФСР в ядре:')
print(((for_root2) @ make_vec([0, -F(1, 3), F(2, 3), 0, 0, 1])).T)
print(((for_root2) @ make_vec([0, -F(2, 3), F(4, 3), 0, 1, 0])).T)
print(((for_root2) @ make_vec([0, -1, 2, 1, 0, 0])).T)
print(((for_root2) @ make_vec([1, 0, 0, 0, 0, 0])).T)

print('кажется, ни один вектор не лежит в ядре.')
print()
print('а вот эти уже лежат в ядре')
print((for_root2 @ make_vec([0, -1, 2, 1, 0, 0])).T)
print((for_root2 @ make_vec([1, 0, 0, 0, 0, 0])).T)