public async void GeneratePlot(PlotInfo plotInfo)
        {
            DataContext = null;
            Series1     = new ChartValues <ObservablePoint>();
            DataContext = this;

            Cursor = Cursors.Wait;
            int iterations = plotInfo.SeriesIn.Count;

            for (int i = 0; i < iterations; i++)
            {
                Series1.Add(plotInfo.SeriesIn.Dequeue());
                await Task.Delay(200);
            }

            Cursor = Cursors.Arrow;
        }
        public PlotInfo Start(FunctionDelegate functionDelegate)
        {
            FunctionDelegate myFunction = functionDelegate;

            trueMin = myFunction(values.ToArray(), dim);

            double[] bestPosition = Solve(myFunction);
            double   z            = myFunction(bestPosition, dim);
            double   error        = Error(bestPosition, myFunction);

            PlotInfo plotInfo = new PlotInfo
            {
                SeriesIn    = pointsToPlot,
                Error       = error,
                Val         = z,
                TrueMin     = trueMin,
                BestPostion = bestPosition
            };

            // ShowDetails(bestPosition, trueMin, z, error);

            return(plotInfo);
        }