실베스터 공식

편집 역사 토론
수치해석 마지막 수정: 2026-08-09 04:52:38

1. 개요[편집]

실베스터 공식
Sylvester's formula
진술고유값이 서로 다르면 $f(A) = \sum_i f(\lambda_i)A_i$
$A_i$프로베니우스 공변량 = 스펙트럼 사영자
일반형라그랑주-실베스터 — 스펙트럼 위의 에르미트 보간
출처Sylvester 1883 · Buchheim 1886 (중근 확장)
수치적 지위이론 도구. 비정규 행렬에서는 쓰지 않는다
실무 대안스케일링-제곱 파데 · 슈어-파를레

행렬함수를 정의하는 데 필요한 것은 고유값에서의 ff 값뿐이다. 그리고 정확히 그 사실 때문에 이 공식으로 계산하면 안 된다.

실베스터 공식(Sylvester’s formula)은 서로 다른 고유값 λ1,,λn\lambda_1,\dots,\lambda_n 을 갖는 n×nn\times n 행렬 AA 와 그 스펙트럼 위에서 정의된 함수 ff 에 대해

f(A)=i=1nf(λi)Ai,Ai=jiAλjIλiλjf(A) = \sum_{i=1}^{n} f(\lambda_i)\,A_i, \qquad A_i = \prod_{j\ne i}\frac{A-\lambda_j I}{\lambda_i - \lambda_j}

가 성립한다는 결과다. AiA_i프로베니우스 공변량(Frobenius covariant)이라 부른다.

식의 모양을 보면 정체가 바로 드러난다. AiA_i 는 노드 λ1,,λn\lambda_1,\dots,\lambda_n 에 대한 라그랑주 기저 다항식 i(λ)\ell_i(\lambda)AA 를 대입한 것이다. 즉 이 공식이 말하는 바는 ”f(A)=p(A)f(A) = p(A), 여기서 pp 는 고유값에서 ff 를 보간하는 다항식”이라는 한 문장이고, 이 문서의 나머지는 전부 그 문장을 일반화하고 반박하는 이야기다.

케일리-해밀턴 정리가 ”f(A)f(A) 는 차수 n1n-1 이하 다항식으로 정확히 쓸 수 있다”까지 말해 줬다면, 실베스터 공식은 그 계수를 명시적으로 준다. 1883년 J. J. 실베스터가 서로 다른 고유값의 경우를 발표했고, 1886년 부흐하임이 중근까지 다룰 수 있게 확장했다.1

2. 프로베니우스 공변량 = 스펙트럼 사영자[편집]

AiA_i 들은 그냥 계수 행렬이 아니라 기하학적 의미가 뚜렷하다.

Ai2=Ai,AiAj=O (ij),iAi=I,AAi=λiAiA_i^2 = A_i, \qquad A_iA_j = O\ (i\ne j), \qquad \sum_i A_i = I, \qquad AA_i = \lambda_i A_i

AiA_i 는 고유값 λi\lambda_i 의 고유공간 위로, 나머지 고유공간을 따라 사영하는 사영자다. f=1f = 1 을 넣으면 셋째 항등식이, f(λ)=λf(\lambda)=\lambda 를 넣으면 스펙트럼 분해 A=iλiAiA = \sum_i \lambda_i A_i 가, f(λ)=λkf(\lambda)=\lambda^k 를 넣으면 Ak=iλikAiA^k = \sum_i \lambda_i^k A_i 가 공짜로 나온다. 마지막 것에서 λ1>λ2|\lambda_1| > |\lambda_2| \ge \cdots 이면 kk\to\infty 에서 AkA^kλ1kA1\lambda_1^k A_1 에 지배된다는 사실이 즉시 보이는데, 이것이 거듭제곱법의 수렴을 한 줄로 설명하는 방식이며 선형계의 모드 분해 그 자체다.

우·좌 고유벡터로 쓰면 랭크 1임이 드러난다.

