Skip to content

yfellous/csm1-yfellous

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

73 Commits
 
 
 
 
 
 

Repository files navigation

Table des matières

  1. Organisation pratique, évaluation
    1. Les objectifs principaux
    2. La méthode pour y arriver
    3. Évaluation
    4. Emploi du temps 8h de CM + 16h de TDM
    5. Codes UE et groupes
    6. Tentative de déroulement
  2. Outils et resources
    1. Git
    2. Latex, Markdown
    3. Python
    4. EDP et calcul scientifique
  3. Quelques mots sur le calcul scientifique (dans ce cours)
    1. Introduction
    2. Des problèmes spécifiques
    3. Matériel
    4. Outils informatiques
    5. Mathématiques
    6. Objectif principal
    7. Liens
  4. Python et les modules scientifiques
    1. Généralités
    2. Python pour le calcul scientifique
    3. Interpéteur
    4. Disponibilité, installation

Organisation pratique, évaluation

Les objectifs principaux

  • Découvrir les possibilités d'un langage de haut niveau pour le calcul scientifique, dans notre cas Python avec les modules Numpy, Scipy, Matplotlib, etc.
  • Découvrir l'approximation des EDP par la pratique.

La méthode pour y arriver

Travailler en groupe collaboratifs, en présentiel et à distance: apprentissage par projets et séances de mise en commun.

Chaque groupe de 3 ou 4 étudiants a en charge la réalisation d'un projet. Le projet est réalisé pendant les heures de TP et librement en dehors. Chaque projet donne lieu à

  • un compte rendu hebdomadaire d'avancement;
  • un temps d'échange après quelques séances;
  • la réalisation d'un compte-rendu terminal;
  • un exposé devant l'ensemble des étudiants.

Évaluation

  • Session 1 : 0.7*rapport + 0.3*contrôle continu (présentation + cr hebdomadaires)
  • Session 2 : 0.7*2e version du rapport + 0.3*max(contrôle continu de session 1, note rapport session 2), ie règle du max

Emploi du temps 8h de CM + 16h de TDM

CM TDM        
3h   mardi 11/09/2018 9:30 12:30 A28/CREMI/105 Introduction à git, python
  2h40 mardi 18/09/2018 9:30-10h50, 11h-12h20 A28/CREMI/105 TP1 individuel
  2h40 mardi 02/10/2018 9:30-10h50, 11h-12h20 A28/CREMI/105 Début travail en groupes
  2h40 mardi 09/10/2018 9:30-10h50, 11h-12h20 A28/CREMI/105  
2h         Complément python, latex
  2h40 mardi 16/10/2018 9:30-10h50, 11h-12h20 A28/CREMI/105  
  2h40 mardi 06/11/2018 9:30-10h50, 11h-12h20 A28/CREMI/105  
  2h40 mardi 13/11/2018 9:30-10h50, 11h-12h20 A28/CREMI/105  
3h       A28/CREMI/105 Présentation finale des projets
8h 16h        

Codes UE et groupes

  • Code UE: 4TMS702U
  • Codes groupes: 4TAQ702S pour "Analyse, EDP, proba" et 4TQM701S pour tronc commun "EDP - Modélisation - Approximation".
  • Email du groupe: ue-4tms702u@diffetu.u-bordeaux.fr

