%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %Tutorial slides on Python. % % Author: FOSSEE % Copyright (c) 2009, FOSSEE, IIT Bombay %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \documentclass[14pt,compress]{beamer} %\documentclass[draft]{beamer} %\documentclass[compress,handout]{beamer} %\usepackage{pgfpages} %\pgfpagesuselayout{2 on 1}[a4paper,border shrink=5mm] % Modified from: generic-ornate-15min-45min.de.tex \mode { \usetheme{Warsaw} \useoutertheme{infolines} \setbeamercovered{transparent} } \usepackage[english]{babel} \usepackage[latin1]{inputenc} %\usepackage{times} \usepackage[T1]{fontenc} % Taken from Fernando's slides. \usepackage{ae,aecompl} \usepackage{mathpazo,courier,euler} \usepackage[scaled=.95]{helvet} \usepackage{amsmath} \definecolor{darkgreen}{rgb}{0,0.5,0} \usepackage{listings} \lstset{language=Python, basicstyle=\ttfamily\bfseries, commentstyle=\color{red}\itshape, stringstyle=\color{darkgreen}, showstringspaces=false, keywordstyle=\color{blue}\bfseries} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Macros \setbeamercolor{emphbar}{bg=blue!20, fg=black} \newcommand{\emphbar}[1] {\begin{beamercolorbox}[rounded=true]{emphbar} {#1} \end{beamercolorbox} } \newcounter{time} \setcounter{time}{0} \newcommand{\inctime}[1]{\addtocounter{time}{#1}{\tiny \thetime\ m}} \newcommand{\typ}[1]{\lstinline{#1}} \newcommand{\kwrd}[1]{ \texttt{\textbf{\color{blue}{#1}}} } %%% This is from Fernando's setup. % \usepackage{color} % \definecolor{orange}{cmyk}{0,0.4,0.8,0.2} % % Use and configure listings package for nicely formatted code % \usepackage{listings} % \lstset{ % language=Python, % basicstyle=\small\ttfamily, % commentstyle=\ttfamily\color{blue}, % stringstyle=\ttfamily\color{orange}, % showstringspaces=false, % breaklines=true, % postbreak = \space\dots % } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Title page \title[Solving Equations \& ODEs]{Python for Science and Engg:\\Solving Equations \& ODEs} \author[FOSSEE] {FOSSEE} \institute[IIT Bombay] {Department of Aerospace Engineering\\IIT Bombay} \date[] {31 October, 2009\\Day 1, Session 6} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %\pgfdeclareimage[height=0.75cm]{iitmlogo}{iitmlogo} %\logo{\pgfuseimage{iitmlogo}} %% Delete this, if you do not want the table of contents to pop up at %% the beginning of each subsection: \AtBeginSubsection[] { \begin{frame} \frametitle{Outline} \tableofcontents[currentsection,currentsubsection] \end{frame} } \AtBeginSection[] { \begin{frame} \frametitle{Outline} \tableofcontents[currentsection,currentsubsection] \end{frame} } % If you wish to uncover everything in a step-wise fashion, uncomment % the following command: %\beamerdefaultoverlayspecification{<+->} %\includeonlyframes{current,current1,current2,current3,current4,current5,current6} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % DOCUMENT STARTS \begin{document} \begin{frame} \maketitle \end{frame} %% \begin{frame} %% \frametitle{Outline} %% \tableofcontents %% % You might wish to add the option [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 = 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 []: x Out[]: array([[ 1.], [-2.], [-2.]]) \end{lstlisting} \end{frame} \begin{frame}[fragile] \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[i] Transpose \item[ii]Inverse \item[iii]Determinant \item[iv] Eigenvalues and Eigen vectors \item[v] Singular Value decomposition \end{itemize} \end{frame} \begin{frame}[fragile] \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} \begin{frame}[fragile] \frametitle{Scipy Methods - \typ{roots}} \begin{itemize} \item Calculates the roots of polynomials \end{itemize} \begin{lstlisting} In []: coeffs = [1, 6, 13] In []: roots(coeffs) \end{lstlisting} \end{frame} \begin{frame}[fragile] \frametitle{Scipy Methods - \typ{fsolve}} \begin{small} \begin{lstlisting} In []: from scipy.optimize import fsolve \end{lstlisting} \end{small} \begin{itemize} \item Finds the roots of a system of non-linear equations \item Input arguments - Function and initial estimate \item Returns the solution \end{itemize} \begin{lstlisting} In []: fsolve(our_f, -pi/2) \end{lstlisting} \end{frame} %% \begin{frame}[fragile] %% \frametitle{Scipy Methods \dots} %% \begin{small} %% \begin{lstlisting} %% In []: from scipy.optimize import fixed_point %% In []: from scipy.optimize import bisect %% In []: from scipy.optimize import newton %% \end{lstlisting} %% \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} \item Solving ODEs \item Finding Roots \end{itemize} \end{frame} \end{document}