How to find maximum of a function of 2 variables

53 vues (au cours des 30 derniers jours)
enter
enter le 29 Mar 2020
Commenté : Alex Sha le 17 Avr 2020
I have a function z = cos(x^2 + y^2) and the assumption that both x and y belong to interval 1;5. How can I find the maximum value of the function z? I thought about using fminsearch for finding minimum of -z, but I’m new to Matlab and it doesn’t work.
  1 commentaire
Alex Sha
Alex Sha le 17 Avr 2020
Obviously, the maximum value of cos() should be 1, in the range of [1,5], there are multi-solutions:
1:
x: 2.32564131982953
y: 4.44118606739161
2:
x: 4.43419681301284
y: 2.33893989844493

Connectez-vous pour commenter.

Réponse acceptée

Star Strider
Star Strider le 29 Mar 2020
One approach:
z = @(x,y) cos(x.^2 + y.^2);
XY = fminsearch(@(b)norm(-z(b(1),b(2))), [3; 3])
producing:
XY =
2.96385862016178
2.91449853520917
  10 commentaires
enter
enter le 29 Mar 2020
That's quite a sophisticated solution. is there a method like fminbnd, but for multivariable functions?
Star Strider
Star Strider le 29 Mar 2020
I referred to it earlier: fmincon. The would be more appropriate, since it is for multivariable functions, and it allows constraints on them.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Nonlinear Optimization dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by