Informatique Scientifique en C++

support de cours/TD (2010-2011)

F. Hecht, I. Danaila


Semaine 1

Cours

mardi 03/01/2011 (ID) :
 
 
vendredi, 07/01/2011 (FH)
  • Présentation de la partie théorique du cours (voir aussi les Notes de cours)
  • Rappels de calcul différentiel : opérateurs gradient, divergence, laplacien, etc
  • Introduction du problème modèle : l'équation de la chaleur stationnaire   -Delta(u) =f, u=g sur le bord.
  • Introduction du schémas aux différences finies pour ce problème en dimension 1 (voir aussi les Notes de cours, chapitre 1)
  • Construction de la matrice, écriture de solutions test pour valider le calcul numérique.
  • Algorithme de résolution du système linéaire à matrice tri-diagonale (expliqué dans ce fichier pdf).


TD

Compilation, exécution d'un programme C++. Manipulation des fichiers. Visualisation avec Gnuplot.

Pour commencer à programmer en C++ (notions de base de C++ sous forme de fichier pdf)
Rappel de quelques commandes de base Linux/Unix

Exercice 1 : utilisation des commandes Linux

  1. tester les commandes de base Linux décrites dans  commandes de base Linux/Unix
  2. analyser le contenu du fichier système .bashrc
  3. analyser et utiliser le script Unix  script_menage  
  4. analyser les scripts suivants script change_ext1 (pour changer l'extension d'un fichier)  
  5. analyser la version plus élaborée (change_nom)  du script précédent.

 


Exercice 2 : un premier  programme C++ :

  1. télécharger et sauvegarder sur le disque dur le programme suivant :   hello.cpp
  2. dans une fenêtre Terminal (sous Linux) ou dans la fenêtre "bash" (en utilisant Cygwin sous Windows), aller dans le répertoire ou vous avez sauvegardé le fichier. Assurez-vous que le fichier existe
    ls -la
  3. compiler le programme hello.cpp en créant l'exécutable hello
    g++   hello.cpp    -o hello
  4. exécuter l'application par la commande
    ./hello
  5. Editer le programme et actualiser le message affiché ! Compiler et exécuter à nouveau.

 


Exercice 3 : un deuxième  programme C++ :

  1. télécharger et sauvegarder sur le disque dur le programme suivant :   seriedeun.cpp
  2. dans une fenêtre Terminal (sous Linux) ou dans la fenêtre "bash" (en utilisant Cygwin sous Windows), aller dans le répertoire ou vous avez sauvegardé le fichier. Assurez-vous que le fichier existe
    ls -la
  3. compiler le programme seriedeun.cpp en créant l'exécutable seriedeun
    g++   seriedeun.cpp    -o seriedeun
  4. exécuter l'application par la commande
    ./seriedeun
  5. Commenter le résultat !  Surprenant ?

 


Exercice 4 : quelques éléments de syntaxe C++ :

  1. analyser la syntaxe C++ du programme  :   first.cpp
  2. compiler et exécuter l'application
  3. commenter les résultats
     


Exercice 5 : une première application C++ : visualisation de la fonction f(x)=cos(x), x=[0,pi] ; les valeurs sont affichées sur deux colonnes correspondant à x et f(x)

  1. télécharger et sauvegarder sur le disque dur le programme suivant :  test.cpp
  2. dans une fenêtre Terminal (sous Linux) ou dans la fenêtre "bash" (en utilisant Cygwin sous Windows), aller dans le répertoire ou vous avez sauvegardé le fichier.
    assurez-vous que le fichier "test.cpp" existe
    ls -la
  3. compiler le programme test.cpp en créant l'exécutable test
    g++   test.cpp    -o test
  4. exécuter l'application par la commande
    ./test
    (donner une valeur pour M, 20 par exemple; remarquer l'affichage des résultats sur deux colonnes)
  5. créer un  fichier valeur.in qui contient sur la première ligne la valeur 20 (ouvrir un éditeur, taper 20 sur la première ligne et sauvegarder sous le nom valeur.in)
  6. exécuter la commande suivante 
    ./test   > resultat.dat  < valeur.in
    (le fichier valeur.in sera utilisé pour lire la valeur de M demandée et les résultats de l'application, auparavant affichés à l'écran, seront maintenant sauvegardés dans le fichier resultat.dat qui sera créé)
  7. assurez-vous que le fichier "resultat.dat" existe
    ls -la
  8. afficher le contenu du fichier ; que peut-on dire sur le contenu de la  première ligne de ce fichier ?
    more resultat.dat

 


Exercice 4 : visualisation des résultats avec Gnuplot :

  1. lancer gnuplot (sous Windows, lancer Gnuplot en cliquant sur l'icône correspondant)
    gnuplot
  2. dans l'environnement Gnuplot taper
    plot "resultat.dat" w l
    expliquer le message d'erreur obtenu
    dans un éditeur, supprimer la première ligne du fichier resultat.dat et sauvegarder
    relancer la même commande Gnuplot
  3. autres commandes à essayer (et commenter) sous Gnuplot
    plot "resultat.dat" w l, "resultat.dat"
    plot "resultat.dat" w l, ""
    plot "resultat.dat" using 1:2  w l
    plot "resultat.dat" using ($1/(2*asin(1))):($2) w l


Exercice 5 : Pour éviter les manipulations de l'exercice 3, nous allons sauvegarder directement les résultats dans fichier, en modifiant le programme test.cpp.
La nouvelle version du programme est :   test_fic.cpp
Analyser et exécuter ce programme
g++ test_fic.cpp -o test
./test

 


Exercice 6 : Analyser et exécuter la  version test_argc.cpp  du même programme qui permet de spécifier pendant l'exécution le nom du fichier contenant les résultats  (passage d'arguments en ligne de commande).

g++ test_argc.cpp -o test
./test  toto.dat