Computational Methods And Programming
As the need to increase the understanding of real-world phenomena grows rapidly, computer-based simulations and modelling tools are increasingly being accepted as viable means to study such problems. In this course, students are introduced to some of the key computational techniques used in modelling and simulation of real-world phenomena. The course begins with coverage of fundamental concepts in computational methods including error analysis, matrices and linear systems, convergence, and stability. It proceeds to curve fitting, least squares, and iterative techniques for practical applications, including methods for solving ordinary differential equations and simple optimization problems. Elements of computer visualization and Monte Carlo simulation will be discussed as appropriate. The emphasis here is not so much on programming technique, but rather on understanding basic concepts and principles. Employment of higher level programming and visualization tools, such as MATLAB, reduces burdens on programming and introduces a powerful tool set commonly used by the industries and academia. A consistent theme throughout the course is the linkage between the techniques covered and their applications to real-world problems.
The aim of the course is to describe how the approach to physics problems has changed due to the availability of computers and to provide experience in the solution of problems that are tractable only through the use of computers.
By the end of this course, the student should be able to:
- Discuss the mathematical techniques used in engineering and scientific analysis
- Solve these techniques by the solution of relevant problems in various disciplines. Select and implement a suitable finite difference method to solve a given differential equation in physics.
- Explain evaluation of the stability, accuracy and efficiency of a given finite difference method to solve a given differential equation.
- Discuss the formulate boundary value and eigenvalue problems as matrix equations.
- Explain how Fourier transform methods can be used for data processing and solution of differential equations.
- Describe the suitable random number generators and use them to solve multi-dimensional integrals and generate non-uniform distributions.
- Design and implement Monte Carlo methods to simulate dynamic and statistical physics problems, and design deterministic methods to simulate dynamic problems.
- Design and write computer programs to solve physics problems using any of the above techniques.
A student completing the course is expected to demonstrate knowledge and understanding of:
- principles and simple algorithms for solving physics problems
- computational techniques to solve two physics problems/projects numerically
- Report writing, which describe the physics problem/project and your solution and evaluate your solution and its implications, in a style suitable for publication in a professional scientific journal
- modern programming methods;
- the capabilities and limitations of computational methods in physics;
- the characteristics of various numerical methods;
- tactics for encapsulating and hiding complexity;
- solving computationally a selection of problems in physics;
- the use the tools, methodologies, language and conventions of physics to test and communicate ideas and explanations;the appropriate paradigm for addressing current computational physics challenges.