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 43 44 45
|
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
if i in lignes_faites:
i=i+1
while i < nblignes and trouver==False and not i in lignes_faites:
if M[i][j]==0 and j <nbcolonnes:
j=j+1
else:
pivoti=i
pivotj=j
pivotij= M[pivoti][pivotj]
trouver==True #retourne les variables
lignes_faites.append(i) #ajoute l'indice de la ligne ou le pivot a été trouvé
else:
for k in range (nbcolonnes):
M[pivoti][k]=M[pivoti][k]/float(pivotij)
for m in range(nblignes):
y=M[m][pivotj]
if y!=0 and not m==pivoti:
for k in range (nbcolonnes):
M[m][k]=M[m][k]-(M[pivoti][k]*y)
trouver=False #re-initialise les variables de départ pour continuer plus loin.
i=i+1
j=0
pivotj=0
pivotj=0
for i in range (nblignes):
for j in range (nbcolonnes):
pivot(i,j)
print M,lignes_faites |