3DTaus simulation

TopModels 2019

General Information

The Scientific Modelling course (TopModels19) has several goals. The first, and perhaps the most fundamental, is to create a modelling atittude on the students: think about the fundamental points of the problem, learn from experience, create an algorithm to produce simulations, rethink about the fundamental points of the problems... A second goal of the course is to provide the necessary mathematical background to make efficient and accurate computer simulations. The evaluation is done through small homework assignments and a final project.

The computer languages on which you can do your homeworks and final projects are only restricted to those that run in an Unix Shell. The students background is typically limited to Python, R and Java. You are welcome to use these languages. However if ou feel confident, languages like C or C++ are a wonderful base to a deeper understanding of the subtleties of algorithms. The performance used to be a point, but in modern computers, for the kind of problems that you are going to solve, you need to write highly efficient C code or highly inefficient Java code to notice a boring difference. One other point to mention is the ability that in both C and C++ you have GSL library running from the scratch.

On the side of sripting languages, Python and R are big and powerful. Julia will become, in a newer future, a competitive rival. The reasons for this are quite obvious: from the base the efficiency of Julia leaves Python far behind, it can run Python code in it and it is easily extensible from C. Moreover, has some wonderful libraries, like JuliaDB, that makes it wonderful to work with (big) data. And in more mathematical style, it starts at 1! This is also the case of R, a beautiful (functional) language.

The range of problems to model is restricted only by our imagination and time bounds. We have, due to the contact with a consortium of companies, a vast portfolio of practical problems. On top of that, besides the personal interests of the teachers, the students are motivated to come with their own problems. The bibliography will a set of notes to be deliver along the semester.

Outline of the Course

  1. Basics of Information Theory
  2. Generation of pseudo-random numbers and Diehard Tests.
  3. Methods to generate nonuniform pseudo-random numbers
  4. Monte Carlo Integration
  5. Fundamentals of Markov Chains
  6. Markov Chain Monte Carlo simulation
  7. Discrete Fourier Transform

Code examples

  1. Python Crash Course
    1. Numpy Crash Course
    2. Pandas Crash Course part 1
    3. Pandas Crash Course part 2
  2. Allocate a bidimensional array in C, in C++ and in Java
  3. Bertrand's Chord problem (as formulated here, page 16) simulation in Java: general class and runner.
  4. Random Number Generators
    1. Linear Congruential Method in Java
    2. Generalized Linear Congruential Method in Java
    3. Xorshift random number generator (in C++)
  5. A basic general propose C++ library to make computations with Stochastic matrices.
  6. Financial Modeling (in Julia)
    1. Brownian Motion
    2. Black-Scholes-Merton Models (via Monte Carlo)
    3. Heston Model