Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
回复
 
主题工具 显示模式
旧 2009-11-17, 13:37   #1
zlwr454
初级会员
 
注册日期: 2009-11-08
帖子: 5
声望力: 0
zlwr454 正向着好的方向发展
默认 分段的常微分方程怎么去求解?

问题大概是这样的:
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)

麻烦大家看下分段的常微分方程能否如此的解决,谢谢!
zlwr454 当前离线   回复时引用此帖
旧 2009-11-22, 14:13   #2
laosam280
高级会员
 
注册日期: 2008-11-07
住址: 湖南长沙
帖子: 233
声望力: 21
laosam280 正向着好的方向发展
默认 回复: 分段的常微分方程怎么去求解?

分段的就是分段处理,你的函数好像没有问题,但是你是怎么求解的,求解的结果是什么样子
__________________
坚持就是胜利,努力就有奇迹。
laosam280 当前离线   回复时引用此帖
回复

主题工具
显示模式

发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码



所有时间均为北京时间。现在的时间是 14:59


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.