Comment résoudre un système d’équations ?
Un système d’équations linéaires cherche des nombres inconnus qui vérifient plusieurs égalités à la fois. Vous saurez le résoudre par élimination et dire quand il n’a aucune solution ou en a une infinité.
À la boulangerie, 2 cafés et 1 viennoiserie coûtent 5 €, puis 1 café et 3 viennoiseries 10 €. Quel est le prix de chaque article ?
À la fin de cette leçon
Remarque
Je peux résoudre un petit système par élimination et dire quand il n’a pas de solution unique.
Mots clés
| Mot | Ce que ça veut dire |
|---|---|
| Système | plusieurs égalités qui doivent être vraies ensemble |
| Élimination | retirer une inconnue en combinant deux égalités |
| Pivot | le nombre qui sert à éliminer dans une colonne |
| Matrice singulière | une matrice dont le système n’a pas de solution unique |
| Déterminant | un nombre qui vaut 0 pour une matrice singulière |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Un système s’écrit avec une matrice
Appelons x le prix d’un café et y celui d’une viennoiserie. Les deux commandes donnent 2x + y = 5 et x + 3y = 10.
Les coefficients forment la matrice [[2, 1], [1, 3]], les inconnues le vecteur (x, y) et les totaux le vecteur (5, 10). Résoudre le système, c’est trouver le vecteur qui donne (5, 10).
Exemple travaillé : les deux commandes
| Commande | Cafés | Viennoiseries | Total en euros |
|---|---|---|---|
| 1 | 2 | 1 | 5 |
| 2 | 1 | 3 | 10 |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
L’élimination fait disparaître une inconnue
On double la commande 2 : 2 cafés et 6 viennoiseries pour 20 €. On retire la commande 1 : il reste 5 viennoiseries pour 15 €, donc 3 € pièce.
Le café coûte alors (5 − 3) divisé par 2, soit 1 €. Cette méthode, qui retire une inconnue à chaque étape, s’appelle l’élimination.
L’élimination en Python
# 2 cafés + 1 viennoiserie = 5 euros ; 1 café + 3 viennoiseries = 10 euros.
ligne1 = [2, 1, 5]
ligne2 = [1, 3, 10]
# On double la ligne 2, puis on retire la ligne 1 : la colonne des cafés disparaît.
double = [2 * ligne2[0], 2 * ligne2[1], 2 * ligne2[2]]
reste = [double[0] - ligne1[0], double[1] - ligne1[1], double[2] - ligne1[2]]
viennoiserie = reste[2] / reste[1]
cafe = (ligne1[2] - ligne1[1] * viennoiserie) / ligne1[0]
print("une viennoiserie :", viennoiserie, "euros")
print("un café :", cafe, "euros")
# Remplacez 10 par 11 dans ligne2, puis relancez.
# Les deux prix changent-ils ?
Exemple travaillé : l’élimination pas à pas
| Étape | Égalité obtenue |
|---|---|
| Départ | 2x + y = 5 et x + 3y = 10 |
| Doubler la seconde | 2x + 6y = 20 |
| La retrancher de la première | 5y = 15 |
| Diviser par 5 | y = 3 |
| Remonter dans la première | 2x + 3 = 5, donc x = 1 |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Résoudre le système avec NumPy
docker exec jupyter python3 -c "import numpy as np; print(np.linalg.solve(np.array([[2, 1], [1, 3]]), np.array([5, 10])))"Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Parfois aucune solution, parfois une infinité
Prenons x + 2y = 3 et 2x + 4y = 6. La seconde égalité est le double de la première : elles disent la même chose, donc il y a une infinité de solutions.
Avec 2x + 4y = 7 à la place, les deux égalités se contredisent : aucune solution. Dans les deux cas la matrice est dite singulière.
Exemple travaillé : le déterminant de deux matrices
| Matrice | Calcul : a × d − b × c | Déterminant | Solution unique ? |
|---|---|---|---|
| [[2, 1], [1, 3]] | 2 × 3 − 1 × 1 | 5 | oui |
| [[1, 2], [2, 4]] | 1 × 4 − 2 × 2 | 0 | non |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Le déterminant de deux matrices
docker exec jupyter python3 -c "import numpy as np; print(round(np.linalg.det(np.array([[1, 2], [2, 4]])), 3), round(np.linalg.det(np.array([[2, 1], [1, 3]])), 3))"Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Une erreur fréquente
Attention
Beaucoup pensent qu’un système a toujours exactement une solution. C’est vrai seulement si le déterminant n’est pas nul. S’il vaut 0, les égalités sont redondantes ou contradictoires : aucune solution, ou une infinité.
Pour aller plus loin
Dans un carnet, résolvez avec np.linalg.solve un système de trois équations que vous inventez, puis vérifiez en multipliant la matrice par la solution.
En apprentissage automatique, ajuster une droite à des points revient à résoudre un système de ce genre.