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