--- a/day2/session2.tex Sun Oct 04 01:26:46 2009 +0530
+++ b/day2/session2.tex Tue Oct 06 14:41:48 2009 +0530
@@ -113,14 +113,76 @@
% DOCUMENT STARTS
\begin{document}
+\begin{frame}
+ \maketitle
+\end{frame}
+
\begin{frame}[fragile]
\frametitle{Broadcasting}
+ \begin{itemize}
+ \item Used so that functions can take inputs that are not of the same shape.
+ \item 2 rules -
+ \begin{enumerate}
+ \item 1 (repeatedly) pre-pended to shapes of smaller arrays
+ \item Size 1 in a dimension -> Largest size in that dimension
+ \end{enumerate}
+ \end{itemize}
+ \begin{columns}
+ \column{0.65\textwidth}
+ \hspace*{-1.5in}
+ \begin{lstlisting}
+ >>> x = np.arange(4)
+ >>> x+3
+ array([3, 4, 5, 6])
+ \end{lstlisting}
+ \column{0.35\textwidth}
+ \includegraphics[height=0.7in, interpolate=true]{data/broadcast_scalar}
+ \end{columns}
+\end{frame}
+\begin{frame}[fragile]
+ \frametitle{Broadcasting in 3D}
+ \begin{lstlisting}
+ >>> x = np.zeros((3, 5))
+ >>> y = np.zeros(8)
+ >>> (x[..., None] + y).shape
+ (3, 5, 8)
+ \end{lstlisting}
+ \begin{figure}
+ \begin{center}
+ \includegraphics[height=1.5in, interpolate=true]{data/array_3x5x8}
+ \end{center}
+ \end{figure}
\end{frame}
\begin{frame}[fragile]
\frametitle{Copies \& Views}
+ \begin{lstlisting}
+ >>> a = array([[1,2,3], [4,5,6],
+ [7,8,9]])
+ >>> a[0,1:3]
+ array([2, 3])
+ >>> a[0::2,0::2]
+ array([[1, 3],
+ [7, 9]])
+ \end{lstlisting}
+ \begin{itemize}
+ \item Slicing and Striding just reference the same memory
+ \item They produce views of the data, not copies
+ \end{itemize}
+\end{frame}
+\begin{frame}[fragile]
+ \frametitle{Copies contd \ldots}
+ \begin{lstlisting}
+ >>> a[np.array([0,1,2])]
+ array([[1, 2, 3],
+ [4, 5, 6],
+ [7, 8, 9]])
+ \end{lstlisting}
+ \begin{itemize}
+ \item Index arrays or Boolean arrays produce copies
+ \end{itemize}
\end{frame}
\begin{frame}
@@ -140,6 +202,7 @@
\item \typ{outer}
\item \typ{reduceat}
\end{itemize}
+\inctime{5}
\end{frame}
\begin{frame}
@@ -149,8 +212,6 @@
\item Open source scientific libraries for Python
\item Based on NumPy
\end{itemize}
-
- \inctime{25}
\end{frame}
\begin{frame}
@@ -174,25 +235,117 @@
\begin{frame}[fragile]
\frametitle{Linear Algebra}
+ \typ{>>> from scipy import linalg}
+ \begin{itemize}
+ \item \typ{linalg.det, linalg.norm}
+ \item \typ{linalg.eig, linalg.lu}
+ \item \typ{linalg.expm, linalg.logm}
+ \item \typ{linalg.sinm, linalg.sinhm}
+ \end{itemize}
+\end{frame}
+\begin{frame}[fragile]
+ \frametitle{Linear Algebra \ldots}
+ \begin{align*}
+ 3x + 2y - z & = 1 \\
+ 2x - 2y + 4z & = -2 \\
+ -x + \frac{1}{2}y -z & = 0
+ \end{align*}
+ \begin{lstlisting}
+ >>> linalg.solve(A,B)
+ \end{lstlisting}
\end{frame}
+
\begin{frame}[fragile]
- \frametitle{ODEs}
+ \begin{itemize}
+ \item Integrating Functions given function object
+ \item Integrating Functions given fixed samples
+ \item Numerical integrators of ODE systems
+ \end{itemize}
+ \frametitle{Integrate}
+ Calculate $\int^1_0sin(x) + x^2$
+ \begin{lstlisting}
+ >>> def f(x):
+ return np.sin(x)+x**2
+ >>> integrate.quad(f, 0, 1)
+ \end{lstlisting}
+\end{frame}
+\begin{frame}[fragile]
+ \frametitle{Integrate \ldots}
+ Numerically solve ODEs\\
+ \begin{align*}
+ \frac{dx}{dt}&=-e^{(-t)}x^2(t)\\
+ x(0)&=2
+ \end{align*}
+ \begin{lstlisting}
+ def dx_dt(x,t):
+ return -np.exp(-t)*x**2
+
+ x=integrate.odeint(dx_dt, 2, t)
+ plt.plot(x,t)
+ \end{lstlisting}
\end{frame}
+
\begin{frame}[fragile]
\frametitle{Interpolation}
+ \begin{itemize}
+ \item \typ{interpolate.interp1d, ...}
+ \item \typ{interpolate.splrep, splev}
+ \end{itemize}
+ Cubic Spline of $sin(x)$
+ \begin{lstlisting}
+ x = np.arange(0,2*np.pi,np.pi/8)
+ y = np.sin(x)
+ t = interpolate.splrep(x,y,s=0)
+ X = np.arange(0,2*np.pi,np.pi/50)
+ Y = interpolate.splev(X,t,der=0)
+ plt.plot(x,y,'o',x,y,X,Y)
+ plt.show()
+ \end{lstlisting}
\end{frame}
\begin{frame}[fragile]
\frametitle{Signal \& Image Processing}
+ \begin{itemize}
+ \item Convolution
+ \item B-splines
+ \item Filtering
+ \item Filter design
+ \item IIR filter design
+ \item Linear Systems
+ \item LTI Reresentations
+ \item Waveforms
+ \item Window functions
+ \item Wavelets
+ \end{itemize}
+\end{frame}
+
+\begin{frame}[fragile]
+ \frametitle{Signal \& Image Processing}
+ Applying a simple median filter
+ \begin{lstlisting}
+ from scipy import signal, ndimage
+ from scipy import lena
+ A=lena().astype('float32')
+ B=signal.medfilt2d(A)
+ imshow(B)
+ \end{lstlisting}
+ Zooming an array - uses spline interpolation
+ \begin{lstlisting}
+ b=ndimage.zoom(A,0.5)
+ imshow(b)
+ \end{lstlisting}
\end{frame}
\begin{frame}[fragile]
\frametitle{Problems}
-
+ The Van der Pol oscillator is a type of nonconservative oscillator with nonlinear damping. It evolves in time according to the second order differential equation:
+ \begin{equation*}
+ \frac{d^2x}{dt^2}+\mu(x^2-1)\frac{dx}{dt}+x= 0
+ \end{equation*}
\end{frame}
@@ -205,20 +358,3 @@
- Monte-carlo integration.
-\subsection{SciPy}
-
-\begin{frame}
- \frametitle{Using \texttt{SciPy}}
- \begin{itemize}
- \item SciPy is Open Source software for mathematics, science, and
- engineering
- \item \typ{import scipy}
- \item Built on NumPy
- \item Provides modules for statistics, optimization, integration,
- linear algebra, Fourier transforms, signal and image processing,
- genetic algorithms, ODE solvers, special functions, and more
- \item Used widely by scientists world over
- \item Details are beyond the scope of this tutorial
- \end{itemize}
-\end{frame}
-