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

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

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.