Cody

Problem 481. Rosenbrock's Banana Function and its derivatives

Solution 1251250

Submitted on 14 Aug 2017 by Michelangelo Ricciulli
This solution is locked. To view this solution, you need to provide a solution of the same size or smaller.

Test Suite

Test Status Code Input and Output
1   Pass
assert(isempty(regexp(fileread('Rosenbrock_banana.m'),'assert.m')))

2   Pass
x = [0; 0]; assert(isequal(Rosenbrock_banana(x),1))

Hessian = 2 0 0 200

3   Pass
x = [1; 1]; assert(isequal(Rosenbrock_banana(x),0))

Hessian = 802 -400 -400 200

4   Pass
x = [1; -1]; assert(isequal(Rosenbrock_banana(x),400))

Hessian = 1602 -400 -400 200

5   Pass
x = [-1; 0.5]; assert(isequal(Rosenbrock_banana(x),29))

Hessian = 1002 400 400 200

6   Pass
x = [0; 0]; [~,grad]=Rosenbrock_banana(x); assert(isequal(grad,[-2; 0]))

Hessian = 2 0 0 200

7   Pass
x = [0; 0]; [~,~,Hess]=Rosenbrock_banana(x); assert(isequal(Hess,diag([2, 200])))

Hessian = 2 0 0 200

8   Pass
x = [1; 1]; [~,grad]=Rosenbrock_banana(x); assert(isequal(grad,[0; 0]))

Hessian = 802 -400 -400 200

9   Pass
x = [1; 1]; [~,~,Hess]=Rosenbrock_banana(x); assert(isequal(Hess,[802, -400; -400, 200]))

Hessian = 802 -400 -400 200

10   Pass
x = [-1.9; 2]; correct_value = 267.6200; correct_grad = -1e3*[1.2294; 0.3220]; correct_Hess = [3534, 760; 760, 200]; [val,grad,Hess]=Rosenbrock_banana(x); assert(isequal(str2num(num2str(val)),correct_value)) assert(isequal(str2num(num2str(grad)),correct_grad)) assert(all(max(abs(Hess-correct_Hess)<1e-8)))

Hessian = 3534 760 760 200

Suggested Problems

More from this Author17

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!