update use/computation of sys._isstatic() by murrayrm · Pull Request #1117 · python-control/python-control

I asked ChatGPT how we should think about "static". I thought the answer was pretty good:

Prompt: Consider a nonlinear input/output system with input $u$ and output $y$. What does it mean for this input/output system to be a "static" system? Is there a common definition of "static"? Also, if the system is time-dependent, is the system still considered to be static? If so, what is the logic behind that terminology?

Response: A static system in the context of input/output systems refers to a system in which the output $y(t)$ at any given time $t$ depends only on the input $u(t)$ at that same time $t$, and not on past or future values of $u$. Mathematically, this can be expressed as:

$$ y(t) = f(u(t)) $$

for some function $f$, which can be nonlinear. This means that there is no memory or dynamics involved in the system—there is no dependency on past inputs, derivatives of the input, or any internal state that evolves over time.

Common Definition of "Static"

Yes, the term "static" is commonly used in this way to distinguish such systems from dynamic systems, where the output depends on past (or future) inputs, typically via differential or difference equations.

Time-Dependent Static Systems

If the system is explicitly time-dependent, meaning that the function ($f$) varies with time, i.e.,

$$ y(t) = f(t, u(t)), $$

then the system is still often considered static because at each time $t$, the output still depends only on the instantaneous input $u(t)$. The presence of explicit time dependence does not introduce memory or dynamics into the system—it only means that the input/output relationship is changing with time.

Logic Behind the Terminology

The key idea behind calling such systems "static" is that there is no dependence on past or future inputs—no accumulation of past states, no integration, no internal state evolution. Even if the system itself changes with time, as long as the output at each moment is determined purely by the input at that moment, the system remains static in this sense.

Thus, even with explicit time dependence, a system is still called "static" if it lacks memory or dynamic behavior.

Based on that, I think we should adopt the following definition: A static I/O system model is a model in which the output $y(t)$ at any given time $t$ depends only on the input $u(t)$ at that same time $t$, and not on past or future values of $u$. Thus a static system has no internal state, but may depend on time (not an issue now, but will be if/when we add in time dependence.