2011-12-20 75 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