import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
import seaborn as sns
sns.set_context('talk')
np.random.seed(2222)
T, _ = np.linalg.qr(np.random.rand(5,5))
A = T.T @ np.diag([5,4,3,2,1]) @ T
w, v = np.linalg.eig(A)
np.set_printoptions(precision=2)
print(w)
for ww in w:
print(ww, np.abs(ww))
print(v)
X = np.random.rand(5,3)
for i in range(50):
Q, R = np.linalg.qr(X, mode='reduced')
X = A @ Q
print(np.diag(X.conj().T @ (A @ X)) / np.diag(X.conj().T @ X))
X = A.copy()
Qall = np.eye(5)
for i in range(10):
Q, R = np.linalg.qr(X)
X = R @ Q
np.set_printoptions(precision=2)
print(np.diag(X))
#Qall = Qall @ Q
#print(Qall)
from matplotlib.colors import LogNorm
A = np.random.rand(10,10)
A = A + A.T
X = A.copy()
ct = 0
f, ax = plt.subplots(1,4,sharey=True,figsize=(12,6))
for i in range(88):
Q, R = np.linalg.qr(X)
X = R @ Q
if i % 22 == 0:
I, J = np.where(np.abs(X) < 1e-13)
Xtmp = X.copy()
Xtmp[I,J] = 0.0
im = ax[ct].imshow(np.abs(Xtmp), cmap=plt.cm.Blues,
norm=LogNorm())
ax[ct].axis('off')
ct += 1
f.colorbar(im, ax=ax.ravel().tolist(), shrink=0.95)