//GAUSS-SEIDEL
        public ResultadoEcuaciones ResolverEcuacionGaussSeidel(ParametrosGaussSeidel parametros)
        {
            ResultadoEcuaciones resultado = new ResultadoEcuaciones();

            this.ListaOriginal = parametros.ValoresIniciales;

            bool DD = this.DiagonalmenteDominante();

            bool FilasReacomodadas = false;

            if (DD == false)
            {
                FilasReacomodadas = this.AcomodarFilas();

                if (FilasReacomodadas == false)
                {
                    resultado.TipoResultado        = TipoResultado.NoDD;
                    resultado.ResultadosEcuaciones = new List <decimal>();
                    return(resultado);
                }
            }

            this.DespejarIncognitas();
            this.InicializarSolucion();
            bool soluciones = false;

            while (!(soluciones == true || (Contador >= parametros.Iteraciones)))
            {
                this.AveriguarSolucion();
                this.Contador += 1;
                soluciones     = CompararSoluciones(parametros.Tolerancia);
            }

            if (FilasReacomodadas == true)
            {
                resultado.ResultadosEcuaciones = Solucion;
                resultado.TipoResultado        = TipoResultado.DD;
            }
            else
            {
                resultado.ResultadosEcuaciones = Solucion;
                resultado.TipoResultado        = TipoResultado.Ecuacion;
            }
            return(resultado);
        }
        private void btnCalcular_Click(object sender, EventArgs e)
        {
            if (comboMetodo.Text == "GAUSS-SEIDEL" && !(txtboxIteraciones.Text != "" && txtboxTolerancia.Text != ""))
            {
                MessageBox.Show("No se colocaron correctamente los parametros", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }

            this.btnCalcular.Enabled = false;
            List <List <decimal> > Sistema  = new List <List <decimal> >();
            List <decimal>         Ecuacion = new List <decimal>();

            Sistema = new List <List <decimal> >();
            int ecuaciones = Convert.ToInt32(txtboxNumeroEcuaciones.Text);
            int incognitas = Convert.ToInt32(txtboxNumeroIncognitas.Text);

            for (int i = 0; i <= ecuaciones - 1; i++)
            {
                Ecuacion = new List <decimal>();

                for (int z = 0; z <= incognitas; z++)
                {
                    Ecuacion.Add(Convert.ToDecimal(Grilla.Rows[i].Cells[z].Value));
                }
                Sistema.Add(Ecuacion);
            }

            ResultadoEcuaciones resultado = new ResultadoEcuaciones();

            if (comboMetodo.Text == "GAUSS-JORDAN")
            {
                ParametrosEcuaciones parametros = new ParametrosEcuaciones();
                parametros.ValoresIniciales = Sistema;

                resultado = MetodosEcuaciones.ResolverEcuacionGaussJordan(parametros);
            }
            else
            {
                ParametrosGaussSeidel parametros = new ParametrosGaussSeidel();
                parametros.ValoresIniciales = Sistema;
                parametros.Iteraciones      = Convert.ToInt32(txtboxIteraciones.Text);
                parametros.Tolerancia       = Convert.ToDecimal(txtboxTolerancia.Text);
                resultado = MetodosEcuaciones.ResolverEcuacionGaussSeidel(parametros);
            }

            switch (resultado.TipoResultado)
            {
            case TipoResultado.Ecuacion:
                this.Resultado.Visible = true;
                this.Resultado.Height  = 40;
                this.Resultado.Text    = "SE ENCONTRARON LOS VALORES DE LAS INCOGNITAS CORRECTAMENTE";
                this.DibujarGrillaResultado(incognitas, resultado.ResultadosEcuaciones);
                break;

            case TipoResultado.NoDD:
                this.Resultado.Visible = true;
                this.Resultado.Height  = 80;
                this.Resultado.Text    = "EL SISTEMA INGRESADO NO ES DIAGONALMENTE DOMINANTE. INGRESE NUEVAMENTE";
                break;

            case TipoResultado.DD:
                this.Resultado.Visible = true;
                this.Resultado.Height  = 100;
                this.Resultado.Text    = "EL SISTEMA INGRESADO NO ES DIAGONALMENTE DOMINANTE. SE REACOMODARON LAS FILAS Y SE ENCONTRARON LOS VALORES DE LAS INCOGNITAS.";
                this.DibujarGrillaResultado(incognitas, resultado.ResultadosEcuaciones);
                break;

            default:
                break;
            }
        }