물리 시스템을 모델로 표현하기

제어공학1 2주차 · 개념 설명과 실습 안내

무엇을 넣고, 무엇을 관찰하는가? 이 질문에서 시작해 물리 법칙을 식으로 쓰고, MATLAB에서 모델의 반응을 확인합니다.

영상을 본 뒤 입력·출력 → 물리 법칙 → 모델 → 응답 순서로 복습하세요. 밑줄 친 용어는 마우스를 올리거나 눌러 뜻을 볼 수 있습니다. 자세한 계산은 필요한 때 펼치면 됩니다.

등속·등가속 운동도 가정을 둔 모델입니다

고등학교에서 사용한 운동 식도 특정 조건에서 움직임을 예측하는 모델입니다. 일직선 운동에서 위치를 yy, 속도를 vv, 가속도를 aa로 쓰겠습니다. 아래 식의 y0,v0y_0,v_0는 시작 시점의 위치와 속도이며, tt는 그때부터 지난 시간입니다.

운동에 둔 가정 계산할 수 있는 관계 생략한 변화
속도 v0v_0가 일정 y(t)=y0+v0ty(t)=y_0+v_0t 속도의 변화
가속도 aa가 일정 v(t)=v0+atv(t)=v_0+at, y(t)=y0+v0t+12at2y(t)=y_0+v_0t+\frac12at^2 가속도의 변화

등속에서는 v̇=0\dot v=0, 등가속에서는 v̇=a\dot v=a가 일정합니다. 어떤 값이 변하지 않는다고 두었기 때문에 이후 위치를 간단한 식으로 구할 수 있습니다. 실제 움직임을 그 가정으로 충분히 설명할 수 있는지가 모델 선택의 기준입니다.

스프링에 연결된 물체는 어떨까요? 스프링 힘은 위치에 따라, 댐퍼 힘은 속도에 따라 달라집니다. 가하는 힘까지 달라지면 가속도를 하나의 상수로 두기 어렵습니다. 이때는 힘의 관계를 포함합니다.

Mÿ=u−bẏ−kyM\ddot y=u-b\dot y-ky

등가속 운동 식을 버리는 것이 아니라, 일정하다고 두었던 가속도를 현재 위치·속도·힘으로 계산하도록 확장한 것입니다. 이 모델에서 스프링과 댐퍼의 영향을 없애고 일정한 힘만 가하면 가속도는 다시 일정해집니다.

가정을 단순하게 하면 State의 개수도 줄어들까요?

항상 그렇지는 않습니다. “속도가 일정하다”는 조건과 “속도가 얼마인지 알고 있다”는 정보는 다릅니다. 등속·등가속이라는 이름만으로 State의 차원을 정하지 않습니다. 어떤 값이 이미 주어졌고, 미래를 계산하려면 현재 무엇을 더 알아야 하는지 구분해야 합니다. 5주차에서 위치와 속도를 State로 선택하는 이유를 이어서 살펴봅니다.

이번 실습에서는 스프링·댐퍼의 영향을 포함한 모델의 계수를 바꿉니다. 그래프가 바뀌는 이유를 각 계수가 나타내는 힘과 연결해 보세요.

MATLAB에서 한 단계씩 실행하기

Colab의 셀처럼, 이 문서에서는 섹션(section) 단위로 코드를 실행합니다. 설명이나 코드 한 줄을 클릭했다고 그 줄만 실행되는 것은 아닙니다.

  1. 실행할 코드 안을 클릭한 뒤 상단 Live Editor → Run Section(섹션 실행)을 누르세요. 현재 섹션의 코드 전체가 실행됩니다.
  2. 처음에는 환경 확인 → RLC 기준 실행 → RLC 한 변수씩 변경 → 기계 모델 순서로 위에서부터 진행하세요. 각 단계에서 먼저 예측을 적고 실행 결과와 비교합니다.
  3. parameter나 factor를 바꿨다면 그 섹션을 다시 실행하세요. 값을 입력하는 것만으로 그래프가 갱신되지는 않습니다.

Run(실행)은 문서 전체를 실행합니다. 이번 실습에서는 예측과 관찰 사이에 멈출 수 있도록 Run Section을 사용하세요. 설명의 빈칸과 표는 직접 수정하는 작성란이며, 실행 버튼을 누를 필요가 없습니다.

