6주차 · State Transition과 시스템 응답

실습 전에

01 출발 상태의 영향

같은 물체라도 멈춘 상태에서 시작할 때와 이미 움직이는 상태에서 시작할 때 결과가 다릅니다. 이 차이를 계산에 어떻게 반영할 수 있을까요?

설명
  • 출발 시점의 위치와 속도를 초기 State로 지정합니다. 이후 Input이 같아도 초기 State가 다르면 응답이 달라집니다.
  • State Transition은 이 초기 State가 시간에 따라 어떻게 변하는지 표현합니다.

02 움직임의 원인 구분하기

물체가 원래 가지고 있던 운동과 이후 가한 힘의 영향을 나누어 볼 수 있다면, 응답을 이해하는 데 어떤 도움이 될까요?

설명
  • 선형 모델에서 초기 State에 의한 응답과 Input에 의한 응답으로 분해
  • 초기 State가 0일 때의 Input 응답을 더하여 전체 응답 계산

실습

1. State Transition 계산

  • 아래 일반 모델을 실행하기 전에 A=[−100−2]A=\begin{bmatrix}-1&0\\0&-2\end{bmatrix}, 𝐱0=[21]\mathbf x_0=\begin{bmatrix}2\\1\end{bmatrix}, u(t)=0u(t)=0인 간단한 경우를 손으로 계산하세요.
  • 대각행렬에서는 Φ(t)=diag⁡(ea1t,ea2t)\Phi(t)=\operatorname{diag}(e^{a_1t},e^{a_2t})입니다.
  • Φ(t)\Phi(t)와 𝐱(t)=Φ(t)𝐱0\mathbf x(t)=\Phi(t)\mathbf x_0를 기호식으로 쓰고 t=0t=0에서 초기값이 되는지 확인하세요.
  • 전체 응답 식에서 초기 State에 의한 항과 Input에 의한 적분항을 표시하고, 여기서 어느 항이 0인지 설명하세요.
  • t=1t=1의 값은 지수함수 형태로 둔 뒤 손계산에 사용한 모델을 별도 변수 A_check=diag([-1 -2]), x0_check=[2;1]로 지정하고 expm(A_check)*x0_check와 대조하세요.
  • 이 계산을 실습용 Live Script의 ‘2. State Transition Matrix’ 코드의 기준 예측으로 사용하세요.

2. State Transition Matrix

  1. 실습용 Live Script의 ‘2. State Transition Matrix’ 코드의 같은 A에서 t∈{0,0.5,1}t\in\{0,0.5,1\}의 Phi=expm(A*t)를 구해 행렬을 기록하세요.
  2. norm(expm(A)-expm(A*0.5)*expm(A*0.5))를 구해 잔차를 기록하세요. 이 값이 0에 가까운지 보고 Φ(1)=Φ(0.5)Φ(0.5)\Phi(1)=\Phi(0.5)\Phi(0.5)와 대조합니다.
  3. 같은 t=0.5t=0.5에서 계산한 Phi-exp(A*0.5)와 연결해, State Transition에 exp 대신 expm을 쓰는 이유를 설명하세요.

3. State Trajectory 비교

  1. 같은 A와 시간축에서 Initial State를 [1;0]에서 [0;1]로 바꾸어 X를 다시 계산하세요.
  2. Position X(1,:)와 Linear Velocity X(2,:)의 그림에 변경 전후 곡선을 각각 표시하세요. 범례에는 Initial State를 적으세요.
  3. Position의 초기값이 0이어도 이후 값이 변하는 이유를 Linear Velocity의 초기값과 연결해 설명하세요.

4. 전체 응답의 분해

  1. ‘전체 응답의 분해’ 코드에 정의된 sys,t를 사용해 다음 두 경우를 각각 계산하세요.
    • 입력 u=2*ones(size(t)), 기준 Initial State x0=[1;0].
    • 입력 크기 2를 유지한 u=2*ones(size(t)), Initial State x0=[0;1].
  2. 각 경우에 전체 출력 lsim(sys,u,t,x0), Initial State에 의한 출력 initial(sys,x0,t), 입력에 의한 출력 lsim(sys,u,t)를 구하세요.
  3. max(abs(yTotal-yInitial-yInput))를 기록하고, 세 출력의 관계를 설명하세요.
  4. 입력만 두 배로 한 경우의 전체 출력을 기준 전체 출력의 두 배와 대조하세요. Initial State에 의한 출력도 두 배가 되는지 구분해 판단하세요.

제출·저장

코드, 실제 Output·그래프, 직접 작성한 해석을 포함하세요. 제출은 KLAS를 이용하며 기한은 학기 일정과 최신 공지를 확인합니다.

파일명: 이름_학번_6주차.mlx.

실행 환경을 다시 시작하고 전체 코드를 위에서부터 실행한 뒤 저장하세요.

선택 실습

예: Initial State를 행벡터로 넣은 경우

  1. 실습용 Live Script의 ‘2. State Transition Matrix’ 코드의 같은 A에서 expm(A*0.5)*[1 0]을 별도 줄로 시험하고, 두 행렬의 크기와 오류 메시지를 기록하세요.
  2. Initial State만 열벡터 [1;0]로 바꾸어 계산하세요. 결과의 두 성분을 적고 잘못된 입력 줄은 수정된 줄로 대체하세요.