24小时热门版块排行榜    

查看: 1402  |  回复: 0

figozfh

新虫 (初入文坛)

[求助] matlab解时间最优控制使用bvp4c解哈密顿方程组时出现错误

由于末端时刻未知,我将时间变换成末端固定时刻的问题时间区间(0,T)变换成(0,1),相应的状态方程乘以T
代码如下:
T=22;%猜测最优时间
x=linspace(0,1,10);
solinit=bvpinit(x,[0 0 0 0 0 -1/4] ,T);
sol=bvp4c(@ode,@bc,solinit);
%状态方程
function dydt=ode(t,y,T);
b=400;
v0=3;
a=4;
dydt=[T*y(3)*y(4)/sqrt(y(4)^2+y(5)^2)
    T*4/b^2*y(1)*(b-y(1))*v0+T*y(3)*y(5)/sqrt(y(4)^2+y(5)^2)
    T*sign(y(6))*-1*a;
    T*-1*4*y(5)/b^2*v0*(-2*y(1)+b)
    0
    T*-1*sqrt(y(4)^2+y(5)^2)]
%边界条件
function res=bc(ya,yb,T);
res=[ ya(1)
      ya(2)
      ya(3)
      yb(1)-400
      yb(2)
      yb(3)];
  %%%%%%%%%%%%%%
运行后发现错误为:Error using bvparguments (line 112)
Error in calling BVP4C(ODEFUN,BCFUN,SOLINIT):
  The boundary condition function BCFUN should return a column vector of length 7.
大致意思是说需要返回7个边界条件,如何解决。
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 figozfh 的主题更新
信息提示
请填处理意见