Errors when using fminbnd function

16 Ansichten (letzte 30 Tage)
James Robinson
James Robinson am 5 Dez. 2017
Kommentiert: James Robinson am 6 Dez. 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 Kommentar
James Robinson
James Robinson am 5 Dez. 2017
Any help will be greatly appreciated!! Thanks in advance!

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Walter Roberson
Walter Roberson am 5 Dez. 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 Kommentare
Walter Roberson
Walter Roberson am 5 Dez. 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 am 6 Dez. 2017
That works! Thanks so much!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Custom Software for Target Hardware finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by