import numpy as np
import numpy.linalg as alg

def A(n) :
    B = np.zeros((n,n))
    for i in range(n) :
        for j in range(n) :
            if i < j :
                B[i,j] = j+1
            else :
                B[i,j] = i+1
    return B
    
print(A(3))
print(A(4))
print(A(5))

for k in range(3,6) :
    print(alg.inv(A(k)))
    
for k in range(3,6) :
    vp = alg.eigvals(A(k))
    for i in range(k) :
        print("k = ",k,"vp = ",vp[i]," et dim(espPropre) = ",k-alg.matrix_rank(A(k)-vp[i]*np.eye(k))) # un bug pour la première !
        
    
def M(n) :
    B = np.zeros((n,n))
    for i in range(n) :
        for j in range(n) :
            B[i,j] = i+j+2
    return B
    
for k in range(3,6) :
    print(alg.matrix_rank(M(k)))
    
for k in range(3,6) :
    print(alg.eigvals(M(k)))