2010-09-29 5 views
0

Description (ceci est une question de HWK):Code pour résoudre déterminant en utilisant Python sans utiliser scipy.linalg.det

Je ne sais pas où commencer ici. J'ai l'intention d'utiliser Expansion de Laplace mais je ne suis pas sûr de savoir comment l'implémenter pour les matrices nxn. Toute aide serait appréciée.

Note: J'ai déjà une fonction pour générer des matrices aléatoires pour une matrice nxn. Aussi le moment du calcul n'est pas un problème. La seule chose que j'ai un problème est de savoir comment calculer le déterminant.

J'ai dû supprimer la description de la question b/c de ma politique de classe.

+0

qui est pas vraiment un problème de programmation. Peut-être que si vous présentez du code, quelqu'un peut vous aider à le corriger. Qu'avez-vous essayé? – aaronasterling

+0

Oh oui c'est, j'ai besoin d'une stratégie de comment mettre cela en code. –

+1

homme, je pense que vous avez vraiment besoin de vous appliquer. Cela ressemble à me donner le codez – Anycorn

Répondre

3

Ok, voici un indice.

  1. écrire une fonction pour calculer les matrices secondaires. (Indice, utiliser des tranches)
  2. écrire une fonction pour calculer les cofacteurs (cela devrait appeler la première fonction, et la fonction déterminée)
  3. la fonction déterminée appelle la fonction à l'étape deux et ajoute les résultats ensemble. (indice: utilisez sum)

vous avez un déterminant. De plus, n'oubliez pas qu'en raison de la façon dont nous écrivons les listes en python, les index sont inversés. C'est si

M = [[1, 2, 3], 
    [4, 5, 6], 
    [7, 8, 9]] 

alors m 0,1 est 2 et non 4 comme il serait en notation normale. vous pouvez le considérer comme une transposition ou une utilisation zip

+0

Donc, pour les index, les colonnes sont comptées en premier, puis les lignes? –

+0

@shagster non, d'abord les lignes puis les colonnes. Regardez le code et réfléchissez-y. (pour moi au moins, la façon normale d'indexer est colonne, rangée.) D'abord vous descendez le couloir puis vous montez l'ascenseur ") c'est vraiment un point discutable ici parce que D (A^t) = D (A) – aaronasterling

1

Voici un code python récursif pour la méthode adjucate pour trouver un déterminant matriciel.

def getMatrixMinor(m,i,j): 
    return [row[:j] + row[j+1:] for row in (m[:i]+m[i+1:])] 

def getMatrixDeternminant(m): 
    #base case for 2x2 matrix 
    if len(m) == 2: 
     return m[0][0]*m[1][1]-m[0][1]*m[1][0] 

    determinant = 0 
    for c in range(len(m)): 
     determinant += ((-1)**c)*m[0][c]*getMatrixDeternminant(getMatrixMinor(m,0,c)) 
    return determinant 

Notez que l'entrée est un tableau de tableaux représentant la matrice nxn

Questions connexes