본문 바로가기
유도항법제어/비행제어

행렬지수함수 (Matrix Exponential) 계산

by 세인트 워터멜론 2022. 12. 24.

행렬 \( A \in \mathbb{R}^{n \times n}\) 의 행렬지수함수(matrix exponential) \(e^{At}\) 는 다음과 같이 정의된다.

 

\[ e^{At}=I+At+\frac{1}{2} A^2 t^2+\frac{1}{3!} A^3 t^3 + \cdots \tag{1} \]

 

몇가지 특별한 형식을 갖는 행렬 \(A\) 의 지수함수를 계산해보고, 일반적인 행렬에 대한 계산으로 확장시켜 보도록 한다.

 

 

먼저 \(A\) 가 대각행렬일 경우다.

 

\[ A= \begin{bmatrix} \lambda_1 & 0 & 0 \\ 0 & \lambda_2 & 0 \\ 0 & 0 & \lambda_3\end{bmatrix} \tag{2} \]

 

이 때는

 

\[ A^n= \begin{bmatrix} \lambda_1^n & 0 & 0 \\ 0 & \lambda_2^n & 0 \\ 0 & 0 & \lambda_3^n \end{bmatrix} \tag{3} \]

 

이므로 식 (3)을 (1)에 대입하면 다음과 같이 된다.

 

\[ e^{At}= \begin{bmatrix} e^{\lambda_1 t} & 0 & 0 \\ 0 & e^{\lambda_2 t} & 0 \\ 0 & 0 & e^{\lambda_3 t} \end{bmatrix} \tag{4} \]

 

다음은 A가 조단 표준형(Jordan canonical form)일 경우다.

 

\[ A= \begin{bmatrix} \lambda & 1 & 0 \\ 0 & \lambda & 1 \\ 0 & 0 & \lambda \end{bmatrix} \tag{5} \]

 

 

조단형은 다음과 같이 분리할 수 있으므로,

 

\[ \begin{align} & A = \lambda I +N \tag{6} \\ \\ & N = \begin{bmatrix} 0 & 1 & 0 \\ 0 & 0 & 1 \\ 0 & 0 & 0 \end{bmatrix} \end{align} \]

 

\(e^{At}\) 는 다음과 같이 쓸 수 있다.

 

\[ e^{At}=e^{(\lambda I+N)t}=e^{\lambda t} e^{Nt} \tag{7} \]

 

그런데 여기서

 

\[ N^2= \begin{bmatrix} 0 & 0 & 1 \\ 0 & 0 & 0 \\ 0 & 0 & 0 \end{bmatrix}, \ \ N^3=N^4=N^5= \cdots =0 \tag{8} \]

 

이므로 식 (1)에 의해서

 

\[ e^{Nt}=I+Nt+ \frac{1}{2} N^2 t^2 = \begin{bmatrix} 1 & t & \frac{t^2}{2} \\ 0 & 1 & t \\ 0 & 0 & 1 \end{bmatrix} \tag{9} \]

 

이 된다. 식 (7)과 (9)에 의하면, 조던 표준형의 행렬지수함수는 다음과 같이 된다.

 

\[ e^{At}= \begin{bmatrix} e^{\lambda t} & t e^{\lambda t} & \frac{t^2}{2} e^{\lambda t} \\ 0 & e^{\lambda t} & t e^{\lambda t} \\ 0 & 0 & e^{\lambda t} \end{bmatrix} \tag{10} \]

 

행렬이 \(n \times n\) 경우는 다음과 같다.

 

\[ \begin{align} & A = \begin{bmatrix} \lambda & 1 & & & \\ & \lambda & 1 & & \\ & & \ddots & & \\ & & & \lambda & 1 \\ & & & & \lambda \end{bmatrix} \tag{11} \\ \\ & e^{At}= \begin{bmatrix} e^{\lambda t} & t e^{\lambda t} & \frac{t^2}{2} e^{\lambda t} & \cdots & \frac{t^n}{n!} e^{\lambda t} \\ 0 & e^{\lambda t} & t e^{\lambda t} & \cdots & \frac{t^{n-1}}{(n-1)!} e^{\lambda t} \\ & & \ddots & & \\ 0 & 0 & 0 & \cdots & t e^{\lambda t} \\ 0 & 0 & 0 & \cdots & e^{\lambda t} \end{bmatrix} \end{align} \]

 

마지막으로 \(A\) 가 복소수 \(\lambda =\sigma +j \omega \) 의 실수부와 허수부로 이루어진 수정 표준형(modified canonical form)인 경우다.

 

