How to solve a system of equations in Python (3 Examples)

Python offers multiple ways to solve systems of equations. One way is by using the NumPy library, which provides functions to solve linear equations using the linalg.solve() function. Additionally, the SymPy library provides the solve() function to solve equations symbolically. Lastly, you can also use the scipy.optimize.fsolve() function which is used to solve a system of non-linear equations. All three of these methods are demonstrated in the examples provided.


To solve a system of equations in Python, we can use functions from the library.

The following examples show how to use NumPy to solve several different systems of equations in Python.

Example 1: Solve System of Equations with Two Variables

Suppose we have the following system of equations and we’d like to solve for the values of x and y:

5x + 4y = 35

2x + 6y = 36

The following code shows how to use NumPy to solve for the values of x and y:

import numpy as np

#define left-hand side of equation
left_side = np.array([[5, 4], [2, 6]])

#define right-hand side of equation
right_side = np.array([35, 36])

#solve for x and y
np.linalg.inv(left_side).dot(right_side)

array([3., 5.])

This tells us that the value for x is 3 and the value for y is 5.

Example 2: Solve System of Equations with Three Variables

Suppose we have the following system of equations and we’d like to solve for the values of x, y, and z:

4x + 2y + 1z = 34

3x + 5y – 2z = 41

2x + 2y + 4z = 30

The following code shows how to use NumPy to solve for the values of x, y, and z:

import numpy as np

#define left-hand side of equation
left_side = np.array([[4, 2, 1], [3, 5, -2], [2, 2, 4]])

#define right-hand side of equation
right_side = np.array([34, 41, 30])

#solve for x, y, and z
np.linalg.inv(left_side).dot(right_side)

array([5., 6., 2.])

This tells us that the value for x is 5, the value for y is 6, and the value for z is 2.

Example 3: Solve System of Equations with Four Variables

Suppose we have the following system of equations and we’d like to solve for the values of w, x, y, and z:

6w + 2x + 2y + 1z = 37

2w + 1x + 1y + 0z = 14

3w + 2x + 2y + 4z = 28

2w + 0x + 5y + 5z = 28

The following code shows how to use NumPy to solve for the values of w, x, y, and z:

import numpy as np

#define left-hand side of equation
left_side = np.array([[6, 2, 2, 1], [2, 1, 1, 0], [3, 2, 2, 4], [2, 0, 5, 5]])

#define right-hand side of equation
right_side = np.array([37, 14, 28, 28])

#solve for w, x, y, and z
np.linalg.inv(left_side).dot(right_side)
 
array([4., 3., 3., 1.])

This tells us that the value for w is 4, x is 3, y is 3, and z is 1.

The following tutorials explain how to solve a system of equations using other statistical software:

x