Fri Feb 22 19:27:01 CET 2013

Z transform

For linear operations it might be possible to make an interpretation
that computes the Z transform.

Main trouble again is what to do with:
- multiple inputs (just have it compute complex gain, not z transform).
- feedback?

The question is: given an update function, what is the transfer
function with output feedback?  This is 1 / 1 + x right?

Nope, it's more interesting than that.  This is a "loop closing"
thing, since we have a generic formula.

This seems akin to partial derivatives.  Since everything is linear,
we can put a 1 in each of the state inputs subsequently and see what
comes out, then combine the results.  Is it possible to get the full
picture this way?

Another way is to compute it iteratively.  Trouble is that time
constants might be quite high.  Can they be artificially enhanced,
then compensated?

Hmm..  something simple is hidden here, but I can't see it.

It's a matrix inverse.

The matrix itself can be reconstructed by probing all inputs with 1
and 0.  Once obtained, it's just linear algebra.

It would be good to keep this composable, i.e. to be able to generate
C code that computes the transfer function.  This means that the
Gaussian elimination should be implemented directly instead of from a
library.  There's some old code somewhere..

First, focus on computing the system matrix.

Can this be done without performing a matrix inverse?  It doesn't seem
so, unless using some constraint propagation thing..  Functions can be
arbitrarily dense, so reducing it to a matrix seems simplest.

It's going a bit fast... really need a break.

- compositional?
- how to implement in-place algorithms?

One thing though: if this is a 1-1 transfer function, it might be
better to reduce it to fractional form first.