Ein System aus zwei linearen Gleichungen in C lösen

CCBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab erfahren Sie, wie Sie in der C-Programmierung ein System aus zwei linearen Gleichungen lösen. Das Lab umfasst zwei Hauptschritte: das Einlesen der Koeffizienten für die beiden Gleichungen und anschließend die Berechnung der Lösungen mit der Determinantenmethode. Sie werden ein C-Programm erstellen, das es Benutzern ermöglicht, die Koeffizienten einzugeben. Das Programm wird dann die Lösungen berechnen und anzeigen oder alle Sonderfälle, die auftreten können.

Der erste Schritt besteht darin, den Benutzer aufzufordern, die Koeffizienten für die beiden linearen Gleichungen in der Standardform ax + by = c einzugeben. Das Programm wird dann die eingegebenen Koeffizienten ausgeben, um die Eingabe zu überprüfen. Im zweiten Schritt erweitern Sie das Programm, um die Lösungen mit der Cramer-Regel zu berechnen, was die Berechnung der Determinanten der Koeffizientenmatrizen umfasst. Das Programm wird die Lösungen oder alle Sonderfälle anzeigen, wie z. B. keine Lösung oder unendlich viele Lösungen.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL c(("C")) -.-> c/FunctionsGroup(["Functions"]) c(("C")) -.-> c/UserInteractionGroup(["User Interaction"]) c(("C")) -.-> c/BasicsGroup(["Basics"]) 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{{"Ein System aus zwei linearen Gleichungen in C lösen"}} c/operators -.-> lab-435197{{"Ein System aus zwei linearen Gleichungen in C lösen"}} c/math_functions -.-> lab-435197{{"Ein System aus zwei linearen Gleichungen in C lösen"}} c/user_input -.-> lab-435197{{"Ein System aus zwei linearen Gleichungen in C lösen"}} c/output -.-> lab-435197{{"Ein System aus zwei linearen Gleichungen in C lösen"}} end

Koeffizienten für zwei Gleichungen einlesen

In diesem Schritt erfahren Sie, wie Sie in der C-Programmierung die Koeffizienten für ein System aus zwei linearen Gleichungen einlesen. Wir werden ein Programm erstellen, das es Benutzern ermöglicht, die Koeffizienten für zwei Gleichungen in der Standardform ax + by = c einzugeben.

Zunächst erstellen wir eine neue C-Datei, um unseren Gleichungslöser zu implementieren:

cd ~/project
nano linear_equations.c

Fügen Sie nun den folgenden Code hinzu, um die Koeffizienten einzulesen:

#include <stdio.h>

int main() {
    float a1, b1, c1;  // Koeffizienten für die erste Gleichung
    float a2, b2, c2;  // Koeffizienten für die zweite Gleichung

    // Aufforderung und Einlesen der Koeffizienten für die erste Gleichung
    printf("Geben Sie die Koeffizienten für die erste Gleichung (ax + by = c) ein:\n");
    printf("a1: ");
    scanf("%f", &a1);
    printf("b1: ");
    scanf("%f", &b1);
    printf("c1: ");
    scanf("%f", &c1);

    // Aufforderung und Einlesen der Koeffizienten für die zweite Gleichung
    printf("Geben Sie die Koeffizienten für die zweite Gleichung (ax + by = c) ein:\n");
    printf("a2: ");
    scanf("%f", &a2);
    printf("b2: ");
    scanf("%f", &b2);
    printf("c2: ");
    scanf("%f", &c2);

    // Ausgabe der eingegebenen Koeffizienten zur Überprüfung
    printf("\nErste Gleichung: %.2fx + %.2fy = %.2f\n", a1, b1, c1);
    printf("Zweite Gleichung: %.2fx + %.2fy = %.2f\n", a2, b2, c2);

    return 0;
}

Kompilieren und starten Sie das Programm:

gcc linear_equations.c -o linear_equations
./linear_equations

Beispielausgabe:

Geben Sie die Koeffizienten für die erste Gleichung (ax + by = c) ein:
a1: 2
b1: 3
c1: 8
Geben Sie die Koeffizienten für die zweite Gleichung (ax + by = c) ein:
a2: 1
b2: 4
c2: 10

Erste Gleichung: 2.00x + 3.00y = 8.00
Zweite Gleichung: 1.00x + 4.00y = 10.00

Lösungen mit Determinanten berechnen

