可以看成是壹個非線性約束優化問題。
參考代碼:
function?zd1819839249806921308%?求最優點和最大值
f?=?@(x)?x(1)+2*x(2)+3*x(3);
xm?=?fmincon(@(x)-f(x),[1?0?0],[],[],[],[],[],[],@nlcon)
fmax?=?f(xm)
%?繪示意圖
clf
a?=?0.3;
[x,?y]?=?meshgrid(-1.2:.1:1.2);
z?=?1?-?x?+?y;
c?=?x?+?2*y?+?3*z;
surf(x,y,z,c,'facecolor',?'interp',?'facealpha',1,?'edgecolor',?'none')
hold?on
[x,?y,?z]?=?cylinder(1,100);
surf(x,y,z*4-1,'facecolor',?'c','facealpha',a,?'edgecolor',?'none');
plot3(xm(1),xm(2),xm(3),'r.','markersize',15)
view(10,20)
colormap?gray?
colorbar
rotate3d?on
function?[c,ce]?=?nlcon(x)
%?非線性約束
c?=?[];
ce?=?[x(1)-x(2)+x(3)-1;?x(1)^2+x(2)^2-1];
求出的最優點和最大值分別為(xm的三個元素分別為z、y、z):
xm?=-0.37140.92852.2999
fmax?=
8.3852