Golden Section algorithm only iterating once?

4 vues (au cours des 30 derniers jours)
Joshua Stratton
Joshua Stratton le 18 Mar 2016
Commenté : Image Analyst le 19 Mar 2016
Hi, I'm new to matlab and I'm having trouble with my code which uses the golden section method to calculate a maximum. I'm pretty sure it has something to do with the for loop, because the algorithm only seems to iterate once, but I'm not sure. Any help would be appreciated. Thanks!
function [xopt] = gss(xl,xu,N)
r=(-1+sqrt(5))/2;
d=r*(xu-xl);
x1=xl+d;
x2=xu-d;
f1=f(x1);
f2=f(x2);
for i=1:N
if f1>f2
xl=x2;
x2=x1;
x1=xl+d;
f2=f1;
f1=f(x1);
else
xu=x1;
x1=x2;
x2=xu-d;
f1=f2;
f2=f(x2);
end
if f1>f2
xopt=x1;
end
if f1<f2
xopt=x2;
end
end
end
function fout = f(x)
fout=-0.1*(x^2)-exp(-x);
end

Réponses (1)

Jan
Jan le 19 Mar 2016
Use the debugger to see, what is going on: Set a breakpoint in the first line and step through the code line by line.
You will find out, that the loop runs N times as expected. But d does not change its value. Then you can expect that the calculated points are hopping back and forth.
Note: Using x1 and xl is a confusing idea. Hard to read...
  1 commentaire
Image Analyst
Image Analyst le 19 Mar 2016
I agree. Call them xLeft and xRight, or leftX and rightX, or xLower and xUpper, or something that is readable.

Connectez-vous pour commenter.

Catégories

En savoir plus sur Startup and Shutdown dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by