제어공학 상태방정식 상태천이행렬

안녕하세요, 이번 포스팅은 제어공학 상태방정식 상태천이행렬 대해서 작성하도록 하겠습니다.

제어공학에서는 특성방정식, 전달함수 등에 대해서 공부를 하시면서 추가적으로 꼭 공부를 하셔야 하는 게 바로 제어공학 상태방정식 상태천이행렬 입니다.

처음에는 조금은 어렵게 느껴지시겠지만, 그래도 하나 하나 배워나간다라고 생각을 하시고 보시면 도움이 되실 겁니다.

그럼 상태방정식과 상태천이행렬의 개념부터 특성, 실제 계산 방법까지 자세히 다뤄보도록 하겠습니다.

상태방정식

✔ 상태방정식이란?

상태방정식(State Equation)은 고차 미분방정식을 1차 연립미분방정식으로 변환해 시스템을 행렬(Matrix)로 표현하는 방식입니다.

즉, 제어 시스템의 동적 거동(Dynamic Behavior)을 상태변수로 나타내는 핵심 수학 도구입니다.

상태방정식을 활용하는 이유

✔ 여러 입력(Multi-input)과 여러 출력(Multi-output)을 갖는 다변수 시스템에서는 전달함수로만 표현하기에 한계가 있음

✔ 상태방정식은 시간영역(Time domain)에서 시스템을 분석하고, 제어기를 설계하기에 유리함

참고로 전달함수 (G(s) = 출력 / 입력) 은 단일 입력/출력(SISO) 시스템에는 유효하지만, 다변수(MIMO) 시스템에는 적합하지 않습니다. 따라서 상태공간모델(State-Space Model)이 필요합니다.

전달함수-입력-출력
전달함수-입력-출력

 

상태방정식-일반식-출력식
상태방정식-일반식-출력식

 

상태방정식-특성방정식
상태방정식-특성방정식

 

 

✔ 상태방정식의 일반 표현

상태방정식은 다음과 같은 형태로 표현됩니다.

  ẋ(t) = A·x(t) + B·u(t)  
   y(t) = C·x(t) + D·u(t)
구분 상세사항
x(t) 상태벡터(State vector)
u(t) 입력벡터(Input)
y(t) 출력벡터(Output)
A 시스템 행렬(System matrix)
B 입력 행렬(Input matrix)
C 출력 행렬(Output matrix)
D 전달 행렬(Feedforward matrix)

위에서 설명 드린 상태방정식을 간단한 예제를 통해서 설명 드리도록 하겠습니다. 

다음과 같은 2차 미분방정식을 상태방정식으로 바꾸어 보겠습니다.

y'' + 3y' + 2y = u(t)

상태변수를 정의해 보면 아래와 같습니다.

  x₁ = y

  x₂ = y’

그럼 다음과 같이 1차 상태방정식으로 변환하면 아래와 같습니다.

ẋ₁ = x₂  
ẋ₂ = -2x₁ - 3x₂ + u(t)

⇒ 행렬형태:
ẋ = [0 1; -2 -3]·x + [0; 1]·u  
y = [1 0]·x

이처럼 복잡한 시스템도 상태방정식으로 간단하게 모델링할 수 있는 것을 확인하실 수 있습니다.

추가적으로 제어공학 공부하시면서 전자기학도 같이 공부하시면 도움이 되실 겁니다.

상태천이행렬

  상태천이행렬이란?

상태천이행렬(State Transition Matrix)시간에 따라 상태벡터 x(t)가 어떻게 변화하는지를 표현해주는 매우 중요한 개념입니다.

특히 입력이 0일 때 (u(t) = 0) 시스템의 내부 상태 변화만을 고려한 자유응답(free response) 분석에 필수적이에요.

 상태천이행렬의 정의

입력이 0일 때 상태방정식은 다음과 같이 단순화됩니다.

ẋ(t) = A·x(t)

이때 해는 다음과 같은 형태를 따릅니다.

x(t) = e^(At) · x(0)

여기서 e^(At)가 바로 상태천이행렬 Φ(t)입니다.

즉, 아래와 같이 정리할 수 있습니다. 

Φ(t) = e^(At)

상태천이행렬의 수학적 표현

▶  멱급수(Maclaurin series)로 표현

행렬 A에 대한 지수함수는 다음과 같이 전개됩니다.

