요약

안정 시스템은 작게 건드리면 작게 반응한다. 크기가 한계 안에 있는 입력을 넣으면 출력도 어떤 한계 안에 머문다(유계 입력 유계 출력, BIBO). 매달린 진자는 살짝 밀면 조금 흔들리다 돌아오니 안정적이고, 거꾸로 세운 진자는 살짝만 밀어도 넘어지니 불안정하다. 안정성은 “어떤” 유계 입력에도 출력이 유계여야 하므로, 유계 입력 하나라도 출력을 끝없이 키우면 불안정이다.

예시로 보기

그림 1.46의 두 진자다. 입력 \(x(t)\)는 진자에 가한 힘, 출력 \(y(t)\)는 수직선에서 벗어난 각이다.

  • (a) 매달린 진자: 중력이 진자를 수직선 쪽으로 되돌리는 힘으로 작용한다. 작은 힘에는 작은 흔들림만 생긴다.
  • (b) 거꾸로 선 진자: 중력이 수직선에서 더 멀어지는 쪽으로 작용한다. 작은 힘에도 각이 계속 커진다.

먹이가 끝없이 공급되고 천적이 없는 곳의 개체 수도 불안정 시스템의 예다. 작은 입력에도 응답이 제한 없이 커진다.

정의

\[\text{시스템 } x \to y \text{가 안정} \iff \text{모든 유계 입력 } x\text{에 대해 } y\text{가 유계}\] \[\text{불안정} \iff \text{어떤 유계 입력 } x\text{에 대해 } y\text{가 유계가 아님}\]

유계는 “크기가 어떤 상수 \(B\)를 넘지 않는다”, 즉 모든 시각에 \(\vert x\vert \le B\)라는 뜻이다.

예제

이동 평균 \(y[n] = \frac{1}{2M+1}\sum_{k=-M}^{M}x[n-k]\): 모든 \(n\)에서 \(\vert x[n]\vert \le B\)이면 \(2M + 1\)개의 평균도 \(B\)를 넘지 않아 \(\vert y[n]\vert \le B\)다. 안정이다.

누산기 \(y[n] = \sum_{k=-\infty}^{n}x[k]\): 입력이 유계여도 합은 계속 커질 수 있다.

  • 유계 입력 \(x[n] = u[n]\) (크기 1 이하)을 넣는다.
  • \(y[n] = \sum_{k=-\infty}^{n}u[k] = (n+1)u[n]\)이므로 \(y[0] = 1, y[1] = 2, y[2] = 3, \dots\)
  • 끝없이 커지므로 불안정이다.

그림

왼쪽은 이 반례이고, 오른쪽은 아래 오해에서 다루는 \((-1)^n u[n]\) 입력이다. 둘 다 크기 1 이하인 유계 입력인데, 출력은 한쪽만 끝없이 커진다1.

예제 1.13

  • \(S_1\): \(y(t) = tx(t)\). 유계인 상수 입력 \(x(t) = 1\)을 넣으면 \(y(t) = t\)이고, \(\vert y(t)\vert\)는 어느 상수든 언젠가 넘는다. 불안정.
  • \(S_2\): \(y(t) = e^{x(t)}\). 임의의 유계 입력 \(-B < x(t) < B\)를 넣으면 \(e^{-B} < y(t) < e^{B}\)다. 출력이 \(e^B\)로 묶이므로 안정.

1계 미분방정식 \(\dfrac{dy}{dt} + ay = bx\): 입력이 0일 때의 출력은 \(Ce^{-at}\)다. \(a > 0\)이면 줄어들고, \(a < 0\)이면 시간이 지날수록 무한대로 간다. 그래서 \(a > 0\)이면 안정, \(a < 0\)이면 불안정이다.

그림

\(b = 1\)이고 상수 입력 1을 넣은 경우다. \(a = 1\)이면 \(b/a = 1\)에 머물고, \(a = -1\)이면 끝없이 커진다1.

검증: 누산기의 계단 응답 \(n+1\), 이동 평균의 출력 한계, \(tx(t)\)의 발산, \(e^{x}\)의 범위, 1계 미분방정식에 상수 입력을 넣었을 때 \(a > 0\)이면 \(b/a\)로 수렴하고 \(a < 0\)이면 발산함을 수치로 확인 — 15_stability_verify.py

활용

  • 앰프에서 마이크를 스피커에 가까이 대면 소리가 끝없이 커지는 하울링이 생긴다. 피드백 연결이 불안정해진 경우다2.
  • 2장에서 LTI 시스템은 임펄스 응답의 절댓값 합이 유한할 때 안정이라는 간단한 판정법을 배운다.
  • 2계 미분방정식의 특성근 실수부가 모두 음수면 입력 0 응답이 사라져 안정적이다 → 상수계수 2계 선형 미분방정식

연결

자주 하는 오해

“몇 가지 유계 입력을 넣어 출력이 유계였으니 안정이다.”

틀렸다. 안정은 “모든” 유계 입력에 대한 약속이라, 몇 개의 예로는 증명이 안 된다. 누산기에 \(x[n] = (-1)^n u[n]\)을 넣으면 출력은 1, 0, 1, 0으로 유계라서 안정처럼 보인다. 그러나 \(u[n]\) 하나가 출력을 끝없이 키우므로 불안정이다. 불안정을 보일 때는 반례 하나면 되고, 안정을 보일 때는 임의의 \(B\)로 한계를 증명해야 한다.

확인 문제

C1 \(y[n] = x[n] + 0.5x[n-1]\)은 안정인가? 이유를 한계로 보이라.

답: 안정. \(\vert x[n]\vert \le B\)이면 \(\vert y[n]\vert \le \vert x[n]\vert + 0.5\vert x[n-1]\vert \le 1.5B\)다.

C2 \(y(t) = \int_{-\infty}^{t}x(\tau)d\tau\)가 불안정임을 보이는 입력을 들라.

답: \(x(t) = u(t)\). 크기가 1 이하인 유계 입력인데 출력은 \(t\,u(t)\)로 끝없이 커진다.

C3 예제 1.13의 \(y = tx(t)\)는 왜 \(x(t) = 1\) 하나만으로 불안정이라고 말할 수 있는가?

답: 불안정의 정의가 “출력을 유계가 아니게 만드는 유계 입력이 하나라도 있다”이기 때문이다. \(x = 1\)은 유계이고 출력 \(t\)는 유계가 아니므로 충분하다.

  1. 15_stability_plot.py로 그렸고, 같은 코드로 다음을 확인했다: 누산기 출력 \(n + 1\)과 1, 0, 1, 0, 미분방정식의 닫힌 꼴 \((1 - e^{-at})/a\)가 오일러 방법과 같음. ↩ ↩2

  2. 계산은 검증 코드로 확인했다. ↩