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

共回答了15个问题采纳率:86.7%

楼上正解无错

再给一种不同的形式

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年前

10

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值