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.




Répondre avec citation




et comme c'est la première fois que je programme, j'ai du mal à être clair dans ce que j'essaye d'expliquer.


Partager