Skip to content
Menu

7. Discrete-Time Models of Continuous Systems

Digital controllers need discrete-time models of continuous-time plants. This chapter builds the sampling and discretization framework connecting the two, for both state-space and transfer-function representations.

PowerPoint handouts: Discretization of State-Space Models (dark) · Discretization of State-Space Models (light) · Discretization of Transfer Functions (dark) · Discretization of Transfer Functions (light)

link to download code

For an inertial (double-integrator) system, discretizing at a sampling time dt gives A_d = e^(A*dt), and the text shows this maps each continuous-time eigenvalue lambda_i to a discrete-time eigenvalue lambda_di = e^(lambda_i * dt).

Since the continuous-time A here has both eigenvalues at 0, the mapping predicts both discrete-time eigenvalues land at e^0 = 1 — exactly what control.c2d()‘s zero-order-hold discretization and a direct eigenvalue computation both confirm.

# Discretization of continuous-time state-space systems
import control
import numpy
m = 1
dt = 0.1
A = [[0, 1], [0, 0]]
B = [[0], [1]]
C = [[1 / m, 0]]
D = 0
G_s = control.ss(A, B, C, D)
G_z = control.c2d(G_s, dt, 'zoh')
print("Discretized A_d =")
print(G_z.A)
eigA, _ = numpy.linalg.eig(A)
print("\nEigenvalues of continuous-time A:", eigA)
eigAd, _ = numpy.linalg.eig(G_z.A)
print("Eigenvalues of discretized A_d: ", eigAd)

Discretized eigenvalues (mcimp/codes/c2d/dteigenvalue.py)

Click "Run" to execute.

← All chapters