이 문제는 fixed-point 프로시저에 쓰이는 어림값(approximations)을 출력하고,

x |-> log(1000)/log(x)의 고정점(fixed point)을 찾아

x^x = 1000에 맞는 x를 찾는 문제입니다.

그리고 함수값의 평균을 할 때와 그렇지 않을 때의 차이를 알아봐야합니다.

 

먼저 (newline)과 (display guess)로 어림값을 출력하게 코드를 수정하였습니다.

그리고 고정점을 찾도록 추가하였습니다.

c21

책에도 적혀있지만, 어림값을 1.0으로 할 경우 분모가 0이 되므로 문제가 발생합니다.

그렇기에 2.0을 넣었습니다.

 

그리고 실행을 시켰습니다.

c22

위의 것이 그냥 식을 넣을 때, 밑의 것이 평균을 넣었을 때입니다.

이 둘의 결과값이 다른 것처럼 보이지만,

허용 오차(error tolerance)를 0.00001로 잡았기 때문입니다.

 

첫 번째는 34번의 과정을 거쳐서, 두 번째는 9번의 과정을 거쳐서 나왔습니다.

대략 3.8배의 차이를 보여주는군요.

이 정도 성능 차이라면 최소 한 번은 고려하지 않을까 싶습니다.^^

 

 

참조

Structure and Interpretation of Computer Programs 2/E - Page 90

크리에이티브 커먼즈 라이선스
Creative Commons License

글에 잘못된 점, 다른 점, 부족한 점이 있다면 지적해주세요.
댓글, 트랙백, 메일 모두 고맙습니다.

트랙백 주소 :: http://nosyu.pe.kr/trackback/1276

댓글을 달아 주세요

[로그인][오픈아이디란?]