예제 #1
0
        public void NegCubic()
        {
            // maximizes a cubic
            Status status = MinimizeGolden.Min(x => - x * (x - 2) * (x - 1), 0, 3);

            Assert.True(status.converged);
            Assert.AreEqual(3, status.argmin, EPS);
        }
예제 #2
0
        public void SqrtAbs()
        {
            // Minimizes sqrt(|x|)
            Status status = MinimizeGolden.Min(x => Math.Sqrt(Math.Abs(x)), -3, 3);

            Assert.True(status.converged);
            Assert.AreEqual(0.0, status.argmin, EPS);
            Assert.AreEqual(0.0, status.minimum, 1e-3);
        }
예제 #3
0
        public void Parabola()
        {
            // Succeeds out on bounded minimization of -x^2
            Status status = MinimizeGolden.Min(x => - x * x, -1, 2);

            Assert.AreEqual(2, status.argmin, EPS);
            Assert.AreEqual(-4, status.minimum, EPS);
            Assert.True(status.converged);
        }
예제 #4
0
        public void NegHyperbola()
        {
            // Minimizes -1 / (x - 1) in [0, 2]
            Status status = MinimizeGolden.Min(x => - 1.0f / (x - 1.0f), 0, 2);

            Assert.AreEqual(1.0, status.argmin, EPS);
            Assert.True(status.converged);
            Assert.AreEqual(41, status.iterations);
        }
예제 #5
0
        public void Tol()
        {
            // returns answer if tolerance not met
            Status status = MinimizeGolden.Min(x => x * (x - 2.0), 0, 3, 0, 200);

            Assert.AreEqual(200, status.iterations);
            Assert.AreEqual(-1.0, status.minimum, EPS);
            Assert.AreEqual(1.0, status.argmin, EPS);
            Assert.False(status.converged);
        }