@@ -22,17 +22,22 @@ def solve_linear_system(matrix: np.ndarray) -> np.ndarray:
2222 >>> solution = solve_linear_system(np.column_stack((A, B)))
2323 >>> np.allclose(solution, np.array([2., 3., -1.]))
2424 True
25- >>> solve_linear_system(np.array([[0, 0, 0], [0, 0, 0]], dtype=float))
25+ >>> solve_linear_system(np.array([[0, 0, 0]], dtype=float))
2626 Traceback (most recent call last):
2727 ...
28- ValueError: Matrix is not correct
28+ ValueError: Matrix is not square
29+ >>> solve_linear_system(np.array([[0, 0, 0], [0, 0, 0]], dtype=float))
30+ Traceback (most recent call last):
31+ ...
32+ ValueError: Matrix is singular
2933 """
3034 ab = np .copy (matrix )
3135 num_of_rows = ab .shape [0 ]
3236 num_of_columns = ab .shape [1 ] - 1
3337 x_lst : list [float ] = []
3438
35- assert num_of_rows == num_of_columns
39+ if num_of_rows != num_of_columns :
40+ raise ValueError ("Matrix is not square" )
3641
3742 for column_num in range (num_of_rows ):
3843 # Lead element search
@@ -41,8 +46,8 @@ def solve_linear_system(matrix: np.ndarray) -> np.ndarray:
4146 ab [[column_num , i ]] = ab [[i , column_num ]]
4247
4348 # Upper triangular matrix
44- if ab [column_num , column_num ] == 0.0 :
45- raise ValueError ("Matrix is not correct " )
49+ if abs ( ab [column_num , column_num ]) < 1e-8 :
50+ raise ValueError ("Matrix is singular " )
4651
4752 if column_num != 0 :
4853 for i in range (column_num , num_of_rows ):
0 commit comments