2011-12-20 42 views
-3
f(x) = 4*(1-x(1)).^2 .* exp(-x(1).^2 - (x(2)+1).^2) - ... 
    10*(x(1)/3 - x(1).^3 - x(2).^5) .* exp(-x(1).^2 - x(2).^2) - ... 
    (1/2) .* exp(-(x(1)+1).^2 - x(2).^2) 

where -5 <= x(1) <= 5 , -3 <= x(2) <= 3 

我想,以确定最佳x*使用陡下降最大化f(x)。 我发现http://www4.ncsu.edu/~ctk/darts/steep.m,但我无法使用它。 我不明白评论这一部分:最速下降,MATLAB

% f = objective function, 
%   the calling sequence for f should be 
%   [fout,gout]=f(x) where fout=f(x) is a scalar 
%    and gout = grad f(x) is a COLUMN vector 
  1. 如何使用这个功能呢?
  2. 如何修改初始条件?
  3. 如何修改步长?
+1

我不知道最陡峭的下降将是这里的最佳选择。最陡峭的下降通常用于一维以上的州。你能解释一下为什么你想使用最陡峭的下降而不是其他方法?它可能会揭示出你的实际问题... – amit 2011-12-20 09:07:46

+0

它是我的家庭作品,而且我必须使用Steepest体面。 – 2011-12-20 09:34:38

+2

我怀疑你希望自己实现最陡峭的下降。否则,这不是很有启发性。走了,然后用你试过的东西来更新这个问题。 – Nzbuu 2011-12-20 09:44:41

回答

1
  1. 您需要使用“函数句柄”来传递函数。在帮助中查找它。
  2. 初始条件是x0输入。
  3. 步长自动选择。
+0

嘿,tnx为好答案。我写这个代码:http://www.mediafire.com/?ku2r2bjzs8id6fs但我无法处理错误。 – 2011-12-21 07:07:33