%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %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} \usepackage{amsmath} % Taken from Fernando's slides. \usepackage{ae,aecompl} \usepackage{mathpazo,courier,euler} \usepackage[scaled=.95]{helvet} \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[Matrices \& Equations]{Python for Science and Engg: Matrices \& Solution of equations} \author[FOSSEE] {FOSSEE} \institute[IIT Bombay] {Department of Aerospace Engineering\\IIT Bombay} \date[] {31, October 2009\\Day 1, Session 4} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %\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} \titlepage \end{frame} \begin{frame} \frametitle{Outline} \tableofcontents % \pausesections \end{frame} \section{Matrices} \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} \subsection{Initializing} \begin{frame}[fragile] \frametitle{Matrices: Initializing} \begin{lstlisting} In []: A = matrix([[ 1, 1, 2, -1], [ 2, 5, -1, -9], [ 2, 1, -1, 3], [ 1, -3, 2, 7]]) In []: A Out[]: matrix([[ 1, 1, 2, -1], [ 2, 5, -1, -9], [ 2, 1, -1, 3], [ 1, -3, 2, 7]]) \end{lstlisting} \end{frame} \subsection{Basic Operations} \begin{frame}[fragile] \frametitle{Transpose of a Matrix} \begin{lstlisting} In []: linalg.transpose(A) Out[]: matrix([[ 1, 2, 2, 1], [ 1, 5, 1, -3], [ 2, -1, -1, 2], [-1, -9, 3, 7]]) \end{lstlisting} \end{frame} \begin{frame}[fragile] \frametitle{Sum of all elements} \begin{lstlisting} In []: linalg.sum(A) Out[]: 12 \end{lstlisting} \end{frame} \begin{frame}[fragile] \frametitle{Matrix Addition} \begin{lstlisting} In []: B = matrix([[3,2,-1,5], [2,-2,4,9], [-1,0.5,-1,-7], [9,-5,7,3]]) In []: linalg.add(A,B) Out[]: matrix([[ 4. , 3. , 1. , 4. ], [ 4. , 3. , 3. , 0. ], [ 1. , 1.5, -2. , -4. ], [ 10. , -8. , 9. , 10. ]]) \end{lstlisting} \end{frame} \begin{frame}[fragile] \frametitle{Matrix Multiplication} \begin{lstlisting} In []: linalg.multiply(A, B) Out[]: matrix([[ 3. , 2. , -2. , -5. ], [ 4. , -10. , -4. , -81. ], [ -2. , 0.5, 1. , -21. ], [ 9. , 15. , 14. , 21. ]]) \end{lstlisting} \end{frame} \begin{frame}[fragile] \frametitle{Inverse of a Matrix} \begin{small} \begin{lstlisting} In []: linalg.inv(A) Out[]: matrix([[-0.5 , 0.55, -0.15, 0.7 ], [ 0.75, -0.5 , 0.5 , -0.75], [ 0.5 , -0.15, -0.05, -0.1 ], [ 0.25, -0.25, 0.25, -0.25]]) \end{lstlisting} \end{small} \end{frame} \begin{frame}[fragile] \frametitle{Determinant} \begin{lstlisting} In []: det(A) Out[66]: 80.0 \end{lstlisting} \end{frame} \begin{frame}[fragile] \frametitle{Eigen Values and Eigen Matrix} \begin{small} \begin{lstlisting} In []: linalg.eig(A) Out[]: (array([ 11.41026155, 3.71581643, -0.81723144, -2.30884654]), matrix([[ 0.12300187, -0.53899627, 0.63269982, 0.56024583], [ 0.8225266 , -0.67562403, -0.63919634, -0.20747251], [-0.04763219, -0.47575453, -0.3709497 , -0.80066041], [-0.55321941, -0.16331814, -0.23133374, 0.04497415]])) \end{lstlisting} \end{small} \end{frame} \begin{frame}[fragile] \frametitle{Computing Norms} \begin{lstlisting} In []: linalg.norm(A) Out[]: 14.0 \end{lstlisting} \end{frame} \begin{frame}[fragile] \frametitle{Single Value Decomposition} \begin{small} \begin{lstlisting} In []: linalg.svd(A) Out[]: (matrix([[-0.08588113, 0.29164297, -0.74892678, 0.58879325], [-0.79093255, 0.39530483, -0.11188116, -0.45347812], [ 0.1523891 , 0.78799358, 0.51966138, 0.29290907], [ 0.58636823, 0.37113957, -0.39565558, -0.60156827]]), array([ 13.17656506, 3.76954116, 2.79959047, 0.57531379]), matrix([[-0.05893795, -0.42858358, 0.12442679, 0.89295039], [ 0.80364672, 0.51537891, 0.03774111, 0.29514767], [-0.11752501, 0.14226922, -0.96333552, 0.19476145], [-0.58040171, 0.72832696, 0.23468759, 0.27855956]])) \end{lstlisting} \end{small} \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) \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[]: matrix([[ 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} \end{frame} \subsection{Exercises} \begin{frame}[fragile] \frametitle{Problem} \end{frame} \begin{frame}[fragile] \frametitle{Problem} 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*} \end{frame} \section{Summary} \begin{frame} \frametitle{Summary} So what did we learn?? \begin{itemize} \item Matrices \begin{itemize} \item Transpose \item Addition \item Multiplication \item Inverse of a matrix \item Determinant \item Eigen values and Eigen matrix \item Norms \item Single Value Decomposition \end{itemize} \item Solving linear equations \end{itemize} \end{frame} \end{document}