Bird
Raised Fist0
NumPydata~5 mins

np.linalg.solve() for linear systems in NumPy

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Introduction

We use np.linalg.solve() to find the values of unknowns in a set of linear equations quickly and accurately.

When you have multiple linear equations and want to find the values of variables.
When solving real-world problems like mixing chemicals in exact proportions.
When calculating forces in a structure with multiple supports.
When balancing financial equations with several unknown amounts.
Syntax
NumPy
np.linalg.solve(A, b)

A is a square matrix representing coefficients of variables.

b is a vector or matrix representing the constants on the right side of equations.

Examples
Solves two equations with two unknowns.
NumPy
import numpy as np
A = np.array([[3,1],[1,2]])
b = np.array([9,8])
x = np.linalg.solve(A, b)
print(x)
Solves three equations with three unknowns.
NumPy
import numpy as np
A = np.array([[1,2,3],[0,1,4],[5,6,0]])
b = np.array([14,13,23])
x = np.linalg.solve(A, b)
print(x)
Sample Program

This program solves two linear equations with two unknowns and prints the values of x and y.

NumPy
import numpy as np

# Coefficients matrix for equations:
# 2x + 3y = 8
# 5x + 4y = 13
A = np.array([[2, 3], [5, 4]])

# Constants vector
b = np.array([8, 13])

# Solve for x and y
solution = np.linalg.solve(A, b)

print('Solution for x and y:', solution)
OutputSuccess
Important Notes

The matrix A must be square (same number of rows and columns).

If A is singular (no unique solution), np.linalg.solve() will raise an error.

Use this method instead of manual calculations for accuracy and speed.

Summary

np.linalg.solve() finds unknown values in linear equations.

It needs a square matrix of coefficients and a constants vector.

It returns the solution vector with values of the unknowns.

Practice

(1/5)
1. What does np.linalg.solve(A, b) do in NumPy?
easy
A. Solves the system of linear equations Ax = b for x
B. Calculates the determinant of matrix A
C. Finds the inverse of matrix A
D. Multiplies matrix A by vector b

Solution

  1. Step 1: Understand the function purpose

    np.linalg.solve() is designed to find the vector x that satisfies the equation Ax = b, where A is a square matrix and b is a vector.
  2. Step 2: Differentiate from other matrix operations

    Calculating determinant, inverse, or multiplication are different operations and use other functions like np.linalg.det(), np.linalg.inv(), or @ operator respectively.
  3. Final Answer:

    Solves the system of linear equations Ax = b for x -> Option A
  4. Quick Check:

    np.linalg.solve() = solve Ax=b [OK]
Hint: It finds x in Ax = b, not determinant or inverse [OK]
Common Mistakes:
  • Confusing solve() with matrix inverse
  • Using solve() for non-square matrices
  • Thinking it multiplies matrices
2. Which of the following is the correct syntax to solve the system Ax = b using NumPy?
easy
A. np.linalg.solve(b, A)
B. np.solve.linalg(A, b)
C. np.linalg.solve(A, b)
D. np.solve(A, b)

Solution

  1. Step 1: Recall correct function call

    The correct function is np.linalg.solve() with the first argument as matrix A and second as vector b.
  2. Step 2: Check argument order and module

    Arguments must be (A, b), not reversed. The function is inside np.linalg, not np.solve.
  3. Final Answer:

    np.linalg.solve(A, b) -> Option C
  4. Quick Check:

    Correct syntax = np.linalg.solve(A, b) [OK]
Hint: Remember: np.linalg.solve(matrix, vector) [OK]
Common Mistakes:
  • Swapping A and b arguments
  • Using wrong module or function name
  • Missing np.linalg prefix
3. What is the output of this code?
import numpy as np
A = np.array([[2, 1], [1, 3]])
b = np.array([10, 15])
x = np.linalg.solve(A, b)
print(x)
medium
A. [2. 5.]
B. [4. 3.]
C. [5. 2.]
D. [3. 4.]

