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


© Copyright 2018, Carl Sandrock Revision 126285c3.

Built with Sphinx using a theme provided by Read the Docs.
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.