부록 부록
A.2 부록 B — 선형대수·행렬 미적분 요약
부록 · 참조. 본문(0.2.5·0.2.17~0.2.21·0.2.22~0.2.24)에서 쓰는 선형대수를 한곳에. 증명이 아니라 쓰는 공식 모음.
✅ 검증됨: 선형대수 항등식 4개($\operatorname{tr}(A)=\Sigma\lambda_i$·$\det(A)=\prod\lambda_i$·$\partial(x^TMx)/\partial x=(M+M^T)x$·대칭행렬의 실고유값)를
verify/test_appendix.py로 수치 대조 확인(전부 PASS, 목차 2).
A.2.1 행렬 기본 연산
| 연산 | 정의·성질 |
|---|---|
| 곱 | $(AB)_{ij} = \Sigma_k A_{ik} B_{kj}$. 비가환 AB≠BA 일반적 |
| 전치 | $(A^T)_{ij}=A_{ji}$, $(AB)^T=B^TA^T$ |
| 역행렬 | $AA^{-1}=I$. $(AB)^{-1}=B^{-1}A^{-1}$. det(A)≠0일 때만 존재 |
| 행렬식 | det(AB)=det(A)det(B), $\det(A^T)=\det(A)$ |
| 대각합(trace) | $\operatorname{tr}(A)=\Sigma A_{ii} = \Sigma\lambda_i$(고유값 합), $\operatorname{tr}(AB)=\operatorname{tr}(BA)$ |
| 랭크 | 독립 행(=열)의 수. rank(A)=n ⟺ 가역(정방) |
A.2.8 조건수·특이값분해(SVD) — 수치 건강 진단
행렬이 "거의 특이(near-singular)"한지, 가제어성 같은 이분법 판정이 "간신히" 참인지는 랭크·행렬식만으로는 안 보인다 — 특이값이 그 정도를 알려준다.
| 개념 | 정의 | 의미 |
|---|---|---|
| 특이값분해(SVD) | $A = U\Sigma V^T$ ($U,V$ 직교, $\Sigma=\operatorname{diag}(\sigma_1\ge\ldots\ge\sigma_r\ge0)$) | $\sigma_i$ = $A$가 각 방향으로 늘이는 배율. 정방·대칭이면 $\sigma_i=\vert\lambda_i\vert$(A.2.2) |
| 조건수 | $\kappa(A) = \sigma_{\mathrm{max}}/\sigma_{\mathrm{min}}$ (가역 정방이면 $\Vert A\Vert\cdot\Vert A^{-1}\Vert$와 동일) | 클수록(예: 10⁶ 이상) $A$가 거의 특이 — 역행렬·고유값 계산이 반올림 오차에 취약해진다(0.2.5) |
- 가제어성·가관측성의 "정도": $\operatorname{rank}(\mathcal{C})=n$은 예/아니오만 답한다.
𝒞의 특이값(작은 값일수록 그 방향은 "겨우" 가제어)이나 조건수로 얼마나 여유 있게 가제어한지 가늠한다(4.2.3~4.2.4) — 가제어성 그라미안의 고유값과 같은 내용이다.
np.linalg.svd(A, compute_uv=False) # 특이값 σ (내림차순 배열)
np.linalg.cond(A) # 조건수 σ_max/σ_min
np.linalg.cond(Cc) # 가제어성 행렬 𝒞의 '여유' 진단 (4.2)
A.2.2 고유값·고유벡터
$$A v = \lambda v \quad (v \ne 0) \quad\to\quad \det(\lambda I - A) = 0$$ — 특성방정식
- $\lambda$ = 고유값 = 극(0.2.5.3·4.1.6). $\det(A)=\prod\lambda_i$, $\operatorname{tr}(A)=\Sigma\lambda_i$.
- 대각화: $A=V\Lambda V^{-1}$($V$=고유벡터 열, $\Lambda=\operatorname{diag}(\lambda_i)$), 고유값이 서로 다르면 가능.
- 행렬 지수: $e^{At}=V e^{\Lambda t} V^{-1}$, $e^{\Lambda t}=\operatorname{diag}(e^{\lambda_it})$ — 상태천이행렬(4.1.8).
- 안정(연속): 모든 $\operatorname{Re}(\lambda_i)<0$. 안정(이산): 모든 $\vert\lambda_i\vert<1$.
A.2.3 특수 행렬·정부호성
| 종류 | 정의 |
|---|---|
| 대칭 | $A=A^T$. 고유값 실수, 고유벡터 직교 |
| 직교 | $Q^TQ=I$ ($Q^{-1}=Q^T$). 회전·반사 |
| 양의 정부호(PD) | 대칭 + xᵀAx>0 (∀x≠0) ⟺ 모든 고유값>0 |
| 양의 준정부호(PSD) | 대칭 + $x^TAx\ge0$ ⟺ 모든 고유값≥0 |
PD/PSD는 비용함수(LQR $Q,R$, 4.5)·공분산(칼만 $P,Q,R$, 5.1.4)에서 핵심. 공분산은 항상 PSD.
A.2.4 제어에 쓰는 핵심 행렬
| 행렬 | 정의 | 용도 |
|---|---|---|
가제어성 𝒞 | $[B AB \ldots A^{n-1}B]$ | rank=n ⟺ 가제어(4.2.2) |
가관측성 𝒪 | $[C; CA; \ldots; CA^{n-1}]$ | rank=n ⟺ 가관측(4.2.3) |
| 리아푸노프 | $A^TP+PA=-Q$ | $A$ 안정 ⟺ $Q>0$에 $P>0$ 존재(6.2.2.3) |
| 제어 리카티(ARE) | $A^TP+PA-PBR^{-1}B^TP+Q=0$ | LQR $K=R^{-1}B^TP$(4.5.3) |
| 추정 리카티 | (위의 쌍대) | 칼만 정상상태(5.2.6) |
A.2.5 행렬 미적분 (자주 쓰는 도함수)
$x$는 벡터, $A$는 상수 행렬(스칼라를 벡터로 미분 → 벡터).
| 함수 | $\partial/\partial x$ |
|---|---|
| $a^Tx$ | $a$ |
| $x^TA x$ | $(A+A^T)x$ (대칭 $A$면 $2Ax$) |
| $Ax$ | $A$ (자코비안) |
| 비선형 $f(x)$ | 자코비안 $J$: $J_{ij}=\partial f_i/\partial x_j$ (EKF·선형화, 1.1.9·5.3.2) |
A.2.6 가우시안 연산 (추정)
$x\sim N(\mu,\Sigma)$ (5.1):
| 연산 | 결과 |
|---|---|
| 선형변환 $y=Ax+b$ | $y\sim N(A\mu+b, A\Sigma A^T)$ |
독립 합 $x+w$, w~N(0,Q) | $N(\mu, \Sigma+Q)$ |
| 곱(베이즈 융합) | 정밀도 $\Sigma^{-1}$ 더하기 → 더 작은 공분산 |
| 마할라노비스 거리 | $(x-\mu)^T\Sigma^{-1}(x-\mu)$ (게이팅·NIS) |
A.2.7 도구 (NumPy/SciPy)
import numpy as np
from scipy.linalg import solve_continuous_are, solve_lyapunov, expm
np.linalg.eigvals(A) # 고유값
np.linalg.matrix_rank(M) # 랭크 (가제어·가관측 판정)
np.linalg.inv(A); A @ B # 역행렬, 곱
np.linalg.cholesky(P) # √P (UKF 시그마점·샘플링)
expm(A*t) # 행렬 지수 e^{At}
solve_continuous_are(A,B,Q,R) # 리카티 (LQR)
solve_lyapunov(A.T, -Q) # 리아푸노프 방정식
본문 유도·직관은 0.2.5(기본)·4.1~4.5(상태공간)·5.1~5.3(추정). 이 표는 공식 참조용.