Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
初级会员
注册日期: 2009-11-08
帖子: 5
声望力: 0 ![]() |
![]()
问题大概是这样的:
V2=60;V0=30;Q0=720;Q6=216;Q1=936;Q4=1080; T=4;f=1/2;m=fix(t/T);Vmax=V0+(Q1/24)*(T/4); mT+T/4 <=t<= T/2+mT时, Q12=Q1 ,其他时间 Q12=0 mT+T/2 <=t<= 3*T/4+mT时,Q42=Q4,其他时间 Q42=0 mT+T/2 <=t<= 3*T/4+mT时,Q22=24*(((Q4/24)*(T/4)+(Vmax-V2))/(T/4)); 其他时间 Q22=0 mT+T <=t<= 5*T/4+mT时, Qe2=24*((f*V2)/(T/4));其他时间 Qe2=0 求这个一介常微分方程: y'=(Q12+Q42-Q22-Qe2)/24; tspan=[0 20] ;y0=60 (m=fix(t/T)为用于取整的) 我自己写了个常微分方程主程序函数,但是得出结果图形感觉不太对 。 function dydt=VVTY(t,y) V2=60;V0=30;Q0=720;Q6=216;Q1=936;Q4=1080; T=4;f=1/2;m=fix(t/T);Vmax=V0+(Q1/24)*(T/4); if t>=T/4+m*T&&t<=T/2+m*T Q12=Q1; else Q12=0; end if t>=T/2+m*T&&t<=3*T/4+m*T Q22=24*(((Q4/24)*(T/4)+(Vmax-V2))/(T/4)); else Q22=0; end if t>=T/2+m*T&&t<=3*T/4+m*T Q42=Q4; else Q42=0; end if t>=T+m*T&&t<=5*T/4+m*T Qe2=24*((f*V2)/(T/4)); else Qe2=0; end dydt=(Q12+Q42-Q22-Qe2)/24; tspan=[0 20];yo=30; [t,y]=ode23(@VVTY,tspan,yo); plot(t,y,'--') size(t) 麻烦大家看下分段的常微分方程能否如此的解决,谢谢! |
![]() |
![]() |
![]() |
#2 |
高级会员
注册日期: 2008-11-07
住址: 湖南长沙
帖子: 233
声望力: 21 ![]() |
![]()
分段的就是分段处理,你的函数好像没有问题,但是你是怎么求解的,求解的结果是什么样子
__________________
坚持就是胜利,努力就有奇迹。 |
![]() |
![]() |