\[ A = \begin{bmatrix} \sigma & \omega \\ -\omega & \sigma \end{bmatrix} \tag{12} \]

 

이 경우는 다음과 같이 대칭행렬과 반대칭(skew-symmetric) 행렬로 분리할 수 있으므로

 

\[ \begin{align} A &= \begin{bmatrix} \sigma & 0 \\ 0 & \sigma \end{bmatrix} + \begin{bmatrix} 0 & \omega \\ -\omega & 0 \end{bmatrix} \tag{13} \\ \\ &= \sigma I +S \end{align} \]

 

\(e^{At}\) 는 다음과 같이 쓸 수 있다.

 

\[ e^{At}=e^{(\sigma I +S)t}=e^{\sigma t} e^{St} \tag{14} \]

 

그런데 여기서

 

\[ \begin{align} & S^2=-\omega^2 I \tag{15} \\ \\ & S^3=-\omega^2 S \\ \\ & S^4=-\omega^2 S^2=\omega^4 I \\ \\ & S^5= \omega^4 S \\ \\ & \ \ \ \ \ \cdots \end{align} \]

 

이므로 식 (1)에 의하면,

 

\[ \begin{align} e^{St} &= \begin{bmatrix} 1-\frac{\omega^2 t^2}{2}+\frac{\omega^4 t^4}{4!}- \cdots & \omega t-\frac{\omega^3 t^3}{3!}+\frac{\omega^5 t^5}{5!}-\cdots \\ -\left( \omega t- \frac{\omega^3 t^3}{3!}+\frac{\omega^5 t^5}{5!}- \cdots \right) & 1-\frac{\omega^2 t^2}{2}+\frac{\omega^4 t^4}{4!}- \cdots \end{bmatrix} \tag{16} \\ \\ &= \begin{bmatrix} \cos⁡ (\omega t) & \sin (\omega t) \\ - \sin (\omega t) & \cos (\omega t) \end{bmatrix} \end{align} \]

 

이 된다. 식 (14)와 (16)에 의하면, 행렬 (12)의 행렬지수함수는 다음과 같이 된다.

 

\[ e^{At} = e^{\sigma t} \begin{bmatrix} \cos⁡ (\omega t) & \sin (\omega t) \\ - \sin (\omega t) & \cos (\omega t) \end{bmatrix} \tag{17} \]

 

 

 

3가지 특별한 구조를 갖는 행렬의 지수함수를 계산해 보았는데 이제 일반적인 행렬 \(A\) 를 이 3가지 구조로 변환하는 방법을 알아보자. 일반적인 행렬은 이 3가지가 혼재돼 있는 구조로 바꿀 수 있다고 보면 된다. 이 때 변환은 상사변환(similarity transformation, 닮음꼴 변환이라고 번역해도 좋을 듯 싶다)을 사용한다. 두 행렬 \(A\) 와 \(B\) 가 다음 관계식을 만족하면 두 행렬은 상사관계에 있다고 한다.

 

\[ A=TBT^{-1} \tag{18} \]

 

두 행렬 \(A\) 와 \(B\) 가 상사관계에 있다면 두 행렬의 지수함수도 상사관계에 있게 된다. 즉,

 

\[ \begin{align} Te^{Bt} T^{-1} &= T \left( I+Bt+\frac{1}{2} B^2 t^2+\frac{1}{3!} B^3 t^3+ \cdots \right) T^{-1} \tag{19} \\ \\ &= TT^{-1}+ TBT^{-1} t+ \frac{1}{2} TB^2 T^{-1} t^2+ \frac{1}{3!} TB^3 T^{-1} t^3+ \cdots \\ \\ &= I+At+\frac{1}{2} A^2 t^2+\frac{1}{3!} A^3 t^3+ \cdots \\ \\ &= e^{At} \end{align} \]

 

위 식에서

 

\[ \begin{align} & A^2=(TBT^{-1} )(TBT^{-1} )=TB^2 T^{-1} \\ \\ & A^3=(TBT^{-1} )(TBT^{-1} )(TBT^{-1} )=TB^3 T^{-1} \\ \\ \cdots \end{align} \]

 

임을 이용하였다. 행렬 \(A\) 를 대각행렬, 조단 표준형, 수정 표준형인 행렬 \(B\) 로 상사변환한다면 \(e^{At}\) 를 식 (19)를 이용해서 쉽게 구할 수 있다.

