]> git.rkrishnan.org Git - sicp.git/blobdiff - src/sicp/ex1_46.clj
solutions to 4.38, 4.39 and 4.40
[sicp.git] / src / sicp / ex1_46.clj
index 0cf3d0caf356df1ea8cb834e19e77cf44e9d3e7d..3b21dbd747ab2d60f810e0f143b53891e39979b4 100644 (file)
@@ -13,7 +13,7 @@
   (let [initial-guess 1.0]
     ((iterative-improve
       (fn [old new] (< (Math/abs (- old new)) 0.00001))
-      (fn [guess] (average guess x)))
+      (fn [guess] (average guess (/ x guess))))
      initial-guess)))
 
 (defn fixed-point [f initial-guess]
     (fn [old new] (< (Math/abs (- old new)) 0.00001))
     f) initial-guess))
 
+(deftest test-sqrt-4
+  (is #(< (Math/abs (- (sqrt 4) (Math/sqrt 4))) 0.00001)))
+
+(deftest test-sqrt-10
+  (is #(< (Math/abs (- (sqrt 10) (Math/sqrt 10))) 0.00001)))
+
+(deftest test-fixed-point-cos
+  (is (fn [_] (< (Math/abs (- (fixed-point #(Math/cos %) 1.0)
+                             0.7390822))
+                0.00001))))
+
+(deftest test-fixed-point-cos-plus-sin
+  (is (fn [_] (< (Math/abs (- (fixed-point #(+ (Math/cos %) (Math/sin %)) 1.0)
+                             1.258731))
+                0.00001))))
+
+
+
 (comment
-(sqrt 4)
-;;=> 3.9999942779541016
-user> (sqrt (* 2 2))
-;;=> 3.9999942779541016
 user> (fixed-point #(Math/cos %) 1.0)
 ;;=> 0.7390822985224024
 user> (fixed-point #(+ (Math/cos %) (Math/sin %)) 1.0)
 ;;=> 1.2587315962971173  
-)
\ No newline at end of file
+)
+