Linear systems

Jeongsu Ahn·2025년 7월 20일

ControlBootcamp

목록 보기
1/7

Reference: Prof Steve Brunton, Control Bootcamp
Youtube Link


Linear Systems (선형 시스템)

제어 입력이 없는 선형 시스템을 고려하자:

x˙=Ax\dot{x} = Ax
where ARn×n,xRn\text{where } A \in \mathbb{R}^{n \times n}, \quad x \in \mathbb{R}^n

이 미분방정식의 일반해는 다음과 같이 표현된다:

x(t)=eAtx(0)x(t) = e^{At}x(0)

여기서 행렬 지수함수 eAte^{At}는 Taylor 급수로 전개할 수 있다:

eAt=I+At+A2t22!+A3t33!+e^{At} = I + At + \frac{A^2t^2}{2!} + \frac{A^3t^3}{3!} + \cdots

Eigenvalues & Eigenvectors (고유값과 고유벡터)

시스템 행렬 AA의 고유값과 고유벡터는 다음 관계를 만족한다:

Aξ=λξA\xi=\lambda\xi

고유벡터들을 열벡터로 하는 변환행렬 TT와 고유값들의 대각행렬 DD를 정의하면:

T=[ξ1,ξ2,,ξn]T = [\xi_1, \xi_2, \ldots, \xi_n]
D=[λ1000λ2000λn]D = \begin{bmatrix} \lambda_1 & 0 & \cdots & 0 \\ 0 & \lambda_2 & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & \lambda_n \end{bmatrix}

이들 사이의 관계는:

An×nTn×n=Tn×nDn×n\underset{n \times n}{A} \underset{n \times n}{T} = \underset{n \times n}{T} \underset{n \times n}{D}

여기서:

  • ARn×nA \in \mathbb{R}^{n \times n}: 원래 시스템 행렬
  • ξiRn×1\xi_i \in \mathbb{R}^{n \times 1}: ii번째 고유벡터
  • TRn×nT \in \mathbb{R}^{n \times n}: 고유벡터들로 구성된 변환행렬
  • DRn×nD \in \mathbb{R}^{n \times n}: 고유값들의 대각행렬
  • λi\lambda_i: ii번째 고유값

좌표 변환을 통한 시스템 분리

새로운 좌표 z=T1xz = T^{-1}x를 도입하면:

x˙=Tz˙=Ax=ATz\dot{x} = T\dot{z} = Ax = ATz

양변에 T1T^{-1}을 곱하면:

z˙=T1ATz\dot{z} = T^{-1}ATz

앞서 유도한 관계식 AT=TDAT = TD에서 T1AT=DT^{-1}AT = D이므로:

z˙=Dz\dot{z} = Dz

이는 각 상태 변수가 독립적으로 분리된 시스템을 의미한다:

ddt[z1z2zn]=[λ1000λ2000λn][z1z2zn]\frac{d}{dt}\begin{bmatrix} z_1 \\ z_2 \\ \vdots \\ z_n \end{bmatrix} = \begin{bmatrix} \lambda_1 & 0 & \cdots & 0 \\ 0 & \lambda_2 & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & \lambda_n \end{bmatrix} \begin{bmatrix} z_1 \\ z_2 \\ \vdots \\ z_n \end{bmatrix}

핵심: 고유값 분해를 통해 복잡한 다변수 시스템을 독립적인 1차 시스템들의 조합으로 분석할 수 있다.

분리된 시스템의 해는:

z(t)=eDtz(0)=[eλ1t000eλ2t000eλnt]z(0)z(t) = e^{Dt}z(0) = \begin{bmatrix} e^{\lambda_1 t} & 0 & \cdots & 0 \\ 0 & e^{\lambda_2 t} & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & e^{\lambda_n t} \end{bmatrix} z(0)

Proof (증명)

앞서 유도한 관계식들을 이용하여 해의 형태를 증명해보자.

고유값 분해로부터:

AT=TDA=TDT1AT=TD \quad \Rightarrow \quad A = TDT^{-1}

행렬 지수함수에 대입하면:

eAt=eTDT1te^{At} = e^{TDT^{-1}t}

Taylor 급수에 적용하면:

eTDT1t=I+TDT1t+(TDT1)2t22!+(TDT1)3t33!+e^{TDT^{-1}t} = I + TDT^{-1}t + \frac{(TDT^{-1})^2t^2}{2!} + \frac{(TDT^{-1})^3t^3}{3!} + \cdots

