用matlab求解无约束非线性问题,可以用fminunc()函数来求解。求解方法:
x0=[1.3107 1.33219 0.24839];
[x,fval] = fminunc(@(x) myfunc(x),x0)
运行结果
x = 1.323 1.3393 0.24964
fval = -13.958
myfunc(x)函数主要内容:
if x1+2*x1^2+x2+2*x2^2+x3>10 | x1+x1^2+x2+x2^2-x3>50 | 2*x1+x1^2+2*x2+x3>40 | x1^2+x3==2 | x1+2*x2<1
f=inf;
else
f =-(2*x1+3*x1^2+3*x2+x2^2+x3);
end