Resolver un sistema de dos ecuaciones lineales en C

CCBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, aprenderás cómo resolver un sistema de dos ecuaciones lineales en programación C. El laboratorio cubre dos pasos principales: leer los coeficientes de las dos ecuaciones y luego calcular las soluciones utilizando el método de determinantes. Crearás un programa en C que permita a los usuarios ingresar los coeficientes, y luego el programa calculará y mostrará las soluciones o cualquier caso especial que pueda surgir.

El primer paso consiste en solicitar al usuario que ingrese los coeficientes de las dos ecuaciones lineales en la forma estándar: ax + by = c. Luego, el programa imprimirá los coeficientes ingresados para verificar la entrada. En el segundo paso, extenderás el programa para calcular las soluciones utilizando la regla de Cramer, que implica calcular los determinantes de las matrices de coeficientes. El programa mostrará las soluciones o cualquier caso especial, como la ausencia de solución o infinitas soluciones.


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{{"Resolver un sistema de dos ecuaciones lineales en C"}} c/operators -.-> lab-435197{{"Resolver un sistema de dos ecuaciones lineales en C"}} c/math_functions -.-> lab-435197{{"Resolver un sistema de dos ecuaciones lineales en C"}} c/user_input -.-> lab-435197{{"Resolver un sistema de dos ecuaciones lineales en C"}} c/output -.-> lab-435197{{"Resolver un sistema de dos ecuaciones lineales en C"}} end

Leer coeficientes de dos ecuaciones

En este paso, aprenderás cómo leer los coeficientes de un sistema de dos ecuaciones lineales utilizando la programación en C. Crearemos un programa que permita a los usuarios ingresar los coeficientes de dos ecuaciones en la forma estándar: ax + by = c.

Primero, creemos un nuevo archivo C para implementar nuestro solucionador de ecuaciones:

cd ~/project
nano linear_equations.c

Ahora, agreguemos el siguiente código para leer los coeficientes:

#include <stdio.h>

int main() {
    float a1, b1, c1;  // Coeficientes de la primera ecuación
    float a2, b2, c2;  // Coeficientes de la segunda ecuación

    // Solicitar y leer los coeficientes de la primera ecuación
    printf("Ingrese los coeficientes de la primera ecuación (ax + by = c):\n");
    printf("a1: ");
    scanf("%f", &a1);
    printf("b1: ");
    scanf("%f", &b1);
    printf("c1: ");
    scanf("%f", &c1);

    // Solicitar y leer los coeficientes de la segunda ecuación
    printf("Ingrese los coeficientes de la segunda ecuación (ax + by = c):\n");
    printf("a2: ");
    scanf("%f", &a2);
    printf("b2: ");
    scanf("%f", &b2);
    printf("c2: ");
    scanf("%f", &c2);

    // Imprimir los coeficientes ingresados para verificar
    printf("\nPrimera Ecuación: %.2fx + %.2fy = %.2f\n", a1, b1, c1);
    printf("Segunda Ecuación: %.2fx + %.2fy = %.2f\n", a2, b2, c2);

    return 0;
}

Compila y ejecuta el programa:

gcc linear_equations.c -o linear_equations
./linear_equations

Ejemplo de salida:

Ingrese los coeficientes de la primera ecuación (ax + by = c):
a1: 2
b1: 3
c1: 8
Ingrese los coeficientes de la segunda ecuación (ax + by = c):
a2: 1
b2: 4
c2: 10

Primera Ecuación: 2.00x + 3.00y = 8.00
Segunda Ecuación: 1.00x + 4.00y = 10.00

Calcular soluciones utilizando determinantes

En este paso, aprenderás cómo resolver un sistema de dos ecuaciones lineales utilizando el método de determinantes. Extenderemos el programa anterior para calcular las soluciones utilizando la regla de Cramer.

Abre el archivo existente y modifica el código:

cd ~/project
nano linear_equations.c

Actualiza el código con el método de cálculo de determinantes:

#include <stdio.h>

// Función para calcular el determinante
float determinant(float a1, float b1, float a2, float b2) {
    return a1 * b2 - a2 * b1;
}

int main() {
    float a1, b1, c1;  // Coeficientes de la primera ecuación
    float a2, b2, c2;  // Coeficientes de la segunda ecuación
    float det, detX, detY;
    float x, y;

    // Solicitar y leer los coeficientes de la primera ecuación
    printf("Ingrese los coeficientes de la primera ecuación (ax + by = c):\n");
    printf("a1: ");
    scanf("%f", &a1);
    printf("b1: ");
    scanf("%f", &b1);
    printf("c1: ");
    scanf("%f", &c1);

    // Solicitar y leer los coeficientes de la segunda ecuación
    printf("Ingrese los coeficientes de la segunda ecuación (ax + by = c):\n");
    printf("a2: ");
    scanf("%f", &a2);
    printf("b2: ");
    scanf("%f", &b2);
    printf("c2: ");
    scanf("%f", &c2);

    // Calcular el determinante principal
    det = determinant(a1, b1, a2, b2);

    // Verificar si el sistema tiene una solución única
    if (det!= 0) {
        // Calcular los determinantes para x e y
        detX = determinant(c1, b1, c2, b2);
        detY = determinant(a1, c1, a2, c2);

        // Calcular las soluciones
        x = detX / det;
        y = detY / det;

        printf("\nSolución:\n");
        printf("x = %.2f\n", x);
        printf("y = %.2f\n", y);
    } else {
        // Verificar si el sistema no tiene solución o tiene soluciones infinitas
        if (determinant(c1, b1, c2, b2)!= 0 || determinant(a1, c1, a2, c2)!= 0) {
            printf("\nNo existe solución.\n");
        } else {
            printf("\nExisten soluciones infinitas.\n");
        }
    }

    return 0;
}

