MCPcopy
hub / github.com/TheAlgorithms/Python / solve_simultaneous

Function solve_simultaneous

maths/simultaneous_linear_equation_solver.py:57–127  ·  view source on GitHub ↗

>>> solve_simultaneous([[1, 2, 3],[4, 5, 6]]) [-1.0, 2.0] >>> solve_simultaneous([[0, -3, 1, 7],[3, 2, -1, 11],[5, 1, -2, 12]]) [6.4, 1.2, 10.6] >>> solve_simultaneous([]) Traceback (most recent call last): ... IndexError: solve_simultaneous() requires n

(equations: list[list])

Source from the content-addressed store, hash-verified

55
56
57def solve_simultaneous(equations: list[list]) -> list:
58 """
59 >>> solve_simultaneous([[1, 2, 3],[4, 5, 6]])
60 [-1.0, 2.0]
61 >>> solve_simultaneous([[0, -3, 1, 7],[3, 2, -1, 11],[5, 1, -2, 12]])
62 [6.4, 1.2, 10.6]
63 >>> solve_simultaneous([])
64 Traceback (most recent call last):
65 ...
66 IndexError: solve_simultaneous() requires n lists of length n+1
67 >>> solve_simultaneous([[1, 2, 3],[1, 2]])
68 Traceback (most recent call last):
69 ...
70 IndexError: solve_simultaneous() requires n lists of length n+1
71 >>> solve_simultaneous([[1, 2, 3],["a", 7, 8]])
72 Traceback (most recent call last):
73 ...
74 ValueError: solve_simultaneous() requires lists of integers
75 >>> solve_simultaneous([[0, 2, 3],[4, 0, 6]])
76 Traceback (most recent call last):
77 ...
78 ValueError: solve_simultaneous() requires at least 1 full equation
79 """
80 if len(equations) == 0:
81 raise IndexError("solve_simultaneous() requires n lists of length n+1")
82 _length = len(equations) + 1
83 if any(len(item) != _length for item in equations):
84 raise IndexError("solve_simultaneous() requires n lists of length n+1")
85 for row in equations:
86 if any(not isinstance(column, (int, float)) for column in row):
87 raise ValueError("solve_simultaneous() requires lists of integers")
88 if len(equations) == 1:
89 return [equations[0][-1] / equations[0][0]]
90 data_set = equations.copy()
91 if any(0 in row for row in data_set):
92 temp_data = data_set.copy()
93 full_row = []
94 for row_index, row in enumerate(temp_data):
95 if 0 not in row:
96 full_row = data_set.pop(row_index)
97 break
98 if not full_row:
99 raise ValueError("solve_simultaneous() requires at least 1 full equation")
100 data_set.insert(0, full_row)
101 useable_form = data_set.copy()
102 simplified = simplify(useable_form)
103 simplified = simplified[::-1]
104 solutions: list = []
105 for row in simplified:
106 current_solution = row[-1]
107 if not solutions:
108 if row[-2] == 0:
109 solutions.append(0)
110 continue
111 solutions.append(current_solution / row[-2])
112 continue
113 temp_row = row.copy()[: len(row) - 1 :]
114 while temp_row[0] == 0:

Calls 5

simplifyFunction · 0.85
copyMethod · 0.80
popMethod · 0.45
insertMethod · 0.45
appendMethod · 0.45

Tested by

no test coverage detected