9주차 · Closed-loop Gain과 Sensitivity

실습 전에

01 결과를 측정하는 이유

같은 조작을 해도 주변 조건이나 장치의 변화 때문에 결과가 달라질 수 있습니다. 실제 결과를 측정하면 이를 어떻게 보완할 수 있을까요?

설명
  • Output을 측정하고 목표와의 차이에 따라 조작 수정
  • 적절한 설계로 모델의 Gain 변화가 전체 응답에 미치는 영향 감소

02 조작을 수정하는 정도

목표와 조금만 달라도 크게 조작하면 더 정확하게 제어할 수 있을까요? 반응을 키웠을 때 생길 수 있는 문제는 무엇일까요?

설명
  • 안정성, 측정 잡음, 조작 한계
  • Sensitivity 개선만으로 전체 설계의 적합성을 판단하지 않음

실습

1. Closed-loop Gain과 Sensitivity 계산

  • 실습용 Live Script의 ‘3. 변화율 검증’ 코드을 실행하기 전에 Ka=5000,β=0.05,δ=0.1K_a=5000,\quad\beta=0.05,\quad\delta=0.1을 사용해 손으로 계산하세요.
  • T(Ka)=Ka1+βKaT(K_a)=\frac{K_a}{1+\beta K_a}를 미분하고 S=KaTdTdKaS=\frac{K_a}{T}\frac{dT}{dK_a}에 대입하여 기준 Sensitivity S0S_0를 구하세요.
  • 근사 계산: S0S_0에 KaK_a의 상대 증가 비율 0.1을 곱하세요.
  • 정확 계산: T0=T(5000)T_0=T(5000), T1=T(5500)T_1=T(5500)을 각각 구한 뒤 T1−T0T0\frac{T_1-T_0}{T_0}를 계산하세요.
  • 두 답은 분수로 두어도 됩니다.
  • 손으로 쓴 두 계산을 저장한 뒤 실습용 Live Script의 ‘3. 변화율 검증’ 코드를 실행해 approx·exact와 대조하세요.
  • 차이가 나면 분모에 변경 전 T0T_0를 썼는지 확인하세요.
  • 이후 1%·20% 조건을 반복합니다.
  • 10% 조건은 이미 수행했으므로 다시 할 필요가 없습니다.

2. 기준 Gain과 Sensitivity

β=0.05\beta=0.05를 유지하고 Ka∈{1000,5000,10000}K_a\in\{1000,5000,10000\}을 적용하세요. 각 KaK_a를 Open-loop Gain KaK_a, Closed-loop Gain Ka1+βKa\frac{K_a}{1+\beta K_a}, Sensitivity 11+βKa\frac1{1+\beta K_a}에 대입해 계산하고, 세 Gain 조건을 행으로 둔 표에 기록하세요.

3. 변화율 검증

  1. δ∈{0.01,0.1,0.2}\delta\in\{0.01,0.1,0.2\}에서 변화율을 계산하는 코드의 exact와 approx를 각각 계산하세요. Ka=5000K_a=5000, β=0.05\beta=0.05는 유지합니다.
  2. δ\delta, 정확한 변화율, 근사 변화율, 두 변화율의 절대 차이를 한 표에 기록하세요.
  3. δ\delta가 커질 때 근사 오차가 커지는지 표의 마지막 열로 판단하세요. Feedback이 없을 때의 상대 Gain 변화 δ\delta와 Closed-loop의 exact도 대조해 변화가 얼마나 줄었는지 설명하세요.

4. 반복 검사

  1. Sensitivity 곡선을 그리는 코드의 β=0.05\beta=0.05에 0.010.01, 0.10.1을 추가하세요. 같은 Ka vector에서 Sensitivity 곡선 세 개를 그리고 범례에 β\beta를 표시하세요.
  2. 같은 KaK_a에서 β\beta별 Closed-loop Gain과 Sensitivity를 나란히 기록하세요. 예를 들어 기준값 Ka=5000K_a=5000에서 세 경우를 대조할 수 있습니다.
  3. Closed-loop Gain은 출력 크기와, Sensitivity는 KaK_a 변화에 따른 상대 Gain 변화와 연결해 설명하세요. Gain이 작은 경우와 변화에 둔감한 경우를 구별합니다.

제출·저장

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

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

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

선택 실습

예: 원소별 나눗셈을 행렬 나눗셈으로 쓴 경우

  1. 실습용 Live Script의 ‘4. 반복 검사’ 코드의 복사본에서 S=1./(1+Ka*beta)를 S=1/(1+Ka*beta)로 바꾸세요. Ka가 vector일 때 오류가 나는지 또는 예상과 다른 크기가 나오는지 기록하세요.
  2. 이 줄만 ./로 바꾸고 size(Ka)와 size(S)를 적으세요. 두 vector의 원소가 일대일로 대응하는지 확인하세요.