matlab ode45 求解常微分方程组dx/dt = c-b*x-w*x*y;dy/dt = w*x*y-(b+m)*y;其中c,b,w,m为已知参数,x,y为未知的,分别对t求导,请问这个常微分方程组要怎么用ode45解呢?
2020-04-29
matlab ode45 求解常微分方程组
dx/dt = c-b*x-w*x*y;
dy/dt = w*x*y-(b+m)*y;
其中c,b,w,m为已知参数,x,y为未知的,分别对t求导,
请问这个常微分方程组要怎么用ode45解呢?
优质解答
这个方程要解出来还要初始条件吧
不妨设(x(0),y(0))=(A,B);
还有用ode45只能得到数值解,不能给出解析式表达
那么先建立一个函数文件
test_fun.m
function dx=tsst_fun(x,t)
dx(1)= c-b*x(1)-w*x(1)*x(2);
dx(2)=w*x(1)*x(2)-(b+m)*x(2);
那么调用ode45
x0=(0,0);
t0=0:0.01:10;
;%根据你所想要的求得值设定t0,间隔是任意的,与求解所用的步长无关,
[x,t]=ode45(@test_fun,t0,x0);
得到了
这个方程要解出来还要初始条件吧
不妨设(x(0),y(0))=(A,B);
还有用ode45只能得到数值解,不能给出解析式表达
那么先建立一个函数文件
test_fun.m
function dx=tsst_fun(x,t)
dx(1)= c-b*x(1)-w*x(1)*x(2);
dx(2)=w*x(1)*x(2)-(b+m)*x(2);
那么调用ode45
x0=(0,0);
t0=0:0.01:10;
;%根据你所想要的求得值设定t0,间隔是任意的,与求解所用的步长无关,
[x,t]=ode45(@test_fun,t0,x0);
得到了