@@ -10,6 +10,8 @@ def add(matrix_a, matrix_b):
10
10
matrix_c .append (list_1 )
11
11
return matrix_c
12
12
13
+ def scalarMultiply (matrix ,n ):
14
+ return [[x * n for x in row ]for row in matrix ]
13
15
14
16
def multiply (matrix_a ,matrix_b ):
15
17
matrix_c = []
@@ -24,13 +26,50 @@ def multiply(matrix_a, matrix_b):
24
26
matrix_c .append (list_1 )
25
27
return matrix_c
26
28
29
+ def identity (n ):
30
+ return [[int (row == column )for column in range (n )]for row in range (n )]
31
+
32
+ def transpose (matrix ):
33
+ return map (list ,zip (* matrix ))
34
+
35
+ def minor (matrix ,row ,column ):
36
+ minor = matrix [:row ]+ matrix [row + 1 :]
37
+ minor = [row [:column ]+ row [column + 1 :]for row in minor ]
38
+ return minor
39
+
40
+ def determinant (matrix ):
41
+ if len (matrix )== 1 :return matrix [0 ][0 ]
42
+
43
+ res = 0
44
+ for x in range (len (matrix )):
45
+ res += matrix [0 ][x ]* determinant (minor (matrix ,0 ,x ))* (- 1 )** x
46
+ return res
47
+
48
+ def inverse (matrix ):
49
+ det = determinant (matrix )
50
+ if det == 0 :return None
51
+
52
+ matrixMinor = [[]for _ in range (len (matrix ))]
53
+ for i in range (len (matrix )):
54
+ for j in range (len (matrix )):
55
+ matrixMinor [i ].append (determinant (minor (matrix ,i ,j )))
56
+
57
+ cofactors = [[x * (- 1 )** (row + col )for col ,x in enumerate (matrixMinor [row ])]for row in range (len (matrix ))]
58
+ adjugate = transpose (cofactors )
59
+ return scalarMultiply (adjugate ,1 / det )
27
60
28
61
def main ():
29
62
matrix_a = [[12 ,10 ], [3 ,9 ]]
30
63
matrix_b = [[3 ,4 ], [7 ,4 ]]
64
+ matrix_c = [[11 ,12 ,13 ,14 ], [21 ,22 ,23 ,24 ], [31 ,32 ,33 ,34 ], [41 ,42 ,43 ,44 ]]
65
+ matrix_d = [[3 ,0 ,2 ], [2 ,0 ,- 2 ], [0 ,1 ,1 ]]
66
+
31
67
print (add (matrix_a ,matrix_b ))
32
68
print (multiply (matrix_a ,matrix_b ))
33
-
69
+ print (identity (5 ))
70
+ print (minor (matrix_c ,1 ,2 ))
71
+ print (determinant (matrix_b ))
72
+ print (inverse (matrix_d ))
34
73
35
74
if __name__ == '__main__' :
36
75
main ()