diff options
Diffstat (limited to 'day1/session6.tex')
-rwxr-xr-x | day1/session6.tex | 238 |
1 files changed, 196 insertions, 42 deletions
diff --git a/day1/session6.tex b/day1/session6.tex index 444048c..01b0fc9 100755 --- a/day1/session6.tex +++ b/day1/session6.tex @@ -73,7 +73,7 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Title page -\title[ODEs \& Root Finding]{Python for Science and Engg:\\ODEs \& Finding Roots} +\title[Solving Equations \& ODEs]{Python for Science and Engg:\\Solving Equations \& ODEs} \author[FOSSEE] {FOSSEE} @@ -123,62 +123,158 @@ %% % You might wish to add the option [pausesections] %% \end{frame} -\section{ODEs} +\section{Solving linear equations} \begin{frame}[fragile] -\frametitle{ODE Integration} -We shall use the simple ODE 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(10^o)\quad & \&\quad \omega = 0\ (Initial\ values)\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} +\frametitle{Solving using Matrices} +Let us now look at how to solve this using \kwrd{matrices} + \begin{lstlisting} + In []: A = array([[3,2,-1], + [2,-2,4], + [-1, 0.5, -1]]) + In []: b = array([[1], [-2], [0]]) + In []: x = solve(A, b) + In []: Ax = dot(A,x) + \end{lstlisting} +\end{frame} + +\begin{frame}[fragile] +\frametitle{Solution:} \begin{lstlisting} -In []: def pend_int(initial, t): - .... theta, omega = initial - .... g, L = -9.81, 0.2 - .... f=[omega, -(g/L)*sin(theta)] - .... return f - .... +In []: x +Out[]: +array([[ 1.], + [-2.], + [-2.]]) \end{lstlisting} \end{frame} \begin{frame}[fragile] -\frametitle{Solving ODEs using SciPy \ldots} +\frametitle{Let's check!} +\begin{lstlisting} +In []: Ax +Out[]: +array([[ 1.00000000e+00], + [ -2.00000000e+00], + [ 2.22044605e-16]]) +\end{lstlisting} +\begin{block}{} +The last term in the matrix is actually \alert{0}!\\ +We can use \kwrd{allclose()} to check. +\end{block} +\begin{lstlisting} +In []: allclose(Ax, b) +Out[]: True +\end{lstlisting} +\inctime{15} +\end{frame} + +\subsection{Exercises} + +\begin{frame}[fragile] +\frametitle{Problem 1} +Given the matrix:\\ +\begin{center} +$\begin{bmatrix} +-2 & 2 & 3\\ + 2 & 1 & 6\\ +-1 &-2 & 0\\ +\end{bmatrix}$ +\end{center} +Find: \begin{itemize} -\item \typ{t} is the time variable \\ -\item \typ{initial} has the initial values + \item[i] Transpose + \item[ii]Inverse + \item[iii]Determinant + \item[iv] Eigenvalues and Eigen vectors + \item[v] Singular Value decomposition \end{itemize} -\begin{lstlisting} -In []: t = linspace(0, 10, 101) -In []: initial = [10*2*pi/360, 0] -\end{lstlisting} \end{frame} \begin{frame}[fragile] -\frametitle{Solving ODEs using SciPy \ldots} -%%\begin{small} -\typ{In []: from scipy.integrate import odeint} -%%\end{small} -\begin{lstlisting} -In []: pend_sol = odeint(pend_int, - initial,t) -\end{lstlisting} +\frametitle{Problem 2} +Given +\begin{center} +A = +$\begin{bmatrix} +-3 & 1 & 5 \\ +1 & 0 & -2 \\ +5 & -2 & 4 \\ +\end{bmatrix}$ +, B = +$\begin{bmatrix} +0 & 9 & -12 \\ +-9 & 0 & 20 \\ +12 & -20 & 0 \\ +\end{bmatrix}$ +\end{center} +Find: +\begin{itemize} + \item[i] Sum of A and B + \item[ii]Elementwise Product of A and B + \item[iii] Matrix product of A and B +\end{itemize} +\end{frame} + +\begin{frame}[fragile] +\frametitle{Solution} +Sum: +$\begin{bmatrix} +-3 & 10 & 7 \\ +-8 & 0 & 18 \\ +17 & -22 & 4 \\ +\end{bmatrix}$ +,\\ Elementwise Product: +$\begin{bmatrix} +0 & 9 & -60 \\ +-9 & 0 & -40 \\ +60 & 40 & 0 \\ +\end{bmatrix}$ +,\\ Matrix product: +$\begin{bmatrix} +51 & -127 & 56 \\ +-24 & 49 & -12 \\ +66 & -35 & -100 \\ +\end{bmatrix}$ +\end{frame} + +\begin{frame}[fragile] +\frametitle{Problem 3} +Solve the set of equations: +\begin{align*} + x + y + 2z -w & = 3\\ + 2x + 5y - z - 9w & = -3\\ + 2x + y -z + 3w & = -11 \\ + x - 3y + 2z + 7w & = -5\\ +\end{align*} +\inctime{10} +\end{frame} + +\begin{frame}[fragile] +\frametitle{Solution} +Use \kwrd{solve()} +\begin{align*} + x & = -5\\ + y & = 2\\ + z & = 3\\ + w & = 0\\ +\end{align*} \end{frame} \section{Finding Roots} @@ -224,6 +320,64 @@ In []: pend_sol = odeint(pend_int, %% \end{small} %% \end{frame} +\section{ODEs} +\begin{frame}[fragile] +\frametitle{ODE Integration} +We shall use the simple ODE 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(10^o)\quad & \&\quad \omega = 0\ (Initial\ values)\nonumber +\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(initial, t): + .... theta, omega = initial + .... g, L = -9.81, 0.2 + .... f=[omega, -(g/L)*sin(theta)] + .... return f + .... +\end{lstlisting} +\end{frame} + +\begin{frame}[fragile] +\frametitle{Solving ODEs using SciPy \ldots} +\begin{itemize} +\item \typ{t} is the time variable \\ +\item \typ{initial} has the initial values +\end{itemize} +\begin{lstlisting} +In []: t = linspace(0, 10, 101) +In []: initial = [10*2*pi/360, 0] +\end{lstlisting} +\end{frame} + +\begin{frame}[fragile] +\frametitle{Solving ODEs using SciPy \ldots} +%%\begin{small} +\typ{In []: from scipy.integrate import odeint} +%%\end{small} +\begin{lstlisting} +In []: pend_sol = odeint(pend_int, + initial,t) +\end{lstlisting} +\end{frame} + + \begin{frame} \frametitle{Things we have learned} \begin{itemize} |