Beispiel #1
0
        public void TestingDerivada()
        {
            Termino t1 = new Termino(3, 3);

            Termino t2 = new Termino(9, 2);

            t1.Derivar();

            Assert.IsTrue(t1.Equals(t2));
        }
Beispiel #2
0
        public void TestingIntegral()
        {
            Termino t1 = new Termino(3, 3);

            Termino t2 = new Termino(9, 2);

            t2.Integrar();

            Assert.IsTrue(t1.Equals(t2));
        }
Beispiel #3
0
        public void TestEquals2()
        {
            Termino t1 = new Termino(2, 2);
            Termino t2 = new Termino(3, 3);
            Termino t3 = new Termino(3, 0);

            IPolinomio p1 = new EcuacionesLib.Polinomio();
            IPolinomio p2 = new EcuacionesLib.Polinomio();
            p1.Insertar(t1);
            p1.Insertar(t2);
            p1.Insertar(t3);

            p2.Insertar(t1);
            p2.Insertar(t2);
            //p2.Insertar(t3);

            Assert.IsFalse(p1.Equals(p2));
        }
Beispiel #4
0
        public void TestTermino()
        {
            //Creo dos terminos
            Termino ter  = new Termino("X1", 5);
            Termino ter2 = new Termino("X2", 3);
            //Creo la ecuación
            Ecuacion ecu = new Ecuacion(">=", 120);

            //Agrego los terminos a la ecuación
            ecu.Add(ter);
            ecu.Add(ter2);
            //Creo un modelo
            Modelo primerModelo = new Modelo("Primer Modelo Simplex");

            //Agrego la ecuacion al modelo
            primerModelo.Add(ecu);
            ecu.MostrarEcuacion();
            Assert.AreEqual("Max", primerModelo.Objetivo);
        }
Beispiel #5
0
        public void Newton()
        {
            Termino t1 = new Termino(1, 4);
            Termino t2 = new Termino(-1, 3);
            Termino t3 = new Termino(-3, 2);
            Termino t4 = new Termino(-4, 1);
            Termino t5 = new Termino(-2, 0);

            IPolinomio p1 = new EcuacionesLib.Polinomio();
            IPolinomio p2;
            p1.Insertar(t1);
            p1.Insertar(t2);
            p1.Insertar(t3);

            p1.Insertar(t4);
            p1.Insertar(t5);
            //p2.Insertar(t3);
            p2 = (IPolinomio)p1.Clone();
            p2.Derivar();

            Assert.IsTrue((int)p1.Resolver(EcuacionesLib.Polinomio.Newton(2, 3, p1)) == 0);
        }
Beispiel #6
0
        public ActionResult Editar(Termino model, HttpPostedFileBase fichero)
        {
            var ter = DbContext.Termino.Find(model.idTermino);

            ter.nombre = model.nombre;
            ter.texto  = model.texto;
            ter.link   = model.link;

            if (fichero != null && fichero.ContentLength > 0)
            {
                //guardamos el fichero de la foto con nombre ter + id
                var nombreFichero = fichero.FileName;
                var extension     = nombreFichero.Substring(nombreFichero.LastIndexOf(".", StringComparison.Ordinal));
                var rutacompleta  = Server.MapPath("~/uploads/fotos") + @"\ter" + ter.idTermino + extension;
                fichero.SaveAs(rutacompleta);
                ter.foto = "~/uploads/fotos/comp" + ter.idTermino + extension;
            }

            DbContext.SaveChanges();

            return(RedirectToAction("index"));
        }
