일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 코딩
- 다이렉트X
- 전처리문
- CPU
- CommandList
- View
- Direct3D
- 세팅
- swapchain
- C++
- 다이렉트 초기화
- DirectX12
- 프로그래밍
- DirectXTK
- Direct Init
- UE4
- GPU
- DirectX
- vertex
- engine
- 게임수학
- 다중표본화
- 동기화
- DESC
- RenderTargetView
- Direct3D Init
- c
- C언어
- 다이렉트X 튜토리얼
- Input Assembler
- Today
- Total
비타Cpp
행렬식(Determinant) 본문
행렬식은 정방 행렬을 입력받아서 실숫값을 출력하는 특별한 함수다. 정방 행렬 A의 행렬식을 det A로 표기한다. 기하학적으로 행렬식이 3차원 입체의 부피와 관련이 있다는 점과 행렬식이 선형 변환 하에서 그 부피가 변하는 방식에 대한 정보를 제공한다는 점을 증명하는 것이 가능하다. 또한 행렬식은 크라메르의 법칙(Cramer's rule)을 이용해서 1차 연립방정식을 푸는 데에도 쓰인다. 또한 행렬식은 역행렬의 가능 여부를 손쉽게 판단할 수 있다는 것도 중요하다.
일단. 행렬식을 알아보기전에 소행렬 개념을 알아야한다.
n x n 행렬 A가 주어졌을 때, 그 소행렬(Minor Matrix) Aij는 i번째 행과 j번째 열을 삭제해서 나온 (n-1) x (n-1) 행렬이다.
예: 다음 행렬의 소행렬 A11, A22, A13을 구해보자.
$$A=\begin{bmatrix} A_{11} & A_{12} & A_{13} \\ A_{21} & A_{22} & A_{23}\\ A_{31} & A_{32} & A_{33} \end{bmatrix}$$
$$\bar{A}_{11}=\begin{bmatrix} A_{22} & A_{23}\\ A_{32} & A_{33} \end{bmatrix}$$
$$\bar{A}_{22}=\begin{bmatrix} A_{11} & A_{13}\\ A_{31} & A_{33} \end{bmatrix}$$
$$\bar{A}_{13}=\begin{bmatrix} A_{21} & A_{22}\\ A_{31} & A_{32} \end{bmatrix}$$
행렬의 행렬식은 재귀적으로 정의가 된다. 예를 들어 4x4행렬의 행렬식은 3x3행렬의 행렬식들로 정의되고, 3x3행렬의 행렬식은 2x2 행렬식들로 정의된다. 그리고 마지막 1x1의 행렬식은 det[A11] = A11로 정의된다.
A가 n x n 행렬이고 n > 1 이라고 할 때, A의 행렬식은 다음과 같이 정의된다.
$$det\ A = \sum_{j=1}^nA_{1j}(-1)^{1+j}det\ \bar{A}_{1j}$$
'DirectX12 > 게임 수학' 카테고리의 다른 글
원점을 기준으로 회전하는 카메라 (0) | 2021.10.17 |
---|---|
비례(Scaling) 행렬 (0) | 2021.08.02 |
외적 (Outer Product / Cross Product) (0) | 2021.08.01 |
직교화(Orthogonalization) (0) | 2021.07.28 |
내적과 직교 투영 (0) | 2021.07.28 |