MATLAB: Errors when using fminbnd function

errorfminbnd

Hi, I am trying to find use the fminbnd function to find the minimum and maximum values of a function.
I am getting these errors when I try and use the fminbnd function in my code:
Error using fcnchk (line 106): FUN must be a function, a valid character vector expression, or an inline function object
and
Error in fminbnd (line 194): funfcn = fcnchk(funfcn,length(varagin));
Here is my code
x=-10:.0001:10
f = (2+(x-1.45).^2)./(3+3.5.*(.8.*x.^2-.6.*x+2))
minusf=-1.*f
[xmin,y]=fminbnd(f,-10,10) *(THIS IS THE LINE THAT THE ERROR APPEARS AT)*
[xmax,y2]=fminbnd(minusf,-10,10)
fmin=f(xmin)
fmax=f(xmax)

Best Answer

You have a discrete system. You can just search for its extremes directly.
x=-10:.0001:10
f = (2+(x-1.45).^2)./(3+3.5.*(.8.*x.^2-.6.*x+2))
[fmin, minidx] = min(f);
xmin = x(minidx);
[fmax, maxidx] = max(f);
xmax = x(maxidx);
If you want to use a continuous system then:
f = @(x) (2+(x-1.45).^2)./(3+3.5.*(.8.*x.^2-.6.*x+2));
[xmin, fmin] = fminbnd(f, [-10 10]);
[xmax, fmax] = fminbnd(@(x) -f(x), [10 10]);