Lesson 16 of 18
Gram-Schmidt Orthogonalization
Gram-Schmidt Orthogonalization
Given a set of linearly independent vectors, Gram-Schmidt produces an orthonormal basis spanning the same subspace.
Algorithm
For vectors :
- For each (): subtract projections onto all previous basis vectors, then normalize:
Example
, :
Verify: ✓
Connection to QR Decomposition
Gram-Schmidt is the algorithm behind QR decomposition: where has the orthonormal vectors as columns and is upper-triangular.
import math
def gram_schmidt(vecs):
basis = []
for v in vecs:
u = v[:]
for e in basis:
proj = sum(v[i]*e[i] for i in range(len(v)))
u = [u[i] - proj*e[i] for i in range(len(u))]
norm = math.sqrt(sum(x**2 for x in u))
basis.append([x/norm for x in u])
return basis
Your Task
Implement gram_schmidt(vecs) that returns a list of orthonormal basis vectors.
Pyodide loading...
Loading...
Click "Run" to execute your code.