import numpy as np
import numpy.linalg as alg

A=np.array([[-3,-1,4],[-1,3,-1],[2,3,4],[2,0,-3]])
print(alg.matrix_rank(A))

b=np.array([-1,-4,2,-4])

b=b.reshape((4,1))
C=np.concatenate((A,b),axis=1)
print(alg.matrix_rank(C))

u=[]
for i in range(3):
    u.append(A[:,i])

P=np.zeros((3,3))
for i in range(3):
    for j in range(3):
        P[i,j]=np.vdot(u[i],u[j])
B=np.zeros(3)
for i in range(3):
    B[i]=np.vdot(b,u[i])

X=alg.solve(P,B)
print(X)


C=np.transpose(A).dot(A)
D=np.transpose(A).dot(b)
Y=alg.solve(C,D)
print(Y)



