# Signals and Systems: Theory and Practical Explorations with Python – Companion e-book#

This is the companion e-book for “Signals and Systems: Theory and Practical Explorations with Python”. In this e-book, you will find supporting material for the content presented in the print book. These include interactive code pieces that you can execute, and videos that facilitates your learning.

This e-book is presented as an HTML web site. In addition, each chapter can be downloaded as a Jupyterlab notebook file (*.ipynb) or opened in Google Colab. Following the first option, you can execute the code pieces on your local machine (https://jupyter.org/), or with the second option, you can start interacting with the code pieces within your browser right away. We assume that you can program in Python and know how to execute a Jupyter notebook.

Throughout this companion book, we will use two mathematical Python libraries, namely SymPy and NumPy. SymPy focuses symbolic mathematics. You can define variables as symbols and do mathematics with them like you do with a pen and a paper. You can integrate a function or take its derivative, and even solve differential equations, **all symbolically**. Due to these properties, SymPy is naturally suitable for handling continuous-time signals and systems.

On the other hand, NumPy excels in numerical computations. You can create arrays of numbers and apply vector or matrix operations on them. It has fast linear algebra routines with support for multidimensional arrays. NumPy is a natural choice for handling discrete-time signals and systems.

Both libraries (SymPy and NumPy) can be used to represent CT and DT domains. However, as explained above, we will mostly use SymPy for CT signals and systems, and NumPy for DT signals and systems.

YOU ARE NOT ALLOWED TO REDISTRIBUTE THIS BOOK OR ANY PART OF IT, IN ANY SHAPE OR FORM.