internal List <List <double> > CalculateResults(double[] argumentsX, double[] argumentsY, Function function)
        {
            List <List <double> > output3D = new List <List <double> >();

            output3D.Add(new List <double>()); // x
            output3D.Add(new List <double>()); // y
            output3D.Add(new List <double>()); // z

            double[]   localArgs = new double[2];
            Expression exp;

            for (int i = 0; i < argumentsX.Length; i++)
            {
                localArgs[0] = argumentsX[i];
                for (int j = 0; j < argumentsY.Length; j++)
                {
                    localArgs[1] = argumentsY[j];
                    exp          = ModelingClass.BuildNewExpr(localArgs, function);// строим выражения для функции

                    output3D[0].Add(argumentsX[i]);
                    output3D[1].Add(argumentsY[j]);
                    output3D[2].Add(exp.calculate());
                }
            }
            return(output3D);
        }
 internal double [] CalculateResults(double[] arguments, Function function)
 {
     double[] result = new double[arguments.Length];
     for (int i = 0; i < arguments.Length; i++)
     {
         Expression expr = ModelingClass.BuildNewExpr(new double[] { arguments[i] }, function);// строим выражения для функции
         result[i] = Math.Round(expr.calculate(), 6);
     }
     return(result);
 }