From 1b9fb899513224a8ab8c5b2cdce2ea643f0e08f1 Mon Sep 17 00:00:00 2001 From: "tom.mok" Date: Mon, 20 Dec 2021 12:59:21 +1300 Subject: [PATCH 1/2] two by two det calculation --- .gitignore | 4 ++++ det.py | 12 ++++++++++++ 2 files changed, 16 insertions(+) diff --git a/.gitignore b/.gitignore index 4d223ef..ff32beb 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,7 @@ .devcontainer/ __pycache__/ .pytest_cache/ + +Scripts +Lib +pyvenv.cfg diff --git a/det.py b/det.py index 2f56473..9171149 100644 --- a/det.py +++ b/det.py @@ -12,4 +12,16 @@ def det(m: np.ndarray) -> float: :return: Determinant of the matrix """ + if m.shape == (2, 2): + return (m[0][0] * m[1][1]) - (m[0][1] * m[1][0]) + + # iterate across top column + # for each element in top column multiply by inner matrix determinant + determinant = 0 + + # for index, element in enumerate(m[0]): + # innerMatrix = m[0:, 0:index index:-1] + # determinant += element * det(innerMatrix) + + raise NotImplementedError() From a2d3510bfb3dd588a8fc151217d20b9d1749f5da Mon Sep 17 00:00:00 2001 From: "tom.mok" Date: Mon, 20 Dec 2021 14:19:31 +1300 Subject: [PATCH 2/2] Recursive nxn algorithm for det --- det.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/det.py b/det.py index 9171149..f8281d4 100644 --- a/det.py +++ b/det.py @@ -19,9 +19,12 @@ def det(m: np.ndarray) -> float: # for each element in top column multiply by inner matrix determinant determinant = 0 - # for index, element in enumerate(m[0]): - # innerMatrix = m[0:, 0:index index:-1] - # determinant += element * det(innerMatrix) + for index, element in enumerate(m[0]): + innerMatrix = np.delete(m, index, 1)[1:, :] + if (index % 2) == 0: + determinant += element * det(innerMatrix) + else: + determinant -= element * det(innerMatrix) - raise NotImplementedError() + return determinant