Ex 2

In [1]:
import numpy as np

A=np.array([[1,2,-1,4],
            [-1,3,0,2],
            [2,1,1,2],
           [1,4,1,3]])
In [2]:
np.linalg.det(A)
Out[2]:
-12.0
In [3]:
A[1,:]=A[1,:]+A[0,:]
A[2,:]=A[2,:]-2*A[0,:]
A[3,:]=A[3,:]-A[0,:]
A
Out[3]:
array([[ 1,  2, -1,  4],
       [ 0,  5, -1,  6],
       [ 0, -3,  3, -6],
       [ 0,  2,  2, -1]])
In [4]:
np.linalg.det(A[(1,2,3),:][:,(1,2,3)])
Out[4]:
-12.000000000000005

Ex 3

In [5]:
M=np.array([[-1.,2,1],
            [0.,2,3],
            [1,1,4]])
np.linalg.det(M)
Out[5]:
-0.99999999999999911
In [6]:
M[0,]=-1*M[0,] # -1
M
Out[6]:
array([[ 1., -2., -1.],
       [ 0.,  2.,  3.],
       [ 1.,  1.,  4.]])
In [7]:
M[2,]=M[2,]-M[0,]
M
Out[7]:
array([[ 1., -2., -1.],
       [ 0.,  2.,  3.],
       [ 0.,  3.,  5.]])
In [8]:
M[1,]=f(1,2)*M[1,] # 2  <== Careful!!
M
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-8-dc58e7a71c6e> in <module>()
----> 1 M[1,]=f(1,2)*M[1,] # 2  <== Careful!!
      2 M

NameError: name 'f' is not defined
In [ ]:
M[2,]=M[2,]-3*M[1,] 
M
In [ ]:
M[2,]=1/2*M[2,] # 2  <== carefull!!
M
In [ ]:
M.dtype
In [ ]:
MF=M.astype('float')
In [ ]:
from fractions import Fraction as f
In [ ]:
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

ex 4

In [ ]:
I = np.identity(3)
M = np.array([[-2,1,3],[0,-1,1],[1,2,0]])
MC = np.concatenate([M,I], axis=1)
MC
In [ ]:
import sympy as sy
MM = sy.Matrix(MC)
MM.rref()

Ex 5

In [ ]:
A=np.array([[-1,2,1],
            [0,1,2],
            [3,1,4]])
b=np.array([1,1,5])
In [ ]:
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])
In [ ]:
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)
In [ ]:
np.linalg.solve(A,b)