Add test integral from the book
This commit is contained in:
parent
255723b1fe
commit
c2f671c8dd
|
@ -45,6 +45,23 @@
|
|||
(if (= a 0) 1 b))
|
||||
(try 0 (/ 1 0))))
|
||||
|
||||
(define lazy-integral-program
|
||||
'((define (integral integrand initial-value dt)
|
||||
(define int
|
||||
(cons initial-value
|
||||
(add-lists (scale-list integrand dt)
|
||||
int)))
|
||||
int)
|
||||
|
||||
(define (solve f y0 dt)
|
||||
(define y (integral dy y0 dt))
|
||||
(define dy (map f y))
|
||||
y)
|
||||
|
||||
(define solution (solve (lambda (x) x) 1 0.001))
|
||||
|
||||
(list-ref solution 1000)))
|
||||
|
||||
(#%require rackunit)
|
||||
|
||||
(module+ test
|
||||
|
@ -60,7 +77,9 @@
|
|||
(analyzing-eval-program (fib-program 5)))
|
||||
(check-equal? (dd-eval-program (fib-program 5))
|
||||
(lazy-eval-program (fib-program 5)))
|
||||
(check-equal? (lazy-eval-program lazy-test-program) 1))
|
||||
(check-equal? (lazy-eval-program lazy-test-program) 1)
|
||||
(check-= (lazy-eval-program lazy-integral-program) 2.7169 0.01)
|
||||
)
|
||||
|
||||
(module+ timing
|
||||
(define dd-fib (time-proc 100 (lambda () (dd-eval-program (fib-program 10)))))
|
||||
|
|
Loading…
Reference in New Issue