IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++/CLI Discussion :

Souci sur le codage de l'algorithme du gradient conjugu�


Sujet :

C++/CLI

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre � l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    5
    D�tails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2010
    Messages : 5
    Par d�faut Souci sur le codage de l'algorithme du gradient conjugu�
    Bonjour � tous, je vais pr�senter un peu ce que je compte faire.

    Il me faut calculer � partir de la matrice (bande), trouver la solution x par la m�thode du gradient conjugu� sous l'�quation Mx=B (M la matrice, B le second membre un vecteur et x aussi).

    Par l'algorithme que je trouve sur le net, j'aimerais savoir si parmi vous qui ont cod� cet algo me dire si mon code est bon.

    (Pour ceux ou celles qui veulent l'int�gralit� des fichiers et codes je les ai laiss� ici http://www.faceweb.fr/Laplace2D.rar)



    Code C++ : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    Vecteur MatriceBande::GradientConjugue(const Vecteur &B, double epsilon)
    {
        MatriceBande &M = (*this);
        Vecteur r0(N), r1(N), x0(N), p0(N);
     
        double a, b;
        int n = 0, Nmax=100000;
     
        r0 = B - M*x0;
        p0 = r0;
        b = 0;
     
        while (r0.NormeCarree() >= epsilon*epsilon)
        {
            n++;
     
            if (n>Nmax)
            {
                cout << " Le gradient conjugue n'a pas converge en moins de "<< Nmax <<" iterations." << endl;
                cout << " (||r||^2 = " << r0.NormeCarree()<< " )" << endl;
                break;
            }
     
            a = r0.NormeCarree() / (M*p0*p0);
     
            x0 = x0 + a*p0;
            r1 = r0;
            r0 = r0 - a*(M*p0);
            p0 = r0 + b*p0;
     
            b = r0.NormeCarree() / r1.NormeCarree();
        }
     
        return x0;
    }

  2. #2
    Membre � l'essai
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    5
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 5
    Par d�faut
    Si tu veux r�soudre l'�quation Mx=B par un algo du gradient, je suppose que tu veux minimiser la fonction:
    phi(x) = ||Mx-B||^2
    D�j�, si tu as une m�thode pour calculer l'inverse d'une matrice, il existe une solution exacte:
    x = M^-1B, ou si M est pas inversible:
    x = (M^TM)^-1M^TB

    Sinon avec le gradient, il te faut calculer le gradient de phi par rapport � x. C'est:
    -2M^T(B-Mx)
    dans ton code c'est r0 et j'ai l'impression qu'il manque le M^T devant.

    Ensuite tu utilises (je crois), un pas "optimal" pour faire converger ton gradient. Je te conseille dans un 1er temps d'utiliser un pas constant et d'accroitre le nombre d'it�ration max pour voir si �a converge.

    Si oui, c'est-�-dire que ton impl�mentation de la d�riv�e est bonne, tu peux passer � un pas optimal pour acc�l�rer la convergence.

Discussions similaires

  1. Algorithme M�thode Gradient Conjugu� en C
    Par achraf2 dans le forum Algorithmes et structures de donn�es
    R�ponses: 3
    Dernier message: 21/01/2010, 13h21
  2. soucis sur les USER DEFINED DATA TYPE
    Par f_bobo dans le forum MS SQL Server
    R�ponses: 2
    Dernier message: 17/05/2006, 15h53
  3. [C#] Petit soucis sur un TreeView ...
    Par hobotalker dans le forum Windows Forms
    R�ponses: 8
    Dernier message: 29/11/2005, 15h33
  4. Petit souci sur la lib�ration d'une connexion tcp
    Par alexandre75 dans le forum D�veloppement
    R�ponses: 1
    Dernier message: 08/11/2005, 19h43
  5. souci sur ajout de donn�es de zone de liste
    Par Tierisa dans le forum IHM
    R�ponses: 6
    Dernier message: 27/09/2005, 08h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo