Implement till 3.62

main
Felix Martin 2021-01-03 07:59:39 -05:00
parent 8837835e01
commit b8bb0df585
2 changed files with 79 additions and 0 deletions

View File

@ -187,4 +187,79 @@
'(1 2 3 4 5 6 8 9 10 12))
(display "\nex-3.57\n")
(display "[answered]\n")
; With memoizing only one addition is required per number. So the complexity is
; O(n). With memoizing the previous numbers have to be calculated recursively
; which leads to exponential growth.
(display "\nex-3.58 - expand\n")
(define (expand num den radix)
(cons-stream
(quotient (* num radix) den)
(expand (remainder (* num radix) den) den radix)))
(assert (take 5 (expand 1 7 10))
'(1 4 2 8 5))
(assert (take 5 (expand 3 8 10))
'(3 7 5 0 0))
; The procedure expands a fraction (num/dem) into the rational value to base
; radix.
(display "\nex-3.59 - sine/cosine series\n")
(define (integrate-series xs)
(define (iter n xs)
(cons-stream (* (/ 1 n) (stream-car xs))
(iter (+ n 1) (stream-cdr xs))))
(iter 1 xs))
(define (integrate-series xs)
(stream-map * (stream-map / ones integers) xs))
(assert (take 5 (integrate-series integers))
'(1 1 1 1 1))
(define exp-series
(cons-stream 1 (integrate-series exp-series)))
(define (sum xs)
(if (null? xs)
0
(+ (car xs) (sum (cdr xs)))))
(assert (sum (take 5 exp-series))
(/ 65 24))
(define cosine-series
(cons-stream 1 (stream-map - (integrate-series sine-series))))
(define sine-series
(cons-stream 0 (integrate-series cosine-series)))
(assert (sum (take 10 sine-series))
(/ 305353 362880))
(display "\nex-3.60 - mul-series\n")
(define add-series add-streams)
(define (mul-series s1 s2)
(cons-stream (* (stream-car s1) (stream-car s2))
(add-streams (scale-stream (stream-cdr s2) (stream-car s1))
(mul-series (stream-cdr s1) s2)))))
(assert (sum (take 10 (add-series (mul-series cosine-series cosine-series)
(mul-series sine-series sine-series))))
1)
(display "\nex-3.61 - invert-unit-series\n")
(define (invert-unit-series s) 0)
(display "\nex-3.62\n")

4
ex-3_63-xx.scm Normal file
View File

@ -0,0 +1,4 @@
(load "util.scm")
(display "\nex-3.63\n")