Skip to content

Commit 94850fe

Browse files
authored
Add files via upload
Numeric Matrix Processor.
1 parent 4807650 commit 94850fe

File tree

1 file changed

+155
-0
lines changed

1 file changed

+155
-0
lines changed

processor.py

Lines changed: 155 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,155 @@
1+
import numpy as np
2+
3+
def menu():
4+
while True:
5+
print("1. Add matrices\n2. Multiply matrix by a constant\n3. Multiply matrices\n4. Transpose matrix\n"
6+
"5. Calculate a determinant\n6. Inverse matrix\n0. Exit")
7+
choice = int(input("Your choice: "))
8+
if choice == 0:
9+
break
10+
elif choice == 1:
11+
adding_matrices()
12+
elif choice == 2:
13+
constant_multiply()
14+
elif choice == 3:
15+
multiply_matrices()
16+
elif choice == 4:
17+
print("1. Main diagonal\n2. Side diagonal\n3. Vertical line\n4. Horizontal line")
18+
transpose_choice = int(input("Your choice: "))
19+
if transpose_choice == 1:
20+
transpose_main_diagonal()
21+
elif transpose_choice == 2:
22+
transpose_side_diagonal()
23+
elif transpose_choice == 3:
24+
transpose_vertical_line()
25+
elif transpose_choice == 4:
26+
transpose_horizontal_line()
27+
elif choice == 5:
28+
determinant()
29+
elif choice == 6:
30+
inverse_matrix()
31+
else:
32+
print("Wrong option")
33+
continue
34+
35+
def make_a_matrix():
36+
global a_rows, a_columns, a_matrix, matrix
37+
a_rows, a_columns = map(int, input("Enter size of first matrix: ").split())
38+
a_matrix = []
39+
matrix = []
40+
print("Enter first matrix: ")
41+
for i in range(a_rows):
42+
a_matrix.append(list(map(float, input().split())))
43+
44+
def make_b_matrix():
45+
global b_rows, b_columns, b_matrix
46+
b_rows, b_columns = map(int, input("Enter size of second matrix: ").split())
47+
b_matrix = []
48+
print("Enter second matrix: ")
49+
for j in range(b_rows):
50+
b_matrix.append(list(map(float, input().split())))
51+
52+
53+
def adding_matrices():
54+
make_a_matrix()
55+
make_b_matrix()
56+
if (a_rows == b_rows) and (a_columns == b_columns):
57+
print("The result is: ")
58+
for i in range(a_rows):
59+
matrix.append([])
60+
for j in range(a_columns):
61+
matrix[i].append(a_matrix[i][j] + b_matrix[i][j])
62+
converted_list = [str(element) for element in matrix[i]]
63+
joined_string = " ".join(converted_list)
64+
print(joined_string)
65+
else:
66+
print("The operation cannot be performed.")
67+
68+
69+
def constant_multiply():
70+
make_a_matrix()
71+
c = int(input("Enter constant: "))
72+
print("The result is: ")
73+
for i in range(a_rows):
74+
matrix.append([])
75+
for j in range(a_columns):
76+
matrix[i].append(a_matrix[i][j] * c)
77+
converted_list = [str(element) for element in matrix[i]]
78+
joined_string = " ".join(converted_list)
79+
print(joined_string)
80+
81+
82+
def multiply_matrices():
83+
make_a_matrix()
84+
make_b_matrix()
85+
if a_columns == b_rows:
86+
print("The result is: ")
87+
for i in range(a_rows):
88+
matrix.append([])
89+
for j in range(b_columns):
90+
matrix[-1].append(0.0)
91+
for k in range(b_rows):
92+
matrix[i][j] += a_matrix[i][k] * b_matrix[k][j]
93+
converted_list = [str(element) for element in matrix[i]]
94+
joined_string = " ".join(converted_list)
95+
print(joined_string)
96+
else:
97+
print("The operation cannot be performed.")
98+
99+
100+
def transpose_main_diagonal():
101+
make_a_matrix()
102+
transpose_matrix = [[a_matrix[j][i] for j in range(a_rows)] for i in range(a_columns)]
103+
for i in range(len(transpose_matrix)):
104+
converted_list = [str(element) for element in transpose_matrix[i]]
105+
joined_string = " ".join(converted_list)
106+
print(joined_string)
107+
108+
109+
def transpose_side_diagonal():
110+
make_a_matrix()
111+
transpose_matrix = [[a_matrix[j][i] for j in reversed(range(a_rows))] for i in reversed(range(a_columns))]
112+
for i in range(len(transpose_matrix)):
113+
converted_list = [str(element) for element in transpose_matrix[i]]
114+
joined_string = " ".join(converted_list)
115+
print(joined_string)
116+
117+
118+
def transpose_vertical_line():
119+
make_a_matrix()
120+
for i in range(a_rows):
121+
a_matrix[i].reverse()
122+
converted_list = [str(element) for element in a_matrix[i]]
123+
joined_string = " ".join(converted_list)
124+
print(joined_string)
125+
126+
def transpose_horizontal_line():
127+
make_a_matrix()
128+
a_matrix.reverse()
129+
for i in range(a_rows):
130+
converted_list = [str(element) for element in a_matrix[i]]
131+
joined_string = " ".join(converted_list)
132+
print(joined_string)
133+
134+
def determinant():
135+
make_a_matrix()
136+
if a_rows != a_columns:
137+
print("The operation cannot be performed.")
138+
else:
139+
det = np.linalg.det(a_matrix)
140+
print("The result is: ")
141+
print(det)
142+
143+
def inverse_matrix():
144+
make_a_matrix()
145+
det = np.linalg.det(a_matrix)
146+
if det == 0:
147+
print("This matrix doesn't have an inverse.")
148+
else:
149+
inverse = np.linalg.inv(a_matrix)
150+
print("The result is: ")
151+
for i in range(len(inverse)):
152+
converted_list = [str(element) for element in inverse[i]]
153+
joined_string = " ".join(converted_list)
154+
print(joined_string)
155+
menu()

0 commit comments

Comments
 (0)