수학/Gilbert Strang Linear Algebra

3. 행렬곱셈과 역행렬(Matrix Multiplication and Inverse Matrices)

공부중인학생 2022. 1. 21. 01:00

 

 

행렬 곱셈에 대한 규칙을 논의해보겠습니다.

 

1. Matrix multiplication

2. Inverse of $A$ $AB$ $A^T$

3. Gauss - Jordan 

 

행렬 곱셈에 대해 조금 더 알아보고 gauss - jordan을 사용하여 역행렬을 구하는 방법에 대해 알아보겠습니다.

행렬 곱셈에는 몇 가지 방법이 있는데 우선 $row \times column$에 대해 알아보겠습니다.

 

 

1. 행렬을 곱하는 방법 $row \times column$ 

 

다음과 같은 행렬 연산이 있다고 해봅시다. ($AB = C$)

 

$\left[\begin{matrix}  &  &  &  \\  &  &  &  \\ a_{31} & a_{32} & a_{33} & a_{34} \end{matrix} \right] \left[\begin{matrix}  & b_{12}  &  &  \\  & b_{22} &  &  \\  & b_{32} &  &\\ & b_{42} & &  \end{matrix} \right] = \left[\begin{matrix}  &  &  \\  & c_{32} &   \\  \end{matrix} \right]$ 
 
 
 
C 행렬의 i행과 j열 원소에 대해서 표기를 할때 $C_{ij}$같이 행 번호를 쓴 다음 그 다음 열 번호를 씁니다. 여기서 한 가지 예를 들어보겠습니다. $C_{34}$라는 원소는 A의 3행과 B의 4열에서 계산된 값들이 모두 던해져 온 것입니다.
 
간단히 표현해보자면
 

- $C_{34} = A_{row3} \cdot B_{column 4}$ 이렇게 표현할 수 있습니다.

 

 

A의 원소를 a, 그리고 B의 원소를 b라고 할 때 row3과 column4에 아래와 같은 값들이 존재합니다.

  • $row3 = a_{31}, a_{32},...$
  • $column4 = a_{31}, a_{32},...$

 

이 값들로 내적을 표현해보겠습니다.

 

- $\sum \limits_{k=1} \limits^n a_{3k}b_{k4}$

 

 

square matrix인 경우 문제없이 연산이 가능하지만 rectangular matrix는 곱해지는 행렬의 shape이 중요해집니다. 앞 행렬의 열과 뒷 행렬의 행이 일치해야지만 각 원소끼리 개수가 맞아 알맞게 곱해서 다 더할 수 있습니다.

 

$A^{(m \times n)} B^{(n \times p)} = C^{(m \times p)}$

 

 

 

2. 행렬을 곱하는 방법 (column - wise)

 

 

 

 

A행렬 전체에 B행렬의 1열과 2열을 곱해준 값이 C행렬 1열 2열 값이 됩니다. 행렬과 행렬의 곱셈이 아닌 행렬과 벡터의 곱셈으로 나타내는 것.

 

이렇게 B의 열을 행렬 A에 곱해서 C의 열들을 구하는 것이니 A의 column의 조합으로 볼 수 있습니다.

 

 

 

$\left[\begin{matrix} 1 & 2 & 3   \\ 1 & 2 & 3   \\ 1 & 2 & 3 \end{matrix} \right] \left[\begin{matrix} 3   \\ 4   \\ 5 \end{matrix} \right] = 3 \left[\begin{matrix} 1   \\ 1   \\ 1 \end{matrix} \right] + 4 \left[\begin{matrix}  2  \\  2  \\ 2 \end{matrix} \right] + 5 \left[\begin{matrix}  3  \\  3  \\ 3 \end{matrix} \right] = 3 \left[\begin{matrix}  26  \\  26  \\ 26 \end{matrix} \right]$

 

 

다음과 같이 A의 column들에 B의 column vector 값이 상수처럼 곱해집니다.

- A행렬의 선형조합을 만드는 것

 

 

3. 행렬을 곱하는 방법 (row - wise)

 

 

 

 

$\left[\begin{matrix} 1 & 0 & 0  \end{matrix} \right] \left[\begin{matrix} 1 & 2 & 3   \\ 1 & 2 & 3   \\ 1 & 2 & 3 \end{matrix} \right] = 1 \left[\begin{matrix} 1 & 2 & 3  \end{matrix} \right] + 0 \left[\begin{matrix} 1 & 2 & 3  \end{matrix} \right] + 0  \left[\begin{matrix} 1 & 2 & 3  \end{matrix} \right]$

 

 

- 다음과 같이 A의 n번째 행과 B의 전체 행을 곱하면 C의 n번째 행을 구할 수 있습니다. (B의 조합이 생성됨)

 

 

4. 마지막 $column \times row$

 

 

 

