[수치해석]newton-raphson법을 이용한 방정식의 근 구하기
- 최초 등록일
- 2005.11.26
- 최종 저작일
- 2005.06
- 11페이지/ 한컴오피스
- 가격 1,000원
소개글
newton-raphson법을 이용하여 C코드로 방정식의 해를 구하는 수치해석 소스입니다. 3차 방정식의 실근을 구하는 코드도 포함돼 있으니 참고로 재출하시면 좋을듯하네요.
목차
없음
본문내용
▶결과분석
♣결과 값의 확인♣
x 값을 원식에 대입하면, f(0.474572) = -0.000001 으로 유효숫자가 7자리 인 것을 고려하면, 충분히 참인 값으로 생각할 수 있다.
실제로, Matlab 으로 방정식의 해를 계산한 결과 x=0.4746 (나머지 두 근은 1.3641, 6.1563) 으로 계산 되었고, 이것으로 수치해석을 통해 해를 정확하게 구한 것을 확인 할 수 있다.
♣초기값에 따른 결과♣
각각의 초기값에따라 같은 결과값이 나왔지만, 4.2일때는 9번의 계산 만에 답을 구하였고, 4.43 일때는 25번의 계산이 필요했다. 우선, 그래프를 통해 그 이유를 설명하면,
--
위 두 그래프는 초기값 x0=4.2 ,4.43 일때의 f(x)와의 접선을 나타낸다. 육안으로 확인 할 수 있듯이 붉은색의 x0=4.2 에서의 접선은 -5<x<-4 에서 다음 값(x1)이 결정된다(계산 결과 x1=-4.849116). 반면에, 파란색의 x0=4.43 에서의 접선은 기울기가 거의 0에 가까워서 초기값에서 멀리 떨어진 곳(계산결과 x1= -3937.783447)에서 다음 값이 결정된다.
다음으로 해석적인 방법으로 설명하면,
f(x)의 미분식을 이용해 각각의 초기값에서의 기울기 f`(x)를 구하면, f`(4.2)=-1.14 이고
f`(4.43)=-0.0027 이다. 즉, x=4.43 일때 접선의 기울기가 매우 작아서 현재의값(xi)과 다음 추측값(xi+1)의 차가 매우 커지게 된다 - Matlab으로 계산한 결과 x=4.4305 일때 기울기가 ‘0’ 이됨. 만약 실험이나 물리적인 고찰을 통해 4.43 근처에 해가 있음을 알았다고 하여 그 값을 초기값으로 정하면 위와 같이 계산량이 급격하게 늘어날 수 있고 경우에따라 발산할 수도 있다. 이를 방지하기 위해 f`(x)의 절대값이 어느정도 이하가되면 (예를들어|f`(x)|<0.0001) 사용자에게 경고하거나 적당한 다른 값으로 계산하도록 하는 알고리즘이 포함될 수 있겠다. 물론 그래프를 그려보는 방법이 가장 확실한 방법이다.
참고 자료
없음