Adloun

Python (école d'ingénieur) · Chapitre 12 · Exercice

Élimination de Gauss sans pivot

Résolution de systèmes linéaires

Énoncé

Implémenter l'élimination de Gauss sans pivot partiel et tester sur un système simple.

Corrigé

import numpy as np

def gauss_sans_pivot(A, b):
    """
    Résolution de Ax = b par élimination de Gauss SANS pivot partiel.
    """
    A = A.astype(float).copy()
    b = b.astype(float).copy()
    n = A.shape[0]

    # Descente
    for j in range(n - 1):
        pivot = A[j, j]
        if abs(pivot) < 1e-15:
            raise ValueError(f"Pivot nul en position ({j}, {j})")

        for i in range(j + 1, n):
            facteur = A[i, j] / pivot
            A[i, j:] -= facteur * A[j, j:]
            b[i] -= facteur * b[j]

    # Remontée
    x = np.zeros(n)
    for i in range(n - 1, -1, -1):
        x[i] = (b[i] - np.dot(A[i, i+1:], x[i+1:])) / A[i, i]

    return x

# Test sur un système bien conditionné
A = np.array([[2, 1, -1],
              [-3, -1, 2],
              [-2, 1, 2]])
b = np.array([8, -11, -3])

x = gauss_sans_pivot(A, b)
print("Solution :", x)
print("Vérification A·x =", A @ x)
print("b original =", b)

# Test sur un système nécessitant un pivot
A2 = np.array([[0.001, 1],
               [1, 1]])
b2 = np.array([1, 2])

try:
    x2 = gauss_sans_pivot(A2, b2)
    print("\nSolution avec petit pivot :", x2)
except ValueError as e:
    print(f"\nErreur : {e}")

Résultat dans la console :

Solution : [ 2.  3. -1.]
Vérification A·x = [  8. -11.  -3.]
b original = [  8 -11  -3]

Erreur : Pivot nul en position (0, 0)

100 % gratuit

La suite du chapitre est sur Adloun

Exercice suivant et tuteur

Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant et tuteur →