Golden Section algorithm only iterating once?
조회 수: 4 (최근 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!