diff -r c7f85ba59af3 -r 7ae0f756f050 day1/session3.tex --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/day1/session3.tex Wed Oct 14 20:10:26 2009 +0530 @@ -0,0 +1,280 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Tutorial slides on Python. +% +% Author: Prabhu Ramachandran +% 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 +{ + \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} +\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[]{Arrays \& Least Squares Fit} + +\author[FOSSEE] {FOSSEE} + +\institute[IIT Bombay] {Department of Aerospace Engineering\\IIT Bombay} +\date[] {31, 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} + \frametitle{Outline} + \tableofcontents[currentsection,currentsubsection] + \end{frame} +} + +\AtBeginSection[] +{ + \begin{frame} + \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} + +\begin{frame} +\frametitle{Least Squares Fit} +In this session - +\begin{itemize} +\item We shall plot a least squares fit curve for time-period(T) squared vs. length(L) plot of a Simple Pendulum. +\item Given a file containing L and T values +\end{itemize} +\end{frame} + +\begin{frame}[fragile] +\frametitle{Least Squares Fit \ldots} +Machinery Required - +\begin{itemize} +\item Reading files and parsing data +\item Plotting points, lines +\item Calculating the Coefficients of the Least Squares Fit curve +\begin{itemize} + \item Arrays +\end{itemize} +\end{itemize} +\end{frame} + +\begin{frame}[fragile] +\frametitle{Reading pendulum.txt} +\begin{itemize} + \item The file has two columns + \item Column1 - L; Column2 - T +\end{itemize} +\begin{lstlisting} +In []: L = [] +In []: T = [] +In []: for line in open('pendulum.txt'): + .... len, t = line.split() + .... L.append(float(len)) + .... T.append(float(t)) +\end{lstlisting} +We now have two lists L and T +\end{frame} + +\begin{frame}[fragile] +\frametitle{Calculating $T^2$} +\begin{itemize} +\item Each element of the list T must be squared +\item Iterating over each element of the list works +\item But very slow \ldots +\item Instead, we use arrays +\end{itemize} +\begin{lstlisting} +In []: array(L) +In []: T = array(T) +In []: Tsq = T*T +In []: plot(L, Tsq, 'o') +\end{lstlisting} +\end{frame} + +\begin{frame}[fragile] +\frametitle{Arrays} +\begin{itemize} +\item T is now a \typ{numpy array} +\item \typ{numpy} arrays are very efficient and powerful +\item Very easy to perform element-wise operations +\item \typ{+, -, *, /, \%} +\item More about arrays later +\end{itemize} +\end{frame} + +\begin{frame}[fragile] +\frametitle{Least Square Polynomial} +\begin{enumerate} +\item $T^2 = \frac{4\pi^2}{g}L$ +\item $T^2$ and $L$ have a linear relationship +\item We find an approximate solution to $Ax = y$, where A is the Van der Monde matrix to get coefficients of the least squares fit line. +\end{enumerate} +\end{frame} + +\begin{frame}[fragile] +\frametitle{Van der Monde Matrix} +Van der Monde matrix of order M +\begin{equation*} + \begin{bmatrix} + l_1^{M-1} & \ldots & l_1 & 1 \\ + l_2^{M-1} & \ldots &l_2 & 1 \\ + \vdots & \ldots & \vdots & \vdots\\ + l_N^{M-1} & \ldots & l_N & 1 \\ + \end{bmatrix} +\end{equation*} +\begin{lstlisting} +In []: A=vander(L,2) +\end{lstlisting} +\end{frame} + +\begin{frame}[fragile] +\frametitle{Least Square Fit Line} +\begin{itemize} +\item We use the \typ{lstsq} function of pylab +\item It returns the +\begin{enumerate} +\item Least squares solution +\item Sum of residues +\item Rank of matrix A +\item Singular values of A +\end{enumerate} +\end{itemize} +\begin{lstlisting} +coeffs, res, rank, sing = lstsq(A,Tsq) +\end{lstlisting} +\end{frame} + +\begin{frame}[fragile] +\frametitle{Least Square Fit Line \ldots} +\begin{itemize} +\item Use the poly1d function of pylab, to create a function for the line equation using the coefficients obtained +\begin{lstlisting} +p=poly1d(coeffs) +\end{lstlisting} +\item Get new $T^2$ values using the function \typ{p} obtained +\begin{lstlisting} +Tline = p(L) +\end{lstlisting} +\item Now plot Tline vs. L, to get the Least squares fit line. +\begin{lstlisting} +plot(L, Tline) +\end{lstlisting} +\end{itemize} +\end{frame} + +\end{document} + +Least squares: Smooth curve fit. +Array Operations: Mean, average (etc region wise like district wise and state wise from SSLC.txt) +Subject wise average. Introduce idea of dictionary. + +Session 3 + +import scipy +from scipy import linalg. + +choose some meaningful plot. ?? +Newton's law of cooling. +u, v, f - optics +hooke's law +Least fit curves. + + +Choose a named problem. +ODE - first order. Whatever. + + +arrays, etc etc. +sum, average, mean. whatever. statistical +sslc data +numpy load text??