matlab求解常微分方程数值解

求解如下常微分方程组,其中有s和i两个变量

matlab求解常微分方程数值解_第1张图片

首先声明这个函数文件

function y=infect(t,x)
lamp=11;
u=3;
y=[lamp*x(1)*x(2)-u*x(1),-lamp*x(1)*x(2)]';



x(1)代表i x(2)代表s

利用ode45对其求数值解

ode45是一种变步长4阶5级runge-kutta-felhberg法进行计算

x0=[0.1,0.9]';
[t,x]=ode45('infect',[0,10],x0);
plot(t,x(:,1),'r',t,x(:,2),'b')

ode45中的三个参数第一个为需要求解的函数,第二个参数为求解区间,第三个参数为一个列向量,即待求变量的初始值,注意函数y也必须是一个列向量,所以声明函数时最后进行了转置

返回t为时间向量,为一个列向量

x为一个n(n为变量个数)列与t相同行数的矩阵,最后画出图像如下

matlab求解常微分方程数值解_第2张图片


你可能感兴趣的:(matlab求解常微分方程数值解)