4. Gradient Conjugué Creux

Objectifs

  • Implémenter le Gradient Conjugué prenant en charge une matrice CSR
  • Comparer les temps CPU entre le Gradient Conjugué “Dense” et “CSR”

Gradient Conjugué “Creux”

Implémentation

La méthode du Gradient Conjugué nécessite, à chaque itération, un produit matrice-vecteur et aucune inversion de matrice. Nous pouvons implémenter très facilement une version creuse du Gradient Conjugué. Sous réserve de disposer d’une classe MatriceCSR fonctionnelle et utilisant le même nom pour le produit matrice vecteur que la classe Matrice, alors la seule différence entre la version dense et creux du Gradient Conjugué est le type du paramètre const Matrice & A_ qui devient const MatriceCSR &A_.

Implémenter une nouvelle classe pour résoudre le Gradient Conjugué dont la matrice est au format CSR.
Le templating de votre classe du Gradient Conjugué est possible mais alors il faut fusionner le fichier .cpp dans le .hpp.

Performances

Comparez les performances, en terme de temps CPU, entre la méthode du Gradient Conjugué dense et creux pour une matrice de taille suffisamment importante.
Le nombre d’itérations entre la version Dense et Creuse doit être exactement le même !
Previous