diff options
Diffstat (limited to 'day1/session4.tex')
-rw-r--r-- | day1/session4.tex | 254 |
1 files changed, 41 insertions, 213 deletions
diff --git a/day1/session4.tex b/day1/session4.tex index 6532025..68fe51b 100644 --- a/day1/session4.tex +++ b/day1/session4.tex @@ -74,7 +74,7 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Title page -\title[Basic Python]{Matrices, Solution of equations and Integration\\} +\title[Basic Python]{Matrices, Solution of equations} \author[FOSSEE] {FOSSEE} @@ -124,54 +124,14 @@ % \pausesections \end{frame} -\section{Solving linear equations} -\begin{frame}[fragile] -\frametitle{Solution of equations} -Consider, - \begin{align*} - 3x + 2y - z & = 1 \\ - 2x - 2y + 4z & = -2 \\ - -x + \frac{1}{2}y -z & = 0 - \end{align*} -Solution: - \begin{align*} - x & = 1 \\ - y & = -2 \\ - z & = -2 - \end{align*} -\end{frame} - -\begin{frame}[fragile] -\frametitle{Solving using Matrices} -Let us now look at how to solve this using \kwrd{matrices} - \begin{lstlisting} - In []: A = matrix([[3,2,-1],[2,-2,4],[-1, 0.5, -1]]) - In []: b = matrix([[1], [-2], [0]]) - In []: x = linalg.solve(A, b) - In []: Ax = dot(A, x) - In []: allclose(Ax, b) - Out[]: True - \end{lstlisting} -\end{frame} - -\begin{frame}[fragile] -\frametitle{Solution:} -\begin{lstlisting} -In []: x -Out[]: -array([[ 1.], - [-2.], - [-2.]]) +\section{Matrices} -In []: Ax -Out[]: -matrix([[ 1.00000000e+00], - [ -2.00000000e+00], - [ 2.22044605e-16]]) -\end{lstlisting} +\begin{frame} +\frametitle{Matrices: Introduction} +We looked at the Van der Monde matrix in the previous session,\\ +let us now look at matrices in a little more detail. \end{frame} -\section{Matrices} \subsection{Initializing} \begin{frame}[fragile] \frametitle{Matrices: Initializing} @@ -236,172 +196,52 @@ matrix([[ 0.07734807, 0.01657459, 0.32044199], \end{lstlisting} \end{small} \end{frame} -\section{Integration} - -\subsection{Quadrature} - -\begin{frame}[fragile] -\frametitle{Quadrature} -\begin{itemize} -\item We wish to find area under a curve -\item Area under $(sin(x) + x^2)$ in $(0,1)$ -\item scipy has functions to do that -\end{itemize} -\small{\typ{In []: from scipy.integrate import quad}} -\begin{itemize} -\item Inputs - function to integrate, limits of integration -\end{itemize} -\begin{lstlisting} -In []: x = 0 -In []: quad(sin(x)+x**2, 0, 1) -\end{lstlisting} -\alert{\typ{error:}} -\typ{First argument must be a callable function.} -\end{frame} - -\begin{frame}[fragile] -\frametitle{Functions - Definition} -\begin{lstlisting} -In []: def f(x): - return sin(x)+x**2 -In []: quad(f, 0, 1) -\end{lstlisting} -\begin{itemize} -\item \typ{def} -\item arguments -\item \typ{return} -\end{itemize} -\end{frame} - -\begin{frame}[fragile] -\frametitle{Functions - Calling them} -\begin{lstlisting} -In [15]: f() ---------------------------------------- -\end{lstlisting} -\alert{\typ{TypeError:}}\typ{f() takes exactly 1 argument} -\typ{(0 given)} -\begin{lstlisting} -In []: f(0) -Out[]: 0.0 -In []: f(1) -Out[]: 1.8414709848078965 -\end{lstlisting} -\end{frame} - - -\begin{frame}[fragile] -\frametitle{Functions - Default Arguments} -\begin{lstlisting} -In []: def f(x=1): - return sin(x)+x**2 -In []: f(10) -Out[]: 99.455978889110625 -In []: f(1) -Out[]: 1.8414709848078965 -In []: f() -Out[]: 1.8414709848078965 -\end{lstlisting} -\end{frame} - -\begin{frame}[fragile] -\frametitle{Functions - Keyword Arguments} -\begin{lstlisting} -In []: def f(x=1, y=pi): - return sin(y)+x**2 -In []: f() -Out[]: 1.0000000000000002 -In []: f(2) -Out[]: 4.0 -In []: f(y=2) -Out[]: 1.9092974268256817 -In []: f(y=pi/2,x=0) -Out[]: 1.0 -\end{lstlisting} -\end{frame} - -\begin{frame}[fragile] - \frametitle{More on functions} - \begin{itemize} - \item Scope of variables in the function is local - \item Mutable items are \alert{passed by reference} - \item First line after definition may be a documentation string - (\alert{recommended!}) - \item Function definition and execution defines a name bound to the - function - \item You \emph{can} assign a variable to a function! - \end{itemize} -\end{frame} - -\begin{frame}[fragile] -\frametitle{Quadrature \ldots} -\begin{lstlisting} -In []: quad(f, 0, 1) -\end{lstlisting} -Returns the integral and an estimate of the absolute error in the result. -\begin{itemize} -\item Use \typ{dblquad} for Double integrals -\item Use \typ{tplquad} for Triple integrals -\end{itemize} -\end{frame} -\subsection{ODEs} +\section{Solving linear equations} \begin{frame}[fragile] -\frametitle{ODE Integration} -We shall look at the motion of a simple pendulum. -\begin{equation*} -\ddot{\theta} = -\frac{g}{L}sin(\theta) -\end{equation*} -\begin{itemize} -\item This equation can be written as a system of two first order ODEs -\end{itemize} -\begin{align} -\dot{\theta} &= \omega \\ -\dot{\omega} &= -\frac{g}{L}sin(\theta) \\ - \text{At}\ t &= 0 : \nonumber \\ - \theta = \theta_0\quad & \&\quad \omega = 0 \nonumber -\end{align} +\frametitle{Solution of equations} +Consider, + \begin{align*} + 3x + 2y - z & = 1 \\ + 2x - 2y + 4z & = -2 \\ + -x + \frac{1}{2}y -z & = 0 + \end{align*} +Solution: + \begin{align*} + x & = 1 \\ + y & = -2 \\ + z & = -2 + \end{align*} \end{frame} \begin{frame}[fragile] -\frametitle{Solving ODEs using SciPy} -\begin{itemize} -\item We use the \typ{odeint} function from scipy to do the integration -\item Define a function as below -\end{itemize} -\begin{lstlisting} -In []: def pend_int(unknown, t, p): - .... theta, omega = unknown - .... g, L = p - .... f=[omega, -(g/L)*sin(theta)] - .... return f - .... -\end{lstlisting} +\frametitle{Solving using Matrices} +Let us now look at how to solve this using \kwrd{matrices} + \begin{lstlisting} + In []: A = matrix([[3,2,-1],[2,-2,4],[-1, 0.5, -1]]) + In []: b = matrix([[1], [-2], [0]]) + In []: x = linalg.solve(A, b) + In []: Ax = dot(A, x) + In []: allclose(Ax, b) + Out[]: True + \end{lstlisting} \end{frame} \begin{frame}[fragile] -\frametitle{Solving ODEs using SciPy \ldots} -\begin{itemize} -\item \typ{t} is the time variable \\ -\item \typ{p} has the constants \\ -\item \typ{initial} has the initial values -\end{itemize} +\frametitle{Solution:} \begin{lstlisting} -In []: t = linspace(0, 10, 101) -In []: p=(-9.81, 0.2) -In []: initial = [10*2*pi/360, 0] -\end{lstlisting} -\end{frame} - -\begin{frame}[fragile] -\frametitle{Solving ODEs using SciPy \ldots} +In []: x +Out[]: +array([[ 1.], + [-2.], + [-2.]]) -\small{\typ{In []: from scipy.integrate import odeint}} -\begin{lstlisting} -In []: pend_sol = odeint(pend_int, - initial,t, - args=(p,)) +In []: Ax +Out[]: +matrix([[ 1.00000000e+00], + [ -2.00000000e+00], + [ 2.22044605e-16]]) \end{lstlisting} \end{frame} @@ -410,18 +250,6 @@ In []: pend_sol = odeint(pend_int, \begin{itemize} \item \item - \item Functions - \begin{itemize} - \item Definition - \item Calling - \item Default Arguments - \item Keyword Arguments - \end{itemize} - \item Integration - \begin{itemize} - \item Quadrature - \item ODEs - \end{itemize} \end{itemize} \end{frame} |