Ejemplo n.º 1
0
        public void ResetCalculationState()
        {
            const double Increase   = 0.5;
            const int    Iterations = 10;

            var criterion = new DivergenceStopCriterion <double>(Increase, Iterations);

            // Add residuals. Blow it up instantly
            var status = criterion.DetermineStatus(
                1,
                Vector <double> .Build.Dense(new[] { 1.0 }),
                Vector <double> .Build.Dense(new[] { 1.0 }),
                Vector <double> .Build.Dense(new[] { double.NaN }));

            Assert.AreEqual(IterationStatus.Diverged, status, "Status check fail.");

            // Reset the state
            criterion.Reset();

            Assert.AreEqual(Increase, criterion.MaximumRelativeIncrease, "Incorrect maximum");
            Assert.AreEqual(Iterations, criterion.MinimumNumberOfIterations, "Incorrect iteration count");
            Assert.AreEqual(IterationStatus.Continue, criterion.Status, "Status check fail.");
        }
Ejemplo n.º 2
0
        public void ResetCalculationState()
        {
            const float Increase   = 0.5f;
            const int   Iterations = 10;

            var criterion = new DivergenceStopCriterion <Complex32>(Increase, Iterations);

            // Add residuals. Blow it up instantly
            var status = criterion.DetermineStatus(
                1,
                new DenseVector(new[] { new Complex32(1.0f, 0) }),
                new DenseVector(new[] { new Complex32(1.0f, 0) }),
                new DenseVector(new[] { new Complex32(float.NaN, 0) }));

            Assert.AreEqual(IterationStatus.Diverged, status, "Status check fail.");

            // Reset the state
            criterion.Reset();

            Assert.AreEqual(Increase, criterion.MaximumRelativeIncrease, "Incorrect maximum");
            Assert.AreEqual(Iterations, criterion.MinimumNumberOfIterations, "Incorrect iteration count");
            Assert.AreEqual(IterationStatus.Continue, criterion.Status, "Status check fail.");
        }
        public void ResetCalculationState()
        {
            const double Increase = 0.5;
            const int Iterations = 10;

            var criterion = new DivergenceStopCriterion<Complex>(Increase, Iterations);

            // Add residuals. Blow it up instantly
            var status = criterion.DetermineStatus(
                1,
                new DenseVector(new[] { new Complex(1.0, 0) }),
                new DenseVector(new[] { new Complex(1.0, 0) }),
                new DenseVector(new[] { new Complex(double.NaN, 0) }));

            Assert.AreEqual(IterationStatus.Diverged, status, "Status check fail.");

            // Reset the state
            criterion.Reset();

            Assert.AreEqual(Increase, criterion.MaximumRelativeIncrease, "Incorrect maximum");
            Assert.AreEqual(Iterations, criterion.MinimumNumberOfIterations, "Incorrect iteration count");
            Assert.AreEqual(IterationStatus.Continue, criterion.Status, "Status check fail.");
        }