Résoudre un système de deux équations linéaires en C

CCBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

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.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL c(("C")) -.-> c/BasicsGroup(["Basics"]) c(("C")) -.-> c/FunctionsGroup(["Functions"]) c(("C")) -.-> c/UserInteractionGroup(["User Interaction"]) c/BasicsGroup -.-> c/variables("Variables") c/BasicsGroup -.-> c/operators("Operators") c/FunctionsGroup -.-> c/math_functions("Math Functions") c/UserInteractionGroup -.-> c/user_input("User Input") c/UserInteractionGroup -.-> c/output("Output") subgraph Lab Skills c/variables -.-> lab-435197{{"Résoudre un système de deux équations linéaires en C"}} c/operators -.-> lab-435197{{"Résoudre un système de deux équations linéaires en C"}} c/math_functions -.-> lab-435197{{"Résoudre un système de deux équations linéaires en C"}} c/user_input -.-> lab-435197{{"Résoudre un système de deux équations linéaires en C"}} c/output -.-> lab-435197{{"Résoudre un système de deux équations linéaires en C"}} end

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.