Last Updated June 15, 2026
Delay, memory, and time-lagged dynamics explain why systems often respond after causes have already occurred. In systems modeling, delays help represent transport time, institutional response time, biological incubation, information lag, infrastructure repair, economic adjustment, ecological regeneration, and feedback processes that unfold over time rather than instantly.
These ideas matter for public health, climate feedback, resource regeneration, supply chains, financial adjustment, organizational response, infrastructure recovery, urban congestion, ecological resilience, and coupled human-natural systems.
This article introduces delay, memory, and time-lagged dynamics for systems modeling, including delayed feedback, lagged response, memory kernels, distributed delays, delay differential equations, oscillation, overshoot, policy resistance, numerical simulation, and responsible interpretation.

A delayed system is one in which the current rate of change depends not only on the present state, but also on past states, past inputs, past information, or accumulated history. This changes the meaning of causation in a model. A cause may already have occurred, but its effect may still be traveling through the system.
Why Delay Matters
Delay matters because systems rarely respond instantly. Decisions take time. Information travels. Infrastructure repairs are scheduled. Biological processes incubate. Resources regenerate slowly. Markets adjust unevenly. Policies are implemented after recognition, approval, funding, and coordination.
\frac{dx}{dt}=f(x(t),x(t-\tau))
\]
Interpretation: The current rate of change depends on the present state \(x(t)\) and a past state \(x(t-\tau)\).
When delay is ignored, models may overstate control, underestimate risk, miss oscillation, or misinterpret why interventions appear ineffective at first.
| Modeling question | Delay concept | Systems meaning |
|---|---|---|
| Why does response arrive late? | Time lag. | Effect follows cause after transport, decision, or processing time. |
| Why does correction overshoot? | Delayed feedback. | The system responds to outdated information. |
| Why does the past still matter? | Memory. | History shapes present state and future response. |
| Why do cycles appear? | Lagged adjustment. | Delayed correction can generate oscillation. |
Delay analysis helps modelers distinguish immediate cause from delayed consequence, short-term response from long-term adjustment, and intervention failure from response latency.
Instantaneous and Delayed Response
An instantaneous model assumes that the current rate of change depends on current conditions. A delayed model allows past conditions to influence current change.
x'(t)=f(x(t))
\]
Interpretation: An instantaneous model uses only the present state.
x'(t)=f(x(t-\tau))
\]
Interpretation: A delayed model uses a past state, shifted by delay length \(\tau\).
The delayed version can behave very differently from the instantaneous version. Even if the same mechanism is present, the timing of the mechanism changes the system’s behavior.
| Response type | Mathematical structure | Systems interpretation |
|---|---|---|
| Instantaneous. | Depends on \(x(t)\). | The system reacts to current conditions. |
| Fixed delay. | Depends on \(x(t-\tau)\). | The system reacts after a known lag. |
| Variable delay. | Delay changes over time or state. | Response time depends on congestion, capacity, or context. |
| Distributed delay. | Depends on a weighted history. | Past states influence the present over a range of times. |
The choice among these forms should reflect the system being modeled, not only mathematical convenience.
Feedback with Delay
Feedback becomes more complex when the system responds to old information. A correction may be appropriate when initiated but excessive by the time it takes effect.
x'(t)=a\left[x^*-x(t-\tau)\right]
\]
Interpretation: Adjustment is based on the delayed gap between a target \(x^*\) and a past state.
Delayed feedback can produce oscillation, overshoot, instability, or policy resistance. The system may repeatedly correct for conditions that have already changed.
| Feedback feature | Effect of delay | Systems example |
|---|---|---|
| Correction time. | Response arrives after conditions change. | Infrastructure repair, policy rollout, hiring pipeline. |
| Information lag. | Decision-makers see outdated data. | Epidemic reporting, market signals, inventory systems. |
| Adjustment strength. | Strong delayed correction can overshoot. | Overbuilding capacity, overcorrecting prices, aggressive control. |
| Feedback loop length. | Longer loops slow recognition and response. | Climate response, ecological regeneration, institutional learning. |
Delayed feedback is one reason well-intended interventions can produce unexpected side effects.
Lagged Variables
A lagged variable is a past value of a state, input, or output used in the current model. Lagged variables are common in time-series analysis, econometrics, epidemiology, climate models, operations research, and systems dynamics.
y_t=\alpha y_{t-1}+\beta u_{t-k}
\]
Interpretation: The current output depends on the previous output and an input delayed by \(k\) time steps.
Lagged variables can represent persistence, inertia, habit, incubation, reporting delay, transport delay, memory, or delayed control.
| Lagged term | Meaning | Interpretive caution |
|---|---|---|
| \(y_{t-1}\) | Previous outcome. | May represent inertia, persistence, or omitted state. |
| \(u_{t-k}\) | Delayed input. | Lag length should be justified. |
| \(x(t-\tau)\) | Continuous-time delayed state. | Requires history before current time. |
| \(\int_0^t K(t-s)x(s)\,ds\) | Weighted past history. | Memory kernel must be interpreted carefully. |
Lagged variables make time explicit. They force the modeler to ask which past states remain causally relevant.
Memory and History
Memory means that the system’s present behavior depends on its history. In some systems, only the current state matters. In others, past exposure, accumulated stress, previous decisions, or delayed information continue to shape response.
M(t)=\int_0^t K(t-s)x(s)\,ds
\]
Interpretation: Memory \(M(t)\) is a weighted accumulation of past states \(x(s)\), with kernel \(K\).
A memory kernel describes how strongly past states influence the present. Recent history may matter more than distant history, or the effect may persist over long periods.
| Memory form | Meaning | Systems interpretation |
|---|---|---|
| Short memory. | Recent states dominate. | Fast adaptation, short reporting delay, quick forgetting. |
| Long memory. | Distant states still matter. | Legacy pollution, institutional history, ecological damage. |
| Threshold memory. | Past exposure matters after accumulation. | Fatigue, cumulative risk, delayed health effects. |
| Path dependence. | Order of events shapes outcomes. | Lock-in, hysteresis, infrastructure dependence. |
Memory modeling is especially important when the same present state can lead to different futures depending on how the system arrived there.
Distributed Delays
A fixed delay assumes that all delayed influence arrives after one exact lag. A distributed delay assumes influence is spread across a range of past times.
x'(t)=f\left(x(t),\int_0^\infty K(s)x(t-s)\,ds\right)
\]
Interpretation: Current change depends on a weighted history of past states.
Distributed delays are useful when response times vary across agents, locations, institutions, biological processes, or infrastructure components.
| Delay type | Assumption | Example |
|---|---|---|
| Fixed delay. | All response arrives after the same lag. | Known transport time or scheduled delay. |
| Distributed delay. | Responses arrive across a range of lags. | Variable incubation, repair queues, adoption timing. |
| State-dependent delay. | Lag depends on system state. | Congestion slows response time. |
| Policy delay. | Lag depends on recognition, decision, and implementation. | Institutional response to crisis or regulation. |
Distributed delays often provide a more realistic representation than a single fixed lag, but they require stronger assumptions about the shape of the delay distribution.
Delay Differential Equations
A delay differential equation is a differential equation whose rate of change depends on past states. Unlike ordinary differential equations, delay differential equations require a history function, not just an initial value.
x'(t)=f(x(t),x(t-\tau))
\]
x(t)=\phi(t),\quad t\in[-\tau,0]
\]
Interpretation: The model requires a history function \(\phi(t)\) over the delay interval before the simulation begins.
This requirement changes model setup. A single starting value \(x(0)\) is not enough, because the model asks what the system was doing during the past interval.
| ODE requirement | DDE requirement | Systems meaning |
|---|---|---|
| Initial state. | History function. | Past conditions must be specified. |
| Present rate. | Rate based on present and past. | Delayed information or material flow matters. |
| Current parameters. | Delay length and history assumptions. | Timing is a structural part of the model. |
| Solver settings. | Solver plus interpolation history. | Numerical method must handle lagged states. |
Delay differential equations are useful but demanding. Their assumptions about history and delay length should be documented as carefully as the equation itself.
Overshoot and Oscillation
Delayed correction can create oscillation. A system may keep adjusting toward a target, but because it responds late, it repeatedly overshoots and undershoots.
x'(t)=a[x^*-x(t-\tau)]
\]
Interpretation: The system adjusts toward a target using delayed information.
Overshoot is common in inventory systems, infrastructure planning, ecological harvesting, price adjustment, public-health intervention, and organizational hiring.
| Pattern | Delay mechanism | Systems interpretation |
|---|---|---|
| Overshoot. | Correction continues after the target has been crossed. | Policy or control responds to outdated conditions. |
| Oscillation. | Repeated delayed correction. | The system cycles around a target or equilibrium. |
| Instability. | Delayed response is too strong or too late. | Deviation grows rather than settles. |
| Dampened recovery. | Delayed response weakens over time. | The system gradually settles after disturbance. |
Delays can turn stabilizing feedback into destabilizing behavior. The feedback sign alone is not enough; timing matters.
Policy Resistance
Policy resistance occurs when an intervention produces delayed, weakened, offsetting, or unintended effects because the system responds through feedback, lag, adaptation, or counteraction.
Delays contribute to policy resistance in several ways. Decision-makers may act on outdated data. Interventions may arrive after conditions have changed. Benefits may appear slowly while costs appear immediately. Corrective actions may overshoot. Stakeholders may adapt to the intervention before its intended effect is visible.
| Delay source | Policy risk | Responsible modeling practice |
|---|---|---|
| Recognition delay. | Problem is identified late. | Model observation and reporting lags. |
| Decision delay. | Action waits for approval or coordination. | Represent institutional process time. |
| Implementation delay. | Policy takes time to affect the system. | Distinguish announcement from effect. |
| Outcome delay. | Results appear slowly. | Evaluate over appropriate time horizons. |
Delay-aware modeling encourages patience, timing analysis, and scenario testing before judging whether a policy has failed.
Numerical Simulation
Delays often require numerical simulation. The model must store past states, retrieve lagged values, interpolate between stored time points, and handle history before the simulation starts.
x(t-\tau)
\]
Interpretation: The solver must retrieve a past state shifted by delay length \(\tau\).
| Simulation task | Purpose | Responsible practice |
|---|---|---|
| History function. | Define past states before \(t=0\). | Document assumptions over \([-\tau,0]\). |
| Delay lookup. | Retrieve \(x(t-\tau)\). | Record interpolation method. |
| Time step. | Controls numerical resolution. | Test sensitivity to step size. |
| Delay sweep. | Vary \(\tau\). | Identify oscillation, instability, or recovery changes. |
| Output audit. | Make timing assumptions inspectable. | Save tables, metadata, and warnings. |
Delay simulation should never hide the history assumptions. The past is part of the model input.
Systems Modeling Interpretation
Delay, memory, and time-lagged dynamics help explain why systems may appear unresponsive, unstable, resistant, or surprising. They make timing part of system structure.
A delayed model can show why a strong intervention appears weak at first, why a correction overshoots, why cycles persist, why historical exposure continues to matter, and why short-term data may misrepresent long-term response.
The responsible interpretation is conditional: if the delay length, history function, memory structure, and lag mechanism are plausible, then the model can clarify response timing, instability, resilience, and policy limits. If those assumptions are weak, delay terms may create artificial dynamics.
Mathematical Deepening
This section adds a more formal layer for mathematically advanced readers. Delay and memory analysis connects lagged variables, delay differential equations, memory kernels, history functions, feedback timing, oscillation, numerical interpolation, and model governance.
Delay Structure
Delay Length
The time gap between cause and modeled effect.
History Function
The past state path required before simulation begins.
Lagged Feedback
Feedback based on outdated or delayed information.
Memory Kernel
A weighting function that determines how past states influence the present.
Delay Types
Fixed Delay
All delayed influence arrives after one time lag.
Distributed Delay
Influence arrives over a range of past times.
State-Dependent Delay
The delay length changes with system state.
Institutional Delay
Recognition, decision, and implementation time structure policy response.
Dynamic Patterns
Overshoot
Correction continues after the system has crossed its target.
Oscillation
Repeated delayed correction creates cycling behavior.
Policy Resistance
Delay, feedback, and adaptation weaken or redirect interventions.
Path Dependence
Past states shape present behavior and future trajectories.
Modeling Governance
Delay Rationale
Explain what physical, biological, informational, or institutional process creates the lag.
History Documentation
Record assumptions about the pre-simulation past.
Numerical Method
Document step size, interpolation, delay lookup, and solver limitations.
Interpretive Limits
Distinguish real delay from an invented lag used to fit data.
Examples from Systems Modeling
Delay and memory appear wherever information, material, biological processes, institutions, or feedback do not operate instantly.
Epidemic Incubation
Infections today may not appear in reported cases until after incubation and reporting delays.
Supply Chains
Orders, production, shipping, inventory correction, and demand signals move through delayed pathways.
Climate Response
Atmospheric, oceanic, ice, and ecological systems respond over different time scales.
Infrastructure Repair
Damage, recognition, scheduling, repair, and restored capacity unfold over time.
Resource Regeneration
Harvest pressure may show immediate gains while ecological recovery is delayed.
Institutional Learning
Organizations may respond slowly as information moves through reporting, interpretation, and decision structures.
Across these examples, timing is part of the causal structure, not merely a detail of measurement.
Computation and Reproducible Workflows
Computational workflows for delay, memory, and time-lagged dynamics should record the model equation, delay length, history function, lagged variable definitions, memory kernel, time step, interpolation method, solver choice, parameter values, delay sweeps, response metrics, and interpretation warnings.
Because delayed models can generate oscillation and instability from timing assumptions alone, reproducible workflows should save audit tables and metadata alongside figures. The goal is to make the modeled past inspectable.
Python Workflow: Delay and Memory Audit
The Python workflow below simulates delayed adjustment toward a target and records the current state, delayed state, and deviation from target.
from __future__ import annotations
from dataclasses import dataclass, asdict
from pathlib import Path
import csv
import json
@dataclass(frozen=True)
class DelayRecord:
step: int
time: float
current_state: float
delayed_state: float
derivative_value: float
target: float
absolute_gap: float
warning: str
def history_function(time: float, initial_value: float) -> float:
return initial_value
def delayed_lookup(
states: list[float],
step: int,
delay_steps: int,
initial_value: float
) -> float:
delayed_index = step - delay_steps
if delayed_index < 0:
return history_function(0.0, initial_value)
return states[delayed_index]
def simulate_delayed_adjustment(
initial_state: float,
target: float,
adjustment_rate: float,
delay: float,
dt: float,
steps: int
) -> list[DelayRecord]:
delay_steps = round(delay / dt)
states = [initial_state]
records: list[DelayRecord] = []
for step in range(steps + 1):
time = step * dt
current_state = states[-1]
delayed_state = delayed_lookup(states, step, delay_steps, initial_state)
derivative_value = adjustment_rate * (target - delayed_state)
records.append(
DelayRecord(
step=step,
time=time,
current_state=current_state,
delayed_state=delayed_state,
derivative_value=derivative_value,
target=target,
absolute_gap=abs(current_state - target),
warning="Delayed adjustment depends on delay length, history function, time step, and feedback strength."
)
)
next_state = current_state + dt * derivative_value
states.append(next_state)
return records
records = simulate_delayed_adjustment(
initial_state=80.0,
target=100.0,
adjustment_rate=0.2,
delay=5.0,
dt=0.1,
steps=300
)
output_dir = Path("outputs")
(output_dir / "tables").mkdir(parents=True, exist_ok=True)
(output_dir / "json").mkdir(parents=True, exist_ok=True)
with (output_dir / "tables" / "delay_memory_audit.csv").open("w", newline="", encoding="utf-8") as handle:
writer = csv.DictWriter(handle, fieldnames=asdict(records[0]).keys())
writer.writeheader()
for record in records:
writer.writerow(asdict(record))
summary = {
"initial_state": 80.0,
"target": 100.0,
"adjustment_rate": 0.2,
"delay": 5.0,
"dt": 0.1,
"max_gap": max(record.absolute_gap for record in records),
"final_gap": records[-1].absolute_gap,
"interpretation": "Delayed adjustment can generate overshoot or oscillation when feedback responds to old information."
}
(output_dir / "json" / "delay_memory_audit.json").write_text(
json.dumps([asdict(record) for record in records], indent=2),
encoding="utf-8"
)
(output_dir / "json" / "delay_memory_summary.json").write_text(
json.dumps(summary, indent=2),
encoding="utf-8"
)
print("Wrote delay and memory audit.")
This workflow makes the delay assumption visible by saving both the current state and the delayed state used to compute change.
R Workflow: Lagged Response Diagnostics
The R workflow below performs the same delayed-adjustment simulation and writes a diagnostic table.
history_function <- function(time, initial_value) {
initial_value
}
delayed_lookup <- function(states, step, delay_steps, initial_value) {
delayed_index <- step - delay_steps
if (delayed_index < 1) {
return(history_function(0, initial_value))
}
states[[delayed_index]]
}
simulate_delayed_adjustment <- function(
initial_state,
target,
adjustment_rate,
delay,
dt,
steps
) {
delay_steps <- round(delay / dt)
states <- c(initial_state)
records <- list()
for (step in 0:steps) {
time <- step * dt
current_state <- states[[length(states)]]
delayed_state <- delayed_lookup(states, step + 1, delay_steps, initial_state)
derivative_value <- adjustment_rate * (target - delayed_state)
records[[length(records) + 1]] <- data.frame(
step = step,
time = time,
current_state = current_state,
delayed_state = delayed_state,
derivative_value = derivative_value,
target = target,
absolute_gap = abs(current_state - target),
warning = "Delayed adjustment depends on delay length, history function, time step, and feedback strength."
)
next_state <- current_state + dt * derivative_value
states <- c(states, next_state)
}
do.call(rbind, records)
}
results <- simulate_delayed_adjustment(
initial_state = 80,
target = 100,
adjustment_rate = 0.2,
delay = 5,
dt = 0.1,
steps = 300
)
summary_table <- data.frame(
initial_state = 80,
target = 100,
adjustment_rate = 0.2,
delay = 5,
dt = 0.1,
max_gap = max(results$absolute_gap),
final_gap = tail(results$absolute_gap, 1),
interpretation = "Delayed adjustment can generate overshoot or oscillation when feedback responds to old information."
)
dir.create("outputs/tables", recursive = TRUE, showWarnings = FALSE)
write.csv(results, "outputs/tables/r_delay_memory_audit.csv", row.names = FALSE)
write.csv(summary_table, "outputs/tables/r_delay_memory_summary.csv", row.names = FALSE)
print(head(results))
print(summary_table)
This workflow supports delay sweeps, response-time comparisons, and sensitivity checks across different lag assumptions.
Haskell Workflow: Typed Delay Records
Haskell can represent delayed adjustment as typed records, making the current state, delayed state, derivative value, and warning explicit.
module Main where
data DelayRecord = DelayRecord
{ stepNumber :: Int
, timeValue :: Double
, currentState :: Double
, delayedState :: Double
, derivativeValue :: Double
, targetValue :: Double
, absoluteGap :: Double
, warning :: String
} deriving (Show)
delayedLookup :: [Double] -> Int -> Int -> Double -> Double
delayedLookup states step delaySteps initialValue =
let delayedIndex = step - delaySteps
in if delayedIndex < 0
then initialValue
else states !! delayedIndex
simulateDelayedAdjustment ::
Double ->
Double ->
Double ->
Double ->
Double ->
Int ->
[DelayRecord]
simulateDelayedAdjustment initialState target adjustmentRate delayTime dt steps =
go 0 [initialState]
where
delaySteps = round (delayTime / dt)
go step states
| step > steps = []
| otherwise =
let time = fromIntegral step * dt
current = last states
delayed = delayedLookup states step delaySteps initialState
derivative = adjustmentRate * (target - delayed)
nextState = current + dt * derivative
record = DelayRecord
step
time
current
delayed
derivative
target
(abs (current - target))
"Delayed adjustment depends on delay length, history function, time step, and feedback strength."
in record : go (step + 1) (states ++ [nextState])
main :: IO ()
main =
mapM_ print (
simulateDelayedAdjustment
80
100
0.2
5
0.1
120
)
The typed workflow clarifies that delayed dynamics require a history structure, not merely a present-state equation.
SQL Workflow: Delay Assumption Registry
SQL can document delay assumptions when delayed models support dashboards, model governance, publications, public policy, or operational planning.
CREATE TABLE delay_assumption_registry (
assumption_key TEXT PRIMARY KEY,
assumption_name TEXT NOT NULL,
mathematical_role TEXT NOT NULL,
systems_modeling_role TEXT NOT NULL,
review_warning TEXT NOT NULL
);
INSERT INTO delay_assumption_registry VALUES
(
'delay_length',
'Delay length',
'Defines the time lag between cause and modeled effect.',
'Represents transport time, reporting delay, decision delay, incubation, repair, or adjustment time.',
'Delay length should be justified, estimated, or tested through sensitivity analysis.'
);
INSERT INTO delay_assumption_registry VALUES
(
'history_function',
'History function',
'Specifies past states before simulation begins.',
'Represents pre-model conditions that still affect present dynamics.',
'History assumptions can strongly shape early behavior and should be documented.'
);
INSERT INTO delay_assumption_registry VALUES
(
'lagged_state',
'Lagged state',
'Uses a past state in the current rate equation.',
'Represents delayed feedback, outdated information, or material travel time.',
'Lagged states should be tied to a real mechanism, not inserted only to improve fit.'
);
INSERT INTO delay_assumption_registry VALUES
(
'memory_kernel',
'Memory kernel',
'Weights past states by their influence on the present.',
'Represents fading memory, cumulative exposure, or long-lived effects.',
'Kernel shape should be interpreted and tested.'
);
INSERT INTO delay_assumption_registry VALUES
(
'interpolation_method',
'Interpolation method',
'Defines how past values are retrieved between stored time points.',
'Affects numerical accuracy in delay simulation.',
'Interpolation and time step choices should be recorded.'
);
INSERT INTO delay_assumption_registry VALUES
(
'response_metric',
'Response metric',
'Measures gap, overshoot, oscillation, recovery, or instability.',
'Defines how delayed response is evaluated.',
'Different response metrics can support different conclusions.'
);
SELECT
assumption_name,
mathematical_role,
systems_modeling_role,
review_warning
FROM delay_assumption_registry
ORDER BY assumption_key;
This registry keeps delay interpretation tied to delay length, history function, lagged states, memory kernels, interpolation methods, and response metrics.
GitHub Repository
The companion repository for this article is designed as a reproducible mathematical-modeling workspace. It supports delay and memory audits, lagged-response simulations, delayed feedback examples, response metrics, SQL governance tables, generated outputs, advanced mathematical audit reports, and reusable calculator scripts.
Complete Code Repository
Companion article folder with Python, R, Julia, SQL, Haskell, C, C++, Fortran, Rust, Go, notebooks, documentation, synthetic teaching data, generated outputs, schemas, Canvas-ready workflow artifacts, and reusable calculator scripts for delay, memory, time-lagged dynamics, lagged variables, delay differential equations, delayed feedback, memory kernels, overshoot, oscillation, policy resistance, model governance, and responsible mathematical modeling.
Interpretive Limits and Responsible Use
Delay and memory are powerful because they make timing part of model structure. They are risky when lag terms are inserted only to improve fit, when history assumptions are hidden, when delay length is arbitrary, or when oscillations created by model timing are mistaken for observed system behavior.
Responsible use requires several checks. Define the lag mechanism. Explain whether the delay is physical, biological, informational, institutional, computational, or behavioral. Document delay length, history function, lagged variables, memory kernel, interpolation method, time step, solver choice, and response metrics. Test alternative delay lengths. Compare delayed and non-delayed versions. Avoid interpreting a fitted lag as causal without supporting evidence.
The central modeling question is not only “Does the system respond late?” It is “What mechanism creates the delay, how is past behavior represented, and how sensitive are conclusions to the assumed timing?”
Related Articles
- Calculus for Systems Modeling
- Differential Equations and Dynamic Systems
- Nonlinear Differential Equations
- Equilibrium, Stability, and Local Dynamics
- Phase Lines, Phase Planes, and Phase Portraits
- Chaos and Sensitivity to Initial Conditions
- Forced Systems and External Shock
- Introduction to Partial Differential Equations
- Resource Depletion and Regeneration
- Coupled Human-Natural Systems
Further Reading
- Bellman, R. and Cooke, K.L. (1963) Differential-Difference Equations. New York: Academic Press.
- Bender, E.A. (2000) An Introduction to Mathematical Modeling. Mineola, NY: Dover Publications.
- Erneux, T. (2009) Applied Delay Differential Equations. New York: Springer.
- Hale, J.K. and Verduyn Lunel, S.M. (1993) Introduction to Functional Differential Equations. New York: Springer.
- Meadows, D.H. (2008) Thinking in Systems: A Primer. White River Junction, VT: Chelsea Green Publishing.
- Richard, J.-P. (2003) ‘Time-delay systems: an overview of some recent advances and open problems’, Automatica, 39(10), pp. 1667–1694.
- Sterman, J.D. (2000) Business Dynamics: Systems Thinking and Modeling for a Complex World. Boston, MA: Irwin/McGraw-Hill.
- Strogatz, S.H. (2018) Nonlinear Dynamics and Chaos: With Applications to Physics, Biology, Chemistry, and Engineering. 2nd edn. Boca Raton, FL: CRC Press.
- Teschl, G. (2012) Ordinary Differential Equations and Dynamical Systems. Providence, RI: American Mathematical Society.
- Massachusetts Institute of Technology (MIT) OpenCourseWare (2010) Differential Equations. Cambridge, MA: MIT OpenCourseWare.
References
- Bellman, R. and Cooke, K.L. (1963) Differential-Difference Equations. New York: Academic Press.
- Bender, E.A. (2000) An Introduction to Mathematical Modeling. Mineola, NY: Dover Publications.
- Erneux, T. (2009) Applied Delay Differential Equations. New York: Springer.
- Hale, J.K. and Verduyn Lunel, S.M. (1993) Introduction to Functional Differential Equations. New York: Springer.
- Massachusetts Institute of Technology (MIT) OpenCourseWare (2010) Differential Equations. Cambridge, MA: MIT OpenCourseWare.
- Meadows, D.H. (2008) Thinking in Systems: A Primer. White River Junction, VT: Chelsea Green Publishing.
- Richard, J.-P. (2003) ‘Time-delay systems: an overview of some recent advances and open problems’, Automatica, 39(10), pp. 1667–1694.
- Sterman, J.D. (2000) Business Dynamics: Systems Thinking and Modeling for a Complex World. Boston, MA: Irwin/McGraw-Hill.
- Strogatz, S.H. (2018) Nonlinear Dynamics and Chaos: With Applications to Physics, Biology, Chemistry, and Engineering. 2nd edn. Boca Raton, FL: CRC Press.
- Teschl, G. (2012) Ordinary Differential Equations and Dynamical Systems. Providence, RI: American Mathematical Society.
