zhaochaocs / school-work-galilee

A collection of stuff I do for school

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Introduction

A nice diary of stuff I work at for school. Ah, the nostalgia that shall fall over me one day looking back on the bewildering idiot I used to be.

Most things also contain some documentation (most is in French), but here is a small description for all the folders.

Latex Styles

Folder: latexstyles.

You will need to install these custom packages if you want to compile any of the documents. To install just execute the install.sh script and it should work.

Description: This contains three style files:

  • texformat: a very simple file that includes some common packages, sets a different style for hyperlinks and removes the indentation.
  • texmath: many, many math shortcuts and settings.
  • texthm: all the theorem environments that you could need, you have to tell it what language they should be in: French or English.

Lecture Notes

Folder: lecture-notes.

Language: LaTeX.

Description: Lecture notes, cheatsheats and some exams for a couple of courses where digital data wasn't available.

Modelling Climate Risks

Folder: climate-statistics.

Language: R.

Data: Boromo Station Data.

Description: We have some local variables (temperature and precipitation) that we want to approximate given some global covariables (humidity and wind speed and direction). For the approximation we will play with linear regression and neural networks. Secondly, we will compare the best model with the data from the RCP scenarios that are part of the CMIP5 model.

C++

Folder: cplusplus.

Language: C++.

Description: Some playing around with classes and inheritance in C++. The main idea was to write an integrator class for random function (using the Simpson method). The functions are of class Function and we have implemented some basic stuff (polynomials, etc) as well as a composed function.

Cryptography

Folder: cryptography.

Language: C.

Description: Implement a simple protocol that involves: RSA for transmitting keys and stuff, CBC with a simple Feistel scheme for the symmetric part and RSA signatures for authentication.

English

Folder: english.

Language English.

Description: Various presentations and essays written for my English classes.

Finite Element Method

Folder: fem.

Language: Matlab, C.

Description: Solving the equation $-\Delta u + cu = f$ with various boundary conditions in 1D and 2D using the Finite Volume Method. In 1d, we also implemented some steepest descent algorithms, especially the conjugate gradient.

Finance

Folder: finance.

Language: Matlab.

Description: Various methods for calculation call prices and premium stuff. No idea, to be honest.

Finite Volume Method

Folder: fvm.

Language: Matlab, C.

Description: This folder contains 3 bigger projects:

  • the first one is a C implementation that solves the $-\Delta u + cu = f$ equation in 2D. Some of the things contained herein: a sparse matrix implementation (that is very closely related to the mesh structure, unfortunately), a conjugate gradient implementation and a "a posteriori" error estimation method with adaptive mesh refinement.
  • the second project is a study of different time schemes and space discretisations in 1D in Matlab. For comparison, it also contains some finite difference methods. For the fine volume part, there is an implementation of some ENO and VENO (Simple and Variable Essentially Non-Oscillatory) schemes.
  • the third project is a 2D implementation of the St. Venant equations and the Euler equations (with a Yee vortex as an initial solution) using finite volumes.

Linear Programming

Folder: linear-programming.

Language: Python.

Description: A very basic implementation of the Simplex algorithm.

Mechanics

Elasticity

Folder: mechanics/elasticity.

Language: FreeFem.

Description: Solving some simple example problems in the case of linear elasticity. Unfortunately, there is no written explanation of each example.

Plasticity

Folder: mechanics/plasticity.

Language: FreeFem.

Description: Solving some simple example problems in the case of plasticity. Unfortunately, there is no written explanation of each example.

Numerical Methods

Folder: numerical-methods.

Language: Matlab.

Description: This contains some very basic numerical methods for solving linear systems and ODEs, numerical integration and Lagrange interpolation. It also contains an example of solving $-\Delta u + u= f$ in 2D using finite differences.

Optimal Control

Folder: optimal-control.

Language: Matlab.

Description: Solve the three body problem using an additional force that will provide the control over the third body, a satellite. The goal of the project is to arrive in the 3rd Lagrange Point in minimal time.

Parallel Programming

Folder: parallel-programming.

Language: C, C++.

Description: Using MPI and OpenMP to parallelize different algorithms: the conjugate gradient (used to solve a simple heat equation), LU factorization, block matrix product and, finally, the Mandelbrot and Buddhabrot fractals.

Porous Mediums

Folder: porous.

Language: Scilab.

Description: Solve the very complicated equations that describe a porous environment. The practical example used in this project is extracting oil from a reservoir, that also contains clay, by injecting water.

Probabilistic / Statistical Methods

Folder: probabilities

Language: Matlab.

Description: Implementations of various Monte Carlo methods, the accept-reject method and random number generators.

Quantum Mechanics

Folder: quantum.

Language: Matlab.

Description: Solve Schrodinger's equation for a certain potential.

Domain Decomposition

Folder: schwarz.

Language: Python, Matlab.

Description: This contains two bigger projects:

  • Implementation of the Schwarz domain decomposition method in 1D, to solve the $\Delta u = 0$ equation. To fully utilize the method, there is also a parallel implementation using Python and mpi4py.
  • Implementation of different domain decomposition methods in 1D and 2D, no parallelization.

SVD Method.

Folder: svd.

Language: Python.

Description: Construct a H-matrix (Hierarchical Matrix) by using clustering and SVD algorithms. This projects has 3 different parts:

  • first, we have an implementation of splitting a set of points based on the principal direction given by the coordinates.
  • second, we look at the SVD method and the ACA algorithm, both of which provide an approximation of a matrix A, that has rank k. We study the performance and precision of each method.
  • finally, by separating our points into clusters and decomposing the necessary ones with the ACA algorithm, we construct a H-matrix.

Uncertainty Methods

Folder: uncertainties.

Language: Python, Scilab.

Description: This folder contains 2 projects:

  • the first project is an OpenTURNS project that studies the cost of maintaining a dam (with a given formula for the cost), given some random variables that represent the height of the dam, the friction between the water and the soil, etc. We have tried to approximate the average cost per year, as well as the probability of going over a certain value with various methods: Monte Carlo, Importance Sampling and a Taylor approximation (Quadratic Cumul).
  • the second project is a simple introduction to the NISP module for Scilab that deals with uncertainties using Sobol indices and chaos polynomials.

About

A collection of stuff I do for school

License:MIT License


Languages

Language:TeX 50.2%Language:MATLAB 18.5%Language:Python 11.5%Language:C 10.8%Language:C++ 4.5%Language:Scilab 2.6%Language:R 1.0%Language:Shell 0.3%Language:M 0.1%Language:Makefile 0.1%Language:CMake 0.1%Language:Julia 0.0%Language:Objective-C 0.0%Language:Gnuplot 0.0%