Ai=viwiHwiHviA_i = \frac{v_i w_i^{H}}{w_i^{H}v_i}

여기가 결정적이다. vi,wiv_i, w_i 를 단위 노름으로 잡으면 Ai2=1/wiHvi=1/si\|A_i\|_2 = 1/|w_i^Hv_i| = 1/s_i 이고, sis_i 는 정확히 고유값 λi\lambda_i 의 조건수의 역수다. 즉 공변량의 크기 자체가 그 고유값이 얼마나 민감한지를 재는 양이다. 수치적 파국의 씨앗이 여기 심겨 있다.

가장 자주 손으로 쓰는 사례는 2×22\times2 지수함수다.

eAt=eλ1t(Aλ2I)eλ2t(Aλ1I)λ1λ2e^{At} = \frac{e^{\lambda_1 t}(A-\lambda_2 I) - e^{\lambda_2 t}(A-\lambda_1 I)}{\lambda_1 - \lambda_2}

감쇠 진동계, 2자유도 계, 1차 회로 — 손계산이 가능한 세계에서는 이 공식이 왕이다. 단위 축 반대칭행렬 KK 는 고유값이 0,±i0, \pm i 라 세 항짜리 실베스터가 되고, 정리하면 회전행렬의 로드리게스 공식 R=I+sinθK+(1cosθ)K2R = I + \sin\theta\,K + (1-\cos\theta)K^2 가 그대로 떨어진다.

3. 중근이 있을 때 — 라그랑주-실베스터[편집]

고유값이 겹치면 λiλj\lambda_i - \lambda_j 분모가 죽으므로 위 공식을 못 쓴다. 일반형은 최소다항식 mA(λ)=i=1s(λλi)mim_A(\lambda) = \prod_{i=1}^{s}(\lambda-\lambda_i)^{m_i} 을 기준으로 미분값까지 동원한다.

f(A)=i=1sj=0mi1f(j)(λi)j!Zijf(A) = \sum_{i=1}^{s}\sum_{j=0}^{m_i-1}\frac{f^{(j)}(\lambda_i)}{j!}\,Z_{ij}

여기서 ZijZ_{ij}ff 와 무관하게 AA 만으로 정해지는 성분행렬이다. 그런데 이 합류형(confluent form)을 성분행렬로 외우는 것보다 훨씬 유용한 동치 진술이 있다.

f(A)=p(A)f(A) = p(A). 여기서 ppdegp<degmA\deg p < \deg m_A 이면서 모든 ii, 모든 j=0,,mi1j = 0,\dots,m_i-1 에 대해 p(j)(λi)=f(j)(λi)p^{(j)}(\lambda_i) = f^{(j)}(\lambda_i) 를 만족하는 에르미트 보간 다항식이다.

이 조건을 만족하는 다항식은 유일하므로, 위 식은 정리가 아니라 행렬함수의 정의로 채택할 수 있다. 하이엄의 Functions of Matrices 가 실제로 이것을 정의로 쓰는데, 조르당 형도 대각화 가능성도 요구하지 않기 때문이다. 따라오는 귀결이 셋이다.

  • f(A)f(A)ff 와 그 도함수의 스펙트럼 위 값에만 의존한다. 스펙트럼 밖에서 아무리 다르게 생긴 두 함수도 거기서 일치하면 같은 행렬을 준다. A=IA = Iff 가 무엇이든 f(A)=f(1)If(A) = f(1)I 다.
  • ffλi\lambda_i 에서 mi1m_i-1 번 미분 가능해야 한다. “스펙트럼 위에서 정의된다”의 정확한 의미가 이것이고, 특이행렬의 제곱근이나 로그가 곧바로 막히는 지점이다.2
  • ppAA 에 의존한다. 보편적 근사식이 아니다. 행렬이 바뀌면 스펙트럼이 바뀌고, 보간 노드가 바뀌고, 계수를 처음부터 다시 만들어야 한다.

