//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; } }