急求关于matlab解多元非线性函数最大值的问题!!!!!!在线等!!!!

%%函数系数赋值beta=[0.3528576113728060.1470375740953780.1046749090151450.6467637212862020.4... %%函数系数赋值
beta=[0.352857611372806 0.147037574095378 0.104674909015145 0.646763721286202 0.432786865123937 0.184573723821254 -72.2558042754852 -221.318306468610 -105.099496331776 -92.1692117077900 3.01793432332517 38.8257158044091 8.33224554279042 4.74414058982192 159.315211549941];
bb=(beta);
fx=@(bb,x)bb(15)+bb(1)*(x1*x2)+bb(2)*(x1*x3)+bb(3)*(x1*x4)+bb(4)*(x2*x3)+bb(5)*(x2*x4)+bb(6)*(x3*x4)+bb(7)*x1+bb(8)*x2+bb(9)*x3+bb(10)*x4+bb(11)*(x1.^2)+bb(12)*(x2.^2)+bb(13)*(x3.^2)+bb(14)*(x4.^2);%函数形式
%%其中,x1的区间为[5,23]、x2区间为[1,5.5]、x3区间[1,14.5]、x4 区间[2,20]
%%求目标函数fx在约束范围内的最大值及最小值,并求fx取得最值下对应的x1、x2、x3、x4

跪求大侠帮我写个matlab的求解代码,分不多了,就这么点了。
展开
 我来答
tianxiawulang
2014-07-26 · TA获得超过2.7万个赞
知道大有可为答主
回答量:4732
采纳率:89%
帮助的人:2693万
展开全部

参考代码:

beta=[0.352857611372806 0.147037574095378 0.104674909015145 0.646763721286202 0.432786865123937 0.184573723821254 -72.2558042754852 -221.318306468610 -105.099496331776 -92.1692117077900 3.01793432332517 38.8257158044091 8.33224554279042 4.74414058982192 159.315211549941];
bb=beta;
f(x)=@(x)bb(15)+bb(1)*(x(1)*x(2))+bb(2)*(x(1)*x(3))+bb(3)*(x(1)*x(4))+bb(4)*(x(2)*x(3))+bb(5)*(x(2)*x(4))+bb(6)*(x(3)*x(4))+bb(7)*x(1)+bb(8)*x(2)+bb(9)*x(3)+bb(10)*x(4)+bb(11)*(x(1).^2)+bb(12)*(x(2).^2)+bb(13)*(x(3).^2)+bb(14)*(x(4).^2);%函数形式

lb = [5 1 1 2];
ub = [23 5.5 14.5 20];

% 初值
x0 = (lb+ub)/2;
opt = optimset('Display','off');
warning off optim:fmincon:SwitchingToMediumScale

% 求最小值
[x,fval,exitflag] = fmincon(fx,x0,[],[],[],[],lb,ub,[],opt);
fprintf('\nMin f(x) = %.5g, at x = %s, EXITFLAG = %i\n', fx(x), mat2str(x,5), exitflag);

% 求最大值
[x,fval,exitflag] = fmincon(@(x)-fx(x),x0,[],[],[],[],lb,ub,[],opt);
fprintf('Max f(x) = %.5g, at x = %s, EXITFLAG = %i\n', fx(x), mat2str(x,5), exitflag);

求得结果:

Min f(x) = -1300.6, at x = [11.505 2.6958 5.9972 9.3475], EXITFLAG = 5
Max f(x) = 627.87, at x = [23 5.5 14.5 20], EXITFLAG = 1

根据运行情况,最小值与初值选择关系不大,而最大值对初值比较敏感,选择不同的初值可能会收敛到不同的局部极值点。可以把初值改为

x0 = lb + rand(1,4).*(ub-lb);

多试几次。

研载生物科技(上海)有限公司_
2023-04-12 广告
研载生物可以提供环状RNA成环验证实验服务,欢迎咨询!1.琼脂糖凝胶电泳实验分别用Divergent primer 和Convergent Primer 检测cDNA样品和gDNA样品。对照组为GAPDH,分别使用Diveraent Pri... 点击进入详情页
本回答由研载生物科技(上海)有限公司_提供
lhmhz
高粉答主

2014-07-27 · 专注matlab等在各领域中的应用。
lhmhz
采纳数:7264 获赞数:17024

向TA提问 私信TA
展开全部

x1=11.505267,x2= 2.695821, x3=6, 5.9971159, x4=9.3474538

Z=1300.58433018611 最大值

x1=5., x2= 5.5,  x3=1., x4=2.

Z=411.244821379153 最小值


本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
钺联昱M
2014-07-26 · TA获得超过706个赞
知道小有建树答主
回答量:1789
采纳率:33%
帮助的人:907万
展开全部
什么控制算法?
追问
楼上大侠代码的算法是subspace trust region(信赖域反射算法),求出的极值对应的变量好像和实际情况不符合啊,不知道用其他算法能不能行,你有什么看法,说一下 啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式