diff options
-rw-r--r-- | day1/data/L-TSq-limited.png | bin | 0 -> 21384 bytes | |||
-rw-r--r-- | day1/data/stline_dots.png | bin | 0 -> 10599 bytes | |||
-rw-r--r-- | day1/data/stline_points.png | bin | 0 -> 10164 bytes | |||
-rw-r--r-- | day1/data/straightline.png | bin | 0 -> 14818 bytes | |||
-rw-r--r-- | day1/session2.tex | 31 | ||||
-rw-r--r-- | day1/session3.tex | 9 | ||||
-rw-r--r-- | day1/session4.tex | 256 | ||||
-rw-r--r-- | day1/session5.tex | 311 |
8 files changed, 382 insertions, 225 deletions
diff --git a/day1/data/L-TSq-limited.png b/day1/data/L-TSq-limited.png Binary files differnew file mode 100644 index 0000000..c6e280e --- /dev/null +++ b/day1/data/L-TSq-limited.png diff --git a/day1/data/stline_dots.png b/day1/data/stline_dots.png Binary files differnew file mode 100644 index 0000000..ff6ec70 --- /dev/null +++ b/day1/data/stline_dots.png diff --git a/day1/data/stline_points.png b/day1/data/stline_points.png Binary files differnew file mode 100644 index 0000000..9e3f198 --- /dev/null +++ b/day1/data/stline_points.png diff --git a/day1/data/straightline.png b/day1/data/straightline.png Binary files differnew file mode 100644 index 0000000..b963f55 --- /dev/null +++ b/day1/data/straightline.png diff --git a/day1/session2.tex b/day1/session2.tex index c387cfd..f7b974f 100644 --- a/day1/session2.tex +++ b/day1/session2.tex @@ -207,6 +207,13 @@ Out[]: [<matplotlib.lines.Line2D object at 0xa73aa8c>] \end{frame} \begin{frame}[fragile] +\begin{figure} +\includegraphics[width=2in]{data/stline_dots.png} +\includegraphics[width=2in]{data/stline_points.png} +\end{figure} +\end{frame} + +\begin{frame}[fragile] \frametitle{Additional Plotting Attributes} \begin{itemize} \item \kwrd{'o'} - Dots @@ -328,6 +335,12 @@ This gives the list \kwrd{TSq} which is the list of squares of T values. \end{frame} \begin{frame}[fragile] +\begin{figure} +\includegraphics[width=3.5in]{data/L-TSq-limited.png} +\end{figure} +\end{frame} + +\begin{frame}[fragile] \frametitle{More of \texttt{for}} \begin{itemize} \item Used to iterate over lists @@ -348,11 +361,11 @@ In []: for num in lst: \end{frame} \begin{frame}[fragile] -\frametitle{Whats unusual about the previous example??} +\frametitle{What about larger data sets??} \alert{Data is usually present in a file!} \\ Lets look at the pendulum.txt file. \begin{lstlisting} -cat data/pendulum.txt +$cat data/pendulum.txt 1.0000e-01 6.9004e-01 1.1000e-01 6.9497e-01 1.2000e-01 7.4252e-01 @@ -403,6 +416,12 @@ In []: plot(L, TSq, '.') \end{frame} \begin{frame}[fragile] +\begin{figure} +\includegraphics[width=3.5in]{data/L-Tsq.png} +\end{figure} +\end{frame} + +\begin{frame}[fragile] \frametitle{Reading files \ldots} \typ{In []: for line in open('pendulum.txt'):} \begin{itemize} @@ -456,14 +475,6 @@ Out[]: <type 'float'> \end{lstlisting} \end{frame} -\begin{frame}[fragile] -\begin{figure} -\includegraphics[width=3.5in]{data/L-Tsq.png} -\end{figure} -\vspace{-0.2in} -Coming up - \alert{Least Square Fit \ldots} -\end{frame} - \section {Summary} \begin{frame} \frametitle{Summary} diff --git a/day1/session3.tex b/day1/session3.tex index acf1649..1f4dcf5 100644 --- a/day1/session3.tex +++ b/day1/session3.tex @@ -397,6 +397,15 @@ savefig('/tmp/all_regions.png') \includegraphics[height=3in, interpolate=true]{data/all_regions} \end{frame} +\begin{frame} +\frametitle{L vs $T^2$ \ldots} +Let's go back to the L vs $T^2$ plot +\begin{itemize} +\item We first look at obtaining $T^2$ from T +\item Then, we look at plotting a Least Squares fit +\end{itemize} +\end{frame} + \begin{frame}[fragile] \frametitle{Obtaining statistics} \begin{lstlisting} diff --git a/day1/session4.tex b/day1/session4.tex index 4f1eb7d..68fe51b 100644 --- a/day1/session4.tex +++ b/day1/session4.tex @@ -74,7 +74,7 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Title page -\title[Basic Python]{Matrices, Solution of equations and Integration\\} +\title[Basic Python]{Matrices, Solution of equations} \author[FOSSEE] {FOSSEE} @@ -124,54 +124,14 @@ % \pausesections \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) - In []: allclose(Ax, b) - Out[]: True - \end{lstlisting} -\end{frame} - -\begin{frame}[fragile] -\frametitle{Solution:} -\begin{lstlisting} -In []: x -Out[]: -array([[ 1.], - [-2.], - [-2.]]) +\section{Matrices} -In []: Ax -Out[]: -matrix([[ 1.00000000e+00], - [ -2.00000000e+00], - [ 2.22044605e-16]]) -\end{lstlisting} +\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} -\section{Matrices} \subsection{Initializing} \begin{frame}[fragile] \frametitle{Matrices: Initializing} @@ -237,173 +197,51 @@ matrix([[ 0.07734807, 0.01657459, 0.32044199], \end{small} \end{frame} - -\section{Integration} - -\subsection{Quadrature} - -\begin{frame}[fragile] -\frametitle{Quadrature} -\begin{itemize} -\item We wish to find area under a curve -\item Area under $(sin(x) + x^2)$ in $(0,1)$ -\item scipy has functions to do that -\end{itemize} -\small{\typ{In []: from scipy.integrate import quad}} -\begin{itemize} -\item Inputs - function to integrate, limits -\end{itemize} -\begin{lstlisting} -In []: x = 0 -In []: quad(sin(x)+x**2, 0, 1) -\end{lstlisting} -\alert{\typ{error:}} -\typ{First argument must be a callable function.} -\end{frame} - -\begin{frame}[fragile] -\frametitle{Functions - Definition} -\begin{lstlisting} -In []: def f(x): - return sin(x)+x**2 -In []: quad(f, 0, 1) -\end{lstlisting} -\begin{itemize} -\item \typ{def} -\item arguments -\item \typ{return} -\end{itemize} -\end{frame} - -\begin{frame}[fragile] -\frametitle{Functions - Calling them} -\begin{lstlisting} -In [15]: f() ---------------------------------------- -\end{lstlisting} -\alert{\typ{TypeError:}}\typ{f() takes exactly 1 argument} -\typ{(0 given)} -\begin{lstlisting} -In []: f(0) -Out[]: 0.0 -In []: f(1) -Out[]: 1.8414709848078965 -\end{lstlisting} -\end{frame} - - -\begin{frame}[fragile] -\frametitle{Functions - Default Arguments} -\begin{lstlisting} -In []: def f(x=1): - return sin(x)+x**2 -In []: f(10) -Out[]: 99.455978889110625 -In []: f(1) -Out[]: 1.8414709848078965 -In []: f() -Out[]: 1.8414709848078965 -\end{lstlisting} -\end{frame} - -\begin{frame}[fragile] -\frametitle{Functions - Keyword Arguments} -\begin{lstlisting} -In []: def f(x=1, y=pi): - return sin(y)+x**2 -In []: f() -Out[]: 1.0000000000000002 -In []: f(2) -Out[]: 4.0 -In []: f(y=2) -Out[]: 1.9092974268256817 -In []: f(y=pi/2,x=0) -Out[]: 1.0 -\end{lstlisting} -\end{frame} - -\begin{frame}[fragile] - \frametitle{More on functions} - \begin{itemize} - \item Scope of variables in the function is local - \item Mutable items are \alert{passed by reference} - \item First line after definition may be a documentation string - (\alert{recommended!}) - \item Function definition and execution defines a name bound to the - function - \item You \emph{can} assign a variable to a function! - \end{itemize} -\end{frame} - -\begin{frame}[fragile] -\frametitle{Quadrature \ldots} -\begin{lstlisting} -In []: quad(f, 0, 1) -\end{lstlisting} -Returns the integral and an estimate of the absolute error in the result. -\begin{itemize} -\item Use \typ{dblquad} for Double integrals -\item Use \typ{tplquad} for Triple integrals -\end{itemize} -\end{frame} - -\subsection{ODEs} +\section{Solving linear equations} \begin{frame}[fragile] -\frametitle{ODE Integration} -We shall use the simple ODE of a simple pendulum. -\begin{equation*} -\ddot{\theta} = -\frac{g}{L}sin(\theta) -\end{equation*} -\begin{itemize} -\item This equation can be written as a system of two first order ODEs -\end{itemize} -\begin{align} -\dot{\theta} &= \omega \\ -\dot{\omega} &= -\frac{g}{L}sin(\theta) \\ - \text{At}\ t &= 0 : \nonumber \\ - \theta = \theta_0\quad & \&\quad \omega = 0 \nonumber -\end{align} +\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 ODEs using SciPy} -\begin{itemize} -\item We use the \typ{odeint} function from scipy to do the integration -\item Define a function as below -\end{itemize} -\begin{lstlisting} -In []: def pend_int(unknown, t, p): - .... theta, omega = unknown - .... g, L = p - .... f=[omega, -(g/L)*sin(theta)] - .... return f - .... -\end{lstlisting} +\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) + In []: allclose(Ax, b) + Out[]: True + \end{lstlisting} \end{frame} \begin{frame}[fragile] -\frametitle{Solving ODEs using SciPy \ldots} -\begin{itemize} -\item \typ{t} is the time variable \\ -\item \typ{p} has the constants \\ -\item \typ{initial} has the initial values -\end{itemize} +\frametitle{Solution:} \begin{lstlisting} -In []: t = linspace(0, 10, 101) -In []: p=(-9.81, 0.2) -In []: initial = [10*2*pi/360, 0] -\end{lstlisting} -\end{frame} - -\begin{frame}[fragile] -\frametitle{Solving ODEs using SciPy \ldots} +In []: x +Out[]: +array([[ 1.], + [-2.], + [-2.]]) -\small{\typ{In []: from scipy.integrate import odeint}} -\begin{lstlisting} -In []: pend_sol = odeint(pend_int, - initial,t, - args=(p,)) +In []: Ax +Out[]: +matrix([[ 1.00000000e+00], + [ -2.00000000e+00], + [ 2.22044605e-16]]) \end{lstlisting} \end{frame} @@ -412,18 +250,6 @@ In []: pend_sol = odeint(pend_int, \begin{itemize} \item \item - \item Functions - \begin{itemize} - \item Definition - \item Calling - \item Default Arguments - \item Keyword Arguments - \end{itemize} - \item Integration - \begin{itemize} - \item Quadrature - \item ODEs - \end{itemize} \end{itemize} \end{frame} diff --git a/day1/session5.tex b/day1/session5.tex new file mode 100644 index 0000000..8ed3d1f --- /dev/null +++ b/day1/session5.tex @@ -0,0 +1,311 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%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<presentation> +{ + \usetheme{Warsaw} + \useoutertheme{split} + \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[Basic Python]{Interpolation, Differentiation and Integration} + +\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}<beamer> + \frametitle{Outline} + \tableofcontents[currentsection,currentsubsection] + \end{frame} +} + +%%\AtBeginSection[] +%%{ + %%\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} + \frametitle{Outline} + \tableofcontents +% \pausesections +\end{frame} + +\section{Integration} + +\subsection{Quadrature} + +\begin{frame}[fragile] +\frametitle{Quadrature} +\begin{itemize} +\item We wish to find area under a curve +\item Area under $(sin(x) + x^2)$ in $(0,1)$ +\item scipy has functions to do that +\end{itemize} +\small{\typ{In []: from scipy.integrate import quad}} +\begin{itemize} +\item Inputs - function to integrate, limits +\end{itemize} +\begin{lstlisting} +In []: x = 0 +In []: quad(sin(x)+x**2, 0, 1) +\end{lstlisting} +\alert{\typ{error:}} +\typ{First argument must be a callable function.} +\end{frame} + +\begin{frame}[fragile] +\frametitle{Functions - Definition} +\begin{lstlisting} +In []: def f(x): + return sin(x)+x**2 +In []: quad(f, 0, 1) +\end{lstlisting} +\begin{itemize} +\item \typ{def} +\item arguments +\item \typ{return} +\end{itemize} +\end{frame} + +\begin{frame}[fragile] +\frametitle{Functions - Calling them} +\begin{lstlisting} +In [15]: f() +--------------------------------------- +\end{lstlisting} +\alert{\typ{TypeError:}}\typ{f() takes exactly 1 argument} +\typ{(0 given)} +\begin{lstlisting} +In []: f(0) +Out[]: 0.0 +In []: f(1) +Out[]: 1.8414709848078965 +\end{lstlisting} +\end{frame} + + +\begin{frame}[fragile] +\frametitle{Functions - Default Arguments} +\begin{lstlisting} +In []: def f(x=1): + return sin(x)+x**2 +In []: f(10) +Out[]: 99.455978889110625 +In []: f(1) +Out[]: 1.8414709848078965 +In []: f() +Out[]: 1.8414709848078965 +\end{lstlisting} +\end{frame} + +\begin{frame}[fragile] +\frametitle{Functions - Keyword Arguments} +\begin{lstlisting} +In []: def f(x=1, y=pi): + return sin(y)+x**2 +In []: f() +Out[]: 1.0000000000000002 +In []: f(2) +Out[]: 4.0 +In []: f(y=2) +Out[]: 1.9092974268256817 +In []: f(y=pi/2,x=0) +Out[]: 1.0 +\end{lstlisting} +\end{frame} + +\begin{frame}[fragile] + \frametitle{More on functions} + \begin{itemize} + \item Scope of variables in the function is local + \item Mutable items are \alert{passed by reference} + \item First line after definition may be a documentation string + (\alert{recommended!}) + \item Function definition and execution defines a name bound to the + function + \item You \emph{can} assign a variable to a function! + \end{itemize} +\end{frame} + +\begin{frame}[fragile] +\frametitle{Quadrature \ldots} +\begin{lstlisting} +In []: quad(f, 0, 1) +\end{lstlisting} +Returns the integral and an estimate of the absolute error in the result. +\begin{itemize} +\item Use \typ{dblquad} for Double integrals +\item Use \typ{tplquad} for Triple integrals +\end{itemize} +\end{frame} + +\subsection{ODEs} + +\begin{frame}[fragile] +\frametitle{ODE Integration} +We shall use the simple ODE of a simple pendulum. +\begin{equation*} +\ddot{\theta} = -\frac{g}{L}sin(\theta) +\end{equation*} +\begin{itemize} +\item This equation can be written as a system of two first order ODEs +\end{itemize} +\begin{align} +\dot{\theta} &= \omega \\ +\dot{\omega} &= -\frac{g}{L}sin(\theta) \\ + \text{At}\ t &= 0 : \nonumber \\ + \theta = \theta_0\quad & \&\quad \omega = 0 \nonumber +\end{align} +\end{frame} + +\begin{frame}[fragile] +\frametitle{Solving ODEs using SciPy} +\begin{itemize} +\item We use the \typ{odeint} function from scipy to do the integration +\item Define a function as below +\end{itemize} +\begin{lstlisting} +In []: def pend_int(unknown, t, p): + .... theta, omega = unknown + .... g, L = p + .... f=[omega, -(g/L)*sin(theta)] + .... return f + .... +\end{lstlisting} +\end{frame} + +\begin{frame}[fragile] +\frametitle{Solving ODEs using SciPy \ldots} +\begin{itemize} +\item \typ{t} is the time variable \\ +\item \typ{p} has the constants \\ +\item \typ{initial} has the initial values +\end{itemize} +\begin{lstlisting} +In []: t = linspace(0, 10, 101) +In []: p=(-9.81, 0.2) +In []: initial = [10*2*pi/360, 0] +\end{lstlisting} +\end{frame} + +\begin{frame}[fragile] +\frametitle{Solving ODEs using SciPy \ldots} + +\small{\typ{In []: from scipy.integrate import odeint}} +\begin{lstlisting} +In []: pend_sol = odeint(pend_int, + initial,t, + args=(p,)) +\end{lstlisting} +\end{frame} + +\begin{frame} + \frametitle{Things we have learned} + \begin{itemize} + \item Functions + \begin{itemize} + \item Definition + \item Calling + \item Default Arguments + \item Keyword Arguments + \end{itemize} + \item Quadrature + \end{itemize} +\end{frame} + +\end{document} + |