Data commit

This commit is contained in:
Ingy döt Net 2023-07-01 11:58:00 -04:00
parent 7387c8f97b
commit cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions

View file

@ -0,0 +1,30 @@
(require 'timer)
;; returns an 'object' : (&lamdba; message [values])
;; messages : input, output, sample, inspect
(define (make-active)
(let [
(t0 #f) (dt 0)
(t 0) (Kt 0) ; K(t)
(S 0) (K 0)]
(lambda (message . args)
(case message
((output) (// S 2))
((input ) (set! K (car args)) (set! t0 #f))
((inspect) (printf " Active obj : t0 %v t %v S %v " t0 t Kt (// S 2 )))
((sample)
(when (procedure? K)
;; recved new K : init
(unless t0
(set! t0 (first args))
(set! t 0)
(set! Kt (K 0)))
;; integrate K(t) every time 'sample message is received
(set! dt (- (first args) t t0)) ;; compute once K(t)
(set! S (+ S (* dt Kt)))
(set! t (+ t dt))
(set! Kt (K t))
(set! S (+ S (* dt Kt)))))
(else (error "active:bad message" message))))))

View file

@ -0,0 +1,19 @@
(define (experiment)
(define (K t) (sin (* PI t )))
(define A (make-active))
(define (stop) (A 'input 0))
(define (sample t) (A 'sample (// t 1000)))
(define (result) (writeln 'result (A 'output)))
(at 2.5 'seconds 'result)
(every 10 'sample) ;; integrate every 10 ms
(A 'input K)
(wait 2000 'stop))
(experiment) →
3/7/2015 20:34:18 : result
result 0.0002266920372221955
(experiment) →
3/7/2015 20:34:28 : result
result 0.00026510586971023164