Introduction
Dans ce laboratoire (lab), vous apprendrez à résoudre un système de deux équations linéaires en programmation C. Le laboratoire couvre deux étapes principales : la lecture des coefficients des deux équations, puis le calcul des solutions en utilisant la méthode du déterminant. Vous allez créer un programme C qui permet aux utilisateurs de saisir les coefficients, puis le programme calculera et affichera les solutions ou tout cas particulier qui peut survenir.
La première étape consiste à inviter l'utilisateur à entrer les coefficients des deux équations linéaires sous la forme standard : ax + by = c. Le programme affichera ensuite les coefficients saisis pour vérifier l'entrée. Dans la deuxième étape, vous allez étendre le programme pour calculer les solutions en utilisant la règle de Cramer, qui implique le calcul des déterminants des matrices de coefficients. Le programme affichera les solutions ou tout cas particulier, comme l'absence de solution ou une infinité de solutions.
Lire les coefficients de deux équations
Dans cette étape, vous apprendrez à lire les coefficients d'un système de deux équations linéaires en utilisant la programmation C. Nous allons créer un programme qui permet aux utilisateurs de saisir les coefficients de deux équations sous la forme standard : ax + by = c.
Tout d'abord, créons un nouveau fichier C pour implémenter notre solveur d'équations :
cd ~/project
nano linear_equations.c
Maintenant, ajoutez le code suivant pour lire les coefficients :
#include <stdio.h>
int main() {
float a1, b1, c1; // Coefficients pour la première équation
float a2, b2, c2; // Coefficients pour la deuxième équation
// Demande et lecture des coefficients pour la première équation
printf("Entrez les coefficients de la première équation (ax + by = c) :\n");
printf("a1 : ");
scanf("%f", &a1);
printf("b1 : ");
scanf("%f", &b1);
printf("c1 : ");
scanf("%f", &c1);
// Demande et lecture des coefficients pour la deuxième équation
printf("Entrez les coefficients de la deuxième équation (ax + by = c) :\n");
printf("a2 : ");
scanf("%f", &a2);
printf("b2 : ");
scanf("%f", &b2);
printf("c2 : ");
scanf("%f", &c2);
// Affichage des coefficients saisis pour vérification
printf("\nPremière équation : %.2fx + %.2fy = %.2f\n", a1, b1, c1);
printf("Deuxième équation : %.2fx + %.2fy = %.2f\n", a2, b2, c2);
return 0;
}
Compilez et exécutez le programme :
gcc linear_equations.c -o linear_equations
./linear_equations
Exemple de sortie :
Entrez les coefficients de la première équation (ax + by = c) :
a1 : 2
b1 : 3
c1 : 8
Entrez les coefficients de la deuxième équation (ax + by = c) :
a2 : 1
b2 : 4
c2 : 10
Première équation : 2.00x + 3.00y = 8.00
Deuxième équation : 1.00x + 4.00y = 10.00
Calculer les solutions en utilisant les déterminants
Dans cette étape, vous apprendrez à résoudre un système de deux équations linéaires en utilisant la méthode du déterminant. Nous allons étendre le programme précédent pour calculer les solutions en utilisant la règle de Cramer.
Ouvrez le fichier existant et modifiez le code :
cd ~/project
nano linear_equations.c
Mettez à jour le code avec la méthode de calcul du déterminant :
#include <stdio.h>
// Fonction pour calculer le déterminant
float determinant(float a1, float b1, float a2, float b2) {
return a1 * b2 - a2 * b1;
}
int main() {
float a1, b1, c1; // Coefficients pour la première équation
float a2, b2, c2; // Coefficients pour la deuxième équation
float det, detX, detY;
float x, y;
// Demande et lecture des coefficients pour la première équation
printf("Entrez les coefficients de la première équation (ax + by = c) :\n");
printf("a1 : ");
scanf("%f", &a1);
printf("b1 : ");
scanf("%f", &b1);
printf("c1 : ");
scanf("%f", &c1);
// Demande et lecture des coefficients pour la deuxième équation
printf("Entrez les coefficients de la deuxième équation (ax + by = c) :\n");
printf("a2 : ");
scanf("%f", &a2);
printf("b2 : ");
scanf("%f", &b2);
printf("c2 : ");
scanf("%f", &c2);
// Calcul du déterminant principal
det = determinant(a1, b1, a2, b2);
// Vérification si le système a une solution unique
if (det!= 0) {
// Calcul des déterminants pour x et y
detX = determinant(c1, b1, c2, b2);
detY = determinant(a1, c1, a2, c2);
// Calcul des solutions
x = detX / det;
y = detY / det;
printf("\nSolution :\n");
printf("x = %.2f\n", x);
printf("y = %.2f\n", y);
} else {
// Vérification si le système n'a pas de solution ou a une infinité de solutions
if (determinant(c1, b1, c2, b2)!= 0 || determinant(a1, c1, a2, c2)!= 0) {
printf("\nAucune solution n'existe.\n");
} else {
printf("\nUne infinité de solutions existe.\n");
}
}
return 0;
}
Compilez et exécutez le programme :
gcc linear_equations.c -o linear_equations
./linear_equations
Exemple de sortie pour une solution unique :
Entrez les coefficients de la première équation (ax + by = c) :
a1 : 2
b1 : 3
c1 : 8
Entrez les coefficients de la deuxième équation (ax + by = c) :
a2 : 1
b2 : 4
c2 : 10
Solution :
x = 2.00
y = 2.00
Exemple de sortie pour l'absence de solution :
Entrez les coefficients de la première équation (ax + by = c) :
a1 : 2
b1 : 3
c1 : 8
Entrez les coefficients de la deuxième équation (ax + by = c) :
a2 : 4
b2 : 6
c2 : 16
Aucune solution n'existe.
Afficher les solutions ou les cas particuliers
Dans cette étape finale, vous allez améliorer le programme pour fournir une sortie plus détaillée pour différents types de solutions dans un système de deux équations linéaires.
Ouvrez le fichier existant et apportez les modifications finales :
cd ~/project
nano linear_equations.c
Mettez à jour le code avec un formatage de sortie amélioré :
#include <stdio.h>
#include <math.h>
// Fonction pour calculer le déterminant
float determinant(float a1, float b1, float a2, float b2) {
return a1 * b2 - a2 * b1;
}
int main() {
float a1, b1, c1; // Coefficients pour la première équation
float a2, b2, c2; // Coefficients pour la deuxième équation
float det, detX, detY;
float x, y;
float EPSILON = 1e-6; // Petite valeur pour la comparaison des nombres à virgule flottante
// Demande et lecture des coefficients pour la première équation
printf("Solveur d'équations linéaires\n");
printf("Entrez les coefficients de la première équation (ax + by = c) :\n");
printf("a1 : ");
scanf("%f", &a1);
printf("b1 : ");
scanf("%f", &b1);
printf("c1 : ");
scanf("%f", &c1);
// Demande et lecture des coefficients pour la deuxième équation
printf("Entrez les coefficients de la deuxième équation (ax + by = c) :\n");
printf("a2 : ");
scanf("%f", &a2);
printf("b2 : ");
scanf("%f", &b2);
printf("c2 : ");
scanf("%f", &c2);
// Affichage des équations d'entrée
printf("\nÉquations d'entrée :\n");
printf("Équation 1 : %.2fx + %.2fy = %.2f\n", a1, b1, c1);
printf("Équation 2 : %.2fx + %.2fy = %.2f\n", a2, b2, c2);
// Calcul du déterminant principal
det = determinant(a1, b1, a2, b2);
// Détermination et affichage du type de solution
if (fabs(det) > EPSILON) {
// Cas d'une solution unique
detX = determinant(c1, b1, c2, b2);
detY = determinant(a1, c1, a2, c2);
x = detX / det;
y = detY / det;
printf("\n--- Type de solution : Solution unique ---\n");
printf("Solution :\n");
printf("x = %.2f\n", x);
printf("y = %.2f\n", y);
} else {
// Vérification de l'absence de solution ou de l'existence d'une infinité de solutions
detX = determinant(c1, b1, c2, b2);
detY = determinant(a1, c1, a2, c2);
if (fabs(detX) > EPSILON || fabs(detY) > EPSILON) {
printf("\n--- Type de solution : Aucune solution ---\n");
printf("Le système d'équations n'a pas de solution.\n");
printf("Les équations sont inconsistantes et parallèles.\n");
} else {
printf("\n--- Type de solution : Infinité de solutions ---\n");
printf("Le système d'équations a une infinité de solutions.\n");
printf("Les équations sont équivalentes et dépendantes.\n");
}
}
return 0;
}
Compilez et exécutez le programme :
gcc linear_equations.c -o linear_equations
./linear_equations
Exemple de sortie pour une solution unique :
Solveur d'équations linéaires
Entrez les coefficients de la première équation (ax + by = c) :
a1 : 2
b1 : 3
c1 : 8
Entrez les coefficients de la deuxième équation (ax + by = c) :
a2 : 1
b2 : 4
c2 : 10
Équations d'entrée :
Équation 1 : 2.00x + 3.00y = 8.00
Équation 2 : 1.00x + 4.00y = 10.00
--- Type de solution : Solution unique ---
Solution :
x = 2.00
y = 2.00
Exemple de sortie pour l'absence de solution :
Solveur d'équations linéaires
Entrez les coefficients de la première équation (ax + by = c) :
a1 : 2
b1 : 3
c1 : 8
Entrez les coefficients de la deuxième équation (ax + by = c) :
a2 : 4
b2 : 6
c2 : 16
Équations d'entrée :
Équation 1 : 2.00x + 3.00y = 8.00
Équation 2 : 4.00x + 6.00y = 16.00
--- Type de solution : Aucune solution ---
Le système d'équations n'a pas de solution.
Les équations sont inconsistantes et parallèles.
Résumé
Dans ce laboratoire (lab), vous avez d'abord appris à lire les coefficients d'un système de deux équations linéaires en programmation C. Vous avez créé un programme qui invite l'utilisateur à saisir les coefficients (a, b, c) des deux équations, puis affiche les équations pour vérifier l'entrée. Ensuite, vous avez appris à résoudre le système d'équations en utilisant la méthode du déterminant et la règle de Cramer pour calculer les solutions.
Le programme étend la fonctionnalité précédente pour calculer les solutions du système d'équations. Il déterminera le déterminant de la matrice des coefficients et utilisera la règle de Cramer pour trouver les valeurs des variables x et y qui satisfont le système.



