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?

 采纳的回答

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 个评论

Howie
Howie 2022-11-5
编辑:Howie 2022-11-5
So does this function just give you the minimizer as a 2x1?
What else do you expect for a function with two variables to be optimized ?
An analytic expression for x1 and x2 ?

请先登录,再进行评论。

更多回答(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 个评论

Howie
Howie 2022-11-4
编辑:Howie 2022-11-4
Sorry, I needed to find the minimizer rather than the minimum value Nor the maximum!

请先登录,再进行评论。

类别

帮助中心File Exchange 中查找有关 Optimization 的更多信息

产品

版本

R2022a

标签

Community Treasure Hunt

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

Start Hunting!

Translated by