4. 왜 계산에는 쓰지 않는가[편집]

세 갈래로 무너진다.

첫째, 고유분해가 전제된다. 공변량을 만들려면 고유값 전부와 (실질적으로) 고유벡터 전부가 필요하고, 그 위에 nn 개의 n1n-1 항 곱을 조립해야 한다. 3×33\times3 을 손으로 다룰 때는 우아하지만 n=1000n = 1000 이면 논외다.

둘째, 분모의 상쇄. 두 고유값이 가깝지만 다를 때 Ai1/λiλj\|A_i\| \sim 1/|\lambda_i-\lambda_j| 로 폭발하는데 최종 합은 O(1)O(1) 이다. 거대한 항들이 서로 지워져 작은 답을 만드는 전형적 파국이며, 유효숫자가 통째로 증발한다. 위의 2×22\times2 eAte^{At} 공식에서 λ1λ2\lambda_1 \to \lambda_2 를 시켜 보면 즉시 0/0 이 되고, 참값은 eλt(I+t(AλI))e^{\lambda t}\bigl(I + t(A-\lambda I)\bigr) 인데 부동소수점은 그 극한에 “거의 같은 두 수를 빼서” 도달하려 한다. 합류형으로 분기하면 되지 않냐고? “가깝다”는 부동소수점에서 잘 정의된 술어가 아니다. 어디서 분기할지를 정하는 문턱값이 곧 답을 정하게 된다.

셋째, 비정규성. 위에서 본 대로 Ai=1/si\|A_i\| = 1/s_i 다. 비정규 행렬에서는 고유값이 서로 멀리 떨어져 있어도 sis_i101010^{-10} 일 수 있고, 그러면 O(1)O(1) 짜리 답을 101010^{10} 짜리 항들의 합으로 계산하게 된다. 결함행렬이면 고유벡터 기저 자체가 존재하지 않으므로 아예 출발도 못 한다. 같은 이야기를 κ(V)\kappa(V) 의 언어로 하면 행렬 지수함수 문서의 “고유분해 경로”가 무너지는 그 대목이다.

그래서 실무 도구상자는 전부 다른 길로 갔다.

  • 스케일링-제곱 + 파데 근사. 지수·로그의 표준. 고유값을 아예 계산하지 않는다는 것이 요점이다.
  • 슈어-파를레(Davies–Higham 2003). 유니터리 상사변환으로 A=QTQHA = QTQ^H 를 만들고(슈어 분해, κ=1\kappa=1), TT 의 대각을 재정렬해 가까운 고유값끼리 같은 블록에 모은다. 각 대각 블록에는 블록 평균 주위의 테일러 급수를 쓰고, 비대각 블록 FijF_{ij} 는 파를레 점화식 — 형태상 실베스터 방정식 TiiFijFijTjj=(이미 아는 항들)T_{ii}F_{ij} - F_{ij}T_{jj} = (\text{이미 아는 항들}) — 을 풀어 채운다. 여기서 블록 나누기가 하는 일이 정확히 “어느 고유값들을 중근으로 취급할 것인가”에 대한 공차 기반 답변이고, 정확 산술의 중복도를 대체하는 수치적 대응물이다.3
  • 등고선 적분과 크릴로프. 리스 사영자의 정의 Ai=12πiΓi(zIA)1dzA_i = \frac{1}{2\pi i}\oint_{\Gamma_i}(zI-A)^{-1}dz 는 중근이 있어도 살아남고, 원 위의 사다리꼴 적분이 기하급수적으로 수렴한다. FEAST나 사쿠라이-스기우라 같은 등고선 적분 고유해석기가 이 형태를 실제로 계산한다.4 f(A)bf(A)b 만 필요하면 크리로프 부분공간법으로 작은 부분공간에 사영한 뒤 거기서 행렬함수를 계산한다.

