This lesson is only available in Korean for now.
Lesson 19 of 20

대각화 — 반복을 한 번에 계산하기

A 를 백 번 곱하지 않고 A¹⁰⁰ 구하기

대각화 — 반복을 한 번에 계산하기
고유축으로 갈아타면 복잡한 변환이 방향마다 곱셈 하나가 됩니다.

어떤 과정을 반복하는 문제는 어디에나 있습니다. 날씨가 내일 어떻게 될지, 시장 점유율이 1년 뒤 어떻게 될지, 인구가 어떻게 변할지. 전부 x, Ax, A²x, A³x, … 를 묻는 문제예요.

A 를 100번 곱하려면 행렬 곱을 100번 해야 할까요? 안 그래도 됩니다.

고유벡터의 눈으로 보면 이유가 명확합니다. 만약 x = c₁v₁ + c₂v₂ 라면

Aⁿx = c₁λ₁ⁿv₁ + c₂λ₂ⁿv₂

행렬 곱이 숫자의 거듭제곱으로 바뀌었습니다. 고유축으로 좌표를 갈아타기만 하면 되는 거예요.

고유축으로 쪼개면 반복 계산이 거듭제곱 하나로 끝납니다.
Python Runs in your browser

🎮 오래 두면 어디로 가나

시장 점유율이 매달 옮겨 다니는 모형입니다. "한 달 →" 을 눌러 가며 어디로 수렴하는지 보세요. 출발점을 바꿔도 같은 곳에 도착합니다. 왜냐하면 λ=1 인 방향만 남고 나머지는 λⁿ → 0 으로 사그라들기 때문이에요.

반복이 수렴하는 곳 — 고윳값 1의 고유벡터
Loading…

피보나치를 한 번에 구하기

대각화의 가장 예쁜 예입니다. 피보나치 수열의 점화식을 행렬로 적어 봅시다.

[Fn+1]  [1 1] [Fn  ]
[Fn  ] = [1 0] [Fn−1]

이 행렬의 고윳값을 구하면 λ² − λ − 1 = 0 에서 황금비 φ = (1+√5)/2 와 (1−√5)/2 가 나옵니다.

그래서 Fn 을 반복 없이 한 방에 구하는 공식이 나와요 — 비네의 공식이라고 부릅니다. 반복문 없이 수열의 n번째 항이 나오는 거죠.

고윳값이 황금비. 반복문 없이 F(n)을 구할 수 있습니다.
Python Runs in your browser

어디에 쓰이나

  • PageRank — 웹 링크 행렬의 λ=1 고유벡터가 페이지 순위입니다. 구글은 이것을 거듭제곱법으로 구했어요 (18강 마지막 코드)
  • 마르코프 연쇄 — 날씨·대기행렬·게임 밸런스의 장기 예측
  • 주성분분석(PCA) — 공분산행렬의 고유벡터가 데이터가 가장 많이 퍼진 방향
  • 진동 해석 — 다리와 건물의 고유진동수. 공명을 피하려면 반드시 계산해야 합니다
  • 미분방정식 — x' = Ax 의 해가 e^{λt}v 꼴로 나옵니다

공통점이 보이시나요? 전부 같은 일을 반복하거나 가장 두드러진 방향을 찾는 문제입니다. 고윳값 분해는 그 두 질문에 대한 답이에요.

정상상태 = 고윳값 1의 고유벡터. PageRank 가 이 원리로 돕니다.
Python Runs in your browser
🤔 Check yourself
A = PΛP⁻¹ 일 때 A⁵ 는?
🤔 Check yourself
n×n 행렬이 대각화되기 위한 조건은?
🤔 Check yourself
마르코프 연쇄가 같은 상태로 수렴하는 까닭은?