mathematics//dynamical systems//discretization

Discretization turns a continuous rate into an update by steps, and it is how every model, controller and filter reaches a computer, which lives by jumps. The two are different objects. In continuous time \(\dot x=\cb{F}x\) specifies a **rate**; in discrete time \(x_{k+1}=\ca{T}x_k\) specifies the **next state**. The matrices play different roles and normally carry different units:


Discretization turns a continuous rate into an update by steps, and it is how every model, controller and filter reaches a computer, which lives by jumps. The two are different objects. In continuous time x˙=Fx\dot x=\cb{F}xx˙=Fx specifies a rate; in discrete time xk+1=Txkx_{k+1}=\ca{T}x_kxk+1​=Txk​ specifies the next state. The matrices play different roles and normally carry different units:

x(t)=eFtx(0),xk=Tkx0.x(t)=e^{\cb{F}t}x(0),\qquad x_k=\ca{T}^k x_0.x(t)=eFtx(0),xk​=Tkx0​.

Continuous time in blue, discrete steps in green. The matrix exponential is eFt=I+Ft+(Ft)2/2!+⋯e^{\cb{F}t}=I+\cb{F}t+(\cb{F}t)^2/2!+\cdotseFt=I+Ft+(Ft)2/2!+⋯, not the exponential applied entry by entry.

Holding the input makes sampling exact. A DAC or a PWM stage keeps the command constant between samples, and under that hold the continuous system equals, at the sampling instants, the discrete one with T=eFΔt\ca{T}=e^{\cb{F}\Delta t}T=eFΔt and an input matrix to match (zero-order hold). A mass on a spring with eigenvalues −0.2±1.99j-0.2\pm1.99j−0.2±1.99j sampled at 100 Hz gets discrete eigenvalues of modulus e−0.002≈0.998e^{-0.002}\approx0.998e−0.002≈0.998; scipy.signal.cont2discrete does the computation.

Which eigenvalues dominate. In continuous time each mode carries eλite^{\cb{\lambda_i}t}eλi​t and the real part matters; in discrete time it carries μik\ca{\mu_i}^kμi​k and the modulus matters, the test of discrete-time stability. On the boundary the Jordan structure matters, and a mode not excited by the initial condition may not show up in a given response.

Euler's approximation is a different system. Euler uses TE=I+Δt F\ca{T&#95;E}=I+\Delta t,\cb{F}TE​=I+ΔtF. For x˙=−λx\dot x=-\cb{\lambda}xx˙=−λx it gives xk+1=(1−λΔt)xkx&#95;{k+1}=(1-\cb{\lambda}\Delta t)x&#95;kxk+1​=(1−λΔt)xk​, which decays only if 0<λΔt<20<\cb{\lambda}\Delta t<20<λΔt<2 and alternates sign between 1 and 2 although the continuous solution does not (Euler method, numerical stability). Gradient descent is Euler applied to gradient flow, and the same bound caps its learning rate.

Discretizing changes the system.

A signal sampled too slowly folds high frequencies onto low ones (aliasing); explicit Euler invents energy in an oscillator; a PID run slowly loses phase, about half a sample of delay from the hold alone; consensus run by steps I−εLI-\varepsilon LI−εL diverges once ε\varepsilonε passes 2/λmax⁡(L)2/\lambda&#95;{\max}(L)2/λmax​(L). Each one shows up as if it were physics, and goes away when the step changes.

The discretization error of a prediction is usually small and worth computing: a model stepped at period TTT through an acceleration aaa is off by about aT2/2aT^2/2aT2/2, 0.6 mm for 3 m/s23\ \text{m/s}^23 m/s2 at 50 Hz, negligible beside a 50 ms latency at 5 m/s, which costs 25 cm (error budget).

On a network the step has a second bound. For I−Δt LI-\Delta t,LI−ΔtL with a symmetric Laplacian to stay a non-negative averaging matrix, Δt≤1/dmax⁡\Delta t\le1/d&#95;{\max}Δt≤1/dmax​ is required on top of stability: stability, non-negativity and accuracy are three different checks. Adding links raises the degrees and with them λmax⁡\lambda&#95;{\max}λmax​, so a step tuned on a sparse graph can diverge on a denser one.

A Markov transition matrix can define a discrete process on its own, without coming from a differential equation; and P=D−1WP=D^{-1}WP=D−1W is not, in general, the exact sample e−LΔte^{-L\Delta t}e−LΔt of graph diffusion.

Modal powers and exponentials come from modes; effects between samples belong to delay and lag; the stability studied in equilibrium and stability is the system's, not the algorithm's.