MATH-1625: Gnuplot script for visual debugging.
diff --git a/commons-math-legacy/src/test/gnuplot/legacy/optim/nonlinear/scalar/noderiv/simplex_2D.gnuplot b/commons-math-legacy/src/test/gnuplot/legacy/optim/nonlinear/scalar/noderiv/simplex_2D.gnuplot
new file mode 100644
index 0000000..128e947
--- /dev/null
+++ b/commons-math-legacy/src/test/gnuplot/legacy/optim/nonlinear/scalar/noderiv/simplex_2D.gnuplot
@@ -0,0 +1,116 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+#
+# "Gnuplot" script to display the behaviour of simplex-based optimizers.
+#
+# Required argument:
+#   file -> input file (cf. "SimplexOptimizerTest").
+# Optional argument:
+#   showSpx -> Number of simplexes to show.
+#
+
+set term x11
+
+showSpx = exists("showSpx") ? showSpx : 5
+
+stats file nooutput
+numOptim = STATS_blocks
+evalColIndex = 1
+objColIndex = 2
+xColIndex = 3
+yColIndex = 4
+
+set size 1, 1
+set origin 0, 0
+
+lastOptim = numOptim - 1
+do for [iOptim = 1:lastOptim] {
+  # Evaluations range.
+  stats file u evalColIndex nooutput
+  numEval = STATS_max
+
+  # Objective function range.
+  stats file index iOptim u objColIndex nooutput
+  numSpx = STATS_blank
+  minObj = STATS_min
+  maxObj = STATS_max
+
+  # x-coordinate range.
+  stats file index iOptim u xColIndex nooutput
+  xMin = STATS_min
+  xMax = STATS_max
+
+  # y-coordinate range.
+  stats file index iOptim u yColIndex nooutput
+  yMin = STATS_min
+  yMax = STATS_max
+
+  lastSpx = numSpx - 1
+  do for [iSpx = 0:lastSpx] {
+    set multiplot
+
+    # Number of evaluations.
+    set size 1, 0.15
+    set origin 0, 0.85
+    unset xtics
+
+    plot \
+       file index iOptim \
+         every ::0::0 \
+         u 0:1 \
+         w p ps 0.5 lc "black" title "N_{eval}", \
+       '' index iOptim \
+         every ::0::0:iSpx \
+         u 0:1 \
+         w lp pt 1 lc "black" lw 2 notitle
+
+    # Objective function.
+    set size 1, 0.15
+    set origin 0, 0.7
+
+    plot \
+       file index iOptim \
+         every ::0::2 \
+         u 0:(log($2)) \
+         w l lc "black" title "log_{10}f", \
+       '' index iOptim \
+         every ::0::2:iSpx \
+         u 0:(log($2)) \
+         w lp pt 1 lc "black" lw 2 notitle
+
+    # Simplex.
+    set size 1, 0.7
+    set origin 0, 0
+    set xtics
+
+    unset log y
+    plot [xMin:xMax][yMin:yMax] \
+      file index iOptim \
+        every :::(iSpx - showSpx < 0 ? 0 : iSpx - showSpx)::iSpx \
+        u xColIndex:yColIndex \
+        w l notitle, \
+      '' index "Optimum" u 1:2 ps 5 pt 4 notitle
+
+    unset multiplot
+    pause 0.1
+  }
+
+  pause 1
+}
+
+pause -1