제0부 오리엔테이션
0.2 수학 준비운동
제0부 오리엔테이션 · 입문→이론 다리. 제어공학에 꼭 필요한 수학만 골라, 증명보다 쓰는 직관으로 정리한다. 상세 공식·변환표는 부록(A.1 변환표, A.2 선형대수 요약)에 있다.
이 장의 목표는 수학을 새로 가르치는 것이 아니라, 제어에서 그 수학이 왜·어떻게 쓰이는지를 연결해 두는 것이다. 그래서 뒤 장에서 라플라스나 고유값이 등장해도 이미 아는 개념으로 이해하고 넘어갈 수 있게.
0.2.1 이 장을 쓰는 법 — 왜 이 수학들인가
제어공학이 의존하는 수학은 의외로 좁다. 네 가지면 거의 다 된다. 각각이 제어의 어떤 질문에 답하는 도구인지부터 보자.
| 수학 도구 | 제어에서의 용도 | 주로 쓰는 곳 |
|---|---|---|
| 복소수·복소평면 | 진동과 감쇠를 한 숫자로 표현 → 극(pole)의 언어 | 안정성·응답(1.3·2.1·2.3) |
| 미분방정식(ODE) | 물리 시스템이 시간에 따라 변하는 법 = 동특성 | 모델링(1.1) |
| 라플라스 변환 | 미분방정식을 대수(곱셈)로 바꿔 전달함수로 | 고전 제어 전체(제1·2부) |
| 선형대수(행렬·고유값) | 여러 변수를 한꺼번에, 내부 상태로 | 상태공간·칼만(제4·5부) |
읽는 법: 이미 익숙한 절은 건너뛰어라. 뒤에서 막히면 그 절로 돌아오면 된다. 이 장은 "한 번에 마스터"가 아니라 참조점으로 쓰라고 있다. 정직하게 말하면 — 여기 담긴 것은 각 주제의 공학용 핵심일 뿐, 엄밀한 증명·일반론은 수학 교재의 몫이다.
0.2.2 복소수 — 진동과 감쇠의 언어
0.2.2.1 왜 제어에 복소수가 나오나
제어에서 시스템의 거동(안정한가? 진동하나? 얼마나 빨리?)은 몇 개의 숫자 — 극(pole) — 로 압축되는데, 이 극이 대개 복소수다. 복소수를 피하면 제어 이론의 절반이 안 보인다. 다행히 필요한 것은 고등학교 복소수 + 한 가지 직관뿐이다.
0.2.2.2 기본기 빠른 복습
- 복소수 $s = \sigma+ j\omega$. 공학에서는 허수단위를 $i$가 아니라 $j$로 쓴다(전류 $i$와 혼동하지 않으려고).
- $\sigma$(시그마) = 실부, $\omega$(오메가) = 허부. 복소평면(s-평면)에서 가로축=실부, 세로축=허부의 한 점.
- 극형식: 크기 $\vert s\vert= \sqrt{\sigma^2+\omega^2}$, 위상
∠s = atan2(ω, σ). 즉 $s = \vert s\vert\cdot\angle\theta$. - 오일러 공식 (이 장에서 가장 중요): $e^{j\theta} = \cos\theta+ j \sin\theta$. 복소지수는 곧 회전이다.
0.2.2.3 핵심 직관 — 복소지수는 "감쇠 + 진동"이다
제어에서 신호와 시스템 응답은 자꾸 e^{st} 꼴(복소지수)로 나타난다. $s = \sigma+ j\omega$를 넣어 풀면:
$$e^{st} = e^{(\sigma + j\omega)t} = \underbrace{e^{\sigma t}}_{\text{크기 변화}}\cdot\underbrace{e^{j\omega t}}_{\text{진동}} = e^{\sigma t}(\cos\omega t + j\sin\omega t)$$
여기서 모든 것이 나온다:
- $\sigma$ (실부) = 포락선(envelope)의 변화. $\sigma< 0$이면 $e^{\sigma t}$가 줄어 감쇠(안정), $\sigma> 0$이면 커져 발산(불안정), $\sigma= 0$이면 일정.
- $\omega$ (허부) = 진동 각주파수. $\omega$가 클수록 빠르게 진동한다. $\omega= 0$이면 진동 없이 지수 곡선만.
즉 복소수 하나가 "얼마나 빨리 진동하며 얼마나 빨리 잦아드는가"를 동시에 담는다. 이것이 제어가 복소수를 사랑하는 이유다.
0.2.2.4 s-평면 미리보기 — 왼쪽이면 안정
극을 복소평면에 표시하면, 그 위치만 보고 응답을 읽을 수 있다(자세히는 2.1).
한 줄 요약: 극이 좌반평면(σ<0)에 있으면 안정(시간이 지나면 잦아든다), 우반평면이면 불안정. 허수축에서 멀수록(위/아래) 더 빨리 진동, 왼쪽으로 갈수록 더 빨리 감쇠. — 이 그림 한 장이 제2·4부 내내 반복해 쓰인다.
0.2.3 미분방정식 — 시스템이 시간에 따라 변하는 법
0.2.3.1 왜 — 물리 법칙은 미분방정식이다
현실의 플랜트(질량·회로·열)는 뉴턴 법칙·키르히호프 법칙을 따르고, 이들은 전부 미분방정식(ODE)으로 적힌다. "동특성(dynamics)"이라는 말은 사실상 "이 시스템을 지배하는 미분방정식"과 동의어다. 모델링(1.1)이 곧 ODE 세우기다.
0.2.3.2 대표 예 — 질량-스프링-댐퍼
벽에 스프링·댐퍼로 매달린 질량 $m$에 힘 $F(t)$를 주면, 위치 $x(t)$는:
$$\underbrace{m\cdot\ddot{x}}_{\text{관성}} + \underbrace{b\cdot\dot{x}}_{\text{감쇠}} + \underbrace{k\cdot x}_{\text{복원}} = \underbrace{F(t)}_{\text{입력}}$$
(ẋ = dx/dt 속도, $\ddot{x} = d^2x/dt^2$ 가속도, $b$ 감쇠계수, $k$ 스프링상수.) RC 회로·DC 모터·진자도 형태만 다르지 같은 2차 선형 ODE로 떨어진다 — 그래서 하나를 풀면 여러 개를 푼 셈이다.
0.2.3.3 푸는 직관 — 특성방정식의 근이 응답을 정한다
입력 없는 경우($F=0$, 자유응답)를 보자. 해를 $x(t) = e^{\lambda t}$ 꼴로 가정해 대입하면 지수가 약분되고:
$$m\cdot\lambda^2 + b\cdot\lambda + k = 0$$ — 특성방정식(characteristic equation)
이 2차 방정식의 근 $\lambda$ 가 응답의 성격을 전부 결정한다.
- 근이 음의 실수 둘 → 진동 없이 지수 감쇠(과감쇠).
- 근이 복소켤레쌍 $\sigma\pm j\omega$ (σ<0) → 0.2.2.3 그대로 감쇠 진동.
- 근에 양의 실부 → 발산(불안정).
여기서 0.2.2와 0.2.3이 만난다: 특성방정식의 근 = 복소평면 위의 극. ODE를 손으로 푸는 것은 단순한 경우에나 하고, 설계할 때는 다음 절의 라플라스로 이 근을 대수적으로 다룬다.
0.2.4 라플라스 변환 — 미분을 곱셈으로 바꾸는 도구
0.2.4.1 왜 — 미적분을 대수로 치환한다
미분방정식을 매번 손으로 푸는 것은 비효율적이다. 라플라스 변환은 시간영역의 미분·적분을 s영역의 곱셈·나눗셈으로 바꿔, ODE를 대수방정식으로 만든다. 그 결과물이 제1·2부의 핵심 도구인 전달함수다.
0.2.4.2 외울 것은 거의 없다 — 성질 몇 개
정의(Y(s) = ∫₀^∞ y(t)e^{-st}dt)는 알 필요조차 적다. 쓰는 것은 성질이다.
- 선형성: $\mathcal{L}\{a\cdot f + b\cdot g\} = a\cdot F(s) + b\cdot G(s)$.
- 미분 ↔ s 곱하기 (핵심):
ℒ{ẏ} = sY(s) − y(0). 즉d/dt는 s영역에서 $s$를 곱하는 것. (초기조건 0이면 단순히 $sY$.) - 적분 ↔ 1/s: $\mathcal{L}\{\int y\} = Y(s)/s$.
- 시간지연 ↔ $e^{-s\tau}$: $\tau$만큼 늦은 신호는 $e^{-s\tau}$가 붙는다(지연계 모델링에 직결).
핵심 한 줄: $s$를 "미분 연산자"로 읽어라. 그러면 $m\cdot\ddot{x}+b\cdot\dot{x}+k\cdot x = F$는 s영역에서 $(ms^2 + bs + k)X(s) = F(s)$가 된다 — 0.2.3.3의 특성방정식이 그대로 다항식으로 나타난다.
0.2.4.3 전달함수 — 이 책이 가장 많이 쓰는 물건
위 식을 정리하면 입력→출력 비율이 나온다:
$$G(s) = \frac{X(s)}{F(s)} = \frac{1}{m s^2 + b s + k}$$
이 G(s) = 출력/입력이 전달함수(transfer function)다(자세히는 1.2).
- 분모 $ms^2+bs+k = 0$의 근 = 극(pole) = 0.2.3의 특성방정식 근 = 0.2.2의 복소평면 점. 셋이 같은 것이다.
- 그래서 "극이 좌반평면에 있나?"만 보면 안정성을 안다(2.1). 미분방정식을 풀지 않고도.
0.2.4.4 자주 만나는 변환쌍 (표는 부록 A.1)
| 시간영역 $y(t)$ | s영역 $Y(s)$ | 제어에서 |
|---|---|---|
단위 계단 1 (t≥0) | $1/s$ | 기준입력·계단응답 |
지수 e^{-at} | $1/(s+a)$ | 1차 시스템 응답 |
| 사인 $\sin\omega t$ | $\omega/(s^2+\omega^2)$ | 진동·주파수응답 |
| 임펄스 $\delta(t)$ | 1 | 충격응답 |
역변환은 보통 전달함수를 부분분수로 분해해 이 표를 거꾸로 읽어 한다(1.2·부록). 지금은 "미분방정식 ↔ s의 다항식"이라는 다리만 갖추면 충분하다.
0.2.5 선형대수 — 여러 개를 한꺼번에
0.2.5.1 왜 — 변수가 여럿이면 행렬이 답이다
전달함수는 입력 하나·출력 하나(SISO)에 잘 맞지만, 드론(자세·위치·속도가 얽힘)이나 다중 센서 융합처럼 변수가 여럿이면 벡터·행렬로 묶어야 한다. 이것이 상태공간(제4부)·칼만필터(제5부)의 언어다.
0.2.5.2 기본기 — 행렬은 "선형변환"이다
- 벡터 $x$ = 상태들을 쌓은 열(예:
[위치; 속도]). 행렬 $A$ = 벡터를 다른 벡터로 보내는 규칙. - 행렬-벡터 곱 $Ax$ = "x를 선형변환한 결과". 상태방정식
ẋ = Ax + Bu의 $Ax$가 바로 이것(자세히는 4.1). - 전치 $A^T$, 역행렬 $A^{-1}$(존재하면), 행렬식
det(A)— 세부 연산은 부록 A.2. 여기서는 의미만.
0.2.5.3 고유값·고유벡터 — 행렬판 "극"
선형대수에서 제어가 가장 사랑하는 것: 고유값(eigenvalue). 행렬 $A$에 대해
$$A v = \lambda v \quad (v \ne 0)$$
를 만족하는 스칼라 $\lambda$가 고유값, 벡터 $v$가 고유벡터다. 직관: $A$를 곱해도 방향이 안 변하고 크기만 $\lambda$배 되는 특별한 방향이 $v$, 그 배율이 $\lambda$.
왜 중요한가 — 상태방정식 ẋ = Ax의 해는 본질적으로 $e^{\lambda t}$ 꼴들의 합이고, 그 $\lambda$가 바로 A의 고유값이다. 그러므로:
A의 고유값 = 시스템의 극 = 특성방정식
det(sI − A) = 0의 근. 0.2.2·0.2.3·0.2.4에서 본 그 극을, 이제 행렬에서 직접 추출한다. 실부가 모두 음수면 안정(4.2·4.3).
이로써 네 도구가 하나의 점(복소평면 위 극)으로 수렴한다.
0.2.5.4 조금 더 — 랭크·양의정부호 (예고만)
- 랭크(rank): 행렬이 "실질적으로 몇 차원을 채우나". 가제어성·가관측성 판정에 쓴다(4.2) — "이 시스템을 실제로 다 제어/관측할 수 있나"를 랭크로 답한다.
- 양의정부호(positive definite): $x^TMx > 0$. 에너지·비용·불확실성의 "항상 양(+)"을 표현 — LQR 비용함수(4.5)·칼만 공분산(5.1)에서 등장. 지금은 이름만.
도구로 확인(0.3 이후): 고유값은 손으로 풀 필요 없다.
numpy.linalg.eigvals(A)한 줄이면 나온다. 환경 구축은 0.3에서 하고, 그때 직접 표시해 보기를 권한다. (코드 동작은 여러분 환경에서 재현해 확인 — 검증 필요.)
0.2.5.5 수치적 주의 — 고유값 계산이 항상 정확하지는 않다
numpy.linalg.eig도 모든 경우에 정확하지는 않다. 고유값들이 서로 아주 가깝거나(근접 고유값) 행렬이 거의 특이(near-singular)에 가까우면, 반올림 오차가 증폭되어 계산된 고유값·고유벡터가 눈에 띄게 부정확해질 수 있다. 빠른 점검법: np.linalg.cond(A)(조건수)가 크면(예: 10⁶ 이상) 그 행렬에서 나온 결과를 의심하고 다른 방법·정밀도로 교차검증하라.
0.2.6 한 장의 큰 그림 — 네 도구가 만나는 곳
이 장을 한 문장으로 묶으면: "극(pole)"이라는 한 개념을 네 언어로 말한 것뿐이다.
- 미분방정식은 시스템을 적고, 라플라스는 그것을 대수로 풀고, 복소평면은 근을 그림으로 읽고, 선형대수는 여러 변수를 행렬로 묶어 같은 근을 고유값으로 준다.
- 그래서 책 어디서든 "극", "고유값", "특성근", "s-평면의 점"이라는 말이 나오면 전부 같은 대상을 가리킨다고 보면 된다.
0.2.7 확률 기초 — 칼만필터를 위한 예고
제5부(칼만필터)에 가서야 본격적으로 쓰지만, 미리 이름만 소개해 둔다. 센서 측정에는 잡음이 많아 측정값을 그대로 신뢰할 수 없고, 그래서 불확실성을 숫자로 다뤄야 한다.
- 평균·분산: 분산(variance)은 "얼마나 퍼져 있나"(불확실성의 크기).
- 가우시안(정규분포): 잡음을 흔히 종 모양 분포로 모델링. 평균과 분산 둘이면 정해진다.
- 공분산(covariance) 행렬: 여러 변수의 불확실성과 상관을 한 행렬로(양의정부호, 0.2.5.4와 연결).
지금은 "잡음 = 분산으로, 여러 변수의 불확실성 = 공분산 행렬로 표현한다"는 감만. 제대로 된 정의·계산은 5.1에서.
0.2.8 정리 — 그리고 다음 장
- 제어 수학의 핵심은 복소수(진동+감쇠)·미분방정식(동특성)·라플라스(미분→대수)·선형대수(다변수+고유값) 네 가지이며, 네 도구는 결국 하나의 극(pole) 으로 모인다(0.2.6).
- $\sigma<0$(좌반평면) → 안정이라는 한 줄이 이 장 전체의 결론이자 제2·4부의 출발점이다.
- 외울 것은 적다 — 변환표·연산은 부록(A.1·A.2)에 두고 필요할 때 펼친다.
다음 0.3에서는 이 수학을 손으로 확인할 개발 환경(Python·python-control·ROS2 Humble·Gazebo)을 구축한다. 그 뒤 제1부에서 실제 플랜트를 모델링하며 라플라스·전달함수를 활용하기 시작한다.
0.2.9 연습·생각해 볼 것
수학을 "제어의 의미"로 되새기는 문제들이다.
- 복소수 읽기. 극이 ⓐ
−2, ⓑ−1 + j5, ⓒ+0.5 − j2, ⓓ $\pm j3$에 있을 때 각각 응답이 어떨지(감쇠/발산, 진동 유무, 빠르기) 한 줄로 말하라. (힌트: 실부=감쇠, 허부=진동 — 0.2.2.3) - 미분 ↔ s. ODE
3ÿ + 12ẏ + 9y = u를 초기조건 0에서 라플라스로 옮겨 전달함수 $Y(s)/U(s)$를 적고, 극(분모 근)을 구하라. 이 시스템은 안정한가? (힌트:d/dt → s— 0.2.4.2) - 같은 근 세 얼굴. 2번의 극이 ① 특성방정식의 근, ② 전달함수의 극, ③ 어떤 행렬의 고유값이라는 세 이름으로 불릴 수 있음을 한두 문장으로 설명하라. (0.2.6)
- 오일러 공식으로 확인하기.
e^{(−1+j2)t}를 $e^{\sigma t}(\cos\omega t + j \sin\omega t)$ 꼴로 펼치고, $t$가 커질 때 크기가 어떻게 되는지 말하라. - 고유값 직관. $Av = \lambda v$에서 $\lambda$가 "방향 안 바뀌고 크기만 변하는 배율"이라는 말을, 자신만의 비유로 한 문장 적어 보라. 왜 이것이 시스템의 극과 같아지는가? (0.2.5.3)
- (손으로 — 0.3 이후) 환경을 갖춘 뒤
numpy로 2번 분모 다항식의 근(numpy.roots)과, 그에 대응하는 동반행렬의 고유값(numpy.linalg.eigvals)을 구해 둘이 같음을 확인하라. (여러분 환경에서 재현 — 검증 필요.)
막히면 0.2.6의 그림으로 돌아가라 — 이 장의 거의 모든 답이 거기서 나온다.