画图你的XYZ都是3D的数组,所以建议用scatter3画图
[X,Y,Z] = meshgrid(5:.01:10,8:.01:15,24:30);
F = X.*Y+Z;
C = true(size(X));
for i = 1:numel(X)
n = X(i);% x(1)
y = Y(i);% x(2)
z = Z(i);
c = 0;
for k = 1:0.01:n
c = c+(4970250*y + 14100*(k -1 )*y^2*z + 10*( k - 1 )^2 * y^3 + 20*(k-1)*y^2*z+10*y*z^2)/ ...
((705+(k-1)*y)* (1410*(k-1)* y * z+(k-1)^2 *y^2+2*(k-1)*y*z+z^2));
end
x = n;
C(i) = 31.4+(31213170/(1410*x*y+1410*z+x^2*y^2+2*x*y*z+z^2))-(159*z/(x*y+z))-(161.5*x*y/(x*y+z))-0.1*2*c<=0;
end
minf = min(F(C));
if(isempty(minf))
fprintf('无解\n')
else
I = find((minf==F)&C);
x = X(I);
y = Y(I);
z = Z(I);
fmin = x*y+z;
fprintf('在x=%d,y=%d,z=%d处目标函数有最小值%d\n',x,y,z,fmin)
end
F(~C)=NaN;
scatter3(X(:),Y(:),Z(:),10,F(:))
结果:
在x=5.010000e+00,y=1.498000e+01,z=24处目标函数有最小值9.904980e+01