나뭇잎 교과서

행렬의 대각화

고유벡터로 기저를 만들 수 있으면, 그 기저에서 보는 행렬은 축마다 고윳값만큼 늘이기만 하는 대각행렬이 됩니다. 이것이 대각화 \(A = PDP^{-1}\)입니다. 대각화하면 \(A^n = PD^nP^{-1}\)이라 거듭제곱이 쉬워집니다. 이 절에서는 고유벡터 격자에서 변환이 단순해지는 것을 보고, 피보나치 수열의 일반항에 왜 \(\sqrt5\)가 나오는지 확인합니다.

본문

행렬의 대각화

본문

피보나치 수열 1, 1, 2, 3, 5, 8, 13, ⋯은 모든 항이 자연수인데, 일반항은 \(F_n = \dfrac{1}{\sqrt5}\left[\left(\dfrac{1 + \sqrt5}{2}\right)^n - \left(\dfrac{1 - \sqrt5}{2}\right)^n\right]\)처럼 무리수 \(\sqrt5\)로 쓰인다. 자연수만 나오는 수열의 식에 왜 무리수가 들어 있을까? 이웃한 두 항을 벡터 \((F_{n+1}, F_n)\)으로 묶으면, 다음 벡터는 행렬 \(\begin{pmatrix}1 & 1\\ 1 & 0\end{pmatrix}\)을 곱해 얻는다. 이 행렬을 거듭 곱하는 계산을 간단하게 바꾸는 방법이 있을까?

n5101520 Fₙ5556106765 φⁿ/√54.9655.004609.99976765.00003 φ = (1 + √5)/2 ≈ 1.618, ψ = (1 − √5)/2 ≈ −0.618 ψⁿ은 빠르게 0으로 줄어 φⁿ/√5를 반올림하면 Fₙ이다.
그림 1. 무리수 두 개의 거듭제곱의 차가 늘 자연수가 되고, 큰 \(n\)에서는 \(\varphi^n/\sqrt5\)만으로도 거의 맞는다.
먼저 알아야 할 것고윳값과 고유벡터(고윳값과 고유벡터), 기저와 좌표(기저), 역행렬.

3.3.1고유벡터의 격자에서 보면

\(2\times2\) 행렬 \(A\)가 일차독립인 고유벡터 \(\vec v_1\), \(\vec v_2\)를 가지면, 두 고유벡터를 기저로 삼은 격자에서 \(A\)는 각 방향을 고윳값만큼 늘이기만 한다. 비스듬한 격자에서는 모양이 복잡하게 바뀌어 보이던 변환이, 고유벡터의 격자에서는 가로세로로 늘이는 단순한 변환이 되는 것이다. 이것을 식으로 쓰면 고유벡터를 열로 하는 행렬 \(P\)와 고윳값을 대각에 놓은 행렬 \(D\)로 \(A = PDP^{-1}\)이다. 이렇게 바꾸는 것을 대각화라 한다.

정리 3.3.1 대각화와 거듭제곱

\(A\)의 고유벡터 \(\vec v_1, \vec v_2\)가 일차독립이고 고윳값이 \(\lambda_1, \lambda_2\)이면, \(P = (\vec v_1\ \vec v_2)\), \(D = \begin{pmatrix}\lambda_1 & 0\\ 0 & \lambda_2\end{pmatrix}\)에 대해 \(A = PDP^{-1}\)이고 \[A^n = PD^nP^{-1},\qquad D^n = \begin{pmatrix}\lambda_1^n & 0\\ 0 & \lambda_2^n\end{pmatrix}\]이다. 서로 다른 고윳값을 가지면 늘 대각화할 수 있다.

\(A^n = PDP^{-1}PDP^{-1}\cdots\)에서 가운데의 \(P^{-1}P\)가 모두 \(I\)로 지워지므로 \(A^n = PD^nP^{-1}\)이다. 대각행렬의 거듭제곱은 대각성분을 각각 거듭제곱하면 되므로 계산이 아주 쉽다. 그래서 대각화는 거듭제곱을 고윳값의 거듭제곱으로 바꾸어 준다. 고윳값이 무리수이면 \(A^n\)의 성분도 그 무리수의 거듭제곱으로 쓰이고, \(A\)의 성분이 정수이면 무리수 부분이 서로 지워져 결과는 정수가 된다.1

3.3.2피보나치 행렬의 고윳값

피보나치 행렬 \(Q = \begin{pmatrix}1 & 1\\ 1 & 0\end{pmatrix}\)은 \(\mathrm{tr}\,Q = 1\), \(\det Q = -1\)이므로 특성방정식이 \(\lambda^2 - \lambda - 1 = 0\)이다. 근은 \(\varphi = \dfrac{1 + \sqrt5}{2}\), \(\psi = \dfrac{1 - \sqrt5}{2}\)이고, 고유벡터는 \((\varphi, 1)\), \((\psi, 1)\)이다. 그래서 \(\sqrt5\)는 특성방정식의 판별식 \(1 + 4 = 5\)에서 나온다. \(Q\)를 거듭 곱하면 큰 고윳값 \(\varphi\)의 고유벡터 방향이 압도하므로, 이웃한 두 항의 비 \(F_{n+1}/F_n\)은 황금비 \(\varphi\)에 다가간다.

