@@ -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 ()
0 commit comments