Solution

  1. Step 1: Set up equations from matrix and vector

    Matrix A and vector b represent:
    2x + 1y = 10
    1x + 3y = 15
  2. Step 2: Solve equations manually or trust np.linalg.solve

    Solving:
    From first: y = (10 - 2x)
    Substitute in second: x + 3(10 - 2x) = 15
    x + 30 - 6x = 15
    -5x = -15
    x = 3
    y = 10 - 2*3 = 4
    np.linalg.solve gives x = [3. 4.]
  3. Final Answer:

    [3. 4.] -> Option D
  4. Quick Check:

    np.linalg.solve(A,b) = [3. 4.] [OK]
Hint: Use np.linalg.solve to get exact solution vector [OK]
Common Mistakes:
  • Mixing up order of variables in solution
  • Incorrect manual calculation
  • Confusing rows and columns in matrix
4. What error will this code produce?
import numpy as np
A = np.array([[1, 2], [3, 4], [5, 6]])
b = np.array([7, 8])
x = np.linalg.solve(A, b)
medium
A. ValueError: shapes (3,2) and (2,) not aligned
B. LinAlgError: Last 2 dimensions of the array must be square
C. TypeError: unsupported operand type(s)
D. No error, returns solution vector

Solution

  1. Step 1: Check matrix shape requirements

    Matrix A must be square (same number of rows and columns) to use np.linalg.solve(). Here, A is 3x2, not square.
  2. Step 2: Identify error raised by NumPy

    NumPy raises LinAlgError with message about last 2 dimensions needing to be square.
  3. Final Answer:

    LinAlgError: Last 2 dimensions of the array must be square -> Option B
  4. Quick Check:

    Non-square A causes LinAlgError [OK]
Hint: Matrix A must be square for np.linalg.solve() [OK]
Common Mistakes:
  • Using non-square matrix A
  • Expecting multiplication instead of solve
  • Ignoring error message details
5. You have the system:
3x + 2y - z = 1
2x - 2y + 4z = -2
-x + 0.5y - z = 0

Which code correctly solves for x, y, z using np.linalg.solve()?
hard
A. A = np.array([[3, 2, -1], [2, -2, 4], [-1, 0.5, -1]]) b = np.array([1, -2, 0]) x = np.linalg.solve(A, b)
B. A = np.array([[3, 2, 1], [2, -2, 4], [-1, 0.5, -1]]) b = np.array([1, -2, 0]) x = np.linalg.solve(A, b)
C. A = np.array([[3, 2, -1], [2, -2, 4], [-1, 0.5, -1]]) b = np.array([1, 2, 0]) x = np.linalg.solve(A, b)
D. A = np.array([[3, 2, -1], [2, -2, 4], [-1, 0.5, -1]]) b = np.array([1, -2, 0]) x = np.linalg.inv(A) @ b

Solution

  1. Step 1: Translate system to matrix and vector

    Coefficients matrix A must match the system exactly:
    Row 1: 3, 2, -1
    Row 2: 2, -2, 4
    Row 3: -1, 0.5, -1
    Constants vector b is [1, -2, 0].
  2. Step 2: Check each option for correctness

    A = np.array([[3, 2, -1], [2, -2, 4], [-1, 0.5, -1]]) b = np.array([1, -2, 0]) x = np.linalg.solve(A, b) matches coefficients and constants exactly.
    A = np.array([[3, 2, 1], [2, -2, 4], [-1, 0.5, -1]]) b = np.array([1, -2, 0]) x = np.linalg.solve(A, b) has wrong sign in third element of first row.
    A = np.array([[3, 2, -1], [2, -2, 4], [-1, 0.5, -1]]) b = np.array([1, 2, 0]) x = np.linalg.solve(A, b) has wrong second element in b.
    A = np.array([[3, 2, -1], [2, -2, 4], [-1, 0.5, -1]]) b = np.array([1, -2, 0]) x = np.linalg.inv(A) @ b uses inverse multiplication which is less efficient and not recommended.
  3. Final Answer:

    Option A code correctly solves the system -> Option A
  4. Quick Check:

    Correct matrix and vector with np.linalg.solve() [OK]
Hint: Match coefficients and constants exactly; use np.linalg.solve() [OK]
Common Mistakes:
  • Wrong signs in matrix or vector
  • Using inverse instead of solve()
  • Mixing up constants vector values