SICP 問題 3.80
なかなかテスト通らなくて困りました.
結局iLを書く位置をvCの次にしたら動きました.
元々そこにはdvCがあって,
(scale-stream iL (/ -1 C)))
がiLの初期化前に行われたのが原因でした.
(define (RLC R L C dt) (lambda (vC0 iL0) (define vC (integral (delay dvC) vC0 dt)) (define iL (integral (delay diL) iL0 dt)) (define dvC (scale-stream iL (/ -1 C))) (define diL (add-streams (scale-stream iL (- (/ R L))) (scale-stream vC (/ 1 L)))) (stream-map (lambda (x y) (cons x y)) vC iL))) (define RLC1 (RLC 1 1 0.2 0.1))
gosh> (stream-head (RLC1 10 0) 10) (10 . 0) (10.0 . 1.0) (9.5 . 1.9) (8.55 . 2.66) (7.220000000000001 . 3.249) (5.5955 . 3.6461) (3.77245 . 3.84104) (1.8519299999999999 . 3.834181) (-0.0651605000000004 . 3.6359559) (-1.8831384500000004 . 3.2658442599999997) done