function [f g H] = rosenbrock(x) n = length(x)/2; assert(mod(n,1) == 0); f=0; g = zeros(2*n,1); H = zeros(2*n); for i=1:n f = f + (1-x(2*i-1))^2 + 10*(x(2*i)-x(2*i-1)^2)^2; g(2*i) = 20*(x(2*i)-x(2*i-1)^2); g(2*i-1) = -2*(1-x(2*i-1)) - 40*x(2*i-1)*(x(2*i)-x(2*i-1)^2); H(2*i,2*i) = 20; H(2*i-1,2*i-1) = 2 - 40*x(2*i) + 120*x(2*i-1)^2; H(2*i,2*i-1) = -40*x(2*i-1); H(2*i-1,2*i) = -40*x(2*i-1); end