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.
Lecture videos
Section titled “Lecture videos”Slides
Section titled “Slides”PowerPoint handouts: Discretization of State-Space Models (dark) · Discretization of State-Space Models (light) · Discretization of Transfer Functions (dark) · Discretization of Transfer Functions (light)
Interactive example
Section titled “Interactive example”Discretized eigenvalues
Section titled “Discretized eigenvalues”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 systemsimport controlimport numpy
m = 1dt = 0.1A = [[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.
Beyond this chapter
Section titled “Beyond this chapter”- Discretization (extended treatment) graduate / optional