Large sparse linear systems use iterative solvers (scipy.sparse.linalg)—cg, gmres, spsolve—instead of dense LU on full matrices.
spsolve
sp.linalg.spsolve(A, b) for sparse square A—direct sparse factorization for moderate sizes.
Iterative solvers
cg— conjugate gradient for symmetric positive definite Agmres— general nonsymmetric systems- Often need preconditioners for fast convergence
Tiny example
import numpy as np
import scipy.sparse as sp
from scipy.sparse import linalg as spla
A = sp.diags([2, -1, -1], [0, -1, 1], shape=(5, 5), format='csr')
b = np.ones(5)
x = spla.spsolve(A, b)
print('x:', x)
Important interview questions and answers
- Q: Why iterative?
A: Avoid filling memory with zeros—exploit sparsity structure in matvec only. - Q: Preconditioner?
A: Approximate inverse that speeds convergence—domain-specific in PDE solvers.
Self-check
- What module hosts sparse solvers?
- When is conjugate gradient appropriate?
Tip: Match solver to matrix properties: SPD → cg; general → gmres with preconditioner.
Interview prep
- spsolve?
Direct sparse solve for moderate systems.
- cg?
Conjugate gradient for symmetric positive definite sparse A.