거듭제곱법(최대 고윳값) 계산기
행렬에 벡터를 거듭 곱해 절댓값이 가장 큰 고윳값을 찾는 과정을 반복마다 레일리 몫과 잔차로 보여 줍니다. 수렴 속도가 |λ₂/λ₁|라는 것을 실제 이력과 대조하고, 역거듭제곱법으로 σ 근처 고윳값도 찾습니다.
줄마다 한 행, 쉼표나 공백으로 나눕니다 — 지금 3행
절댓값이 가장 큰 고윳값
6.66907909
43번 만에 잔차 8.15e-13까지 · 고유벡터 (0.6312, 0.172, 0.7563)
| k | 레일리 몫 | 잔차 | 앞 단계 대비 |
|---|---|---|---|
| 1 | 6.52277642 | 0.70180181 | — |
| 2 | 6.63380029 | 0.33932591 | 0.4835 |
| 3 | 6.65986996 | 0.17208157 | 0.5071 |
| 4 | 6.66660706 | 0.08893708 | 0.5168 |
| 5 | 6.66840986 | 0.04624057 | 0.5199 |
| 6 | 6.66889746 | 0.024084 | 0.5208 |
| 7 | 6.66902976 | 0.01255035 | 0.5211 |
| 8 | 6.66906569 | 0.00654104 | 0.5212 |
| 9 | 6.66907545 | 0.00340923 | 0.5212 |
| 10 | 6.6690781 | 0.00177693 | 0.5212 |
| 11 | 6.66907882 | 0.00092616 | 0.5212 |
| 12 | 6.66907902 | 0.00048273 | 0.5212 |
| ⋯ 38 | 6.66907909 | 2.12e-11 | 0.5212 |
| 39 | 6.66907909 | 1.10e-11 | 0.5212 |
| 40 | 6.66907909 | 5.76e-12 | 0.5212 |
| 41 | 6.66907909 | 3.00e-12 | 0.5213 |
| 42 | 6.66907909 | 1.56e-12 | 0.5211 |
| 43 | 6.66907909 | 8.15e-13 | 0.5214 |
λ = xᵀAx / xᵀx = 6.66907909
잔차 = ‖Ax − λx‖ = 8.15e-13역거듭제곱법도 레일리 몫은 원래 행렬 A로 잽니다. 알고 싶은 것이 A의 고윳값이기 때문입니다.
계산 방법
- 1정사각행렬을 줄마다 한 행씩 넣습니다.
- 2반복 이력의 「앞 단계 대비」 열이 어떤 값으로 다가가는지 봅니다. 그것이 수렴 속도입니다.
- 3수렴하지 않으면 크기가 같은 고윳값이 둘 있는 경우인지 확인합니다.
- 4가장 작은 고윳값이나 특정 값 근처를 찾으려면 역거듭제곱법으로 바꾸고 σ를 넣습니다.
자주 묻는 질문
아무 벡터에나 행렬을 거듭 곱하면 절댓값이 가장 큰 고윳값의 고유벡터 쪽으로 쏠리기 때문입니다. 시작 벡터를 고유벡터들의 합으로 적으면 Aᵏx₀ = λ₁ᵏ(c₁v₁ + c₂(λ₂/λ₁)ᵏv₂ + …)이 되어 작은 고윳값 쪽 항이 사그라듭니다. 고윳값은 레일리 몫 λ = xᵀAx/xᵀx로 읽습니다.
두 번째로 큰 고윳값과의 비 |λ₂/λ₁|가 1에 가깝기 때문입니다. 이 비가 0.5면 반복마다 오차가 절반씩 줄지만 0.99면 백 번을 돌려도 거의 그대로입니다. 이 계산기는 반복마다의 잔차비를 표로 내어 실측 속도가 그 비로 다가가는 것을 보여 줍니다.
크기가 같은 고윳값이 둘 있는 경우일 수 있습니다. λ = +3과 −3처럼 부호만 다르거나 켤레복소수 쌍(회전행렬이 그렇습니다)이면 벡터가 두 방향 사이를 영원히 오갑니다. 거듭제곱법이 원리상 풀 수 없는 경우이므로 반복을 늘려도 소용이 없습니다.
역거듭제곱법으로 바꾸고 σ를 0으로 두면 됩니다. (A − σI)⁻¹의 고윳값이 1/(λᵢ − σ)이므로 σ에 가까운 λᵢ가 가장 크게 부풀려져 먼저 나옵니다. σ를 3 근처로 두면 3에 가장 가까운 고윳값이 나오는 식입니다.
수치는 불안정해 보이지만 오히려 더 빨리 수렴합니다. A − σI가 거의 특이해져 풀이의 오차가 커지는데, 그 오차가 마침 우리가 찾는 고유벡터 방향으로 커지기 때문입니다. 다만 σ가 고윳값과 정확히 같으면 특이행렬이 되어 풀 수 없습니다.
고유값 계산기는 「고윳값이 얼마인가」를 특성방정식으로 답하고, 이 계산기는 「어떻게 찾는가」와 「얼마나 빨리 찾는가」를 보입니다. 특성방정식은 4×4를 넘으면 근을 구할 수 없지만 거듭제곱법은 크기에 제한이 없어, 실제 수치 라이브러리가 큰 행렬에 쓰는 방법의 바탕이 됩니다.
대칭행렬에서 고유벡터의 오차가 ε일 때 레일리 몫의 오차가 ε²이기 때문입니다. 벡터가 아직 어설퍼도 고윳값은 이미 상당히 정확합니다. 성분 하나를 골라 비를 재는 방법은 그 성분이 0에 가까우면 크게 흔들립니다.
전송되지 않습니다. 계산은 모두 브라우저 안에서 이루어지고 넣은 값은 이 기기에만 남습니다.
알아두면 좋은 점
- 절댓값이 가장 큰 고윳값이 하나뿐일 때만 수렴합니다. ±3처럼 크기가 같으면 영원히 진동합니다.
- 켤레복소수 고윳값 쌍도 실수 벡터로는 수렴하지 않습니다. 회전행렬이 그런 예입니다.
- 수렴 속도는 |λ₂/λ₁|입니다. 1에 가까울수록 느립니다.
- 대칭행렬이면 야코비 회전법으로 참값을 함께 구해 대조합니다.
- 역거듭제곱법에서 σ가 고윳값과 정확히 같으면 A − σI가 특이해 풀 수 없습니다.
- 레일리 몫은 역거듭제곱법에서도 원래 행렬 A로 잽니다.
- 6×6까지, 반복은 500번까지 다룹니다.
함께 보면 좋은 도구
마지막 검증: 2026년 9월 2일 · 결과는 참고용 추정치입니다.