Beispiel #7
0
        public ActionResult CrearTermino(Termino model, HttpPostedFileBase fichero)
        {
            var ter = new Termino
            {
                nombre = model.nombre,
                texto  = model.texto,
                link   = model.link
            };

            DbContext.Termino.Add(ter);
            DbContext.SaveChanges();

            if (fichero != null && fichero.ContentLength > 0)
            {
                try
                {
                    //guardamos el fichero de la foto con nombre ter + id
                    var nombreFichero = fichero.FileName;
                    var extension     = nombreFichero.Substring(nombreFichero.LastIndexOf(".", StringComparison.Ordinal));
                    var rutacompleta  = Server.MapPath("~/uploads/fotos") + @"\ter" + ter.idTermino + extension;
                    fichero.SaveAs(rutacompleta);
                    ter.foto = "~/uploads/fotos/ter" + ter.idTermino + extension;
                }
                catch (Exception e)
                {
                    //si falla el anadir la foto, borramos el elemento de la base de datos y devolvemos la vista con un error
                    DbContext.Termino.Remove(ter);
                    DbContext.SaveChanges();

                    ModelState.AddModelError("UcemeError", Utilidades.ErrorManager.ErrorCodeToString(Utilidades.ErrorCodes.ErrorAddingItem) + " " + e.Message);
                    return(RedirectToAction("index", "Terminos"));
                }
            }

            DbContext.SaveChanges();

            return(RedirectToAction("index"));
        }
Beispiel #8
0
        private void CopiarAModelo(DBModelo q, Modelo m)
        {
            Ecuacion e = null;
            Termino  t = null;

            //Copio Ecuaciones
            foreach (var ec in q.Ecuaciones)
            {
                e = new Ecuacion("x", 0);
                foreach (var ti in ec.Terminos)
                {
                    t = new Termino
                    {
                        Id       = ti.Id,
                        Valor    = ti.Valor,
                        Variable = ti.Variable
                    };
                    e.Terminos.Add(t);
                }
                e.Id             = ec.Id;
                e.NroEcu         = ec.NroEcu;
                e.Operador       = ec.Operador;
                e.Preparada      = ec.Preparada;
                e.ValorDerecho   = ec.ValorDerecho;
                e.VariableBasica = ec.VariableBasica;
                m.Ecuaciones.Add(e);
                e = new Ecuacion("x", 0);
            }
            m.Id                = q.Id;
            m.Nombre            = q.Nombre;
            m.Objetivo          = q.Objetivo;
            m.FuncionAOptimizar = new Ecuacion("tmp", 0, 0)
            {
                Id             = q.FuncionAOptimizar.Id,
                NroEcu         = q.FuncionAOptimizar.NroEcu,
                Operador       = q.FuncionAOptimizar.Operador,
                Preparada      = q.FuncionAOptimizar.Preparada,
                ValorDerecho   = q.FuncionAOptimizar.ValorDerecho,
                VariableBasica = q.FuncionAOptimizar.VariableBasica
            };

            foreach (var fAOp in q.FuncionAOptimizar.Terminos)
            {
                t = new Termino
                {
                    Id       = fAOp.Id,
                    Valor    = fAOp.Valor,
                    Variable = fAOp.Variable
                };
                m.FuncionAOptimizar.Terminos.Add(t);
            }
            //m.funcionOriginal.Id = model.funcionOriginal.Id;
            m.FuncionOriginal = new Ecuacion("tmp", 0, 0)
            {
                Id             = q.FuncionOriginal.Id,
                NroEcu         = q.FuncionOriginal.NroEcu,
                Operador       = q.FuncionOriginal.Operador,
                Preparada      = q.FuncionOriginal.Preparada,
                ValorDerecho   = q.FuncionOriginal.ValorDerecho,
                VariableBasica = q.FuncionOriginal.VariableBasica
            };
            foreach (var fO in q.FuncionOriginal.Terminos)
            {
                t = new Termino
                {
                    Id       = fO.Id,
                    Valor    = fO.Valor,
                    Variable = fO.Variable
                };
                m.FuncionOriginal.Terminos.Add(t);
            }
        }
