Я бы хотел использовать 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.
Да, вы можете, это также объясняет, почему нет функции fmaxsearch! – obchardon
Что это значит? Вы запустили свой код? Если это так работает? Если нет, то в чем была ошибка? Если это сработает, то что вы спрашиваете? – Dan
Я имею в виду - это правильное использование fminsearch - нужно ли использовать максимальное использование fminsearch? – DeJaVo