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.

 채택된 답변

Andrei Bobrov
Andrei Bobrov 2011년 10월 19일
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)

댓글 수: 3

thank you very much but why was my plot wrong?
due to the choice of x
use
ezplot(f,[-1,2,f(x1)-.2,0])

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Walter Roberson
Walter Roberson 2011년 10월 19일

0 개 추천

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에 대해 자세히 알아보기

태그

질문:

2011년 10월 19일

Community Treasure Hunt

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

Start Hunting!

Translated by