How to find maximum of a multivariable function using max()
9 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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
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
Ameer Hamza
le 30 Mar 2020
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);
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Loops and Conditional Statements 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!