단축키·실행 결과·오류가 헷갈릴 때
  • 현재 섹션 실행: Windows/Linux Ctrl+Enter, Mac ⌘+Enter. 단축키가 작동하지 않으면 상단 Run Section 버튼을 사용하세요.
  • 출력은 설정에 따라 코드 오른쪽 또는 아래에 나타납니다. 그래프를 확인하고 해당 관찰란에 기록하세요.
  • R0, g0 등의 변수를 찾을 수 없다는 오류가 나면, 앞의 RLC 기준 실행 섹션부터 순서대로 실행하세요. 뒤 섹션은 앞에서 만든 변수를 사용합니다. 세션을 새로 시작했을 때도 위에서부터 실행해야 합니다.
  • 코드를 바꾸면 관련 결과도 다시 실행해 갱신한 뒤 본인 사본을 저장하세요.

MATLAB 공식 섹션 실행 안내 · 단축키 안내

1. 입력과 출력부터 정하기

같은 물체도 무엇을 입력하고 무엇을 측정하느냐에 따라 모델의 의미가 달라집니다.

오늘의 시스템 입력 출력
병렬 RLC 회로 흘려 넣는 전류 iᵢₙ(t) [A] 노드 전압 v(t) [V]
질량–스프링–댐퍼 가하는 힘 u(t) [N] 평형점에서의 변위 y(t) [m]
왜 입력·출력부터 정할까요?

‘회로를 모델링한다’만으로는 충분하지 않습니다. 전압을 넣고 전류를 측정하는 경우와 전류를 넣고 전압을 측정하는 경우는 다른 입출력 관계입니다. 오늘의 RLC 예제는 전류 입력 → 전압 출력입니다.

t는 시간입니다. v(t)는 전압이 시간에 따라 달라질 수 있다는 뜻입니다. 모델을 읽을 때는 각 기호의 이름뿐 아니라 단위도 함께 확인하세요. 결과 그래프의 세로축이 무엇인지 잘못 읽으면 같은 그래프도 다른 뜻으로 해석하게 됩니다.

확인 질문 · 오늘의 기계 모델에 1 N의 힘을 가하면 그래프의 세로축 단위는 N일까요, m일까요?

세로축은 출력인 변위이므로 m입니다. 1 N은 가한 힘, 즉 입력의 크기입니다. MATLAB 그래프에서도 입력 크기와 세로축의 단위를 나누어 읽으세요.

2. 현재 값만으로 설명할 수 있을까?

스프링의 정적인 평형은 F = ky로 나타낼 수 있습니다. 물체가 움직이는 과정까지 알고 싶다면 위치뿐 아니라 속도·가속도도 필요합니다.

위치 y(t)속도 dydt가속도 d2ydt2 \text{위치 }y(t)\qquad \text{속도 }\frac{dy}{dt}\qquad \text{가속도 }\frac{d^2y}{dt^2}

정적인 관계와 동적인 모델의 차이

정적인 관계는 평형이나 시간 변화가 중요하지 않은 조건의 입력·출력을 설명합니다. 예를 들어 충분히 기다린 뒤 스프링이 얼마나 늘어났는지를 보는 것입니다. 실제 스프링에 질량이 연결된 시스템 전체가 항상 즉시 반응한다는 뜻은 아닙니다.

동적인 모델은 변화 과정을 다룹니다. 같은 위치에 있어도 한 물체는 오른쪽으로 움직이고, 다른 물체는 왼쪽으로 움직인다면 잠시 뒤의 위치는 달라집니다. 그래서 현재 위치만으로는 부족하고 속도 같은 상태 정보도 필요합니다.

미분은 변화율을 표현합니다. Differential Equation은 물리 법칙과 이러한 변화율 사이의 관계를 적은 것입니다. 오늘은 새로운 수학 기호를 외우기보다 각 항이 어떤 현상을 나타내는지 보세요.

확인 질문 · 스프링에 연결된 질량이 y=0y=0에 있을 때, 정지한 경우와 움직이며 지나는 경우를 위치만으로 구별할 수 있을까요?

속도가 다르면 앞으로의 움직임도 다릅니다. 동적인 시스템에서는 처음의 위치·속도 같은 Initial State를 함께 정해야 합니다.

3. 병렬 RLC: 전류의 합으로 모델 세우기

병렬 RLC 회로. 전류원이 저항 R, 인덕터 L, 커패시터 C에 병렬로 연결되어 있다.

