Exemple #1
0
        public void CalculateSimple()
        {
            var deviationCalculator = new DeviationCalculator();
            var suit = new List <double> {
                6, 2, 3, 1
            };

            double expectedValue = 1.8708;

            Assert.AreEqual(expectedValue, Math.Round(deviationCalculator.Calculate(suit), 4));
        }
Exemple #2
0
        public void CalculateLarge()
        {
            var deviationCalculator = new DeviationCalculator();
            var suit = new List <double> {
                3, 5, 6, 7, 9, 12, 23, 86, 1, 23, 2, 5, 6, 9, 11, 21, 42, 24, 80, 93
            };

            double expectedValue = 28.2354;

            Assert.AreEqual(expectedValue, Math.Round(deviationCalculator.Calculate(suit), 4));
        }
Exemple #3
0
        public static void SolveDirectProblem()
        {
            double radius       = 2;
            int    pointsNumber = 32;

            //IDirectProblemTestData testData = new PlanarTestData();
            //IDirectProblemTestData testData = new FundamentalSolutionTestData();
            var outerCurve = new StarCurve((t) => radius);
            IDirectProblemTestData testData = new FundamentalSolutionDevidedTastData(outerCurve);
            //IDirectProblemTestData testData = new CoordinatesDeviationDoubleTestData();
            DirectProblemState  state  = new DirectProblemState(radius, pointsNumber, testData);
            DirectProblemSolver solver = new DirectProblemSolver(state);

            Printer.Append = false;
            Printer.Mode   = WriteMode.Console;
            double[] density = solver.CalculateDensity();
            Printer.WriteLine("Density :");
            Printer.Write(density);
            double[] solution = solver.BuildSolutionOn(density,
                                                       xFunc: SolutionCurveX,
                                                       yFunc: SolutionCurveY,
                                                       paramStart: 0.001,
                                                       paramEnd: Math.PI - 0.001,
                                                       solutionPointsNumber: 16);

            DeviationCalculator calculator = new DeviationCalculator();
            double deviation = calculator.MaxDeviation(
                solution,
                accurate: (double t) =>
            {
                Point x = new Point(SolutionCurveX(t), SolutionCurveY(t));
                return(testData.OnTestCurveValue(x));
            },
                paramStart: 0.001,
                paramEnd: Math.PI - 0.001);

            Printer.Append = true;
            Printer.WriteLine("Solution :");
            Printer.Write(solution);
            Printer.WriteLine($"Deviation : {deviation}");
            Console.ReadLine();
        }
 /// <summary>
 /// Initializes deviation calculator.
 /// </summary>
 private void InitDeviationCalculator()
 {
     _deviationCalculator = new DeviationCalculator();
     _deviationCalculator.DeviationCalculated += OnDeviationCalculated;
 }