e^(At) = I + At + (A²t²)/2! + (A³t³)/3! + ...

이 형태는 행렬 A에 따라 수렴하며, 다양한 수치적 기법이나 소프트웨어로 계산할 수 있습니다.

MATLAB에서는 expm(A*t) 함수를 사용해 쉽게 계산할 수 있습니다.

  상태천이행렬 계산 예제

▶  예제 문제

A = 
[0 1; 
-2 -3]

이 행렬 A에 대한 상태천이행렬 Φ(t)를 구해봅시다.

STEP 1 – 라플라스 변환

상태천이행렬은 다음 라플라스 역변환을 통해 얻습니다:

Φ(s) = (sI - A)^(-1)

STEP 2 – sI – A 계산

sI - A = 
[s - 0    -1
  2     s + 3]

STEP 3 – 역행렬 구하기

행렬의 역행렬을 구하고, 부분분수 전개 후 라플라스 역변환을 취하면 다음과 같은 형태의 Φ(t)를 얻습니다.

Φ(t) = e^(At) = c₁·e^(λ₁t) + c₂·e^(λ₂t)

여기서 λ₁, λ₂는 고유값(Eigenvalues)입니다.

상태천이행렬의 특성

  Φ(0) = I: t=0일 때는 항등행렬

  Φ(t₁ + t₂) = Φ(t₁)·Φ(t₂): 시간 누적 성질을 가지는 게 특징

  Φ⁻¹(t) = Φ(-t): 역행렬은 음의 시간에서의 상태천이행렬

  dΦ(t)/dt = A·Φ(t): 미분하면 다시 A와 곱해진 형태

이러한 특성은 상태방정식을 해석하거나 제어기를 설계할 때 매우 유용하게 활용됩니다.

자주 묻는 질문

상태방정식과 전달함수는 어떻게 다른가요?

전달함수는 주로 입력과 출력 사이의 관계만을 표현하며, 시스템의 내부 상태를 알 수 없습니다.

반면에 상태방정식은 시스템의 내부 동작까지 포함하여 모델링하므로 다변수 시스템(MIMO)에 훨씬 적합합니다.

상태천이행렬은 어떤 상황에서 사용되나요?

주로 입력 신호가 0일 때 시스템의 자유응답(free response)을 구할 때 사용됩니다.

또한, 시스템의 안정성을 분석하거나, 초기조건에 따른 상태변화를 계산할 때도 필수적으로 사용됩니다.

Φ(t) = e^(At)는 어떻게 계산하나요?

행렬 A의 지수함수는 일반적으로 직접 계산하기 어렵기 때문에, 아래와 같은 방법들을 사용합니다. 

  멱급수(Maclaurin series) 전개

  고유값 분해(Eigendecomposition)

  라플라스 변환을 통한 역변환

  수치 계산 도구 사용 (ex. MATLAB: expm(A*t))

요즘은 대부분 MATLAB, Python(scipy) 등의 도구를 이용하여 간편하게 계산합니다.

제어공학 시험에 자주 나오는 포인트는?

2024~2025년 기출 문제 경향을 보면 다음과 같은 항목들이 자주 출제됩니다.

  상태방정식에서 A, B, C, D 행렬 추출하기

  상태방정식으로부터 전달함수 구하기

  Φ(t) 계산 문제 (특히 2×2, 3×3 행렬)

  시스템의 안정성 분석 (고유값의 실수부 판단)

실제 계산 문제뿐 아니라 개념 문제도 출제되므로 원리부터 잘 이해해두는 것이 좋습니다.

▶국민배움카드 지원대상 신청방법

관련 글

결론

이번 포스팅에서는 제어공학 상태방정식 상태천이행렬 대해서 자세히 알아보았습니다.

처음에는 다소 복잡하고 생소할 수 있지만, 행렬의 개념과 미분방정식을 연결지어 생각하면 훨씬 이해가 쉬워질 것이라고 생각합니다. 

저도 처음에는 조금은 헷갈렸는데, 하나 하나 공부하고 예제를 통해서 확인을 해보니까 조금은 알아가는 과정인거 같습니다. 

위에서 설명 드린 내용과 예제 그리고 추가적으로 다른 도서를 통해서 공부를 해보시는 걸 추천 드립니다. 

감사합니다. 

Leave a Comment