function g = extended_powell_gradient1(x) ## ## The gradient of the extended Powell function. See ## extended_powell1.m for more information. ## ## 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. g = NA; return; end m = n / 4; g = zeros(n, 1); % 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); g_k = powell_gradient(y1, y2, y3, y4); for i = [ 1 : 4 ] g(4*(k-1) + i) = g(4*(k-1) + i) + g_k(i); end end end