summaryrefslogtreecommitdiff
path: root/coding-exercises/1/36.rkt
diff options
context:
space:
mode:
Diffstat (limited to 'coding-exercises/1/36.rkt')
-rw-r--r--coding-exercises/1/36.rkt39
1 files changed, 39 insertions, 0 deletions
diff --git a/coding-exercises/1/36.rkt b/coding-exercises/1/36.rkt
new file mode 100644
index 0000000..a785d8a
--- /dev/null
+++ b/coding-exercises/1/36.rkt
@@ -0,0 +1,39 @@
+#lang racket
+(require sicp)
+
+(define (fixed-point damper f first-guess)
+ (define (close-enough? v1 v2)
+ (< (abs (- v1 v2)) 0.0001))
+ (define (try guess)
+ (let ((next (damper guess (f guess))))
+ (newline)
+ (display next)
+ (if (close-enough? guess next)
+ next
+ (try next))))
+ (try first-guess))
+
+(define (golden-ratio)
+ (fixed-point
+ (lambda (x) (+ 1 (/ 1 x)))
+ 1.0))
+
+(define (log1000)
+ (fixed-point
+ (lambda (guess next)
+ next)
+ (lambda (x) (/ (log 1000) (log x)))
+ 2.0))
+
+(define (log1000-average-damped)
+ (define (average a b)
+ (/ (+ a b) 2))
+ (fixed-point
+ (lambda (guess next)
+ (average guess next))
+ (lambda (x) (/ (log 1000) (log x)))
+ 2.0))
+
+(log1000)
+(println " *** second time")
+(log1000-average-damped)