그림의 r(t)를 여기서는 iᵢₙ(t)로 씁니다. 저항 R과 입력 신호의 기호가 섞이지 않게 하기 위해서입니다. 출력은 세 소자에 공통으로 걸리는 전압 v(t)입니다.

들어오는 전류가 세 가지로 나뉩니다.

iin=iR+iL+iCi_{in}=i_R+i_L+i_C

소자 전류와 전압의 관계 읽는 방법
저항 iR=v/Ri_R=v/R 같은 전압에서 R이 크면 저항 전류는 작음
커패시터 iC=Cdv/dti_C=C\,dv/dt 전압의 변화율과 전류가 연결됨
인덕터 v=LdiL/dtv=L\,di_L/dt 전류의 변화율과 전압이 연결됨
세 관계를 하나의 식으로 합치기

인덕터 관계를 적분하면

iL(t)=iL(0)+1L∫0tv(τ)dτi_L(t)=i_L(0)+\frac{1}{L}\int_0^t v(\tau)\,d\tau

입니다. τ는 적분 안에서 시간을 세는 기호입니다. iL(0)은 시작할 때 인덕터에 흐르던 전류입니다. 처음 전류가 0인 경우에는 다음처럼 정리됩니다.

iin(t)=v(t)R+Cdv(t)dt+1L∫0tv(τ)dτi_{in}(t)=\frac{v(t)}{R}+C\frac{dv(t)}{dt}+\frac{1}{L}\int_0^t v(\tau)\,d\tau

각 항의 단위는 모두 A입니다. 이 식은 전류 보존 법칙에 각 소자의 관계식을 넣은 결과입니다. 적분항도 포함하므로 엄밀히는 적분·미분 관계식입니다. 양변을 미분하면 Differential Equation으로도 표현할 수 있지만, 여기서는 이 형태에서 Transfer Function로 넘어가겠습니다.

확인 질문 · 병렬로 연결된 세 소자의 전압은 각각 다를까요?

이상적인 도선으로 같은 두 노드 사이에 연결되어 있으므로 세 소자에 걸리는 전압은 같습니다. 반면 각 가지 전류는 서로 다를 수 있고, 그 합이 입력 전류입니다.

4. Transfer Function은 입출력 관계를 압축한 표현

오늘은 Initial Condition을 0으로 놓고, 미분·적분 관계를 s에 관한 식으로 바꾸어 계산합니다. 시간 함수 v(t)의 Laplace Transform을 V(s)로 씁니다.

GRLC(s)=V(s)Iin(s)=sCs2+1Rs+1L G_{RLC}(s)=\frac{V(s)}{I_{in}(s)} =\frac{s}{Cs^2+\frac{1}{R}s+\frac{1}{L}}

이 Transfer Function의 입출력 단위는 V/A입니다. ‘출력/입력’이라는 정의와 잘 맞는지 확인하세요.

Transfer Function 유도 과정

Initial Condition이 모두 0인 상태에서 미분은 s를 곱하는 형태, 적분은 s로 나누는 형태가 됩니다. 자세한 라플라스 성질은 이후 단원에서 더 다룹니다.

Iin(s)=V(s)R+CsV(s)+V(s)LsI_{in}(s)=\frac{V(s)}{R}+CsV(s)+\frac{V(s)}{Ls}

공통인 V(s)를 묶으면

Iin(s)=V(s)(1R+Cs+1Ls)I_{in}(s)=V(s)\left(\frac{1}{R}+Cs+\frac{1}{Ls}\right)

이고, 양변을 정리해 출력/입력을 구하면

V(s)Iin(s)=11R+Cs+1Ls\frac{V(s)}{I_{in}(s)}=\frac{1}{\frac1R+Cs+\frac1{Ls}}

입니다. 마지막으로 분자와 분모에 s를 곱하면 위의 다항식 형태가 됩니다. MATLAB에는 이 다항식의 계수를 입력합니다.

Initial Condition을 0으로 둔다는 뜻

회로라면 시작 시 커패시터 전압과 인덕터 전류가 0인 상태를 생각합니다. 기계 시스템이라면 기준점에서 정지한 상태입니다. 처음에 에너지가 저장되어 있으면 그 Initial State에 따른 응답도 생깁니다.

Transfer Function은 Initial Condition이 모두 0일 때의 입력에 대한 응답 관계를 나타냅니다. 처음의 위치·속도나 커패시터 전압·인덕터 전류가 0이 아니라면, 이 값들이 출력에 미치는 영향도 따로 계산해 더해야 합니다.