Beispiel #9
0
        public IModelo Get(string nombre)
        {
            IModelo result = new Modelo(nombre);

            using (StreamReader file = new StreamReader(path, true))
            {
                bool encontrado = false;
                var  d          = file.ReadLine();
                while (!file.EndOfStream && !encontrado)
                {
                    if (d == "Modelo")
                    {
                        result.Id     = Guid.Parse(file.ReadLine());
                        result.Nombre = file.ReadLine();
                        if (result.Nombre == nombre)
                        {
                            encontrado      = true;
                            result.Objetivo = file.ReadLine();
                            var next = file.ReadLine();
                            if (next == "FuncionOriginal")
                            {
                                result.FuncionOriginal.Id             = Guid.Parse(file.ReadLine());
                                result.FuncionOriginal.NroEcu         = int.Parse(file.ReadLine());
                                result.FuncionOriginal.Operador       = file.ReadLine();
                                result.FuncionOriginal.ValorDerecho   = decimal.Parse(file.ReadLine());
                                result.FuncionOriginal.VariableBasica = file.ReadLine();
                                next = file.ReadLine();
                                while (next == "FuncionOriginal.Terminos")
                                {
                                    var ter = new Termino();
                                    ter.Id       = Guid.Parse(file.ReadLine());
                                    ter.Valor    = decimal.Parse(file.ReadLine());
                                    ter.Variable = file.ReadLine();
                                    result.FuncionOriginal.Terminos.Add(ter);
                                    next = file.ReadLine();
                                }
                            }
                            if (next == "FuncionAOptimizar")
                            {
                                result.FuncionAOptimizar.Id             = Guid.Parse(file.ReadLine());
                                result.FuncionAOptimizar.NroEcu         = int.Parse(file.ReadLine());
                                result.FuncionAOptimizar.Operador       = file.ReadLine();
                                result.FuncionAOptimizar.ValorDerecho   = decimal.Parse(file.ReadLine());
                                result.FuncionAOptimizar.VariableBasica = file.ReadLine();
                                next = file.ReadLine();
                                while (next == "FuncionAOptimizar.Terminos")
                                {
                                    var ter = new Termino();
                                    ter.Id       = Guid.Parse(file.ReadLine());
                                    ter.Valor    = decimal.Parse(file.ReadLine());
                                    ter.Variable = file.ReadLine();
                                    result.FuncionAOptimizar.Terminos.Add(ter);
                                    next = file.ReadLine();
                                }
                            }
                            if (next == "Ecuacion")
                            {
                                while (next == "Ecuacion")
                                {
                                    var ec = new Ecuacion("T", 0, 0);
                                    ec.Id             = Guid.Parse(file.ReadLine());
                                    ec.NroEcu         = int.Parse(file.ReadLine());
                                    ec.Operador       = file.ReadLine();
                                    ec.ValorDerecho   = decimal.Parse(file.ReadLine());
                                    ec.VariableBasica = file.ReadLine();
                                    ec.Preparada      = bool.Parse(file.ReadLine());
                                    next = file.ReadLine();
                                    while (next == "Ecuacion.Terminos")
                                    {
                                        var t = new Termino();
                                        t.Id       = Guid.Parse(file.ReadLine());
                                        t.Valor    = decimal.Parse(file.ReadLine());
                                        t.Variable = file.ReadLine();
                                        ec.Add(t);
                                        next = file.ReadLine();
                                    }
                                    result.Ecuaciones.Add(ec);
                                }
                            }
                        }
                        else
                        {
                            d = file.ReadLine();
                        }
                    }
                    else
                    {
                        d = file.ReadLine();
                    }
                }
                return(result);
            }
        }
