Clearly define a physical problem you want to solve. Don't choose anything too ambitious or challenging. Write your own numerical program to solve it. While doing this, discuss with others, including myself, the best method to use and the smartest way to implement it. You are encouraged to do your projects in groups of 2. Once you get numerical results from your program, test them to convince yourselves and me that your program is working. For example, try some limiting cases in which you know what should happen. Then run your program for several cases, and analyze your output systematically. While writing the program is often perceived as the hardest part, it is actually the analysis of the results which make numerical projects worthwhile. Therefore, you want to spend considerable time on thinking of everything you can do and test with your program. The report does not have to be long (more than 10 pages), but it should include (i) a description of the problem you are trying to solve, (ii) a description of the method you are using (attach program), (iii) tests of your code (e.g. limiting cases) to convince everybody that it is working properly, (iv) presentation and analysis of results.
Time Schedule for the Projects:
Monday, April 14, 2003: Start projects, groups of 2 are ok.
week of April 28 - May 2, 2003: Presentation of a few selected projects, especially by those who have not given a talk yet.
Monday, May 12, 2003: Due date of final version.
(You are encouraged to propose a good project related to your research. For inspiration, you may also turn to this website, or pick one of the projects listed below.)
1. Diagonalization of Random Matrices: Determine the density of states for a one-dimensional chain with random hopping. First, calculate numerically the eigenvalues of the corresponding random matrix, assuming a uniform distribution of the coupling constant about a mean value t=1. Then construct the density of states from these eigenvalues, replacing the delta-function in the definition of the density of states by a Lorentzian of small width.
2. Percolation: Write a program to determine the percolation threshold on the two-dimensional square lattice. Help and instructions for this project can be found in Chapter 13 of Gould and Tobochnik.
3. Wolff Algorithm: Implement the Wolff algorithm to accelerate the Monte Carlo simulation of the 2D Ising model close to the critical point.
4. Other Monte Carlo Methods: T. Pang's problems 9.8, 9.9, 9.10.
5. Exact Diagonalization: Write a Lanczos program to obtain eigenvalues and eigenvectors for the spin-1/2 antiferromagnetic Heisenberg chain. Implement the symmetry of translational invariance, i.e. cast the Hamiltonian matrix in a block diagonal form with respect to the wave vector "k". Obtain the lowest energy eigenvalue in each block. This will give you the dispersion function, "w(k)", for this system.
6. Traveling Salesperson: Write a program to find the optimum route through a given arrangement of cities. Then generalize the program to perform other practical tasks. For example, find the best proctoring schedule for a given list of teaching assistants, avoiding scheduling overlaps ... . Look at Chapter 17 of Gould and Tobochnik.
7. Integral Equations: Many problems in Quantum Mechanics or in Classical Transport theory can be cast in the form of integral equations, like e.g. a diffusion equation. Often, these equations can only be solved numerically. Pick a non-trivial integral equation of interest to you, and solve it on the computer. Help can be found in Numerical Recipes. There is also a small chapter in Arfken.
8. Cellular Automata: For example, simulate traffic flow, based on simple rules in a time series. Cars enter from the left with different speeds, let's say on two lanes. When a faster one approaches a slower one it changes lanes if possible. What would be a critical density of cars when trafiic jams occur? How does it depend on the distribution of speeds? What is the effect of extrinsic objects, e.g. curves where everybody slows down? (see papers by Kai Nagel).