행렬의 거듭제곱을 계산해보자. TT1=ITT^{-1} = I이므로:

(TDT1)2=TDT1TDT1=TD2T1(TDT^{-1})^2 = TDT^{-1}TDT^{-1} = TD^2T^{-1}
(TDT1)3=TD3T1(TDT^{-1})^3 = TD^3T^{-1}

일반적으로 (TDT1)n=TDnT1(TDT^{-1})^n = TD^nT^{-1}이므로:

eTDT1t=T[I+Dt+D2t22!+D3t33!+]T1e^{TDT^{-1}t} = T\left[I + Dt + \frac{D^2t^2}{2!}+ \frac{D^3t^3}{3!} + \cdots\right]T^{-1}

대괄호 안은 eDte^{Dt}이므로:

eAt=TeDtT1e^{At} = Te^{Dt}T^{-1}

따라서 원래 시스템의 해는:

x(t)=eAtx(0)=TeDtT1x(0)x(t) = e^{At}x(0) = Te^{Dt}T^{-1}x(0)

좌표 변환 관계 x=Tzx = Tz, z(0)=T1x(0)z(0) = T^{-1}x(0)를 이용하면:

x(t)=TeDtT1x(0)z(0)z(t)x(t)x(t) = \underbrace{T\underbrace{ e^{Dt} \underbrace{T^{-1}x(0)}_{z(0)}}_{z(t)}}_{x(t)}

Numerical Example (수치 예제)

시스템 정의

A=[0123],x(0)=[10]A = \begin{bmatrix} 0 & 1 \\ -2 & -3 \end{bmatrix}, \quad x(0) = \begin{bmatrix} 1 \\ 0 \end{bmatrix}

고유값 분해

MATLAB에서 [T, D] = eig(A)를 실행하면:

D=[1002],T=[0.70710.44720.70710.8944]D = \begin{bmatrix} -1 & 0 \\ 0 & -2 \end{bmatrix}, \quad T = \begin{bmatrix} 0.7071 & -0.4472 \\ -0.7071 & 0.8944 \end{bmatrix}

안정성 분석: 모든 고유값이 음수이므로 시스템은 안정하다. 즉, 시간이 흐르면서 상태가 0으로 수렴한다.

해의 검증

다음 세 가지 방법으로 동일한 결과를 얻을 수 있다:

  1. 직접 계산: x(t)=eAtx(0)x(t) = e^{At}x(0)
  2. 고유값 분해: x(t)=TeDtT1x(0)x(t) = Te^{Dt}T^{-1}x(0)
  3. 수치 적분: ode45(@(t,x) A*x, [0,10], x0)

MATLAB 코드

% Linear System Solution: x_dot = Ax
clear; clc;

% Define system matrix A
A = [0 1; -2 -3];  % Example 2x2 system matrix
x0 = [1; 0];       % Initial condition
t = linspace(0, 10, 100);  % Time vector

% Method 1: Using eigenvalue decomposition
[T, D] = eig(A);
x_analytical = zeros(2, length(t));
for i = 1:length(t)
    x_analytical(:, i) = T * expm(D * t(i)) * inv(T) * x0;
end

% Method 2: Using matrix exponential directly
x_direct = zeros(2, length(t));
for i = 1:length(t)
    x_direct(:, i) = expm(A * t(i)) * x0;
end

% Method 3: Numerical integration for verification
[t_ode, x_ode] = ode45(@(t, x) A*x, [0, 10], x0);

% Plot results
figure;
plot(t, x_analytical(1,:), 'r-', 'LineWidth', 2); hold on;
plot(t, x_analytical(2,:), 'b-', 'LineWidth', 2);
plot(t_ode, x_ode(:,1), 'ro', 'MarkerSize', 4);
plot(t_ode, x_ode(:,2), 'bo', 'MarkerSize', 4);
xlabel('Time (s)'); ylabel('State'); 
legend('x_1 (analytical)', 'x_2 (analytical)', ...
       'x_1 (numerical)', 'x_2 (numerical)');
title('Linear System Response');
grid on;

결론

고유값 분해를 통해 다음을 확인할 수 있다:

  • 복잡한 다변수 시스템을 독립적인 1차 시스템들로 분해 가능
  • 시스템의 안정성은 고유값의 부호로 판단
  • 해석적 해와 수치적 해가 일치함을 검증
profile
될 때까지 하는 사람

0개의 댓글