matlab 程序命令求帮助

有3个参数,a1,a2,a3满足a1+a2+a3=1;a1,a2,a3》0;求a1,a2,a3带入某个函数F使F值最大;求a1,a2,a3的近似值,请问matlab改怎么... 有3个参数,a1,a2,a3 满足a1+a2+a3=1;a1,a2,a3》0;求a1,a2,a3带入某个函数F使F值最大;求a1,a2,a3的近似值,请问matlab改怎么写程序求解,或者其他方法怎么求解 展开
 我来答
tianxiawulang
2013-08-14 · TA获得超过2.7万个赞
知道大有可为答主
回答量:4732
采纳率:89%
帮助的人:2530万
展开全部

这其实是一个简单的有约束最大化问题。

 

你没有给出目标函数F的形式,我们随便取一个

    F = 3*a1^0.5 + 2*a2^0.5 + 4*a3^0.5

求解的代码如下:

Aeq=[1 1 1];
beq=1;
lb=[0 0 0];
ub=[1 1 1];
f=inline('-(3*a(1)^0.5+2*a(2)^0.5+4*a(3)^0.5)','a');
a = fmincon(f,[0.5 0.5 0.5],[],[],Aeq,beq,lb,ub)

 

说明:

1、由于fmincon是求最小化,所以目标函数应该加上负号;

2、由于a1,a2,a3之和为1且均为正数,所以其范围必然在0-1之间。这里用限制其上下限的方式求解,也可以用Ax<=b的约束求解,效果是一样的。

追问
如果F是一个关于矩阵的函数,比如F=a*b;a=(a1,a2,a3),b=[1 2 3;4 5 6;7 8 9];该怎么写程序?
追答
如果F的计算比较复杂,就不宜写成上面的inline函数了,此时应考虑写成m文件的函数形式。

但是你给出的表达式是有问题的,如果
F=a*b;a=(a1,a2,a3),b=[1 2 3;4 5 6;7 8 9];
则计算出来的F是一个向量,它的最大化怎样理解?

建议你最好直接把要解的问题写出来;如果不方便,那也请举个靠谱一点的例子,并且确信如果在你给的例子基础上我写出了代码,你有能力修改。否则,像现在这样,先是你没给目标函数,我自己构造了一个,然后你又提出新的要求(并且条件还有问题),一次次的反复很浪费时间的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式