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

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

by 깊은대학 2022. 12. 24.

행렬 ARn×n 의 행렬지수함수(matrix exponential) eAt 는 다음과 같이 정의된다.

 

(1)eAt=I+At+12A2t2+13!A3t3+

 

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

 

 

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

 

(2)A=[λ1000λ2000λ3]

 

이 때는

 

(3)An=[λ1n000λ2n000λ3n]

 

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

 

(4)eAt=[eλ1t000eλ2t000eλ3t]

 

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

 

(5)A=[λ100λ100λ]

 

 

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

 

(6)A=λI+NN=[010001000]

 

eAt 는 다음과 같이 쓸 수 있다.

 

(7)eAt=e(λI+N)t=eλteNt

 

그런데 여기서

 

(8)N2=[001000000],  N3=N4=N5==0

 

이므로 식 (1)에 의해서

 

(9)eNt=I+Nt+12N2t2=[1tt2201t001]

 

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

 

(10)eAt=[eλtteλtt22eλt0eλtteλt00eλt]

 

행렬이 n×n 경우는 다음과 같다.

 

(11)A=[λ1λ1λ1λ]eAt=[eλtteλtt22eλttnn!eλt0eλtteλttn1(n1)!eλt000teλt000eλt]

 

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

 

(12)A=[σωωσ]

 

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

 

(13)A=[σ00σ]+[0ωω0]=σI+S

 

eAt 는 다음과 같이 쓸 수 있다.

 

(14)eAt=e(σI+S)t=eσteSt

 

그런데 여기서

 

(15)S2=ω2IS3=ω2SS4=ω2S2=ω4IS5=ω4S     

 

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

 

(16)eSt=[1ω2t22+ω4t44!ωtω3t33!+ω5t55!(ωtω3t33!+ω5t55!)1ω2t22+ω4t44!]=[cos(ωt)sin(ωt)sin(ωt)cos(ωt)]

 

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

 

(17)eAt=eσt[cos(ωt)sin(ωt)sin(ωt)cos(ωt)]

 

 

 

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

 

(18)A=TBT1

 

두 행렬 AB 가 상사관계에 있다면 두 행렬의 지수함수도 상사관계에 있게 된다. 즉,

 

(19)TeBtT1=T(I+Bt+12B2t2+13!B3t3+)T1=TT1+TBT1t+12TB2T1t2+13!TB3T1t3+=I+At+12A2t2+13!A3t3+=eAt

 

위 식에서

 

A2=(TBT1)(TBT1)=TB2T1A3=(TBT1)(TBT1)(TBT1)=TB3T1

 

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

행렬 ARn×n의 고유값(eigenvalue)은 중복된 값을 포함하여 n 개가 나온다. 일단 고유값이 중복된 값 없이 n 개가 모두 다른 값인 λ1, λ2, ..., λnC 인 것으로 가정한다. 그러면 n 개의 고유값에 대응하는 서로 다른 n 개의 고유벡터 v1, v2, ..., vn 을 구할 수 있다.

 

(20)Avi=λivi

 

위 식을 풀어쓰면,

 

(21)A[v1v2vn]=[v1v2vn][λ1λ2λn]

 

또는

 

AT=TΛ

 

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

 

(22)eAt=T[eλ1teλ2teλnt]T1

 

 

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

 

(23)λ1,2=σ±jω,   v1,2=vR±jvI

 

식 (20)에 의해서

 

(24)A[vR+jvI]=(σ+jω)[vR+jvI]=(σvRωvI)+j(ωvR+σvI)A[vRjvI]=(σjω)[vRjvI]=(σvRωvI)j(ωvR+σvI)

 

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

 

(25)A[vRvI]=[vRvI][σωωσ]

 

또는

 

AT=TA0

 

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

 

(26)eAt=eσtT[cos(ωt)sin(ωt)sin(ωt)cos(ωt)]T1

 

 

 

만약 행렬 A 의 고유값이 중복된 값을 갖는다면 이에 해당하는 선형 독립인 고유벡터를 몇 개 얻을 수 있는지 따져봐야 한다. 예를 들어서 행렬 AR3×3 가 3개의 중복된 고유값 λm 를 갖는다고 할 때, 이 고유값에 해당하는 고유벡터가 v1 밖에 없다면,

 

(27)Av1=λmv1

 

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

 

(28)Av2=λmv2+v1Av3=λmv3+v2

 

그러면

 

(29)A[v1v2v3]=[v1v2v3][λm100λm100λm]AT=TJ

 

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

 

(30)eAt=T[eλmtteλmtt22eλmt0eλmtteλmt00eλmt]T1

 

만약 고유값에 해당하는 고유벡터가 v1, v2 등 2개가 있다면,

 

(31)Av1=λmv1Av2=λmv2

 

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

 

(32)Av3=λmv3+v2

 

그러면

 

(33)A[v1v2v3]=[v1v2v3][λm000λm100λm]AT=TJd

 

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

 

(34)eAt=T[eλmt000eλmtteλmt00eλmt]T1

 

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

 

(35)A[v1v2v3]=[v1v2v3][λm000λm000λm]AT=TJd

 

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

 

(36)eAt=T[eλmt000eλmt000eλmt]T1=eλmtI

 

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

 

 

댓글