MATLAB: Problem with Minimizing a Function of Several Variables

optimization

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.

Best Answer

A function declaration as you coded it is not permitted in a script file. You have to save it it its own function file, named three_var.m However, you can easily code it as an anonymous function, avoiding that problem:
three_var = @(v) 0.04 - (32*v(1)/(9*sqrt(3)*v(2)*v(3))); % Anonymous Function
v = [0.12 -2.0 -0.35];
a = fminsearch(three_var,v)
a =
218.3938e-003 -1.8055e+000 -18.3576e-030