행렬특징 – 선형대수

여러가지의 행렬특징이 있다.

행렬 곱의 교환법칙 불가

$AB \neq BA$

A = $\begin{bmatrix}2 & 3 \\ 3 & 1 \\ 4 & 5 \end{bmatrix}$, B = $\begin{bmatrix} 1 & 2 & 3 \\ 2 & 3 & 4 \end{bmatrix}$

AB = $\begin{bmatrix}2 & 3 \\ 3 & 1 \\ 4 & 5 \end{bmatrix}$ $\begin{bmatrix} 1 & 2 & 3 \\ 2 & 3 & 4 \end{bmatrix}$ = $\begin{bmatrix} 8 & 13 & 18 \\ 5 & 9 & 13 \\ 14 & 23 & 32 \end{bmatrix}$

BA = $\begin{bmatrix} 1 & 2 & 3 \\ 2 & 3 & 4 \end{bmatrix}$$\begin{bmatrix}2 & 3 \\ 3 & 1 \\ 4 & 5 \end{bmatrix}$ = $\begin{bmatrix} 20 & 20 \\ 29 & 29 \end{bmatrix}$

행렬의 거듭 제곱

  • $A^{0} = I$
  • $(A^{b})^{c} = A^{bc}$
  • $A^{b}A^{c} = A^{b+c}$

행렬 연산의 기본 성질

  • A +0 = 0 + A = A
  • IA = AI = A
  • A + B = B + A
  • (A + B) + C = A + (B + C)
  • (AB)C = A(BC)
  • A(B+C) = AB + AC
  • (A + B)C = AC + BC
  • a(B + C) = aB + aC
  • (a+b)C = aC + bC
  • (ab)C = a(bC)
  • a(BC) = (aB)C = B(aC)

행렬 곱의 소거법칙 적용 불가

행렬 A, B, C 에 대해, AB=AC라고 해서 반드시 B=C는 아닌다. 즉 행력 곱에서 소거법칙은 성립하지 않는다.

A = $\begin{bmatrix}1 & 0 \\ 0 & 0 \end{bmatrix}$, B = $\begin{bmatrix}1 & 2 \\ 0 & 1 \end{bmatrix}$, C = $\begin{bmatrix}1 & 0 \\ 0 & 0 \end{bmatrix}$

AB = $\begin{bmatrix}1 & 2 \\ 0 & 0 \end{bmatrix}$

AC = $\begin{bmatrix}1 & 2 \\ 0 & 0 \end{bmatrix}$

$B \neq C$ 임에도 불구하고 AB = AC이다. 따라서 AB = AC 이더라도 A를 소거하고 B = C라고 할 수는 없다.

AB = 0 인 행렬

AB = 0 일 때 일반적으로 A = 0 또는 B = 0 이라고 할 수 없다.

$\begin{bmatrix}1 & 2 \\ 0 & 0 \end{bmatrix} \begin{bmatrix}1 & 0 \\ -2 & 0 \end{bmatrix} = \begin{bmatrix}0 & 0 \\ 0 & 0 \end{bmatrix}$

따라서 두 행렬의 곱이 영행렬이라도, 곱해진 두 행렬 중 하나가 영행렬이라고 할 수 없다.

가역행렬과 비가역행렬

역행렬이 존재할 때 행렬은 가역(invertible)이라 하고, 그렇지 않을 때는 비가역(noninvertible) 이라 한다. 역행렬이 존재하는 행렬은 가역행렬, 비특이행렬 또는 정칙행렬 이라고 한다. 역행렬이 없는 행렬은 비가역행렬 또는 특이행렬 이라고 한다.

다음 행렬 A가 가역행렬인지 보여라

A = $\begin{bmatrix} 2 & -3 & 5 \\ 1 & 7 & 4 \\ 0 & 0 & 0 \end{bmatrix}$

A의 마지막 행의 성분이 모두 0이므로 A에 어떤 3*3 행렬 B를 곱하여도 결과는 마지막 행의 성본이 모드 0이다. 따라서 A는 비가역행렬이다.

역행렬의 유일성

n차 정방행렬 A가 가역이면, A의 역행렬은 유일하다.

만약 행렬 B와 C가 둘 다 A의 역행렬이라면, 다음 관계가 성립한다.

