Errors when using fminbnd function

16 visualizaciones (últimos 30 días)
James Robinson
James Robinson el 5 de Dic. de 2017
Comentada: James Robinson el 6 de Dic. de 2017
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)
  1 comentario
James Robinson
James Robinson el 5 de Dic. de 2017
Any help will be greatly appreciated!! Thanks in advance!

Iniciar sesión para comentar.

Respuesta aceptada

Walter Roberson
Walter Roberson el 5 de Dic. de 2017
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]);
  3 comentarios
Walter Roberson
Walter Roberson el 5 de Dic. de 2017
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);
fmax = -fmax;
James Robinson
James Robinson el 6 de Dic. de 2017
That works! Thanks so much!

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Custom Software for Target Hardware en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by