2016-06-17 64 views
1

Я бы хотел использовать fminsearch, чтобы найти локальный максимум функции.Как использовать fminsearch для поиска локального максимума?

Можно найти локальный максимум, используя fminsearch с «справедливым» поиском отрицательного возвращаемого значения функции.

, например:

function f = myfun(x,a) 
f = x(1)^2 + a*x(2)^2; 
a = 1.5; 
x = fminsearch(@(x) -1 * myfun(x,a),[0,1]); 

Возможно ли это?

Update1: Для того, чтобы разработать свой вопрос и сделать его более ясным (после некоторых комментариев ниже) - я добавляю это обновление:

Задавая, если это возможно, чтобы сделать это, я имел в виду, это правильное использование функции fminsearch - предназначено ли использовать максимальное значение, используя fminsearch?

Update2: для тех, кто когда-либо озабоченность в связи с тем же вопросом - В дополнение к правильному ответу ниже, вот документация от https://www.mathworks.com/help/matlab/math/optimizing-nonlinear-functions.html#bsgpq6p-10

Максимизация функции В fminbnd и fminsearch решатели пытаются минимизировать цели функция. Если у вас есть проблема максимизации, то есть проблема формы

max x f (x), затем определите g (x) = -f (x) и минимизируйте g.

Например, чтобы найти максимум tan(cos(x)) вблизи х = 5, оценка:

[x fval] = fminbnd(@(x)-tan(cos(x)),3,8)

x = 6.2832

fval = -1.5574

Максимум 1,5574 (негатив сообщенное fval) и встречается при x = 6.2832. Этот ответ верен, так как до пяти цифр максимальным является tan (1) = 1,5574, что происходит при x = 2π = 6.2832.

+2

Да, вы можете, это также объясняет, почему нет функции fmaxsearch! – obchardon

+0

Что это значит? Вы запустили свой код? Если это так работает? Если нет, то в чем была ошибка? Если это сработает, то что вы спрашиваете? – Dan

+0

Я имею в виду - это правильное использование fminsearch - нужно ли использовать максимальное использование fminsearch? – DeJaVo

ответ

3

Да, вы можете, это также объясняет, почему нет fmaxsearch функции:

Например:

func = @(x) sin(x); 

sol = fminsearch(@(x) func(x),0) 
% sol = pi/2 
sol = fminsearch(@(x) func(x)*-1,0) 
% sol = -pi/2 

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

  • Нет связанных вопросов^_^