summaryrefslogtreecommitdiffstats
path: root/4/two_basis.py
diff options
context:
space:
mode:
Diffstat (limited to '4/two_basis.py')
-rw-r--r--4/two_basis.py47
1 files changed, 47 insertions, 0 deletions
diff --git a/4/two_basis.py b/4/two_basis.py
new file mode 100644
index 0000000..d1d71a2
--- /dev/null
+++ b/4/two_basis.py
@@ -0,0 +1,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)