Resolution d'un système de n équations par la méthode de gauss-seidl

Soyez le premier à donner votre avis sur cette source.

Vue 19 451 fois - Téléchargée 652 fois

Description

Ce programme vous permet de résoudre un système Ax=b par la méthode de Gauss-Seidl. NB: ce programme peut ne pas converger pour certaine matrice , dans ce cas il faut ajuster certains paramètres pour avoir une convergence. Je l'ai indiqué dans le code.

Source / Exemple :


# -*- coding: cp1252 -*-

# Ce programme résout un système d'équations Ax=b, par la méthode de Gauss-Seidel
# En cas de non convergence jouer sur w, ou sur tol ou sur itmax

from math import*

print "Résolution du système d'équations par la méthode Gauss -Seidel"

A=[[1,2,1],[8,-4,3],[3,2,-2]]
# A est une matrice du système définie ligne par ligne
b=[3,4,-2]              
x=[0,0, 0]
#  x est un vecteur qui definie les valeurs initiales de de x1 et x2(remarque xi est réel
tol=1e-16
# tol définie la précision seuil
err=0
itmax=300000
# itmax est le nombre d'itération maximal
s=0
w=0.1
# 0 <w <1 , est un facteur de relaxation qui modifie un peu l'algo, c'est pour amener
# le système à converger.En effet il se peut que le système ne converge pas pour certaine matrice
for k in range (itmax):
      err=0
      for i in range(len(A)):
            s=0
            xprim=x[i]
            for j in range(len(A)):
                  if i!=j:
                        s=s+A[i][j]*x[j]
            x[i]=w*((b[i]-s)/A[i][i])+(1-w)*x[i]
            err=err+fabs((x[i]-xprim))
      if err<tol:
            print('Nombre d\' iterations',k,'Erreur',float(err))
            print " la solution de votre système est:",x
            break
else:
      print "le sytème ne converge pas. Essayer de jouer sur w, ou sur tol ou sur itmax ou sur x"
      print "voir en premier tol(penser à augmenter la puissance si trop petit), puis itmax, puis w (ne pas depasser 0.5)"

Conclusion :


J'espère recevoir vos commentaires et remarques et que ce code vous permettra de resoudre certains de vos problèmes. Merci!

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
3
Date d'inscription
jeudi 19 mai 2011
Statut
Membre
Dernière intervention
19 mai 2011

svp, j'ai un mini projet sur la methode de relaxation pour resoudre le systeme Ax=b avec langage C; est ce que vous pouvez m'aider de trouver la traduction en C (programme) ( methode iterative) et merci bcp d'avance (^^)
Messages postés
1
Date d'inscription
mercredi 30 juillet 2008
Statut
Membre
Dernière intervention
20 mai 2009

slt sidou195, merci pour ta question. La matrice de ton système est une matrice 4*3 et la méthode que je donne ci-dessus n'est pas adaptée pour ce genre de système mais plutôt pour un système dont la matrice est carré. Toutefois je purrai me pencher sur la résolution de tel systême. Merci
Messages postés
2
Date d'inscription
mercredi 21 novembre 2007
Statut
Membre
Dernière intervention
20 mai 2009

slt, est ce que toutes les systèmes sont résolvables avec cette méthode?
essayez ce système

1 x + 2 y - 2 z = 1
.1156 x + 1.5644 y + .2044 z = .1156
.1156 x + .2044 y + 1.5644 z = .1156
1 x - 2 y + 2 z = 1

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.