def is_uniq(l):
    a=set()
    for i in l:
        a.add(i)
    b= list(a)
    if len(l)==len(b):
        return True
    else:
        return False       
def is_diag(X):
    l=X.eigenvalues()
    if is_uniq(l):
        return True
    else:
        return False
def diagonalize(X):
    if is_diag(X):
        a= X.eigenvectors_right()
        l=[]
        for i in a:
            l.append(list(i[1][0]))
        S=transpose(matrix(l))
        D=(S^(-1))*X*S
        return D,S
    else:
        print "not diag"   
A1=matrix([[4,3],[1,2]])
D=diagonalize(A1)[0]
S=diagonalize(A1)[1]
#A1=S*D*S**(-1)
#Therefore A^(k)=S*D^(k)*S**(-1)
S*D^(100)*S**(-1)
out:[5916456789157588540587964239620896722549048263317672535777091979980469 5916456789157588540587964239620896722549048263317672535777091979980468]
[1972152263052529513529321413206965574183016087772557511925697326660156 1972152263052529513529321413206965574183016087772557511925697326660157]
#Therefore this matrix A^100

Strang-250-7-U (last edited 2010-12-17 05:18:34 by rupampy)