AEGLOSLAB 제어공학 종합 핸드북

부록 부록

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(추정). 이 표는 공식 참조용.