분류
1. 개요
Cayley-Hamilton theorem
1을 갖는 가환환 위의 n차 정사각행렬은 차수가 n인 특수한 방정식의 해가 된다는 정리이다. 이름은 아서 케일리와 윌리엄 로원 해밀턴의 이름에서 따왔다.
이 방정식은 선형대수학을 대학 수준에서 조금이라도 배웠으면 친숙할, 행렬의 특성방정식이다. 행렬의 고윳값이 해가 되기에 고윳값 문제만 나오면 학생들이 닥치고 푸는 [math(text{det}(lambda I-A)=0)] (행렬 [math(A)]의 특성방정식) 말이다. 여기에 복소수 스칼라 [math(lambda)] 대신 자기 자신의 행렬 [math(A)]를 넣어도 방정식이 성립한다는 정리다. 물론 변수를 스칼라 대신 행렬을 넣었으므로 숫자 0도 영행렬로 바꿔야 한다.
증명을 [math(text{det}(lambda I-A)=0)]에서 [math(lambda)] 대신 [math(A)]를 넣고 [math(text{det}(A-A)=0)]이니 성립한다고 하면 교수님한테 털릴 것이다. 원래 방정식의 [math(lambda)]는 스칼라인데 행렬을 무턱대고 넣으면 탈이 나는 법.[1] 애초에 [math(text{det}(lambda I-A)=0)]의 [math(0)]은 스칼라 [math(0)]이고 특성방정식에 [math(A)]를 대입해서 나오는 [math(O)]은 영행렬이니 혼동하면 안된다. 이 증명이 틀린 이유에 대해서는 여기의 27페이지를, 엄밀한 증명은 이곳을 참조.
1을 갖는 가환환 위의 n차 정사각행렬은 차수가 n인 특수한 방정식의 해가 된다는 정리이다. 이름은 아서 케일리와 윌리엄 로원 해밀턴의 이름에서 따왔다.
이 방정식은 선형대수학을 대학 수준에서 조금이라도 배웠으면 친숙할, 행렬의 특성방정식이다. 행렬의 고윳값이 해가 되기에 고윳값 문제만 나오면 학생들이 닥치고 푸는 [math(text{det}(lambda I-A)=0)] (행렬 [math(A)]의 특성방정식) 말이다. 여기에 복소수 스칼라 [math(lambda)] 대신 자기 자신의 행렬 [math(A)]를 넣어도 방정식이 성립한다는 정리다. 물론 변수를 스칼라 대신 행렬을 넣었으므로 숫자 0도 영행렬로 바꿔야 한다.
증명을 [math(text{det}(lambda I-A)=0)]에서 [math(lambda)] 대신 [math(A)]를 넣고 [math(text{det}(A-A)=0)]이니 성립한다고 하면 교수님한테 털릴 것이다. 원래 방정식의 [math(lambda)]는 스칼라인데 행렬을 무턱대고 넣으면 탈이 나는 법.[1] 애초에 [math(text{det}(lambda I-A)=0)]의 [math(0)]은 스칼라 [math(0)]이고 특성방정식에 [math(A)]를 대입해서 나오는 [math(O)]은 영행렬이니 혼동하면 안된다. 이 증명이 틀린 이유에 대해서는 여기의 27페이지를, 엄밀한 증명은 이곳을 참조.
2. 고등학교에서의 케일리-해밀턴 정리
행렬 문제를 좀 더 쉽게 풀 수 있는 꼼수의 일종.
2차 정사각행렬의 경우는 이렇다.
[math( A = begin{bmatrix} a quad b \ c quad d end{bmatrix} )]로 두면,
[math( A^{2} - left(a+dright)A + left(ad - bcright) E = O )] 라고 학생들은 기억하고 있다. 고등학교 수학에서 행렬의 연산은 거의 2차 정사각행렬만 다루므로 이렇게만 기억하면 된다. 의외로 많은 학생들이 모르는 사실이지만 이 수식은 로피탈 정리와 마찬가지로 교육과정에서 다루지 않는 내용[6]이다. 대부분 교과서보다는 주로 참고서 위주로 공부하다보니, 이 식이 참고서에 있어서 교육과정 중 하나로 생각하는 학생들이 많은 편. 못 믿겠다면 지금 수학1(2007개정) 교과서를 펴서 확인해보자. 교과서 어디에도 이 수식은 나와있지 않을 뿐더러 나온다 하더라도 쉬어가는 페이지에서 헤밀턴이란 수학자를 소개함과 동시에 짤막하게 언급되는 정도로만 등장할 것이다.
애초에 이 식은 행렬 그 자체보단 대학교에서 더 포괄적인 수식들(특성방정식)을 풀 때 쓰기에, 특성방정식 자체를 다루지 않는 고등학교에서는 설명이 불가능하다. 쉽게 말해서 이제 막 방정식의 개념과 1차 방정식 풀이법을 배우는 중1 학생들에게 2차 방정식 근의 공식을 증명해줄 수 없는 것과 같다.
실제로 교육과정에 없는 정리이다보니 삽자루 등 몇몇 인강강사들은 케일리-해밀턴 정리를 아예 가르치지 않는다. 특히 선행학습을 굉장히 극혐하는 삽자루는 케일리-해밀턴 얘기만 나오면 욕을 남발하는 것으로 유명하다. 다만 내신 시험에서는 학교 선생님의 취향에 따라 케일리-해밀턴 정리를 풀이 과정에 서술해도 눈감아 주거나 아예 케일리-해밀턴 정리만을 위한 문제가 종종 나오기도 한다.보통 [math(left(a+dright))]의 최솟값이나 [math(left(ad-bcright))]의 최댓값을 물어보는 문제가 출제되는데, [math(A=kE)] 와 [math(Aneq kE)] 두 경우로 나누어 해결하면 된다.
3. 진술
[math( n times n )] 행렬 [math(A)]가 있을 때, [math(A)]의 특성다항식이
[math(pleft(lambda right) = det left(lambda I_n -A right) = lambda^n + c_{n-1} lambda^{n-1} + cdots + c_1 lambda + c_0 )]
라고 하자. 그러면 이 다항식의 [math(lambda)] 자리에 [math(A)]를 넣어 계산하면 영행렬이 된다. 즉,
[math(pleft(A right) = A^n + c_{n-1} A^{n-1} + cdots + c_1 A + c_0 I_n = O)]
가 성립한다.
4. 증명법
4.1. 삼각화를 이용한 증명
행렬을 삼각화하여 증명하는 방법이 있다.[7] 서로 상사인 행렬은 특성다항식이 같기 때문에, 행렬 [math(A)]에 대해 정리가 성립하면 [math(A)]와 상사인 행렬에도 정리가 성립하기 때문이다.
[math( n times n )] 행렬 [math(A)]를 삼각화한 것이 [math(T)]라고 하자. 이때 [math(T)]가 다음과 같은 꼴이라면
[math( n times n )] 행렬 [math(A)]를 삼각화한 것이 [math(T)]라고 하자. 이때 [math(T)]가 다음과 같은 꼴이라면
[math(T=begin{pmatrix} lambda_1 & cdots & cdots & * \ & lambda_2 & & vdots \ & & ddots & vdots \ mathbf{0}& & & lambda_n end{pmatrix})]
[math(T)]의 특성다항식은 [math(phi_T (t) = left(t- lambda_1right) left(t- lambda_2right) cdots left(t- lambda_nright))]와 같이 되기 때문에 다음을 보이면 된다.
[math(phi_T (T) = left(T- lambda_1 I_nright) left(T - lambda_2 I_nright) cdots left(T- lambda_n I_nright) = O)]
이를 다시 쓰면
[math(begin{pmatrix} 0 & cdots & cdots & * \ & * & & vdots \ & & ddots & vdots \ mathbf{0}& & & * end{pmatrix} begin{pmatrix} * & cdots & cdots & * \ & 0 & & vdots \ & & ddots & vdots \ mathbf{0}& & & * end{pmatrix} cdots begin{pmatrix} * & cdots & cdots & * \ & * & & vdots \ & & ddots & vdots \ mathbf{0}& & & 0 end{pmatrix} = O)]
이라는 것이다. 이것은 귀납법을 이용해 보일 수 있다.
4.2. 대수적 증명
[math(displaystyle p_A(lambda) = lambda^n + c_{n-1} lambda^{n-1} + cdots + c_1 lambda + c_0 )]
로 쓰자. 이때 [math(lambda I_n - A)]에 대한 크라메르 공식 [math( (lambda I_n - A) mathrm{adj}(lambda I_n - A) = p_A(lambda) I_n )] 을 생각한다. 한편 [math(text{adj}(lambda I_n -A))]의 각 성분들은 [math(lambda)]에 대한 n-1차 이하의 다항식이기 때문에, [math(lambda)]로 정리하여
[math(displaystyle text{adj}(lambda I_n -A)=sum_{i=0}^{n-1} lambda^i B_i)]
로 쓸 수 있다.(여기서 [math(B_i)]들은 적당한 [math(n times n )] 행렬이다.) 이제 [math( (lambda I_n - A) mathrm{adj}(lambda I_n - A) = p_A(lambda) I_n )]에 대입해 보면
[math(displaystyle (lambda I_n - A) left( sum_{i=0}^{n-1} lambda^i B_i right) = lambda^n I_n + lambda^{n-1} c_{n-1}I_n+ cdots + lambda c_1 I_n+ c_0 I_n)]
이다. 여기서 양변의 [math(lambda^i)]의 계수를 비교하면
[math(B_{n-1} = I_n , B_{i-1} - A B_i = c_i I_n (1leq i leq n-1) , -AB_0 =c_0 I_n )]
이다. 따라서
[math(begin{aligned} p_Aleft(A right) &= A^n + c_{n-1} A^{n-1} + cdots + c_1 A + c_0 I_n \ &= A^n B_{n-1} + A^{n-1} left(B_{n-2} - A B_{n-1} right) + cdots + A left(B_0 - A B_{1} right) -AB_0 = O . end{aligned})]
4.3. cyclic subspace를 이용한 증명
[math( n times n )] 행렬 [math(A)]가 있을 때, [math(A)]의 특성다항식을 [math(phi_A(x))]라고 하자. 이때, [math(phi_A left(Aright) = O )]라는 것은 임의의 벡터 [math(vin mathbb{R}^n)]에 대해 [math(phi_A left(Aright)v = mathbf{0})]라는 것과 같다. 따라서 이를 증명하면 된다.
[math(v = mathbf{0})]이면 당연히 [math(phi_A left(Aright)v = mathbf{0})]가 성립하므로, 벡터 [math(v neq mathbf{0})]라 하자. 이때 다음과 같은 다항식들의 집합을 정의한다.
[math(v = mathbf{0})]이면 당연히 [math(phi_A left(Aright)v = mathbf{0})]가 성립하므로, 벡터 [math(v neq mathbf{0})]라 하자. 이때 다음과 같은 다항식들의 집합을 정의한다.
[math(mathcal{I}_v = left{p(x) in mathbb{R} left[xright] : p(A)v = mathbf{0} right} )]
[math(mathcal{I}_v )]에서 차수가 가장 낮은 것 중 최고차항 계수가 1인 것을 [math(m_v(x))]라고 하자. 그러면 [math(v neq mathbf{0})]이므로, [math(deg m_v geq 1)]이다. 이때
[math(m_v(x) = x^d + a_{d-1}x^{d-1} + cdots + a_1 x + a_0)]
라고 쓰자([math(dgeq 1 )]).
한편 선형사상 [math(L_A: mathbb{R}^n to mathbb{R}^n, X mapsto AX)]에 대하여 [math(v)]로 생성되는 cyclic space를 [math(W)]라 하자. 즉,
한편 선형사상 [math(L_A: mathbb{R}^n to mathbb{R}^n, X mapsto AX)]에 대하여 [math(v)]로 생성되는 cyclic space를 [math(W)]라 하자. 즉,
[math(W = langle v, Av, A^2 v, cdots rangle)]
이다. 그러면 [math(deg m_v = d)]이므로, [math(W)]의 기저는 [math(mathcal{B} = left{v, Av, cdots, A^{d-1}v right})]가 된다.
[math(L_A)]를 [math(W)]로 제한한 선형사상 [math(L_A|_W:W to W, X mapsto AX)]를 기저 [math(mathcal{B} )]를 이용해 행렬로 나타낸 것을 [math(C)]라고 하면
[math(L_A)]를 [math(W)]로 제한한 선형사상 [math(L_A|_W:W to W, X mapsto AX)]를 기저 [math(mathcal{B} )]를 이용해 행렬로 나타낸 것을 [math(C)]라고 하면
[math( C = begin{pmatrix} 0 & 0 & cdots & 0 & -a_0 \ 1 & 0 & cdots & 0 & -a_1 \ 0 & 1 & cdots & 0 & -a_2 \ vdots & vdots & ddots & vdots & vdots \ 0 & 0 & cdots & 1 & -a_{d-1} end{pmatrix} )]
이다. 그러면 이로부터 [math(L_A|_W)]의 특성다항식이 [math(m_v(x))]임을 알 수 있다.
[math(L_A)]의 특성다항식은 [math(L_A|_W)]의 특성다항식의 배수이므로, [math(phi_A left(xright) in mathcal{I}_v )]. 따라서 [math(phi_A left(Aright)v = mathbf{0})]이다.
[math(L_A)]의 특성다항식은 [math(L_A|_W)]의 특성다항식의 배수이므로, [math(phi_A left(xright) in mathcal{I}_v )]. 따라서 [math(phi_A left(Aright)v = mathbf{0})]이다.
4.4. 기타
만약 조르당 분해나 rational canonical form을 먼저 배웠다면 이걸 활용해서 증명할 수도 있지만[8], 대부분의 교재에서는 케일리-해밀턴 정리를 먼저 배우기 때문에 잘 사용되는 방법은 아니다. 또 비슷하게 대각행렬에 대해 먼저 증명하는 방법이 있다. 다만 이 경우는 대각화가 안되는 행렬들이 있으므로, 모든 행렬이 대각행렬의 극한으로 나타낼 수 있다는 것을 보이는 과정이 필요하다.[9] 이 증명은 행렬계산이 대각행렬 곱셈 말고는 없다시피하므로 행렬을 공부하지 않는 과목에서 이 정리가 필요하면 종종 사용하는 방법이다. 이 두 증명에 대해서는 여기에서 자세히 볼 수 있다.
[1] “저자의 경험에 의하면, 한 교실에 한 명쯤은 이 증명이 옳다고 끝까지 우긴다…” from 이인석, 《학부 대수학 강의 I: 선형대수와 군》, 서울대학교출판부, 2005.역시 서울대생도 사람이구나 참고로 저 책에서는 위와 같은 억지 증명을 “막가파式 증명”으로 소개하고 있다.증명 다음에 나오는 ㅋㅋ는 덤 [2] 2009 개정 교육과정[3] 학습지도요령 2002 개정 및 2020 개정[4] 2009 개정 교육과정[5] 학습지도요령 2002 개정 및 2020 개정[6] 일본에서는 없어진 수학C에서 케일리-해밀턴 정리를 배우고, 2차학력시험에서 평가했다. 2022년 부활 예정[7] 다만 이 방법은 <math>mathbb{C}</math> 위에서처럼 임의의 1차 이상의 다항식이 항상 1차 다항식의 곱꼴로 인수분해가 가능한 경우에만, 즉 대수적으로 닫힌 체 위에서만 적용되는 증명 방법이다.[8] rational canonical form은 행렬을 동반행렬(companion matrix)의 블록으로 나타내는데, 동반행렬의 최소다항식은 특성다항식과 동일하기 때문에 바로 증명된다.[9] 특성방정식의 판별식이 0이 아니면 고유값이 전부 다르므로 대각화 가능한데, 이 영역은 특정 다항식이 0이 아닌 영역이므로 조밀하다는 식으로 넘어갈 수 있다.