import numpy as np
import numpy.linalg as la
np.set_printoptions(precision=2, linewidth=150)
n = 8
e1 = np.zeros(n); e1[0] = 1
e2 = np.zeros(n); e2[1] = 1
A = np.random.randn(n, n)
A
Now try to zero the first column with a similarity transform.
a = A[:, 0].copy()
v = a-la.norm(a)*e1
H1 = np.eye(n) - 2*np.outer(v, v)/(v@v)
H1@A
H1@A@H1.T
a = A[:, 0].copy()
a[0] = 0
v = a-la.norm(a)*e2
H2 = np.eye(n) - 2*np.outer(v, v)/(v@v)
H2 @ A
H2 @ A @ H2.T