In diesem Schritt erfahren Sie, wie Sie ein System aus zwei linearen Gleichungen mit der Determinantenmethode lösen. Wir erweitern das vorherige Programm, um die Lösungen mit der Cramer-Regel zu berechnen.

Öffnen Sie die vorhandene Datei und ändern Sie den Code:

cd ~/project
nano linear_equations.c

Aktualisieren Sie den Code mit der Methode zur Determinantenberechnung:

#include <stdio.h>

// Funktion zur Berechnung der Determinante
float determinant(float a1, float b1, float a2, float b2) {
    return a1 * b2 - a2 * b1;
}

int main() {
    float a1, b1, c1;  // Koeffizienten für die erste Gleichung
    float a2, b2, c2;  // Koeffizienten für die zweite Gleichung
    float det, detX, detY;
    float x, y;

    // Aufforderung und Einlesen der Koeffizienten für die erste Gleichung
    printf("Geben Sie die Koeffizienten für die erste Gleichung (ax + by = c) ein:\n");
    printf("a1: ");
    scanf("%f", &a1);
    printf("b1: ");
    scanf("%f", &b1);
    printf("c1: ");
    scanf("%f", &c1);

    // Aufforderung und Einlesen der Koeffizienten für die zweite Gleichung
    printf("Geben Sie die Koeffizienten für die zweite Gleichung (ax + by = c) ein:\n");
    printf("a2: ");
    scanf("%f", &a2);
    printf("b2: ");
    scanf("%f", &b2);
    printf("c2: ");
    scanf("%f", &c2);

    // Berechnung der Hauptdeterminante
    det = determinant(a1, b1, a2, b2);

    // Prüfung, ob das System eine eindeutige Lösung hat
    if (det!= 0) {
        // Berechnung der Determinanten für x und y
        detX = determinant(c1, b1, c2, b2);
        detY = determinant(a1, c1, a2, c2);

        // Berechnung der Lösungen
        x = detX / det;
        y = detY / det;

        printf("\nLösung:\n");
        printf("x = %.2f\n", x);
        printf("y = %.2f\n", y);
    } else {
        // Prüfung, ob das System keine Lösung oder unendlich viele Lösungen hat
        if (determinant(c1, b1, c2, b2)!= 0 || determinant(a1, c1, a2, c2)!= 0) {
            printf("\nEs existiert keine Lösung.\n");
        } else {
            printf("\nEs existieren unendlich viele Lösungen.\n");
        }
    }

    return 0;
}

Kompilieren und starten Sie das Programm:

gcc linear_equations.c -o linear_equations
./linear_equations

Beispielausgabe für eine eindeutige Lösung:

Geben Sie die Koeffizienten für die erste Gleichung (ax + by = c) ein:
a1: 2
b1: 3
c1: 8
Geben Sie die Koeffizienten für die zweite Gleichung (ax + by = c) ein:
a2: 1
b2: 4
c2: 10

Lösung:
x = 2.00
y = 2.00

Beispielausgabe für keine Lösung:

Geben Sie die Koeffizienten für die erste Gleichung (ax + by = c) ein:
a1: 2
b1: 3
c1: 8
Geben Sie die Koeffizienten für die zweite Gleichung (ax + by = c) ein:
a2: 4
b2: 6
c2: 16

Es existiert keine Lösung.

Ausgabe von Lösungen oder Sonderfällen

In diesem letzten Schritt verbessern Sie das Programm, um detailliertere Ausgaben für verschiedene Arten von Lösungen in einem System aus zwei linearen Gleichungen zu liefern.

Öffnen Sie die vorhandene Datei und machen Sie die letzten Änderungen:

cd ~/project
nano linear_equations.c

Aktualisieren Sie den Code mit einer verbesserten Ausgabeformatierung:

#include <stdio.h>
#include <math.h>

// Funktion zur Berechnung der Determinante
float determinant(float a1, float b1, float a2, float b2) {
    return a1 * b2 - a2 * b1;
}

