我想使用fminsearch来找到函数的局部最大值。
是否可以在函数的负返回值上使用fminsearch和“ just”搜索来找到局部最大值。
例如:
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
吗?-它是查找max using的预期用途吗?
Update2:针对曾经关心同一问题的人-除了下面的正确答案外,这是https://www.mathworks.com/help/matlab/math/optimizing-nonlinear-functions.html#bsgpq6p- 10
最大化函数fminbnd和fminsearch求解器试图最小化目标函数。如果您有最大化问题,即形式上的问题
最大化xf(x),然后定义g(x)= –f(x),并最小化g。
例如,要找到
tan(cos(x))
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函数的原因:
例如:
func = @(x) sin(x);
sol = fminsearch(@(x) func(x),0)
% sol = pi/2
sol = fminsearch(@(x) func(x)*-1,0)
% sol = -pi/2
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句