학창시절 수학 공부하면서 지겹도록 방정식을 풀어 보았을 겁니다.
그런데 아십니까? 우리가 손으로 풀던 문제들은, 딱 손으로 풀 수 있는 정도의 계산량만 요구하는 "연습용" 문제일 뿐이라는 걸요.
실제 현실에서 부닥치는 여러가지 문제들을 방정식으로 모델링하고 이를 풀려고 하면 절대로 손으로 (혹은 대수적으로) 풀 수 없는 경우가 태반입니다.
객관식 문제라면 보기 몇개를 거꾸로 대입시켜 해결할 수 있을 것입니다만... 현실은 주관식이어서 대입해야 할 수는 거의 무한대에 가깝습니다. 이럴 때 필요한 것이 초당 몇백만 번을 계산할 수 있는 컴퓨터의 계산 능력입니다.
이번 장에서 살펴 볼 방정식의 근 찾기 문제는 수치해석(Numerical Analysis)의 가장 전형적인 형태입니다. 기본적으로 빠른 계산 능력을 믿고 방정식에 대입시켜보는 전략이지만, 무한대의 후보를 모두 할 수는 없기에, 어떻게 범위를 좁혀서 효율적으로 근을 찾아내는 지가 관건입니다.
이 문제를 해결하기 위해 제시된 여러가지 해법 중에서 대표적인 것들을 알아 봅니다.
강의 자료
강의 동영상
25.0 방정식 근 찾기 - 시작 : 이번 장에서는 대수적으로 풀기 힘든 방정식을 컴퓨터의 뛰어난 연산 능력을 활용하여 해결하는 방법을 알아 봅니다. 빠짐없이 빠르게 근을 찾기 위한 여러가지 알고리즘들을 비교 분석해 볼 예정입니다.
25.1 방정식 근 찾기 - 개요 : 이 장에서는 f(x) = 0 형태의 방정식에서 x를 찾는 문제를 해결해 볼 겁니다. 여러가지 방법들이 있지만 각자의 특성과 장단점이 틀리기 때문에 잘 이해해야 문제에 따라 적합한 방법을 적용할 수 있습니다.
25.2 이분법 (Bisection Method) : 이분법은 <중간값 정리>라는 명제를 기반으로 하는 방정식 풀이법입니다. 이 명제에 의하면 f(x1)f(x2) < 0인 x1과 x2를 잡아야 하고, 이 구간 내에서 f(x)가 연속이어야 하는 조건을 만족해야 합니다. 이것만 만족한다면 매우 효율적으로 근을 찾아낼 수 있습니다.
25.3 Regular Falsi 법 : Regular Falsi법은 이분법과 동일한 조건을 필요로 합니다. 하지만 다른 점은 대부분의 경우 근에 대한 수렴이 이분법 보다 빠르다는 겁니다. 이는 단순히 2등분 하기 보다는, 양 구간 끝의 값을 보고 더 적극적으로 근에 다가가는 방법을 쓰기 때문입니다. 하지만 몇가지 함정이 있기 때문에 끝까지 봐야 합니다.
25.4 시컨트 법 (Secant Method) : 시컨트법은 이분법과 달리 f(x1)과 f(x2)의 부호가 달라야 한다는 전제조건에서 자유롭습니다. 임의의 두 점을 선택한 뒤, 이 두점을 지나는 직선을 그어 근에 다가가는 방법입니다.
25.5 뉴턴법 (Newton's Method) : 뉴턴의 업적은 많지만, 그 중에서 미적분학의 체계를 세웠다는 것이 매우 중요합니다. 뉴턴법은 함수 f와 이의 미분함수 f'가 있다면 어떤 한 점에서 시작하여 근을 찾을 수 있다는 원리입니다. 미분은 대수적 풀이가 용이하기 때문에 그리 까다로운 조건은 아닙니다.
25.6 근 찾기 함수 사용법 : 여러 알고리즘을 함수로 구현했으므로 이를 활용하여 실제로 근을 찾는 법을 시연해 봅니다. 문제에 따라 다르겠지만, 제가 테스트한 3차 방정식의 경우 뉴턴법이 계산 횟수가 가장 적었습니다.
25.9 방정식 근 찾기 - 결론 : 근을 찾는 알고리즘은 특성이 다르므로, 풀려는 방정식의 종류에 따라 적절한 방법을 택해야 합니다. 그리고 컴퓨터가 수를 다루는 원리상, 언제나 오차가 있을 수 있다는 점을 염두에 두어야 합니다.
관련글 |
- C++로 배우는 알고리즘
- 24장 : 행렬 (Matrix)
- 26장 : 수치 미적분
피드 구독하기:
댓글 (Atom)
인기글
-
언젠가부터 내 스마트폰에서 용량이 부족 하다면서 계속 알림이 떴다. 저가폰이라 내부저장소가 16GB 밖에 되지 않았지만, 추가로 마이크로SD 카드 16GB를 달았는데도 그렇다. 안드로이드가 앱을 설치하고 필요한 데이터를 저장하는 곳은 특별히 지정하...
-
사람들은 메이드인 차이나라 그러면 업신여기는 경향이 있지만, 요즘 웬만한 제조물품들은 중국도 꽤나 잘 만든다. 아니 샤오미나 팍스콘을 보면 꽤나 잘 만드는 정도가 아니라 아주 잘 만든다. 중국이 세계의 공장이 되면서 미국도 그렇고, 우리나라도 그렇...
-
나는 무려 10년이 된 Java 프로젝트를 여러개 관리하고 있는데, Netbeans와 Ant 기반의 개발/빌드 환경을 사용한다. Netbeans는 Sun이 Oracle로 넘어간 뒤에 Apache 재단으로 넘어가면서 개발 동력이 많이 떨어져 있다...
댓글 없음:
댓글 쓰기