Dynamics and Control with Jupyter Notebooks
latest
Contents:
1. Introduction to Sympy and the Jupyter Notebook for engineering calculations
1.1. A quick tour
1.2. Math in text boxes
1.3. Special symbols in variable names
1.4. SymPy
1.5. Calculus
1.6. Limits
1.7. Approximation
1.8. Solving equations
2. Python stuff not done in MPR
3. List comprehensions
3.1. Dictionaries
4. Tuples
4.1. Tuple expansion
5. The for loop in Python
5.1. zip
6. lambda
7. The Jupyter notebook cheat sheet
7.1. Table of Contents
7.2. Numeric
7.3. Basic plotting functions
7.4. Symbolic manipulation
7.4.1. Imports
7.4.2. Working with rational functions and polynomials
7.4.3. Functions useful for discrete systems
7.5. Equation solving
7.5.1. Symbolic
7.5.2. Numeric sympy
7.5.3. Numeric
7.6. Matrix math
7.6.1. Symbolic
7.6.2. Numeric
8. The draining cup problem
8.1. Volume-height relationship
8.2. Dynamic model
9. Equation solving tools
9.1. Exact solution using sympy
9.2. Special case: linear systems
9.3. Nonlinear equations
9.3.1. Numeric root finding
9.3.2. Downsides of numerical solution
9.4. Differential equations
9.4.1. Analytic solution
9.4.2. Numeric solution
9.4.2.1. A note about odeint
10. The problem with simple math on computers
10.1. Computers use base 2 instead of base 10
10.2. Solutions
10.2.1. Built-in to Python
10.2.2. Sympy
10.3. Why isn’t math always done in base 10?
10.4. Forcing rounding of exact representations
11. Read simulation input from a file
12. Fed Batch Bioreactor
13. CSTR system
13.1. Model
13.2. Solve for steady state
13.3. Nonlinear behaviour
14. Mixing system
15. Steady state calculation
15.1. Flow rates
15.2. Compositions
16. Design
17. Dynamic simulation
18. Valve equation
18.1. Rewriting in terms of devation variables
19. A note about simplification
19.1. Multiple variables
20. Laplace transforms in SymPy
20.1. Direct evaluation
20.2. Library function
20.3. What is that θ?
20.4. Reproducing standard transform table
20.5. More complicated inverses
21. Convolution and transfer functions
21.1. Numeric convolution
22. Visualising complex functions
22.1. One-dimensional functions
23. Standard process inputs
23.1. Step
23.2. Laplace transform
23.3. Scaling and translation
23.4. Rectangular pulse
23.4.1. Arbitrary piecewise constant functions
23.5. Ramp
23.6. Continuous piecewise linear functions
23.7. Arbitrary piecewise linear functions
24. First order systems
25. Sinusoidal response
25.1. First order
25.2. Second order sinusoidal response
25.3. Amplitude over frequency
26. Random response generator
27. Simulation of arbitrary transfer functions
27.1. Convert to ODE and integrate manually
27.2. LTI support in scipy.signal
27.2.1. Step responses
27.2.2. Responses to arbitrary inputs
27.2.3. Manual integration using state space form
27.2.4. Demonstration for higher order functions
27.2.5. State space for higher order functions
27.2.6. Systems in series
27.3. 3. Control module
28. Simplifying block diagrams
29. Approximation
29.1. Taylor approximation
29.2. Padé approximation
29.2.1. Further exploration
29.3. Approximations based on response matching
29.4. Skogestad’s “Half Rule”
30. Transfer function matrices
30.1. Representing matrices in SymPy
30.2. Representing matrices using the control library
31. Conversion to state space
32. State space representation
32.1. Converting between state space and transfer function forms
32.1.1. Scipy.signal
32.1.2. Control library
32.2. Symbolic conversion
32.3. Analysis
33. Linear regression
34. Create the design matrices
34.1. Pseudoinverse solution
34.2. Dedicated solvers
35. Nonlinear regression
36. Fitting step responses
37. Neural network regression
37.1. Scikit-learn
37.2. Keras
38. Fourier series
38.1. Step function
38.2. Step response via Frequency response
39. What does a sinusoid sound like?
39.1. But signals aren’t pure sinusoids
39.2. Numeric Fourier Transform
39.3. But that sounds terrible
40. Frequency response plots
41. Bode
42. Phase unwrapping
43. Nyquist
44. With the control library
45. Asymptotic Bode diagrams
46. Systems with real poles
47. Systems with complex poles
48. Dead time
49. Strategies for filtering out noise from a sampled signal
49.1. Pandas
50. Moving averages
50.1. Exponentially weighted moving average
51. The
\(z\)
-transform
51.1. Definition
51.2. Direct calculation in SymPy
51.3. Transfer functions from difference equations
51.4. Responses and inversion
51.5. Calculation using scipy
51.6. Calculation using the control libary
52. Instructions
53. PID step responses
53.1. PI
53.2. PID
53.3. PD
54. First-order system with proportional control
54.1. Offset as function of gain
54.2. Second order system with proportional control
55. PID control on TCLab
56. Programmatic interaction
57. Advanced usage
58. Accessing the historian
59. More detailed analysis
60. Closed loop controlled responses
61. Closed loop stability
62. Using the control library
62.1. Direct substitution
63. Why do we need the Routh Array
64. A better way
65. Root locus diagrams
66. Direct synthesis PID design
66.1. Alternate solution
67. Minimal integral measures
68. ITAE parameters for FOPDT system
69. Interactive version
70. Stability in the frequency domain
70.1. Locating poles and zeros of a complex function
70.2. Closed loop stability
70.3. Nyquist stability criterion
70.4. Bode stability criterion
71. Dead time reduces control performance
72. Smith Predictor
73. Numeric simulation
74. Symbolic calculation
75. Discrete PI with ITAE parameters
75.1. Reconstruction
75.2. Discrete responses
75.3. With output limits
75.4. With setpoint tracking
76. Dahlin controller
77. Discretise the system
78. Dahlin Controller
79. Continuous response
80. Simple discrete simulation: Dahlin controller
80.1. Simple discretisation
80.2. Do discrete transfer function math
80.3. Convert from positive to negative powers of z
80.4. Simple blocksim simulation
81. Noise models
82. Multivariable control
82.1. Closed loop transfer functions for multivariable systems
82.2. Characteristic equation
83. Multivariable Stability analysis
84. Multivariable pairing (RGA)
84.1. Simulation results
85. Eigenvalue problem
86. Decoupling
86.1. 1. Inverse-based
86.2. 2. Zero off-diagonals
86.3. 3. Adjugate method
87. Model Predictive Control
88. Control valve design
89. No delays
89.1. Normal way
89.2. Preallocation
90. Dead time
90.1. Lists and interp
90.2. Approximate indexing
91. Nonlinear tank system
92. PI Control
93. Classes
93.1. What is this good for?
93.2. Objects must be “like” things
94. Taking off the engine cover
95. Objects
95.1. Tank system
95.2. PI Controller
95.3. Generic integration
95.4. Re-using the interface
96. A discrete controller class
97. Blocksim
97.1. Re-using parts of a diagram
98. Disturbances
99. Algebraic equations
100. FOPDT fit
55. PID control on TCLab
56. Programmatic interaction
57. Advanced usage
58. Accessing the historian
59. More detailed analysis
101. TCLab in the frequency domain
101.1. Direct frequency domain tests
101.2. FFT based bode diagram
Dynamics and Control with Jupyter Notebooks
Docs
»
Search
Edit on GitHub
Please activate JavaScript to enable the search functionality.
Read the Docs
v: latest
Versions
latest
stable
Downloads
html
On Read the Docs
Project Home
Builds
Free document hosting provided by
Read the Docs
.