|
Symbolic computing packages, such as Maple, are wonderful tools for exploration and experiment, but are typically too slow for large-scale applications. Numerical computing tools, such as Matlab, can be highly efficient (if used properly) but lack the facility for symbolic manipulation. However, a new Matlab/Octave system called Chebfun is trying to change that. A student who undertakes this project would investigate the mathematics that underpins the system, while developing new programmes and examples to solve problems with chebfuns. A particularly interesting example might be the (numerical) solution of differential equations by high-order finite element methods. You should consider this project if you like numerical analysis and programming. |
|
|
Through Facebook, twitter, or even just your phone's contact lists one
can discover large graphs representing social networks. The
representation of these graphs leads to some nice problems in
computer science, and their analysis gives rise to some very
interesting mathematical questions.
A project on this topic would mainly involve
A good starting point is the recently published Graph Algorithms in the Language of Linear Algebra, by Kepner and Gilbert (Eds). (On-campus access to full text available through SIAM ebooks).
|
|
Given a function, it is not hard to construct a numerical scheme to estimate its derivatives at certain points. However, it is easy to show that such schemes are highly susceptible to numerical error. Automatic differentiation is an approach based on repeated use of the chain rule and which can be applied to arbitrary functions and should be accurate to machine precision. It can be particularly useful in problems where one needs to find derivatives of vector-valued functions (Jacobians...). This project will begin with reading a recent article: Introduction to Automatic Differentiation and MATLAB Object-Oriented Programming, Richard D. Neidinger. SIAM Rev. 52, pp. 545-563. The ideas and tools will be developed and applied to (I hope!) some interesting but non-trivial problems. |
|
|
As described recently (Aug 24th) on Mike Croucher's (@walkingrandomly) blog "Walking Randomly, modern CPUs can operator directly on vectors - usually 4 64-bit floats, or 8 32-bit floats. Some compilers do this automatically for some CPUs, whereas others need a little help .In this project we'd study some important mathematical algorithms and see how they could be vectorised and thus optimised. We might also study programming with GPUs. |
| Why not come up with your own idea? A good place to start would be the Education articles in SIAM Review. Or read some mathematical blogs. The most famous is Terry' Tao's. "Cleve's Corner" as a regular blog by Cleve Moler on topics related to numerical analysis and Matlab. David Gleich's blog features some neat ideas and demos. Or you could go to the library and have a look at such titles as
|