Pivot de Gauss en Python
Répondre à la discussion
Affichage des résultats 1 à 2 sur 2

Pivot de Gauss en Python



  1. #1
    lesurveilleur

    Pivot de Gauss en Python


    ------

    Bonsoir,

    Je ne comprends pas bien la méthode derrière ce pivot de Gauss.

    Code:
    import numpy as np
    
    def lu_decomposition_pivot(A):
        n = A.shape[0]
        L = np.zeros((n, n))
        U = np.zeros((n, n))
        P = np.identity(n)
        
        
        for i in range(n):
            # Pivotage partiel
            max_index = np.argmax(np.abs(A[i:, i])) + i
            if A[max_index, i] == 0:
                raise ValueError("La matrice est singulière")
    
            # Échange des lignes
            A[[i, max_index]] = A[[max_index, i]]
            P[[i, max_index]] = P[[max_index, i]]
            if i > 0:
                L[[i, max_index], :i] = L[[max_index, i], :i]
    
            L[i, i] = 1
            for j in range(i, n):
                U[i, j] = A[i, j] - np.sum(L[i, :i] * U[:i, j])
                if i != j:
                    L[j, i] = (A[j, i] - np.sum(L[j, :i] * U[:i, i])) / U[i, i]
    
        return P, L, U
         
    
    # Exemple d'utilisation
    A = np.array([[2, 0, 2, 0.6],
                  [3, 3, 4, -0.1],
                  [1, 1, 1, 2],
                  [1, 3, 3, 1]])
    
    P, L, U = lu_decomposition_pivot(A)
    
    print("Matrice P :")
    print(P)
    
    print("Matrice L :")
    print(L)
    
    print("Matrice U :")
    print(U)
    
    print("Vérification PA = LU :")
    print(np.dot(P, A) - np.dot(L, U))
    Je comprends mathématiquement cette méthode, mais pas numériquement.

    Dans l'attente de vous lire

    -----

  2. #2
    Biname

    Re : Pivot de Gauss en Python

    Salut,
    Mon assistant 4o trouve ceci :
    ------------------------------
    Il semble que le problème vient de la manière dont la matrice A est modifiée directement lors du processus de décomposition, ce qui perturbe les calculs ultérieurs des matrices L et U. En modifiant A directement, les éléments de L et U calculés se basent sur une matrice qui change au fil des itérations, causant des incohérences.

    Pour mettre en évidence l'erreur, regardons les points spécifiques où la matrice A est modifiée :

    Échange des lignes dans A :
    Code:
    A[[i, max_index]] = A[[max_index, i]]
    Cet échange affecte la matrice A et par conséquent, peut fausser les calculs de L et U.

    Calcul des éléments de U :
    Code:
    U[i, j] = A[i, j] - np.sum(L[i, :i] * U[:i, j])
    À ce stade, A a déjà été modifiée par les échanges de lignes, ce qui peut entraîner des erreurs dans les calculs de U.

    Calcul des éléments de L :
    Code:
        L[j, i] = (A[j, i] - np.sum(L[j, :i] * U[:i, i])) / U[i, i]
    De même, les modifications précédentes de A peuvent induire des erreurs dans les calculs de L.

    La solution consiste à utiliser une copie de la matrice A pour effectuer les opérations de pivotage et les calculs de U et L. Cela permet de préserver l'intégrité de la matrice originale et d'éviter les incohérences.

    Voici le correctif appliqué :
     Cliquez pour afficher

    En utilisant A_copy pour les opérations de décomposition, nous évitons les problèmes liés aux modifications en place de A, assurant ainsi la précision des calculs de L et U.
    ------------------------------
    Est-ce que ceci répond à ta question ?

Discussions similaires

  1. Algorithme : Pivot de Gauss ou Gauss-Jordan sur la TI-83 CE
    Par oofuj dans le forum Mathématiques du supérieur
    Réponses: 0
    Dernier message: 14/08/2020, 22h45
  2. Pivot de Gauss
    Par Anonyme007 dans le forum Mathématiques du supérieur
    Réponses: 1
    Dernier message: 25/04/2018, 22h06
  3. Pivot de GAUSS
    Par invite287067ae dans le forum Mathématiques du supérieur
    Réponses: 0
    Dernier message: 16/05/2016, 08h25
  4. pivot de gauss
    Par invite9c5f7482 dans le forum Mathématiques du supérieur
    Réponses: 2
    Dernier message: 10/09/2013, 21h11
  5. Pivot de Gauss
    Par inviteb23e8ffe dans le forum Mathématiques du collège et du lycée
    Réponses: 1
    Dernier message: 24/04/2010, 19h42