Tentative de déroulement

  1. CM1: intro, cadre du cours, exemples, planning, dates importantes, travail à fournir, échanges. Bref cours sur git, python, markdown à partir d'un exemple de code et de compte-rendu en latex, qui deviendra le TP1 à terminer à la prochaine séance.

  2. TP1, individuel: gestion individuel d'un projet git. Rédaction d'un premier compte-rendu en Markdown. Prise en main de python: faire réaliser un petit code à chacun. Utilisation de ipython + editeur de texte. Pour traiter un système de 2 EDO à la place d'une EDO unique, puis tracer les trajectoires dans le plan de phase. Discussion et explication des sujets, choix et organisation en groupes.

  3. TP2-3: Premier travail de programmation sur une situation simplifiée du projet. Reflexion sur les difficultés supplémentaires pour le cas 'final', quelles sont les questions auxquelles répondre ? Où trouver les réponses ? Comment organiser le travail à venir ? Rédaction d'un rapport préliminaire en latex si possible.

  4. TP4: tour de table pour que chaque groupe synthétise son rapport, ses qestions, son cheminement. Commencer le travail final de programmation.

  5. TP5-6: travail de programmation sur le projet, et mise au point, via les resources disponibles, et par échange avec l'enseignant.

  6. TP7: finalisation du projet, rédaction en commun du squelette du rapport, mise en place des éléments les plus importants, notamment les résultats disponibles. Répartition du travail de rédaction et de mise en forme. Rédaction du plan de l'exposé, nombre de diapos, contenu et rôle de chaque diapo.

  7. CM2: exposé par groupe, remise des rapports finaux.

Outils et resources

Plus d'informations dans le premier TP, et plus d'informations disponible au fur et à mesure de l'avancement du cours.

Git

Latex, Markdown

Python

EDP et calcul scientifique

Vous avez accès à la bibliothèque de math et info (bâtiment A33).

Livres à la BMI

  • Sainsaulieu, Lionel. Calcul scientifique. Cours et exercices corrigés pour le 2ème cycle et les écoles d'ingénieurs. Deuxième édition. - Dunod, 2000.
  • Filbet, Francis. Analyse numérique : algorithme et étude mathématique. 2e édition. - Dunod, 2013. - ( Sciences Sup ).
  • Quarteroni, Alfio & Sacco, Riccardo & Saleri, Fausto. Méthodes numériques - algorithmes, analyse et applications. - Springer Verlag, 2007.
  • Quarteroni, Alfio. Numerical models for differential problems. - Springer Verlag, 2009. - ( Modeling, Simulation & Applications ; 2).
  • Quarteroni, Alfio & Valli, Alberto. Numerical approximation of partial differential equations. - Springer Verlag, 1994. - ( Springer Series in Computational Mathematics ; 23).
  • Tveito, Aslak & Winther, Ragnar. Introduction to partial differential equations. A computational approach. - Springer Verlag, 1998. - ( Texts in applied mathematics ; 29).
  • Dautray, Robert & Lions, Jacques-Louis. Analyse mathématique et calcul numérique pour les sciences et les techniques ; Volumes 1 à 9 - Masson, 1987-1988. - (Collection Enseignement).

Autres livres

  • Elements of Scientific Computing. Authors: Tveito, A., Langtangen, H.P., Nielsen, B.F., Cai, X. Springer 2010.
  • Fundamentals of Scientific Computing. Authors: Gustafsson, Bertil. Springer 2011.

Lien web

Quelques mots sur le calcul scientifique (dans ce cours)

Introduction

L'objectif est de découvrir quelques environnements de travail qui facilitent le développement de solutions basée sur le calcul scientifique (et l'utilisation de plateformes de calcul haute performance). Le cours vise la simulation numérique de modèles issus de la physique, de la biologie, etc, et basés sur des équations aux dérivées partielles.

En sciences, le calcul scientifique est un outil à part entière de résolution de problèmes et de conception de solutions techniques. Il existe désormais plusieurs outils matures qui facilitent et accélèrent le développement de ces solutions techniques. La maîtrise de ces outils et du calcul scientifique est un atout important de la recherche d'emploi.

Quelques questions importantes à propos du calcul scientifique:

  • Quelles plateformes matérielles, quels outils informatiques, quelles méthodes mathématiques ?
  • Comment assurer la reproductibilité des résultats ? Quelles sont les bonnes pratiques de programmation pour cela (gestion de versions – git, svn… –, tests, documentation…) ?

Des problèmes spécifiques

Des problèmes d'ingénierie ou de recherche qui demande la résolution de problèmes numériques de très grandes tailles ou qui sont très nombreux.

Exemple de la prévision de la météo, de gestion de files d'attente complexes (réseaux chemin de fer, réseaux avions…), du traitement d'image (imagerie médicale, animation…)

