public RungeKutta
     (DifEquationSystem equation, Dictionary <string, FloatingPoint> initialCondition, double[] section, int divisions)
 {
     Equation         = equation;
     InitialСondition = initialCondition;
     Section          = section;
     Divisions        = divisions;
     Step             = CalculateStep();
 }
        static void Main(string[] args)
        {
            var x  = Expr.Variable("x");
            var y1 = Expr.Variable("y1");
            var y2 = Expr.Variable("y2");

            //Example 1
            Dictionary <string, FloatingPoint> initialVal1 = new Dictionary <string, FloatingPoint>()
            {
                { "x", 0 },
                { "y1", 3 },
                { "y2", 0 }
            };

            Expr func1     = (-2 * y1 + 4 * y2);
            Expr func2     = (-y1 + 3 * y2);
            var  functions = new List <Expr>();

            functions.Add(func1);
            functions.Add(func2);

            DifEquationSystem equation1 =
                new DifEquationSystem(functions);

            double[] section1 = new double[] { 0, 1 };


            RungeKutta rungeKutta1 =
                new RungeKutta(equation1, initialVal1, section1, 10);

            Func <double, double> answer1 = (4 * (-x).Exp() - (2 * x).Exp()).Compile("x");
            Func <double, double> answer2 = ((-x).Exp() - (2 * x).Exp()).Compile("x");
            var answers = new List <Func <double, double> >();

            answers.Add(answer1);
            answers.Add(answer2);

            rungeKutta1.Solve();

            PrintRealAnswer(answers, initialVal1, section1, 10);

            Console.ReadKey();
        }