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
- 7 autres exercices corrigés dans ce chapitre, et 7 à chercher avec le tuteur
- Les 2 QCM du chapitre, le premier sans compte
- Le tuteur, qui guide pas à pas sans donner la réponse
Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.