Golden Section algorithm only iterating once?
11 次查看(过去 30 天)
显示 更早的评论
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
0 个评论
回答(1 个)
Jan
2016-3-19
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 个评论
Image Analyst
2016-3-19
I agree. Call them xLeft and xRight, or leftX and rightX, or xLower and xUpper, or something that is readable.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Startup and Shutdown 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!