# Modules

Computational physics learning modules as IPython Notebooks.

#### Basic Plotting

Plotting a function in Python.

#### Introduction to NumPy

Very basic introduction to using and generating NumPy arrays

#### Discrete Fourier Transform

Brief introduction to Discrete Fourier Transform and the Fast Fourier Transform.

#### Linear Algebra in Python

Basic linear algebra in Python.

#### Simple implementation of Euler's method

Basic notebook covering how to implement Euler's method, without much focus on theory

#### Intermediate NumPy

An extension of the Introduction to NumPy-notebook, going through some of the more common features in NumPy.

#### Intermediate plotting

Basic and intermediate plotting with Python using the Matplotlib library. Topics include, figure formatting, subplots, mesh grids and 3D plots.

#### Numerical Integration

Numerical integration using the trapezoidal and Simpson's rules.

#### Monte Carlo Integration in One Dimension

Numerical integration in one dimension using the Monte Carlo method.

#### Monte Carlo Integration in D Dimensions

Numerical integration in D dimensions using the Monte Carlo method.

#### Bisection Method

Determining a root using the bisection method.

#### Newton-Raphson Method

Determining a root with the Newton-Raphson algorithm.

#### Fixed-Point Iteration

Solving fixed-point problems using the Fix-Point Iteration method.

#### Euler's Method

A thorough walkthrough of the theoretical aspects of Euler's method. Also covers how to solve higher order ODEs.

#### Verlet Integration

Solving a second-order ordinary differential equation (Newton's second law) using Verlet integration.

#### Implicit Euler Method

Solving a first-order ordinary differential equation using the implicit Euler method (backward Euler method).

#### Runge-Kutta Methods

Solving a first-order ordinary differential equation using the Runge-Kutta method.

Solving a first-order ordinary differential equation using Runge-Kutta methods with adaptive step sizes.

#### Partial Differential Equations - Two Examples

This module shows two examples of how to discretize partial differential equations: the 2D Laplace equation and 1D heat equation.

#### Relaxation Methods for Solving PDE's

The Jacobi, Gauss-Seidel and Successive overrelaxation (SOR) methods are introduced and discussed with the Poisson equation as an example.

#### Iterative Gauss-Seidel Method

Solves a linear of system of equations using the iterative Gauss-Seidel method.

#### Polynomial Interpolation

Using polynomial interpolation to interpolate a set of points and to approximate a function or a curve.

#### Cubic Splines

Uses cubic splines to interpolate a given set of data points

#### Trigonometric Interpolation

Using trigonometric interpolation and the discrete Fourier transform to fit a curve to equally spaced data points.

#### Calling Fortran(95) Routines from a Python Script

Making use of the Fortran to Python package F2PY which enables creating and compiling a Fortran routine before converting it to a Python Module, which can be imported to any Python script.