Projet : quelques précisions (utiles ?)

Re: Projet : quelques précisions (utiles ?)

by Jean-Cédric Chappelier -
Number of replies: 0

Bonjour !

encore quelques remarques complémentaires suite aux questions de jeudi passé :

  1. les valeurs de tests fournies ne sont bien sûr pas pour être toutes lues et comparées à l’œil ! Utilisez les de 2 façons :
    1. comparez en « à l’œil » quelques unes, bien choisies, en particulier les toutes premières valeurs ;
    2. utilisez ensuite des outils pour comparer globalement le résultat de votre programme avec le fichier fourni ; plus de détails ci-dessous ;

  2. pour la résolution de l'équation de Laplace (P7), il y a en fait plusieurs méthodes en général pour ce genre de problèmes (dépendances de 2 grandeurs ; ici potentiels vecteurs et laplaciens) :

  • soit calculer tous les laplaciens à partir d'une « image »/« photographie » (état mémorisé) de tous les potentiels vecteurs ; puis, seulement ensuite, remise à jour de tous les potentiels grâce aux nouvelles valeurs des potentiels ;

  • ou alors calculer en chaque position la nouvelle valeur du laplacien, puis la nouvelle valeur du potentiel ;
    cette seconde famille de calcul a elle-même plusieurs variantes : dans quel ordre choisir les points de l'espace qui sont remis à jour : toujours dans un même ordre donné ? (p.ex. boucles en i, puis j, puis k) ou avec un tirage au hasard d'une nouvelle position à chaque fois (cette dernière famille de techniques s'appellent « simulations Monte-Carlo »)

Les valeurs de tests que nous donnons en P7 ont été produite par la première technique ci-dessus (« photo » : mise à jour de tous les laplaciens, puis de tous les potentiels). Si vous avez de grosses différences avec les valeurs fournies, c'est peut être que vous avez programmé une autre méthode.
Pour comparer automatiquement la sortie de votre programme avec les fichiers fournis, procédez comme suit :
  1. Tout d'abord, affichez les valeurs dans le même ordre et au même format ;
    nous avons en particulier augmenté la précision d'affichage (rappel du 1er semestre) :
    cout << setprecision(14);
  2. Lorsque vous faites tourner votre programme (dans un terminal), récupérez sa sortie en la redirigeant à l'aide du signe '>'  (strictement supérieur). Par exemple :
    ./exerciceP6 > ma_sortie.txt
  3. Comparer votre résultat (ma_sortie.txt ci-dessus) avec le fichier de résultats fourni ; p.ex. en utilisant `diff -w` :
    diff -w ma_sortie.txt testPotentiel2.dat
La comparaison ci-dessus (diff) s'effectuant caractère par caractère, elle est peut être trop sensible aux petites variations de calcul (problème de précision de représentation des double). Je vous ai donc écrit un petit programme pour faire cette comparaison, ligne à ligne, à une précision donnée. Je vous laisse regarder le programme ci-joint (c'est du C++ ! ;-) ).

Enfin, bien sûr, vous pouvez aussi faire une comparaison globale en dessinant (avec gnuplot ou avec votre propre graphisme) les résultats obtenus qui devraient globalement ressembler aux figures fournies. Cela ne garanti pas un calcul exact en tout point, mais donne déjà une bonne idée : si les images ressemblent, les erreurs commises (s'il y a en a) de devraient pas être trop grosses.