马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
请教一个问题:我想要编写一个优化程序,设计变量为u=[u(1),u(2),u(3)]
初值为u0,上下限分别为lb,ub,
主程序为:
u0=[0.001;29;0];
lb=zeros(3,1);
ub=[0.005;2900;pi/2];
u=fmincon(@opt_T,u0,[],[],[],[],lb,ub)
函数opt_T.m如下,在运行过程中其又要调用名为four.m函数,
function function f=myfun(u)
。。
。。
。。
[t,x]=ode45('four',[0,tf],x0,options);
M=length(x(:,1));
for i=1000:M
MAX=max(MAX,x(i,2));
MIN=min(MIN,x(i,2));
end
f=abs(MAX-MIN)
函数four.m如下:
function dx=fourbar(t,x)
..
..
..
(我的设计变量出现在下面这个语句中:)
T_in=0.00568-u(1)*sin(u(2)*t+u(3));
..
..
..
dx=[x(2);
A0*(A1*x(2)^2+T_in+T_aero-G-Spr)];
我想请问,我该如何在这几个函数中传递u的值,
我曾试过在opt_T.m和four.m中将u设为全局变量,可是u的值在完成第一次优化之后就不再发生变化,如果不对变量u进行说明,主程序在调用opt_T.m时找不到变量u又会报错,我对函数调用没有弄明白,哪位师兄师姐能给我指点一下,本人将不胜感激! |