가우스 조던 소거법(Gauss-Jordan Elimination) 알아보기

2024. 7. 21. 07:03·Machine Learning Math/Linear Algebra
반응형

가우스 조던 소거법이란?

가우스 조던 소거법(Gauss-Jordan elimination)은 선형 방정식의 해를 구하거나, 역행렬을 계산하는 데 사용되는 알고리즘이다.

 

이 방식은 다음 세가지 과정을 반복해 해를 구하는 방식이다.

1. 행 교환(Row Exchange): 두 행을 교환하여 주 대각선 요소(pivot element)가 0이 아닌 값이 되도록 한다.
2. 스케일링(Scaling): 주 대각선 요소가 1이 되도록 행의 모든 요소를 동일한 값으로 나눕니다.
3. 행 덧셈(Row Addition): 다른 행의 요소를 사용하여 주 대각선 요소 외의 열의 모든 요소를 0으로 만듭니다.

 

각 과정이 어떻게 사용되는지 알아보기 위해 예제를 통해 이해해보자.

 

가우스 조던 소거법 예제

다음과 같은 행렬의 역행렬을 구하기 위해 가우스 조던 소거법을 사용해보자.

$\mathbf{X} = \begin{bmatrix}
2 & 1 & -1 \\
-3 & -1 & 2 \\
-2 & 1 & 2
\end{bmatrix}$

 

1. 먼저 행렬을 확장해 오른쪽에 단위 행렬을 추가한다.

$\left[\mathbf{X} | \mathbf{I}\right] = \begin{bmatrix}
2 & 1 & -1 & | & 1 & 0 & 0 \\
-3 & -1 & 2 & | & 0 & 1 & 0 \\
-2 & 1 & 2 & | & 0 & 0 & 1
\end{bmatrix}$

 

2. 1번 행을 2로 나눠 첫 번째 열의 첫 번째 원소를 1로 만든다. 

$\begin{bmatrix}
1 & 0.5 & -0.5 & | & 0.5 & 0 & 0 \\
-3 & -1 & 2 & | & 0 & 1 & 0 \\
-2 & 1 & 2 & | & 0 & 0 & 1
\end{bmatrix}$

 

3. 2번 행에 1번 행을 3번 더하고, 3번 행에 1번 행을 2번 더해, (2,1) 위치의 원소와 (3,1)위치의 원소를 0으로 만든다.

$\begin{bmatrix}
1 & 0.5 & -0.5 & | & 0.5 & 0 & 0 \\
0 & 0.5 & 0.5 & | & 1.5 & 1 & 0 \\
0 & 2 & 1 & | & 1 & 0 & 1
\end{bmatrix}$

 

4. 2번 행에 2를 곱해 (2,2) 원소를 1로 만든다.

$\begin{bmatrix}
1 & 0.5 & -0.5 & | & 0.5 & 0 & 0 \\
0 & 1 & 1 & | & 3 & 2 & 0 \\
0 & 2 & 1 & | & 1 & 0 & 1
\end{bmatrix}$

 

5. 3번 행에 2번 행을 두번 빼 (3,2) 원소를 0으로 만든다. 1번 행에 2번행을 0.5 곱한것을 빼 (1,2) 원소를 0으로 만든다.

$\begin{bmatrix}
1 & 0 & -1 & | & -1 & -1 & 0 \\
0 & 1 & 1 & | & 3 & 2 & 0 \\
0 & 0 & -1 & | & -5 & -4 & 1
\end{bmatrix}$

 

6. 3번 행에 -1을 곱해 (3,3)을 1로 만든다.

$\begin{bmatrix}
1 & 0 & -1 & | & -1 & -1 & 0 \\
0 & 1 & 1 & | & 3 & 2 & 0 \\
0 & 0 & 1 & | & 5 & 4 & -1
\end{bmatrix}$

 

7. 1번 행에 3번 행을 더해 (1,3)을 0으로 만들고, 2번 행에 3번 행을 빼 (2,3)을 0으로 만든다.

$\begin{bmatrix}
1 & 0 & 0 & | & 4 & 3 & -1 \\
0 & 1 & 0 & | & -2 & -2 & 1 \\
0 & 0 & 1 & | & 5 & 4 & -1
\end{bmatrix}$

 

그러면 이제 오른쪽의 행렬이 역행렬이 된다. 이런 방식으로 가우스 조던 소거법을 통해 역행렬을 구할 수 있다.

$\mathbf{X}^{-1} = \begin{bmatrix}
4 & 3 & -1 \\
-2 & -2 & 1 \\
5 & 4 & -1
\end{bmatrix}$

 

 

 

반응형

'Machine Learning Math > Linear Algebra' 카테고리의 다른 글

대각 행렬(Diagonal Matrix) 한 번에 정리하기  (0) 2024.07.23
역행렬(Inverse Matrix) 이란 무엇인가? Numpy, TensorFlow, PyTorch 에서 계산 방법 알아보기  (0) 2024.07.22
대칭 행렬(Symmetric Matrix)와 단위 행렬(Identity Matrix) 한 번에 정리하기: Numpy, TensorFlow, PyTorch 사용해 단위 행렬 만들기  (0) 2024.07.20
Frobenius Norm 이란 무엇인가? Numpy, TensorFlow, PyTorch에서의 Frobenius Norm 계산법 알아보기  (0) 2024.07.19
Tensor 사칙 연산, 아다마르 곱셈(Hadamard Product) 한 번에 정리하기: Numpy, TensorFlow, PyTorch에서의 사용법 정리  (0) 2024.07.18


'Machine Learning Math/Linear Algebra' 카테고리의 다른 글
  • 대각 행렬(Diagonal Matrix) 한 번에 정리하기
  • 역행렬(Inverse Matrix) 이란 무엇인가? Numpy, TensorFlow, PyTorch 에서 계산 방법 알아보기
  • 대칭 행렬(Symmetric Matrix)와 단위 행렬(Identity Matrix) 한 번에 정리하기: Numpy, TensorFlow, PyTorch 사용해 단위 행렬 만들기
  • Frobenius Norm 이란 무엇인가? Numpy, TensorFlow, PyTorch에서의 Frobenius Norm 계산법 알아보기
심플코드
심플코드
프로그래밍을 어렵지 않게 풀어서 설명하는 기술 블로그
    반응형
  • 심플코드
    심플코드
    심플코드
  • 전체
    오늘
    어제
    • 분류 전체보기 (96)
      • 안드로이드를 위한 Coroutines (2)
      • Unit Testing (19)
      • GitHub Actions (0)
      • 공식 문서 번역 (35)
        • Coroutines 공식 문서 (35)
      • 알고리즘 (7)
        • Kotlin 자료구조 (0)
        • 알고리즘 (7)
        • Kotlin으로 구현하는 자료구조 (0)
      • 코딩 테스트 (0)
      • Deep Learning (0)
      • Machine Learning Math (17)
        • Linear Algebra (17)
      • ML (0)
      • Docker (15)
      • Kubernetes (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

    • 코틀린 코루틴의 정석 책 출간 소식
  • 인기 글

  • 태그

    unit testing
    Coroutines Channel
    pytorch
    코루틴
    Coroutines Flow
    컨테이너
    junit
    unit test
    코루틴 채널
    Kotlin
    코루틴 Flow
    Coroutines Context
    Coroutines
    Machine Learning
    numpy
    도커
    mockito
    TensorFlow
    Docker
    coroutine
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
심플코드
가우스 조던 소거법(Gauss-Jordan Elimination) 알아보기
상단으로

티스토리툴바