@@ -22,40 +22,33 @@ 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]], dtype=float))
26- array([nan, nan])
25+ >>> solve_linear_system(np.array([[0, 0, 0]], dtype=float))
26+ Traceback (most recent call last):
27+ ...
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
2733 """
2834 ab = np .copy (matrix )
2935 num_of_rows = ab .shape [0 ]
3036 num_of_columns = ab .shape [1 ] - 1
3137 x_lst : list [float ] = []
3238
33- # Lead element search
34- for column_num in range (num_of_rows ):
35- for i in range (column_num , num_of_columns ):
36- if abs (ab [i ][column_num ]) > abs (ab [column_num ][column_num ]):
37- ab [[column_num , i ]] = ab [[i , column_num ]]
38- if ab [column_num , column_num ] == 0.0 :
39- raise ValueError ("Matrix is not correct" )
40- else :
41- pass
42- if column_num != 0 :
43- for i in range (column_num , num_of_rows ):
44- ab [i , :] -= (
45- ab [i , column_num - 1 ]
46- / ab [column_num - 1 , column_num - 1 ]
47- * ab [column_num - 1 , :]
48- )
39+ if num_of_rows != num_of_columns :
40+ raise ValueError ("Matrix is not square" )
4941
50- # Upper triangular matrix
5142 for column_num in range (num_of_rows ):
43+ # Lead element search
5244 for i in range (column_num , num_of_columns ):
5345 if abs (ab [i ][column_num ]) > abs (ab [column_num ][column_num ]):
5446 ab [[column_num , i ]] = ab [[i , column_num ]]
55- if ab [column_num , column_num ] == 0.0 :
56- raise ValueError ("Matrix is not correct" )
57- else :
58- pass
47+
48+ # Upper triangular matrix
49+ if abs (ab [column_num , column_num ]) < 1e-8 :
50+ raise ValueError ("Matrix is singular" )
51+
5952 if column_num != 0 :
6053 for i in range (column_num , num_of_rows ):
6154 ab [i , :] -= (
0 commit comments