fminbnd finding wrong minimum point for no reason, please help

f = @(x)(-(1.0/((x-0.3).^2+0.01)+1.0/((x-0.9).^2+0.04)));
x = fminbnd(f, -1, 2);
x
y=f(x);
y
x = -1:0.3:2
y = -(1./((x-0.3).^2+0.01)+1./((x-0.9).^2+0.04))
plot(x,y)
here, minimum of the function should be smt between -50 and -60, but it finds -102.5014!! Why is that? please help.

 采纳的回答

f = @(x)(-(1.0./((x-0.3).^2+0.01)+1.0./((x-0.9).^2+0.04)));
x1 = fminbnd(f, -1, 2);
x1
y=f(x1);
y
x = sort([-1:0.3:2,x1])
y = -(1./((x-0.3).^2+0.01)+1./((x-0.9).^2+0.04))
plot(x,y)

更多回答(1 个)

As was indicated more than once in resposne to your previous question, you are trying to apply fminbnd() to a problem with multiple minima, but fminbnd() is not designed to handle such situations.
If you want to handle functions like the one above, you need a global minimizer.

类别

帮助中心File Exchange 中查找有关 Functions 的更多信息

标签

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by