BA = AB = I,  CA=AC = I

B를 다음과 같이 전개해보자

B = BU = B(AC) = (BA)C = IC = C

결국 두 행렬이 같다 (즉 B = C)는 결과가 나오므로, 역행렬이 존재한다.

2 $\times$ 2 행렬의 역행렬

행렬 A = $\begin{bmatrix}a & b \\ c & d \end{bmatrix}$에 대하여 ad – bc $\neq$ 0이면, 역행렬은 $A^{-1} = \dfrac{1}{ad – bc}\begin{bmatrix}d & -b \\ -c & a \end{bmatrix}$ 이다

역행렬의 성질

n차 정방행렬 A,B가 가역이고, $\alpha$는 0이 아닌 스칼라일 때, 다음 성질을 만족한다.

$A^{-1}$는 가역이고, $(A^{-1})^{-1} = A$이다.

$AB는 가역이고, $(AB)^{-1} = B^{-1}A^{-1}$이다.

$\alpha A$는 가역이고 $(\alpha A)^{-1} = \dfrac{1}{\alpha}A^{-1}$이다

$A^{k}$는 가역이고 $(A^{-1})^{k} = (A^{-k})^{-1}$이다(k는 0 이상의 정수이다)

전치행렬

행렬 A = $[a_{ij}]_{m\times n}$ 의 행과 열을 바꾸어 놓은 행렬을 전치행렬이라 하고 $A^{T}$로 나타낸다.

$(A^{T})^{T} = A$

$(A+B)^{T} = A^{T} + B^{T}$

$(AB)^{T} = B^{T}A^{T}$

$(\alpha A)^{T} = \alpha A^{T}$

A가 가역이면 $(A^{T})^{-1}=(A^{-1})^{t}$

대칭행렬 반대칭행렬

정방행렬 A가 자신의 전치행렬 $A^{T}$와 같으면 $(A = A^{T})$, A를 대칭행렬이라 한다. 정방행렬 A가 $A^{T} = -A$를 만족하면, A를 반대칭행렬이라 한다.

A = $\begin{bmatrix}1 & 2 & 3 \\ 2 & 4  & 5 \\ 3 & 5 & 6 \end{bmatrix}$ 은 대칭행렬이다.

B = $\begin{bmatrix}0 & 2 & 3 \\ -2 & 0  & 5 \\ -3 & -5 & 0 \end{bmatrix}$ 은 반대칭행렬이다.

정방행렬과 전치행렬의 합과 차

정방행렬 A에 대해 $A + A^{T}$ 는 대칭행렬이고 A – A^{T}는 반 대칭행렬이다.

A = $\dfrac{1}{2}(A + A^{T}) + \dfrac{1}{2}(A – A^{T})$이다. 즉 정방행렬 A는 대칭행렬인 $\dfrac{1}{2}(A + A^{T})$와 반대칭행렬인 $\dfrac{1}{2}(A – A^{T})$의 합으로 나타낼 수 있다.

A = $\begin{bmatrix}5 & 2 & 1 \\ 3 & 6  & 4 \\ 2 & 7 & 2 \end{bmatrix}$

A = $\dfrac{1}{2}(A + A^{T}) + \dfrac{1}{2}(A – A^{T})$

= $\dfrac{1}{2}(\begin{bmatrix}5 & 2 & 1 \\ 3 & 6  & 4 \\ 2 & 7 & 2 \end{bmatrix} + \begin{bmatrix}5 & 3 & 2 \\ 3 & 6  & 7 \\ 1 & 4 & 2 \end{bmatrix}) + \dfrac{1}{2}(\begin{bmatrix}5 & 2 & 1 \\ 3 & 6  & 4 \\ 2 & 7 & 2 \end{bmatrix} – \begin{bmatrix}5 & 3 & 2 \\ 3 & 6  & 7 \\ 1 & 4 & 2 \end{bmatrix})$

= $\begin{bmatrix}5 & \dfrac{5}{2} & \dfrac{3}{2} \\ \dfrac{5}{2} & 6  & \dfrac{11}{2} \\ \dfrac{3}{2} & \dfrac{11}{2} & 2 \end{bmatrix} + \begin{bmatrix}0 & -\dfrac{1}{2} & -\dfrac{1}{2} \\ \dfrac{1}{2} & 0  & -\dfrac{3}{2} \\ \dfrac{1}{2} & \dfrac{3}{2} & 0 \end{bmatrix}$

