1.6. 가우스-자이델 방법(Gauss-Seidel method)

Table of Contents

  1. 선형연립방정식의 수치해법
    1. 선형연립방정식(linear system)
    2. 크래머 공식(Cramer’s rule)
    3. 가우스 소거법(Gaussian elimination)
    4. 벡터 노름(norm)과 행렬-노름(matrix-norm)
    5. 반복법과 야코비 방법(Jacobi method)
    6. 가우스-자이델 방법(Gauss-Seidel method)
  2. 고윳값 방정식의 수치해법
    1. 고윳값(eigenvalue)과 고유벡터(eigenvector)
    2. 거듭제곱방법(power method)
    3. 역거듭제곱방법(inverse power method)
    4. QR 분해(QR decomposition)을 이용한 방법
  3. 선형회귀(linear regression)
    1. 단순선형회귀(simple linear regression)
    2. 다중선형회귀(multiple linear regression)
    3. 다항회귀(polynomial regression)
  4. 방정식의 수치해법
    1. 이분법(bisection method)
    2. 뉴턴-랩슨 방법(Newton-Raphson method)
    3. 할선법(secant method)
    4. 고정점 반복법(fixed-point iteration method)
    5. 기타 방정식의 수치해법
  5. 보간법(interpolation)
    1. 라그랑주 보간법(Lagrange interpolation)
    2. 뉴턴의 분할차분법(divided difference method)
    3. 에르미트 보간법(Hermite interpolation)
  6. 스플라인(spline)
    1. 일차 스플라인(linear spline)
    2. 이차 스플라인(quadratic spline)
    3. $n$차 스플라인(spline)
  7. 최적근사함수
    1. 직교다항식(orthogonal polynomial)
    2. 최적최소근사다항함수(best approximating polynomial)
  8. 수치미적분법
    1. 테일러 수치미분법(Taylor numerical differentiation)
    2. 리차드슨 외삽법(Richardson extrapolation)
    3. 수치적분법(numerical integration)
    4. 복합수치적분법(composite numerical integration)
    5. 가우스 구적법(Gaussian quadrature)
  9. 초깃값 문제의 수치해법
    1. 오일러 방법(Euler method)
    2. 테일러 방법(Taylor method)
    3. 룽게-쿠타 방법(Runge-Kutta method)
    4. 연립일계상미분방정식과 고계상미분방정식
  10. 경곗값 문제의 수치해법
    1. 유한차분법(finite difference method)
    2. 사격법(shooting method)
    3. 유한요소법(finite element method)

가우스-자이델 방법(Gauss-Seidel method)

행렬 $A \in \mathbb{R}^{n \times n}$의 대각 성분 아래 성분만으로 이루어진 하삼각행렬을 $L$, 대각성분만으로 이루어진 대각행렬을 $D$, 그리고 대각성분 위에 있는 성분만으로 이루어진 상삼각행렬을 $U$라 하면 \[ A = L + D + U \] 와 같이 두었을 때, $N = D+L$, $P = -U$로 정의하여 반복법을 수행하는 것을 가우스-자이델 방법(Gauss-Seidel method)이라 한다. 가우스-자이델 방법을 적용하면 \[ (D+L) \mathbf{x}^{(k)} = \mathbf{b} -U\mathbf{x}^{(k-1)} \] 또는 위 식을 정리하여 \[ \mathbf{x}^{(k)} = D^{-1} \big[ \mathbf{b} - L \mathbf{x}^{(k)} - U \mathbf{x}^{(k-1)} \big] \] 을 얻고, 위 식에서 벡터 $\mathbf{x}^{(k)}$의 $i$번째 성분은 \[ x^{(k)}_i = \frac{1}{a_{ii}} \Bigg[ b_i - \sum_{j=1}^{i-1} a_{ij}x^{(k)}_j - \sum_{j=i+1}^{n} a_{ij} x^{(k-1)}_j \Bigg] \] 로 주어진다. 가우스-자이델 방법에서는 $\Norm{(D+L)^{-1}U} < 1$이 성립하면 임의의 초기벡터 $\mathbf{x}^{(0)}$에 대한 벡터열 $(\mathbf{x}^{(k)})$가 실제 선형연립방정식의 해로 수렴한다.

$ $