패턴이 보인다. 살아남은 것은 “사영자”라는 개념이고 죽은 것은 “곱셈 공식”이다. 스펙트럼을 점의 집합으로 보는 관점이 뭉치의 집합으로 바뀐 것이며, 의사스펙트럼이 하는 것과 정확히 같은 이동이다.

5. 그럼에도 남는 값어치[편집]

계산에 못 쓴다고 쓸모없는 것은 아니다.

행렬함수의 기본 성질들이 ”f(A)f(A)AA 의 다항식”이라는 한 줄에서 전부 떨어진다. f(A)f(A)AA 와 교환하고, f(XAX1)=Xf(A)X1f(XAX^{-1}) = Xf(A)X^{-1} 이며, AA 가 실수이고 ff 가 실축에서 실수값이면 f(A)f(A) 도 실행렬이다. AA 가 상삼각이면 f(A)f(A) 도 상삼각이고 대각에 f(tii)f(t_{ii}) 가 온다 — 슈어-파를레의 출발점이 이것이다.

또 하나는 언어로서의 가치다. 모드 해석에서 x(t)=ieλitAix0x(t) = \sum_i e^{\lambda_i t}A_i x_0 라고 쓰는 모드 중첩, 제어에서 극점별 응답 분해, 축소차수모델에서 지배 모드만 남기는 절단 — 전부 스펙트럼 사영자의 합으로 쓰고 항 몇 개를 버리는 작업이다. 그리고 고유값 섭동 이론에서 λi\lambda_i 의 1차 변화가 tr(AiδA)\mathrm{tr}(A_i\,\delta A) 로 나오는 것도 같은 사영자다. 계산은 다른 도구에 맡기되, 무슨 일이 일어나고 있는지를 설명할 때는 여전히 이 공식으로 말한다.

6. 관련 문서[편집]

7. Footnotes[편집]

  1. 실베스터는 이름을 여기저기 붙여 놓은 사람이다. 관성 법칙(합동변환에서 부호 수가 보존된다), 실베스터 방정식 AX+XB=CAX+XB=C, 종결식(resultant)의 실베스터 행렬이 전부 같은 사람 몫이고, 리아푸노프 방정식은 실베스터 방정식의 특수한 경우다. 심지어 “matrix”라는 단어를 선형대수 용어로 처음 쓴 것도 실베스터(1850)다.

  2. 특이행렬의 제곱근이 왜 막히는지는 이 조건이 정확히 말해 준다. λ=0\lambda = 0 이 지표 2 이상이면 \sqrt{\cdot} 의 1차 도함수 값 1/(20)1/(2\sqrt{0}) 이 필요해지는데 그게 없다. 반면 00 이 반단순(모든 블록이 1×11\times1)이면 값만 있으면 되므로 제곱근이 존재한다. ”AA 가 특이하면 제곱근이 없다”가 아니라 “0 고유값의 조르당 구조가 문제다”가 정확한 진술이다.

  3. 슈어-파를레의 블록 나누기 공차는 기본값이 0.10.1 이다. 상대오차 101610^{-16} 을 다루는 알고리즘의 심장부에 0.10.1 이라는 대범한 상수가 박혀 있는 것이 처음엔 이상해 보이는데, 이유는 정직하다. 파를레 점화식의 실베스터 방정식은 두 블록의 고유값이 가까울수록 병적이 되므로, 아예 넉넉하게 묶어 버리고 블록 안은 테일러로 처리하는 편이 안전하다.

  4. 등고선 적분이 사기처럼 잘 먹히는 이유는 주기함수의 사다리꼴 적분이 기하급수적으로 수렴하기 때문이다. 원 하나에 구적점 8~16개면 배정도 정확도가 나오는 경우가 흔하다. 대신 구적점마다 선형계 (zkIA)x=b(z_kI-A)x = b 를 풀어야 하고, 그 kk 개가 완벽하게 병렬이라 대형 병렬 기계에서 특히 사랑받는다.