Determinant matrice
Fermé
sarah
-
28 avril 2009 à 11:03
quendistu Messages postés 509 Date d'inscription lundi 3 novembre 2008 Statut Membre Dernière intervention 4 juin 2009 - 28 avril 2009 à 12:23
quendistu Messages postés 509 Date d'inscription lundi 3 novembre 2008 Statut Membre Dernière intervention 4 juin 2009 - 28 avril 2009 à 12:23
5 réponses
quendistu
Messages postés
509
Date d'inscription
lundi 3 novembre 2008
Statut
Membre
Dernière intervention
4 juin 2009
87
28 avril 2009 à 11:16
28 avril 2009 à 11:16
quendistu
Messages postés
509
Date d'inscription
lundi 3 novembre 2008
Statut
Membre
Dernière intervention
4 juin 2009
87
28 avril 2009 à 11:43
28 avril 2009 à 11:43
C'est bien ce que me suis dit ; pour réconcilier le besoin de supprimer des lignes et des colonnes et le besoin de conserver l'intégralité de la matrice, la fonction supprimer soit retourner une copie de la matrice tronquée et non la matrice passée tronquée elle même ; ou alors faire cette copie dans la fonstion Det elle-même.
Je ne m'y connais pas en python, mais ce serait comme ceci :
def Det(mat):
" retourne le déterminant de la matrice mat"
s=0
j=0
while j<3:
copiemat=mat
B=supprimer(j,0,copiemat)
print B
if j%2==0:
s=s+mat[j][0]*Det(B)
else:
s=s-mat[j][0]*Det(B)
j=j+1
return s
def Det(mat):
" retourne le déterminant de la matrice mat"
s=0
j=0
while j<3:
B=supprimer(j,0,matprime)
print B
if j%2==0:
s=s+mat[j][0]*Det(B)
else:
s=s-mat[j][0]*Det(B)
j=j+1
return s
Je ne m'y connais pas en python, mais ce serait comme ceci :
def Det(mat):
" retourne le déterminant de la matrice mat"
s=0
j=0
while j<3:
copiemat=mat
B=supprimer(j,0,copiemat)
print B
if j%2==0:
s=s+mat[j][0]*Det(B)
else:
s=s-mat[j][0]*Det(B)
j=j+1
return s
def Det(mat):
" retourne le déterminant de la matrice mat"
s=0
j=0
while j<3:
B=supprimer(j,0,matprime)
print B
if j%2==0:
s=s+mat[j][0]*Det(B)
else:
s=s-mat[j][0]*Det(B)
j=j+1
return s
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
28 avril 2009 à 11:56
28 avril 2009 à 11:56
Utilise les balises de conservations de code (à droite de souligner) lorsque tu postes un programme et en particulier lorsque c'est du python.
copiemat=mat
Cela ne changera rien, étant donné que copiemat contiendra l'adresse de mat. Donc la modification de copiemat agira sur mat également.
copiemat=mat
Cela ne changera rien, étant donné que copiemat contiendra l'adresse de mat. Donc la modification de copiemat agira sur mat également.
quendistu
Messages postés
509
Date d'inscription
lundi 3 novembre 2008
Statut
Membre
Dernière intervention
4 juin 2009
87
28 avril 2009 à 12:00
28 avril 2009 à 12:00
Donc fiddy la question à laquelle répondre pour apporter quelquechose c'est :
comment copier la matrice au lieu de copier son adresse.
A toi
comment copier la matrice au lieu de copier son adresse.
A toi
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
28 avril 2009 à 12:14
28 avril 2009 à 12:14
comment copier la matrice au lieu de copier son adresse.
C'est ta question et non la sienne ça. Le lien donné marche parfaitement (je viens de tester).
Sinon pour répondre à ta question :
PS : n'oublie pas d'importer copy.
Cdlt
C'est ta question et non la sienne ça. Le lien donné marche parfaitement (je viens de tester).
Sinon pour répondre à ta question :
copieMat = copy.copy(mat)
PS : n'oublie pas d'importer copy.
Cdlt
quendistu
Messages postés
509
Date d'inscription
lundi 3 novembre 2008
Statut
Membre
Dernière intervention
4 juin 2009
87
28 avril 2009 à 12:16
28 avril 2009 à 12:16
La réponse de fiddy e faisant attendre, je propose une fonction Copiemat, inspirée de la fonction Addmat du site déjà cité :
def Addmat(M1,M2):
"Additionne deux matrices carrées"
N=len(M1)
M=[None]*N
for i in range (N):
M[i]=[0]*N
for j in range (N):
M[i][j]=M1[i][j]+M2[i][j]
return M
donc :
def Addmat(M1):
"Copie deux matrices carrées"
N=len(M1)
M=[None]*N
for i in range (N):
M[i]=[0]*N
for j in range (N):
M[i][j]=M1[i][j]
return M
voilààà
N=len(M1)
M=[None]*N
def Addmat(M1,M2):
"Additionne deux matrices carrées"
N=len(M1)
M=[None]*N
for i in range (N):
M[i]=[0]*N
for j in range (N):
M[i][j]=M1[i][j]+M2[i][j]
return M
donc :
def Addmat(M1):
"Copie deux matrices carrées"
N=len(M1)
M=[None]*N
for i in range (N):
M[i]=[0]*N
for j in range (N):
M[i][j]=M1[i][j]
return M
voilààà
N=len(M1)
M=[None]*N
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
28 avril 2009 à 12:22
28 avril 2009 à 12:22
La réponse de fiddy e faisant attendre, je propose une fonction Copiemat, inspirée de la fonction Addmat du site déjà cité :
J'ai répondu avant ton post (cf post 7).
Sinon, lorsque tu postes un code (surtout en python), utilise la balise prévue à cet effet (à droite du bouton souligner), sinon cela n'affiche pas l'indentation, et le code ne vaut rien (délimitation des blocs perdue).
J'ai répondu avant ton post (cf post 7).
Sinon, lorsque tu postes un code (surtout en python), utilise la balise prévue à cet effet (à droite du bouton souligner), sinon cela n'affiche pas l'indentation, et le code ne vaut rien (délimitation des blocs perdue).
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
quendistu
Messages postés
509
Date d'inscription
lundi 3 novembre 2008
Statut
Membre
Dernière intervention
4 juin 2009
87
28 avril 2009 à 12:23
28 avril 2009 à 12:23
Bravo
28 avril 2009 à 11:33
28 avril 2009 à 11:52