Compila y ejecuta el programa:

gcc linear_equations.c -o linear_equations
./linear_equations

Ejemplo de salida para una solución única:

Ingrese los coeficientes de la primera ecuación (ax + by = c):
a1: 2
b1: 3
c1: 8
Ingrese los coeficientes de la segunda ecuación (ax + by = c):
a2: 1
b2: 4
c2: 10

Solución:
x = 2.00
y = 2.00

Ejemplo de salida para la ausencia de solución:

Ingrese los coeficientes de la primera ecuación (ax + by = c):
a1: 2
b1: 3
c1: 8
Ingrese los coeficientes de la segunda ecuación (ax + by = c):
a2: 4
b2: 6
c2: 16

No existe solución.

Imprimir soluciones o casos especiales

En este último paso, mejorará el programa para proporcionar una salida más detallada para diferentes tipos de soluciones en un sistema de dos ecuaciones lineales.

Abra el archivo existente y realice las modificaciones finales:

cd ~/project
nano linear_equations.c

Actualice el código con un formato de salida mejorado:

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

// Función para calcular el determinante
float determinant(float a1, float b1, float a2, float b2) {
    return a1 * b2 - a2 * b1;
}

int main() {
    float a1, b1, c1;  // Coeficientes de la primera ecuación
    float a2, b2, c2;  // Coeficientes de la segunda ecuación
    float det, detX, detY;
    float x, y;
    float EPSILON = 1e-6;  // Pequeño valor para comparación de punto flotante

    // Solicitar y leer los coeficientes de la primera ecuación
    printf("Resolvedor de Ecuaciones Lineales\n");
    printf("Ingrese los coeficientes de la primera ecuación (ax + by = c):\n");
    printf("a1: ");
    scanf("%f", &a1);
    printf("b1: ");
    scanf("%f", &b1);
    printf("c1: ");
    scanf("%f", &c1);

    // Solicitar y leer los coeficientes de la segunda ecuación
    printf("Ingrese los coeficientes de la segunda ecuación (ax + by = c):\n");
    printf("a2: ");
    scanf("%f", &a2);
    printf("b2: ");
    scanf("%f", &b2);
    printf("c2: ");
    scanf("%f", &c2);

    // Imprimir las ecuaciones de entrada
    printf("\nEcuaciones de entrada:\n");
    printf("Ecuación 1: %.2fx + %.2fy = %.2f\n", a1, b1, c1);
    printf("Ecuación 2: %.2fx + %.2fy = %.2f\n", a2, b2, c2);

    // Calcular el determinante principal
    det = determinant(a1, b1, a2, b2);

    // Determinar e imprimir el tipo de solución
    if (fabs(det) > EPSILON) {
        // Caso de solución única
        detX = determinant(c1, b1, c2, b2);
        detY = determinant(a1, c1, a2, c2);

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

        printf("\n--- Tipo de solución: Solución única ---\n");
        printf("Solución:\n");
        printf("x = %.2f\n", x);
        printf("y = %.2f\n", y);
    } else {
        // Verificar si no hay solución o hay soluciones infinitas
        detX = determinant(c1, b1, c2, b2);
        detY = determinant(a1, c1, a2, c2);

        if (fabs(detX) > EPSILON || fabs(detY) > EPSILON) {
            printf("\n--- Tipo de solución: Sin solución ---\n");
            printf("El sistema de ecuaciones no tiene solución.\n");
            printf("Las ecuaciones son inconsistentes y paralelas.\n");
        } else {
            printf("\n--- Tipo de solución: Soluciones infinitas ---\n");
            printf("El sistema de ecuaciones tiene infinitas soluciones.\n");
            printf("Las ecuaciones son equivalentes y dependientes.\n");
        }
    }

    return 0;
}

Compile y ejecute el programa:

gcc linear_equations.c -o linear_equations
./linear_equations

Ejemplo de salida para una solución única:

Resolvedor de Ecuaciones Lineales
Ingrese los coeficientes de la primera ecuación (ax + by = c):
a1: 2
b1: 3
c1: 8
Ingrese los coeficientes de la segunda ecuación (ax + by = c):
a2: 1
b2: 4
c2: 10

Ecuaciones de entrada:
Ecuación 1: 2.00x + 3.00y = 8.00
Ecuación 2: 1.00x + 4.00y = 10.00

--- Tipo de solución: Solución única ---
Solución:
x = 2.00
y = 2.00

Ejemplo de salida para la ausencia de solución:

Resolvedor de Ecuaciones Lineales
Ingrese los coeficientes de la primera ecuación (ax + by = c):
a1: 2
b1: 3
c1: 8
Ingrese los coeficientes de la segunda ecuación (ax + by = c):
a2: 4
b2: 6
c2: 16

Ecuaciones de entrada:
Ecuación 1: 2.00x + 3.00y = 8.00
Ecuación 2: 4.00x + 6.00y = 16.00

--- Tipo de solución: Sin solución ---
El sistema de ecuaciones no tiene solución.
Las ecuaciones son inconsistentes y paralelas.

Resumen

En este laboratorio, primero aprendiste cómo leer los coeficientes de un sistema de dos ecuaciones lineales en programación C. Creaste un programa que solicita al usuario que ingrese los coeficientes (a, b, c) de las dos ecuaciones y luego imprime las ecuaciones para verificar la entrada. A continuación, aprenderás cómo resolver el sistema de ecuaciones utilizando el método de determinantes y la regla de Cramer para calcular las soluciones.

El programa extenderá la funcionalidad anterior para calcular las soluciones del sistema de ecuaciones. Determinará el determinante de la matriz de coeficientes y utilizará la regla de Cramer para encontrar los valores de las variables x e y que satisfacen el sistema.