I haven’t delved deeply into Julia types/structs, and am curious about the LTI structure…
It appears to me that LTI is defined for finite dimensional systems only, i.e., no time delay, etc.
What is the internal storage structure for LTIs? Since state space form and transfer functions are equivalent from an input-output point of view, it should suffice to choose, say, state space form for storing a system. But is this the choice?
We have argued back and forth regarding how to store an LTI system internally. Right now we have both representations. Systems with time delays are not supported yet, but my colleague has an experimental implementation to be included in Controlsystems.jl when it’s ready.
I did lots of computations with polynomials for control systems with Mathematica ca. 1990 or so. At that time, Mathematica was totally rotten wrt numerics of polynomials; roots of polynomials were horribly wrong even for 10th order polynomials (MATLAB easily handled order 100 at that time).
My experience from that time: avoid working with polynomials, and use state space form. Not only because of Mathematica’s handling of polynomials at that time (I’m sure it is much, much better now), but simply because you easily get high order polynomials, and the chance of pole-zero cancellation is not very high because of numerical problems – so the utmost care must be shown. It was much less problematic to operate in state space form.
Anyways, good to hear of ideas of including time delay. Simple time delay is, of course, identical to inclusion of an advection PDE, i.e.,\frac{\partial y}{\partial t} = -v\frac{\partial y}{\partial z} where v is constant, y= y(t,z), and y(t,z=0) = y_0(t) — if you Laplace-transform this equation, you get y(s,z=L) = exp(-\tau s)y_0(s), where \tau =L/v. It would be interesting – perhaps some time in the future — to extend the description to a general, LTI consisting of PDAEs (partial + differential + algebraic + equation) instead of “just” ODE. A first approach should probably be to consider finite dimensional inputs u and outputs y, and not fully distributed systems.