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

+0

его работа на дому, и я должен использовать крутой порядочный. –

+2

Я подозреваю, что вы, как ожидается, будете выполнять самый крутой спуск самостоятельно. В противном случае это не очень поучительно. Пойдите, а затем обновите вопрос тем, что вы пробовали. – Nzbuu

ответ

1
  1. Вам необходимо передать свою функцию с помощью «ручки функции». Посмотрите это в помощи.
  2. Начальные условия: вход x0.
  3. Размеры шага выбираются автоматически.
+0

эй, tnx за хороший ответ. Я пишу этот код: http://www.mediafire.com/?ku2r2bjzs8id6fs, но я не могу обработать ошибку. –

Смежные вопросы