Error msg in fminbnd

2 views (last 30 days)
nirwana
nirwana on 16 Mar 2023
Commented: nirwana on 16 Mar 2023
Hi all
I an trying to find minimum value of function using fminbnd sing this script
x=linspace (0,6);
y=6*cos(x)+1.5*sin(x);
plot (y);
[xmin,fval]=fminbnd(y,2,4)
Error using fcnchk
FUN must be a function, a valid character vector expression, or an inline function object.

Error in fminbnd (line 198)
funfcn = fcnchk(funfcn,length(varargin));
But it give me an error mgs as shown, i don't understand what part in my code that have mistake.

Accepted Answer

AL
AL on 16 Mar 2023
fun = @(x) 6*cos(x) + 1.5*sin(x); % Define the function
x_min = fminbnd(fun, 0, 6); % Find the minimum within the interval [0,6]
y_min = fun(x_min); % Evaluate the function at the minimum x value
plot(linspace(0,6), fun(linspace(0,6))); % Plot the function
hold on
plot(x_min, y_min, 'ro'); % Mark the minimum point on the plot
hold off
disp(['The minimum value of y is ', num2str(y_min), ' at x = ', num2str(x_min)]);
Try this Once.
  3 Comments
John D'Errico
John D'Errico on 16 Mar 2023
fminbnd solves for the minimum of a FUNCTION. When you define x as a vector, then create y, as a VECTOR, y is just a list of numbers. It is not a function anymore, so fminbnd must fail.
What @AL did was create fun as a function. And now it works.
nirwana
nirwana on 16 Mar 2023
Thanks a lot @John D'Errico. Now I understand

Sign in to comment.

More Answers (0)

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!