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:
si je lance mon programme voila la réponse:
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
C'est un bon début, mais c'est que la moitié de ce que je dois réaliser malheureusement
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]]
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.
Partager