Errors when using fminbnd function
16 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
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)
Akzeptierte Antwort
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
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;
Weitere Antworten (0)
Siehe auch
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!