private void Button1_Click(object sender, EventArgs e) { if (textBox1.Text != "" && textBox2.Text != "") { double x1 = Convert.ToDouble(textBox1.Text); double x2 = Convert.ToDouble(textBox2.Text); Biseccion biseccion = new Biseccion(); Salida salida = new Salida(); salida = biseccion.MBiseccion(x1, x2); if (salida.Raiz.ToString() == "NaN" || salida.ErrorRelativo.ToString() == "NaN") { salida.ErrorMsje = "Mal elegidos los extremos"; } else { textBox8.Text = salida.Raiz.ToString(); textBox7.Text = salida.NroIteraciones.ToString(); textBox6.Text = Convert.ToDecimal(salida.ErrorRelativo).ToString(); } textBox5.Visible = true; textBox5.Text = salida.ErrorMsje; if (salida.ErrorMsje != null) { textBox8.Text = 0.ToString(); textBox7.Text = 0.ToString(); textBox6.Text = 0.ToString(); } } }
//Paso 3 public static Boolean Seguir_Terminar(Biseccion linea) { Boolean respuesta = true; if (linea.Abs_b_a < ErrorMinimo) { respuesta = false; } return(respuesta); }
public static void PrimeraCargarTabla(List <Biseccion> Tabla, double [] valores) { Biseccion lineaAUX = new Biseccion(); lineaAUX.A = valores[0]; lineaAUX.B = valores[1]; lineaAUX.K = 0; lineaAUX.Xk = CalcularXK(lineaAUX); lineaAUX.Fxk1 = CalcularFXK(lineaAUX); lineaAUX.Fa_fk = FA_FKX(lineaAUX); lineaAUX.Abs_b_a = CalcularABS_B_A(lineaAUX); lineaAUX.ErrorMinimo = ErrorMinimo; Tabla.Add(lineaAUX); }
//Paso 7 public static void PrimeraCargarTabla(List <Biseccion> Tabla, int i) { Biseccion lineaAUX = new Biseccion(); var val = CalcularIntervalos.GetA_B(Ecuacion); lineaAUX.A = val[0]; lineaAUX.B = val[1]; lineaAUX.K = i; lineaAUX.Xk = CalcularXK(lineaAUX); lineaAUX.Fxk1 = CalcularFXK(lineaAUX); lineaAUX.Fa_fk = FA_FKX(lineaAUX); lineaAUX.Abs_b_a = CalcularABS_B_A(lineaAUX); lineaAUX.ErrorMinimo = ErrorMinimo; Tabla.Add(lineaAUX); }
//Usuario decide ingresar los intevalos public static void CargarTabla(List <Biseccion> Tabla, int i) { Biseccion lineaAUX = new Biseccion(); var val = Verificar_Cambio(Tabla[i]); lineaAUX.A = val[0]; lineaAUX.B = val[1]; lineaAUX.K = i + 1; lineaAUX.Xk = CalcularXK(lineaAUX); lineaAUX.Fxk1 = CalcularFXK(lineaAUX); lineaAUX.Fa_fk = FA_FKX(lineaAUX); lineaAUX.Abs_b_a = CalcularABS_B_A(lineaAUX); lineaAUX.ErrorMinimo = ErrorMinimo; Tabla.Add(lineaAUX); }
//Paso 2 public static double[] Verificar_Cambio(Biseccion linea) { double[] valores = new double[2]; valores[0] = linea.A; valores[1] = linea.B; if (linea.Fa_fk.Contains('-')) { valores[1] = linea.Xk; } else if (!linea.Fa_fk.Contains('-') && linea.Fa_fk != "0") { valores[0] = linea.Xk; } return(valores); }
public void RootTest() { //Arrange Biseccion biseccion = new Biseccion() { Expresion = "sqrt(x)-cos(x)", ValStarta = 0, ValStartb = 1, Tolerance = 10e-4, Iteration = 10 }; //Act var resultado = biseccion.solucion(); //Assert Assert.AreEqual(biseccion.Root, 0.6416015625); }
public BiseccionController(string ecuacion, double x1, double x2) { this.biseccion = new Biseccion(ecuacion, x1, x2); }
public BiseccionController() { this.biseccion = new Biseccion(); }
public static List <Biseccion> biseccion(string expresion, double xl, double xu, double valorVerdadero, double errorTolerancia, bool hayValorVerdadero) { int iteracion = 0; double intervalo = 0; double xr = 0; double xrAnt = 0; double fxl = 0; double fxu = 0; double fxr = 0; double fxlfxr = 0; double errorAprox = 0; double errorVerd = 0; bool ea_menor_es = false; Biseccion biseccion = null; List <Biseccion> listaBiseccion = new List <Biseccion>(); do { iteracion++; intervalo = xu - xl; xrAnt = xr; xr = (xl + xu) / 2; fxl = evaluarFuncion(expresion, xl); fxu = evaluarFuncion(expresion, xu); fxr = evaluarFuncion(expresion, xr); fxlfxr = fxl * fxr; if (hayValorVerdadero) { errorVerd = calcularErrorVerdadero(valorVerdadero, xr); } if (iteracion > 1) { errorAprox = calcularErrorAproximacion(xr, xrAnt); if (errorAprox < errorTolerancia) { ea_menor_es = true; } } if (hayValorVerdadero) { biseccion = new Biseccion(iteracion, intervalo, xl, xu, xr, fxl, fxu, fxr, fxlfxr, errorVerd, errorAprox); } else { biseccion = new Biseccion(iteracion, intervalo, xl, xu, xr, fxl, fxu, fxr, fxlfxr, 0, errorAprox); } listaBiseccion.Add(biseccion); if (fxlfxr < 0) { xu = xr; } if (fxlfxr > 0) { xl = xr; } } while (!ea_menor_es); return(listaBiseccion); }
//paso 6 public static double CalcularABS_B_A(Biseccion linea) { return(Math.Abs(linea.B - linea.A)); }
//Paso 5 public static string FA_FKX(Biseccion linea) { Evaluador_De_Expresiones evaluador = new Evaluador_De_Expresiones(Ecuacion); return((evaluador.F(linea.A) * evaluador.F(linea.Xk)).ToString()); }
//Paso 4 public static double CalcularFXK(Biseccion linea) { Evaluador_De_Expresiones evaluador = new Evaluador_De_Expresiones(Ecuacion); return(evaluador.F(linea.Xk)); }
//Paso 1 public static double CalcularXK(Biseccion linea) { return((linea.A + linea.B) / 2); }