대각행렬

주대각 성분 이외의 성분이 모두 0인 정방행렬을 대각행렬이라 한다. 주 대각 성분이 $a_{11}, a_{22}, ….. a_{nn}$인 n차 대각행렬은 $diag(a_{11}, a_{22}, ….. a_{nn})$으로 표기한다.

A = diag(1,2,3) = $\begin{bmatrix}1 & 0 & 0 \\ 0 & 2  & 0 \\ 0 & 0 & 3 \end{bmatrix}$

B = diag(2,4,6) = $\begin{bmatrix}2 & 0 & 0 \\ 0 & 4  & 0 \\ 0 & 0 & 6 \end{bmatrix}$

AB = $\begin{bmatrix}1 & 0 & 0 \\ 0 & 2  & 0 \\ 0 & 0 & 3 \end{bmatrix}\begin{bmatrix}2 & 0 & 0 \\ 0 & 4  & 0 \\ 0 & 0 & 6 \end{bmatrix} = \begin{bmatrix}2 & 0 & 0 \\ 0 & 8  & 0 \\ 0 & 0 & 18 \end{bmatrix}$ = diag(2,8,18)

대각행렬과 행렬의 곱

m차 대각행렬 $D_{m}$을 행렬 A = $[a_{ij}]_{m\times n}$의 앞에 곱하면 A의 각 행에 대응하는 $D_{m}$의 주대각 성분이 곱해진다.

n차 대각행렬 $D_{n}$을 A 의 뒤에 곱하면, A의 각 열에 대응하는 $D_{n}$의 주대각 성분이 곱해진다.

$D_{3}A = \begin{bmatrix}2 & 0 & 0 \\ 0 & 3  & 0 \\ 0 & 0 & 4 \end{bmatrix} \begin{bmatrix} a_{11} & a_{12} & a_{13} & a_{14} \\ a_{21} & a_{22} & a_{23} & a_{24} \\ a_{31} & a_{32} & a_{33} & a_{34}\end{bmatrix} = \begin{bmatrix} 2a_{11} & 2a_{12} & 2a_{13} & 2a_{14} \\ 3a_{21} & 3a_{22} & 3a_{23} & 3a_{24} \\ 4a_{31} & 4a_{32} & 4a_{33} & 4a_{34}\end{bmatrix}$

$AD_{4} = \begin{bmatrix} a_{11} & a_{12} & a_{13} & a_{14} \\ a_{21} & a_{22} & a_{23} & a_{24} \\ a_{31} & a_{32} & a_{33} & a_{34}\end{bmatrix} \begin{bmatrix}2 & 0 & 0 & 0 \\ 0 & 3  & 0 & 0 \\ 0 & 0 & 4 & 0 \\ 0 & 0 & 0 & 5 \end{bmatrix} = \begin{bmatrix} 2a_{11} & 3a_{12} & 4a_{13} & 5a_{14} \\ 2a_{21} & 3a_{22} & 4a_{23} & 5a_{24} \\ 2a_{31} & 3a_{32} & 4a_{33} & 5a_{34}\end{bmatrix}$

대각합(trace)

정방행렬 A = $[a_{ij}]_{n \times n}$ 의 대각합 tr(A)는 주대각 성분의 합이다.

tr(A) = $a_{11} + a_{22} + …. + a_{nn}$

A = $\begin{bmatrix}2 & 5 & 7 \\ 6 & 0  & 3 \\ 5 & 9 & 1 \end{bmatrix}$ 의 대각합은 tr(A) = $a_{11} + a_{22} + a_{33}$ = 2 + 0 + 1 = 3

n 차 정방행렬 A,B에 대해 tr(A+B) = tr(A) + tr(B)이다.

n 차 정방행렬 A와 스칼라 c에 대해, tr(cA) = c $\cdot$ tr(A) 이다.

n $\times$ m 행렬 A와 m $\times$ n 행렬 B에 대해, tr(AB) = tr(BA)이다.

n차 정방행렬 A,B,C 에 대해, tr(ABC) = tr(CAB) = tr(BCA) 이다.

