diff --git a/ex-3_50-62.scm b/ex-3_50-62.scm index 0bbf4ae..3bee6df 100644 --- a/ex-3_50-62.scm +++ b/ex-3_50-62.scm @@ -258,8 +258,25 @@ (display "\nex-3.61 - invert-unit-series\n") -(define (invert-unit-series s) 0) +(define (invert-unit-series s) + (cons-stream 1 (mul-series (stream-map - (stream-cdr s)) + (invert-unit-series s)))) +(define X (invert-unit-series cosine-series)) -(display "\nex-3.62\n") +(assert (sum (take 10 (mul-series cosine-series X))) + 1) + +(display "\nex-3.62 - tan\n") + +(define (div-series ns ds) + (if (= (stream-car ds) 0) + (error "denominator is zero -- DIV-SERIES" ds) + (mul-series ns (invert-unit-series ds)))) + +(define tan-series (div-series sine-series cosine-series)) + +(assert (< (abs (- (exact->inexact (sum (take 20 + (div-series sine-series cosine-series)))) + 1.5574)) 0.001) #t)