int main() {
    float a1, b1, c1;  // Koeffizienten für die erste Gleichung
    float a2, b2, c2;  // Koeffizienten für die zweite Gleichung
    float det, detX, detY;
    float x, y;
    float EPSILON = 1e-6;  // Kleiner Wert für Gleitkommavergleiche

    // Aufforderung und Einlesen der Koeffizienten für die erste Gleichung
    printf("Lineare Gleichungslöser\n");
    printf("Geben Sie die Koeffizienten für die erste Gleichung (ax + by = c) ein:\n");
    printf("a1: ");
    scanf("%f", &a1);
    printf("b1: ");
    scanf("%f", &b1);
    printf("c1: ");
    scanf("%f", &c1);

    // Aufforderung und Einlesen der Koeffizienten für die zweite Gleichung
    printf("Geben Sie die Koeffizienten für die zweite Gleichung (ax + by = c) ein:\n");
    printf("a2: ");
    scanf("%f", &a2);
    printf("b2: ");
    scanf("%f", &b2);
    printf("c2: ");
    scanf("%f", &c2);

    // Ausgabe der eingegebenen Gleichungen
    printf("\nEingegebene Gleichungen:\n");
    printf("Gleichung 1: %.2fx + %.2fy = %.2f\n", a1, b1, c1);
    printf("Gleichung 2: %.2fx + %.2fy = %.2f\n", a2, b2, c2);

    // Berechnung der Hauptdeterminante
    det = determinant(a1, b1, a2, b2);

    // Bestimmung und Ausgabe des Lösungstyps
    if (fabs(det) > EPSILON) {
        // Fall einer eindeutigen Lösung
        detX = determinant(c1, b1, c2, b2);
        detY = determinant(a1, c1, a2, c2);

        x = detX / det;
        y = detY / det;

        printf("\n--- Lösungstyp: Eindeutige Lösung ---\n");
        printf("Lösung:\n");
        printf("x = %.2f\n", x);
        printf("y = %.2f\n", y);
    } else {
        // Prüfung auf keine Lösung oder unendlich viele Lösungen
        detX = determinant(c1, b1, c2, b2);
        detY = determinant(a1, c1, a2, c2);

        if (fabs(detX) > EPSILON || fabs(detY) > EPSILON) {
            printf("\n--- Lösungstyp: Keine Lösung ---\n");
            printf("Das Gleichungssystem hat keine Lösung.\n");
            printf("Die Gleichungen sind inkonsistent und parallel.\n");
        } else {
            printf("\n--- Lösungstyp: Unendlich viele Lösungen ---\n");
            printf("Das Gleichungssystem hat unendlich viele Lösungen.\n");
            printf("Die Gleichungen sind äquivalent und abhängig.\n");
        }
    }

    return 0;
}

Kompilieren und starten Sie das Programm:

gcc linear_equations.c -o linear_equations
./linear_equations

Beispielausgabe für eine eindeutige Lösung:

Lineare Gleichungslöser
Geben Sie die Koeffizienten für die erste Gleichung (ax + by = c) ein:
a1: 2
b1: 3
c1: 8
Geben Sie die Koeffizienten für die zweite Gleichung (ax + by = c) ein:
a2: 1
b2: 4
c2: 10

Eingegebene Gleichungen:
Gleichung 1: 2.00x + 3.00y = 8.00
Gleichung 2: 1.00x + 4.00y = 10.00

--- Lösungstyp: Eindeutige Lösung ---
Lösung:
x = 2.00
y = 2.00

Beispielausgabe für keine Lösung:

Lineare Gleichungslöser
Geben Sie die Koeffizienten für die erste Gleichung (ax + by = c) ein:
a1: 2
b1: 3
c1: 8
Geben Sie die Koeffizienten für die zweite Gleichung (ax + by = c) ein:
a2: 4
b2: 6
c2: 16

Eingegebene Gleichungen:
Gleichung 1: 2.00x + 3.00y = 8.00
Gleichung 2: 4.00x + 6.00y = 16.00

--- Lösungstyp: Keine Lösung ---
Das Gleichungssystem hat keine Lösung.
Die Gleichungen sind inkonsistent und parallel.

Zusammenfassung

In diesem Lab haben Sie zunächst gelernt, wie Sie in der C-Programmierung die Koeffizienten für ein System aus zwei linearen Gleichungen einlesen. Sie haben ein Programm erstellt, das den Benutzer auffordert, die Koeffizienten (a, b, c) für die beiden Gleichungen einzugeben und dann die Gleichungen ausgibt, um die Eingabe zu überprüfen. Anschließend werden Sie lernen, wie Sie das Gleichungssystem mit der Determinantenmethode und der Cramer-Regel lösen, um die Lösungen zu berechnen.

Das Programm erweitert die vorherige Funktionalität, um die Lösungen für das Gleichungssystem zu berechnen. Es wird die Determinante der Koeffizientenmatrix bestimmen und die Cramer-Regel verwenden, um die Werte der Variablen x und y zu finden, die das System erfüllen.