Finding the minimizer using fminunc.

If I have function:
fv = @(x) x(1)^2 + x(1)*x(2) + (3/2)*x(2)^2 - 2*log(x(1)) - log(x(2));
How would I use the function fminunc to find the minimizer rather than the minimum value?

 Accepted Answer

fv = @(x) x(1)^2 + x(1)*x(2) + (3/2)*x(2)^2 - 2*log(x(1)) - log(x(2));
[minimizer,minimum_value] = fminunc(fv,[1; 1])
Local minimum found. Optimization completed because the size of the gradient is less than the value of the optimality tolerance.
minimizer = 2×1
0.8944 0.4472
minimum_value = 2.5279

3 Comments

Howie
Howie on 5 Nov 2022
Edited: Howie on 5 Nov 2022
So does this function just give you the minimizer as a 2x1?
Torsten
Torsten on 5 Nov 2022
Edited: Torsten on 5 Nov 2022
What else do you expect for a function with two variables to be optimized ?
An analytic expression for x1 and x2 ?
thank you!

Sign in to comment.

More Answers (1)

If you need to find a maximum rather than a minimum then construct
nfv = @(x) -fv(x)
now minimize nfv using fminunc.
If you need to display what the maximum is remember to evaluate fv at the location of the maximum.

1 Comment

Howie
Howie on 4 Nov 2022
Edited: Howie on 4 Nov 2022
Sorry, I needed to find the minimizer rather than the minimum value Nor the maximum!

Sign in to comment.

Categories

Find more on Optimization in Help Center and File Exchange

Products

Release

R2022a

Asked:

on 4 Nov 2022

Commented:

on 5 Nov 2022

Community Treasure Hunt

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

Start Hunting!