L'ordinateur fait des + et *, et répartit le travail, communique des nombres. Le coeur des algorithmes repose sur la gestion (construction, manipulation, opérations…) des grands tableaux de nombres. Et donc d'un point de vue mathématique sur l'algèbre linéaire pour des grandes matrices. Grand = plusieurs millions, voir des milliards. Exemple: un cube 100*100*100 = 1 million.

À partir de ces opérations matricielles, nous allons construire des algorithmes qui permettent de calculer des solutions approchées d'équations aux dérivées partielles.

Matériel

  • Ordinateurs portable: faibles performances mais très répandus, en général multicoeur à mémoire partagée.
  • Stations de travail fixes: meilleures performances, multicoeur ou multiprocesseur à mémoire partagé.
  • Serveurs de calcul: performances importantes à très importantes, nombreuses architectures possibles, mais modèles hiérarchique et complexes difficiles à programmer. Cf cours de calcul parallèle du semestre de printemps.

Outils informatiques

  • bibliothèques: qui permettent d'accéder aux fonctionnalités du matériels, comme MPI et autres techniques de communication ou gestion de la mémoire et de l'exécution (openMP), mais aussi les bibliothèques de calcul matriciel (BLAS, LAPACK, UMFPACK, HIPS, MUMPS…).
  • langages de programmation: Fortran, C, C++, proches de la machine, utilisent directement les bibliothèques.
  • langages de haut niveaux: sans compilation, avec interface simplifié et intuitive avec les bibliothèques, temps de développement raccourci, maintien plus simple, interface intuitive avec les bibliothèques…

Mathématiques

  • Les problèmes sont souvent du domaine des EDP (qqsoit le champ d'application).
  • Analyse fonctionnelle et EDP.
  • Transformée de Fourier.
  • Méthodes numériques.
  • Résolution des grands systèmes linéaires, valeurs propres.
  • Résolution d'équations différentielles.
  • Interpolation, approximation, intégration numérique.

Objectif principal

Mettre en oeuvre sans se casser la tête les méthodes ci-dessus pour résoudre des problèmes numériquement complexe sur des ordinateurs dédiés au calcul, éventuellement en utilisant les resources de manière optimale.

Ça demande l'utilisation d'outils informatique et numériques spécifiques.

Liens

Liste de quelques liens.

Python et les modules scientifiques

Généralités

  • Python: langage de haut niveau, simple et élégant. Python est plus qu'un langage de programmation. C'est l'environnement de travail qui permet l'exécution du code.
  • Détails techniques: typage dynamique, gestion automatique de la mémoire, interpreté.
  • Avantages: programmation facile, développement rapide, modularité et autres bonnes pratiques, beaucoup de bibliothèques dans tous les domaines
  • Inconvénients: exécution décentralisée, lente, démarrage peut être difficile

Python pour le calcul scientifique

Communauté importante d'utilisateurs, écosystème étendu:

Bonnes performances grâce à l'integration des bibliothèques optimisées venant du C ou du Fortran (blas, atlas blas, lapack, arpack, Intel MKL…). Support assez bon pour le calcul parralèle (threads, openmp, mpi, cuda, opencl)

  • Schéma de principe: Python <- Numpy <- {Scipy, Matplotlib, Autres boîtes à outils} <- Programme utilisateur

Note: Nous utiliserons python pour faire de la programmation procédurale, et sans utiliser de notions de programmation orientée objet.

Interpéteur

  • python: intepréteur par défaut, lit et exécute un code python. Alternativement propose un environnement d'interprétation rustique.
  • ipython: interpéteur beaucoup plus riche et commode à utiliser. Avec historique des commandes, complétion automatique, édition de code, extraction de documentation, interaction avec l'environnement, etc.
  • jupyter notebook: environnement de travail augmenté avec possibilité de prendre des notes et de montrer des résultats. Nécessite d'utiliser un serveur jupyter, édition hors-ligne délicate.

Disponibilité, installation

Python est disponible sous linux, windows et MacOS. Dans tous les cas, il faut installer au minimum: python, ipython, numpy, scipy, matplotlib.

About

csm1-yfellous created by GitHub Classroom

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages