563 lines (407 with data), 8.4 kB
#LyX 1.4.3 created this file. For more info see http://www.lyx.org/
\lyxformat 245
\begin_document
\begin_header
\textclass article
\begin_preamble
\usepackage{color}
% A few colors to replace the defaults for certain link types
\definecolor{orange}{cmyk}{0,0.4,0.8,0.2}
\definecolor{darkorange}{rgb}{.71,0.21,0.01}
\definecolor{darkred}{rgb}{.52,0.08,0.01}
\definecolor{darkgreen}{rgb}{.12,.54,.11}
% Use and configure listings package for nicely formatted code
\usepackage{listings}
\lstset{
language=Python,
basicstyle=\small\ttfamily,
commentstyle=\ttfamily\color{blue},
stringstyle=\ttfamily\color{darkorange},
showstringspaces=false,
breaklines=true,
postbreak = \space\dots
}
\usepackage[%pdftex, % needed for pdflatex
breaklinks=true, % so long urls are correctly broken across lines
colorlinks=true,
urlcolor=blue,
linkcolor=darkred,
citecolor=darkgreen,
]{hyperref}
\usepackage{html}
% This helps prevent overly long lines that stretch beyond the margins
\sloppy
% Define a \codelist command which either uses listings for latex, or
% plain verbatim for html (since latex2html doesn't understand the
% listings package).
\usepackage{verbatim}
\newcommand{\codelist}[1] {
\latex{\lstinputlisting{#1}}
\html{\verbatiminput{#1}}
}
\end_preamble
\language english
\inputencoding auto
\fontscheme default
\graphics default
\paperfontsize default
\spacing single
\papersize default
\use_geometry true
\use_amsmath 1
\cite_engine basic
\use_bibtopic false
\paperorientation portrait
\leftmargin 1in
\topmargin 1in
\rightmargin 1in
\bottommargin 1in
\secnumdepth 3
\tocdepth 3
\paragraph_separation skip
\defskip medskip
\quotes_language english
\papercolumns 1
\papersides 1
\paperpagestyle default
\tracking_changes false
\output_changes false
\end_header
\begin_body
\begin_layout Title
Python Workshop Problems
\end_layout
\begin_layout Standard
\begin_inset LatexCommand \tableofcontents{}
\end_inset
\end_layout
\begin_layout Section
Quicksort
\end_layout
\begin_layout Standard
\series bold
Illustrates
\series default
: lists, recursion.
\end_layout
\begin_layout Standard
\series bold
Task
\series default
: implement the quicksort algorithm.
\end_layout
\begin_layout Subsubsection*
Code skeleton
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Standard
\backslash
codelist{skel/qsort_skel.py}
\end_layout
\end_inset
\end_layout
\begin_layout Section
Wallis'
\begin_inset Formula $\pi$
\end_inset
\end_layout
\begin_layout Standard
\series bold
Illustrates
\series default
: arbitrary size integers, simple function definitions.
\end_layout
\begin_layout Standard
\series bold
Task
\series default
: define a simple function that implements the (slowly converging) Wallis
infinite product approximation to
\begin_inset Formula $\pi$
\end_inset
:
\begin_inset Formula \[
\pi(n)=2\prod_{i=1}^{n}\frac{4i^{2}}{4i^{2}-1}\]
\end_inset
\end_layout
\begin_layout Subsubsection*
Code skeleton
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Standard
\backslash
codelist{skel/wallis_pi_skel.py}
\end_layout
\end_inset
\end_layout
\begin_layout Section
Trapezoid rule
\end_layout
\begin_layout Standard
\series bold
Illustrates
\series default
: basic array slicing, functions as first class objects.
\end_layout
\begin_layout Standard
\series bold
Task
\series default
: define a trapezoid rule integrator:
\begin_inset Formula \[
I=\int_{a}^{b}f(x)dx\approx\frac{1}{2}\sum_{i=1}^{N}(x_{i}-x_{i-1})(y_{i}+y_{i-1})\]
\end_inset
where
\begin_inset Formula $y_{i}=f(x_{i})$
\end_inset
,
\begin_inset Formula $x_{o}=a$
\end_inset
,
\begin_inset Formula $x_{N}=b$
\end_inset
.
\end_layout
\begin_layout Standard
Consider both the case where the input is given as a pair of arrays
\begin_inset Formula $(x,y)$
\end_inset
and where the input is
\begin_inset Formula $(f,a,b,N)$
\end_inset
.
Write two separate functions.
\end_layout
\begin_layout Subsubsection*
Code skeleton
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Standard
\backslash
codelist{skel/trapezoid_skel.py}
\end_layout
\end_inset
\end_layout
\begin_layout Section
Numerical integration and root finding
\end_layout
\begin_layout Standard
\series bold
Illustrates:
\series default
functions as first class objects, use of the scipy libraries.
\end_layout
\begin_layout Standard
\series bold
Task:
\series default
Find
\begin_inset Formula $t$
\end_inset
such that
\begin_inset Formula \[
\int_{0}^{t}f(s)\, ds=u\]
\end_inset
for a known, monotonically increasing
\begin_inset Formula $f(s)$
\end_inset
and a fixed
\begin_inset Formula $u$
\end_inset
.
The example below uses
\begin_inset Formula $f(s)=s\cdot\sin^{2}(s)$
\end_inset
and
\begin_inset Formula $u=1/4.$
\end_inset
\end_layout
\begin_layout Subsubsection*
Code skeleton
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Standard
\backslash
codelist{skel/quad_newton_skel.py}
\end_layout
\end_inset
\end_layout
\begin_layout Section
Wrapping Fortran codes
\end_layout
\begin_layout Standard
\series bold
Illustrates
\series default
: wrapping existing Fortran libraries, improving the call interface of Fortran
codes.
\end_layout
\begin_layout Standard
\series bold
Task
\series default
: write a Fortran subroutine
\family typewriter
cumsum(x,y,n)
\family default
that computes the cumulative sums of entries of
\begin_inset Formula $x$
\end_inset
and stores them in
\begin_inset Formula $y$
\end_inset
:
\begin_inset Formula \[
y_{j}=\sum_{i=1}^{j}x_{i},\; j=1,\ldots,n.\]
\end_inset
\end_layout
\begin_layout Subsubsection*
Code skeleton
\end_layout
\begin_layout Standard
The following skeleton contains a wrapper of another Fortran routine, a
simple Fibonacci number calculation, to illustrate the f2py syntax.
A Makefile and a test file are included as well.
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Standard
\backslash
codelist{skel/fortran_wrap/fib3.f}
\end_layout
\end_inset
\end_layout
\begin_layout Section
Univariate polynomials, root finding
\end_layout
\begin_layout Standard
\series bold
Illustrates
\series default
: poly1d objects, convolutions, plotting.
\end_layout
\begin_layout Standard
\series bold
Task
\series default
:
\end_layout
\begin_layout Subsubsection*
Code skeletonq
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Standard
\backslash
codelist{skel/polyroots1d_skel.py}
\end_layout
\end_inset
\end_layout
\begin_layout Section
Image processing and the FFT
\end_layout
\begin_layout Standard
\series bold
Illustrates
\series default
: 2-d image denoising, use of the scipy FFT library, array manipulations,
image plotting.
\end_layout
\begin_layout Standard
\series bold
Task
\series default
:
\end_layout
\begin_layout Subsubsection*
Code skeleton
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Standard
\backslash
codelist{skel/fft_imdenoise_skel.py}
\end_layout
\end_inset
\end_layout
\begin_layout Section
Bessel functions
\end_layout
\begin_layout Standard
\series bold
Illustrates
\series default
: Special functions library, array manipulations to check recursion relation.
\end_layout
\begin_layout Standard
\series bold
Task
\series default
:
\end_layout
\begin_layout Subsection*
Code skeleton
\end_layout
\begin_layout Standard
MISSING
\end_layout
\begin_layout Section
Monte Carlo integration
\end_layout
\begin_layout Standard
\series bold
Illustrates
\series default
: random number generation.
\end_layout
\begin_layout Standard
\series bold
Task
\series default
: compute an approximation to
\begin_inset Formula $\pi$
\end_inset
via Monte Carlo integration.
\end_layout
\begin_layout Subsection*
Code skeleton
\end_layout
\begin_layout Standard
MISSING
\end_layout
\begin_layout Section
Speed optimizations using
\family typewriter
weave
\end_layout
\begin_layout Standard
\series bold
Illustrates
\series default
: weave.blitz, weave.inline.
\end_layout
\begin_layout Standard
\series bold
Task
\series default
: ...
\end_layout
\begin_layout Subsection*
Code skeleton
\end_layout
\begin_layout Standard
MISSING
\end_layout
\end_body
\end_document