How to find maximum of a multivariable function using max()

How to find maximum of a multivariable function using max(). Let's denote z = (y+cos(y))/(x^2) for x,y belonging to [1,15].

 Réponse acceptée

Ameer Hamza
Ameer Hamza le 29 Mar 2020
Modifié(e) : Ameer Hamza le 30 Mar 2020
You can use fmincon function to find maximum value
z = @(x,y) (y+cos(y))./(x.^2);
sol = fmincon(@(x) -z(x(1),x(2)), 10*rand(2,1), [], [], [], [], [1;1], [15;15]);
x_sol = sol(1);
y_sol = sol(2);

4 commentaires

I think you mean't
y_sol = sol(2)
madhan, Thanks for pointing out.
If I use fmincon a few times it tends to give bad results
Michal, this is the limitation of the numerical optimization algorithm. They are sensitive to the initial guess. I found that for your objective function, 'interior-point' algorithm gives consistent results.
z = @(x,y) (y+cos(y))./(x.^2);
opts = optimoptions('fmincon', 'Algorithm', 'interior-point');
sol = fmincon(@(x) -z(x(1),x(2)), rand(1,2), [], [], [], [], [1;1], [15;15], [], opts);
x_sol = sol(1);
y_sol = sol(2);

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Loops and Conditional Statements dans Centre d'aide et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by