Bonsoir,
En cours nous avons abordé la méthode du pivot de Gauss pour trouver les solutions d’un système, où A représente la matrice associée aux coefficients des solutions pour chaque équations et $B$une matrice colonne, la matrice second membre.
Voici ce que j’ai commencé à faire en Python:
[spoiler]from math import *
def ChoisirPivot(A,k):
a=
compteur=0
for i in range (len(A)):
if A[k][i]!=0:
a.append(compteur)
compteur+=1
if a==: return(-1)
else: return(a[0])
def EchangeLigne(A,k,p):
C=[[0 for k in range(len(A))] for j in range (len(A))]
C[k]=A[p]
A[p]=A[k]
A[k]=A[p]
def Resous (A,B):
n=len(A)
for k in range (n):
p=ChoisirPivot(A,k)
if p==-1:
return(« matrice non inversible »)
EchangeLigne (A,k,p)
B[k]=(1/A[k][k])*B[k]
C=[0 for j in range (len(A))]
for s in range (n):
C.append((1/A[k][k])*A[k][s])
A[k]=C
D=[0 for j in range (len(A))]
for i in range (n):
if i!=n:
B[i]=B[i]-A[i][k]*B[k]
for w in range (n):
D.append(A[i][w]-A[i][k]*A[k][w])
A[i]=D
return(B)
A=[[1,3,1],[1,2,1],[3,1,1]]
B=[1,0,-1]
B2=Resous(A,B)
for x in B2: print(x)[/spoiler]Je précise que dans la fonction « ChoisirPivot », j’ai indenté mon deuxième « if a==… » au même niveau que le « for i in range … » et non pas dans la boucle « for… ».
J’ai essayé de le faire tourner, il me renvoie « matrice non inversible ». Je pense que j’ai déjà un problème au niveau de la première fonction " ChoisirPivot", j’ai tenté de bidouiller quelque chose afin d’obtenir en sortie le numéro de la ligne du premier coefficient non nul de la colonne, qui sert ensuite à échanger la ligne « de départ » numérotée « k » dans ce programme, avec la ligne de ce premier coefficient non nul de la même colonne numérotée « p ».
Ensuite, les petites boucles for dans la fonction « Resous » servent uniquement à multiplier les lignes par un coefficients, Python me renvoyait un message d’erreur lorsque je multipliais directement la ligne par un ‹ float › du coup j’ai dû à nouveau contourner le problème.
Si quelqu’un trouve un moyen de résoudre ce qui ne va pas dans mon programme, ce serait fort sympathique !
Merci d’avance.