Programming for Computations (MATLAB/Octave version)¶
Contents:
- Programming for Computations (MATLAB/Octave version)
 - Preface
 - The first few steps
- What is a program? And what is programming?
 - A Matlab program with variables
 - A Matlab program with a library function
 - A Matlab program with vectorization and plotting
 - More basic concepts
 - Exercises
- Exercise 1: Error messages
 - Exercise 2: Volume of a cube
 - Exercise 3: Area and circumference of a circle
 - Exercise 4: Volumes of three cubes
 - Exercise 5: Average of integers
 - Exercise 6: Interactive computing of volume and area
 - Exercise 7: Update variable at command prompt
 - Exercise 8: Formatted print to screen
 - Exercise 9: Matlab documentation and random numbers
 
 
 - Basic constructions
- If tests
 - Functions
 - For loops
 - While loops
 - Reading from and writing to files
 - Exercises
- Exercise 10: Introducing errors
 - Exercise 11: Compare integers a and b
 - Exercise 12: Functions for circumference and area of a circle
 - Exercise 13: Function for area of a rectangle
 - Exercise 14: Area of a polygon
 - Exercise 15: Average of integers
 - Exercise 16: While loop with errors
 - Exercise 17: Area of rectangle versus circle
 - Exercise 18: Find crossing points of two graphs
 - Exercise 19: Sort array with numbers
 - Exercise 20: Compute \(\pi\)
 - Exercise 21: Compute combinations of sets
 - Exercise 22: Frequency of random numbers
 - Exercise 23: Game 21
 - Exercise 24: Linear interpolation
 - Exercise 25: Test straight line requirement
 - Exercise 26: Fit straight line to data
 - Exercise 27: Fit sines to straight line
 - Exercise 28: Count occurrences of a string in a string
 
 
 - Computing integrals
- Basic ideas of numerical integration
 - The composite trapezoidal rule
 - The composite midpoint method
 - Testing
 - Vectorization
 - Measuring computational speed
 - Double and triple integrals
- Derivation via one-dimensional integrals
 - Direct derivation
 - Programming a double sum
 - Reusing code for one-dimensional integrals
 - Verification via test functions
 - Theory
 - Implementation
 - The Monte Carlo integration algorithm
 - Implementation
 - Verification
 - Test function for function with random numbers
 - Integral over a circle
 
 - Exercises
 
 - Solving ordinary differential equations
- Population growth
- Derivation of the model
 - Numerical solution
 - Programming the Forward Euler scheme; the special case
 - Understanding the Forward Euler method
 - Programming the Forward Euler scheme; the general case
 - Making the population growth model more realistic
 - Verification: exact linear solution of the discrete equations
 
 - Spreading of diseases
- Spreading of a flu
 - A Forward Euler method for the differential equation system
 - Programming the numerical method; the special case
 - Outbreak or not
 - Abstract problem and notation
 - Programming the numerical method; the general case
 - Time-restricted immunity
 - Incorporating vaccination
 - Discontinuous coefficients: a vaccination campaign
 
 - Oscillating one-dimensional systems
- Derivation of a simple model
 - Numerical solution
 - Programming the numerical method; the special case
 - A magic fix of the numerical method
 - The 2nd-order Runge-Kutta method (or Heun’s method)
 - Software for solving ODEs
 - The 4th-order Runge-Kutta method
 - More effects: damping, nonlinearity, and external forces
 - Illustration of linear damping
 - Illustration of linear damping with sinusoidal excitation
 - Spring-mass system with sliding friction
 - A finite difference method; undamped, linear case
 - A finite difference method; linear damping
 
 - Exercises
- Exercise 43: Geometric construction of the Forward Euler method
 - Exercise 44: Make test functions for the Forward Euler method
 - Exercise 45: Implement and evaluate Heun’s method
 - Exercise 46: Find an appropriate time step; logistic model
 - Exercise 47: Find an appropriate time step; SIR model
 - Exercise 48: Model an adaptive vaccination campaign
 - Exercise 49: Make a SIRV model with time-limited effect of vaccination
 - Exercise 50: Refactor a flat program
 - Exercise 51: Simulate oscillations by a general ODE solver
 - Exercise 52: Compute the energy in oscillations
 - Exercise 53: Use a Backward Euler scheme for population growth
 - Exercise 54: Use a Crank-Nicolson scheme for population growth
 - Exercise 55: Understand finite differences via Taylor series
 - Exercise 56: Use a Backward Euler scheme for oscillations
 - Exercise 57: Use Heun’s method for the SIR model
 - Exercise 58: Use Odespy to solve a simple ODE
 - Exercise 59: Set up a Backward Euler scheme for oscillations
 - Exercise 60: Set up a Forward Euler scheme for nonlinear and damped oscillations
 - Exercise 61: Discretize an initial condition
 
 
 - Population growth
 - Solving partial differential equations
- Finite difference methods
 - Exercises
- Exercise 62: Simulate a diffusion equation by hand
 - Exercise 63: Compute temperature variations in the ground
 - Exercise 64: Compare implicit methods
 - Exercise 65: Explore adaptive and implicit methods
 - Exercise 66: Investigate the \(\theta\) rule
 - Exercise 67: Compute the diffusion of a Gaussian peak
 - Exercise 68: Vectorize a function for computing the area of a polygon
 - Exercise 69: Explore symmetry
 - Exercise 70: Compute solutions as \(t\rightarrow\infty\)
 - Exercise 71: Solve a two-point boundary value problem
 
 
 - Solving nonlinear algebraic equations
- Brute force methods
 - Newton’s method
 - The secant method
 - The bisection method
 - Rate of convergence
 - Solving multiple nonlinear algebraic equations
 - Exercises
- Exercise 72: Understand why Newton’s method can fail
 - Exercise 73: See if the secant method fails
 - Exercise 74: Understand why the bisection method cannot fail
 - Exercise 75: Combine the bisection method with Newton’s method
 - Exercise 76: Write a test function for Newton’s method
 - Exercise 77: Solve nonlinear equation for a vibrating beam
 
 
 - References
 - References
 
            