Beispiel #10
0
        ///<Summary
        ///
        /// CONTINUA LA RESOLUCION DE LA DIVISION SEGUN EL PASO EN EL QUE SE ENCUENTRE LA MISMA
        ///
        ///</Summary>
        ///
        private void ContinuarDivision(object sender, EventArgs e)
        {
            if (paso == 0)
            {
                // Dibujar el cajetin
                Pen lapiz = new Pen(Color.Red);
                lapiz.Width          = 1.5F;
                lineas.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
                lineas.DrawLine(lapiz, new Point(0, 30), new Point(0, 0));
                lineas.DrawLine(lapiz, new Point(0, 30), new Point(0 + (polinomio2.ToString().Length * 12) + 20, 30));
                lbExplicacion.Text = "Escribirmos los dos polinomios uno al lado del otro y cerramos el polinomio divisor entre líneas.";
                lineas.DrawString(polinomio2.ToString(), new Font("Dejavu Sans", 16), new SolidBrush(Color.Orange), new Point(10, 0));
                // Escribir el polinomio a ser dividido en el RichTextBox y añadir los intervalos de color azul a la lista
                intervalozaul.Add(0);
                desarrollo.Text = polinomio1.ToString() + "\n";

                /*
                 * // Eliminar los espacios en blanco
                 * string lectura = desarrollo.Text;
                 * lectura = lectura.Substring(2);
                 * desarrollo.Text = lectura;
                 */
                intervalozaul.Add(desarrollo.Text.Length);

                // Crear el RichTextBox para el polinomio resultado
                cocientes             = new RichTextBox();
                cocientes.Location    = new Point(desarrollodivision.Location.X, desarrollo.Location.Y + 40);
                cocientes.Font        = new Font("Dejavu Sans", 16);
                cocientes.BackColor   = desarrollo.BackColor;
                cocientes.Size        = new Size(this.ClientSize.Width, 100);
                cocientes.BorderStyle = BorderStyle.None;
                Controls.Add(cocientes);
                cocientes.Visible   = true;
                cocientes.ForeColor = Color.Chartreuse;
                CambioColor();
                paso++;
            }
            else if (paso == 1)
            {
                intervalorojo.Add(0);
                intervalorojo.Add(0);
                if (resto.ObtenerTermino(0).EsDivisible(polinomio2.ObtenerTermino(0))) // Si el termino es divisible
                {
                    if (resto.Largo == polinomio1.Largo)                               // Si es la primera iteracion
                    {
                        lbExplicacion.Text = "Dividimos el primer término del polinomio a dividir entre el primer termino del polinomio divisor, y el resultado lo anotamos bajo la línea trazada anteriormente:";
                    }
                    else// Para las siguientes iteraciones
                    {
                        lbExplicacion.Text = "Dividimos el primer término del resto obtenido entre el primer termino del polinomio divisor, y el resultado lo anotamos bajo la línea trazada anteriormente:";
                    }

                    Termino cociente = resto.ObtenerTermino(0) / polinomio2.ObtenerTermino(0);
                    resultado.AñadirTermino(new Termino(cociente));
                    // Añadir el intervalo a resaltar en rojo en la lista
                    int iniciorojo = cocientes.Text.Length;
                    intervalorojo[0] = iniciorojo;
                    cocientes.Text  += cociente.ToString();
                    intervalorojo[1] = (cocientes.Text.Length - iniciorojo);
                    Resaltes(0, 0);
                    paso++;
                }
                else // Si los terminos no son divisibles, finalizar la division
                {
                    lbExplicacion.Text  = "Como el primer término del resto no es divisible por el primer término del polinomio divisor, no se puede continuar la división. Se ha obtenido el cociente y resto finales.";
                    cocientes.ForeColor = Color.Chartreuse;
                    btContinuar.Hide();
                }
            }
            else if (paso == 2)  // Para los pasos pares
            {
                CambioColor();
                this.Invalidate();
                lbExplicacion.Text = "Multiplicamos cada termino del polinomio divisor por el término obtenido anteriormente, y el resultado lo añadimos a un polinomio que anotamos debajo del polinomio a ser dividido.";
                contador           = 0; // Puesta a cero del contador que se usara para finalizar el temporizador
                // Convertir el primer termino del polinomio divisor en un polinomio para poder realizar la multiplicacion
                Polinomio aux    = new Polinomio(cocientes.Text);
                Polinomio factor = new Polinomio(new List <Termino> {
                    aux.ObtenerTermino(aux.Terminos.Count - 1)
                });
                //  Polinomio factor = new Polinomio(new List<Termino> { resultado.ObtenerTermino(resultado.Terminos.Count - 1) });
                // Obtener el polinomio a restar
                factor.EliminarCeros();
                resta = polinomio2 * factor;
                resta.EliminarCeros();
                // Escribir en pantalla con los colores y alto de caracteres adecuados
                btContinuar.Hide();
                intervalonaranja.Add(desarrollo.Text.Length);
                timer1.Start();
                int finalnegro = desarrollo.Text.Length;
                paso++;
            }
            else // Para los pasos impares
            {
                intervalorojo.Clear();
                this.Invalidate();
                lbExplicacion.Text = "Restamos los polinomios anteriores";
                intervalonaranja.Add(desarrollo.Text.Length);
                // Calcular el resto
                resto = resto - resta;
                resto.EliminarCeros();
                resto.Simplificar();
                resto.Ordenar();
                // Dibujar la linea para la resta
                for (int i = 0; i < resto.ToString().Length; i++)
                {
                    desarrollo.Text += "_";
                }
                int finalnegro = desarrollo.Text.Length - intervalonaranja[intervalonaranja.Count - 1];
                intervalonaranja.Add(finalnegro);
                int inicioazul = desarrollo.Text.Length;
                // Escribir el resto y cambiarlo a color azul
                //  resto.Ordenar();
                desarrollo.Text += "\n" + resto.ToString() + "\n";
                int finalazul = desarrollo.Text.Length;
                intervalozaul.Add(inicioazul);
                intervalozaul.Add(finalazul - inicioazul);
                CambioColor();
                // desarrollo.Text += "\n";
                paso = 1;
            }
        }
        /// <summary>
        ///
        ///  METODO AUXILIAR PARA DESPEJAR LA VARIABLE MAS A LA IZQUIERDA DE LA ULTIMA ECUACION DEL
        ///  SISTEMA
        ///
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        ///
        private void Despejar()
        {
            sistemapropio.SustituirValores(resultados);
            sistemapropio.SimplificarSistema();
            sistemapropio.PasarNumerosADerecha();
            sistemapropio.BorrarEcuacionesNulas();

            // Despejar la variable mas a la izquierda en la ultima ecuacion
            // lbExplicacion.Text = "Despejamos la variable mas a la izquierda de la última ecuacion del sistema.";
            rtbDesarrollo.Text += "\nDespejamos la variable mas a la izquierda de la última ecuacion del sistema.";

            // Si la ultima ecuacion tiene un termino a cada lado, reducir el coeficiente del termino del lado izquierdo a la unidad
            if (sistemapropio.ObtenerEcuacion(sistemapropio.CantidadDeEcuaciones - 1).CantidadDeTerminosIzquierda == 1 && sistemapropio.ObtenerEcuacion(sistemapropio.CantidadDeEcuaciones - 1).CantidadDeTerminosDerecha == 1)
            {
                Racional coeficiente = new Racional(sistemapropio.ObtenerEcuacion(sistemapropio.CantidadDeEcuaciones - 1).ObtenerTerminoIzquierda(0).Coeficiente);
                sistemapropio.ObtenerEcuacion(sistemapropio.CantidadDeEcuaciones - 1).ObtenerTerminoIzquierda(0).Coeficiente = new Racional(1, 1);
                Termino derecho = new Termino(sistemapropio.ObtenerEcuacion(sistemapropio.CantidadDeEcuaciones - 1).ObtenerTerminoDerecha(0));
                derecho = new Termino(derecho.Coeficiente / coeficiente, derecho.Variables, derecho.Exponentes);
                sistemapropio.ObtenerEcuacion(sistemapropio.CantidadDeEcuaciones - 1).BorrarLadoDerecho();
                sistemapropio.ObtenerEcuacion(sistemapropio.CantidadDeEcuaciones - 1).AñadirTerminoDerecha(derecho);
            }

            /*
             *  // Si en la ultima ecuacion del sistema hay mas de un termino en el lado derecho, reducir el coeficiente del termino del lado izquierdo a cero
             *  if (sistemapropio.ObtenerEcuacion(sistemapropio.CantidadDeEcuaciones - 1).CantidadDeTerminosIzquierda > 0)
             *  {
             *      bool variableobtenida = false;
             *      int indice = 0;
             *      while (!variableobtenida)
             *      {
             *          if (sistemapropio.ObtenerEcuacion(sistemapropio.CantidadDeEcuaciones - 1).ObtenerTerminoIzquierda(indice).Coeficiente.Numerador != 0)
             *          {
             *              variable = sistemapropio.ObtenerEcuacion(sistemapropio.CantidadDeEcuaciones - 1).ObtenerTerminoIzquierda(indice).Variables[0];
             *              variableobtenida = true;
             *          }
             *          else
             *              indice++;
             *      }
             *
             *      sistemapropio.DespejarVariableIndeterminada(variable);
             *  }
             */
            else
            {
                sistemapropio.ObtenerEcuacion(sistemapropio.CantidadDeEcuaciones - 1).Despejar();
                Racional coeficiente = new Racional(sistemapropio.ObtenerEcuacion(sistemapropio.CantidadDeEcuaciones - 1).ObtenerTerminoIzquierda(0).Coeficiente);
                sistemapropio.ObtenerEcuacion(sistemapropio.CantidadDeEcuaciones - 1).ObtenerTerminoIzquierda(0).Coeficiente = new Racional(1, 1);
                List <Termino> auxx = new List <Termino>();
                for (int i = 0; i < sistemapropio.ObtenerEcuacion(sistemapropio.CantidadDeEcuaciones - 1).CantidadDeTerminosDerecha; i++)
                {
                    auxx.Add(new Termino(sistemapropio.ObtenerEcuacion(sistemapropio.CantidadDeEcuaciones - 1).ObtenerTerminoDerecha(i).Coeficiente / coeficiente, sistemapropio.ObtenerEcuacion(sistemapropio.CantidadDeEcuaciones - 1).ObtenerTerminoDerecha(i).Variables, sistemapropio.ObtenerEcuacion(sistemapropio.CantidadDeEcuaciones - 1).ObtenerTerminoDerecha(i).Exponentes));
                }
                sistemapropio.ObtenerEcuacion(sistemapropio.CantidadDeEcuaciones - 1).BorrarLadoDerecho();
                foreach (Termino t in auxx)
                {
                    sistemapropio.ObtenerEcuacion(sistemapropio.CantidadDeEcuaciones - 1).AñadirTerminoDerecha(t);
                }
            }
            // Eliminar los ceros redundantes del lado derecho
            List <Termino> aux = new List <Termino>();

            //    int cuentaceros = 0;
            for (int i = 0; i < sistemapropio.CantidadDeEcuaciones; i++)
            {
                aux.Clear();
                if (sistemapropio.ObtenerEcuacion(i).CantidadDeTerminosDerecha > 1)
                {
                    foreach (Termino t in sistemapropio.ObtenerEcuacion(i).ObtenerLadoDerecho.Terminos)
                    {
                        if (t.Coeficiente != 0)
                        {
                            aux.Add(new Termino(t));
                        }
                    }
                    sistemapropio.ObtenerEcuacion(i).BorrarLadoDerecho();
                    foreach (Termino t in aux)
                    {
                        sistemapropio.ObtenerEcuacion(i).AñadirTerminoDerecha(t);
                    }
                }
            }
            // Si no hay terminos en el lado derecho, añadir un cero
            if (sistemapropio.ObtenerEcuacion(sistemapropio.CantidadDeEcuaciones - 1).CantidadDeTerminosDerecha == 0)
            {
                sistemapropio.ObtenerEcuacion(sistemapropio.CantidadDeEcuaciones - 1).AñadirTerminoDerecha(new Termino(0, ' ', 1));
            }

            // lbDesarrollo.Location = new Point(lbExplicacion.Location.X, lbExplicacion.Location.Y + lbExplicacion.Height + 20);
            //lbDesarrollo.Text = sistemapropio.ToString();
            rtbDesarrollo.Text          += "\n" + sistemapropio.ToString() + "\n\n";
            rtbDesarrollo.SelectionStart = rtbDesarrollo.Text.Length;
            rtbDesarrollo.ScrollToCaret();
            contador2++;
        }
