멈추지 않고 끈질기게
[기타][메모용] 행렬 기초 본문
※ 해당 포스팅은 개인의 공부 정리용 글입니다. 틀린 내용이 있다면 추후 수정될 수 있습니다.
※ 해당 포스팅은 하기 출처들을 참조하였습니다.
- 프랭크 D.루나, DirectX 12를 이용한 3D 게임 프로그래밍 입문(류광 옮김), 한빛미디어, 2021
1. 기본 표현
- 아래첨자로 행과 열 표현
- 각 행과 열을 벡터로 간주하여 표현 가능
2. 덧셈과 뺄셈, 곱셈(스칼라 값)
- 행렬간의 덧셈, 뺄셈은 행과 열 수, 즉 차원이 같은 행렬끼리만 가능
- 같은 행과 열의 원소끼리 덧셈, 뺄셈 실행
- 교환법칙(A + B = B + A)과 결합법칙((A + B) + C = A + (B + C)) 성립
- 행렬에 스칼라 값을 곱하는 경우 행렬의 모든 원소에 해당 값을 곱함
3. 행렬간의 곱셈
- 행렬간의 곱셈 A × B 는 A의 행벡터와 B의 열벡터의 내적으로 계산
즉, A × B = C 일 때 C의 i, j번째 원소 = A의 i번째 행벡터 × B의 j번째 열벡터
- 따라서 A × B 가 정의되려면 A의 열 수와 B의 행 수가 일치해야 함
일치하지 않는다면 곱셈 불가
- A가 m × n 행렬이고 B가 n × p 행렬일 때, A와 B의 곱 C는 m × p 행렬이 됨
- 교환 법칙이 성립하지 않음(A × B ≠ B × A)
4. 단위행렬, 전치행렬, 소행렬, 행렬식
- 단위행렬(I): 행렬 A에 대하여 A * I = A를 만족하는 행렬
- 행과 열의 수가 같은 정방행렬(n × n)에만 존재
- 좌상단(1,1)부터 우하단(n,n)까지의 모든 원소가 1, 나머지는 0
- 전치행렬(T): 행렬의 모든 행들과 열들을 맞바꾼 행렬
- 행과 열을 바꾸므로 m × n 행렬은 n × m 행렬이 됨
- 행렬 이름 뒤에 윗첨자로 T를 붙여 표현
- 소행렬: 정방행렬에서 i번째 행과 j번째 열을 삭제한 행렬
- 원본 행렬이 n × n 이었다면 소행렬은 (n - 1) × (n - 1)
- 행렬 이름 위에 선을 긋고, 아랫첨자로 i, j 표현
- 행렬식(det): 정방행렬을 입력받아 실수를 출력하는 함수
- 후술할 역행렬을 구할 때 사용됨
- 행렬 A가 n × n 이고 n > 1일 때, A의 행렬식 det A는 다음과 같이 정의됨
5. 여인수행렬, 딸림행렬, 역행렬
- 여인수행렬(cofactor): 정방행렬에서 i,j번째 원소의 여인수(C)를 i,j번째 위치에 배치한 함수
- 여인수의 정의 및 여인수행렬(C)은 다음과 같음
- 딸림행렬(adjoint): 여인수 행렬의 전치행렬
- 행렬 이름 위에 윗첨자로 *을 붙여 표현
- 역행렬(inverse): 행렬 A와 곱한 결과가 단위행렬이 되는 행렬
- 행렬식이 0이 아닌 정방행렬에만 고유하게 존재함
- 역행렬이 존재하는 행렬을 가역행렬(invertible matrix), 존재하지 않는 행렬을 특이행렬(singular matrix)이라 함
- 행렬 A와 그 역행렬의 곱셈은 교환법칙이 성립(순서 상관없이 결과는 단위행렬)
- 행렬 A의 역행렬은 A의 딸림행렬과 행렬식을 통해 구할 수 있음
- 행렬 이름에 윗첨자 -1로 표기