본문 바로가기

공학 문제해결/수학

【수치해석】 Gauss-Seidel법, Jacobi 반복법 예제 풀이

"이 사람을 만나 사랑을 할 수 있게 해주셔서 감사해요."

"닮아가는 서로를 보며 행복을 느끼게 해주셔서 감사해요."



안녕하세요. 이번 포스팅에서는 수치해석 중에서 Gauss-Seidel법Jacobi 반복법에 대해 알아보도록 하겠습니다. 1차 선형방정식 2개를 예시로 가져와서 풀이해보겠습니다. 두 방법다 반복적으로 계산하여 방정식의 정답을 찾아가는 과정이기 때문에, 3~4번 정도만 반복해보고 정답과 비교해보도록 하겠습니다. 어느 방정식에서 어느 방법을 사용하느냐의 문제는 이번 예제에서는 고려하지 않겠습니다. 수치해석적인 방법에는 여러가지가 존재하기 때문에 다양한 조건을 비교해봐야합니다. 이번 예제는 다음과 같은 선형방정식 2개를 가지고 풀어보겠습니다.

<예제로 풀 선형 방정식 2개>


  1. Guass-Seidel법 (가우스-사이달법) 풀이

1-1) 우선, 첫번째 방정식으로 x1을 남기고 우측으로 넘겨주고, 두번째 방정식으로 x2만 남기고 우측으로 넘겨줍니다. 그리고 변수가 2개밖에 없는 선형방정식이기 때문에 답을 바로 아실 수 있으실 텐데요. 답은 x1 =1, x2 =2입니다. 참고만하고 그대로 풀어보겠습니다.


1-2) 다음으로, 위 방정식에서 x1 = x2 = 0 으로 가정하여 대입합니다. 이때가 1번째 계산입니다.


위와 같이 각 변수의 값을 1번째 계산으로 부터 구할 수 있습니다. 이때, 두번째줄에 있는 x2에는 바로 위에서 구한, x1이 대입된다는 점을 주의해야합니다.

1-3) 다음으로 2번째 계산입니다. 바로 위에서 구한 값들을 다음 차례에 계속 대입합니다.


1-4) 다음으로 3번째 계산입니다. 주의! 무조건 다음 계산에 바로 이전에 계산된 모든 값들을 대입해야합니다.


위와 같이, 3번째 계산을 했습니다. x1은 1.0625로 참값인 1과 아주 가까운 상태이고, x2도 1.96875이므로 참값인 2와 아주 가까운 상태입니다. 이대로 1~2번 정도 더 계산해주면 참값과 아주 근접한 값을 얻을 수 있습니다. 가우스-사이달법은 이러한 방법으로 선형 방정식의 참값을 구하는 수치해석적 방법입니다. 아래에서도 같은 방정식으로 Jacobi 반복법을 통해서 문제를 풀어볼텐데 아주 비슷하다는 것을 알 수 있을 겁니다.



  1. Jacobi (자코비) 반복법 풀이

이번 방법은 위에서 소개된 Guass-Seidel법과는 조금 다릅니다. 다른 부분은 다음 계산때까지 계산된 모든 변수의 값을 이전 계산에서 사용된 값을 그대로 이용한다는 것입니다. 자세한 것은 문제풀이를 통해 보여드리겠습니다.

2-1) 처음 식은 위 가우스-사이달법의 1-1)방법과 동일하게 아래처럼 x1, x2를 정의합니다.


2-2) 첫번째 계산입니다. x1 = x2 = 0으로 가정하여 대입합니다.


여기서 중요한 주의할 점은, x2를 계산할 때에 처음 가정한 0의 값을 대입했다는 것입니다. 이전 가우스-사이달법에서는 x1을 구하자마자 x2에 대입했습니다. 하지만, 자코비 반복법에서는 다음 계산때까지는 절대로 이전의 계산값을 대입하지 않습니다. 

2-3) 두번째 계산입니다. 위에서 계산된 x1, x2를 대입합니다.


2-4) 세번째 계산입니다.


2-5) 네번째 계산입니다.


위와 같이 네번째까지 계산함으로, 참값인 1과 2에 어느정도 근접해보입니다. 가우스-사이달법보다 이번에는 참값에 수렴하는 속도가 많이 느립니다. 위 문제에서는 3번만에 참값에 가까워졌지만, 이번 문제는 4번의 계산에도 불구하고 아직 참값에 근접하지 못했습니다. 이번 방정식에서는 이렇게 가우스-사이달법이 더 우수한 성질을 나타냈습니다. 하지만, 다른 방정식은 특성 자체가 달라지기 때문에 자코비 반복법이 더 우수한 성질을 나타낼 때도 있다는 점 알아주시길 바랍니다. 이상! 궁금한 점은 댓글을 남겨주시길 바랍니다. 



  • 감사합니다 2018.03.20 20:07 신고 댓글주소 수정/삭제 댓글쓰기

    이해가 정말 쏙쏙 돼써요! 그런데 처음 가우스 사이달법에서 x1=0으로 가정한 것 아닌가요? x1=x2=0이라고 돼있네용!

    • 이해가 잘되셔서 다행이네요! 감사합니다!
      처음에 x1과 x2를 0으로 가정하고 바로 x1을 구하기위해서 x2가 0이라는것을 대입했습니다. 그렇게 나온 x1값을 다음 계산에 사용하게됩니다. 따라서 처음에 x1을 0으로 가정한게 큰 의미는 없다고 봐도 무방할것같습니다!

  • 궁금한 점이 있는데요 2018.04.29 22:28 신고 댓글주소 수정/삭제 댓글쓰기

    가우스 사이달에서 x2=0 으로 시작하셨는데 만약에 x1=0 으로 시작하면 그 다음엔 x2=4, x1=-3, x2=10, x1=-15 ... 이런 식으로 오히려 답에서 멀어지는데 그럼 다른 경우에 x1 또는 x2 중 어느 것을 0으로 시작 해야되는 지는 어떻게 알 수 있나요?

    • x2 =0으로 시작된 이유가 x1의 식에 포함되어있기 때문입니다. x1부터 가정을 대입하면서 푸는 방법이기 때문에 x1을 먼저 풀게되면 그 식에서 x2=0이라는 값이 먼저 사용된거에요. 그리고 그 값에서 x1값이 처음 가정한 값인 0이 아닌값이 나오게되서 x2에서는 다시 x1값이 새로운값이 되는거에요!
      집가는 길에 걸어가면서 작성하는거라 이해가되실지 모르겠네요!

  • 열유체공학도 2019.01.09 22:30 신고 댓글주소 수정/삭제 댓글쓰기

    어떤 책보다도 쉬운 예제로 쉽게 설명한 포스트인 것 같습니다.! 보통 설명 가능해도 번거러워서 올리지않는데 많은 사람들에게 도움될 것 같아요 ㅎ 쉽고 유용한 자료에 감탄하고 갑니다. 감사합니다.!

    • 자세한 칭찬 감사합니다!! 조금 늦게 답변을 달게 되었는데 늦은 시간에 좋은 댓글 보고 자려고 하니 기분이 좋네요!!

      요새는 바쁜 일이 있어서 포스팅이 늦어지는데 빠른 시일 내로 다시 열심히 포스팅해 보도록 하겠습니다 ㅎㅎ 다시 한번 감사드리고 건승하시길 바랍니다!^^