24小时热门版块排行榜    

查看: 2843  |  回复: 21
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

ybnav

银虫 (小有名气)

[交流] 【求助】向各位大侠求助matlab求解微分方程组遇到的一个问题 已有7人参与

向各位大侠求助matlab求解微分方程组遇到的一个问题:
假设有以下的微分方程组

u'(t)=-a*f1(t)*y(t);
v'(t)=-b*v(t)+a*f1(t)*y(t);
w'(t)=b*v(t);
x'(t)=-a*f2(t)*v(t)+a*f1(t)*y(t)+a*f3(t)*y(t)+c*y(t);
y'(t)= a*f2(t)*v(t) - a*f1(t)*y(t) - a*f3(t)*y(t) - c*y(t);

其中  f1(t)=0 if u(t)=0
                 =1 if u(t)>0;
         f2(t)=0 if x(t)=0
                 =1 if x(t)>0;
          f3(t)=0 if v(t)=0
                 =1 if v(t)>0;
          a=1;b=0.1;c=0.5;
且u(0)=1000;v(0)=1;w(0)=0;x(0)=200;y(0)=0.现在要得到各函数随t的变化曲线,如果微分方程组中没有f1(t),f2(t),f2(t)这三个方程,那么在matlab中可以直接用ode来得到,但是现在有这三个方程,我就没办法了,试了好几种方法都没用,想请教各位高手,在matlab下怎么才能求解这个方程?

[ Last edited by ybnav on 2011-3-11 at 22:27 ]
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

ybnav

银虫 (小有名气)

引用回帖:
Originally posted by xiegangmai at 2011-03-11 15:42:54:
把你的函数贴出来,我稍改改就可以求解了。

或者参考:http://muchong.com/bbs/viewthread.php?tid=2764636###

把微分方程写成分段函数的形式即可。

就是这个微分方程组
u'(t)=-*f1(t)*y(t);
v'(t)=-0.1*v(t)+*f1(t)*y(t);
w'(t)=0.1*v(t);
x'(t)=-f2(t)*v(t)+f1(t)*y(t)+f3(t)*y(t)+0.5*y(t);
y'(t)= f2(t)*v(t) -f1(t)*y(t) -f3(t)*y(t) -0.5*y(t);

其中  f1(t)=0 if u(t)=0
                =1 if u(t)>0;
         f2(t)=0 if x(t)=0
                 =1 if x(t)>0;
          f3(t)=0 if v(t)=0
                 =1 if v(t)>0;
且u(0)=1000;v(0)=1;w(0)=0;x(0)=200;y(0)=0.

只要求在matlab中画出u(t)、v(t)、w(t)、x(t)、y(t)在t的某一段区间内,比如[0,60]的曲线图,还是没想出来改怎么办,同学说可能需要迭代,我也不知道怎么办,万分感谢版主同志!

[ Last edited by ybnav on 2011-3-11 at 22:28 ]
3楼2011-03-11 17:31:40
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 22 个回答

xiegangmai

版主 (职业作家)

我没头衔

优秀版主优秀版主优秀版主


小木虫(金币+0.5):给个红包,谢谢回帖交流
引用回帖:
Originally posted by ybnav at 2011-03-11 13:18:24:
向各位大侠求助matlab求解微分方程组遇到的一个问题:
假设有以下的微分方程组

u'(t)=-a*f1(t)*z(t);
v'(t)=-b*v(t)+a*f1(t)*z(t);
w'(t)=b*v(t);
x'(t)=-a*f2(t)*v(t)+a*f1(t)*y(t)+a*f3(t)*y(t)+c*y(t); ...

把你的函数贴出来,我稍改改就可以求解了。

或者参考:http://muchong.com/bbs/viewthread.php?tid=2764636###

把微分方程写成分段函数的形式即可。
明德厚学、求是创新
2楼2011-03-11 15:42:54
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

ybnav

银虫 (小有名气)

引用回帖:
Originally posted by xiegangmai at 2011-03-11 15:42:54:
把你的函数贴出来,我稍改改就可以求解了。

或者参考:http://muchong.com/bbs/viewthread.php?tid=2764636###

把微分方程写成分段函数的形式即可。

刚方程写错了,应该是

就是这个微分方程组
u'(t)=-f1(t)*y(t);
v'(t)=-0.1*v(t)+f1(t)*y(t);
w'(t)=0.1*v(t);
x'(t)=-f2(t)*v(t)+f1(t)*y(t)+f3(t)*y(t)+0.5*y(t);
y'(t)= f2(t)*v(t) -f1(t)*y(t) -f3(t)*y(t) -0.5*y(t);

其中  f1(t)=0 if u(t)=0
                =1 if u(t)>0;
         f2(t)=0 if x(t)=0
                 =1 if x(t)>0;
          f3(t)=0 if v(t)=0
                 =1 if v(t)>0;
且u(0)=1000;v(0)=1;w(0)=0;x(0)=200;y(0)=0.

只要求在matlab中画出u(t)、v(t)、w(t)、x(t)、y(t)在t的某一段区间内,比如[0,60]的曲线图,还是没想出来改怎么办,同学说可能需要迭代,我也不知道怎么办,万分感谢版主同志!

[ Last edited by ybnav on 2011-3-11 at 22:31 ]
4楼2011-03-11 17:33:08
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xiegangmai

版主 (职业作家)

我没头衔

优秀版主优秀版主优秀版主


小木虫(金币+0.5):给个红包,谢谢回帖交流
引用回帖:
Originally posted by ybnav at 2011-03-11 17:33:08:
刚方程写错了,应该是

就是这个微分方程组
u'(t)=-f1(t)*z(t);
v'(t)=-0.1*v(t)+f1(t)*z(t);
w'(t)=0.1*v(t);
x'(t)=-f2(t)*v(t)+f1(t)*y(t)+f3(t)*y(t)+0.5*y(t);
y'(t)= f2(t)*v(t) -f1(t)*y(t) -f3( ...

微分方程组中没有f1(t),f2(t),f2(t)这三个方程的MATLAB函数呢?
明德厚学、求是创新
5楼2011-03-11 18:40:53
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见