첫 번째 방법은 row 곱하기 column이었습니다. 이제 column 곱하기 row를 해봅시다. 이 경우에는 외적같이 매우 큰 행렬을 얻게 됩니다. A행렬이 $m \times n$, B행렬이 $n \times p$ 일 때 $(m \times 1) (1 \times p) = (m \times p)$로 매우 큰 행렬을 얻게 됩니다.

 

- 이 경우 C의 row 값들은 B의 row 값에 상수 배 된 값이 되고, C의 column들도 A의 column의 상수 배가 됩니다.

 

 

Block dot

 

 

다음과 같은 matrix가 있을 때 출력 행렬의 각 원소들을 한 개씩 연산을 진행하는 것입니다.

 

 

 

Inverses

 

모든 행렬의 역행렬이 존재하는 것은 아닙니다. 행렬 A가 있을 때 이 행렬에 역행렬이 있는지 어떻게 알 수 있을까요?

 

  • $A^{-1}A = I = AA^{-1}$ 이 조건을 만족할 경우 역행렬이 존재하게 됩니다.
  • 판별식을 사용하면 됩니다.

- 일반적으로 square matrix의 경우 쉽게 알아낼 수 있지만 rectangular matrix의 경우 조건부터 만족시키기가 힘듭니다.

 

 

 

 

다른 방법으로는 column picture가 같은 Line상에 존재하는 경우 (선형종속) 역행렬이 없다는 것을 알 수 있습니다.

  •  square matrix A가 존재할 때 $Ax = 0$을 만들어주는 0이 아닌 x가 존재할 시 역행렬은 존재하지 않습니다.

 

 

 

 

$\left[\begin{matrix} 1 & 3 \\ 2 & 6  \end{matrix} \right]$

 

이 행렬이 역행렬을 가지는지 알아보겠습니다.

 

- 판별식을 사용 $ \frac 1 {(ad - bc)} =  \frac 1 {(1 \times 6 - 2 \times 3 = 0)} = 0$

 

 

 

- $\left[\begin{matrix} 1 & 3 \\ 2 & 6  \end{matrix} \right] \left[\begin{matrix} 3 \\ -1  \end{matrix} \right] = \left[\begin{matrix} 0 \\ 0  \end{matrix} \right]$

 

$A^{-1}Ax = A^{-1}b$ 이런 형태로 x값을 찾아야 하는데 $A^{-1}Ax = A^{-1}0$이 되버려서 성립이 될 수 없게됩니다.

 

 

Gauss - jordan

 

판별식이 0이 아닐 때 역행렬을 구해보겠습니다.

 

$\left[\begin{matrix} 1 & 3 \\ 2 & 7  \end{matrix} \right] \left[\begin{matrix} a & c \\ b & d  \end{matrix} \right] = \left[\begin{matrix} 1 & 0 \\ 0 & 1 \end{matrix} \right]$

 

$a \left[\begin{matrix} 1 \\ 2  \end{matrix} \right] + b \left[\begin{matrix} 1 \\ 2  \end{matrix} \right] = \left[\begin{matrix} 1 \\ 0  \end{matrix} \right]$

 

$c \left[\begin{matrix} 3 \\ 7  \end{matrix} \right] + d \left[\begin{matrix} 0 \\ 1  \end{matrix} \right] = \left[\begin{matrix} 1 \\ 0  \end{matrix} \right]$

 

다음과 같을 때 gauss jordan을 사용해보겠습니다. (한 번에 두 개의 방정식을 풀 수 있습니다.)

 

$\left[\begin{matrix} 1 & 3 & 1 & 0 \\ 2 & 7 & 0 & 1  \end{matrix} \right] = AI$

 

 

우선 augment matrix를 만들어줍니다. 그다음 2강에서 배웠던 소거를 진행해주겠습니다.

첫 번째 행에 2를 곱해서 두 번째 행에 빼줍니다. - 여기가 gauss

 

$\left[\begin{matrix} 1 & 3 & 1 & 0 \\ 0 & 1 & -2 & 1  \end{matrix} \right]$

 

 

이제 아래 행에서 위에 행을 빼 1행 2열 값을 0으로 만들어줍니다.

 

$\left[\begin{matrix} 1 & 0 & 7 & -3 \\ 0 & 1 & -2 & 1  \end{matrix} \right] = IA^{-1}$

 

 

A행렬이 Identity matrix가 될 때까지 제거를 반복해주면 그 과정이 처음에 증강시켰던 I 행렬에 나타나게 됩니다.

 

- $(AI)A^{-1} = IA^{-1}$

 

 

 

 

요약

 

- 행렬 곱셈을 진행할 때 다양한 관점에서 볼 수 있다.

- 이전에 배운 gauss 소거법은 결과물로 상삼각행렬을 만들었지만 gauss - jordan 소거법은 대각원소 위쪽 부분도 0으로 바꾸어 진행하는 방법이다. (그래서 1행 빼기 2행을 진행한 것)