Example #1
0
        public Lagrange(IReadOnlyList <KeyValuePair <double, double> > valoresParam)
        {
            valores     = valoresParam;
            _polinomios = new List <Polinomio>();
            for (var i = 0; i < valores.Count; i++)
            {
                var primerPaso  = new PolinomioPrimerPaso();
                var segundoPaso = new PolinomioSegundoPaso();

                var    pivot       = valores[i].Key;
                double denominador = 1;
                for (var j = 0; j < valores.Count; j++)
                {
                    var pivotSegundo = valores[j].Key;
                    if (j == i)
                    {
                        continue;
                    }

                    var xMenosF = new List <double> {
                        -pivotSegundo, 1
                    };
                    primerPaso.NumeradorString   += "(X - " + pivotSegundo + ") ";
                    primerPaso.DenominadorString += "(" + pivot + " - " + pivotSegundo + ") ";
                    segundoPaso.Numerador         = MultiplicarPolinomios(segundoPaso.Numerador, xMenosF);
                    denominador *= pivot - pivotSegundo;
                }

                segundoPaso.Numerador = DistributivaDivision(segundoPaso.Numerador, denominador);

                _polinomios.Add(new Polinomio(primerPaso, segundoPaso));
            }
        }
Example #2
0
 public Polinomio(PolinomioPrimerPaso primerPaso, PolinomioSegundoPaso segundoPaso)
 {
     PrimerPaso  = primerPaso;
     SegundoPaso = segundoPaso;
 }