matlab如何求解带变量的约束方程
比如。a=3;求min(a*x)约束为0<x<1a一定要是变量形式,不能直接带数字,因为要处理很多个多谢多谢,急需啊...
比如。
a=3;
求 min(a*x) 约束为 0<x<1
a一定要是变量形式,不能直接带数字,因为要处理很多个
多谢多谢,急需啊 展开
a=3;
求 min(a*x) 约束为 0<x<1
a一定要是变量形式,不能直接带数字,因为要处理很多个
多谢多谢,急需啊 展开
1个回答
展开全部
首先应当说明,你所给的约束条件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等手段),现在用的比较少了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询