Beispiel #12
0
        private void Btn_Procesar_Click(object sender, EventArgs e)
        {
            //Creo dos terminos
            Termino ter   = new Termino("X1", 2);
            Termino ter2  = new Termino("X2", 3);
            Termino ter3  = new Termino("X1", 2);
            Termino ter4  = new Termino("X2", 1);
            Termino ter5  = new Termino("X2", 4);
            Termino terz1 = new Termino("X1", 8);
            Termino terz2 = new Termino("X2", 10);
            var     Lter  = new List <Termino>
            {
                ter,
                ter2
            };
            //Creo la ecuación
            Ecuacion ecu  = new Ecuacion(">=", 600, 1);
            Ecuacion ecu2 = new Ecuacion(">=", 500, 2);
            Ecuacion ecu3 = new Ecuacion(">=", 600, 3);

            //Agrego los terminos a la ecuación
            ecu.Add(ter);
            ecu.Add(ter2);
            ecu2.Add(ter3);
            ecu2.Add(ter4);
            ecu3.Add(ter5);
            //Creo un modelo
            Modelo primerModelo = new Modelo("Primer Modelo Simplex");

            //Agrego la ecuacion al modelo
            primerModelo.Add(ecu);
            primerModelo.Add(ecu2);
            primerModelo.Add(ecu3);
            primerModelo.FuncionOriginal.Operador     = "FOrig";
            primerModelo.FuncionOriginal.ValorDerecho = 0;
            primerModelo.FuncionOriginal.NroEcu       = -1;
            primerModelo.FuncionOriginal.Terminos.Add(terz1);
            primerModelo.FuncionOriginal.Terminos.Add(terz2);
            primerModelo.MostrarModelo();
            primerModelo.Preparo();
            //
            //traigo un modelo desde SQL
            //
            //IModeloRepository CSVRepository = new CSVSimplexRepository();
            //ShowRepositoryType(CSVRepository);
            //CSVRepository.Add(primerModelo);
            //primerModelo.Nombre = "Segundo Modelo Simplex";
            //CSVRepository.Add(primerModelo);
            //primerModelo.Nombre = "Tercer Modelo Simplex";
            //CSVRepository.Add(primerModelo);
            //var output = CSVRepository.Get("Segundo Modelo Simplex");
            //CSVRepository.Remove("Segundo Modelo Simplex");
            IModeloRepository SQLRepository = new SQLSimplexRepository();

            ShowRepositoryType(SQLRepository);
            primerModelo.Nombre = "Modelo Simplex Preparado";
            SQLRepository.Add(primerModelo);
            //var x = SQLRepository.Get("ModeloModificado00");
            //SQLRepository.Remove(x.Id);
            //SQLRepository.DeleteModelo(mdel.Id);
            //primerModelo.Nombre = "Segundo Modelo Simplex";
            //SQLRepository.Add(primerModelo);
            //primerModelo.Nombre = "Tercer Modelo Simplex";
            //SQLRepository.Add(primerModelo);
            primerModelo.MostrarModelo();
            primerModelo.Proceso();
            //SQLRepository.SaveModelo(primerModelo);
            primerModelo.MostrarModelo();
        }