微分方程的求解

一阶微分方程的求解

例题:求y'=cost在t=0,pi,2pi,3pi,……,10pi上的解,已知y(0)=2;

f = @(t,y) cos(t); % 定义函数 f(t,y) = cos(t)
tspan = 0:pi:10*pi; % 时间范围
y0 = 2; % 初值
[t, y] = ode23(f, tspan, y0); % 注意调用格式
[t,y]'

% 将高阶转为一阶: y1 = y , y2 = y'
% y1'= y2, y2'= -sin(y1) + sin(5t)
f = @(t,y) [y(2); -sin(y(1))+sin(5*t)];
tspan = [0, 20]; % 时间范围
y0 = [1; 0]; % 初值
[t, y] = ode23(f, tspan, y0) % 注意调用格式

传染病模型(新闻传播模型)

S表示易感人群,I表示感染人群,R表示康复人群,符号bata表示接触率,符号gamma表示康复率。

odesir.m

function dy = odesir(t, y, beta, gamma)
%注意,dy是一个3x1矩阵
dy = [ -beta*y(1)*y(2); % dS/dt
     beta*y(1)*y(2) - gamma*y(2); % dI/dt
     gamma*y(2)];% dR/dt
end
N = 100; % 起始人数
beta = 0.01; % 接触率
gamma = 0.1; % 康复率
tspan = [0, 50]; % 时间,1到50天
y0 = [99 1 0];   % 初值,S=99,I=1,R=0
[t y] = ode45(@odesir,tspan,y0,[],beta,gamma);
plot(t, y);
xlabel('time'); ylabel('population');
legend('S', 'I', 'R')

运行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值