양값 특성방정식λ² − λ − 1 = 0, 판별식 5 고윳값, 고유벡터φ ≈ 1.618, (φ, 1) · ψ ≈ −0.618, (ψ, 1) (1, 0)의 분해(1, 0) = [(φ, 1) − (ψ, 1)] / √5
그림 2. 출발 벡터를 고유벡터로 나누는 계수에 \(1/\sqrt5\)가 나타난다.

3.3.3예제 풀이

예제 3.3.2

\((F_{n+1}, F_n) = Q^n(1, 0)\)임을 이용해, 대각화로 피보나치 수열의 일반항을 구하여라. \(F_{10}\)을 일반항으로 확인하여라.

\((F_2, F_1) = (1, 1) = Q(1, 0)\)이고 \(Q(F_{n+1}, F_n) = (F_{n+1} + F_n, F_{n+1}) = (F_{n+2}, F_{n+1})\)이므로 \((F_{n+1}, F_n) = Q^n(1, 0)\)이다. \(\varphi - \psi = \sqrt5\)이므로 \((1, 0) = \dfrac{1}{\sqrt5}[(\varphi, 1) - (\psi, 1)]\)이다. 각 고유벡터에 \(Q^n\)을 곱하면 고윳값의 \(n\)제곱이 곱해지므로 \(Q^n(1, 0) = \dfrac{1}{\sqrt5}[\varphi^n(\varphi, 1) - \psi^n(\psi, 1)]\)이다.

둘째 성분을 읽으면 \(F_n = \dfrac{\varphi^n - \psi^n}{\sqrt5}\)이다. \(n = 10\)이면 \(\varphi^{10} \approx 122.992\), \(\psi^{10} \approx 0.008\)이므로 \(F_{10} \approx (122.992 - 0.008)/2.236 \approx 55.00\)이다. \(\varphi^n\)과 \(\psi^n\)을 이항정리로 전개하면 \(\sqrt5\)의 홀수 거듭제곱 항만 남고, 그것을 \(\sqrt5\)로 나누면 정수가 된다. 즉 대각화는 행렬을 고유벡터의 격자에서 보아 거듭제곱을 고윳값의 거듭제곱으로 바꾸며, 피보나치 수열의 \(\sqrt5\)는 피보나치 행렬의 고윳값에서 나온다.

아래 탐구 카드에서 고유벡터의 격자로 바꾸면 행렬이 늘이기만 하는 모습을 보고, 피보나치 행렬을 대각화해 일반항을 구해 보자.

  1. 피보나치 수열의 일반항은 1843년 프랑스의 비네가 발표해 비네 공식이라 부르지만, 그보다 100년쯤 앞서 드무아브르와 오일러도 알고 있었다. 두 항의 비가 황금비로 다가간다는 것은 17세기의 케플러가 처음 적었다.
마무리

일차독립인 고유벡터를 가진 행렬은 고유벡터를 열로 하는 \(P\)와 고윳값의 대각행렬 \(D\)로 \(A = PDP^{-1}\)로 대각화되며, 고유벡터의 격자에서는 각 방향을 고윳값만큼 늘이기만 한다. 그래서 \(A^n = PD^nP^{-1}\)로 거듭제곱이 고윳값의 거듭제곱으로 바뀐다. 처음 질문의 피보나치 수열은 행렬 \(\begin{pmatrix}1 & 1\\ 1 & 0\end{pmatrix}\)의 거듭제곱이고, 그 고윳값 \((1 \pm \sqrt5)/2\)가 일반항의 \(\sqrt5\)를 만든다.

탐구 1

어떤 격자에서 보면 행렬이 늘이기만 할까?