참고. 야코비 방법과 가우스-자이델 방법에서 새로운 벡터 $x^{(k)}$의 $i$번째 성분 $x^{(k)}_i$를 계산하는 과정을 비교해보자.

  • 야코비 방법에서는 이전 벡터 $x^{(k-1)}$의 성분 $x^{(k-1)}_j$, $j = 1,\, \ldots,\, i-1,\, i+1,\, \ldots,\, n$만을 사용한다.
  • 가우스-자이델 방법에서는 이전 벡터 $x^{(k-1)}$의 성분 $x^{(k-1)}_j$, $j = i+1,\, \ldots,\, n$ 뿐만 아니라 새로운 벡터의 성분 $x^{(k)}_j$, $로j = 1,\, \ldots,\, i-1$ 또한 사용하게 된다.

새로운 벡터의 성분 $x^{(k)}_j$들이 이전 벡터의 성분 $x^{(k-1)}_j$들 보다 개선된 것이므로, 해가 수렴한다고 가정하면 가우스-자이델 방법의 수렴 속도가 대체적으로 야코비 방법의 수렴 속도보다 빠르다고 할 수 있다.$ $

$ $

예제 1.6.1.
Q. 선형연립방정식의 첨가행렬이 다음과 같이 주어졌다고 하자. \[ [ A \,|\, \mathbf{b} ] = \left[ \, \begin{array}{rrr|r} 4 & 1 & -1 & 4 \\ 1 & -4 & 2 & -1 \\ 0 & -3 & 4 & 1 \end{array} \, \right] \] 이 때, 초기값을 $\mathbf{x}^{(0)} = (0,\, 0,\, 0)$으로 하고 가우스-자이델 방법을 이용하여 해를 구하여라.
A. 가우스-자이델 방법을 이용하여 $\mathbf{x}^{(1)},\, \mathbf{x}^{(2)}$를 구해보자. \begin{align*} \mathbf{x}^{(1)} & = (D+L)^{-1} \big( \mathbf{b} -U\mathbf{x}^{(0)} \big) \\[1ex] & = \begin{bmatrix} \frac{1}{4} & 0 & 0 \\ \frac{1}{16} & -\frac{1}{4} & 0 \\ \frac{3}{64} & -\frac{3}{16} & \frac{1}{4} \end{bmatrix} \left( \begin{bmatrix} 4 \\ -1 \\ 1 \end{bmatrix} - \begin{bmatrix} 0 & 1 & -1 \\ 0 & 0 & 2 \\ 0 & 0 & 0 \end{bmatrix} \begin{bmatrix} 0 \\ 0 \\ 0 \end{bmatrix} \right) \\[1ex] & = \begin{bmatrix} 1 \\ \frac{1}{2} \\ \frac{5}{8} \end{bmatrix} \\[2ex] \mathbf{x}^{(2)} & = (D+L)^{-1} \big( \mathbf{b} -U\mathbf{x}^{(1)} \big) \\[1ex] & = \begin{bmatrix} \frac{1}{4} & 0 & 0 \\ \frac{1}{16} & -\frac{1}{4} & 0 \\ \frac{3}{64} & -\frac{3}{16} & \frac{1}{4} \end{bmatrix} \left( \begin{bmatrix} 4 \\ -1 \\ 1 \end{bmatrix} - \begin{bmatrix} 0 & 1 & -1 \\ 0 & 0 & 2 \\ 0 & 0 & 0 \end{bmatrix} \begin{bmatrix} 1 \\ \frac{1}{2} \\ \frac{5}{8} \end{bmatrix} \right) \\[1ex] & = \begin{bmatrix} \frac{33}{32} \\[1ex] \frac{105}{128} \\[1ex] \frac{443}{512} \end{bmatrix} \eqqed \end{align*}

$ $

참고. 실제로 MATLAB을 이용하여 $\norm{\mathbf{x}^{(k)} - \mathbf{x}^{(k-1)}} < 0.00001$을 만족할 때까지 가우스-자이델 방법을 반복하면, 가 되어 총 $k=12$번의 가우스-자이델 방법의 반복 계산을 통해 $\mathbf{x} = (1,\, 1,\, 1)$이 해가됨을 알 수 있다.$ $

$ $

축차가속완화법(SOR 방법)(successive over-relaxation method)

벡터 $\mathbf{x}^{(k-1)}$로부터 새로운 벡터 $\mathbf{x}^{(k)}$를 찾는 과정을 생각해 보자. \[ \mathbf{x}^{(k)} = \mathbf{x}^{(k-1)} + (\mathbf{x}^{(k)} - \mathbf{x}^{(k-1)}) \] 로 나타낼 수 있으므로, $\mathbf{x}^{(k)}$는 $\mathbf{x}^{(k-1)}$로부터 $\mathbf{x}^{(k)} - \mathbf{x}^{(k-1)}$ 방향으로 이동한 것이라 볼 수 있다.

