예제 #1
0
파일: SielSolver.cs 프로젝트: natoszme/siel
        public void resolver(List <double> vectorInicial, List <List <double> > matrizCoeficientes, int cantidadEcuaciones, List <double> terminosIndependientes)
        {
            PasoDeResolucion paso = new PasoDeResolucion();

            paso.setearValoresDeIncognitas(vectorInicial);

            List <double> vectorCalculado = resolverSegunEstrategia(matrizCoeficientes, cantidadEcuaciones, terminosIndependientes, vectorInicial);

            //Cargo al paso de resolucion el resultado del criterio de paro para esa iteracion
            criteriosDeParo.ForEach(criterio => paso.cargarCriterio(criterio.hayQueSeguir(vectorInicial, vectorCalculado)));
            pasos.Add(paso);
            if (pasos.Count >= 200)
            {
                Resultados formResultados = new Resultados(pasos);
                formResultados.ShowDialog();
                return;
            }
            if (criteriosDeParo.Any(criterio => criterio.hayQueSeguir(vectorInicial, vectorCalculado)))
            {
                resolver(vectorCalculado, matrizCoeficientes, cantidadEcuaciones, terminosIndependientes);
            }
            else
            {
                /*PasoDeResolucion pasoFinal = new PasoDeResolucion();
                 * pasoFinal.setearValoresDeIncognitas(vectorCalculado);
                 * criteriosDeParo.ForEach(criterio => pasoFinal.cargarCriterioFinal());
                 *
                 * pasos.Add(pasoFinal); */

                Resultados formResultados = new Resultados(pasos);
                formResultados.ShowDialog();
            }
        }