5. 질량–스프링–댐퍼: 힘의 합으로 모델 세우기

질량–스프링–댐퍼. 아래 방향 힘 r(t)와 변위 y(t), 위 방향의 스프링 힘 ky(t)와 댐퍼 힘 b y점이 표시되어 있다.

아래 방향을 양으로 두고, 그림의 r(t)를 u(t)로 씁니다. y(t)는 중력이 이미 반영된 평형점으로부터의 변위입니다.

u(t)−bẏ(t)−ky(t)⏟힘의 합=Mÿ(t)\underbrace{u(t)-b\dot y(t)-ky(t)}_{\text{힘의 합}}=M\ddot y(t)

항 물리적 의미 계수의 단위
MÿM\ddot y 질량 × 가속도 M: kg
bẏb\dot y 속도에 비례하는 댐퍼 힘 b: N·s/m
kyky 변위에 비례하는 스프링 힘 k: N/m
부호와 중력 항이 헷갈린다면

스프링은 늘어난 방향의 반대로 힘을 내고, 댐퍼는 속도의 반대 방향으로 힘을 냅니다. 선택한 양의 방향에 대해 이 힘들을 쓰면 −ky, −b y점이 됩니다. y나 속도가 음수라면 이 항의 부호도 그에 맞게 바뀝니다.

그림은 수직 시스템이지만 여기서는 중력으로 생긴 정적 처짐을 기준점에 포함했습니다. 그래서 평형점에서 얼마나 추가로 움직였는지를 나타내는 식에는 상수 중력항이 남지 않습니다. 늘어나지 않은 스프링 길이를 기준으로 좌표를 정했다면 중력항을 포함해 새로 식을 세워야 합니다.

6. 기계 모델의 Transfer Function

출력 항들을 한쪽에 모으면

Mÿ+bẏ+ky=u(t)M\ddot y+b\dot y+ky=u(t)

입니다. Initial Condition이 모두 0일 때의 Laplace Transform을 적용하면

GMSD(s)=Y(s)U(s)=1Ms2+bs+kG_{MSD}(s)=\frac{Y(s)}{U(s)}=\frac{1}{Ms^2+bs+k}

가 됩니다. 단위는 m/N입니다.

회로 모델과 나란히 비교하기
모델 입력 → 출력 분자 분모 계수
병렬 RLC 전류 → 전압 s C, 1/R, 1/L
기계 시스템 힘 → 변위 1 M, b, k

둘 다 분모에 s²가 있지만 분자가 다르고 입력·출력도 다릅니다. 모양이 비슷하다는 이유로 같은 크기의 결과나 같은 최종값이 나올 것이라고 예상하면 안 됩니다.

기계 모델의 변환 과정은 Ms²Y + bsY + kY = U에서 Y를 묶고 양변을 나누는 것입니다. 이 과정에서 질량·댐핑·스프링의 물리적 의미는 그대로 유지됩니다.

확인 질문 · 기계 모델에서 k를 키우면 분모의 어느 계수가 바뀔까요?

상수항이 바뀝니다. [M b k]의 마지막 값입니다. 다만 계수 위치를 맞히는 데서 끝내지 말고, 더 단단한 스프링이라는 물리적 의미도 연결해보세요.

7. MATLAB에서 계수로 모델 만들기

tf는 분자·분모의 계수를 받아 Transfer Function 모델을 만듭니다. 계수는 s의 높은 차수부터 적습니다. 빠진 차수는 0으로 채웁니다.

R = 0.5; L = 1; C = 5;
g_rlc = tf([1 0], [C 1/R 1/L]);
  • [1 0] → 1·s + 0
  • [5 2 1] → 5·s² + 2·s + 1
M = 1; b = 2; k = 5;
g_msd = tf(1, [M b k]);
실행 전 계수를 직접 확인하기

기준 RLC 값에서 1/R = 2, 1/L = 1이므로 분모는 [5 2 1]입니다. R을 그대로 넣어 [5 0.5 1]로 적으면 다른 모델이 됩니다.

마지막의 0을 빼고 RLC 분자를 1로 쓰는 것도 다른 모델을 만듭니다. 식을 입력할 때는 숫자뿐 아니라 차수와 누락된 항을 함께 확인하세요.

tf를 찾을 수 없다는 오류가 나오면 Control System Toolbox 접근을 확인하세요. 실습 파일의 첫 실행 부분에서 현재 환경을 확인하도록 했습니다.