삼각행렬

주대각 성분 아래쪽의 모든 성분이 0인 정방행렬을 상삼각행렬이라 한다. $U_{n} = [u_{ij}]_{n\times n}$ 에서 i > j 이면 $u_{ij}$ = 0 이다.

주대각 성분 위쪽의 모든 성분이 0인 정방행렬을 하삼각행렬이라 한다. $L_{n} = [l_{ij}]_{n\times n}$ 에서 i < j 이면 $l_{ij}$ = 0 이다.

상삼각행렬과 하삼각행렬을 통틀어 삼각행렬이라고 한다.

A = $\begin{bmatrix}1 & 5 & 6 \\ 0 & 3  & 8 \\ 0 & 0 & 4 \end{bmatrix}$ 는 상삼각행렬이고,

A = $\begin{bmatrix}7 & 0 & 0 \\ 1 & 4  & 0 \\ 5 & 2 & 3 \end{bmatrix}$ 는 하삼각행렬렬이다.

상삼각행렬과 상삼각행렬의 곱은 상삼각행렬이고, 하삼각행렬과 하삼각행렬의 곱은 하 삼각행렬이다.

블록행렬

행렬의 특정 행과 열 사이를 경계로 나누어 부분행렬로 표현한 것을 블록행렬 또는 구획행렬이라고 한다.

A = $\begin{bmatrix}2 & -3 & 1 & 0 & -4 \\ 1 & 5  & -2 & 3 & -1 \\ 0 & -4 & -2 & 7 & -1 \end{bmatrix} = \begin{bmatrix} A_{11} & A_{12} \\ A_{21} & A_{22} \end{bmatrix}$

B = $\begin{bmatrix}6 & 4 \\ -2 & 1 \\ -3 & 7 \\ -1 & 3 \\ 5 & 2 \end{bmatrix} = \begin{bmatrix} B_{11} \\B_{21} \end{bmatrix}$

AB = $\begin{bmatrix} A_{11} & A_{12} \\ A_{21} & A_{22} \end{bmatrix} \begin{bmatrix}B_{11} \\ B_{21}\end{bmatrix} = \begin{bmatrix} A_{11}B_{11} + A_{12}B_{21} \\A_{21}B_{11} + A_{22}B_{21} \end{bmatrix}$

= $\begin{bmatrix} \begin{bmatrix} 2 & -3 & 1 \\ 1 & 5 & -2 \end{bmatrix} \begin{bmatrix} 6 & 4 \\ -2 & 1 \\ -3 & 7 \end{bmatrix} + \begin{bmatrix} 0 & -4 \\ 3 & -1 \end{bmatrix} \begin{bmatrix} -1 & 3 \\ 5 & 2\end{bmatrix} \\ \begin{bmatrix} 0 & -4 & -2 \end{bmatrix} \begin{bmatrix} 6 & 4 \\ -2 & 1 \\ -3 & 7 \end{bmatrix}  + \begin{bmatrix} 7 & -1\end{bmatrix}\begin{bmatrix}-1 & 3 \\ 5 & 2 \end{bmatrix} \end{bmatrix}$

= $\begin{bmatrix} \begin{bmatrix}15 & 12 \\ 2 & -5\end{bmatrix} + \begin{bmatrix}-20 & -8 \\ -8 & 7\end{bmatrix} \\ \begin{bmatrix}14 & -18\end{bmatrix} + \begin{bmatrix}-12 & 19\end{bmatrix} \end{bmatrix} = \begin{bmatrix}-5 & 4 \\ -6 & 2 \\ 2 & 1\end{bmatrix}$

열벡터와 행벡터의 곱에 의한 행렬

A = $\begin{bmatrix}1 & 2 \\ 2 & 4\end{bmatrix}$, B = $\begin{bmatrix}2 & 4 & 6 \\ 3 & 5 & 7 \end{bmatrix}$

AB =$\begin{bmatrix}1 & 2 \\ 2 & 4\end{bmatrix}\begin{bmatrix}2 & 4 & 6 \\ 3 & 5 & 7 \end{bmatrix} = \begin{bmatrix}8 & 14 & 20 \\ 16 & 28 & 40 \end{bmatrix}$

