24小时热门版块排行榜    

查看: 2803  |  回复: 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的回帖

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:28 ]
3楼2011-03-11 17:31:40
已阅   回复此楼   关注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的回帖

ybnav

银虫 (小有名气)

引用回帖:
Originally posted by xiegangmai at 2011-03-11 18:40:53:
微分方程组中没有f1(t),f2(t),f2(t)这三个方程的MATLAB函数呢?

这三个方程的值是根据以下条件确定的:
      | 0  当u(t)=0时
f1(t)=|
          | 1 当u(t)>0时

      | 0  当x(t)=0时
f2(t)=|
          | 1 当x(t)>0时

      | 0  当v(t)=0时
f2(t)=|
          | 1 当v(t)>0时

[ Last edited by ybnav on 2011-3-11 at 19:00 ]
6楼2011-03-11 18:58:21
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xiegangmai

版主 (职业作家)

我没头衔

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


小木虫(金币+0.5):给个红包,谢谢回帖交流
引用回帖:
Originally posted by ybnav at 2011-03-11 18:58:21:
这三个方程的值是根据以下条件确定的:
      | 0  当u(t)=0时
f1(t)=|
          | 1 当u(t)>0时

      | 0  当x(t)=0时
f2(t)=|
          | 1 当x(t)>0时

      | 0  当v(t)=0时
f2(t)= ...

我说的还不清楚吗?
你不是会算没有f(t)的情况吗?那你把不含f(t)的MATLAB命令和函数文件贴出来啊。
明德厚学、求是创新
7楼2011-03-11 19:02:59
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

ybnav

银虫 (小有名气)

不好意思,理解错了,我寝室电脑没装matlab
实验室电脑不能上网,现在随便写一个怕有错误,我明天去实验室把matlab命令和函数文件拷出来后再发上来,今天晚上我再去请教一下周围的同学,如果实在不行只能麻烦版主救急了,真的万分感谢!
8楼2011-03-11 19:09:39
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

change0618

铁杆木虫 (著名写手)

方丈大师

z(t)  是个啥玩意
9楼2011-03-11 20:03:41
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zzg_gm

银虫 (小有名气)


小木虫(金币+0.5):给个红包,谢谢回帖交流
这要用If语句判断,确定一些量的值然后用dsolve函数求解!要是想画图,可将求解出的函数表达式用plot命令画出(因为是一个个函数画图,只是二维的,所以用plot,而不是plot3),!你再试试,命令的格式一般的书上都有的!
当我明白我该怎样度过我今后的人生的时候,坚定执着,迈步向前。
10楼2011-03-11 20:33:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 ybnav 的主题更新
普通表情 高级回复(可上传附件)
信息提示
请填处理意见