import numpy as np
A=[[1,2],[4,1]]
print A
Ainv=np.linalg.matrix_power(A,-1)
print Ainv
d= np.linalg.norm(A,2) * np.linalg.norm(Ainv,2)
print d
print np.linalg.norm(Ainv,2)
print np.linalg.norm(A,2)
print np.linalg.cond(A,2)
B=[[1,2],[2,2],[2,0]]
q,r =np.linalg.qr(B)
print q
print r
l=np.transpose(q);
print l
b=np.array([[5],[6],[0]])
print b
k=np.dot(l,b)
print k
x=np.dot(np.linalg.matrix_power(r,-1),k)
print x
r=b-np.dot(B,x)
print r
np.linalg.norm(r,np.inf)
np.linalg.cond(np.dot(np.transpose(A),A),2)
print B
dot(r,b)
np.dot(transpose(r),b)
np.dot(transpose(r),B)
A=([3,4,1],[0,0,2],[1,2,1])
print A
import numpy.linalg as li
At=np.transpose(A)
Aav=(A+At)*0.5
U,S,V=li.svd(A)
print S
A10=li.matrix_power(A,10)
print A10
x0=[1,1,1]
x0=np.transpose(x0)
print A
print x0
for i in range(1,10):
x0=dot(A,x0)
if (i%1==0):
print x0
x0=x0/(li.norm(x0,2))
print x0
print V
def max_eigenpair(A, print_values=False):
"Compute the eigenpair for the largest eigenvalue. Matrix A is assumed symmetric"
# Compute eigenpairs
evals, evecs = np.linalg.eig(A)
# Get index of largest absolute eigenvalue
index = np.argmax(np.abs(evals))
# Get largest eigenvalue and corresponding eigenvector
eval_max = evals[index]
evec_max = evecs[:, index]/np.linalg.norm(evecs[:, index])
if print_values:
print(" Largest eigenvalue: {}".format(eval_max))
# Get second largest eigenvalue to compare to largest
eval1 = evals[np.argsort(abs(evals))[-2]]
print(" Second largest eigenvalue: {}".format(eval1))
return eval_max, evec_max