Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

Solution 213318

Submitted on 6 Mar 2013

Incorrect

304Size
Leading solution size is 106.
This solution is locked. To view this solution, you need to provide a solution of the same size or smaller.

Test Suite

Test
Code Input and Output
1
Pass
 
%%
% Rosenbrock's banana function
F=@(x) 100*(x(2)-x(1).^2).^2 + (1-x(1)).^2;
gradF=@(x) [100*(4*x(1).^3-4*x(1).*x(2))+2*x(1)-2; 100*(2*x(2)-2*x(1).^2)];
x0 = [-1.9; 2.0];
x1=[
   -1.4478
    2.1184];
x2=[
    1.7064
    2.9446];
f1=6.0419;
f2=0.6068;
[xmin,fmin]=ConjGrad(F,gradF,x0,0.01,1) % single steepest descent
assert(norm(xmin-x1)<0.2||norm(xmin-x2)<0.2)
assert( abs(fmin-f1)<0.5|| abs(fmin-f2)<0.5) % 2 local min
iter alpha f(alpha)  norm(c)
      0 0.000 267.6200 1270.8691
      1 0.000   6.0719  14.1065
xmin =
   -1.4452
    2.1191
fmin =
    6.0719
2
Fail
 
%%
% Rosenbrock's banana function
F=@(x) 100*(x(2)-x(1).^2).^2 + (1-x(1)).^2;
gradF=@(x) [100*(4*x(1).^3-4*x(1).*x(2))+2*x(1)-2; 100*(2*x(2)-2*x(1).^2)];
x0 = [0; 0];
xcorrect=[
    0.2926
    0.0505];
fcorrect=0.6238;
[xmin,fmin]=ConjGrad(F,gradF,x0,1e-2,2) % two iterations
assert(norm(xmin-xcorrect)<0.1)
assert( abs(fmin-fcorrect)<0.01)
Error: Assertion failed.
3
Pass
 
%%
% Rosenbrock's banana function
F=@(x) 100*(x(2)-x(1).^2).^2 + (1-x(1)).^2;
gradF=@(x) [100*(4*x(1).^3-4*x(1).*x(2))+2*x(1)-2; 100*(2*x(2)-2*x(1).^2)];
x0 = [1.1;0.9];
xcorrect = [1;1];
fcorrect = 0;
[xmin,fmin]=ConjGrad(F,gradF,x0) % default 20 iterations
assert(norm(xmin-xcorrect)<0.1)
assert(abs(fmin-fcorrect)<0.01);
iter alpha f(alpha)  norm(c)
      0 0.000   9.6200 150.0119
     20 0.001   0.0003   0.0171
xmin =
    0.9823
    0.9649
fmin =
   3.1229e-04
4
Fail
 
%%
% Rosenbrock's banana function
F=@(x) 100*(x(2)-x(1).^2).^2 + (1-x(1)).^2;
gradF=@(x) [100*(4*x(1).^3-4*x(1).*x(2))+2*x(1)-2; 100*(2*x(2)-2*x(1).^2)];
x0 = [0; 0];
xcorrect = [1;1];
fcorrect = 0;
[xmin,fmin]=ConjGrad(F,gradF,x0,0.01,100) % Convergence before 100 iterations
assert(norm(xmin-xcorrect)<0.1)
assert(abs(fmin-fcorrect)<0.01);
Error: Assertion failed.
5
Fail
 
%%
% Rosenbrock's banana function
F=@(x) 100*(x(2)-x(1).^2).^2 + (1-x(1)).^2;
gradF=@(x) [100*(4*x(1).^3-4*x(1).*x(2))+2*x(1)-2; 100*(2*x(2)-2*x(1).^2)];
x0 = [-1.9; 2];
xcorrect = [1;1];
fcorrect = 0;
[xmin,fmin]=ConjGrad(F,gradF,x0,1e-3,200)
assert(isequal(round(xmin),xcorrect))
assert(isequal(round(fmin),fcorrect))
Error: Assertion failed.