행렬 개념 - 행렬곱, 영행렬, 단위행렬, 전치행렬, 역행렬, 행렬식
행렬(Matrix)
수 또는 다항식 등을 직사각형 모양으로 배열한 것
// ex. 3x2 행렬
1 2
3 4
5 6
// ex. 1x4 행렬
1 2 3 4
관련 문제
행렬의 곱연산
행렬 간의 곱연산
공식
- 생략(코드는 관련 문제 풀이 참고)
특징
- 교환법칙이 성립하지 않음
- 행렬곱 AxB일 때 A의 열 수가 B의 행수와 일치해야 함
- 2x3 * 3x2
- 이를 내항일치라고 함
- 행렬의 곱은 내적의 연속이다.
관련 문제
영행렬(zero matrix, null matrix)
모든 성분이 0인 행렬
// ex. 4x4 영행렬
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
단위행렬(unit matrix, 항등 행렬, identity matrix)
대각선 1, 나머지 0인 정방 행렬(square matrix, 같은 수의 행과 열).
숫자로 치면 ‘1’의 행렬 버전.
곱해도 행렬이 변하지 않는다.
// 2x2 단위행렬
1 0
0 1
// 3x3 단위행렬
1 0 0
0 1 0
0 0 1
등등
전치행렬(transposed matrix)
주어진 행렬의 행들과 열들을 맞바꾼 것
// A 행렬
1 2
3 4
5 6
// A^t : 전치행렬
1 3 5
2 4 6
역행렬(inverse matrix)
어떤 행렬을 곱했을 때 계산 결과가 항등 행렬(단위 행렬)인 것
숫자의 역수(분모와 분자를 뒤집은 수)와 비슷한 개념
표기
A^-1
특징
- 오직 정방 행렬만이 역행렬을 가진다.
- 모든 정방 행렬이 역행렬을 가지는 건 아니다.
- 역행렬이 있는 행렬을 가리키 ‘가역 행렬’이라고 부르고, 없으면 ‘특이 행렬’이라고 한다.
- A행렬이 직교행렬(orthogonal matrix)이면 A의 역행렬은 A의 전치행렬과 같다.
공식
A^-1 = A* / det A
// det A : 행렬식. == 0이면 역행렬이 없는 것
// A* : 수반 행렬(adjoint of matrix, 행렬의 성분이 여인수(cofactor)로 이루어진 행렬의 전치행렬)
행렬식(Determinant)
역행렬을 구할 수 있는지 판별하는 식
3x3까지는 사러스 법칙 사용
4x4 이상은 라이프니츠가 만든 소행렬식이나 크래머 공식 이용
// 2x2 행렬
A = | a b |
| c d |
// 행렬식
det A == ad - bc
det A == 0 이면 역행렬을 갖지 않는다.
// 3x3 행렬
A = | a b c |
| d e f |
| g h i |
// 행렬식
det A == d(ei - fh) - b(di - fg) + c(dh - eg))
det A == 0 이면 역행렬을 갖지 않는다.
2x2, 3x3 역행렬 구하는 식에 대한 원리와 여러 공식들,
4x4 이상의 행렬에 대한 역행렬 구하는 공식은
따로 더 공부하고 다른 포스트에서 정리.
관련 문제
행렬 클래스 직접 구현
위 행렬들만 2x2, 3x3 행렬 클래스를 직접 짜봤었는데
지금 검수해줄 사람도 없고 잘 짠 건지 모르겠다.
그래도 잘 기능해서 탄막 슈팅 게임 잘 돌아갔으니 올려본다.
참고
※ 수정하거나 개선할 점이 있다면 말씀해주시면 감사하겠습니다.
댓글남기기