$ $

$ $

이 벡터열이 선형연립방정식의 해 $\bar{\mathbf{x}}$로 수렴한다고 가정하면, $\mathbf{x}^{(k-1)}$로부터 $\mathbf{x}^{(k)} - \mathbf{x}^{(k-1)}$ 방향으로 더 많이 이동을 하는 것이 $\bar{\mathbf{x}}$에 좀 더 가까이 다가간다고 할 수 있다. 이러한 아이디어를 적용한 것을 축차가속완화법(SOR 방법)(successive over-relaxation method)이라 한다.

$ $

이제 SOR 방법을 통해 $\hat{\mathbf{x}}^{(k-1)}$를 얻었다 가정하고, $\hat{\mathbf{x}}^{(k-1)}$에 가우스-자이델 방법을 적용하면 \[ \mathbf{x}^{(k)} = D^{-1} \big[ \mathbf{b} - L \mathbf{x}^{(k)} - U \hat{\mathbf{x}}^{(k-1)} \big] \] 을 얻는다. 위 식의 양변에 $\hat{\mathbf{x}}^{(k-1)}$를 빼주고 식을 정리하면 \begin{align*} \mathbf{x}^{(k)} - \hat{\mathbf{x}}^{(k-1)} & = D^{-1} \big[ \mathbf{b} - L \mathbf{x}^{(k)} - U \hat{\mathbf{x}}^{(k-1)} \big] - \hat{\mathbf{x}}^{(k-1)} \\ & = D^{-1} \big[ \mathbf{b} - L \mathbf{x}^{(k)} - (D+U) \hat{\mathbf{x}}^{(k-1)} \big] \end{align*} 을 얻는다. 이제 위 식 우변의 $\mathbf{x}^{(k)}$을 $\hat{\mathbf{x}}^{(k)}$로 바꾼 \[ D^{-1} \big[ \mathbf{b} - L \hat{\mathbf{x}}^{(k)} - (D+U) \hat{\mathbf{x}}^{(k-1)} \big] \] 을 $\hat{\mathbf{x}}^{(k-1)}$로부터 $\hat{\mathbf{x}}^{(k)}$를 얻기 위해 이동해야할 방향으로 설정한다. 따라서 적당한 완화 변수(relaxation parameter) $1 < \omega < 2$에 대하여 \begin{align*} \hat{\mathbf{x}}^{(k)} & = \hat{\mathbf{x}}^{(k-1)} + \omega(\hat{\mathbf{x}}^{(k)} - \hat{\mathbf{x}}^{(k-1)}) \\ & = \hat{\mathbf{x}}^{(k-1)} + \omega D^{-1} \big[ \mathbf{b} - L \hat{\mathbf{x}}^{(k)} - (D+U) \hat{\mathbf{x}}^{(k-1)} \big]. \end{align*} 마찬가지로 벡터 $\hat{\mathbf{x}}^{(k)}$의 $i$번째 성분에 대한 계산을 살펴보면 \[ \hat{x}^{(k)}_i = \hat{x}^{(k-1)}_i + \frac{\omega}{a_{ii}} \Bigg[ b_i - \sum_{j=1}^{i-1} a_{ij}\hat{x}^{(k)}_j - \sum_{j=i}^{n} a_{ij} \hat{x}^{(k-1)}_j \Bigg] \] 를 얻는다.

$ $

이제 SOR 방법에서 $\hat{\mathbf{x}}^{(k)}$에 대한 닫힌 형태의 점화식을 구해보자. 우선 식 \[ \hat{\mathbf{x}}^{(k)} = \hat{\mathbf{x}}^{(k-1)} + \omega D^{-1} \big[ \mathbf{b} - L \hat{\mathbf{x}}^{(k)} - (D+U) \hat{\mathbf{x}}^{(k-1)} \big] \] 의 양변에 $\frac{1}{\omega}D$를 곱하면 \[ \frac{1}{\omega}D \hat{\mathbf{x}}^{(k)} = \frac{1}{\omega}D \hat{\mathbf{x}}^{(k-1)} + \big[ \mathbf{b} - L \hat{\mathbf{x}}^{(k)} - (D+U) \hat{\mathbf{x}}^{(k-1)} \big] \] 이다. 따라서 위 식을 정리하여 \begin{align*} \hat{\mathbf{x}}^{(k)} & = \Big( L + \frac{1}{\omega} D \Big)^{-1} \Big[ \mathbf{b} - \Big( \frac{\omega - 1}{\omega}D + U \Big) \hat{\mathbf{x}}^{(k-1)} \Big] \\[1ex] & = \big( \omega L + D \big)^{-1} \big[ \omega \mathbf{b} - \big( (\omega - 1)D + \omega U \big) \hat{\mathbf{x}}^{(k-1)} \big] \end{align*} 를 얻는다. 이를 통해 $\Norm{(\omega L + D)^{-1} ((\omega - 1)D + \omega U)} < 1$이 성립할 때, 임의의 초기벡터 $\mathbf{x}^{(0)}$에 대한 벡터열 $(\mathbf{x}^{(k)})$가 선형연립방정식의 해로 수렴함을 확인할 수 있다.

