Untitled
import numpy as np def householder_qr(A): n = A.shape[0] Q = np.eye(n) R = A.copy() for k in range(n - 1): x = R[k:, k] e = np.zeros_like(x) e[0] = np.linalg.norm(x) if x[0] > 0: e[0] = -e[0] v = x - e v = v / np.linalg.norm(v) Q_k = np.eye(n) Q_k[k:, k:] -= 2.0 * np.outer(v, v) R = Q_k @ R Q = Q @ Q_k.T return Q, R # Example Usage A = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 10]], dtype=np.float64) Q, R = householder_qr(A) print("Matrix Q (Orthogonal):") print(Q) print("\nMatrix R (Upper Triangular):") print(R)
Leave a Comment