import numpy as np
A=np.array([[1,2,-1,4],
[-1,3,0,2],
[2,1,1,2],
[1,4,1,3]])
np.linalg.det(A)
A[1,:]=A[1,:]+A[0,:]
A[2,:]=A[2,:]-2*A[0,:]
A[3,:]=A[3,:]-A[0,:]
A
np.linalg.det(A[(1,2,3),:][:,(1,2,3)])
M=np.array([[-1.,2,1],
[0.,2,3],
[1,1,4]])
np.linalg.det(M)
M[0,]=-1*M[0,] # -1
M
M[2,]=M[2,]-M[0,]
M
M[1,]=f(1,2)*M[1,] # 2 <== Careful!!
M
M[2,]=M[2,]-3*M[1,]
M
M[2,]=1/2*M[2,] # 2 <== carefull!!
M
M.dtype
MF=M.astype('float')
from fractions import Fraction as f
M=np.array([[f(-1,1),f(2,1),f(1,1)],
[f(0,1),f(2,1),f(3,1)],
[f(1,1),f(1,1),f(4,1)]])
M.dtype
I = np.identity(3)
M = np.array([[-2,1,3],[0,-1,1],[1,2,0]])
MC = np.concatenate([M,I], axis=1)
MC
import sympy as sy
MM = sy.Matrix(MC)
MM.rref()
A=np.array([[-1,2,1],
[0,1,2],
[3,1,4]])
b=np.array([1,1,5])
A1=np.column_stack([b,A[:,1:3]])
A2=np.column_stack([A[:,0],b,A[:,2]])
A3=np.column_stack([A[:,0:2],b])
detA = np.linalg.det(A)
x1=np.linalg.det(A1)/detA
x2=np.linalg.det(A2)/detA
x3=np.linalg.det(A3)/detA
print(x1,x2,x3)
np.linalg.solve(A,b)