From a7d916ebca3b8f060a9d232175f1f4393018dd8e Mon Sep 17 00:00:00 2001 From: Naitik Dwivedi Date: Sun, 6 Apr 2025 21:41:36 +0530 Subject: [PATCH 1/7] Create matrix_inversion.py --- linear_algebra/matrix_inversion.py | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 linear_algebra/matrix_inversion.py diff --git a/linear_algebra/matrix_inversion.py b/linear_algebra/matrix_inversion.py new file mode 100644 index 000000000000..7080c5d9395e --- /dev/null +++ b/linear_algebra/matrix_inversion.py @@ -0,0 +1,29 @@ +import numpy as np + +def invert_matrix(matrix: list[list[float]]) -> list[list[float]]: + """ + Returns the inverse of a square matrix using NumPy. + + Parameters: + matrix (list[list[float]]): A square matrix. + + Returns: + list[list[float]]: Inverted matrix if invertible, else raises error. + """ + try: + np_matrix = np.array(matrix) + inv_matrix = np.linalg.inv(np_matrix) + return inv_matrix.tolist() + except np.linalg.LinAlgError: + raise ValueError("Matrix is not invertible") + + +if __name__ == "__main__": + mat = [ + [4, 7], + [2, 6] + ] + print("Original Matrix:") + print(mat) + print("Inverted Matrix:") + print(invert_matrix(mat)) From be71e2f5196d86137d0bab1786fb7f6d1b8426c1 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Sun, 6 Apr 2025 16:19:45 +0000 Subject: [PATCH 2/7] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- linear_algebra/matrix_inversion.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/linear_algebra/matrix_inversion.py b/linear_algebra/matrix_inversion.py index 7080c5d9395e..548a6848482c 100644 --- a/linear_algebra/matrix_inversion.py +++ b/linear_algebra/matrix_inversion.py @@ -1,5 +1,6 @@ import numpy as np + def invert_matrix(matrix: list[list[float]]) -> list[list[float]]: """ Returns the inverse of a square matrix using NumPy. @@ -19,10 +20,7 @@ def invert_matrix(matrix: list[list[float]]) -> list[list[float]]: if __name__ == "__main__": - mat = [ - [4, 7], - [2, 6] - ] + mat = [[4, 7], [2, 6]] print("Original Matrix:") print(mat) print("Inverted Matrix:") From daea17969d3a7afa9f2fd3e77959b07a5b1e5874 Mon Sep 17 00:00:00 2001 From: Naitik Dwivedi Date: Sun, 6 Apr 2025 21:58:33 +0530 Subject: [PATCH 3/7] Update matrix_inversion.py --- linear_algebra/matrix_inversion.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/linear_algebra/matrix_inversion.py b/linear_algebra/matrix_inversion.py index 548a6848482c..bf84129e046c 100644 --- a/linear_algebra/matrix_inversion.py +++ b/linear_algebra/matrix_inversion.py @@ -20,7 +20,7 @@ def invert_matrix(matrix: list[list[float]]) -> list[list[float]]: if __name__ == "__main__": - mat = [[4, 7], [2, 6]] + mat = [[4.0, 7.0], [2.0, 6.0]] print("Original Matrix:") print(mat) print("Inverted Matrix:") From bf44644ad38f994b06484bbb463730b4c25d189e Mon Sep 17 00:00:00 2001 From: Maxim Smolskiy Date: Mon, 14 Apr 2025 21:46:09 +0300 Subject: [PATCH 4/7] Update matrix_inversion.py --- linear_algebra/matrix_inversion.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/linear_algebra/matrix_inversion.py b/linear_algebra/matrix_inversion.py index bf84129e046c..33996dd9e560 100644 --- a/linear_algebra/matrix_inversion.py +++ b/linear_algebra/matrix_inversion.py @@ -10,14 +10,21 @@ def invert_matrix(matrix: list[list[float]]) -> list[list[float]]: Returns: list[list[float]]: Inverted matrix if invertible, else raises error. + + >>> invert_matrix([[4.0, 7.0], [2.0, 6.0]]) + [[4.0, 7.0], [2.0, 6.0]] + >>> invert_matrix([[1.0, 2.0], [0.0, 0.0]]) + [[4.0, 7.0], [2.0, 6.0]] """ + np_matrix = np.array(matrix) + try: - np_matrix = np.array(matrix) inv_matrix = np.linalg.inv(np_matrix) - return inv_matrix.tolist() except np.linalg.LinAlgError: raise ValueError("Matrix is not invertible") + return inv_matrix.tolist() + if __name__ == "__main__": mat = [[4.0, 7.0], [2.0, 6.0]] From 89b346583358a95a6eeec785648396c1a8e74b2a Mon Sep 17 00:00:00 2001 From: Maxim Smolskiy Date: Mon, 14 Apr 2025 21:50:28 +0300 Subject: [PATCH 5/7] Update matrix_inversion.py --- linear_algebra/matrix_inversion.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/linear_algebra/matrix_inversion.py b/linear_algebra/matrix_inversion.py index 33996dd9e560..54c758f36e2d 100644 --- a/linear_algebra/matrix_inversion.py +++ b/linear_algebra/matrix_inversion.py @@ -14,7 +14,7 @@ def invert_matrix(matrix: list[list[float]]) -> list[list[float]]: >>> invert_matrix([[4.0, 7.0], [2.0, 6.0]]) [[4.0, 7.0], [2.0, 6.0]] >>> invert_matrix([[1.0, 2.0], [0.0, 0.0]]) - [[4.0, 7.0], [2.0, 6.0]] + [[1.0, 2.0], [0.0, 0.0]] """ np_matrix = np.array(matrix) From 9cea0be1dd8023dfc6806520c34cd0dfd2fe1530 Mon Sep 17 00:00:00 2001 From: Maxim Smolskiy Date: Mon, 14 Apr 2025 21:53:04 +0300 Subject: [PATCH 6/7] Update matrix_inversion.py --- linear_algebra/matrix_inversion.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/linear_algebra/matrix_inversion.py b/linear_algebra/matrix_inversion.py index 54c758f36e2d..1bb78f1e12e7 100644 --- a/linear_algebra/matrix_inversion.py +++ b/linear_algebra/matrix_inversion.py @@ -12,7 +12,7 @@ def invert_matrix(matrix: list[list[float]]) -> list[list[float]]: list[list[float]]: Inverted matrix if invertible, else raises error. >>> invert_matrix([[4.0, 7.0], [2.0, 6.0]]) - [[4.0, 7.0], [2.0, 6.0]] + [[0.6000000000000001, -0.7000000000000001], [-0.2, 0.4]] >>> invert_matrix([[1.0, 2.0], [0.0, 0.0]]) [[1.0, 2.0], [0.0, 0.0]] """ From 4b74fef11e71478b9e14fe7a2f84719cab0456d4 Mon Sep 17 00:00:00 2001 From: Maxim Smolskiy Date: Mon, 14 Apr 2025 21:55:42 +0300 Subject: [PATCH 7/7] Update matrix_inversion.py --- linear_algebra/matrix_inversion.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/linear_algebra/matrix_inversion.py b/linear_algebra/matrix_inversion.py index 1bb78f1e12e7..50dae1c2e825 100644 --- a/linear_algebra/matrix_inversion.py +++ b/linear_algebra/matrix_inversion.py @@ -14,7 +14,9 @@ def invert_matrix(matrix: list[list[float]]) -> list[list[float]]: >>> invert_matrix([[4.0, 7.0], [2.0, 6.0]]) [[0.6000000000000001, -0.7000000000000001], [-0.2, 0.4]] >>> invert_matrix([[1.0, 2.0], [0.0, 0.0]]) - [[1.0, 2.0], [0.0, 0.0]] + Traceback (most recent call last): + ... + ValueError: Matrix is not invertible """ np_matrix = np.array(matrix)