대각화 가능한 행렬의 조건
행렬의 고윳값을 구하는 중요한 이유 중 하나는, 그 행렬을 가능한 한 ‘단순한 형태’로 바꿔서 해석하고 계산하는 데 있다. 특히, 행렬이 대각화(diagonalization) 가능한 경우라면, 복잡한 변환도 대각 행렬로 표현함으로써 연산을 훨씬 쉽게 처리할 수 있다. 이 섹션에서는 “행렬이 대각화된다는 것”이 구체적으로 무엇을 의미하는지, 그리고 어떤 조건에서 가능한지 살펴본다.
정의 1. (행렬의 대각화)
정사각행렬 \(A\)가 주어졌다고 하자(\(n \times n\) 크기). 만약 다음과 같은 가역행렬(invertible matrix) \(P\)와 대각행렬(diagonal matrix) \(D\)가 존재하여 \[ A = P\,D\,P^{-1} \] 를 만족한다면, 행렬 \(A\)가 대각화 가능(diagonalizable)하다고 말한다.
이때 \(D\)는 보통 \(A\)의 고윳값들로 구성된 대각행렬이 되며, \(P\)는 그 고윳값에 대응하는 고유벡터들을 열벡터로 모아 만든 행렬이다.
즉, 대각화란 “행렬 \(A\)가 특정한 기저변환(\(P\)라는 가역행렬)에 의해서 대각행렬 \(D\)로 변환될 수 있다”는 의미와 같다. 대각행렬은 항등변환과 거의 비슷한 수준으로 연산이 쉬우므로, 대각화가 가능하면 행렬에 관한 여러 문제(거듭제곱, 미분방정식 풀이 등)를 간단하게 해결할 수 있다.
대각화의 기저 관점
선형변환 관점에서 보면, 다음과 같이 볼 수 있다.
- \(A\)는 \(\mathbb{R}^n \to \mathbb{R}^n\) (또는 \(\mathbb{C}^n \to \mathbb{C}^n\))인 선형변환.
- 만약 이 변환이 고유벡터들을 이용해 전체 공간 \(\mathbb{R}^n\) (또는 \(\mathbb{C}^n\))을 생성할 수 있다면, 즉 고유벡터들이 기저를 이룬다면, 그 기저에서의 행렬표현이 대각행렬이 된다.
- \(P\)는 그 고유벡터 기저를 표준기저에 대해 좌표벡터로 쌓은 행렬이며, 그 기저로 변환하면 \(A\)가 대각행렬 \(D\)로 표현된다. (이는 “\(\mathrm{M}_{B}(A)\)가 대각행렬”이라고 말하는 것과 같다.)
정리하면, “\(A\)가 대각화 가능하다”는 말은 “\(A\)의 고유벡터들을 모아, 전체 공간을 생성하는 기저를 만들 수 있다”라는 뜻과 동일하다.
대각화가 가능하기 위한 조건
간단히 말하면, 행렬 \(A\)가 대각화 가능하려면 (복소수 범위에서) \(n\)개의 일차독립 고유벡터를 가져야 한다. 이 아이디어를 좀 더 구체적으로 나누면 다음과 같다.
- 충분히 많은 고윳값(혹은 중복 포함)과 고유벡터
행렬이 \(n \times n\)이라면, 고유벡터가 (기하적) 일차독립 형태로 총 \(n\)개 필요하다. 만약 중복 고윳값이 있더라도, 그 고윳값에 해당하는 고유공간(eigenspace)에서 충분히 많은 독립 벡터가 나와야 한다. - “기하적 중복도 = 대수적 중복도”
고윳값 \(\lambda\)의 “대수적 중복도(algebraic multiplicity)”가 \(k\)라면, 이에 해당하는 고유공간의 차원(“기하적 중복도”)도 반드시 \(k\)가 되어야 한다. 즉, 각 중복 고윳값마다 \(\dim(\mathrm{Ker}(A-\lambda I))\)이 그 중복도만큼 확보되어야 전체적으로 \(n\)개의 독립 고유벡터가 형성된다.
이 두 가지를 요약하면,
- “대각화 가능하다고 하려면, 모든 고윳값들에 대해 기하적 중복도 = 대수적 중복도” (이 때는 고윳값이 모자라거나, 중복근에 해당하는 고유공간이 충분치 않아도 대각화가 불가능해진다.)
대표적인 예
- 대각화 가능한 2×2 행렬: 2차 방정식으로부터 2개의 서로 다른 실근을 얻어낼 수 있다면, 고유벡터 2개가 자동적으로 독립성이 확보되어 대각화가 된다. 하지만 두 근이 같아(중복근)도, 경우에 따라 고유공간이 1차원밖에 안 되어 대각화가 실패할 수 있다.
- 실수 vs 복소수: 어떤 2×2 실행렬이 \(\pm i\) 같은 복소 고윳값을 갖는다면, \(\mathbb{R}\) 범위에선 대각화가 불가능할 수도 있으나, 복소수 공간 \(\mathbb{C}\)로 확장하면 충분히 대각화 가능해지는 경우도 있다.
결국, “대각화 된다”는 것은 “행렬이 고유벡터들로 이뤄진 기저를 갖는다”는 말과 동치이다. 그리고 그 판단의 열쇠는 “기하적 중복도 = 대수적 중복도” 규칙에 있다고 요약할 수 있다. 이후, 행렬 \(A\)를 대각형 \(\mathrm{diag}(\lambda_1,\dots,\lambda_n)\)로 표현할 수 있다면, \[ A = P\,\mathrm{diag}(\lambda_1,\dots,\lambda_n)\,P^{-1} \] 의 형태가 성립하고, 여기서 각 \(\lambda_i\)는 \(A\)의 고윳값, \(P\)의 열벡터가 해당 고윳값에 대응하는 고유벡터가 된다. 이렇게 확보된 대각화는 고차원 문제를 크게 단순화해주는 매우 유용한 도구가 된다.
고윳값과 고유벡터를 이용한 대각화
이전 섹션에서 살펴본 바와 같이, \(n \times n\) 행렬 \(A\)가 대각화 가능하다는 것은 “서로 독립적인 고유벡터가 \(n\)개 존재한다”는 사실과 동치이다. 이때, 고윳값·고유벡터를 구한 뒤 알맞게 행렬을 구성하면, 실제로 어떻게 \(A\)를 대각화할 수 있는지 구체적인 방법을 알 수 있다.
대각화 과정 개요
- 고윳값을 찾는다.
\(\det(A - \lambda I)=0\)을 풀어 \(\lambda_1, \dots, \lambda_k\) 등의 고윳값을 구한다(복소수 범위까지 확장할 수도 있음). 이때 일부 고윳값은 중복도가 있을 수 있다. - 각 고윳값에 대응하는 고유벡터들을 구한다.
\((A - \lambda_i I)\mathbf{v} = \mathbf{0}\) 해공간(고유공간)의 기저를 찾는다. 중복도가 \(m\)인 고윳값이라면, 기하적 중복도가 최대 \(m\)임을 확인해야 한다. - 고유벡터로 기저가 구성되는지 확인한다.
모든 고윳값의 고유공간에서 얻은 벡터들을 합쳐서, 총 \(n\)개의 일차독립 벡터를 만들 수 있어야 대각화가 가능하다. 즉, 기하적 중복도가 대수적 중복도와 같아야 한다. - 행렬 \(P\)와 \(D\) 구성
행렬 \(P\)는 고유벡터들을 열벡터로 배치해서 만든다. \[ P = \bigl[\mathbf{v}_1\ \mathbf{v}_2\ \dots \mathbf{v}_n \bigr]. \] 행렬 \(D\)는 대각행렬로서, 각 열벡터에 대응하는 고윳값을 대각 원소로 둔다. 예컨대, \[ D = \mathrm{diag}(\lambda_1, \lambda_2, \dots, \lambda_n). \] 그렇다면 \[ A = P\,D\,P^{-1} \] 가 성립한다.
정리하자면 “행렬 \(A\)의 열벡터를 고유벡터로 바꾼다는 것”이 바로 “\(P^{-1}AP = D\)”에서 \(D\)가 대각행렬이 되는 이유이다. 이를 좀 더 구체적으로 살펴보자.
대각화가 이루어지는 이유
선형변환 관점으로 설명하면 다음과 같다.
- 행렬 \(A\)는 선형변환 \(T: \mathbb{R}^n \to \mathbb{R}^n\) (또는 \(\mathbb{C}^n\))을 나타낸다.
- \(\mathbf{v}_i\)가 고유벡터라면, \[ A \mathbf{v}_i = \lambda_i \mathbf{v}_i. \] 여기서 \(\lambda_i\)는 대응 고윳값이다.
- 행렬 \(P\)의 \(i\)번째 열을 \(\mathbf{v}_i\)로 두면, 행렬곱 \(AP\)의 결과는 각 열을 “\(\lambda_i\mathbf{v}_i\)”로 바꿔 놓게 된다. 즉, \[ A\,[\mathbf{v}_1\ \mathbf{v}_2\ \dots\ \mathbf{v}_n] = [\,A\mathbf{v}_1\ A\mathbf{v}_2\ \dots\ A\mathbf{v}_n\,] = [\,\lambda_1\mathbf{v}_1\ \lambda_2\mathbf{v}_2\ \dots\ \lambda_n\mathbf{v}_n\,]. \]
- 그 결과, \[ A\,P = [\,\lambda_1\mathbf{v}_1\ \lambda_2\mathbf{v}_2\ \dots\ \lambda_n\mathbf{v}_n\,] = P \,\mathrm{diag}(\lambda_1, \dots, \lambda_n) = P\,D. \] 즉, \(AP = PD\). 양변에 \(P^{-1}\)를 곱하면, \[ P^{-1}AP = D, \] 를 얻게 되어, \(A = P\,D\,P^{-1}\) 형태로 나타난다.
보기 1. (2×2 행렬 대각화)
2×2 행렬 \[ A = \begin{pmatrix} 1 & 2 \\ 0 & 1 \end{pmatrix} \] 를 생각해 보자. 이 행렬의 고윳값을 계산하면, 특성다항식이 \((1-\lambda)^2\), 즉 \(\lambda=1\)이 (중복도 2)로 나온다. 이제 고유벡터 공간 \(\mathrm{Ker}(A - I)\)를 구하면, \[ (A - I) = \begin{pmatrix} 0 & 2 \\ 0 & 0 \end{pmatrix}, \] 따라서 \[ \begin{pmatrix} 0 & 2 \\ 0 & 0 \end{pmatrix} \begin{pmatrix} x \\ y \end{pmatrix} = 0 \] 는 \(2y=0 \Rightarrow y=0\)로서 \(\mathbf{v}=(x,0)\). 즉 \(\mathrm{Ker}(A - I)\)가 1차원이다.
이렇게 중복근이 있지만 고유공간이 충분하지 않아(1차원만 확보) \(\{\mathbf{v}\}\)로는 2차원 전체를 생성할 수 없다. 따라서 이 행렬은 대각화가 불가능하다.
결론적으로 행렬을 대각화하려면,
- 고윳값 \(\lambda_i\)를 구하고, 해당 고유벡터들을 찾는다.
- 모든 고윳값에 대해 (대수적 중복도)=(기하적 중복도)가 되어, 결과적으로 일차독립인 고유벡터가 \(n\)개 있어야 한다.
- 그 고유벡터들을 열벡터로 하는 \(P\)를 만들고, 고윳값들을 대각 원소로 하는 \(D\)를 만든다. 그러면 \(A=PDP^{-1}\)가 완성된다.
이 과정을 통해, “행렬을 대각화한다”는 것은 “한 기저에서는 행렬이 대각행렬로 표현된다”는 선형변환의 시각과 정확히 일치한다. 이후에는 대각화의 이점(행렬 멱승, 지수 행렬, 미분방정식 해석, 진동 모드 분석 등)을 활용할 수 있게 되며, 선형대수학에서 아주 강력하고 유용한 테크닉으로 자리잡게 된다.
보기 2. (2×2 행렬 대각화)
행렬 \[ A = \begin{pmatrix} 2 & 1 \\[6pt] 0 & 3 \end{pmatrix} \] 를 생각해 보자. 이 행렬은 대각 원소가 서로 다른 값(2, 3)이므로, 서로 다른 고윳값 두 개를 갖게 된다. 실제로 특성다항식을 구해 보면, \[ \det(A - \lambda I) = \det\begin{pmatrix} 2-\lambda & 1 \\ 0 & 3-\lambda \end{pmatrix} = (2-\lambda)(3-\lambda). \] 여기서 \((2-\lambda)(3-\lambda)=0\)의 근은 \(\lambda_1 = 2\), \(\lambda_2 = 3\)이다.
- \(\lambda_1 = 2\)에 대한 고유벡터 \[ (A - 2I) = \begin{pmatrix} 0 & 1 \\ 0 & 1 \end{pmatrix}. \] 연립방정식 \(\begin{pmatrix} 0 & 1 \\ 0 & 1 \end{pmatrix} \begin{pmatrix} x \\ y \end{pmatrix} = 0\)을 풀면, \(\; y=0\). 따라서 고유벡터는 \(\mathbf{v}_1 = \begin{pmatrix} 1 \\ 0 \end{pmatrix}\)과 같이 잡을 수 있다.(\(x\) 자유, \(y=0\))
- \(\lambda_2 = 3\)에 대한 고유벡터 \[ (A - 3I) = \begin{pmatrix} -1 & 1 \\ 0 & 0 \end{pmatrix}. \] \(-1 \cdot x + 1 \cdot y = 0 \Rightarrow y = x\). 따라서 고유벡터는 \(\mathbf{v}_2 = \begin{pmatrix} 1 \\ 1 \end{pmatrix}\) (예시로 \(x=1,y=1\))를 잡을 수 있다.
이제 두 고유벡터 \(\mathbf{v}_1\), \(\mathbf{v}_2\)가 일차독립이고, \(\mathbb{R}^2\)를 생성한다. 따라서 대각화가 가능하다. 구체적으로는 다음과 같다. \[\begin{aligned} P &= \begin{pmatrix} | & | \\ \mathbf{v}_1 & \mathbf{v}_2 \\ | & | \end{pmatrix} = \begin{pmatrix} 1 & 1\\ 0 & 1 \end{pmatrix}, \\ D &= \mathrm{diag}(2,3) = \begin{pmatrix} 2 & 0\\ 0 & 3 \end{pmatrix}. \end{aligned}\] 그럼 \[ A = P\,D\,P^{-1} \] 임을 확인할 수 있다. 즉, \[ P^{-1} A\, P = D \] 가 성립하며, 실제로 \(AP = PD\)를 계산해 보면 각 열이 \(\lambda_i \mathbf{v}_i\) 형태로 잘 맞아떨어진다는 것을 확인할 수 있다. 이로써 \(A\)를 대각화했음을 알 수 있다.
보기 3. (3×3 행렬 대각화)
이번에는 3×3 예시로, \[ A = \begin{pmatrix} 1 & 2 & 0 \\ 0 & 2 & 1 \\ 0 & 0 & 3 \end{pmatrix} \] 를 살펴보자. 이 행렬은 상삼각행렬(upper triangular)이며, 대각 원소가 각각 1, 2, 3이므로, 고윳값은 \(\lambda_1=1, \lambda_2=2, \lambda_3=3\)로 서로 다르다.
- \(\lambda_1 = 1\)에 대한 고유벡터 \[ (A - I) = \begin{pmatrix} 0 & 2 & 0\\ 0 & 1 & 1\\ 0 & 0 & 2 \end{pmatrix}. \] 이를 \(\begin{pmatrix} x \\ y \\ z \end{pmatrix}\)에 곱했을 때 0이 되려면 \[ 2y = 0 \Rightarrow y=0,\quad y + z=0 \Rightarrow 0+z=0 \Rightarrow z=0,\quad 2z=0 \Rightarrow(동일). \] 따라서 \(\mathbf{v}_1=(1,0,0)\) 형식이 고유벡터가 될 수 있다.
- \(\lambda_2 = 2\)에 대한 고유벡터 \[ (A - 2I) = \begin{pmatrix} -1 & 2 & 0\\ 0 & 0 & 1\\ 0 & 0 & 1 \end{pmatrix}. \] 식으로 쓰면 \(-1\cdot x + 2\cdot y=0, \quad 1\cdot z=0,\quad 1\cdot z=0.\) 따라서 \(z=0, 2y=x\). 자유변수를 y=1로 두면 x=2. 고유벡터는 \(\mathbf{v}_2=(2,1,0)\) 등이 가능하다.
- \(\lambda_3 = 3\)에 대한 고유벡터 \[ (A - 3I) = \begin{pmatrix} -2 & 2 & 0\\ 0 & -1 & 1\\ 0 & 0 & 0 \end{pmatrix}. \] 연립방정식은 \[ -2x+2y=0,\quad -y+z=0,\quad (세번째행은0). \] 따라서 \(z=y,\ -2x+2y=0 \Rightarrow x=y.\) 자유변수 y=1로 두면 x=1,z=1. 고유벡터 \(\mathbf{v}_3=(1,1,1)\) 같은 것을 잡을 수 있다.
이제 세 고윳값이 모두 다르고, 각 고윳값마다 1차원 고유공간에서 하나씩 고유벡터를 얻었으므로, 총 세 벡터 \(\mathbf{v}_1=(1,0,0)\), \(\mathbf{v}_2=(2,1,0)\), \(\mathbf{v}_3=(1,1,1)\)를 모아 행렬 \[ P = \begin{pmatrix} 1 & 2 & 1\\ 0 & 1 & 1\\ 0 & 0 & 1 \end{pmatrix} \] 를 만든다. 그리고 \[ D = \mathrm{diag}(1,2,3). \] 그러면 \[ A = P\,D\,P^{-1} \] 가 성립한다. 직접 \(AP\)와 \(PD\)를 계산해 보면, \[ AP = [\,A\mathbf{v}_1\ A\mathbf{v}_2\ A\mathbf{v}_3\,] = [\,1\cdot\mathbf{v}_1\ 2\cdot\mathbf{v}_2\ 3\cdot\mathbf{v}_3\,] = P\,D. \] 즉, \(\mathbf{v}_1, \mathbf{v}_2, \mathbf{v}_3\)를 열벡터로 하는 기저에서 \(A\)는 대각행렬로 표현된다.
이처럼 서로 다른 고윳값을 갖는 상삼각행렬은(대각 원소가 모두 다른 경우) 언제나 쉽게 대각화가 가능하다.
응용 예시: 피보나치 수열의 일반항
피보나치 수열 \(\{F_n\}\)는 다음과 같이 정의된다. \[F_0 = 0,\quad F_1 = 1,\quad F_n = F_{n-1} + F_{n-2} \quad ( n \ge 2 ).\] 이 수열의 일반항(닫힌형 표현, closed-form)을 얻기 위해 자주 사용하는 방법 중 하나가 행렬 대각화를 활용하는 방식이다. 핵심은 피보나치 점화식이 다음 2×2 행렬의 거듭제곱(power)으로 표현된다는 사실에 있다.
1. 피보나치 행렬 구성
피보나치 수열이 가진 점화식을 행렬로 표현하면, 다음과 같은 행렬 \(M\)을 생각할 수 있다.
\[ M = \begin{pmatrix} 1 & 1 \\ 1 & 0 \end{pmatrix}. \]
이 행렬을 \(n\)제곱 하면, 다음을 만족한다.
\[ M^n = \begin{pmatrix} F_{n+1} & F_n \\ F_n & F_{n-1} \end{pmatrix}. \]
2. 행렬 \(M\)의 대각화
이제 행렬 \(M\)을 대각화해 보자. 먼저 특성다항식을 구한다.
\[ M - \lambda I = \begin{pmatrix} 1-\lambda & 1 \\ 1 & -\lambda \end{pmatrix}, \quad \det(M - \lambda I) = (1-\lambda)(-\lambda) - 1\cdot 1. \]
계산하면 \[ (1-\lambda)(-\lambda) - 1 = -\lambda + \lambda^2 - 1 = \lambda^2 - \lambda - 1. \] 따라서 특성다항식은 \[ p(\lambda) = \lambda^2 - \lambda - 1=0. \]
이 이차방정식의 근은 \[ \lambda = \frac{1 \pm \sqrt{1 + 4}}{2} = \frac{1 \pm \sqrt{5}}{2}. \] 우리가 잘 아는 황금비 \(\phi\)와 \(\hat{\phi}\) 값을 얻게 된다.
\[\begin{gathered} \lambda_1 = \phi = \dfrac{1 + \sqrt{5}}{2} \\[6pt] \lambda_2 = \hat{\phi} = \dfrac{1 - \sqrt{5}}{2} \end{gathered}\]이제 각 고윳값에 대응하는 고유벡터를 구하자.
- \(\lambda_1 = \phi\)일 때, \[ (M - \phi I) = \begin{pmatrix} 1-\phi & 1 \\ 1 & -\phi \end{pmatrix}. \] 예를 들어 첫 행 \((1-\phi, 1)\)에 대해 \((1-\phi)x + 1\cdot y = 0 \Rightarrow y = (\phi -1)x\) 이다. 편의상 \(x=1\)로 두면 \(y=\phi -1\)이다. 하지만 \[\phi-1= \dfrac{1+\sqrt{5}}{2}-1 = \dfrac{\sqrt{5}-1}{2}\]이다. 한편 \[\phi-1 = \dfrac{1}{\phi}\]이라는 신기한 관계도 있다. 고유벡터는 \[\mathbf{v}_1 = \begin{pmatrix} 1 \\ \phi-1 \end{pmatrix}\] 정도로 잡을 수 있다.
- \(\lambda_2 = \hat{\phi}\)일 때, \[ (M - \hat{\phi}I) = \begin{pmatrix} 1 - \hat{\phi} & 1 \\ 1 & -\hat{\phi} \end{pmatrix}. \] 이다. 앞에서와 비슷한 계산을 해 보면, \((1-\hat{\phi})x + y=0 \Rightarrow y=(\hat{\phi}-1)x\)이다. 따라서 고유벡터 \[\mathbf{v}_2 = \begin{pmatrix}1 \\ \hat{\phi}-1\end{pmatrix}\]정도로 잡을 수 있다.
두 고윳값이 다르고(서로 독립), 이에 해당하는 고유벡터도 독립이므로 행렬 \(M\)은 대각화할 수 있다. \[ P = [\,\mathbf{v}_1\ \mathbf{v}_2\,], \quad D = \mathrm{diag}(\phi,\;\hat{\phi}). \]
즉, \[ M = P\,D\,P^{-1}. \] 그리고 임의의 \(n\)에 대해 \[ M^n = P\,D^n\,P^{-1}. \]
3. 행렬의 거듭제곱으로 피보나치 일반항 구하기
우선, 우리가 구하고 싶은 것은 \(F_n\). 다음 초기 조건을 행렬로 표현해 보자.
\[ \begin{pmatrix} F_1 \\ F_0 \end{pmatrix} = \begin{pmatrix} 1 \\ 0 \end{pmatrix}. \]
점화식에서 \[ \begin{pmatrix}F_{n+1}\\F_n\end{pmatrix} = M^n \begin{pmatrix}F_1\\F_0\end{pmatrix} = M^n \begin{pmatrix}1\\0\end{pmatrix} \] 이다. 이 벡터의 윗 성분이 곧 \(F_{n+1}\)이다. 즉, \(M^n\begin{pmatrix}1\\0\end{pmatrix}\)의 첫째 좌표가 원하는 피보나치 항을 준다.
이제 \(M^n = P\,D^n\,P^{-1}\)를 사용하면, \[ M^n \begin{pmatrix}1\\0\end{pmatrix} = P\,D^n\,P^{-1}\begin{pmatrix}1\\0\end{pmatrix}. \] 따라서 \(D^n\)은 간단히 \[ D^n = \begin{pmatrix} \phi^n & 0 \\ 0 & \hat{\phi}^n \end{pmatrix}. \] 가 된다.
결국 계산 과정을 거치면(자세한 전개는 행렬 곱셈으로 풀 수 있다), 우리가 얻게 되는 것은 \[ F_n = \frac{\phi^n - \hat{\phi}^n}{\phi - \hat{\phi}} \] 형태의 식이다. 여기서 \[\phi = \frac{1+\sqrt{5}}{2},\,\, \hat{\phi}=\frac{1-\sqrt{5}}{2}\] 이며, \(\phi-\hat{\phi}=\sqrt{5}\)이다. 결과적으로 ‘비네 공식(Binet’s Formula)’라 불리는 공식 \[ F_n = \frac{\phi^n - \hat{\phi}^n}{\sqrt{5}} \] 을 얻는다.
이처럼 행렬의 대각화 \((M^n=P\,D^n\,P^{-1})\)를 활용하여 행렬 거듭제곱 \(M^n\)을 빠르게 계산하고, 그 결과로부터 \((F_{n+1},\,F_n)\)에 대한 식을 얻을 수 있다.