X-Git-Url: http://gitweb.michael.orlitzky.com/?p=octave.git;a=blobdiff_plain;f=optimization%2Ftest_functions%2Fextended_powell1.m;fp=optimization%2Ftest_functions%2Fextended_powell1.m;h=2b1da25003990e21bb91657f1dae8ce6ad085590;hp=0000000000000000000000000000000000000000;hb=30c26967dbc89131a09979fa8937eac0ef7a73b4;hpb=120959c85ebb6544fa0a00c3d1c3f8941e7da3e0 diff --git a/optimization/test_functions/extended_powell1.m b/optimization/test_functions/extended_powell1.m new file mode 100644 index 0000000..2b1da25 --- /dev/null +++ b/optimization/test_functions/extended_powell1.m @@ -0,0 +1,33 @@ +function f = extended_powell1(x) + ## + ## The extended Powell function. See Dennis & Schnabel, Appendix B, + ## problem #2. + ## + ## This function has a minimum at x=(0,0,...,0) with f(x) == 0. The + ## suggested starting point is x0=(3, -1, 0, 1,..., 3, -1, 0, 1). + ## Since the number of arguments is variable, we take a vector + ## instead of its individual components. + ## + n = length(x); + + if (odd(n)) + ## 'm' below must be an integer. + f = NA; + return; + end + + m = n / 4; + f = 0; + + % The extended Powell is simply a sum of Powell + % applications. + for k = [ 1 : m ] + y1 = x(4*k - 3); + y2 = x(4*k - 2); + y3 = x(4*k - 1); + y4 = x(4*k); + + f_k = powell(y1,y2,y3,y4); + f = f + f_k; + end +end