카테고리
산업계측제어기술사

Modal Canonical Form

강의 영상을 보다 eigenvector가 이상하여 확인을 python으로 해보았다.

“`html

Modal Canonical Form

State Space · Eigenvalue · Eigenvector · Similarity Transformation · Modal Canonical Form

1. 대상 시스템

상태공간 모델을 다음과 같이 설정한다.

A = [ -7    -12
1      0 ]
B = [ 1
0 ]
C = [ 1    2 ]
D = 0

Python control library에서 상태공간 시스템을 생성한다.

sys = ss(A, B, C, D)

2. State Space → Transfer Function

상태공간 모델을 전달함수로 변환한 결과는 다음과 같다.

G(s) = Y(s) / U(s)
G(s) = (s + 2) / (s2 + 7s + 12)

분모를 인수분해하면

s2 + 7s + 12 = (s+3)(s+4)

따라서 pole은

s = -3, -4

3. Eigenvalue

상태행렬 A의 eigenvalue를 계산한다.

det(λI – A) = 0

Python 계산 결과는

λ1 = -4
λ2 = -3

이다.

State Matrix A의 eigenvalue는 전달함수의 pole -4, -3과 일치한다.

4. Eigenvector

Python의 numpy.linalg.eig()를 이용하여 eigenvector를 계산한 결과는 다음과 같다.

X = [ -0.9701425     0.9486833
0.24253563   -0.31622777 ]

각 column이 각각의 eigenvalue에 대응하는 eigenvector이다.

Eigenvalue Eigenvector
λ = -4 [-0.9701425, 0.24253563]T
λ = -3 [0.9486833, -0.31622777]T

5. Eigenvector Matrix의 역행렬 확인

Eigenvector matrix를 X라고 하면 역행렬 X-1이 제대로 계산되었는지 확인한다.

X-1X = I

Python 계산 결과

X-1X ≈ [ 1    0
0    1 ]

실제 계산에서는 부동소수점 오차로 약 4.44×10-16 수준의 매우 작은 값이 나타난다.

6. Eigenvalue / Eigenvector 관계 확인

Eigenvalue와 eigenvector의 기본 관계는

Ax = λx

이다.

여러 eigenvector를 matrix X로 묶으면

AX = XΛ

로 표현할 수 있다.

Λ = [ -4    0
0    -3 ]

Python에서 계산한

AX

결과는

[ 3.88057    -2.84604989
-0.9701425    0.9486833 ]

이며,

XΛ

계산 결과도 동일하게

[ 3.88057    -2.84604989
-0.9701425    0.9486833 ]

이다.

AX = XΛ 관계가 수치적으로 확인된다.

7. Modal Canonical Form

앞의 관계

AX = XΛ

의 양변 왼쪽에 X-1을 곱하면

X-1AX = Λ

가 된다.

Python 계산 결과

X-1AX = [ -4    1.776×10-15
0    -3 ]

매우 작은 수치 오차를 0으로 보면

X-1AX ≈ [ -4    0
0    -3 ]
= Λ
Modal Canonical Form에서는 State Matrix A가 eigenvalue를 대각성분으로 갖는 diagonal matrix Λ로 변환된다.

8. Similarity Transformation

상태변수를 eigenvector matrix X를 이용하여 새로운 좌표계로 변환한다.

x = Xz

또는

z = X-1x

원래 상태방정식

ẋ = Ax + Bu

에 x = Xz를 대입하면

Xż = AXz + Bu

양변에 X-1을 곱하면

ż = X-1AXz + X-1Bu

따라서

ż = Λz + Bmu
Bm = X-1B

출력방정식도

y = Cx + Du

에서

y = CXz + Du

로 변환된다.

Cm = CX

9. Modal State Matrix

변환 전 State Matrix는

A = [ -7    -12
1      0 ]

이다.

Modal Transformation 후에는

Am = X-1AX
Am = [ -4    0
0    -3 ]
원래 서로 결합되어 있던 상태방정식을 eigenvector 좌표계로 변환하면 각 mode가 대각성분으로 분리된다.

10. Modal Equation

Modal State Matrix가 diagonal이므로 상태방정식은 각 mode별로 분리할 수 있다.

ż = [ -4    0
0    -3 ] z + Bmu

상태방정식을 개별적으로 쓰면

ż1 = -4z1 + bm1u
ż2 = -3z2 + bm2u
Modal Canonical Form은 다변수 상태방정식을 각 eigenvalue에 대응하는 독립적인 mode 형태로 표현한다.

11. 이미지와 Python 계산 결과

항목 결과
Transfer Function (s+2)/(s²+7s+12)
State Matrix A [-7 -12; 1 0]
Eigenvalue -4, -3
Eigenvector Matrix X [-0.9701 0.9487; 0.2425 -0.3162]
Eigenvector 관계 AX = XΛ
Modal Transformation X⁻¹AX = Λ
Modal Matrix [-4 0; 0 -3]

12. 핵심 기억 문장

  1. State Matrix A의 eigenvalue는 시스템의 pole과 연결된다.
  2. Eigenvalue와 eigenvector는 Ax = λx 관계를 만족한다.
  3. Eigenvector를 column으로 모으면 AX = XΛ가 된다.
  4. X가 가역이면 X⁻¹AX = Λ로 변환할 수 있다.
  5. Modal Canonical Form에서 Λ의 대각성분은 eigenvalue이다.
  6. 상태좌표를 x = Xz로 변환하면 원래 상태변수 대신 modal state z를 사용한다.
  7. Modal State Matrix가 diagonal이면 각 mode의 동특성을 개별적으로 확인할 수 있다.
Modal Canonical Form, State Space, Eigenvalue, Eigenvector, Similarity Transformation, Diagonalization, State Matrix, Modal Matrix, AX=XΛ, X^-1AX=Λ
“`

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 사이트는 Akismet을 사용하여 스팸을 줄입니다. 댓글 데이터가 어떻게 처리되는지 알아보세요.