$ $

참고. SOR 방법에서 완화 변수 $\omega = 1$인 경우, 가우스-자이델 방법으로 환원된다.$ $

$ $

예제 1.6.1.
Q. 선형연립방정식의 첨가행렬이 다음과 같이 주어졌다고 하자. \[ [ A \,|\, \mathbf{b} ] = \left[ \, \begin{array}{rrr|r} 4 & 1 & -1 & 4 \\ 1 & -4 & 2 & -1 \\ 0 & -3 & 4 & 1 \end{array} \, \right] \] 이 때, 초기값을 $\mathbf{x}^{(0)} = (0,\, 0,\, 0)$으로 하고 완화 변수를 $\omega = 1.1$로 하여 SOR 방법을 이용하여 해를 구하여라.
A. MATLAB을 이용하여 $\norm{\mathbf{x}^{(k)} - \mathbf{x}^{(k-1)}} < 0.00001$을 만족할 때까지 SOR 방법을 반복하면, 가 되어 총 $k=7$번의 SOR 방법의 반복 계산을 통해 $\mathbf{x} =$ $(1,\, 1,\, 1)$이 해가됨을 알 수 있다.$ $

$ $

대각지배행렬(diagonally dominant matrix)

행렬 $A = [a_{ij}] \in \mathbb{R}^{n \times n}$의 대각성분의 절대값이 그 행의 대각성분을 제외한 나머지 성분의 절대값의 합보다 클 때, 다시 말해 각각의 $i$에 대하여 \[ \abs{a_{ii}} > \sum_{\substack{j = 1 \\ j \neq i}}^{n} \abs{a_{ij}} \] 가 성립할 때, $A$를 강대각지배(strictly diagonally dominant) 행렬이라 한다. 한편, 위 부등식에서 $>$가 $\geq$인 경우, $A$를 대각지배(diagonally dominant) 행렬이라 한다.

$ $

행렬 $A = \begin{bmatrix} 4 & 1 & -1 \\ 1 & -4 & 2 \\ 0 & -3 & 4 \end{bmatrix}$의 경우, \begin{align*} \abs{a_{11}} & = \abs{4} > \abs{1} + \abs{-1} = \abs{a_{12}} + \abs{a_{13}} \\[1ex] \abs{a_{22}} & = \abs{-4} > \abs{1} + \abs{2} = \abs{a_{21}} + \abs{a_{23}} \\[1ex] \abs{a_{33}} & = \abs{4} > \abs{0} + \abs{-3} = \abs{a_{31}} + \abs{a_{32}} \end{align*} 이 모두 성립하므로 $A$는 강대각지배 행렬이다.

$ $

다음 정리는 어떠한 행렬에 대하여 반복법의 수렴성이 보장되는지를 알려준다.

$ $

정리 1.6.2.

행렬 $A = [a_{ij}] \in \mathbb{R}^{n \times n}$에 대하여,

  • $A$가 강대각지배 행렬이면, 임의의 초기벡터에 대하여 야코비 방법과 가우스-자이델 방법으로 구한 벡터열은 선형연립방정식의 해로 수렴한다.
  • $A$가 양의 정부호 행렬이면, 임의의 초기벡터에 대하여 가우스-자이델 방법으로 구한 벡터열은 선형연립방정식의 해로 수렴한다.
  • $A$가 양의 정부호 행렬이고 $0 < \omega < 2$이면, 임의의 초기벡터에 대하여 SOR 방법으로 구한 벡터열은 선형연립방정식의 해로 수렴한다.

$ $

참고. $1 < \omega < 2$인 경우, 가속완화(over-relaxation)가 되어 수렴속도가 느린 반복법에서 수렴속도를 향상시키고자 할 때 사용되고, 반대로 $0 < \omega < 1$인 경우 감속완화(under-relaxation)가 되어 반복법이 발산할 때 수렴성을 보장받거나 오버슈팅을 방지하기 위하여 사용된다.$ $

$ $