강의자료 · 제어공학1

State Transition과 시스템 응답

제어공학1 · 6주차

이번 주 목표 · 처음의 위치·속도 때문에 생기는 움직임과 외부 힘 때문에 생기는 움직임을 따로 계산하고 비교합니다.

실행: MathWorks 로그인 후 내 작업 공간의 .mlx를 엽니다. 코드 안 클릭 → Live Editor → Run Section으로 한 Section씩 실행하세요. Run은 전체 실행입니다. 값 수정 후에는 관련 Section을 다시 실행해야 합니다. ⟦직접 입력⟧ 작성란은 설명을 직접 수정하며 실행하지 않습니다. Windows/Linux는 Ctrl+Enter, Mac은 ⌘+Enter를 사용할 수 있습니다.

State Equation에서 Time Response로

State Equation은 현재 State의 변화율을 계산하는 식입니다. 이번 실습에서는 그 식을 따라 시간이 흐르면 위치와 속도가 어떻게 변하는지 그래프로 확인합니다. State를 위치와 속도로 정하면, State Equation으로 각 값이 어떻게 변하는지 계산할 수 있습니다.

1. 지금 상태에서 다음 상태로

Input이 없으면 𝐱(t)=Φ(t)𝐱(0)\mathbf x(t)=\Phi(t)\mathbf x(0)입니다. Φ(t)=eAt는 초기 State로부터 시간 t가 지난 뒤의 State를 구하는 State Transition Matrix입니다. A=[01−2−3]A=\begin{bmatrix}0&1\\-2&-3\end{bmatrix}에서 두 State를 위치와 속도로 두고 Initial State [1;0]을 적용해 보세요.

지금 상태에서 다음 상태로

수식의 eAt를 MATLAB으로 계산할 때는 expm(A*t)를 사용합니다. 아직 시간이 지나지 않은 t=0에서는 처음 State가 그대로 남아야 하므로 Φ(0)은 Identity Matrix(단위행렬)입니다. 아래 실습 코드는 expm(A*0)이 이 조건을 만족하는지 확인합니다.

이름이 비슷한 exp는 행렬의 각 원소에 지수함수를 따로 적용합니다. 따라서 2×2 영행렬에 exp를 적용하면 모든 원소가 1이 됩니다. 이것은 처음 State를 그대로 유지하는 Identity Matrix와 다르므로, 이 실습에서 expm 대신 사용할 수 없습니다.

2. 짧은 시간 이동 두 번

LTI 모델에서는 Φ(t1+t2)=Φ(t1)Φ(t2)\Phi(t_1+t_2)=\Phi(t_1)\Phi(t_2)입니다. 먼저 0.5초씩 두 번 이동한 결과와 한 번에 1초 이동한 결과가 같은지 예상한 뒤 norm으로 차이를 확인합니다.

짧은 시간 이동 두 번

이 관계는 같은 A가 유지되는 경우입니다. 수치 계산 결과가 정확히 0인지보다 허용 오차 내인지 검사합니다. 여기서는 norm 차이 1e−10을 기준으로 사용합니다.

3. Input이 있으면 응답이 더해진다

물체의 움직임을 두 부분으로 나누어 계산할 수 있습니다. 외부 힘 없이 처음의 위치·속도 때문에 생기는 움직임은 initial로 계산합니다. 처음의 위치·속도가 모두 0일 때 외부 힘 때문에 생기는 움직임은 lsim으로 계산합니다. 같은 시간에서 두 결과를 더하면 초기 위치·속도와 외부 힘을 모두 적용한 결과와 같아야 합니다.

Input이 있으면 응답이 더해진다

𝐱(t)=Φ(t)𝐱(0)+∫0tΦ(t−τ)Bu(τ)dτ\mathbf x(t)=\Phi(t)\mathbf x(0)+\int_0^t\Phi(t-\tau)Bu(\tau)\,d\tau입니다. 실습에서는 lsim(sys,u,t,𝐱0\mathbf x_0) 결과를 initial(sys,𝐱0\mathbf x_0,t)+lsim(sys,u,t,zeros(2,1))과 비교합니다. 같은 t와 Output 정의를 사용해야 합니다.

4. 그래프에 계산 조건 남기기

위치와 속도는 단위가 다르므로 subplot으로 나누어 표시합니다. State 곡선과 Output 곡선은 같지 않을 수 있습니다. C=[1,0]C=[1,0]이면 위치만 Output이며 속도는 State 계산에서 확인합니다.

그래프에 계산 조건 남기기

변수의 길이와 각 열의 의미를 먼저 출력하세요. 시간축, 단위, Initial Condition을 Figure에 남기고 최대 절대차와 함께 보고하면 그래프가 비슷하다는 인상 이상의 검증이 됩니다.

학습 내용 확인

  1. 코드에 넣을 값은 무엇이며, 결과 배열의 각 행·열은 무엇을 뜻하나요? 물리량을 계산한다면 단위도 확인했나요?
  2. 조건을 하나 바꿨을 때 다시 실행해야 하는 부분을 찾을 수 있나요?
  3. 실행 결과가 예상과 맞나요? 다르다면 출력값이나 그래프를 보고 이유를 설명할 수 있나요?

MATLAB 공식 문서 · Control System Toolbox

실습 자료