8. Step Response를 어떻게 읽을까?

step은 입력이 0에서 1로 바뀌어 유지될 때의 출력을 계산합니다. 오늘의 RLC에서는 1 A, 기계 시스템에서는 1 N의 계단 입력입니다.

figure;
step(g_rlc, 25);
grid on;
xlabel('Time (s)'); ylabel('Voltage (V)');

기준 병렬 RLC에 1 A 전류 계단을 넣었을 때의 전압 응답. 0에서 출발해 증가한 뒤 감쇠하며 0으로 접근한다.

이 그래프는 R=0.5 Ω, L=1 H, C=5 F, Initial Condition이 모두 0인 상태에서 계산한 결과입니다. 같은 값으로 실행했다면 먼저 전체 모양이 비슷한지 확인하세요.

전류를 계속 넣는데 왜 전압은 0으로 갈까요?

직류 Steady State에서 이상적인 인덕터의 전류는 더 이상 변하지 않습니다. 따라서 v=L di/dt에서 전압은 0입니다. 병렬 회로의 공통 전압도 0으로 접근합니다. 입력 전류가 사라진다는 뜻은 아닙니다. 충분히 시간이 지나면 인덕터 가지가 입력 전류를 받습니다.

시작할 때는 커패시터 전압이 갑자기 뛰지 않으므로 v(0+)=0입니다. 인덕터 초기전류도 0이면, 처음 순간 입력 전류는 커패시터로 흘러 dv/dt(0+)=1/C=0.2 V/s가 됩니다. 여기서는 이상적인 소자 모델을 사용합니다.

기계 시스템의 기준 응답은 어떻게 읽을까요?

M=1, b=2, k=5인 기계 모델의 1 N 힘 Step Response. 진동하며 0.2 m에 접근한다.

이상적인 안정 모델에서 충분히 시간이 지나면 속도·가속도가 0이 됩니다. 따라서 식에 ky=u만 남아, 1 N 입력의 최종 변위는 1/k=0.2 m입니다.

그래프의 가로축은 시간, 세로축은 변위입니다. 처음의 움직임, 최종값을 넘는 정도, 안정되는 데 걸리는 시간을 나누어 보세요. 회로와 기계 모델의 최종값이 서로 다른 이유는 입출력과 모델 구조가 다르기 때문입니다.

9. 실습에서는 한 가지를 바꾸고 비교하기

Parameter를 바꿨을 때 어떤 힘이 달라지고, 그 결과 움직임이 어떻게 달라질지 생각해 보세요. 두 값을 동시에 바꾸기보다 기준값을 두고 한 변수씩 바꾸면 원인을 구분하기 쉽습니다.

결과를 설명할 때 사용할 질문
  • 바꾼 계수는 실제 물체/회로에서 무엇을 뜻하나요?
  • 최종값이 바뀌었나요, 움직임의 모양이 바뀌었나요?
  • 진동이 줄어드는 것과 빨리 안정되는 것은 같은 뜻일까요?
  • 최종값이 다른 두 그래프에서 피크의 절대 높이만 비교해도 될까요?

병렬 RLC에서 ‘저항이 커지니까 무조건 덜 흔들린다’고 정하지 마세요. 같은 전압에서 저항 가지 전류는 v/R입니다. 값이 바뀌었을 때 무엇이 줄거나 늘어나는지 오늘의 회로 구조에서 생각해보세요.

비교 결과의 정답을 먼저 읽기보다 그래프와 식을 근거로 자신의 설명을 작성합니다.

10. 실행과 기록을 한 문서에 남기기

Colab·Markdown 내용도 다시 보고 싶다면

공통 개념을 포함한 Notebook 자습 자료에서 설명 셀과 실행 셀, 제목·목록·표의 역할을 복습할 수 있습니다. 도구는 달라도 실행 결과와 그 의미를 함께 남긴다는 목적은 같습니다. MATLAB Live Editor에서는 서식 있는 텍스트와 코드 섹션을 사용합니다.

Python 문법을 MATLAB 코드 셀에 그대로 입력하지 않도록 주의하세요. 예를 들어 MATLAB에서는 주석을 %로 쓰고 tf, step으로 모델을 다룹니다.

참고 자료

회로·기계 도식 출처: 강의자료 Mathematical Models of System #1. 응답 그래프는 본문의 파라미터로 계산한 결과입니다.

자료 버전: 2026-2-02 · 기준일: 2026-09-10

실습 자료