3. Comparaison des Performances

Objectifs

Pour les différentes méthodes itératives standards, nous souhaitons comparer :

  1. Les historiques de convergence
  2. Le temps CPU (time to solution)
Pensez à préparer vos classes/fonctions pour sortir et traiter vos données.

Problème modèle

Nous utilisons toujours la matrice du Laplacien, de taille N⨉N.

Temps CPU

Adaptez les fonctions membres Solve() de chaque classe de méthode itérative pour pouvoir calculer le temps d’exécution de la résolution. Vous pouvez bien entendu ajouter des paramètres/méthodes si vous le désirez.

Naturellement, vous pouvez réutiliser le code minimaliste proposé dans ces tps.

Historiques de Convergence

Nous considérons une matrice de taille 200 et un vecteur membre de droite b rempli de 1. Dans cet exercice, nous fixons de plus la tolérance à 0.1 et le nombre d’itérations maximal de 20000.

Sur une même figure, affichez les courbes de la norme du résidu relatif (‖r‖/‖b‖) en fonction du numéro de l’itération pour chaque méthode itérative. Cette figure s’appelle l’historique de convergence.

Quelle méthode itérative est la plus rapide (en terme de nombre d’itérations) ?

Vous devriez obtenir une courbe ressemblant à celle ci-dessous :

Avec les résultats suivants (le temps CPU dépend bien évidemment de l’ordinateur et de l’implémentation !) :

Méthode Jacobi Gauss-Seidel Relaxation (optimal)
Nombre d’itérations
Temps CPU (s)

Temps CPU

Pour N=10 à 200, avec un pas de 10, calculez le temps CPU (en secondes) pour chaque méthode itérative. Affichez sur une même figure chaque courbe “temps CPU (s)" en fonction du “numéro de l’itération”.

Quelle méthode itérative est la plus rapide (en terme de secondes) ?

Previous