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

Algorithmes et structures de données Discussion :

[Fortran 90] Algorithme Gauss_Siedel


Sujet :

Algorithmes et structures de données

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 6
    Points : 1
    Points
    1
    Par défaut [Fortran 90] Algorithme Gauss_Siedel
    Bonjour, je dois réaliser la résolution du système Ax=B
    Je n'ai que cette formule :
    Je ne comprend pas la methode
    La matrice doit être une 4X4, il doit y avoir 2871 itération max, et une précision de 0.1
    J'ai déjà réussi a coder le pivot de gauss et la méthode LU pour résoudre ce système, mais j'ai aucune idée Pour celle ci
    merci de votre aide

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 103
    Points : 135
    Points
    135
    Par défaut
    On en parle dans cette discussion et plus particulièrement ce site

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    merci

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 103
    Points : 135
    Points
    135
    Par défaut
    Je suis sûr que ta formule n'est pas équivalente à ce qui est présentée mais par une pirouette magique on y arrive !

    En effet la formule ne marche que si tous les Aii sont non nuls (bah ouaih c'est con, mais sinon ça marche poâ). La stratégie consiste à ne pas prendre la matrice A initiale mais une permutation de ces lignes (qu'on applique aussi à b sinon ça marche poâ non plus) et de ces colonnes (qu'on applique aussi à x sinon ça marche tjrs poâ ou alors t'es vraiment moulu) qui respecte la propriété A'ii non nul pour tt i. Le pb est qu'on arrive pas à le faire avec n'importe quel A (exemple si A a des 1 dans la 1ère colonne et des 0 ailleurs mais bon c'est un cas simple) mais là faut que je réfléchisse plus.
    Qd on a obtenu A' on découpe A' en M+N avec M triangulaire inférieure inversible (normal car la diagonale de A' a que des coef non nuls) et N triangulaire supérieure stricte.

    On remplace l'équation A'.x'=b' par M.x'(k)+N.x'(k-1)=b' qui se transforme en
    M.x'(k) = b' - N.x'(k-1) qui est un système triangulaire inférieure pour x'(k) qui devient la formule que tu as donné qd résout le système !

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    J'ai une question dans cette formule l'itération apparait, comment coder une itération: quand je déclare X, real*4 X(4)
    je souhaiterais lui imposer un indice ex X(I)(K+1), K+1 étant l'ordre de l'itération
    merci de votre aide

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 103
    Points : 135
    Points
    135
    Par défaut
    Citation Envoyé par renard2guerre Voir le message
    J'ai une question dans cette formule l'itération apparait, comment coder une itération: quand je déclare X, real*4 X(4)
    je souhaiterais lui imposer un indice ex X(I)(K+1), K+1 étant l'ordre de l'itération
    merci de votre aide
    Avec un tableau ? Sauf si c'est un besoin, cela ne sert à rien (pour l'algo) de stocker toutes les itérations, il suffit de stocker uniquement l'itération k et k-1 qd tu calcules x(k) ... et encore en regardant bien tu peux diviser ça par 2 (avec une pseudo fenetre glissante) sauf si tu décides que ton critère d'arrêt de tes itérations est qd la distance entre 2 itérés est inférieure à une borne.

    Real*4 X(4), ça veut dire quoi et surtout dans quel langage ? Matlab ?

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Merci de vos conseils, j'ai réussi enfin !
    J'ai par contre une autre question, le professeur me demande de représenter l'algorithme sur feuille avec des carres fléchés cercles ... Je ne suis pas sur de bien comprendre pouvez vous me mettre sur la piste ?
    merci

  8. #8
    Expert éminent
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Points : 6 486
    Points
    6 486
    Par défaut
    C'est peut-être d'un algorigramme dont il parle ?

  9. #9
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    génial, merci le prof c'était embrouillé dans la question !
    au moins avec sa pas de problème de compil, au pire mon crayon fera une boucle infinie !

  10. #10
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Points : 5 179
    Points
    5 179
    Par défaut
    Salut !

    La matrice doit être une 4X4.
    Tu pourras signaler à ton prof. que la méthode de Gauss-Seidel ne présente d'intérêt que pour les très gros systèmes présentant une matrice très creuse.

    Jean-Marc Blanc

  11. #11
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Oui ta raison mais en faite c une matrice creuse 36*36, la 4*4 c'était juste pour tester le programme

  12. #12
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Points : 5 179
    Points
    5 179
    Par défaut
    OK!

    Mais 36x36, c'est encore petit et Cholesky convient aussi dans ce cas. C'est à partir de 36'000x36'000 que Gauss-Seidel devient intéressant.

    A part ça, je te conseille de télécharger de www.netlib.org et d'examiner attentivement comment ils ont fait. C'est un modèle du genre.

    Jean-Marc Blanc

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 488
    Points : 593
    Points
    593
    Par défaut
    Bonjour,

    Attention, Cholesky ne convient que si la matrice A est symétrique et définie positive.
    Et je ne serai por ma part pas aussi catégorique sur le nombre d'éléments à partir duquel Gauss-Seidel est "intéressant"...

    Ehouarn

  14. #14
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Points : 5 179
    Points
    5 179
    Par défaut
    Tout à fait d'accord avec Ehouarn:
    Cholesky ne convient que si la matrice A est symétrique et définie positive
    C'est vrai, mais il arrive fréquemment (mais pas toujours) dans mon domaine que l'on trouve de très grandes matrices très creuses qui sont symétriques définies positives (par ex. différences ou éléments finis).
    nombre d'éléments à partir duquel Gauss-Seidel est "intéressant"
    C'est aussi vrai: j'ai mis "au pif" 1000 fois la valeur indiquée par Renard2querre. Il faut toutefois remarquer qu'avec les méthodes directes, le temps de calcul ne dépend "presque" que de la taille du système, alors qu'avec les méthodes itératives, la convergence est fortement influencée par le conditionnement de la matrice.
    Jean-Marc Blanc

Discussions similaires

  1. Algorithme du Voyageur de Commerce ou TSP en FORTRAN
    Par MINOTE dans le forum Fortran
    Réponses: 0
    Dernier message: 20/12/2009, 10h30
  2. algorithme simpler en fortran
    Par arriftou dans le forum Mathématiques
    Réponses: 8
    Dernier message: 05/05/2009, 08h26
  3. Réponses: 3
    Dernier message: 19/01/2009, 14h10
  4. Réponses: 6
    Dernier message: 21/09/2007, 14h18
  5. [FORTRAN] Ellipse fitting algorithm
    Par souviron34 dans le forum Contribuez
    Réponses: 4
    Dernier message: 04/07/2007, 16h06

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