$a_{1}b_{1}^{T} + a_{2}b_{2}^{T} = \begin{bmatrix}1 \\ 2\end{bmatrix}\begin{bmatrix}2 & 4 & 6\end{bmatrix} = \begin{bmatrix}2 & 4 & 6 \\ 4 & 8 & 12\end{bmatrix} + \begin{bmatrix}6 & 10 & 14\\ 12 & 20 & 28\end{bmatrix} = \begin{bmatrix}8 & 14 & 20\\ 16 & 28 & 40\end{bmatrix}$

AB를 직접 계산한 것과 $a_{1}b_{1}^{T} + a_{2}b_{2}^{T}$ 로 계산한 것의 결과가 같다

행렬과 텐서

백터와 행렬의 개념을 확장한 것으로 텐서(tensor)가 있다. 텐서는 TensorFlow, PyTorch등과 같은 머신러닝이나 딥러닝등의 프로그램 개발 환경에서 다차원 배열을 가르키는 용어이다. 텐서에는 rank라는 개념을 사용하는데. 아래 그림과 같이 랭크에 따라 배열의 형태를 갖는 것을 텐서라고 한다.

Rank 0인 텐서는 스칼라이고, Rank 1 인 텐서는 1차원 배열로서 벡터에 해당한다. Rank 2인 텐서는 2차원 배열로 행렬에 해당하고, Rank 3 인 텐서는 3차원 배열로서, Rank 2 인 텐서들을 원소로 한다. Rank 4 인 텐서는 Rank 3인 텐서들의 배열이다.

Python Code

import numpy as np

v1 = np.array([1,2,3])
v2 = np.array([4,5,6])
v3 = np.array([7,8,9])
A = np.vstack([v1,v2,v3]) # v1,v2,v3를 각각 행으로 하는 행렬 A 생성
B = np.column_stack([v1,v2,v3]) # v1,v2,v3를 각각 열로 하는 행렬 A 생성
C = np.array([[1,2],[3,4],[5,6]])
D = np.column_stack([C,v3]) # 행렬 C에 V3를 열로 추가하여 행렬 D를 생성

E = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
print(E[0,3]) # 1행 4열의 성분
print(E[0:2,2:4]) # 1~2행의 3~4열에 해당하는 부분행렬
print(E[2,:]) # 3행에 해당하는 부분행렬

E[0,0] = -1 # 1행 1열 성분을 -1로 변경
import numpy as np

def pprint(msg, A):
    print("---", msg, "---")
    (n,m) = A.shape
    for i in range(0,n):
        line = ""
        for j in range(0,m):
            line += "{0:.2f}".format(A[i,j])+"\t"
        print(line)
    print("")


A = np.array([[1.,2.],[3.,4.]])
B = np.array([[2.,2.],[1.,3.]])
C = np.array([[4.,5.,6.],[7.,8.,9.]])
v = np.array([[10.],[20.]])

pprint("A+B",A+B)
pprint("A-B",A-B)

pprint("3*A ", 3*A)
pprint("2*v ", 2*v)

pprint("matmul(A,B)", np.matmul(A,B)) #행렬의 곱
pprint("matmul(A,C)", np.matmul(A,C))
pprint("A*v", A*v)

pprint("atrix_power(A,2)", np.linalg.matrix_power(A,2)) #행렬의 거듭제곰 A2
pprint("atrix_power(A,2)", np.linalg.matrix_power(A,3)) #행렬의 거듭제곱 A3

pprint("A*B", A*B) # 행렬의 성분별 곱셈 A*B
pprint("A/B", A/B) # 행렬의 성분별 나눗셈 A/B
pprint("A**2 == A*A", A**2) # 행렬의 성분별 거듭제곱

pprint("A.T", A.T) # 행렬의 전치 
pprint("v.T', v.T) # 벡터의 전치

M = np.diag([1,2,3]) # 대각행렬 diag(1,2,3) 생성
pprint("diag(1,2,3) = ", M)

D11 = np.array([[1,2],[3,4]])
D12 = np.array([[5],[6]])
D21 = np.array([[7,7]])
D22 = np.array([[8]])
D = np.block([[D11,D12],[D21,D22]])
pprint("block matrix", D)

 

답글 남기기