Quick Reference
정사각행렬 A의 역행렬은 A⁻¹A=AA⁻¹=I를 만족합니다. 변환으로 서로 다른 입력이 같은 출력에 겹치면 모든 입력을 유일하게 되돌릴 수 없습니다.
A = [ a b ], det(A) = ad - bc
[ c d ]
det(A) ≠ 0일 때
A⁻¹ = 1/(ad-bc) [ d -b ]
[ -c a ]변환과 역변환 계산
A=[[2,1],[1,1]]은 det(A)=1이므로 역행렬이 존재합니다.
A⁻¹ = [ 1 -1 ] x = (3,4)
[ -1 2 ]
y = Ax = (2×3 + 1×4, 1×3 + 1×4) = (10,7)
A⁻¹y = (10 - 7, -10 + 2×7) = (3,4)입력 하나를 우연히 되돌리는 행렬이 아니라 모든 입력에 대해 왕복이 성립해야 역행렬입니다. det(A)의 2×2 식은 크기가 커진 행렬에 그대로 적용하지 않습니다. 더 큰 행렬은 소거법·분해 등을 사용하며, 행렬식이 0이 아닌 정사각행렬이라는 가역 조건은 유지됩니다.
정보가 사라지는 경우
B=[[1,2],[2,4]]는 둘째 행이 첫째 행의 두 배여서 det(B)=0입니다. 실제로 다른 두 입력이 같은 결과로 갑니다.
B(0,0) = (0,0)
B(2,-1) = (2 - 2, 4 - 4) = (0,0)출력 (0,0)만 보고 어느 입력이었는지 결정할 수 없습니다. 이런 정사각행렬을 특이행렬이라고 합니다. 그래픽스에서 축 하나의 스케일을 0으로 만들면 그 축 방향의 정보가 사라져 같은 문제가 생깁니다.
직사각행렬의 왼쪽·오른쪽 역은 각각 한쪽 곱이 단위행렬이 되는 조건입니다. 의사역행렬은 최소제곱 같은 문제에 사용하는 일반화이며, 특이한 변환에서 사라진 입력 정보를 유일하게 복구한다고 보장하지 않습니다. 위의 2×2 양방향 역 공식과 구분합니다. 역행렬이 없다는 이유로 임의의 전치를 대체로 사용하지 않습니다.
합성의 역과 전치
역변환은 마지막에 적용한 변환부터 되돌립니다. 따라서 A·B가 가역이면 (AB)⁻¹=B⁻¹A⁻¹입니다. 열벡터에서 y=A(Bx)를 원래 x로 되돌리려면 먼저 A⁻¹, 다음 B⁻¹를 적용합니다.
실수 직교행렬 Q는 QᵀQ=I이므로 Q⁻¹=Qᵀ입니다. 원점 주위의 순수 회전 행렬이 대표적입니다. 크기 변경이 섞인 일반 변환은 이 조건을 만족하지 않을 수 있습니다.
S = [ 2 0 ] Sᵀ = S
[ 0 1 ]
S⁻¹ = [ 0.5 0 ] → Sᵀ와 다름
[ 0 1 ]수학적 가역성과 계산 안정성
정확한 실수 계산에서 det(A)≠0이면 역행렬이 존재합니다. 하지만 컴퓨터의 부동소수점 계산에서는 입력·반올림 오차가 역변환으로 크게 확대될 수 있습니다. 행렬식의 절댓값만 작은 임계값과 비교해 모든 상황의 안정성을 판정하지 않습니다. 값의 크기 조정과 조건수 등도 함께 고려합니다.
단지 Ax=b의 해를 구하는 것이 목적이면 A⁻¹를 명시적으로 계산해 곱하는 것보다 선형계 풀이를 사용하는 경우가 많습니다. 역행렬의 수학적 의미와 실제 수치 알고리즘 선택은 별개의 판단입니다.
좌표를 되돌리는 수학은 기저와 좌표, 실제 모델·부모 변환 적용은 Graphics 행렬과 변환에 연결됩니다. OpenGL API가 임의의 모델 행렬을 자동으로 역행렬로 바꿔 주는 것은 아닙니다.
민감도는 조건수와 수치 안정성, 정확한 양방향 역이 없는 경우의 근사와 최소 노름 해는 SVD·의사역행렬에서 구체적으로 계산합니다.
역행렬을 직접 만들지 않는 두 단계 풀이는 LU 분해, 대칭 양의 정부호 조건을 이용한 방법은 Cholesky에 있습니다.
참고 링크
2 sources