0
0
SciPydata~20 mins

Sparse linear algebra solvers in SciPy - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
Sparse Linear Algebra Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
Output of sparse linear system solver using SciPy
What is the output of the following code snippet that solves a sparse linear system using SciPy's conjugate gradient solver?
SciPy
import numpy as np
from scipy.sparse import diags
from scipy.sparse.linalg import cg

# Create a sparse diagonal matrix A
diagonals = [np.ones(3)*2]
A = diags(diagonals, offsets=[0], shape=(3, 3))

b = np.array([1, 2, 3])

x, info = cg(A, b)
print(np.round(x, 2))
A[ 1. 2. 3.]
B[ 0.33 0.67 1. ]
C[ 0.5 1. 1.5]
D[ 0.25 0.5 0.75]
Attempts:
2 left
💡 Hint
Think about how the conjugate gradient solver solves Ax = b for sparse A.
data_output
intermediate
1:30remaining
Number of non-zero elements after sparse matrix multiplication
Given two sparse matrices A and B, what is the number of non-zero elements in the product matrix C = A * B?
SciPy
import numpy as np
from scipy.sparse import csr_matrix

A = csr_matrix([[0, 1, 0], [2, 0, 0], [0, 0, 3]])
B = csr_matrix([[1, 0, 0], [0, 0, 4], [5, 0, 0]])

C = A.dot(B)
print(C.nnz)
A6
B5
C4
D3
Attempts:
2 left
💡 Hint
Count the non-zero elements in the resulting sparse matrix after multiplication.
🔧 Debug
advanced
1:30remaining
Identify the error in sparse linear solver usage
What error does the following code raise when trying to solve a sparse linear system?
SciPy
import numpy as np
from scipy.sparse import csc_matrix
from scipy.sparse.linalg import spsolve

A = csc_matrix([[0, 1], [1, 0]])
b = np.array([1, 2])
x = spsolve(A, b)
print(x)
ATypeError: unsupported operand type(s)
BNo error, prints [2. 1.]
CValueError: dimension mismatch
DLinAlgError: Singular matrix
Attempts:
2 left
💡 Hint
Check if the matrix A is invertible before solving.
visualization
advanced
2:00remaining
Visualizing sparsity pattern of a matrix
Which option produces a plot showing the sparsity pattern of a sparse matrix A?
SciPy
import numpy as np
import matplotlib.pyplot as plt
from scipy.sparse import random

A = random(10, 10, density=0.2, format='csr', random_state=42)

# Choose the correct code to visualize sparsity pattern
A
plt.spy(A)
plt.show()
B
plt.imshow(A)
plt.show()
C
plt.plot(A)
plt.show()
D
plt.scatter(A)
plt.show()
Attempts:
2 left
💡 Hint
Use the function designed to visualize sparse matrix structure.
🚀 Application
expert
2:30remaining
Choosing the best solver for a large sparse symmetric positive definite matrix
You have a large sparse symmetric positive definite matrix A and vector b. Which solver is the best choice to efficiently solve Ax = b?
AUse scipy.sparse.linalg.cg (Conjugate Gradient solver)
BUse numpy.linalg.solve with dense matrix conversion
CUse scipy.sparse.linalg.lsqr (Least squares solver)
DUse scipy.sparse.linalg.bicgstab (BiConjugate Gradient Stabilized solver)
Attempts:
2 left
💡 Hint
Consider matrix properties and solver efficiency for symmetric positive definite matrices.