]> gitweb.michael.orlitzky.com - octave.git/blobdiff - tests/himmelblau_tests.m
Add the Himmelblau function, as defined in Applied Nonlinear Programming.
[octave.git] / tests / himmelblau_tests.m
diff --git a/tests/himmelblau_tests.m b/tests/himmelblau_tests.m
new file mode 100644 (file)
index 0000000..75a145f
--- /dev/null
@@ -0,0 +1,26 @@
+## Test the optimal points.
+
+unit_test_equals("himmelblau(3,2) == 0", ...
+                0, ...
+                himmelblau(3,2));
+
+x1 = -2.805118086952745;
+x2 = 3.131312518250573;
+msg = sprintf("himmelblau(%f, %f) == 0", x1, x2);
+unit_test_equals(msg, ...
+                true, ...
+                norm(himmelblau(x1, x2)) < 1e-12);
+
+x1 = -3.779310253377747;
+x2 = -3.283185991286170;
+msg = sprintf("himmelblau(%f, %f) == 0", x1, x2);
+unit_test_equals(msg, ...
+                true, ...
+                norm(himmelblau(x1, x2)) < 1e-12);
+
+x1 = 3.584428340330492;
+x2 = -1.848126526964404;
+msg = sprintf("himmelblau(%f, %f) == 0", x1, x2);
+unit_test_equals(msg, ...
+                true, ...
+                norm(himmelblau(x1, x2)) < 1e-12);