가우스 소거법 (Gaussian elimination)

수학
한 줄 정의: 여러 개의 연립방정식을 행끼리 더하고 빼서 미지수를 하나씩 지워가며 순서대로 풀어내는 방법입니다.

쉽게 풀면

미지수가 3개, 4개로 늘어난 연립방정식을 손으로 대입해서 풀려면 매우 번거롭습니다. 가우스 소거법은 이를 기계적인 절차로 바꿔줍니다. 방정식들을 행렬 형태로 나란히 써놓고, "한 행에 적당한 수를 곱해 다른 행에서 빼면 특정 미지수의 계수를 0으로 만들 수 있다"는 성질을 반복해서 사용합니다. 이 과정을 순서대로 진행하면 맨 아래 행에는 미지수가 하나만 남게 되고, 그 값을 구한 뒤 위로 하나씩 대입해 올라가면(역대입) 모든 미지수를 구할 수 있습니다. 계단처럼 위에서부터 아래로 계수를 하나씩 지워나가는 모습 때문에 "행렬을 계단 모양(사다리꼴)으로 만든다"고 표현하기도 합니다.

왜 중요한가

가우스 소거법은 연립일차방정식을 푸는 가장 기본적인 수치 알고리즘으로, 공학 시뮬레이션, 회로 해석, 유한요소법, 최적화 문제 등 대규모 선형계를 다루는 거의 모든 분야의 계산 근간을 이룹니다. 새로운 수치해석 기법이나 알고리즘 개선을 다루는 논문에서도 가우스 소거법은 성능을 비교하는 기준선(baseline)으로 자주 등장합니다. 또한 LU 분해 등 더 발전된 행렬 분해 기법들이 가우스 소거법의 원리를 확장한 것이어서, 관련 연구를 이해하는 데 필수적인 개념입니다.

논문에서는 이렇게 쓰입니다

"연립일차방정식으로 표현된 시스템은 가우스 소거법을 이용해 수치적으로 풀었으며, 계산 복잡도는 O(n³)이다."

이 문장은 방정식을 손으로 풀지 않고 가우스 소거법이라는 표준화된 절차(알고리즘)를 이용해 컴퓨터로 계산했다는 뜻이며, 미지수 개수 n이 늘어날수록 계산량이 얼마나 늘어나는지도 함께 밝히고 있습니다.

"유한요소 모델에서 발생한 강성 행렬은 부분 피벗팅을 적용한 가우스 소거법으로 분해되었다."

구조공학 시뮬레이션 논문에서 대규모 행렬을 안정적으로 풀기 위해 피벗팅을 적용했음을 밝힐 때 쓰이는 표현이다.

"희소 행렬의 특성을 활용하여 가우스 소거법의 연산량을 줄이는 순서 재배열 기법을 적용하였다."

대규모 수치계산 논문에서 행렬의 특수한 구조를 이용해 계산 효율을 높이는 방법을 설명할 때 사용된다.

조금 더 깊게 보면

실제 수치계산에서는 가우스 소거법을 그대로 구현하기보다, 계산 과정에서 반올림 오차가 누적되는 것을 줄이기 위해 부분 피벗팅이나 완전 피벗팅을 함께 적용하는 경우가 대부분입니다. 또한 같은 계수 행렬로 여러 우변 벡터를 반복해서 풀어야 할 때는 소거 과정을 LU 분해 형태로 저장해두고 재사용하는 방식이 일반적으로 더 효율적입니다. 행렬의 크기가 매우 크고 대부분의 값이 0인 희소 행렬인 경우에는 소거 순서를 재배열해 채워짐(fill-in)을 최소화하는 기법이 함께 논의되곤 합니다.

주의할 점

가우스 소거법은 행렬식을 직접 계산하는 크래머 공식보다 미지수가 많을 때 훨씬 효율적입니다. 다만 계수가 0인 행이 중간에 나오면 행을 바꿔주는(피벗팅) 추가 절차가 필요하며, 이를 빠뜨리면 계산이 중단되거나 잘못된 답이 나올 수 있으므로 실제 구현에서는 이 부분에 주의해야 합니다.

관련 용어