Last Updated June 15, 2026
Linear first-order differential equations describe dynamic systems where the rate of change depends linearly on the current state, time-varying coefficients, and external inputs. They are simple enough to solve systematically, but flexible enough to model adjustment, decay, recovery, accumulation, forcing, input-loss balance, and movement toward equilibrium.
In systems modeling, linear first-order equations appear in resource stocks, pollutant concentrations, capital depreciation, thermal adjustment, reservoir dynamics, medication clearance, infrastructure recovery, demand adjustment, environmental decay, and many other processes where a state changes through proportional loss and external input.
This article introduces linear first-order differential equations for systems modeling, including standard form, homogeneous and nonhomogeneous equations, integrating factors, input-response interpretation, equilibrium, transient behavior, numerical approximation, and responsible interpretation of simple linear dynamic laws.

A linear first-order differential equation describes a state variable whose derivative appears only to the first power and whose state dependence is linear. This structure makes the equation analytically tractable while still useful for modeling real processes of accumulation, decay, recovery, and response to external forcing.
Why Linear First-Order Equations Matter
Linear first-order equations matter because many dynamic systems can be understood as a balance between input, proportional loss, adjustment, and time-varying forcing. They are often the first serious class of differential equations used in applied modeling because they are interpretable, solvable, and computationally transparent.
\frac{dy}{dt}+p(t)y=q(t)
\]
Interpretation: The state \(y\) changes according to a linear state-dependent term \(p(t)y\) and an external input or forcing term \(q(t)\).
This form is useful in systems modeling because it separates two major influences: the system’s current state and the external conditions acting on the system. The coefficient \(p(t)\) controls proportional loss, damping, adjustment, or retention. The term \(q(t)\) represents input, forcing, replenishment, policy intervention, emissions, inflow, or demand.
| Modeling concern | Linear first-order role | Systems meaning |
|---|---|---|
| Loss or decay. | State appears in a proportional term. | The larger the stock, the larger the loss. |
| External input. | Forcing appears as \(q(t)\). | The system is driven by outside conditions. |
| Adjustment. | Trajectory moves toward a balance point. | The system responds gradually rather than instantly. |
| Transparency. | Solution structure is inspectable. | Assumptions can be reviewed before forecasting. |
These equations are simple, but their simplicity is not trivial. They provide a disciplined way to model dynamic response while preserving interpretability.
Standard Form
The standard linear first-order form is:
\frac{dy}{dt}+p(t)y=q(t)
\]
Standard form: The derivative, linear state term, and forcing term are arranged so the equation can be solved systematically.
The equation is first order because it contains the first derivative and no higher derivative. It is linear because \(y\) and \(\frac{dy}{dt}\) appear only to the first power and are not multiplied by each other.
| Symbol | Mathematical role | Systems interpretation |
|---|---|---|
| \(y(t)\) | State variable. | Stock, concentration, population, capital, load, temperature, or response level. |
| \(\frac{dy}{dt}\) | Rate of change. | How quickly the state is increasing or decreasing. |
| \(p(t)y\) | Linear state-dependent term. | Loss, damping, adjustment, decay, or retention pressure. |
| \(q(t)\) | Forcing term. | Input, inflow, intervention, emissions, demand, or external pressure. |
Putting an equation into standard form helps identify what the model claims: what state is changing, what proportional mechanism acts on it, and what external input drives it.
Homogeneous Equations
A homogeneous linear first-order equation has no external forcing term:
\frac{dy}{dt}+p(t)y=0
\]
Interpretation: The state changes only through its own proportional dynamic term.
When \(p(t)=k\) is constant, the equation becomes:
\frac{dy}{dt}=-ky
\]
Interpretation: The state decays at a rate proportional to its current value.
The solution is:
y(t)=y_0e^{-kt}
\]
Interpretation: The state decays exponentially from initial value \(y_0\).
| Homogeneous pattern | Behavior | Systems example |
|---|---|---|
| \(\frac{dy}{dt}=-ky\) | Exponential decay. | Pollutant removal, depreciation, cooling, depletion, clearance. |
| \(\frac{dy}{dt}=ky\) | Exponential growth. | Unconstrained expansion, compounding, early adoption. |
| \(\frac{dy}{dt}+p(t)y=0\) | Time-varying proportional change. | Seasonal decay, changing loss rate, variable retention. |
Homogeneous equations isolate internal proportional behavior. They are useful for understanding decay and persistence, but many real systems also include inputs.
Nonhomogeneous Equations and External Input
A nonhomogeneous equation includes a forcing term:
\frac{dy}{dt}+p(t)y=q(t)
\]
Interpretation: The state is shaped by both proportional internal dynamics and external input.
For constant proportional loss and constant input, a common model is:
\frac{dy}{dt}=I-ky
\]
Interpretation: The state increases through input \(I\) and decreases through proportional loss \(ky\).
This simple equation appears in reservoir storage, pollutant concentration, inventory balance, capital depreciation with investment, medication dosage, and energy adjustment. It expresses the idea that a stock moves toward a balance between inflow and loss.
| Forcing term | Possible meaning | Modeling question |
|---|---|---|
| Constant \(I\) | Steady input or replenishment. | Is the input actually stable over time? |
| Time-varying \(q(t)\) | Seasonal, policy, demand, or shock forcing. | How is the forcing measured or estimated? |
| Pulse input. | Sudden intervention or disturbance. | Does the model resolve the timing of the pulse? |
| Scenario input. | Hypothetical future path. | Is the scenario clearly separated from prediction? |
The forcing term is often where real-world interpretation enters the model. It should be documented carefully.
Integrating Factors
The standard method for solving a linear first-order equation uses an integrating factor. For:
\frac{dy}{dt}+p(t)y=q(t)
\]
the integrating factor is:
\mu(t)=e^{\int p(t)\,dt}
\]
Interpretation: The integrating factor transforms the left side into the derivative of a product.
Multiplying the equation by \(\mu(t)\) gives:
\mu(t)\frac{dy}{dt}+\mu(t)p(t)y=\mu(t)q(t)
\]
The left side becomes:
\frac{d}{dt}\left(\mu(t)y(t)\right)=\mu(t)q(t)
\]
Interpretation: The equation can now be integrated directly.
The integrating factor is more than a symbolic trick. It is a way to account for how proportional loss, damping, or adjustment weights the contribution of inputs over time.
Solution Structure
After applying the integrating factor, the solution can be written as:
y(t)=\frac{1}{\mu(t)}\left(\int \mu(t)q(t)\,dt+C\right)
\]
Interpretation: The solution combines accumulated forcing with an initial-condition constant.
When \(p(t)=k\) and \(q(t)=I\) are constant, the equation:
\frac{dy}{dt}+ky=I
\]
has the solution:
y(t)=\frac{I}{k}+\left(y_0-\frac{I}{k}\right)e^{-kt}
\]
Interpretation: The state approaches equilibrium \(I/k\) from initial value \(y_0\).
| Solution component | Mathematical meaning | Systems meaning |
|---|---|---|
| \(\frac{I}{k}\) | Equilibrium value. | Long-run balance between input and proportional loss. |
| \(y_0-\frac{I}{k}\) | Initial deviation from equilibrium. | How far the starting state is from balance. |
| \(e^{-kt}\) | Decay of transient effect. | How quickly the system forgets the initial disturbance. |
| \(k\) | Adjustment or loss rate. | Controls speed of convergence. |
This structure is one reason linear first-order equations are useful: they separate long-run balance from short-run adjustment.
Input-Loss Balance
Many systems can be approximated as input-loss balances:
\frac{dS}{dt}=I-kS
\]
Interpretation: A stock \(S\) increases through input \(I\) and decreases through proportional loss \(kS\).
The equilibrium is found by setting the derivative to zero:
0=I-kS^*
\]
S^*=\frac{I}{k}
\]
Interpretation: At equilibrium, input equals loss.
This pattern is common because it matches a basic systems idea: stocks change when inflows and outflows are out of balance. A linear first-order equation models the outflow as proportional to the current stock.
| System | Input \(I\) | Loss \(kS\) | Equilibrium meaning |
|---|---|---|---|
| Pollutant concentration. | Emissions. | Removal or decay. | Steady concentration. |
| Reservoir storage. | Inflow. | Drainage. | Stable water level. |
| Capital stock. | Investment. | Depreciation. | Maintained capital level. |
| Medication concentration. | Dose input. | Clearance. | Steady concentration. |
The simplicity of this structure is useful, but it depends on whether proportional loss is plausible for the system.
Equilibrium and Transient Behavior
Linear first-order equations often separate behavior into two parts: equilibrium and transient adjustment.
y(t)=y^*+(y_0-y^*)e^{-kt}
\]
Interpretation: The state equals long-run equilibrium plus a decaying memory of the initial deviation.
The equilibrium \(y^*\) describes where the system is headed under constant conditions. The transient term describes how the system gets there.
| Term | Behavior | Systems interpretation |
|---|---|---|
| \(y^*\) | Stable balance point. | Long-run level under current input and loss assumptions. |
| \(y_0-y^*\) | Initial gap. | Starting imbalance. |
| \(e^{-kt}\) | Decay of the initial gap. | Adjustment speed or memory loss. |
| \(1/k\) | Characteristic time scale. | Approximate speed of response. |
This distinction matters in policy and systems interpretation. A model may show that a system eventually stabilizes, but the transient period may still be long, costly, risky, or socially important.
Time-Varying Coefficients
Linear first-order equations can include time-varying coefficients:
\frac{dy}{dt}+p(t)y=q(t)
\]
Interpretation: Loss, adjustment, or retention may change over time, and input may also vary over time.
Time-varying coefficients allow the model to represent seasonality, changing policy, technological change, variable demand, environmental stress, or external shocks. But they also require more documentation, because \(p(t)\) and \(q(t)\) may be estimated, assumed, or scenario-based.
| Time-varying element | Possible meaning | Review question |
|---|---|---|
| \(p(t)\) | Changing loss, damping, decay, or adjustment rate. | What mechanism causes the coefficient to change? |
| \(q(t)\) | Changing input, demand, emissions, intervention, or forcing. | Is the input measured, forecasted, or hypothetical? |
| Seasonal pattern. | Recurring variation. | Is seasonality stable across years? |
| Shock pattern. | Sudden disturbance. | Is the timing and duration represented realistically? |
Time-varying linear models are still linear in the state variable, but their interpretation can become complex because the environment around the system changes.
Analytical and Numerical Views
Linear first-order equations often have analytical solutions through integrating factors. They can also be approximated numerically with methods such as Euler’s method:
y_{n+1}=y_n+\Delta t\,(q(t_n)-p(t_n)y_n)
\]
Interpretation: A numerical solver steps forward using the current input, coefficient, and state.
Analytical solutions show exact structure under assumptions. Numerical solutions support scenarios, time-varying inputs, computational workflows, and comparison across parameter settings. Both require interpretation.
| Approach | Strength | Risk |
|---|---|---|
| Integrating-factor solution. | Shows exact mathematical structure. | May encourage overconfidence in simplified assumptions. |
| Euler method. | Simple and transparent. | Step size can create error or instability. |
| Adaptive solver. | Handles complex inputs efficiently. | Solver settings may hide important assumptions. |
| Analytical-numerical comparison. | Supports verification. | Agreement verifies computation, not real-world validity. |
For responsible modeling, analytical and numerical agreement is only one layer of review. The deeper question is whether the input-loss law is appropriate for the system.
Systems Modeling Interpretation
Linear first-order equations are valuable because they formalize a common systems story: a stock is pushed by input and pulled back by proportional loss, damping, or adjustment. The state does not jump instantly to equilibrium. It moves gradually, with a time scale determined by the coefficient.
For example:
\frac{dS}{dt}=I-kS
\]
means that the stock \(S\) accumulates when input exceeds loss and declines when loss exceeds input. The equilibrium \(S^*=I/k\) is the balance point. The coefficient \(k\) controls how quickly the stock responds.
This model can clarify systems thinking, but it also embeds assumptions: proportional loss, constant or known input, a single state variable, no thresholds, no delays, no multiple interacting compartments, and no structural breaks unless explicitly added.
Mathematical Deepening
This section adds a more formal layer for mathematically advanced readers. Linear first-order equations are central because they are solvable by integrating factors and provide a foundation for response, forcing, equilibrium, stability, and numerical verification.
Linear Structure
First Order
The equation contains the first derivative and no higher derivatives.
Linearity
The state variable appears only to the first power and is not multiplied by its derivative.
Coefficient
The term \(p(t)\) controls proportional adjustment, damping, or loss.
Forcing
The term \(q(t)\) represents input, intervention, demand, emissions, or external pressure.
Solution Method
Standard Form
Write the equation as \(\frac{dy}{dt}+p(t)y=q(t)\).
Integrating Factor
Compute \(\mu(t)=e^{\int p(t)\,dt}\).
Product Derivative
Recognize \(\frac{d}{dt}(\mu y)=\mu q\).
Initial Condition
Use \(y(t_0)=y_0\) to determine the solution constant.
Dynamic Interpretation
Equilibrium
For constant \(I\) and \(k\), equilibrium is \(I/k\).
Transient
The initial deviation decays according to \(e^{-kt}\).
Time Scale
The coefficient \(k\) controls adjustment speed and memory.
Forcing History
Past inputs contribute to current state according to the system’s decay or retention.
Modeling Governance
Mechanism
The proportional-loss assumption should match the system being modeled.
Units
The coefficient, input, state, and time scale must be dimensionally consistent.
Input Evidence
Forcing terms should be measured, estimated, or clearly labeled as scenarios.
Scope
The equation should state where linear approximation is valid and where it fails.
Examples from Systems Modeling
Linear first-order equations appear whenever a system can be approximated as input plus proportional adjustment or loss.
Pollutant Concentration
Emissions add pollutant while removal processes reduce concentration proportionally.
Reservoir Storage
Inflow raises storage while outflow or leakage increases with current storage.
Capital Depreciation
Investment adds capital while depreciation removes a fraction of existing stock.
Thermal Adjustment
A body or building approaches ambient conditions through proportional heat exchange.
Medication Clearance
Dosing adds concentration while clearance removes a proportional amount.
Infrastructure Recovery
Restoration inputs rebuild capacity while degradation or load pressure reduces performance.
Across these examples, the same mathematical structure supports different interpretations. The model is only meaningful when state, input, loss, units, and scope are clearly defined.
Computation and Reproducible Workflows
Computational workflows for linear first-order differential equations should record the standard form, coefficient function, forcing function, initial condition, parameter values, units, time horizon, analytical solution when available, numerical approximation, solver settings, and warnings.
These workflows are especially useful because linear first-order equations can often be solved analytically and simulated numerically. Comparing the two provides a transparent check on solver behavior while preserving model assumptions in reviewable outputs.
Python Workflow: Linear First-Order Audit
The Python workflow below compares the analytical and Euler approximations for a constant-input, proportional-loss model.
from __future__ import annotations
from dataclasses import dataclass, asdict
from pathlib import Path
import csv
import json
import math
@dataclass(frozen=True)
class LinearFirstOrderRecord:
scenario: str
time: float
analytical_state: float
euler_state: float
absolute_error: float
input_rate: float
loss_rate: float
equilibrium: float
initial_state: float
method: str
warning: str
def analytical_solution(t: float, y0: float, input_rate: float, loss_rate: float) -> float:
equilibrium = input_rate / loss_rate
return equilibrium + (y0 - equilibrium) * math.exp(-loss_rate * t)
def rate_law(y: float, input_rate: float, loss_rate: float) -> float:
return input_rate - loss_rate * y
def simulate_linear_input_loss(
y0: float,
input_rate: float,
loss_rate: float,
dt: float,
steps: int
) -> list[LinearFirstOrderRecord]:
y = y0
equilibrium = input_rate / loss_rate
records: list[LinearFirstOrderRecord] = []
for n in range(steps + 1):
t = n * dt
analytical = analytical_solution(t, y0, input_rate, loss_rate)
records.append(
LinearFirstOrderRecord(
scenario="input_loss_balance",
time=t,
analytical_state=analytical,
euler_state=y,
absolute_error=abs(analytical - y),
input_rate=input_rate,
loss_rate=loss_rate,
equilibrium=equilibrium,
initial_state=y0,
method="analytical_vs_explicit_euler",
warning="Assumes constant input and proportional loss."
)
)
y = y + dt * rate_law(y, input_rate, loss_rate)
return records
records = simulate_linear_input_loss(
y0=20.0,
input_rate=12.0,
loss_rate=0.4,
dt=0.1,
steps=100
)
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" / "linear_first_order_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))
(output_dir / "json" / "linear_first_order_audit.json").write_text(
json.dumps([asdict(record) for record in records], indent=2),
encoding="utf-8"
)
print("Wrote linear first-order differential equation audit.")
This workflow makes the equilibrium, transient behavior, proportional loss, input assumption, and numerical error explicit.
R Workflow: Input-Loss Diagnostics
The R workflow below performs the same analytical-versus-numerical comparison for an input-loss balance equation.
analytical_solution <- function(t, y0, input_rate, loss_rate) {
equilibrium <- input_rate / loss_rate
equilibrium + (y0 - equilibrium) * exp(-loss_rate * t)
}
rate_law <- function(y, input_rate, loss_rate) {
input_rate - loss_rate * y
}
simulate_linear_input_loss <- function(y0, input_rate, loss_rate, dt, steps) {
y <- y0
equilibrium <- input_rate / loss_rate
rows <- list()
for (n in 0:steps) {
t <- n * dt
analytical <- analytical_solution(t, y0, input_rate, loss_rate)
rows[[length(rows) + 1]] <- data.frame(
scenario = "input_loss_balance",
time = t,
analytical_state = analytical,
euler_state = y,
absolute_error = abs(analytical - y),
input_rate = input_rate,
loss_rate = loss_rate,
equilibrium = equilibrium,
initial_state = y0,
method = "analytical_vs_explicit_euler",
warning = "Assumes constant input and proportional loss."
)
y <- y + dt * rate_law(y, input_rate, loss_rate)
}
do.call(rbind, rows)
}
results <- simulate_linear_input_loss(
y0 = 20,
input_rate = 12,
loss_rate = 0.4,
dt = 0.1,
steps = 100
)
dir.create("outputs/tables", recursive = TRUE, showWarnings = FALSE)
write.csv(results, "outputs/tables/r_linear_first_order_audit.csv", row.names = FALSE)
print(head(results))
print(tail(results))
This workflow records input, loss, equilibrium, initial state, analytical trajectory, Euler approximation, and error.
Haskell Workflow: Typed Linear Dynamic Records
Haskell can represent linear first-order workflows with explicit typed records for input, loss, equilibrium, analytical state, numerical state, and warning.
module Main where
data LinearRecord = LinearRecord
{ scenario :: String
, time :: Double
, analyticalState :: Double
, eulerState :: Double
, absoluteError :: Double
, inputRate :: Double
, lossRate :: Double
, equilibrium :: Double
, initialState :: Double
, method :: String
, warning :: String
} deriving (Show)
analyticalSolution :: Double -> Double -> Double -> Double -> Double
analyticalSolution t y0 input loss =
let eq = input / loss
in eq + (y0 - eq) * exp (-loss * t)
rateLaw :: Double -> Double -> Double -> Double
rateLaw y input loss =
input - loss * y
simulateLinearInputLoss :: Double -> Double -> Double -> Double -> Int -> [LinearRecord]
simulateLinearInputLoss y0 input loss dt steps =
go 0 y0
where
eq = input / loss
go n y
| n > steps = []
| otherwise =
let t = fromIntegral n * dt
analytical = analyticalSolution t y0 input loss
dy = rateLaw y input loss
record =
LinearRecord
"input_loss_balance"
t
analytical
y
(abs (analytical - y))
input
loss
eq
y0
"analytical_vs_explicit_euler"
"Assumes constant input and proportional loss."
in record : go (n + 1) (y + dt * dy)
main :: IO ()
main =
mapM_ print (take 10 (simulateLinearInputLoss 20 12 0.4 0.1 100))
The typed workflow keeps the dynamic law, parameter meaning, and interpretation warning attached to each generated record.
SQL Workflow: Linear Equation Assumption Registry
SQL can document assumptions when linear first-order workflows support model governance, dashboards, reports, or reproducible article repositories.
CREATE TABLE linear_first_order_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 linear_first_order_assumption_registry VALUES
(
'state_variable_definition',
'State variable definition',
'Defines the quantity governed by the differential equation.',
'Determines what the model tracks through time.',
'Unclear state definitions make trajectories uninterpretable.'
);
INSERT INTO linear_first_order_assumption_registry VALUES
(
'linear_state_dependence',
'Linear state dependence',
'Requires the state variable to enter linearly.',
'Represents proportional loss, damping, decay, or adjustment.',
'The proportional-loss assumption may fail near thresholds or saturation.'
);
INSERT INTO linear_first_order_assumption_registry VALUES
(
'forcing_term',
'Forcing term',
'Represents input or external pressure in the equation.',
'Models inflow, emissions, intervention, demand, or replenishment.',
'Forcing terms should be measured, estimated, or clearly labeled as scenarios.'
);
INSERT INTO linear_first_order_assumption_registry VALUES
(
'initial_condition',
'Initial condition',
'Selects one trajectory from the solution family.',
'Anchors the scenario to a starting state.',
'Different starting states can produce different transient behavior.'
);
INSERT INTO linear_first_order_assumption_registry VALUES
(
'equilibrium_interpretation',
'Equilibrium interpretation',
'Identifies the balance point when input and loss are constant.',
'Supports long-run systems interpretation.',
'Equilibrium may change if input, loss, policy, or context changes.'
);
INSERT INTO linear_first_order_assumption_registry VALUES
(
'numerical_method',
'Numerical method',
'Defines how continuous dynamics are approximated.',
'Supports reproducible simulation and solver review.',
'Step size can affect numerical error and apparent stability.'
);
SELECT
assumption_name,
mathematical_role,
systems_modeling_role,
review_warning
FROM linear_first_order_assumption_registry
ORDER BY assumption_key;
This registry keeps linear first-order interpretation tied to state definition, linear state dependence, forcing, initial condition, equilibrium interpretation, numerical method, and model scope.
GitHub Repository
The companion repository for this article is designed as a reproducible mathematical-modeling workspace. It supports linear first-order equation audits, input-loss balance examples, integrating-factor documentation, analytical-versus-numerical comparison, equilibrium diagnostics, 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 linear first-order differential equations, integrating factors, input-loss balance, proportional adjustment, equilibrium, transient behavior, Euler comparison, model governance, and responsible mathematical modeling.
Interpretive Limits and Responsible Use
Linear first-order equations are powerful because they are transparent and solvable. They are risky when linearity is assumed without justification, when proportional loss is unrealistic, when forcing terms are poorly measured, when coefficients are treated as constant despite changing conditions, or when equilibrium is interpreted as a prediction rather than a conditional balance point.
Responsible use requires several checks. Define the state variable and units. State the equation in standard form. Explain the proportional term and forcing term. Document initial conditions, parameter values, time horizon, solver settings, and sensitivity checks. Identify whether inputs are measured, estimated, hypothetical, or policy-based. Explain where the linear approximation is valid and where it breaks down.
The central modeling question is not only “Can this linear equation be solved?” It is “Does this input-loss or adjustment law responsibly represent the system, its assumptions, its time scale, and its limits?”
Related Articles
- Calculus for Systems Modeling
- Differential Equations and Dynamic Systems
- Separable Equations and Simple Dynamic Laws
- Second-Order Equations and Oscillatory Systems
- Systems of Differential Equations
- Equilibrium, Stability, and Local Dynamics
- Euler’s Method
- Runge–Kutta Methods
- Ordinary Differential Equation Solver Workflows
- Systems Modeling
Further Reading
- Arnold, V.I. (1992) Ordinary Differential Equations. Berlin: Springer.
- Boyce, W.E., DiPrima, R.C. and Meade, D.B. (2017) Elementary Differential Equations and Boundary Value Problems. 11th edn. Hoboken, NJ: Wiley.
- Hirsch, M.W., Smale, S. and Devaney, R.L. (2013) Differential Equations, Dynamical Systems, and an Introduction to Chaos. 3rd edn. Amsterdam: Academic Press.
- Logan, J.D. (2015) Applied Partial Differential Equations. 3rd edn. Cham: Springer.
- Murray, J.D. (2002) Mathematical Biology I: An Introduction. 3rd edn. New York: Springer.
- 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.
- OpenStax (2016) Calculus Volume 2. Houston, TX: OpenStax, Rice University.
- Hairer, E., Nørsett, S.P. and Wanner, G. (1993) Solving Ordinary Differential Equations I: Nonstiff Problems. 2nd edn. Berlin: Springer.
References
- Arnold, V.I. (1992) Ordinary Differential Equations. Berlin: Springer.
- Boyce, W.E., DiPrima, R.C. and Meade, D.B. (2017) Elementary Differential Equations and Boundary Value Problems. 11th edn. Hoboken, NJ: Wiley.
- Hairer, E., Nørsett, S.P. and Wanner, G. (1993) Solving Ordinary Differential Equations I: Nonstiff Problems. 2nd edn. Berlin: Springer.
- Hirsch, M.W., Smale, S. and Devaney, R.L. (2013) Differential Equations, Dynamical Systems, and an Introduction to Chaos. 3rd edn. Amsterdam: Academic Press.
- Logan, J.D. (2015) Applied Partial Differential Equations. 3rd edn. Cham: Springer.
- Massachusetts Institute of Technology (MIT) OpenCourseWare (2010) Differential Equations. Cambridge, MA: MIT OpenCourseWare.
- Murray, J.D. (2002) Mathematical Biology I: An Introduction. 3rd edn. New York: Springer.
- OpenStax (2016) Calculus Volume 2. Houston, TX: OpenStax, Rice University.
- 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.
