0/5 (3 avis)
Vue 27 355 fois - Téléchargée 870 fois
# -*- 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)"
19 mai 2011 à 13:38
20 mai 2009 à 20:55
20 mai 2009 à 14:52
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.