# An RC circuit  Figure 3.33: An RC circuit and the associated signal-flow diagram.

We can model electrical circuits using streams to represent the values of currents or voltages at a sequence of times. For instance, suppose we have an `RC` circuit consisting of a resistor of resistance `R` and a capacitor of capacitance `C` in series. The voltage response `v` of the circuit to an injected current `i` is determined by the formula in figure 3.33, whose structure is shown by the accompanying signal-flow diagram.

Write a procedure `RC` that models this circuit. `RC` should take as inputs the values of `R` , `C` , and `dt` and should return a procedure that takes as inputs a stream representing the current `i` and an initial value for the capacitor voltage `v₀` and produces as output the stream of voltages `v` . For example, you should be able to use `RC` to model an `RC` circuit with `R = 5` ohms, `C = 1` farad, and a `0.5` -second time step by evaluating `(define RC1 (RC 5 1 0.5))` . This defines `RC1` as a procedure that takes a stream representing the time sequence of currents and an initial capacitor voltage and produces the output stream of voltages.

##### Authentication required

``````(define (stream-car stream) (car stream))

(define (stream-cdr stream) (force (cdr stream)))

(define (stream-ref s n)
(if (= n 0)
(stream-car s)
(stream-ref (stream-cdr s) (- n 1))))

(define (stream-map proc . list-of-stream)
(if (null? (car list-of-stream))
'()
(cons-stream
(apply proc
(map (lambda (s)
(stream-car s))
list-of-stream))
(apply stream-map
(cons proc (map (lambda (s)
(stream-cdr s))
list-of-stream))))))

(define (scale-stream stream factor)
(stream-map (lambda (x) (* x factor)) stream))

(stream-map + s1 s2))

(define ones (cons-stream 1 ones))

(define integers (cons-stream 1 (add-streams ones integers)))

(define (integral integrand initial-value dt)
(define int
(cons-stream initial-value