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