Bonjour,
J’ai besoin de calculer le pivot d’une matrice. J’ai donc trouvé un exemple que j’ai un peu adapté. Ça fonctionne comme attendu mais je ne le comprend pas entièrement. Voici la fonction que j’utilise :
1 2 3 4 5 6 7 8 9 10 | def compute_pivot(A): n = len(A) pivot = [[int(i == j) for j in range(n)] for i in range(n)] # Create a diagonal matrix with the A size for i in range(n): row = max(range(i, n), key=lambda j: abs(A[j][i])) if i != row: pivot[i], pivot[row] = pivot[row], pivot[i] return pivot |
C’est, comme vous aurez pu vous en douter je pense, à partir du for
que je suis perdu. Si j’ai bien compris, row
contient la valeur la plus élevée de la ligne en valeur absolue ? Et si i est différent de row, on échange les lignes ? Je ne comprend pas la logique derrière… Est-ce que quelqu’un peut me l’expliquer ?
Merci de votre aide !
+0
-0