matlab如何求解带变量的约束方程

比如。a=3;求min(a*x)约束为0<x<1a一定要是变量形式,不能直接带数字,因为要处理很多个多谢多谢,急需啊... 比如。
a=3;
求 min(a*x) 约束为 0<x<1
a一定要是变量形式,不能直接带数字,因为要处理很多个
多谢多谢,急需啊
展开
 我来答
tianxiawulang
推荐于2016-08-21 · TA获得超过2.7万个赞
知道大有可为答主
回答量:4732
采纳率:89%
帮助的人:2672万
展开全部

首先应当说明,你所给的约束条件0<x<1对应的不是闭集,问题很可能是无解的。例如看起来很简单的 min x s.t. x>0 就是无解的,因为无论你给一个多小的正数,把它除以2就比它更小。

 

就这种含有附加参数的优化问题而言,主要有三种方法:

1、简单的一点的情况可以直接用arrayfun配合匿名函数,例如:

A=0:10;
arrayfun(@(a)fmincon(@(x)a*x^2-3*x+2,0,[],[],[],[],0,1),A)

 

2、复杂一点的情况可以用嵌套函数(nested function),大致结构如下:

function main
A = ...
for  a=A
    fmincon(@objfun,...
end
    function y = objfun(x)
        y = a*x;   % 在子函数中可以使用主函数的变量
    end 
end

3、传统做法是通过传递附加参数的方式,类似fmincon之类的大多数函数都支持附加参数。主要在MATLAB 7.0之前用这种方式(那时没有匿名函数、嵌套函数、arrayfun等手段),现在用的比较少了。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式