%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%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{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}
\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[Exercises]{Exercises}
\author[FOSSEE] {FOSSEE}
\institute[IIT Bombay] {Department of Aerospace Engineering\\IIT Bombay}
\date[] {SciPy 2010, Tutorials}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%\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}
}
% 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}[fragile]
\frametitle{Problem 1}
\begin{columns}
\column{0.5\textwidth}
\hspace*{-0.5in}
\includegraphics[height=2in, interpolate=true]{data/L-Tsq.png}
\column{0.45\textwidth}
\begin{block}{Example code}
\tiny
\begin{lstlisting}
l = []
t = []
for line in open('pendulum.txt'):
point = line.split()
l.append(float(point[0]))
t.append(float(point[1]))
plot(l, t, '.')
\end{lstlisting}
\end{block}
\end{columns}
\begin{block}{Problem Statement}
Tweak above code to plot data in file \typ{pos.txt}.
\end{block}
\end{frame}
\begin{frame}
\frametitle{Problem 1 cont...}
\begin{itemize}
\item Label both the axes.
\item What kind of motion is this?
\item Title the graph accordingly.
\item Annotate the position where vertical velocity is zero.
\end{itemize}
\end{frame}
\begin{frame}[fragile]
\frametitle{Problem 2}
\begin{columns}
\column{0.5\textwidth}
\hspace*{-0.5in}
\includegraphics[height=2in, interpolate=true]{data/triangle}
\column{0.45\textwidth}
\begin{block}{Plot points given x and y coordinates}
\tiny
\begin{lstlisting}
In []: x = [3, 2, -2, 3]
In []: y = [1, -3, 4, 1]
In []: plot(x, y)
\end{lstlisting}
\end{block}
\end{columns}
Line can be plotted using arrays of coordinates.
\pause
\begin{block}{Problem statement}
Write a Program that plots a regular n-gon(Let n = 5).
\end{block}
\end{frame}
\begin{frame}[fragile]
\frametitle{Problem 3}
\begin{columns}
\column{0.5\textwidth}
\hspace*{-0.5in}
\includegraphics[height=2in, interpolate=true]{data/damp}
\column{0.45\textwidth}
\begin{block}{Damped Oscillation}
\tiny
\begin{lstlisting}
In []: t = linspace(0, 4*pi)
In []: plot(t, exp(t/10)*sin(t))
\end{lstlisting}
\end{block}
\end{columns}
\end{frame}
\begin{frame}[fragile]
\frametitle{Problem 3 cont...}
Create a sequence of images in which the damped
oscillator($e^{-t/10}sin(t)$) slowly evolves over time $t$.
\begin{columns}
\column{0.35\textwidth}
\includegraphics[width=1.5in,height=1.5in, interpolate=true]{data/plot2}
\column{0.35\textwidth}
\includegraphics[width=1.5in,height=1.5in, interpolate=true]{data/plot4}
\column{0.35\textwidth}
\includegraphics[width=1.5in,height=1.5in, interpolate=true]{data/plot6}
\end{columns}
\begin{block}{Hint}
\small
\begin{lstlisting}
savefig('plot'+str(i)+'.png') #i is some int
\end{lstlisting}
\end{block}
\end{frame}
\begin{frame}[fragile]
\frametitle{Problem 4}
\begin{lstlisting}
In []: x = imread('smoothing.gif')
In []: x.shape
Out[]: (256, 256)
In []: imshow(x,cmap=cm.gray)
In []: colorbar()
\end{lstlisting}
\emphbar{Replace each pixel with mean of neighboring pixels}
\begin{center}
\includegraphics[height=1in, interpolate=true]{data/neighbour}
\end{center}
\end{frame}
\begin{frame}
\begin{center}
\includegraphics[height=3in, interpolate=true]{data/smoothing}
\end{center}
\end{frame}
\begin{frame}[fragile]
\frametitle{Problem 4: Approach}
For \typ{y} being resultant image:
\begin{lstlisting}
y[1, 1] = x[0, 1]/4 + x[1, 0]/4
+ x[2, 1]/4 + x[1, 2]/4
\end{lstlisting}
\begin{columns}
\column{0.45\textwidth}
\hspace*{-0.5in}
\includegraphics[height=1.5in, interpolate=true]{data/smoothing}
\column{0.45\textwidth}
\hspace*{-0.5in}
\includegraphics[height=1.5in, interpolate=true]{data/after-filter}
\end{columns}
\begin{block}{Hint:}
Use array Slicing.
\end{block}
\end{frame}
\begin{frame}[fragile]
\frametitle{Solution}
\begin{lstlisting}
In []: y = zeros_like(x)
In []: y[1:-1,1:-1] = x[:-2,1:-1]/4 +
x[2:,1:-1]/4 +
x[1:-1,2:]/4 +
x[1:-1,:-2]/4
In []: imshow(y,cmap=cm.gray)
\end{lstlisting}
\end{frame}
\begin{frame}[fragile]
\frametitle{Problem 4 cont\ldots}
\begin{itemize}
\item Apply the smoothing operation repeatedly to the original
image
\item Subtract the smoothed image from the original to obtain
the edges
\end{itemize}
\end{frame}
\begin{frame}[fragile]
\frametitle{Problem 5}
What if you did the following in problem 4?
\begin{lstlisting}
In []: y1[1:-1,1:-1] = (x[:-2,1:-1] +
x[2:,1:-1] +
x[1:-1,2:] +
x[1:-1,:-2])/4
\end{lstlisting}
Are the answers different?
\end{frame}
\begin{frame}[fragile]
\frametitle{Problem 5 cont\ldots}
Why? The answer lies in the following:
\begin{lstlisting}
In []: x.dtype
Out[]: dtype('uint8')
In []: print x.itemsize
1
In []: z = x/4.0
In []: print z.dtype
float64
\end{lstlisting}
\end{frame}
\begin{frame}[fragile]
\frametitle{Problem 5 cont\ldots}
What if you did this?
\begin{lstlisting}
x = imread('smoothing.gif')
y2 = zeros_like(x)
y2[1:-1,1:-1] = x[:-2,1:-1]/4. +
x[2:,1:-1]/4. +
x[1:-1,2:]/4. +
x[1:-1,:-2]/4.
\end{lstlisting}
\begin{itemize}
\item Will the answer be any different from \typ{y}?
\item What will the dtype of \typ{y2} be?
\item Discuss what is going on!
\end{itemize}
\end{frame}
\begin{frame}[fragile]
\frametitle{Problem 5 cont\ldots}
Did you do the right thing to find the edges earlier in problem 4? Fix it!
Note that:
\begin{lstlisting}
In []: print x.dtype
uint8
In []: x1 = x.astype('float64')
In []: print x1.dtype
float64
In []: print x.dtype.char
d
In []: x.dtype.<TAB> # Explore!
\end{lstlisting}
\end{frame}
\begin{frame}[fragile]
\frametitle{Problem 6}
Edge detection looks much nicer with \typ{lena.png}, try it! The
gotcha is that it is a 4 component RGBA image with elements in the
range $[0.0, 1.0]$.
\begin{lstlisting}
In []: x = imread('lena.png')
In []: print x.shape
(512, 512, 4)
In []: print x.min(), x.max()
0.0 1.0
\end{lstlisting}
Repeat the edge detection with this image.
\end{frame}
\end{document}
%% \begin{frame}
%% \frametitle{Problem 4}
%% Legendre polynomials $P_n(x)$ are defined by the following recurrence relation
%% \center{$(n+1)P_{n+1}(x) - (2n+1)xP_n(x) + nP_{n-1}(x) = 0$}\\
%% with $P_0(x) = 1$, $P_1(x) = x$ and $P_2(x) = (3x^2 - 1)/2$. Compute the next three
%% Legendre polynomials and plot all 6 over the interval [-1,1].
%% \end{frame}
%% \begin{frame}[fragile]
%% \frametitle{Problem Set 5}
%% \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}
%% \frametitle{Problem Set 5.3}
%% 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}