Sat Apr 20 22:02:59 EDT 2019
This will only work on linearized systems, so first create an autodiff
instance to be able to compute partial differentials.
So to implement autodiff, implement normal numbers.
EDIT: Almost done with that. Rest is easy to fill in.
EDIT: I've re-invented rai/ai-freq.rkt
;; Basic strategy:
;; - normal eval: eval parent semantics lifted over small signals (linear approx)
;; - feedback:
;; - split variables in parameter / signal
;; - compute output offsets
;; - compute differential matrix of update function
;; - return (memoized) z-dependent signals
;; - compute z-dependent transfer function from z, matrix
;; - apply transfer function
;; Obtain the frequency response of a linear system by first
;; probing the function for the linear system matrix, and then
;; compute the effect of feedback through matrix inversion
;; (solve linear system).