MATLAB题

来源:百度知道 编辑:UC知道 时间:2024/06/15 00:52:32
目标函数为:
function y=c2exmobj26(x)
y=x(1)^2+x(2);
约束函数为:
function [c,ce]=c2eexmcon26(x)
ce=[];
c=[x(1)^2+x(2)^2-9;x(1)+x(2)-1];

输入命令为:
A=[];B=[];Aeq=[];Beq=[];xm=[-3;-3];xM=[3;3];x0=[1;1];
ff=optimset;ff.TolX=1e-10;ff.TolFun=1e-20;
x=fmincon('c2exmobj26',x0,A,B,Aeq,Beq,xm,xM,'c2exmcon26',ff)

输出结果为:
> In F:\MATLAB\toolbox\optim\fmincon.m at line 213
Optimization terminated successfully:
Search direction less than 2*options.TolX and
maximum constraint violation is less than options.TolCon
Active Constraints:
2

x =

0.0000
-3.0000

由此可得最优解为: 2

需要验证所得解

验证的程序段为:
[x,y]=meshgrid(-3:0.1:3,-3:0.1:3);
z=-x.^2-y;
r=find(~((x.^2+y.^2<=9)&(x+y<=1)));
z(r)=NaN;
surf(x,z)

验证图像为:.....

不知道我的验证程序可以吗?
我只要5分了. 麻烦大家帮下忙.谢谢各位.
[x,y]=meshgrid(-3:0

明明给你的最优解是x=0,y=-3
此时z最大值为3
验证的结果也是如此

[x,y]=meshgrid(-3:0.1:3,-3:0.1:3);
%x,y是-3到3,间隔0.1的网格矩阵
z=-x.^2-y;
r=find(~((x.^2+y.^2<=9)&(x+y<=1))); %r为所有不满足x^2+y^2<=9和x+y<=1的行列号
z(r)=NaN; %把上面找出的元素设为NaN,即把它们从图中裁去
surf(x,z) %画表面图