Control Engineering 1 · Week 09 · Closed-loop Gain과 Sensitivity
본인 사본에서 코드와 작성란을 직접 수정하세요. 이름: ⟦직접 입력⟧ / 학번: ⟦직접 입력⟧
실행 방법
Live Editor에서 코드 안을 클릭하고 Run Section으로 현재 Section을 실행하세요(Windows/Linux Ctrl+Enter, Mac ⌘+Enter). Run은 문서 전체를 실행합니다. 설명·작성란은 직접 편집하세요.
처음에는 위에서부터 실행하고, 값을 바꾼 Section은 다시 실행하세요. 변수가 없다는 오류가 나면 앞 Section부터 실행하세요. 출력은 코드 아래 또는 오른쪽에 표시됩니다.
환경: MATLAB Online과 Control System Toolbox.
1. Closed-loop Gain과 Sensitivity 계산
아래 계산을 먼저 수행한 뒤 MATLAB 결과와 비교하세요.
- 실습용 Live Script의 ‘3. 변화율 검증’ 코드을 실행하기 전에 을 사용해 손으로 계산하세요.
- 를 미분하고 에 대입하여 기준 Sensitivity 를 구하세요.
- 근사 계산: 에 의 상대 증가 비율 0.1을 곱하세요.
- 정확 계산: , 을 각각 구한 뒤 를 계산하세요.
- 두 답은 분수로 두어도 됩니다.
- 손으로 쓴 두 계산을 저장한 뒤 실습용 Live Script의 ‘3. 변화율 검증’ 코드를 실행해 approx·exact와 대조하세요.
- 차이가 나면 분모에 변경 전 를 썼는지 확인하세요.
- 이후 1%·20% 조건을 반복합니다.
- 10% 조건은 이미 수행했으므로 다시 할 필요가 없습니다.
코드 실행 전 — 손으로 계산한 식과 값: ⟦여기에 계산을 적으세요⟧
코드 실행 후 — 비교할 MATLAB 출력값: ⟦출력값을 적으세요⟧
2. 기준 Gain과 Sensitivity
Sensitivity는 Gain을 아주 조금 바꿨을 때의 상대 변화 비율입니다. +10%처럼 유한한 변화에서는 이 값으로 예측한 변화와 원래 함수로 다시 계산한 변화가 조금 다를 수 있습니다. 전체 Gain T=Ka/(1+beta*Ka)를 미분하면 dT/dKa=1/(1+beta*Ka)^2입니다. 이를 S=(Ka/T)*(dT/dKa)에 넣어 S=1/(1+beta*Ka)를 얻습니다. 작은 변화에서 ΔT≈(dT/dKa)ΔKa이므로 ΔT/T≈S*(ΔKa/Ka)입니다. 아래 approx는 이 식을, exact는 변경 전후 T를 직접 비교한 식을 사용합니다.
실행 전 예상: ⟦직접 입력⟧
Ka=5000;beta=.05;
Topen=Ka;Tclosed=Ka/(1+Ka*beta);
Sopen=1;Sclosed=1/(1+Ka*beta);
disp(table(Topen,Tclosed,Sopen,Sclosed));
직접 수행:
를 유지하고 을 적용하세요. 각 를 Open-loop Gain , Closed-loop Gain , Sensitivity 에 대입해 계산하고, 세 Gain 조건을 행으로 둔 표에 기록하세요.
% ✍ 직접 작성: 아래에 본인 코드를 추가하세요.
바꾼 조건: ⟦직접 입력⟧
실제 결과: ⟦직접 입력⟧
예상과 차이 및 원인: ⟦직접 입력⟧
3. 변화율 검증
상대 변화율은 (변경 후 Gain−변경 전 Gain)/변경 전 Gain입니다. 바뀐 Gain으로 나누지 않도록 확인하세요.
실행 전 예상: ⟦직접 입력⟧
Ka=5000;beta=.05;delta=.1;
T0=Ka/(1+Ka*beta);T1=(Ka*(1+delta))/(1+Ka*(1+delta)*beta);
exact=(T1-T0)/T0;approx=delta/(1+Ka*beta);
disp(table(exact,approx));
직접 수행:
- 에서 변화율을 계산하는 코드의 exact와 approx를 각각 계산하세요. , 는 유지합니다.
- δ, 정확한 변화율, 근사 변화율, 두 변화율의 절대 차이를 한 표에 기록하세요.
- δ가 커질 때 근사 오차가 커지는지 표의 마지막 열로 판단하세요. Feedback이 없을 때의 상대 Gain 변화 δ와 Closed-loop의 exact도 대조해 변화가 얼마나 줄었는지 설명하세요.
% ✍ 직접 작성: 아래에 본인 코드를 추가하세요.
바꾼 조건: ⟦직접 입력⟧
실제 결과: ⟦직접 입력⟧
예상과 차이 및 원인: ⟦직접 입력⟧
4. 반복 검사
Ka 값을 차례로 바꾸며 같은 Sensitivity 식으로 계산해 곡선을 그립니다. Ka가 커질수록 Sensitivity가 어떻게 변하는지 확인하세요.
실행 전 예상: ⟦직접 입력⟧
beta=.05;Ka=logspace(1,5,100);S=1./(1+Ka*beta);
figure;semilogx(Ka,S);xlabel('Amplifier gain Ka');ylabel('Sensitivity');grid on;
직접 수행:
- Sensitivity 곡선을 그리는 코드의 에 , 을 추가하세요. 같은 Ka vector에서 Sensitivity 곡선 세 개를 그리고 범례에 β를 표시하세요.
- 같은 에서 β별 Closed-loop Gain과 Sensitivity를 나란히 기록하세요. 예를 들어 기준값 에서 세 경우를 대조할 수 있습니다.
- Closed-loop Gain은 출력 크기와, Sensitivity는 변화에 따른 상대 Gain 변화와 연결해 설명하세요. Gain이 작은 경우와 변화에 둔감한 경우를 구별합니다.
% ✍ 직접 작성: 아래에 본인 코드를 추가하세요.
바꾼 조건: ⟦직접 입력⟧
실제 결과: ⟦직접 입력⟧
예상과 차이 및 원인: ⟦직접 입력⟧
반복 숙달과 제출 전 확인
앞의 직접 수행에서 비교한 조건 세 가지를 아래에 정리하세요. 이미 수행한 실험을 추가로 반복할 필요는 없습니다. 예상은 정확한 수치 대신 증가·감소 방향으로 적어도 됩니다.
반복 1 — 조건: ⟦직접 입력⟧ / 예상: ⟦직접 입력⟧ / 실제: ⟦직접 입력⟧
반복 2 — 조건: ⟦직접 입력⟧ / 예상: ⟦직접 입력⟧ / 실제: ⟦직접 입력⟧
반복 3 — 조건: ⟦직접 입력⟧ / 예상: ⟦직접 입력⟧ / 실제: ⟦직접 입력⟧
선택:
예: 원소별 나눗셈을 행렬 나눗셈으로 쓴 경우
- 실습용 Live Script의 ‘4. 반복 검사’ 코드의 복사본에서 S=1./(1+Ka*beta)를 S=1/(1+Ka*beta)로 바꾸세요. Ka가 vector일 때 오류가 나는지 또는 예상과 다른 크기가 나오는지 기록하세요.
- 이 줄만 ./로 바꾸고 size(Ka)와 size(S)를 적으세요. 두 vector의 원소가 일대일로 대응하는지 확인하세요.
코드, 실제 Output·그래프, 직접 작성한 해석을 포함하세요. 제출은 KLAS를 이용하며 기한은 학기 일정과 최신 공지를 확인합니다.
파일명: 이름_학번_9주차.mlx.






