24小时热门版块排行榜    

查看: 1059  |  回复: 6

毛毛虫飞了

新虫 (著名写手)

[求助] 求帮忙解微分方程组 已有1人参与

微分方程组如下,由于自己数学不行,也不会用matlab,所以恳请大神帮忙解一下下面的微分方程组。其中x y z m为因变量,t为自变量,k1 k2 k3 k4均为常量。

求帮忙解微分方程组


@月只蓝 @beefly 发自小木虫Android客户端
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

512095518

专家顾问 (正式写手)

【答案】应助回帖

感谢参与,应助指数 +1
代码:
[x,y,z,m] = dsolve('Dx=-k1*x','Dy=k1*x-k2*y',...
    'Dz=k2*y-k3*z','Dm=k3*z-k4*m',...
    'x(0)=1,y(0)=0,z(0)=0,m(0)=0','t');
x = simplify(x)
y = simplify(y)
z = simplify(z)
m = simplify(m)
结果:
x=(k1*k2*k3*exp(-k2*t))/((k1 - k2)*(k2 - k3)*(k2 - k4)) - (k1*k2*k3*exp(-k1*t))/((k1 - k2)*(k1 - k3)*(k1 - k4)) - (k1*k2*k3*exp(-k3*t))/((k1 - k3)*(k2 - k3)*(k3 - k4)) + (k1*k2*k3*exp(-k4*t))/((k1 - k4)*(k2 - k4)*(k3 - k4))
y=exp(-k1*t)
z=(k1*exp(-k2*t))/(k1 - k2) - (k1*exp(-k1*t))/(k1 - k2)
m=(k1*k2*exp(-k1*t))/((k1 - k2)*(k1 - k3)) - (k1*k2*exp(-k2*t))/((k1 - k2)*(k2 - k3)) + (k1*k2*exp(-k3*t))/((k1 - k3)*(k2 - k3))
没有极限,只有超越!
2楼2016-10-20 22:45:01
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

512095518

专家顾问 (正式写手)

【答案】应助回帖

我仔细看了下我给你的代码回复,有一个地方要注意,就是解的顺序。
也就是dsolve得到的4个解的顺序,matlab可能是按m,x,y,z这样排列的。所以正确的解应该是:
m=(k1*k2*k3*exp(-k2*t))/((k1 - k2)*(k2 - k3)*(k2 - k4)) - (k1*k2*k3*exp(-k1*t))/((k1 - k2)*(k1 - k3)*(k1 - k4)) - (k1*k2*k3*exp(-k3*t))/((k1 - k3)*(k2 - k3)*(k3 - k4)) + (k1*k2*k3*exp(-k4*t))/((k1 - k4)*(k2 - k4)*(k3 - k4))
x=exp(-k1*t)
y=(k1*exp(-k2*t))/(k1 - k2) - (k1*exp(-k1*t))/(k1 - k2)
z=(k1*k2*exp(-k1*t))/((k1 - k2)*(k1 - k3)) - (k1*k2*exp(-k2*t))/((k1 - k2)*(k2 - k3)) + (k1*k2*exp(-k3*t))/((k1 - k3)*(k2 - k3))
没有极限,只有超越!
3楼2016-10-20 23:32:01
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

512095518

专家顾问 (正式写手)

【答案】应助回帖

代码也可以改成这样:
dsolve('Dx=-k1*x','Dy=k1*x-k2*y',...
    'Dz=k2*y-k3*z','Dm=k3*z-k4*m',...
    'x(0)=1,y(0)=0,z(0)=0,m(0)=0','t');
x=ans.x
y=ans.y
z=ans.z
m=ans.m
这样的好处在不容易出错,直接从结构体中获得解
没有极限,只有超越!
4楼2016-10-20 23:41:23
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

毛毛虫飞了

新虫 (著名写手)

引用回帖:
4楼: Originally posted by 512095518 at 2016-10-20 23:41:23
代码也可以改成这样:
dsolve('Dx=-k1*x','Dy=k1*x-k2*y',...
    'Dz=k2*y-k3*z','Dm=k3*z-k4*m',...
    'x(0)=1,y(0)=0,z(0)=0,m(0)=0','t');
x=ans.x
y=ans.y
z=ans.z
m=ans.m
这样的好处在不容易出错, ...

谢谢你啦,太感激了,我要像你学习

发自小木虫Android客户端
5楼2016-10-21 01:19:24
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

毛毛虫飞了

新虫 (著名写手)

引用回帖:
2楼: Originally posted by 512095518 at 2016-10-20 22:45:01
代码:
= dsolve('Dx=-k1*x','Dy=k1*x-k2*y',...
    'Dz=k2*y-k3*z','Dm=k3*z-k4*m',...
    'x(0)=1,y(0)=0,z(0)=0,m(0)=0','t');
x = simplify(x)
y = simplify(y)
z = simplify(z)
m = simplify(m)
结 ...

您好,我用您给的代码算出来结果怎么和你给的不一样呢?
x =

-exp(-t*(k1 + k2 + k3 + k4))*((k1*k2*k3*exp(t*(k2 + k3 + k4)))/((k1 - k2)*(k1 - k3)*(k1 - k4)) - (k1*k2*k3*exp(t*(k1 + k3 + k4)))/((k1 - k2)*(k2 - k3)*(k2 - k4)) + (k1*k2*k3*exp(t*(k1 + k2 + k4)))/((k1 - k3)*(k2 - k3)*(k3 - k4)) - (k1*k2*k3*exp(t*(k1 + k2 + k3)))/((k1 - k4)*(k2 - k4)*(k3 - k4)))


y =

exp(-k1*t)


z =

(k1*exp(-t*(k1 + k2))*(exp(k1*t) - exp(k2*t)))/(k1 - k2)


m =

(k1*k2*exp(-t*(k1 + k2 + k3))*(k1*exp(t*(k1 + k2)) - k1*exp(t*(k1 + k3)) - k2*exp(t*(k1 + k2)) + k2*exp(t*(k2 + k3)) + k3*exp(t*(k1 + k3))
6楼2016-11-03 15:08:35
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

毛毛虫飞了

新虫 (著名写手)

引用回帖:
3楼: Originally posted by 512095518 at 2016-10-20 23:32:01
我仔细看了下我给你的代码回复,有一个地方要注意,就是解的顺序。
也就是dsolve得到的4个解的顺序,matlab可能是按m,x,y,z这样排列的。所以正确的解应该是:
m=(k1*k2*k3*exp(-k2*t))/((k1 - k2)*(k2 - k3)*(k2  ...

哦哦,知道啦,没有化简
7楼2016-11-03 15:21:46
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 毛毛虫飞了 的主题更新
信息提示
请填处理意见