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

Modal Canonical Form
1. 대상 시스템
상태공간 모델을 다음과 같이 설정한다.
1 0 ]
0 ]
Python control library에서 상태공간 시스템을 생성한다.
2. State Space → Transfer Function
상태공간 모델을 전달함수로 변환한 결과는 다음과 같다.
분모를 인수분해하면
따라서 pole은
3. Eigenvalue
상태행렬 A의 eigenvalue를 계산한다.
Python 계산 결과는
이다.
4. Eigenvector
Python의 numpy.linalg.eig()를 이용하여 eigenvector를 계산한 결과는 다음과 같다.
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이 제대로 계산되었는지 확인한다.
Python 계산 결과
0 1 ]
실제 계산에서는 부동소수점 오차로 약 4.44×10-16 수준의 매우 작은 값이 나타난다.
6. Eigenvalue / Eigenvector 관계 확인
Eigenvalue와 eigenvector의 기본 관계는
이다.
여러 eigenvector를 matrix X로 묶으면
로 표현할 수 있다.
0 -3 ]
Python에서 계산한
결과는
-0.9701425 0.9486833 ]
이며,
계산 결과도 동일하게
-0.9701425 0.9486833 ]
이다.
7. Modal Canonical Form
앞의 관계
의 양변 왼쪽에 X-1을 곱하면
가 된다.
Python 계산 결과
0 -3 ]
매우 작은 수치 오차를 0으로 보면
0 -3 ]
8. Similarity Transformation
상태변수를 eigenvector matrix X를 이용하여 새로운 좌표계로 변환한다.
또는
원래 상태방정식
에 x = Xz를 대입하면
양변에 X-1을 곱하면
따라서
출력방정식도
에서
로 변환된다.
9. Modal State Matrix
변환 전 State Matrix는
1 0 ]
이다.
Modal Transformation 후에는
0 -3 ]
10. Modal Equation
Modal State Matrix가 diagonal이므로 상태방정식은 각 mode별로 분리할 수 있다.
0 -3 ] z + Bmu
상태방정식을 개별적으로 쓰면
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. 핵심 기억 문장
- State Matrix A의 eigenvalue는 시스템의 pole과 연결된다.
- Eigenvalue와 eigenvector는 Ax = λx 관계를 만족한다.
- Eigenvector를 column으로 모으면 AX = XΛ가 된다.
- X가 가역이면 X⁻¹AX = Λ로 변환할 수 있다.
- Modal Canonical Form에서 Λ의 대각성분은 eigenvalue이다.
- 상태좌표를 x = Xz로 변환하면 원래 상태변수 대신 modal state z를 사용한다.
- Modal State Matrix가 diagonal이면 각 mode의 동특성을 개별적으로 확인할 수 있다.