-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy path1.37.scm
51 lines (41 loc) · 1.62 KB
/
1.37.scm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
(define (cont-frac n d k)
(define (cont-frac-body count)
(if (> count k)
0
(/ (n count) (+ (d count) (cont-frac-body n d k (+ count 1))))))
(cont-frac-body 1))
(define (cont-frac-iter n d k)
(define (cont-frac-iter-body count result)
(if (= count 0)
result
(cont-frac-iter-body (- count 1)
(/ (n count)
(+ (d count) result)))))
(cont-frac-iter-body k 0))
(define (get-k k)
(if (< (abs (- (cont-frac (lambda (i) 1.0)
(lambda (i) 1.0)
k) target)) 0.00001)
(begin (display "K is ") (display k) (newline)
(display target) (display "-") (display (cont-frac (lambda (i) 1.0)
(lambda (i) 1.0)
k)) (newline))
(get-k (+ k 1))))
(define (get-k-iter k)
(if (< (abs (- (cont-frac (lambda (i) 1.0)
(lambda (i) 1.0)
k) target)) 0.00001)
(begin (display "K is ") (display k) (newline)
(display target) (display "-") (display (cont-frac (lambda (i) 1.0)
(lambda (i) 1.0)
k)) (newline))
(get-k-iter (+ k 1))))
(cont-frac (lambda (i) 1.0)
(lambda (i) 1.0)
10)
(cont-frac-iter (lambda (i) 1.0)
(lambda (i) 1.0)
10)
(define target (/ 1 (/ (+ 1 (sqrt 5)) 2)))
(get-k 1)
(get-k-iter 1)