用matlab里面的optimazation tool工具,来解决有约束的非线性问题。
首先,应分别建立自定义极值函数fmincon_fun(x)和自定义约束函数fmincon_con(x)
其二,用optimtool命令,打开optimazation tool工具箱
其三,分别用@fmincon_fun和@fmincon_con填入对于命令框内,同时将初值设定为【0,0】
最后,点击Start按钮,可以求得x1=-0.2,x2=0.2,f=0.8
自定义极值函数fmincon_fun(x)和自定义约束函数fmincon_con(x)的内容:
function f=fmincon_fun(x)
x1=x(1);x2=x(2);
f=(x1-x2)^2+(x2-1)^2
end
function [c,ceq]=fmincon_con(x)
x1=x(1);x2=x(2);
c(1)=x1^2-x2;
c(2)=x1+x2
ceq=[];
end