How do i use fminsearch to find the minimum or maximum of a function . x.^4-3.*x.*y+2.*y.^2

41 views (last 30 days)
I trying to use fmin search for a function of 2 variable

Accepted Answer

James Tursa
James Tursa on 13 Oct 2022
Edited: James Tursa on 13 Oct 2022
You need to have your function handle accept a vector and return a scalar. I.e., the x argument to the function handle is a vector of two elements representing your original x and y variables. Assuming x(1) and x(2) are your intended original x and y variables, that would mean something like this:
fun = @(x) x(1).^4-3.*x(1).*x(2) +2.*x(2).^2;
x0 = [-0.5,0.5];
x = fminsearch(fun,x0)
x = 1×2
-0.7500 -0.5625
  3 Comments
James Tursa
James Tursa on 13 Oct 2022
Edited: James Tursa on 13 Oct 2022
format longg
fun = @(x) x(1).^4-3.*x(1).*x(2) +2.*x(2).^2;
x0 = [-0.5,0.5];
x = fminsearch(fun,x0)
x = 1×2
-0.749979058202537 -0.562478134566371
fun(x)
ans =
-0.316406248937402
fun([3/4,9/16])
ans =
-0.31640625
Also note that fminsearch( ) can only find local minimums, of which there can be more than one depending on the function. So different starting points can result in different answers.
x = fminsearch(fun,[3/4+0.1,9/16-0.1])
x = 1×2
0.749992146496559 0.562470511151394
fun(x)
ans =
-0.316406248747428

Sign in to comment.

More Answers (1)

the cyclist
the cyclist on 13 Oct 2022
Edited: the cyclist on 13 Oct 2022
Did you try reading the documentation for fminsearch? The very first example is exactly like your problem.
fun = @(x)(x(1)^4 - 3*x(1)*x(2) + 2*x(2)^2);
x0 = [-0.5, 0.5];
x = fminsearch(fun,x0)
x = 1×2
-0.7500 -0.5625

Categories

Find more on Mathematics in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!