Problem with Minimizing a Function of Several Variables
Afficher commentaires plus anciens
Hi there, I want to find a minimum for this function:
g = 0.04 - (32*P/(9*sqrt(3)*E*MOI));
and I've written this code to do so:
clc;
clear;
function b = three_var(v)
P = v(1);
E = v(2);
MOI = v(3);
b = 0.04 - (32*P/(9*sqrt(3)*E*MOI));
end;
v = [0.12 -2.0 -0.35];
a = fminsearch(@three_var,v)
but I get the error "Function definitions are not permitted in this context". I've been stuck with this for a day and don't know what to do. I would be grateful if you could help.
Réponse acceptée
Plus de réponses (2)
John D'Errico
le 9 Nov 2015
3 votes
As both Matt and Star have pointed out, you need to define the function properly to use a solver like fminsearch, but they have shown you how to do so.
More importantly, on this particular problem, there is NO solution. You can choose sets of values that will yield arbitrarily large negative values, as close to -inf as you wish to go. The minimization problem will be divergent for this objective function.
You cannot define functions (like three_var) inside a script. Make your mfile a function file.
Catégories
En savoir plus sur Special Values 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!