dx0/dt =20-0.15*x0*x1+0.8*0.05*x1+0.8*0.05*x2+0.8*0.05*x3
dx1/dt =x1*(-0.05+0.0265*0.15*x0-0.15*x2)
dx2/dt =x2*(-0.05+0.15*0.15*x1-0.15*x3)
dx3/dt ==x3*(-0.05+0.15*0.15*x2)
我想要的就是解析解,而且我也像你所说的做了,它显示 Error, (in dsolve/IC) The 'implicit' option is not available when giving Initial Conditions
紧急求教,matlab解四元微分方程的程序,谢谢
答案:2 悬赏:40 手机版
解决时间 2021-02-28 15:54
- 提问者网友:欲望失宠
- 2021-02-28 03:07
最佳答案
- 五星知识达人网友:逃夭
- 2021-02-28 04:40
先建立微分方程组子函数:
function f=yourfun(t,x)
f=zeros(4,1);
f(1) =20-0.15*x(1)*x(2)+0.8*0.05*x(2)+0.8*0.05*x(3)+0.8*0.05*x(4)
f(2) =x(2)*(-0.05+0.0265*0.15*x(1)-0.15*x(3))
f(3) =x(3)*(-0.05+0.15*0.15*x(2)-0.15*x(4))
f(4) =x(4)*(-0.05+0.15*0.15*x(3))
再调用
[T,X] = ode45(@yourfun,[0 10],[0 0.5 0 1]);
如果想直接看到结果可用
plot(T,X)
function f=yourfun(t,x)
f=zeros(4,1);
f(1) =20-0.15*x(1)*x(2)+0.8*0.05*x(2)+0.8*0.05*x(3)+0.8*0.05*x(4)
f(2) =x(2)*(-0.05+0.0265*0.15*x(1)-0.15*x(3))
f(3) =x(3)*(-0.05+0.15*0.15*x(2)-0.15*x(4))
f(4) =x(4)*(-0.05+0.15*0.15*x(3))
再调用
[T,X] = ode45(@yourfun,[0 10],[0 0.5 0 1]);
如果想直接看到结果可用
plot(T,X)
全部回答
- 1楼网友:雪起风沙痕
- 2021-02-28 05:31
调用方法:[t,x] = ode45(@eqx,[0 0.2] ,[0 1 1.1 1.25])x的初始值写在一个矩阵里.
另外你的函数定义时k少一维k(4),我给你加了一个:
function xdot = eqx(t,x);
m = 0.5;
alf = 0.15;
k=[0.0265,0.1,0.15,0.12];
q=20;
a=0.8;
xdot = zeros(4,1);
xdot(1) = q - alf * x(1) * x(2) + a*m*(x(1)+x(2)+x(3)+x(4));
xdot(2) = x(2) * (-m + k(2) * alf * x(1) - alf * x(3));
xdot(3) = x(3) * (-m + k(3) * alf * x(2) - alf * x(4));
xdot(4) = x(4) * (-m + k(4) * alf * x(3));
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