행렬 \(A \in \mathbb{R}^{n \times n}\)의 고유값(eigenvalue)은 중복된 값을 포함하여 \(n\) 개가 나온다. 일단 고유값이 중복된 값 없이 \(n\) 개가 모두 다른 값인 \( \lambda_1, \ \lambda_2, \ ... , \ \lambda_n \in \mathbb{C}\) 인 것으로 가정한다. 그러면 \(n\) 개의 고유값에 대응하는 서로 다른 \(n\) 개의 고유벡터 \( \mathbf{v}_1, \ \mathbf{v}_2, \ ... , \ \mathbf{v}_n\) 을 구할 수 있다.

 

\[ A \mathbf{v}_i= \lambda_i \mathbf{v}_i \tag{20} \]

 

위 식을 풀어쓰면,

 

\[ A \begin{bmatrix} \mathbf{v}_1 & \mathbf{v}_2 & \cdots & \mathbf{v}_n \end{bmatrix} = \begin{bmatrix} \mathbf{v}_1 & \mathbf{v}_2 & \cdots & \mathbf{v}_n \end{bmatrix} \begin{bmatrix} \lambda_1 & & & \\ & \lambda_2 & & \\ & & \ddots & \\ & & & \lambda_n \end{bmatrix} \tag{21} \]

 

또는

 

\[ AT=T \Lambda \]

 

이 된다. \(\Lambda\) 는 행렬 \(A\) 의 고유값을 성분으로 하는 대각행렬이고 \(T\) 는 고유벡터를 열로 하는 변환행렬이다. 식 (21)에 의하면 \(A\) 와 \(\Lambda\) 는 상사관계에 있으므로 지수함수는 식 (4)에 의해서 다음과 같이 계산할 수 있다.

 

\[ e^{At}= T \begin{bmatrix} e^{\lambda_1 t} & & & \\ & e^{\lambda_2 t} & & \\ & & \ddots & \\ & & & e^{\lambda_n t} \end{bmatrix} T^{-1} \tag{22} \]

 

 

고유값이 만약 복소수라면 고유벡터도 복소벡터가 된다. 이 때는 고유값과 고유벡터를 실수화하는 것이 편리하다. 예를 들어 고유값과 고유벡터가 다음과 같이 켤레복소수로 주어졌다면,

 

\[ \lambda_{1,2} =\sigma \pm j \omega, \ \ \ \mathbf{v}_{1,2}= \mathbf{v}_R \pm j \mathbf{v}_I \tag{23} \]

 

식 (20)에 의해서

 

\[ \begin{align} A [ \mathbf{v}_R+j \mathbf{v}_I ] &= (\sigma+j \omega)[ \mathbf{v}_R+j \mathbf{v}_I ] \tag{24} \\ \\ &=(\sigma \mathbf{v}_R-\omega \mathbf{v}_I )+j (\omega \mathbf{v}_R+ \sigma \mathbf{v}_I) \\ \\ A [ \mathbf{v}_R - j \mathbf{v}_I ] &= (\sigma - j \omega)[ \mathbf{v}_R - j \mathbf{v}_I ] \\ \\ &=(\sigma \mathbf{v}_R-\omega \mathbf{v}_I ) - j (\omega \mathbf{v}_R+ \sigma \mathbf{v}_I) \end{align} \]

 

가 된다. 위 식으로부터 다음 식을 얻을 수 있다.

 

\[ A \begin{bmatrix} \mathbf{v}_R & \mathbf{v}_I \end{bmatrix} = \begin{bmatrix} \mathbf{v}_R & \mathbf{v}_I \end{bmatrix} \begin{bmatrix} \sigma & \omega \\ -\omega & \sigma \end{bmatrix} \tag{25} \]

 

또는

 

\[ AT=TA_0 \]

 

여기서 \(A_0\) 는 행렬 \(A\) 의 고유값의 실수부와 허수부를 성분으로 하는 수정 표준형 행렬이고 \(T\) 는 고유벡터의 실수부 벡터와 허수부 벡터를 열로 하는 변환행렬이다. 식 (25)에 의하면 \(A\) 와 \(A_0\) 는 상사관계에 있으므로 지수함수는 식 (17)에 의해서 다음과 같이 계산할 수 있다.

 

\[ e^{At} = e^{\sigma t} T \begin{bmatrix} \cos (\omega t) & \sin (\omega t) \\ -\sin (\omega t) & \cos (\omega t) \end{bmatrix} T^{-1} \tag{26} \]

 

 

 

만약 행렬 \(A\) 의 고유값이 중복된 값을 갖는다면 이에 해당하는 선형 독립인 고유벡터를 몇 개 얻을 수 있는지 따져봐야 한다. 예를 들어서 행렬 \( A \in \mathbb{R}^{3 \times 3}\) 가 3개의 중복된 고유값 \(\lambda_m\) 를 갖는다고 할 때, 이 고유값에 해당하는 고유벡터가 \(\mathbf{v}_1\) 밖에 없다면,

 

