CALCULADORA
DE ECUACIONES LINEALES
· Leandro Cardozo Arandia
· Danitza Benitez Paco
· David Willy Cruz Huanca
INTRODUCCION:
El código esta realizado en lenguaje de C#, se utiliza el método de
Cramer para hallar las soluciones, se sustituye los términos independientes en
cada columna de coeficientes para sacar la determinante y posteriormente con
cada determinante se divide con la determinante de la matriz de coeficientes
base.
using System;
class Program
{
---Esta
parte del código se pide los números de la matriz de coeficientes y los
términos independientes:
static int[,] LeerMatriz(string nombreMatriz)
{
int
filas;
int
columnas;
do
{
Console.Clear();
Console.ForegroundColor = ConsoleColor.DarkGreen;
Console.Write($"\nIngrese
el número de filas de la {nombreMatriz}: ");
Console.ForegroundColor =
ConsoleColor.Cyan;
} while
(!int.TryParse(Console.ReadLine(), out filas) || filas <= 0);
do
{
Console.Clear();
Console.ForegroundColor = ConsoleColor.DarkGreen;
Console.Write($"\nIngrese
el número de columnas de la {nombreMatriz}:
");
Console.ForegroundColor =
ConsoleColor.Cyan;
}
while (!int.TryParse(Console.ReadLine(),outcolumnas)||columnas
<= 0);
int[,]
matriz = new int[filas, columnas];
Console.WriteLine($"\nIngrese los elementos de la {nombreMatriz}:");
for (int i = 0; i < filas; i++)
{
for
(int j = 0; j < columnas; j++)
{
do
{
Console.Clear();
Console.Write($"\n {nombreMatriz}[{i + 1},{j +
1}]: ");
} while (!int.TryParse(Console.ReadLine(), out
matriz[i, j]));
}
}
return matriz;
}
static void
Main(string[] args)
{
---Esta variable se usa para reiniciar el ejercicio sin necesidad de volver
a ejecutarlo
bool continuar = true;
Console.WriteLine("Resolución
de un sistema de ecuaciones lineales usando la regla de Cramer");
while (continuar)
{
// Se
Ingresa la matriz de coeficientes
int[,] matrizCoeficientes = LeerMatriz("matriz de coeficientes");
int[,] matrizTerminosIndependientes = LeerMatriz("matriz de términos
independientes");
int n = matrizCoeficientes.GetLength(0);
---Se calcula la determinante de la matriz de
coeficientes llamando a la función para calcular la determinante (Se encuentra
más abajo)
int determinanteA =
CalculoDeterminante(matrizCoeficientes);
---Una vez calculado la determinante de la matriz de coeficientes, en
caso de que la determinante sea nula se termina de ejecutar el código y se
muestra un mensaje indicando que la matriz tiene soluciones infinitas o no
tiene solución.
if (determinanteA == 0)
{
Console.WriteLine("El determinante de la matriz de coeficientes
es igual a cero.");
Console.WriteLine("La matriz no tiene solución o
tiene soluciones infinitas");
}
else
{
---Se cambia los términos independientes en cada
columna la columna de la matriz de coeficientes y se calcula la determinante
int[] soluciones = new int[n];
for
(int i = 0; i < n; i++)
{
int[,] matrizReemplazada = (int[,])matrizCoeficientes.Clone();
---Se calcula la determinante de la matriz cambianda entonces se divide
con la determinante de la matriz base de coeficientes con la determinante y así
se obtiene la solución.
for (int j = 0; j < n; j++)
{
matrizReemplazada[j, i]
= matrizTerminosIndependientes[j, 0];
}
int determinanteB =
CalculoDeterminante(matrizReemplazada);
soluciones[i] =
determinanteB / determinanteA;
Console.WriteLine($"La determinante de X{i + 1} divido sobre la matriz de coeficientes es:");
Console.WriteLine($"X{i + 1} = {determinanteB} / {determinanteA}");
}
Console.WriteLine("Las soluciones del sistema
son:");
for (int i = 0; i < n; i++)
{
Console.WriteLine($"X{i + 1} = {soluciones[i]}");
}
}
Console.WriteLine("\n¿Desea
volver a realizar el ejercicio? (s/n)");
string respuesta = Console.ReadLine().ToLower();
if
(respuesta != "s")
{
continuar = false;
}
}
Console.Clear();
Console.WriteLine("Gracias
por usar el programa. ¡Hasta luego!");
}
---En esta función se calcula la determinante de la matriz con el método
de cofactores
private static int CalculoDeterminante(int[,] matriz)
{
int n = matriz.GetLength(0);
---En
caso de que la matriz es 1x1, el determinante es el único elemento.
if (n == 1)
{
return matriz[0, 0];
}
int
determinante = 0;
for
(int j = 0; j < n; j++)
{
int[,]
submatriz = new int[n - 1, n - 1];
for
(int i = 1; i < n; i++)
{
for
(int k = 0, l = 0; k < n; k++)
{
if
(k != j)
{
submatriz[i - 1, l] = matriz[i, k];
l++;
}
}
}
int signo = (j % 2 == 0) ? 1 : -1;
determinante += signo * matriz[0, j] * CalculoDeterminante(submatriz);
}
return determinante;
}
}
Comentarios
Publicar un comentario