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); }
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); }
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); }
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); }
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); }