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.
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.



