Weekly homework
Week 1. Due Thursday Sept.12
  • Cover all sections until the "Advanced Unix/Linux", but including the "File System Basics" from www.tutorialspoint.com/unix/.
  • Develop a personal "cheat sheet" of useful commands.
  • Choose an editor (vi or gedit) and learn its basics
  • Learn to use "jupyter notebook" to keep notes in this class; see /work/5P10/Lectures.
Week 2. Due Thursday Sep 19
  • Familiarize yourself with the "Advanced Unix/Linux" from www.tutorialspoint.com/unix/.
  • Complete a bash script for your choice of a task, involving file operations, searching for textual information inside files, etc.
  • Review and revise the skeleton Makefile distributed in the lecture; adapt it to the needs of your version of packet.c.
  • Modify and extend the functionality of packet.c to accept additional command-line switches, with and without parameters. Add error checking against invalid parameter values as needed.
  • Read through packet.f and reconcile its code to the derivation of the solution for the Schrödinger equation developed in class. Convert the solution into a dimensionless form.
Week 3. Due Thursday Sep 26
  • Complete the packet project. With the help of the existing Fortran code, develop packet.c that calculates a Gaussian packet, at a moment in time specified as a parameter at run time. Ample comments throughout your code must make its logic and its overall structure clear to any reader.
  • Develop a gnuplot script that runs your program repeatedly and demonstrates the evolution of the packet encountering a square-well potential.
  • Embed your code and your plots in a jupyter notebook, add markup cells that describe what your project has achieved, and what you learned along the way. Make sure your name is included in the top (header) markup cell of the project file.
  • Your jupyter notebook must be submitted via email to the instructor.
Week 4. Due Thursday Oct 3
  • Complete a plot and analysis of/work/5P10/Cavendish.dat, extract the value of \( G \) and its error estimate, and produce a publication-quality plot.

    Use one of eXtrema, gnuplot, octave, or python for plotting, provide detailed comments in the script, and ensure that a different data set could easily be analyzed using the same script, by changing only the data file name.

    The distance to the board on which the position of the laser dot was recorded is \(L=10.31\)m.

Week 5. Introduction to MATLAB/octave
  • Complete the introductory tutorial: basics, 2D and 3D plotting, loops, functions.
  • Explore at least two advanced topics: ODEs, integration, least-squares fits, linear algebra methods (e.g. svd).
  • Convert one of previously obtained graphing/fitting exercises (VI.dat, Cavendish.dat) to octave.
Week 6. Reading Week.
Week 7. MATLAB/octave analysis of global temperature trends. Due Thursday Oct 24
  • Follow the skeleton of the project as posted in Lectures to learn how to read in the data from remote sites, parse and plot it, bring into a common data structure with a common time base.
  • Perform regression analysis to determine the role played by the two obvious major influencers.
  • Analyse trends in the adjusted data, with influencers removed.
Weeks 8-9. Inverse theory methods (to be submitted Nov.7)
  • Review the concept of SVD decomposition.
  • Analyze the skeleton code of regularize(); make sure you understand every line.
  • Modify the main code by adding appropriate loops, etc. to reproduce the results presented for the exponential example, including the L-curves, on the sample data provided in /work/5P10/test.dat
  • Automate the optimum selection of parameter λ. One possible approach is to seek the value that corresponds to the shortest distance to the origin on the L-curve. Be efficient: vary the step size in λ depending on how strong the dependence on λ is.
  • Optionally, use your program to analyze a real experimental data set (in /work/5P10/Inverse/).
Week 9. Ising Model of ferromagnetism (to be submitted Nov.14)
  • Modify Evolve() function to implement the Metropolis algorithm.
  • Calculate total energy and magnetization and keep a record of these.
  • Repeat until the values settle to a stable equilibrium value; may need to ignore some early states that may reflect the initial conditions, wait until those are "forgotten".
  • Change the temperature and repeat, recording the equilibrium values and the extent of fluctuations for each temperature.
  • Plot magnetization as a function of temperature, find the conditions for ferromagnetic and antiferromagnetic transitions by exploring a range of parameters.
  • As an independent part of the project, modify to consider one of:
    • nearest- and next-nearest-neighbour interactions
    • triangular lattice
    • anisotropic spin-spin interactions, e.g. East-West coupling is different in strength from North-South coupling
    • lattice of spins that can re-orient at their sites, with the Hamiltonian given by $$ {\cal H} = - J \sum_{i,j} \vec{s}_i \cdot \vec{s}_j -\mu \sum_j \vec{h} \cdot \vec{s}_j $$ i.e. dependent on the [cos of the] angle between the two nearest-neigbour spins, and of each spin with the direction of external magnetic field. Without loss of generality, one can assume that $\forall j, \vec{h}_j=\vec{h}=h\hat{k}$.