Application de la méthode de Gauss sur une matrice

Le problème exposé dans ce sujet a été résolu.

Bonsoir,
Je travaille sur un tp dans lequel je dois programmer la méthode de Gauss sans bouger les lignes en python. Voici ce que j’ai fait pour le moment :

 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
def gauss_without_swap(A):
    n = len(A)

    try:
        for i in range(0, n):
            pivot = abs(A[i][i])

            if pivot == 0:
                raise ValueError("Le système n'a pas de solution, impossible de continuer.")

            for k in range(i + 1, n):
                first_term = A[k][i]

                for j in range(0, n + 1):
                    A[k][j] -= (first_term / pivot) * A[i][j]
    except ValueError as err:
        print(err)
        exit(0)

    return A

if __name__ == '__main__':
    A = [[1, 2, 5, 1],
         [3, 2, 6, 6],
         [7, 2, 4, 0]]

    A = gauss_without_swap(A)

    pprint(A)

Voici ce que j’obtiens comme résultat :

1
2
3
1.0     2.0     5.0     | 1.0
0.0     -4.0    -9.0    | 3.0
0.0     -24.0   -58.0   | 2.0

Elle n’est pas triangulaire supérieur donc ma fonction ne fonctionne pas. Elle fonctionne pour une matrice carrée 2 mais pas au-dessus, sûrement un problème au niveau des indices mais je n’arrive pas à le trouver…

J’espère que vous saurez m’aider,
Merci et bonne soirée !

Parce que j’ai fait la méthode avec l’échange de ligne avant et j’avais besoin de abs ce qui a dû m’embrouiller. Tu as résolu mon problème, ça fonctionne nickel sans, ce qui est plutôt logique au final, on va mettre ça sur le compte de la fatigue… Merci ! :D

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte