1. 개요
| 코시 행렬 Cauchy Matrix | |
|---|---|
| 정의 | |
| 가역 조건 | 끼리, 끼리 서로 다르고 |
| 행렬식 | 코시(1841)의 닫힌꼴 곱 공식 |
| 변위 구조 | (계수 1) |
| 대표 사례 | 힐베르트 행렬 |
| 빠른 연산 | 행렬-벡터 곱 FMM, 풀이 (GKO) |
| 응용 | MDS 소실 부호, 유리 보간, 구조 행렬 해법 |
모든 정사각 부분행렬이 가역인 행렬. 그 성질 하나로 데이터센터의 저장 장치를 지킨다.
코시 행렬(Cauchy matrix)은 두 점 집합 , 로
을 성분으로 갖는 행렬이다. 코시가 1841년에 그 행렬식의 닫힌꼴을 구했다. 반데르몽드 행렬, 토플리츠 행렬, 행켈 행렬과 함께 「 개 성분이 개 모수로 정해지는」 구조 행렬 집안의 대표 멤버다.
코시 행렬이 수치해석에서 중요한 이유는 세 가지다. 첫째, 행렬식·역행렬이 닫힌꼴로 나와 조건수가 극단적인 시험 행렬(대표가 힐베르트 행렬)을 정확히 다룰 수 있다. 둘째, 변위 계수가 1 이라 피벗팅을 포함한 가우스 소거를 에 할 수 있고, 토플리츠 계열을 이쪽으로 변환해 푸는 기법의 착지점이 된다. 셋째, 모든 정사각 부분행렬이 다시 코시 행렬이라 가역이므로, 유한체 위에서 최적 소실 부호의 생성 행렬로 쓰인다.
2. 행렬식과 역행렬
코시 행렬식.
분자는 반데르몽드 행렬식 두 개의 곱 꼴이다. 그래서 끼리, 끼리 모두 서로 다르면(그리고 분모가 정의되면) 반드시 가역이다. 4×4 무작위 예로 수치 행렬식과 공식을 비교하면 상대오차 로 일치한다.
부분행렬도 코시다. 행 와 열 를 고르면 그 부분행렬은 점 집합 , 로 만든 코시 행렬이고, 위 공식으로 행렬식이 0 이 아니다. 더 나아가 , , 이면 모든 소행렬식이 양수인 완전 양행렬(totally positive)이 된다. 5×5 예에서 251개 소행렬식을 다 계산해 확인했다1.
명시적 역행렬.
에 전체 역행렬이 나온다. 분자·분모가 모두 차의 곱이라 뺄셈이 원 데이터의 차에서만 일어나고, 그 차들이 정확하면 곱셈·나눗셈만 남아 상대오차가 성분 수준에서 작게 유지된다. 조건수가 인 행렬이라도 성분별로 정확한 역행렬을 얻을 수 있다는 뜻이다.
3. 힐베르트 행렬 — 가장 유명한 코시 행렬
, 로 두면 이므로
인 힐베르트 행렬이 된다. 단항식 의 위 그람 행렬이라, 단항식 기저로 최소제곱 다항식 맞춤을 하면 자연스럽게 나온다. 위 정렬 조건을 만족하므로 완전 양행렬이다. 조건수는
| 4 | 8 | 10 | 12 | 13 | |
|---|---|---|---|---|---|
| (배정밀도 계산값) |
로 대략 씩 커진다. 부터는 를 넘으므로 이 표의 마지막 두 값 자체가 이미 믿을 수 없는 숫자다. 에서 해가 모두 1 인 방정식을 부분 피벗 가우스 소거로 풀면 최대 오차가 다. 반면 역행렬은 정수 행렬이어서( 의 첫 행은 ) 위 닫힌꼴로 정확히 쓸 수 있다. 「조건수가 크다」와 「정확히 계산할 수 없다」 는 같은 말이 아니라는 교재용 증거다2.
조건수 실측이나 가우스 소거법의 성장 인자 시험에 힐베르트 행렬이 국룰처럼 쓰이는 이유가 이것이다. 정답을 정확히 알고, 크기 하나로 조건수를 마음대로 올릴 수 있다.
4. 변위 구조와 빠른 해법
, 라 하면 이므로
이다. 오른쪽의 계수(변위 계수)가 1 이다. 오른쪽이 계수 인 꼴 합이면 「코시 유사」 행렬이라 부르고, 처럼 개 숫자(생성자)로 저장된다.
GKO 알고리즘. 고흐베르크·카일라스·올셰브스키(1995)는 가우스 소거 한 단계가 코시 유사 구조를 보존한다는 점을 이용해, 행렬을 만들지 않고 생성자만 갱신하며 에 LU 분해를 한다. 핵심은 행 교환이 구조를 깨지 않는다는 것이다. 행을 바꾸면 의 대각 순서만 바뀌기 때문이다. 토플리츠 행렬의 레빈슨류 해법은 피벗팅을 못 해서 부분행렬이 특이에 가까우면 불안정해지는데, 토플리츠 행렬을 고속 푸리에 변환으로 코시 유사 행렬로 바꾼 다음 GKO 로 풀면 피벗팅이 있는 해법이 된다. 「구조를 바꿔서 피벗팅을 산다」 는 발상이다.
행렬-벡터 곱. 는 복소평면에서 점전하의 퍼텐셜 장(2차원 쿨롱 핵)과 같은 꼴이다. 그대로 계산하면 이지만, 제라술리스(1988)가 다항식 연산으로 을 보였고, 실무에서는 고속 다중극자법이 고정 정밀도에서 에 계산한다. 1차원 FMM 과 계층 행렬 문헌에서 코시 핵은 「멀리 떨어진 블록이 저계수」 라는 성질을 설명하는 가장 단순한 예다 — 와 가 잘 분리돼 있으면 를 짧은 급수로 분리할 수 있어 블록이 저랭크 근사된다.
높은 상대 정확도. 데멜(1999)은 코시 행렬과 그 친척들의 SVD 를 조건수와 무관하게 모든 특이값을 높은 상대 정확도로 계산하는 알고리즘을 냈다. 앞서 본 대로 소행렬식이 원 데이터의 차의 곱으로 정확히 표현되기 때문에 가능한 일이다. 힐베르트 행렬의 가장 작은 특이값( 이면 급)까지 유효숫자를 지킨다.
5. 소실 부호 — 부분행렬 가역성의 보상
개 데이터 블록에 개 패리티 블록을 붙여 아무 개가 사라져도 복구하려면, 생성 행렬 에서 의 모든 정사각 부분행렬이 가역이어야 한다(MDS 조건). 코시 행렬은 정의상 이 조건을 만족한다. 유한체 에서 서로 다른 원소 , 를 고르면 (표수 2 에서는 뺄셈이 덧셈) 가 그대로 MDS 패리티 행렬이 된다.
블뢰머 등(1995)의 코시 리드-솔로몬 부호는 여기에 한 단계를 더해, 원소 곱셈을 비트 행렬로 바꿔 인코딩·디코딩을 XOR 연산만으로 하게 만들었다. 유한체 곱셈표가 필요 없어 CPU 에서 빠르고, 분산 저장 시스템의 소실 부호 라이브러리(Jerasure 등)가 이 방식을 구현한다. 「행렬식 공식에서 0 이 안 나온다」 는 1841년의 대수 항등식이 RAID-6 너머의 저장 시스템을 지탱하는 셈이다3.
6. 유리 보간과의 연결
점 에 극을 둔 유리함수 로 데이터 를 보간하면 연립방정식의 행렬이 정확히 코시 행렬이다. 분자에도 자유도를 주는 일반화가 뢰브너 행렬 이고, 최근 유리 근사 알고리즘(AAA)과 모형 축약의 뢰브너 프레임워크가 이 행렬의 특이값 분해 위에서 돌아간다. 바리센트릭 보간의 가중치 공식이 코시 행렬식의 비와 같은 모양인 것도 우연이 아니다.
7. 관련 문서
- 반데르몽드 행렬 · 토플리츠 행렬 · 행켈 행렬 · 순환 행렬
- 조건수 · 가우스 소거법 · 바리센트릭 보간 · 저랭크 근사
- 고속 다중극자법 · 계층 행렬 · 고속 푸리에 변환
- 힐베르트 행렬 · 리드-솔로몬 부호 · AAA 알고리즘
8. Footnotes
이 문서의 주요 출처
- I. Gohberg, T. Kailath & V. Olshevsky (1995), Fast Gaussian elimination with partial pivoting for matrices with displacement structure, Math. Comp. 64(212), 1557-1576
- J. S. Plank & L. Xu (2006), Optimizing Cauchy Reed-Solomon codes for fault-tolerant network storage applications, IEEE NCA 2006, 173-180
- J. Demmel (1999), Accurate singular value decompositions of structured matrices, SIAM J. Matrix Anal. Appl. 21(2), 562-580
- A. Gerasoulis (1988), A fast algorithm for the multiplication of generalized Hilbert matrices with vectors, Math. Comp. 50(181), 179-188
의견을 반영할게요. 감사합니다.