Add test integral from the book

This commit is contained in:
Oliver Payne 2023-10-19 22:29:06 +01:00
parent 255723b1fe
commit c2f671c8dd
1 changed files with 20 additions and 1 deletions

View File

@ -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)))))