Exercise 1.36. Modify fixed-point so that it prints the sequence of approximations it generates, using the newline and display primitives shown in exercise 1.22. Then find a solution to xx = 1000 by finding a fixed point of x log(1000)/log(x). (Use Scheme’s primitive log procedure, which computes natural logarithms.) Compare the number of steps this takes with and without average damping. (Note that you cannot start fixed-point with a guess of 1, as this would cause division by log(1) = 0.)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| (define tolerance 0.00001) | |
| (define (fixed-point f first-guess) | |
| (define (close-enough? v1 v2) | |
| (newline) | |
| (display "old guess ") | |
| (display v1) | |
| (newline) | |
| (display "new guess ") | |
| (display v2) | |
| (newline) | |
| (< (abs (- v1 v2)) tolerance)) | |
| (define (try guess) | |
| (let ((next (f guess))) | |
| (if (close-enough? guess next) | |
| next | |
| (try next)))) | |
| (try first-guess)) | |
| (define f (lambda (x) (/ (log 1000) (log x)))) | |
| (fixed-point f 4.0) | |