Monday 29 December 2008

Numerical Methods on Multiple Machines

Linear algebra routines can be parallelized and run on a grid using the theory of parallel algorithms.
http://www.cs.utexas.edu/users/plapack/papers/ipps98/ipps98.html

This is Cannons algorithm for matrix multiplication.
http://orca.st.usm.edu/~seyfarth/sc730/cannon.html

MonteCarlo computation is also a good candidate for parallel processing.

The following Java programs (for computational physics) are not parallelised but are interesting nonetheless.

http://www.physics.unlv.edu/~pang/cp2_j.html

Wednesday 24 December 2008

Programming Stochastic Processes - including HMMs

An excellent course on stochastic processes from Technical University of Denmark is here.

Lecture 12 explains Hidden Markov Models.

A lot of work is done to build the foundations of DTMC and CTMC (discrete- and continuous- time Markov chains).

Another great book on stochastic processes with lots of example applications (e.g. from physics and electrical engineering) is by Emmanuel Parzen at Texas A&M University.

A particularly interesting anecdote from the book is how Einstein's equation involving the Wiener process was used to deduce the Avogadro number from Brownian motion experiments.  The Avogadro number is the number of particles (atoms or molecules) in on mole of a substance.

Knuth Volume 2 (Seminumerical Algorithms) describes the basic stochastic simulation techniques.

Vol2 also contains an unusually deep analysis of Euclid's algorithm to compute gcd(one of the oldest known algorithms) and prime factorisation.

Tuesday 23 December 2008

SAGE and Cython - Mathematics in Python

SAGE is an open source mathematics system with a Python-based interface (95% of the code is Python).

http://www.sagemath.org/download-source.html


You will see in the source code to SAGE that there are .pxd files, used to declare functions and classes in a C-extension module. This is a Cython convention. Cython makes it easy to write C-extensions for Python.