public MyFunction(double k, double m, LFI.ElementaryFunction elemFunction, LFI.DerivativeElementaryFunction dElemFunction)
 {
     K             = k;
     M             = m;
     ElemFunction  = elemFunction;
     DElemFunction = dElemFunction;
 }
        private void comboBox1_SelectionChangeCommitted(object sender, EventArgs e)
        {
            ComboBox comboBox = (ComboBox)sender;

            if (comboBox.SelectedIndex == 0)
            {
                ElemFunction1     = QuadraticFunctionMy;
                DerivateFunction1 = DerivateQuadFuncMy;
                X1 = ListOfExtremePointsQuadMy;
            }
            else if (comboBox.SelectedIndex == 1)
            {
                ElemFunction1     = PowMy;
                DerivateFunction1 = DerivativePowMy;
                X1 = ListOfExtremePointsPowMy;
            }
            else if (comboBox.SelectedIndex == 2)
            {
                ElemFunction1     = Pow;
                DerivateFunction1 = DerivativePow;
                X1 = ListOfExtremePointsPow;
            }
            else if (comboBox.SelectedIndex == 3)
            {
                ElemFunction1     = Cos;
                DerivateFunction1 = DerivativeCos;
                X1 = ListOfExtremePointsCos;
            }
        }
 //---------------------------------------------------------------------------------------------------------//
 public AgregateOperation(List <double> X11, List <double> KUp11, List <double> KDown11, List <double> MUp11, List <double> MDown11,
                          List <double> X22, LFI.ElementaryFunction Func1, LFI.ElementaryFunction Func2, LFI.DerivativeElementaryFunction DFunc2)
 {
     X1             = X11;
     KUp1           = KUp11;
     KDown1         = KDown11;
     MUp1           = MUp11;
     MDown1         = MDown11;
     X2             = X22;
     ElemFunction1  = Func1;
     ElemFunction2  = Func2;
     DElemFunction2 = DFunc2;
 }
 public void Sub()
 {
     Function = SubFunction;
     ListUnion();
     TransformationOfLists();
     for (int i = 0; i < X.Count - 1; i++)
     {
         KUp.Add(KUp11[i] - KDown22[i]);
         KDown.Add(KDown11[i] - KUp22[i]);
         MUp.Add(MUp11[i] - MDown22[i]);
         MDown.Add(MDown11[i] - MUp22[i]);
     }
     CreatedFLists();
 }
 // private double K11;
 // private double K22;
 // private double M11;
 // private double M22;
 //------------------------------------------------------------------------------------------------------------//
 public ArithmeticOperation(List <double> X11, List <double> KUp11, List <double> KDown11, List <double> MUp11, List <double> MDown11,
                            List <double> X22, List <double> KUp22, List <double> KDown22, List <double> MUp22, List <double> MDown22, LFI.ElementaryFunction Func1, LFI.ElementaryFunction Func2)
 {
     X1            = X11;
     KUp1          = KUp11;
     KDown1        = KDown11;
     MUp1          = MUp11;
     MDown1        = MDown11;
     X2            = X22;
     KUp2          = KUp22;
     KDown2        = KDown22;
     MUp2          = MUp22;
     MDown2        = MDown22;
     ElemFunction1 = Func1;
     ElemFunction2 = Func2;
 }
        public void Mul()//DataGridView dt, DataGridView dt1, DataGridView dt2, DataGridView dt3,DataGridView dt4)
        {
            Function = MulFunction;
            ListUnion();
            TransformationOfLists();
            CreatedListsForMultiple();
            List <double> X1 = new List <double>();
            List <double> X2 = new List <double>();

            for (int k = 0; k < X.Count; k++)
            {
                X1.Add(X[k]);
                X2.Add(X[k]);
            }

            List <double> KD = new List <double>();
            List <double> KU = new List <double>();
            List <double> MD = new List <double>();
            List <double> MU = new List <double>();

            //foreach (var V in X)
            //{
            //    dt4.Rows.Add(V.ToString());
            //}
            for (int i = 0; i < X.Count - 1; i++)
            {
                if (Math.Round(KoefLFIDown[i][0], 6) != 0 && Math.Round(KoefLFIDown[i][1], 6) != 0)
                {
                    K1 = KoefLFIDown[i][0]; K2 = KoefLFIDown[i][1]; M1 = KoefLFIDown[i][2]; M2 = KoefLFIDown[i][3];
                    List <double> ListD = new List <double>()
                    {
                        ExtremePointForParabola()
                    };
                    LFI LinFuncIntD = new LFI(1, X[i], X[i + 1], ListD, ParabolaFunction, DerivativeParabolaFunction);
                    LinFuncIntD.BuildLFI();
                    //LinFuncIntD.PaintLFI(chart);
                    for (int j = 1; j < LinFuncIntD.X.Count - 1; j++)
                    {
                        X1.Add(Math.Round(LinFuncIntD.X[j], 10));
                    }
                    for (int j = 0; j < LinFuncIntD.KDown.Count; j++)
                    {
                        KD.Add(LinFuncIntD.KDown[j]);
                        MD.Add(LinFuncIntD.MDown[j]);
                    }
                }
                else
                {
                    K1 = KoefLFIDown[i][0]; K2 = KoefLFIDown[i][1]; M1 = KoefLFIDown[i][2]; M2 = KoefLFIDown[i][3];
                    KD.Add(CreateMulK());
                    MD.Add(CreateMulM());
                }
                //---------------------------------------------------------------------------------------------------------//
                if (Math.Round(KoefLFIUp[i][0], 6) != 0 && Math.Round(KoefLFIUp[i][1], 6) != 0)
                {
                    K1 = KoefLFIUp[i][0]; K2 = KoefLFIUp[i][1]; M1 = KoefLFIUp[i][2]; M2 = KoefLFIUp[i][3];
                    List <double> ListU = new List <double>()
                    {
                        ExtremePointForParabola()
                    };
                    LFI LinFuncIntU = new LFI(1, X[i], X[i + 1], ListU, ParabolaFunction, DerivativeParabolaFunction);
                    LinFuncIntU.BuildLFI();
                    for (int j = 1; j < LinFuncIntU.X.Count - 1; j++)
                    {
                        X2.Add(Math.Round(LinFuncIntU.X[j], 10));
                    }
                    for (int j = 0; j < LinFuncIntU.KUp.Count; j++)
                    {
                        KU.Add(LinFuncIntU.KUp[j]);
                        MU.Add(LinFuncIntU.MUp[j]);
                    }
                }
                else
                {
                    K1 = KoefLFIUp[i][0]; K2 = KoefLFIUp[i][1]; M1 = KoefLFIUp[i][2]; M2 = KoefLFIUp[i][3];
                    KU.Add(CreateMulK());
                    MU.Add(CreateMulM());
                }
            }

            X1.Sort();
            X2.Sort();


            X.Clear();
            //List<double> NewX = new List<double>();
            X = X1.Union(X2).ToList();
            //X = X.Distinct().ToList();
            X.Sort();
            //for (int k = 0; k < X1.Count; k++)
            //{
            //    dt.Rows.Add(X1[k].ToString());
            //}

            //for (int k = 0; k < X2.Count; k++)
            //{
            //    dt1.Rows.Add(X2[k].ToString());
            //}
            //for (int k = 0; k < X.Count; k++)
            //{
            //    dt2.Rows.Add(X[k].ToString());
            //}

            for (int i = 0; i < X.Count - 1; i++)
            {
                for (int j1 = 0; j1 < X1.Count - 1; j1++)
                {
                    if (X[i] >= X1[j1] && X[i + 1] <= X1[j1 + 1])
                    {
                        KDown.Add(KD[j1]);
                        MDown.Add(MD[j1]);
                    }
                }
                for (int j2 = 0; j2 < X2.Count - 1; j2++)
                {
                    if (X[i] >= X2[j2] && X[i + 1] <= X2[j2 + 1])
                    {
                        KUp.Add(KU[j2]);
                        MUp.Add(MU[j2]);
                    }
                }
            }
            CreatedFLists();
            //for (int k = 0; k < KU.Count; k++)
            //{
            //    dt3.Rows.Add(KU[k].ToString(), MU[k].ToString());//,KDown[k].ToString(), MDown[k].ToString());
            //}
        }