행렬의 대각화 · 조작
  1. 질문표준 격자에서 보면 행렬은 격자를 비틀고 돌린다. 그런데 1단원에서 기저를 바꾸면 같은 점의 좌표가 달라졌다. 기저를 잘 고르면 이 변환이 "축마다 늘이기"만으로 보이게 할 수 있을까?
  2. 복원고유벡터 \(\vec{v}\)는 \(A\vec{v} = \lambda\vec{v}\), 곧 방향을 바꾸지 않고 \(\lambda\)배만 된다. 기저 \(\{\vec{v}_1, \vec{v}_2\}\)에 대한 좌표는 \(P^{-1}\vec{x}\) (\(P = [\vec{v}_1\ \vec{v}_2]\))이다.
  3. 설명일차독립인 고유벡터 \(n\)개로 기저를 만들 수 있으면, 그 기저에서 \(A\)는 각 축을 고윳값만큼 늘이는 대각행렬 \(D\)로 보인다. 식으로는 \(P^{-1}AP = D\), 곧 \(A = PDP^{-1}\)이고, 이것을 대각화라고 한다. 이 식은 이렇게 읽는다. \(P^{-1}\)로 고유벡터 좌표로 바꾸고, \(D\)로 축마다 늘인 뒤, \(P\)로 원래 좌표로 돌아온다. 서로 다른 고윳값의 고유벡터는 일차독립이므로, \(2 \times 2\)에서 고윳값이 서로 다른 두 실수이면 대각화할 수 있다.
  4. 연결대각화하면 \(A^n = PD^nP^{-1}\)이고 \(D^n\)은 대각성분만 \(n\)제곱하면 되므로 거듭제곱이 쉬워진다. 다음 카드의 피보나치 수열, 마지막 절의 인구 이동이 이 계산을 쓴다.
  5. 적용표준 격자에서 진행 슬라이더를 움직여 격자가 비틀리는 것을 보고, 고유벡터 격자로 바꿔 같은 일을 해 보자. 고유벡터 격자의 선은 방향이 바뀌는가? 셋째 행렬처럼 고윳값이 음수이면 어떻게 보이는가?
  6. 판단모든 행렬이 대각화되는 것은 아니다. 밀기 \(\begin{pmatrix} 1 & 1 \\ 0 & 1 \end{pmatrix}\)는 고유 방향이 하나뿐이라 고유벡터로 기저를 만들 수 없고, 회전은 실수 고유벡터가 없다.

확인조건이 달라지면

\(A = PDP^{-1}\), \(D = \begin{pmatrix} 2 & 0 \\ 0 & -1 \end{pmatrix}\)일 때 \(A^4\)은?

탐구 2

피보나치 수열의 일반항에 왜 √5가 나올까?

대각화의 활용 · 시뮬레이션

  1. 질문피보나치 수열 \(1, 1, 2, 3, 5, 8, \ldots\)은 모두 자연수인데, 일반항 \(F_n = \frac{1}{\sqrt5}\left(\left(\frac{1 + \sqrt5}{2}\right)^n - \left(\frac{1 - \sqrt5}{2}\right)^n\right)\)에는 \(\sqrt5\)가 들어 있다. 이 식은 어디서 왔을까?
  2. 복원\(A = PDP^{-1}\)이면 \(A^n = PD^nP^{-1}\)이다. \(2 \times 2\) 행렬의 고윳값은 \(\lambda^2 - (\mathrm{tr}\,A)\lambda + \det A = 0\)의 근이다.
  3. 설명\(F_{n+2} = F_{n+1} + F_n\)을 \(\binom{F_{n+2}}{F_{n+1}} = A\binom{F_{n+1}}{F_n}\), \(A = \begin{pmatrix} 1 & 1 \\ 1 & 0 \end{pmatrix}\)로 쓴다. 특성방정식 \(\lambda^2 - \lambda - 1 = 0\)의 근이 \(\varphi = \frac{1 + \sqrt5}{2}\), \(\psi = \frac{1 - \sqrt5}{2}\)이고, 고유벡터는 \((\varphi, 1)\), \((\psi, 1)\)이다. 처음 벡터를 두 고유벡터로 나누면 \(A^n\)은 각 성분에 \(\varphi^n\), \(\psi^n\)을 곱할 뿐이라 일반항이 나온다. \(\sqrt5\)는 두 고윳값의 차 \(\varphi - \psi\)이다.
  4. 연결\(|\psi| < 1\)이라 \(\psi^n\)은 빠르게 0으로 가므로 \(F_n\)은 \(\varphi^n/\sqrt5\)를 반올림한 값과 같고, \(F_{n+1}/F_n \to \varphi\)(황금비)이다. 점화식으로 정의된 수열, 마르코프 연쇄, 인구 모형이 모두 같은 원리로 "가장 큰 고윳값 방향"으로 모인다.
  5. 적용처음 두 항을 바꿔 보자. 점들은 어느 직선을 따라 멀어지는가? 처음 벡터를 \(\psi\) 쪽 고유벡터에 가깝게 고르면(예를 들어 \(a_1 = -3\), \(a_2 = 2\). 정수로는 정확히 놓을 수 없다) 처음 몇 항은 어떻게 움직이고, 결국 어디로 가는가?
  6. 판단\(\varphi^n/\sqrt5\)를 반올림하는 공식은 \(F_1 = F_2 = 1\)로 시작할 때만 맞다. 처음 두 항이 다르면 두 고유벡터 성분의 계수가 달라지므로 일반항도 달라진다.

확인조건이 달라지면

\(a_{n+2} = a_{n+1} + 2a_n\)을 행렬로 쓸 때 고윳값은?

AI 출제 문항연습문제 풀어보기11문항
Esc

↑↓ 고르기Enter 열기