matlab无约束优化问题

可以首先编写函数:
function[f,g,H]=exam03(x) %编写目标函数的M文件
f=100*(x(2)-x(1)^2)^2+(1-x(1))^2+90*(x(4)-x(3)^2)^2+(1-x(3))^2+10.1*((1-x(2))^2+(1-x(4))^2)+19.8*(x(2)-1)*(x(4)-1);
if nargout>1 %梯度;
g(1)=400*x(1)^3-400*x(1)*x(2)+2*x(1)-2;
g(2)=220.2*x(2)-200*x(1)^2+19.8*x(4)-40;
g(3)=360*x(3)^3-360*x(3)*x(4)+x(3)*2-2;
g(4)=110.4*x(4)-90.2*x(3)^2+19.8*x(2)-40;
end
if nargout>2
H=[1200*x(1)^2-400*x(2)+2,-400*x(1),0,0;-400*x(1),220.2,0,19.8;0,0,1080*x(3)^3-360*x(4)+2*x(3),-360*x(3);0,19.8,180.4*x(3),110.4];
end

再编写程序:
x0=[-3,-1,-3,-1];
opt1=optimset('largescale','off','MaxFun',20000);
v1=[-10;-10;-10;-10];v2=[10;10;10;10];
[x,fv,ef,out,lag,grad,hess]=fmincon(@exam03,x0,[],[],[],[],v1,v2,[],opt1) %数值梯度
pause
opt2=optimset(opt1,'GradObj','on','GradCon','on','DerivativeCheck','on','Algorithm','active-set'); %分析梯度
[x,fv,ef,out,lag,grad,hess]=fmincon(@exam03,x0,[],[],[],[],v1,v2,[],opt2)

哪里错了。。。。
错了。。非线性规划。。。

额……初学者前来探讨一下……
你第一个function里面返回了 f,g和H,我觉着目标函数就是目标函数吧,剩下两个矩阵我不太懂这个用法……
还有目标函数里面出现了一个nargout,这个值没有定义吧?
嗯,个人也不太懂,提点看法仅供参考~
温馨提示:答案为网友推荐,仅供参考