请教高手如何用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-1/25*x2^2

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/12 01:12:46

请教高手如何用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-1/25*x2^2
请教高手如何用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-1/25*x2^2

请教高手如何用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-1/25*x2^2
楼上正解无错
再给一种不同的形式
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

步骤:

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

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

3. 调用fmincon函数进行计算

 

计算结果:

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

最大值fmax=0.529371

 

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

 

mfun.m文件:

 

mcon.m文件:

 

输入:

 

 

运行结果: