Linear Algebra with Sage

<Cramer's Rule>


Made by SKKU Linear Algebra Lab (2011)


Solve following LSE using Cramer's Rule.

@@ \left\{ \begin{array}{ll} x+y+2z=9\\ 2x+4y-3z=1\\ 3x+6y-5z=0 \end{array}\right.@@



<Cramer's Rule>

If @@A \textbf{x} = \textbf{v}@@ is a LSE in @@n@@ unknowns, then the system has a unique solution iff det@@(A)\neq 0@@, in which case the solution is

 @@x_1 = \Large{\frac{det(A_{1})}{det(A)}}@@,   @@x_2 = \Large{\frac{det(A_{2})}{det(A)}}@@,   @@\ldots@@,   @@x_n = \Large{\frac{det(A_{n})}{det(A)}}@@
 

    where @@A_j@@ is the matrix that results when the @@j@@-th column of @@A@@ is replaced by @@\textbf{v}@@.



Define matrices (계수행렬과 상수행렬 생성 및 확인)

A=matrix([[1,1,2],[2,4,-3],[3,6,-5]]);

v=matrix(3,1,[9,1,0]);

print A

print v

[ 1  1  2]

[ 2  4 -3]

[ 3  6 -5]

[9]

[1]

[0]


Check det@@(A)\neq 0@@ (주어진 LSE가 Unique Solution을 갖는지 @@A@@의 행렬식을 구하여 확인)

det(A)==0

False


Define a function sub(M, col, v) to use Cramer's Rule

  M: The Matrix replaced by v

  col: The column of M replaced by v

  v: replacing vector

(Define a new function in SAGE is helpful when we handle the large size data)

def sub(M,col,v):

    n1=M.nrows()

    n2=M.ncols()

    S=matrix(n1,n2)       # Define a matrix S which has same size with M

    for i in range(n1):

      for j in range(n2):

        S[i,j]=M[i,j]       # S: copy all entries of M

    for i in range(n1):

      S[i,col-1]=v[i,0]    # Replacing j-th column of S by v

    return S


A1: obtained by replacing the 1st column with the column vector @@\textbf{v}@@

A1=sub(A,1,v); A1

[ 9  1  2]

[ 1  4 -3]

[ 0  6 -5]


A2: obtained by replacing the 2nd column with the column vector @@\textbf{v}@@

A2=sub(A,2,v); A2

[ 1  9  2]

[ 2  1 -3]

[ 3  0 -5]


A3: obtained by replacing the 3rd column with the column vector @@\textbf{v}@@

A3=sub(A,3,v); A3

[1  1  9]

[2  4  1]

[3  6  0]


Find solution of LSE using Cramer's Rule. (크래머 공식을 이용한 풀이)

det(A1)/det(A), det(A2)/det(A), det(A3)/det(A)

(1, 2, 3)