7주차 · 모델 표현을 바꾸어도 같은 응답일까?

실습 전에

01 같은 시스템을 다르게 표현하기

같은 물체의 움직임을 서로 다른 단위나 좌표로 표현할 수 있습니다. 표현을 바꾸는 것이 계산에 도움이 되는 경우는 언제일까요?

설명
  • 단위나 좌표를 바꾸면 수치의 크기를 조절하거나 관계식을 계산하기 편하게 정리할 수 있습니다.
  • 이번 실습에서는 State 좌표를 바꾸어도 같은 물리적 응답을 얻는지 확인합니다.

02 표현이 바뀌어도 유지되는 것

모델의 숫자와 행렬이 달라져도 같은 시스템을 나타낼 수 있을까요? 무엇이 같아야 그렇게 판단할 수 있을까요?

설명
  • 동일한 물리적 Initial State와 Input에 대해 같은 Output을 얻어야 합니다.
  • 새 좌표에 맞춰 모델 행렬뿐 아니라 초기 State와 Output 관계도 함께 바꾸어야 합니다.

실습

1. 모델 변환과 좌표변환

모델은 A=[01−2−3]A=\begin{bmatrix}0&1\\-2&-3\end{bmatrix}, B=[01]B=\begin{bmatrix}0\\1\end{bmatrix}, C=[10]C=\begin{bmatrix}1&0\end{bmatrix}, D=0D=0입니다.

  • 주어진 모델의 A,B,C,DA,B,C,D를 읽어 두 State Equation을 손으로 쓰세요.
  • Initial Condition을 0으로 놓고 두 State Equation을 Laplace Transform하세요. 첫 번째 식에서 X2(s)X_2(s)를 X1(s)X_1(s)로 나타내 두 번째 식에 대입하고, X1(s)U(s)\frac{X_1(s)}{U(s)}를 구하세요. C=[10]C=\begin{bmatrix}1&0\end{bmatrix}일 때 Y(s)Y(s)와 X1(s)X_1(s)의 관계를 써서 Y(s)U(s)\frac{Y(s)}{U(s)}로 정리하세요. 이어서 C=[01]C=\begin{bmatrix}0&1\end{bmatrix}이면 출력식이 어떻게 바뀌는지 적으세요.
  • 그 다음 tf 결과와 비교하세요.

좌표변환에는 P=diag⁡(2,0.5)P=\operatorname{diag}(2,0.5), Initial State에는 x0=[11]x_0=\begin{bmatrix}1\\1\end{bmatrix}을 사용하세요.

  1. 행렬변환 코드를 실행하기 전에 ẋ=Ax+Bu\dot x=Ax+Bu에 x=Pzx=Pz, ẋ=Pż\dot x=P\dot z를 대입하고 양변에 P−1P^{-1}을 곱하세요. ż=Azz+Bzu\dot z=A_z z+B_z u에서 Az,BzA_z,B_z에 해당하는 행렬을 구하세요.
  2. y=Cxy=Cx에도 x=Pzx=Pz를 대입하고 y=Czzy=C_z z의 CzC_z를 구하세요.
  3. Initial State는 x0=Pz0x_0=Pz_0에서 z0z_0를 구하세요. 직접 구한 세 행렬은 실습용 Live Script의 ‘3. State 좌표 스케일 변경’ 코드의 Az·Bz·Cz와, 초기값은 실습용 Live Script의 ‘4. 초기값 변환 오류 수정’ 코드의 z0와 대응시키세요. 손계산과 코드 계산을 두 열로 나란히 적고, 각 행렬·벡터의 같은 위치 성분이 일치하는지 기록하세요.

2. 변환 전후의 응답

  1. 실습용 Live Script의 ‘2. 변환 전후의 응답’ 코드의 A,B,D는 유지하고 C=[0 1]로 바꾼 뒤 sys와 G=tf(sys)를 다시 만드세요.
  2. 같은 시간축에서 step(sys,t)와 step(G,t)를 계산하고, 두 출력의 최대 절대 차이를 기록하세요. 최대 절대 차이가 10−810^{-8}보다 작은지 판정하세요.
  3. 변경 전후의 출력식 y=Cxy=Cx와 DC Gain을 나란히 적고, 선택한 State가 달라져 출력과 DC Gain이 바뀌는 이유를 설명하세요.

3. State 좌표 스케일 변경

  1. P=diag([3 2])로 바꾸고, Az=P\(A*P), Bz=P\B, Cz=C*P로 Az,Bz,Cz를 다시 계산해 행렬을 기록하세요.
  2. 같은 시간축에서 원래 모델과 변환한 모델의 Step Response를 구하고, 두 출력의 최대 절대 차이를 기록하세요. 최대 절대 차이가 10−810^{-8}보다 작은지 판정하세요.
  3. 행렬의 원소는 달라져도 출력이 같은 이유를 x=Pzx=Pz와 출력식의 관계로 설명하세요.

4. 초기값 변환 오류 수정

  1. Initial State를 x0=[10]x_0=\begin{bmatrix}1\\0\end{bmatrix}, [01]\begin{bmatrix}0\\1\end{bmatrix}, [21]\begin{bmatrix}2\\1\end{bmatrix}로 각각 지정하세요. 모델·좌표변환 행렬·시간축은 앞의 ‘3. State 좌표 스케일 변경’에서 실행한 값을 유지합니다. 초기값을 바꾼 뒤 실습용 Live Script의 ‘4. 초기값 변환 오류 수정’ 코드를 다시 실행하세요.
  2. 각 x0x_0에서 원래 모델의 initial(sys,x0,t)와 변환한 모델의 initial(transformed,P\x0,t)를 구하세요. 같은 변환 모델에 x0를 그대로 넣은 출력도 계산하세요.
  3. Initial State별로 올바르게 변환한 출력과 원래 출력의 최대 절대 차이, 초기값을 그대로 사용한 출력과 원래 출력의 최대 절대 차이를 두 열로 기록하세요. 두 경우가 다른 이유를 x0=Pz0x_0=Pz_0와 연결해 설명하세요.

제출·저장

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

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

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

선택 실습

예: 변환한 입력 행렬에 잘못된 좌표변환을 적용한 경우

  1. 실습용 Live Script의 ‘3. State 좌표 스케일 변경’ 코드의 A,B,C,P,Az,Cz는 유지하세요. 별도 모델에서 Bz=P*B로 잘못 계산했을 때 원래 모델과의 Step 출력 차이를 구하세요.
  2. t=(0:0.01:10)'에서 최대 절대 차이를 기록하세요. Bz 정의만 P\B로 바꾼 뒤 같은 차이를 다시 구하고 두 값을 대조하세요.