急问:如何用matlab求这个函数的最大值啊?

来源:百度知道 编辑:UC知道 时间:2024/05/21 13:04:53
如何用matlab的二次规划求这个函数的最大值啊?
max x1+x2+x3+x4-0.5x2^2+2x2x3-2x3^2-2x4^2
st. x1+x2-x3-x4=0
x1,x2,x3,x4>=0
谢谢了 如何写程序啊
急问啊

在Matlab下输入:edit,然后将下面两行百分号之间的内容,复制进去,保存
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function y=zhidao_mzhxpxliu(x)
x1=x(1);
x2=x(2);
x3=x(3);
x4=x(4);
%最大化成最小值求解,方法是加负号
y=-(x1+x2+x3+x4-0.5*x2^2+2*x2*x3-2*x3^2-2*x4^2);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

在Matlab下输入:edit,然后将下面两行百分号之间的内容,复制进去,保存
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [y,yeq]=zhidao_mzhxpxliu_cond(x)
x1=x(1);
x2=x(2);
x3=x(3);
x4=x(4);
y=[];%不等式约束
yeq=[x1+x2-x3-x4];%等式约束
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

返回Matlab输入:
x0=zeros(4,1);
xm=zeros(4,1);
xM=inf*ones(4,1);
A=[];
B=[];
Aeq=[];
Beq=[];
[x,f_result,flag,c]=fmincon('zhidao_mzhxpxliu',x0,A,B,Aeq,Beq,xm,xM, 'zhidao_mzhxpxliu_cond');
x,-f_result
得到结果

x =

0.0000
4.0000
3.0000
1.0000
<