很简单:
func=inline('0.01506316*(18.6+4*x(1))/(3.14*x(2)^2)','x')
x0=[1.5 0.15];
A=[];B=[];
Aeq=[]; Beq=[];
LB=[1;0.14]; LU=[1.8;0.18];
[X,FVAL,EXITFLAG] =fmincon(func,x0,A,B,Aeq,Beq,LB,LU)
[x,y]=meshgrid(1:0.1:1.8,0.14:0.01:0.18);
U=0.01506316*(18.6+4*x)./(3.14*y.^2);
mesh(x,y,U)
xlabel('x'),ylabel('y'),zlabel('U')
view(30,-30)
结果:
X =
1.0000 0.1800
FVAL =
3.3462
EXITFLAG =
1
你这个函数形式简单,看就可以看出来什么情况下取最小值。
U随x增大而增大,
U随y增大而减小。
于是当x取最小,y取最大时,U最小。
即x=1,y=0.18时,U取最小值。
在Matlab下输入:edit,然后将下面两行百分号之间的内容,复制进去,保存
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function U=zhidao_zzhrui(xy)
x=xy(1);
y=xy(2);
U=0.01506316*(18.6+4*x)/(3.14*y.^2);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
返回Matlab输入:
xm=[1;0.14];
xM=[1.8;0.18];
x0=xm;
A=[];
B=[];
Aeq=[];
Beq=[];
[xy,Umin]=fmincon('zhidao_zzhrui',x0,A,B,Aeq,Beq,xm,xM);
x=xy(1)
y=xy(2)
Umin
得到结果
x =
1
y =
0.1800
Umin =
3.3462
至于你说的图,我不知道你想要什么图?