Salut à tous,
je suis débutant et j'ai un problème avec ma boucle.
je vous l'écris tout de suite avec un exemple ce sera plus simple:

Code : 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
36
37
38
39
40
41
42
M=[[6.0,0.0,-1.0,0.0,0.0],[12.0,0.0,0.0,-2.0,0.0],[6.0,2.0,-2.0,-1.0,0.0],[0.0,0.0,0.0,1.0,1.0]]
nblignes= len (M)
nbcolonnes= len (M[0])
lignes_faites=[]
 
def pivot(i,j):      
    i=0
    j=0
    pivoti=0
    pivotj=0
    pivotij= M[i][j]
    trouver=False
    while i<nblignes and not i in lignes_faites and trouver==False :
        if M[i][j]==0 and j<nbcolonnes-1:
            j=j+1
        elif j==nbcolonnes-1:
            i=i+1
        else:
            pivoti=i
            pivotj=j
            pivotij= M[pivoti][pivotj] #retourne le pivot
            lignes_faites.append(i)
            trouver==True       
    else:
        for j in range (nbcolonnes):
             M[pivoti][j]=M[pivoti][j]/float(pivotij) 
        for i in range(nblignes): 
            y=M[i][pivotj]
            if y!=0 and not i==pivoti:
                for j in range (nbcolonnes):
                    M[i][j]=M[i][j]-(M[pivoti][j]*y)
        trouver=False #à priori sert à rien ...
        i=i+1 #à priori sert à rien ...
        j=0 #à priori sert à rien ...
        pivoti=0 #à priori sert à rien ...
        pivotj=0#à priori sert à rien ...
 
 
for i in range (nblignes):
    for j in range (nbcolonnes):
        pivot(i,j)
print M
si je lance mon programme voila la réponse:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
[[1.0, 0.0, -0.16666666666666666, 0.0, 0.0], [0.0, 0.0, 2.0, -2.0, 0.0], [0.0, 2.0, -1.0, -1.0, 0.0], [0.0, 0.0, 0.0, 1.0, 1.0]]
C'est un bon début, mais c'est que la moitié de ce que je dois réaliser malheureusement

J'aimerais qu'il puisse retourner ce résultat dans ma fonction pour obtenir une matrice davantage simplifiée.

L'idée c'est qu'il doit trouver un pivot !=0 par ligne et, qui n'est pas dans la même colonne que le pivot de la ligne précédente. Toutes les autres valeurs de la colonne où il y a le pivot, doivent devenir ==0 par une astuce mathématique.

Ne faite pas attention à la dernière ligne et la dernière colonne qui sont là pour autres chose. Il faut donc ne pas en tenir compte.

si qq un peut m'aider, je lui serai reconnaissant.