Steepest descent method algorithm
6 次查看(过去 30 天)
显示 更早的评论
For practice purpose, I want to find minima of -humps() function.
I have written the following code but it's not giving correct answer
clear; clc;
%function
f = @(x) -humps(x);
dx = 0.1; %step length
x_current = 1; %starting guess
delta = 1e-4; %threshold value
alpha = 0.1; %finding optimal step length
g = inf; %starting gradient
while norm(g) > delta
%gradient by finite difference
f1 = f(x_current + dx/2);
f2 = f(x_current - dx/2);
g = (f1-f2)/dx;
x_next = x_current-alpha*g; %new solution
x_current = x_next;
fprintf('%d %d\n',x_current,x_next);
x_current = x_next;
end
It give 5.543798e+01 as solution while the solution should either be 0.9 or 0.3 (local and global minimas, respectivily).
Whate am I missing here? can anyone help?
0 个评论
采纳的回答
Matt J
2019-9-17
alpha is too big. Try alpha=0.001.
2 个评论
Saleh Msaddi
2020-3-9
In steepest descent, you would always get the local minima. You'd only get the global minima if you start with an initial point that would converge to the global minima; if you're lucky enough. If your stepping size is too small, your solution may converge too slow or might not converge to a local/global minima. On the contradictory, if you choose a big step size, your solution may miss the minimal point.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Manual Performance Optimization 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!