\[ A \mathbf{v}_1= \lambda_m \mathbf{v}_1 \tag{27} \]

 

2개의 일반화(generalized) 고유벡터를 더 구해야 한다.

 

\[ \begin{align} & A \mathbf{v}_2= \lambda_m \mathbf{v}_2 + \mathbf{v}_1 \tag{28} \\ \\ & A \mathbf{v}_3= \lambda_m \mathbf{v}_3 + \mathbf{v}_2 \end{align} \]

 

그러면

 

\[ \begin{align} & A \begin{bmatrix} \mathbf{v}_1 & \mathbf{v}_2 & \mathbf{v}_3 \end{bmatrix} =\begin{bmatrix} \mathbf{v}_1 & \mathbf{v}_2 & \mathbf{v}_3 \end{bmatrix} \begin{bmatrix} \lambda_m & 1 & 0 \\ 0 & \lambda_m & 1 \\ 0 & 0 & \lambda_m \end{bmatrix} \tag{29} \\ \\ & AT=TJ \end{align} \]

 

이 된다. 여기서 \(J\) 는 조단 표준형이다. 이 경우 식 (10)에 의해서 지수함수는 다음과 같이 된다.

 

\[ e^{At}= T \begin{bmatrix} e^{\lambda_mt} & t e^{\lambda_mt} & \frac{t^2}{2} e^{\lambda_mt} \\ 0 & e^{\lambda_mt} & t e^{\lambda_mt} \\ 0 & 0 & e^{\lambda_mt} \end{bmatrix} T^{-1} \tag{30} \]

 

만약 고유값에 해당하는 고유벡터가 \(\mathbf{v}_1, \ \mathbf{v}_2\) 등 2개가 있다면,

 

\[ \begin{align} & A \mathbf{v}_1= \lambda_m \mathbf{v}_1 \tag{31} \\ \\ & A \mathbf{v}_2= \lambda_m \mathbf{v}_2 \end{align} \]

 

1개의 일반화(generalized) 고유벡터를 더 구해야 한다.

 

\[ A \mathbf{v}_3= \lambda_m \mathbf{v}_3 + \mathbf{v}_2 \tag{32} \]

 

그러면

 

\[ \begin{align} & A \begin{bmatrix} \mathbf{v}_1 & \mathbf{v}_2 & \mathbf{v}_3 \end{bmatrix} =\begin{bmatrix} \mathbf{v}_1 & \mathbf{v}_2 & \mathbf{v}_3 \end{bmatrix} \begin{bmatrix} \lambda_m & 0 & 0 \\ 0 & \lambda_m & 1 \\ 0 & 0 & \lambda_m \end{bmatrix} \tag{33} \\ \\ & AT=TJ_d \end{align} \]

 

이 된다. 이 경우 지수함수는 다음과 같이 된다.

 

\[ e^{At}= T \begin{bmatrix} e^{\lambda_mt} & 0 & 0 \\ 0 & e^{\lambda_mt} & t e^{\lambda_mt} \\ 0 & 0 & e^{\lambda_mt} \end{bmatrix} T^{-1} \tag{34} \]

 

만약 고유값에 해당하는 고유벡터를 3개 모두 구할 수 있다면,

 

\[ \begin{align} & A \begin{bmatrix} \mathbf{v}_1 & \mathbf{v}_2 & \mathbf{v}_3 \end{bmatrix} =\begin{bmatrix} \mathbf{v}_1 & \mathbf{v}_2 & \mathbf{v}_3 \end{bmatrix} \begin{bmatrix} \lambda_m & 0 & 0 \\ 0 & \lambda_m & 0 \\ 0 & 0 & \lambda_m \end{bmatrix} \tag{35} \\ \\ & AT=TJ_d \end{align} \]

 

이 되어서 지수함수는 다음과 같이 된다.

 

\[ e^{At}= T \begin{bmatrix} e^{\lambda_mt} & 0 & 0 \\ 0 & e^{\lambda_mt} & 0 \\ 0 & 0 & e^{\lambda_mt} \end{bmatrix} T^{-1} = e^{\lambda_m t} I \tag{36} \]

 

행렬 \(A\) 의 중복된 고유값이 가질 수 있는 선형 독립인 고유벡터 갯수는 \( nullity(\lambda_m I-A)\) 에 달려있다. Nullity는 영공간(null space)의 차원이다.

 

 

댓글