Quick Reference
A가 m×n이고 B가 n×p이면 AB는 m×p입니다. 안쪽 크기가 같아야 곱할 수 있고, 결과의 한 성분은 A의 행과 B의 열을 곱해 더합니다. 열벡터 기준 ABx는 B를 먼저 적용합니다.
A = [ 1 2 ] x = [ 3 ]
[ 0 1 ] [ 4 ]
Ax = [ 1×3 + 2×4 ] = [ 11 ]
[ 0×3 + 1×4 ] [ 4 ]크기와 원소
m×n에서 m은 행 개수, n은 열 개수입니다. 벡터 x를 n×1 열로 놓으면 Ax는 m×1이 됩니다. 표기에서 행과 열을 바꾸면 입력과 출력의 차원도 달라집니다.
2×3과 3×4의 곱은 2×4입니다. 반대 순서인 3×4와 2×3은 안쪽 4와 2가 달라 정의되지 않습니다. AB가 가능하다고 BA까지 가능한 것은 아닙니다.
행렬 덧셈은 같은 크기에서 성분별로 수행하고, 스칼라 곱은 모든 성분을 곱합니다. 행렬 곱을 성분별 곱과 혼동하지 않습니다. 위 Ax는 A의 첫 행과 x의 전체 성분을 조합한 결과이지 같은 위치의 숫자만 짝지은 배열이 아닙니다.
열의 선형결합으로 보기
A의 첫 열을 a₁, 둘째 열을 a₂라고 하면 Ax는 x₁a₁+x₂a₂입니다. 예제에서는 다음 두 방식이 같은 결과를 줍니다.
a₁=(1,0), a₂=(2,1), x=(3,4)
Ax = 3a₁ + 4a₂
= (3,0) + (8,4)
= (11,4)따라서 행렬의 각 열은 표준 기저 벡터가 어디로 가는지를 보여 줍니다. A(1,0)은 첫 열, A(0,1)은 둘째 열입니다. 숫자 표를 변환으로 읽을 때 유용한 관점입니다.
AB와 BA 계산
B를 x 방향 2배·y 방향 3배의 크기 변경 행렬로 둡니다. A는 y값에 비례해 x를 기울이는 변환입니다.
B = [ 2 0 ]
[ 0 3 ]
AB = [ 2 6 ] BA = [ 2 4 ]
[ 0 3 ] [ 0 3 ]
ABx = (30,12)
BAx = (22,12)열벡터에서는 ABx가 A(Bx)입니다. 먼저 크기를 바꾼 뒤 기울인 결과와 먼저 기울인 뒤 크기를 바꾼 결과는 다릅니다. 행렬 곱은 일반적으로 교환법칙이 성립하지 않지만, 크기가 맞는 경우 결합법칙 (AB)C=A(BC)는 성립합니다. 괄호를 바꿀 수 있는 것과 순서를 바꿀 수 있는 것은 다릅니다.
단위행렬과 전치
단위행렬 I는 대각 성분이 1, 나머지가 0이며 Ix=x입니다. 크기가 맞는 AI와 IA도 A입니다. 영행렬은 모든 성분이 0이고 단위행렬과 역할이 다릅니다.
전치 Aᵀ는 행과 열을 교환합니다. (AB)ᵀ=BᵀAᵀ처럼 곱 순서도 뒤집힙니다. 전치가 항상 역행렬인 것은 아니며, 역행렬 조건을 따로 확인합니다.
그래픽스의 곱 순서
4×4 행렬과 동차좌표 열벡터 position=(x,y,z,1)을 쓰는 projection * view * model * position에서는 model부터 적용됩니다. 행벡터 관례에서는 식의 배치가 달라집니다. 수학적 행·열벡터 관례와 CPU 메모리의 row-major/column-major 배치는 별개의 선택입니다.
실제 업로드의 전치·GLSL 입력은 OpenGL 행렬 전달, 모델·부모 계층의 적용은 Graphics 행렬과 변환에 연결됩니다.
Ax=b의 계수를 직접 구하는 절차는 가우스 소거, 같은 행렬을 반복 곱하는 구조는 대각화와 거듭제곱에 있습니다.
참고 링크
2 sources