곱셈 단위원
스칼라: . 1 이 단위원. 행렬: . 단위 행렬 — 대각 1, 그 외 0 — 같은 역할.
이건 trivia 가 아니야. 단위 행렬이 모든 "undo" 정의가 기대는 anchor.
역행렬 — 행렬 나눗셈, 비슷한 거
스칼라: (). 행렬: . 역행렬이 원래 변환을 "undo". 시계방향 30° 회전? 가 반시계 30°. 두 배? 가 절반.
모든 행렬이 역행렬 가지는 건 아님
두 요건:
- 정방. 직사각 행렬은 차원 변경, "차원 버리기" 는 완전 undo 불가.
- 0 아닌 행렬식. 행렬식 0 = 행렬이 공간 collapse — 여러 입력이 같은 출력 매핑, undo 불가. Singular = 역행렬 X.
Singular 또는 직사각 행렬엔 pseudoinverse () 가 best-effort 일반화. Regression, least-squares 곳곳에서.
실전: 역행렬 계산하지 마
풀 때 교과서는 . 교과서가 가르치는 건 개념, 알고리즘 X. 실전엔 np.linalg.solve(A, B) 사용, LU decomposition 활용 — 역행렬 + 곱하기보다 빠르고 수치적으로 안정.
역행렬은 개념;
solve 가 구현. 추론할 땐 역행렬. 계산할 땐 solve.
import numpy as np
A = np.array([[2., 0.], [0., 2.]]) Ainv = np.linalg.inv(A)
print('Ainv =') print(Ainv)
v = np.array([10., 8.]) print('Ainv @ v =', Ainv @ v) print('v / 2 =', v / 2)
S = np.array([[1., 2.], [1., 2.]]) try: np.linalg.inv(S) except Exception as e: print(type(e).name, '->', e)
에러는 역행렬이 존재하지 않으므로 발생, LinAlgError -> Singular matrix