请教高手如何用matlab解多元二次不等式的解,有三个未知数x1,x2,x3,约束条件如下:

0.36x1+0.25x2+0.39x3取最大12/5*x1+11/5*x2+10/3*x3-3/5*x1*x2-x1*x3-1/15*x2*x3-31/75*x1^2-... 0.36x1+0.25x2+0.39x3取最大

12/5*x1+11/5*x2+10/3*x3-3/5*x1*x2-x1*x3-1/15*x2*x3-31/75*x1^2-1/25*x2^2<=3
0<=5/9*x1+1/3*x2+7/9*x3<=1
0<=5/9*x1+4/9*x2+2/3*x3<=1
0<=1/3*x1+x2<=1
0<=1/3*x1+x3<=1
0<=x1,x2,x3<=1

等待高手解决啊。。200分送上了。。。
展开
evolmath
2013-03-24 · TA获得超过2745个赞
知道小有建树答主
回答量:413
采纳率:100%
帮助的人:239万
展开全部

步骤:

1. 建立目标函数的mfun.m文件;

2. 建立非线性约束的mcon.m文件;

3. 调用fmincon函数进行计算

 

计算结果:

当x1=1,x2=0,x3=0.434285时,

最大值fmax=0.529371

 

已用lingo做过检验,结果为全局最优解,应该没错.

 

mfun.m文件:

 

mcon.m文件:

 

输入:

 

 

运行结果:

二中混过
2013-03-24 · TA获得超过1326个赞
知道小有建树答主
回答量:473
采纳率:50%
帮助的人:577万
展开全部
楼上正解无错
再给一种不同的形式

function zd0323
format long%改变格式,使更精确输出结果
%% 目标函数
function y=fun(x)
y=-(0.36*x(1)+0.25*x(2)+0.39*x(3));%求最大值,就是求负目标函数的最小值,然后取相反数即可
end
%% 非线性约束
function [c,ceq]=nonlcon(x)
c=12/5*x(1)+11/5*x(2)+10/3*x(3)-3/5*x(1)*x(2)-x(1)*x(3)-1/15*x(2)*x(3)-31/75*x(1)^2-1/25*x(2)^2-3;
ceq=[];
end
%% 线性约束
A =[5/9 1/3 7/9;5/9 4/9 2/3;1/3 1 0;1/3 0 1;...
-5/9 -1/3 -7/9;-5/9 -4/9 -2/3;-1/3 -1 0;-1/3 0 -1;];
b=[1 1 1 1 0 0 0 0]';
%% 自变量取值范围
lb=[0 0 0];
ub=[1 1 1];
%% 初值
x0=[0.1 0.1 0.1]
%% fmincon参数设定
options=optimset('Algorithm','active-set');
%% 计算非线性规划
[x,fval] = fmincon(@fun,x0,A,b,[],[],lb,ub,@nonlcon,options);
x=x
MAX=-fval
format short%恢复默认格式
end

保存运行即可
结果:
x =
1.000000000000000 0 0.434285714286495
MAX =
0.529371428571733
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式