CALCULADORA DE ECUACIONES LINEALES

Estudiantes:

·         Leandro Cardozo Arandia
·         Danitza Benitez Paco
·         David Willy Cruz Huanca 
 ·         Leonardo Nogales Torres
·         Rider Panozo Sandoval

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