
diff -r e7febbccd376 -r 346f3a7e5da5 day2/session1.tex
--- a/day2/session1.tex	Wed Oct 14 11:19:20 2009 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,832 +0,0 @@
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Tutorial slides on Python.
-%
-% Author: Prabhu Ramachandran <prabhu at aero.iitb.ac.in>
-% Copyright (c) 2005-2009, Prabhu Ramachandran
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-\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<presentation>
-{
-  \usetheme{Warsaw}
-  \useoutertheme{split}
-  \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}
-
-\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[]{Arrays\\ \& \\2D Plotting}
-
-\author[FOSSEE Team] {FOSSEE}
-
-\institute[IIT Bombay] {Department of Aerospace Engineering\\IIT Bombay}
-\date[] {11, October 2009}
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-%\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}<beamer>
-    \frametitle{Outline}
-    \tableofcontents[currentsection,currentsubsection]
-  \end{frame}
-}
-
-\AtBeginSection[]
-{
-  \begin{frame}<beamer>
-    \frametitle{Outline}
-    \tableofcontents[currentsection,currentsubsection]
-  \end{frame}
-}
-
-\newcommand{\num}{\texttt{numpy}}
-
-
-% 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{Arrays}
-
-\subsection{Basic \typ{numpy}}
-
-\begin{frame}
-  \frametitle{The \num\  module}
-  \begin{itemize}
-      \item Why?
-  \item What:
-    \begin{itemize}
-    \item An efficient and powerful array type for various common data types
-    \item Abstracts out the most commonly used standard operations on arrays
-    \end{itemize}
-  \end{itemize}
-\end{frame}
-
-\begin{frame}[fragile]
-  \frametitle{Examples of \num}
-\begin{lstlisting}
-# Simple array math example
->>> from numpy import *
->>> a = array([1,2,3,4])
->>> b = arange(2,6)
->>> b
-array([2,3,4,5])
->>> a*2 + b + 1 # Basic math!
-array([5, 8, 11, 14])
-\end{lstlisting}
-\end{frame}
-
-\begin{frame}[fragile]
-  \frametitle{Examples of \num}
-\begin{lstlisting}
-# Pi and e are defined.
->>> x = linspace(0.0, 10.0, 1000)
->>> x *= 2*pi/10 # inplace.
-# apply functions to array.
->>> y = sin(x)
->>> z = exp(y)
-\end{lstlisting}
-\inctime{5}
-\end{frame}
-
-\begin{frame}[fragile]
-  \frametitle{More examples of \num}
-\vspace*{-8pt}
-\begin{lstlisting}
->>> x = array([1., 2, 3, 4])
->>> size(x)
-4
->>> x.dtype # What is a.dtype?
-dtype('float64')
->>> x.shape
-(4,)
->>> print x.itemsize
-8
->>> x[0] = 10
->>> print x[0], x[-1]
-10.0 4.0
-\end{lstlisting}
-\end{frame}
-
-\begin{frame}[fragile]
-  \frametitle{Multi-dimensional arrays}
-\begin{lstlisting}
->>> a = array([[ 0, 1, 2, 3],
-...            [10,11,12,13]])
->>> a.shape # (rows, columns)
-(2, 4)
->>> a.shape=4,2
-# Accessing and setting values
->>> a[1][3] 
->>> a[1,3] 
->>> a[1,3] = -1
->>> a[1] # The second row
-\end{lstlisting}
-\end{frame}
-
-\begin{frame}[fragile]
-  \frametitle{Array math}
-  \begin{itemize}
-  \item Basic \alert{elementwise} math (given two arrays \typ{a, b}):
-      \typ{+, -, *, /, \%}
-  \item Inplace operators: \typ{a += b}
-  \item \typ{sum(x, axis=0)}, 
-        \typ{product(x, axis=0)},
-        \typ{dot(a, bp)}   
-  \end{itemize}
-\begin{lstlisting}
->>> x = array([[0,2,4,2],[1,2,3,4]])
->>> sum(x)
->>> sum(x,axis=1)
-\end{lstlisting}
-\end{frame}
-
-\begin{frame}[fragile]
-  \frametitle{Array math cont.}
-  \begin{itemize}
-  \item Logical operations: \typ{==}, \typ{!=},
-    \typ{<}, \typ{>} etc.
-  \item Trig and other functions: \typ{sin(x),}
-        \typ{arcsin(x), sinh(x),}
-      \typ{exp(x), sqrt(x)} etc.
-  \end{itemize}
-\begin{lstlisting}
->>> a<4, a!=3
->>> sqrt(a)
-\end{lstlisting}
-\inctime{10}
-\end{frame}
-
-\begin{frame}
-  \frametitle{Summary of Concepts}
-  \begin{itemize}
-  \item fixed size (\typ{arr.size});
-  \item Same type (\typ{arr.dtype}) of data
-  \item arbitrary dimensionality
-  \item \typ{arr.shape}: size in each dimension
-  \item \alert{Note:} \typ{len(arr) != arr.size} in general
-  \item \alert{Note:} By default array operations are performed
-    \alert{elementwise}
-  \end{itemize}
-\end{frame}
-
-\subsection{Array Creation \& Slicing, Striding Arrays}
-
-\begin{frame}[fragile]
-  \frametitle{Array creation functions}
-  \begin{itemize}
-    \item \typ{array?} \alert{\#Doc string reading}
-    \item \typ{array(object,dtype=None,...)}
-    \begin{lstlisting}
->>> array([2,3,4])  
-array([2, 3, 4])
-    \end{lstlisting}
-    \item \typ{linspace(start,stop,num)}
-    \begin{lstlisting}
->>> linspace(0, 2, 4)   
-array([0.,0.6666667,1.3333333,2.])
-    \end{lstlisting}
-    \item \typ{arange?}
-      \alert{\# float version of range}
-  \end{itemize}
-\end{frame}
-
-\begin{frame}[fragile]
-  \frametitle{Array creation functions cont.}
-  \begin{itemize}  
-  \item \typ{ones(shape, dtype=None, ...)}  
-  \begin{lstlisting} 
->>> ones((2,2))
-array([[ 1.,  1.],
-     [ 1.,  1.]])
-  \end{lstlisting}  
-  \item \typ{identity(n)} 
-  \item \typ{ones\_like(x)}  
-  \begin{lstlisting} 
->>> a = array([[1,2,3],[4,5,6]])
->>> ones_like(a)
-array([[1, 1, 1],
-       [1, 1, 1]])
-  \end{lstlisting}
-  \item Also try \typ{zeros, zeros\_like, empty}
-  \end{itemize}
-\end{frame}
-
-\begin{frame}[fragile]
-  \frametitle{Slicing arrays}
-\begin{lstlisting}
->>> a = array([[1,2,3], [4,5,6], 
-               [7,8,9]])
->>> a[0,1:3]
-array([2, 3])
->>> a[1:,1:]
-array([[5, 6],
-       [8, 9]])
->>> a[:,2]
-array([3, 6, 9])
-\end{lstlisting}
-\end{frame}
-
-\begin{frame}[fragile]
-  \frametitle{Striding arrays}
-\begin{lstlisting}
->>> a[0::2,0::2]
-array([[1, 3],
-       [7, 9]])
-# Slices are references to the 
-# same memory!
-\end{lstlisting}
-\end{frame}
-
-\begin{frame}[fragile]
-\frametitle{Random Numbers}
-\begin{lstlisting}
->>> random.random()
-0.94134734326214331
->>> random.random(2)
-array([ 0.73955352,  0.49463645])
->>> random.random(3,2)
-array([[ 0.96276665,  0.77174861],
-       [ 0.35138557,  0.61462271],
-       [ 0.16789255,  0.43848811]])
-\end{lstlisting}
-\inctime{15}
-\end{frame}
-
-\begin{frame}[fragile]
-  \frametitle{Problem}
-  Finite difference
-  \begin{equation*}
-  \frac{sin(x+h)-sin(x)}{h}
-  \end{equation*}
-  \begin{lstlisting}
-  >>> x = linspace(0,2*pi,100)
-  >>> y = sin(x)
-  >>> deltax = x[1]-x[0]
-  \end{lstlisting}
-  \pause
-    \begin{enumerate}
-      \item Given this, get the finite difference of sin in the range 0 to 2*pi
-    \end{enumerate}
-\end{frame}
-
-
-\begin{frame}[fragile]
-  \frametitle{Advanced Problem}
-  \begin{lstlisting}
-    >>> from scipy import misc
-    >>> A=misc.imread('filename')
-    >>> misc.imshow(A)
-  \end{lstlisting}
-    \begin{enumerate}
-    \item Convert an RGB image to Grayscale. $ Y = 0.5R + 0.25G + 0.25B $
-    \item Scale the image to 50\%
-    \item Introduce some random noise
-    \item Smooth the image using a mean filter
-      \\\small{Each element in the array is replaced by mean of all the neighbouring elements}
-      \\\small{How fast does your code run?}
-    \end{enumerate}
-\inctime{15}
-\end{frame}
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-\section{2D Plotting}
-\subsection{Getting Started}
-
-\begin{frame}
-    {IPython's \typ{pylab} mode}
-\begin{block}{Immediate use -}
- \typ{\$ ipython -pylab}
-\end{block}
-\begin{itemize}
-    \item \typ{pylab}: convenient 2D plotting interface to MPL    
-    \item Imports all of pylab for you!
-    \item Allows for interactive plotting
-\end{itemize}
-\end{frame}
-
-\begin{frame}[fragile]
-    \frametitle{Basic 2D plotting}
-
-\begin{lstlisting}
->>> x = linspace(0, 2*pi, 1000)
->>> plot(x, sin(x)) 
->>> plot(x, sin(x), 'ro')
->>> xlabel(r'$\chi$', color='g')
-# LaTeX markup!
->>> ylabel(r'sin($\chi$)', color='r')
->>> title('Simple figure', fontsize=20)
->>> savefig('/tmp/test.png')
-\end{lstlisting}
-\begin{itemize}
-  \item Also: PS, EPS, SVG, PDF
-\end{itemize}
-\inctime{5}
-\end{frame}
-       
-\subsection{Plots - Lines, Labels and Legends}
-\begin{frame}[fragile]
-  \frametitle{Tweaking plots}
-\begin{lstlisting}
-# Set properties of objects:
->>> l, = plot(x, sin(x))
-# Why "l,"?
->>> setp(l, linewidth=2.0, color='r')
->>> l.set_linewidth(2.0)
->>> draw() # Redraw.
->>> setp(l) # Print properties.
->>> clf() # Clear figure.
->>> close() # Close figure.
-\end{lstlisting}
-\end{frame}
-
-\begin{frame}[fragile]
-   \frametitle{Working with text \ldots}
-%\begin{itemize}
-%  \item We already saw LaTeX markup support!
-%\end{itemize}
-\begin{lstlisting}
->>> w = arange(-2,2,.1)
->>> plot(w,exp(-(w*w))*cos)
->>> ylabel('$f(\omega)$')
->>> xlabel('$\omega$')
->>> title(r"$f(\omega)=e^{-\omega^2}
-            cos({\omega^2})$")
-\end{lstlisting}
-    
-\end{frame}
-
-\begin{frame}[fragile]
-  \frametitle{Legends}
-\begin{lstlisting}
->>> x = linspace(0, 2*pi, 1000)
->>> plot(x, cos(5*x), 'r--', 
-         label='cosine')
->>> plot(x, sin(5*x), 'g--', 
-         label='sine')
->>> legend() 
-# Or use:
->>> legend(['cosine', 'sine'])
-\end{lstlisting}
-\end{frame}
-
-\begin{frame}[fragile]
-    \frametitle{Multiple figures}
-
-\begin{lstlisting}
->>> figure(1)
->>> plot(x, sin(x))
->>> figure(2)
->>> plot(x, tanh(x))
->>> figure(1)
->>> title('Easy as 1,2,3')
-\end{lstlisting}
-    
-
-\end{frame}
-
-\begin{frame}[fragile]
-    \frametitle{\typ{pylab} in Python scripts}
-\begin{lstlisting}
-import pylab
-x = pylab.linspace(0, 20, 1000)
-pylab.plot(x, pylab.sin(x))
-
-# Can also use:
-from pylab import linspace, sin, plot
-\end{lstlisting}
-\inctime{10}
-\end{frame}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\subsection{Types of Plots}
-\begin{frame}[fragile]
-  \frametitle{X-Y plot}
-  \begin{columns}
-    \column{0.5\textwidth}
-    \hspace*{-0.5in}
-    \includegraphics[height=2in, interpolate=true]{data/xyplot}
-    \column{0.45\textwidth}
-    \begin{block}{Example code}
-    \tiny
-\begin{lstlisting}
-t1 = arange(0.0, 5.0, 0.1)
-t2 = arange(0.0, 5.0, 0.02)
-t3 = arange(0.0, 2.0, 0.01)
-subplot(211)
-plot(t1, cos(2*pi*t1)*exp(-t1), 'bo', 
-     t2, cos(2*pi*t2)*exp(-t2), 'k')
-grid(True)
-title('A tale of 2 subplots')
-ylabel('Damped')
-subplot(212)
-plot(t3, cos(2*pi*t3), 'r--')
-grid(True)
-xlabel('time (s)')
-ylabel('Undamped')
-\end{lstlisting}
-    \end{block}
-  \end{columns}
-\end{frame}
-
-\begin{frame}[fragile] \frametitle{Semi-log and log-log plots}
-  \begin{columns}
-    \column{0.5\textwidth}
-    \hspace*{-0.5in}
-  \includegraphics[height=2in, interpolate=true]{data/log}  
-    \column{0.45\textwidth}
-    \begin{block}{Example code}
-    \tiny
-\begin{lstlisting}
-dt = 0.01
-t = arange(dt, 20.0, dt)
-subplot(311)
-semilogy(t, exp(-t/5.0))
-ylabel('semilogy')
-grid(True)
-subplot(312)
-semilogx(t, sin(2*pi*t))
-ylabel('semilogx')
-grid(True)
-# minor grid on too
-gca().xaxis.grid(True, which='minor')  
-subplot(313)
-loglog(t, 20*exp(-t/10.0), basex=4)
-grid(True)
-ylabel('loglog base 4 on x')
-\end{lstlisting}
-  \end{block}
-\end{columns}
-\end{frame}
-
-\begin{frame}[fragile] \frametitle{Errorbar}
-  \begin{columns}
-    \column{0.5\textwidth}
-    \hspace*{-0.5in}
-  \includegraphics[height=2in, interpolate=true]{data/errorbar}  
-    \column{0.45\textwidth}
-    \begin{block}{Example code}
-    \tiny
-\begin{lstlisting}
-t = arange(0.1, 4, 0.1)
-s = exp(-t)
-e = 0.1*abs(randn(len(s)))
-f = 0.1*abs(randn(len(s)))
-g = 2*e
-h = 2*f
-errorbar(t, s, [e,g], f, fmt='o')
-xlabel('Distance (m)')
-ylabel('Height (m)')
-title('Mean and standard error '\
-      'as a function of distance')
-\end{lstlisting}
-  \end{block}
-\end{columns}
-\end{frame}
-
-\begin{frame}[fragile] \frametitle{Histogram}
-  \begin{columns}
-    \column{0.5\textwidth}
-    \hspace*{-0.5in}
-  \includegraphics[height=2in, interpolate=true]{data/histogram}  
-    \column{0.45\textwidth}
-    \begin{block}{Example code}
-    \tiny
-\begin{lstlisting}
-mu, sigma = 100, 15
-x = mu + sigma*randn(10000)
-# the histogram of the data
-n, bins, patches = hist(x, 100, normed=1)
-# add a 'best fit' line
-y = normpdf( bins, mu, sigma)
-l = plot(bins, y, 'r--', linewidth=2)
-xlim(40, 160)
-xlabel('Smarts')
-ylabel('P')
-title(r'$\rm{IQ:}\/ \mu=100,\/ \sigma=15$')
-\end{lstlisting}
-  \end{block}
-\end{columns}
-\end{frame}
-
-\begin{frame}[fragile] \frametitle{Bar charts}
-  \begin{columns}
-    \column{0.5\textwidth}
-    \hspace*{-0.5in}
-  \includegraphics[height=2in, interpolate=true]{data/barchart}  
-    \column{0.45\textwidth}
-    \begin{block}{Example code}
-    \tiny
-\begin{lstlisting}
-N = 5
-menMeans = (20, 35, 30, 35, 27)
-menStd =   ( 2,  3,  4,  1,  2)
-# the x locations for the groups
-ind = arange(N) 
-# the width of the bars
-width = 0.35       
-p1 = bar(ind, menMeans, width, 
-         color='r', yerr=menStd)
-womenMeans = (25, 32, 34, 20, 25)
-womenStd =   ( 3,  5,  2,  3,  3)
-p2 = bar(ind+width, womenMeans, width, 
-         color='y', yerr=womenStd)
-ylabel('Scores')
-title('Scores by group and gender')
-xticks(ind+width, 
-       ('G1', 'G2', 'G3', 'G4', 'G5'))
-xlim(-width,len(ind))
-yticks(arange(0,41,10))
-legend((p1[0], p2[0]), 
-       ('Men', 'Women'), shadow=True)
-\end{lstlisting}
-  \end{block}
-\end{columns}
-\end{frame}
-
-\begin{frame}[fragile] \frametitle{Pie charts}
-  \begin{columns}
-    \column{0.5\textwidth}
-    \hspace*{-0.4in}
-  \includegraphics[height=2.0in, interpolate=true]{data/piechart}  
-    \column{0.45\textwidth}
-    \begin{block}{Example code}
-    \tiny
-\begin{lstlisting}
-# make a square figure and axes
-figure(1, figsize=(8,8))
-ax = axes([0.1, 0.1, 0.8, 0.8])
-labels = 'Frogs', 'Hogs', 'Dogs', 'Logs'
-fracs = [15,30,45, 10]
-explode=(0, 0.05, 0, 0)
-pie(fracs, explode=explode, labels=labels, 
-    autopct='%1.1f%%', shadow=True)
-title('Raining Hogs and Dogs', 
-      bbox={'facecolor':'0.8', 'pad':5})
-\end{lstlisting}
-  \end{block}
-\end{columns}
-\end{frame}
-
-\begin{frame}[fragile] \frametitle{Scatter plots}
-  \begin{columns}
-    \column{0.5\textwidth}
-    \hspace*{-0.4in}
-  \includegraphics[height=2in, interpolate=true]{data/scatter}  
-    \column{0.45\textwidth}
-    \begin{block}{Example code}
-    \tiny
-\begin{lstlisting}
-N = 30
-x = 0.9*rand(N)
-y = 0.9*rand(N)
-# 0 to 10 point radiuses
-area = pi*(10 * rand(N))**2 
-volume = 400 + rand(N)*450
-scatter(x,y,s=area, marker='o', c=volume, 
-        alpha=0.75)
-xlabel(r'$\Delta_i$', size='x-large')
-ylabel(r'$\Delta_{i+1}$', size='x-large')
-title(r'Volume and percent change')
-grid(True)
-colorbar()
-savefig('scatter')
-\end{lstlisting}
-  \end{block}
-\end{columns}
-\end{frame}
-
-\begin{frame}[fragile] \frametitle{Polar}
-  \begin{columns}
-    \column{0.5\textwidth}
-    \hspace*{-0.5in}
-  \includegraphics[height=2in, interpolate=true]{data/polar}  
-    \column{0.45\textwidth}
-    \begin{block}{Example code}
-    \tiny
-\begin{lstlisting}
-figure(figsize=(8,8))
-ax = axes([0.1, 0.1, 0.8, 0.8], 
-          polar=True, 
-          axisbg='#d5de9c')
-r = arange(0,1,0.001)
-theta = 2*2*pi*r
-polar(theta, r, color='#ee8d18', lw=3)
-# the radius of the grid labels
-setp(ax.thetagridlabels, y=1.075) 
-title(r'$\theta=4\pi r$', fontsize=20)
-\end{lstlisting}
-
-  \end{block}
-\end{columns}
-\end{frame}
-
-\begin{frame}[fragile] \frametitle{Contours}
-  \begin{columns}
-    \column{0.45\textwidth}
-    \hspace*{-0.5in}
-  \includegraphics[height=2in, interpolate=true]{data/contour}  
-    \column{0.525\textwidth}
-    \begin{block}{Example code}
-    \tiny
-\begin{lstlisting}
-x = arange(-3.0, 3.0, 0.025)
-y = arange(-2.0, 2.0, 0.025)
-X, Y = meshgrid(x, y)
-Z1 = bivariate_normal(X, Y, 1.0, 1.0, 0.0, 0.0)
-Z2 = bivariate_normal(X, Y, 1.5, 0.5, 1, 1)
-# difference of Gaussians
-Z = 10.0 * (Z2 - Z1)
-im = imshow(Z, interpolation='bilinear', 
-            origin='lower',
-            cmap=cm.gray, extent=(-3,3,-2,2))
-levels = arange(-1.2, 1.6, 0.2)
-# label every second level
-clabel(CS, levels[1::2],  inline=1,
-       fmt='%1.1f', fontsize=14)
-CS = contour(Z, levels,
-             origin='lower',
-             linewidths=2,
-             extent=(-3,3,-2,2))
-# make a colorbar for the contour lines
-CB = colorbar(CS, shrink=0.8, extend='both')
-title('Lines with colorbar')
-hot(); flag()
-\end{lstlisting}
-  \end{block}
-\end{columns}
-\end{frame}
-
-\begin{frame}[fragile] \frametitle{Velocity vectors}
-  \begin{columns}
-    \column{0.5\textwidth}
-    \hspace*{-0.5in}
-  \includegraphics[height=2in, interpolate=true]{data/quiver}  
-    \column{0.45\textwidth}
-    \begin{block}{Example code}
-    \tiny
-\begin{lstlisting}
-X,Y = meshgrid(arange(0,2*pi,.2),
-               arange(0,2*pi,.2) )
-U = cos(X)
-V = sin(Y)
-Q = quiver(X[::3, ::3], Y[::3, ::3], 
-           U[::3, ::3], V[::3, ::3],
-           color='r', units='x', 
-           linewidths=(2,), 
-           edgecolors=('k'), 
-           headaxislength=5 )
-qk = quiverkey(Q, 0.5, 0.03, 1, '1 m/s', 
-               fontproperties=
-               {'weight': 'bold'})
-axis([-1, 7, -1, 7])
-title('triangular head; scale '\
-      'with x view; black edges')
-\end{lstlisting}
-  \end{block}
-\end{columns}
-\end{frame}
-
-\begin{frame}[fragile] \frametitle{Maps}
-  \includegraphics[height=2.3in, interpolate=true]{data/plotmap}  
-  \begin{center}
-    \tiny
-    For details see \url{http://matplotlib.sourceforge.net/screenshots/plotmap.py}
-  \end{center}
-\end{frame}
-
-
-\begin{frame}
-  \frametitle{More information}
-  \begin{itemize}
-  \item More information here: \url{http://matplotlib.sf.net}
-  \item \url{http://matplotlib.sf.net/tutorial.html}
-  \item \url{http://matplotlib.sf.net/screenshots.html}
-  \end{itemize}
-\inctime{5}
-\end{frame}
-
-\begin{frame}
-  \frametitle{Problem Set}
-  \begin{itemize}
-      \item[1] Write a function that plots any regular n-gon given \typ{n}.
-      \item[2] Consider the logistic map, $f(x) = kx(1-x)$, plot it for
-          $k=2.5, 3.5$ and $4$ in the same plot.
-\end{itemize}
-\end{frame}
-
-\begin{frame}[fragile] 
-\frametitle{Problem Set}
-  \begin{columns}
-    \column{0.6\textwidth}
-    \small{
-    \begin{itemize}
-      \item[3] Consider the iteration $x_{n+1} = f(x_n)$ where $f(x) = kx(1-x)$.  Plot the successive iterates of this process as explained below. 
-    \end{itemize}}
-    \column{0.35\textwidth}
-    \hspace*{-0.5in}
-  \includegraphics[height=1.6in, interpolate=true]{data/cobweb}  
-\end{columns}
-\end{frame}
-
-\begin{frame}
-  
-  Plot the cobweb plot as follows:
-  \begin{enumerate}
-    \item Start at $(x_0, 0)$ ($\implies$ i=0)
-    \item Draw a line to $(x_i, f(x_i))$
-    \item Set $x_{i+1} = f(x_i)$
-    \item Draw a line to $(x_{i+1}, x_{i+1})$
-    \item $(i\implies i+1)$ 
-    \item Repeat from 2 for as long as you want 
-  \end{enumerate}
-\inctime{20}
-\end{frame}
-
-\begin{frame}{Summary}
-  \begin{itemize}
-  \item Basics of Numpy.
-  \item Array operations.
-  \item Plotting in 2D.
-  \end{itemize}
-\end{frame}
-\end{document}




