The Jupyter notebook cheat sheet
This document will be available to you during tests and exams
Numeric
Basic plotting functions
Accepted: {"data":{"image/png":"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\n","text/plain":"<Figure size 432x288 with 6 Axes>"},"metadata":{"needs_background":"light"},"transient":{}}
Messages
Symbolic manipulation
Imports
Example controller and system
Working with rational functions and polynomials
We often want nice rational functions, but sympy doesn't make expressions rational by default
Accepted: {"data":{"text/plain":"5*(s*tau + 1)*K_c/((10*s + 1)^2*s*tau) + 1"},"metadata":{},"execution_count":1}
Messages
The cancel
function forces this to be a fraction. collect
collects terms.
Accepted: {"traceback":["\u001b[0;31m---------------------------------------------------------------------------\u001b[0m","\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)","\u001b[0;32m<ipython-input-1-2d805c05d49f>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mchareq\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mchareq\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcancel\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcollect\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0ms\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0mchareq\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;32m/home/sc_serv/sage/local/lib/python3.9/site-packages/sage/structure/element.pyx\u001b[0m in \u001b[0;36msage.structure.element.Element.__getattr__ (build/cythonized/sage/structure/element.c:4708)\u001b[0;34m()\u001b[0m\n\u001b[1;32m 491\u001b[0m \u001b[0mAttributeError\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;34m'LeftZeroSemigroup_with_category.element_class'\u001b[0m \u001b[0mobject\u001b[0m \u001b[0mhas\u001b[0m \u001b[0mno\u001b[0m \u001b[0mattribute\u001b[0m \u001b[0;34m'blah_blah'\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 492\u001b[0m \"\"\"\n\u001b[0;32m--> 493\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgetattr_from_category\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mname\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 494\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 495\u001b[0m \u001b[0mcdef\u001b[0m \u001b[0mgetattr_from_category\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mname\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;32m/home/sc_serv/sage/local/lib/python3.9/site-packages/sage/structure/element.pyx\u001b[0m in \u001b[0;36msage.structure.element.Element.getattr_from_category (build/cythonized/sage/structure/element.c:4820)\u001b[0;34m()\u001b[0m\n\u001b[1;32m 504\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 505\u001b[0m \u001b[0mcls\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mP\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_abstract_element_class\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 506\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mgetattr_from_other_class\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcls\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mname\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 507\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 508\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m__dir__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;32m/home/sc_serv/sage/local/lib/python3.9/site-packages/sage/cpython/getattr.pyx\u001b[0m in \u001b[0;36msage.cpython.getattr.getattr_from_other_class (build/cythonized/sage/cpython/getattr.c:2618)\u001b[0;34m()\u001b[0m\n\u001b[1;32m 370\u001b[0m \u001b[0mdummy_error_message\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcls\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtype\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 371\u001b[0m \u001b[0mdummy_error_message\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mname\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mname\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 372\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mAttributeError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdummy_error_message\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 373\u001b[0m \u001b[0mattribute\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m<\u001b[0m\u001b[0mobject\u001b[0m\u001b[0;34m>\u001b[0m\u001b[0mattr\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 374\u001b[0m \u001b[0;31m# Check for a descriptor (__get__ in Python)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;31mAttributeError\u001b[0m: 'sage.symbolic.expression.Expression' object has no attribute 'cancel'"],"ename":"AttributeError","evalue":"'sage.symbolic.expression.Expression' object has no attribute 'cancel'"}
Messages
In some cases we can factor equations:
Obtain the numerator and denominator:
If you want them both, you can use
Convert to polynomial in s
Once we have a polynomial, it is easy to obtain coefficients:
Calculate the Routh Array
$$\left[\begin{matrix}100 \tau & 5 K_{c} \tau + \tau\\20 \tau & 5 K_{c}\\- 25 K_{c} + \tau \left(5 K_{c} + 1\right) & 0\\5 K_{c} & 0\end{matrix}\right]$$
To get a function which can be used numerically, use lambdify
:
Functions useful for discrete systems
Write in terms of positive powers of z:
Write in terms of negative powers of z:
Inversion of the z transform
Equation solving
Symbolic
Numeric sympy
$$\left[\begin{matrix}-2.21910714891375\\2.21910714891375\end{matrix}\right]$$
Numeric
array([-2.21910715, 2.21910715])
Matrix math
Symbolic
$$\left[\begin{matrix}G_{11} & G_{12}\\G_{21} & G_{22}\end{matrix}\right]$$
Determinant, inverse, transpose
$$\left ( G_{11} G_{22} - G_{12} G_{21}, \quad \left[\begin{matrix}\frac{G_{22}}{G_{11} G_{22} - G_{12} G_{21}} & - \frac{G_{12}}{G_{11} G_{22} - G_{12} G_{21}}\\- \frac{G_{21}}{G_{11} G_{22} - G_{12} G_{21}} & \frac{G_{11}}{G_{11} G_{22} - G_{12} G_{21}}\end{matrix}\right], \quad \left[\begin{matrix}G_{11} & G_{21}\\G_{12} & G_{22}\end{matrix}\right]\right )$$
Math operations: Multiplication, addition, elementwise multiplication:
$$\left ( \left[\begin{matrix}G_{11}^{2} + G_{12} G_{21} & G_{11} G_{12} + G_{12} G_{22}\\G_{11} G_{21} + G_{21} G_{22} & G_{12} G_{21} + G_{22}^{2}\end{matrix}\right], \quad \left[\begin{matrix}2 G_{11} & 2 G_{12}\\2 G_{21} & 2 G_{22}\end{matrix}\right], \quad \left[\begin{matrix}G_{11}^{2} & G_{12}^{2}\\G_{21}^{2} & G_{22}^{2}\end{matrix}\right]\right )$$
Numeric
Determinant, inverse, transpose
(-2.0000000000000004, matrix([[-2. , 1. ],
[ 1.5, -0.5]]), matrix([[1, 3],
[2, 4]]))
Math operations: Multiplication, addition, elementwise multiplication:
(matrix([[ 7, 10],
[15, 22]]), matrix([[2, 4],
[6, 8]]), array([[ 1, 4],
[ 9, 16]]))