실습 언어

Frequency Response

주파수마다 입력의 진폭과 위상이 어떻게 변하는지 알면 Bode plot을 실제 신호와 연결할 수 있습니다.

실습 전에

01 Bode Gain은 출력의 어느 부분을 설명할까요?

설명

같은 주파수의 Steady State 출력 진폭과 입력 진폭의 비입니다.

02 Transient Response가 남아 있으면 위상 추정이 어떻게 달라질까요?

설명

Steady State 정현파와 과도 성분이 섞여 진폭·위상 추정에 오차가 생깁니다.

실행 조건

python-control의 ctl.frequency_response에서 magnitude와 phase를 읽습니다. 위상은 radian으로 반환되므로 표에는 degree로 변환하세요.

모듈이 없으면 Colab·Jupyter 코드 셀에서 %pip install control==0.10.2를 실행하세요.

MATLAB · Control System Toolbox

실습

실습용 노트북 미리보기실습용 노트북 다운로드실습용 mlx 스크립트 미리보기실습용 mlx 스크립트 다운로드

1. 정현파로 이득·위상 측정

시작 조건

G(s)=1s2+0.5s+1G(s)=\frac1{s^2+0.5s+1}, u=sin⁡(ωt)u=\sin(\omega t), ω∈{.2,1,3}\omega\in\{.2,1,3\} rad/s. 0≤t≤2000\le t\le 200 s, Δt=.01\Delta t=.01 s입니다.

진행 방법

  1. ctl.forced_response로 출력을 계산하고lsim으로 출력을 계산하고 마지막 두 주기만 골라 입력과 출력을 그리세요.
  2. 출력을 asin⁡(ωt)+bcos⁡(ωt)a\sin(\omega t)+b\cos(\omega t)에 최소제곱 적합해 이득 a2+b2\sqrt{a^2+b^2}와 위상 atan2⁡(b,a)\operatorname{atan2}(b,a)를 구하세요.
  3. ctl.frequency_response의 magnitude·phase와 비교하세요. phase는 radian으로 반환됩니다.squeeze(freqresp(G,omega))의 복소 응답에서 abs와 angle로 구한 이득·위상과 비교하세요. angle은 radian을 반환합니다. 표의 위상은 두 계산 모두 degree로 변환하세요.

남길 결과

기록 항목과 확인할 점
ω [rad/s]
측정 이득
계산 이득
측정 위상 [deg]
계산 위상 [deg]

확인할 점

  • Transient가 남은 앞 구간을 제외했는가?
  • 위상 단위와 360° 주기 차이를 맞춘 뒤 오차를 비교했는가?

2. Damping과 공진 비교

시작 조건

분모를 s2+as+1s^2+as+1로 두고 a∈{.2,.5,1}a\in\{.2,.5,1\}을 비교합니다. ω는 logspace(-2,2,400)입니다.

진행 방법

  1. 세 모델의 이득·위상을 같은 주파수축에 그리세요.
  2. 각 모델의 최대 이득과 그 주파수, DC Gain을 표로 적으세요.
  3. 최대 이득 부근의 정현파 한 조건을 골라 첫 활동의 방법으로 확인하세요.

남길 결과

기록 항목과 확인할 점
a
최대 이득
최대 이득의 ω
DC Gain

확인할 점

  • dB와 선형 이득을 구분했는가?
  • 모델 간 주파수 격자와 입력 크기를 동일하게 두었는가?

3. 시간축에서 주파수 단위 확인

시작 조건

ω=1\omega=1 rad/s와 f=1f=1 Hz를 구분합니다. 두 번째 입력은 sin⁡(2πt)\sin(2\pi t)입니다.

진행 방법

  1. 두 입력의 주기를 먼저 적고 같은 G에서 응답을 계산하세요.
  2. 위상차를 시간 지연으로 읽은 값과 각도 값으로 읽은 값을 함께 적으세요.
  3. rad/s와 Hz를 섞었을 때 Bode plot에서 어떤 점을 잘못 읽게 되는지 설명하세요.

남길 결과

기록 항목과 확인할 점
입력
ω [rad/s]
주기 [s]
이득
위상 [deg]

확인할 점

  • T=2πωT=\frac{2\pi}{\omega} 관계를 사용했는가?
  • 진폭 변화와 주기 변화를 서로 다른 현상으로 기록했는가?