首页 > 编程知识 正文

matlab在常微分方程中的应用,matlab解二阶偏微分方程

时间:2023-05-05 16:09:57 阅读:140403 作者:4974

Matlab求解参数时变的常微分方程一、建立参数时变的SIR模型二、引入实际数据三、利用实际数据估计参数四、时变参数拟合五、常微分方程数值求解法一、欧拉法SIR模型

一.建立参数时变的SIR模型

di/dt=si-i

ds/dt=-si

dr/dt=i

其中:

健康人群、患者、清除者占总人数的比例分别记为I、s、r;

为感染率,为治愈率。

二、部署绩效数据m=xlsread(SARS传播数据. xlsx ),) B2:E66 ); symsI(t ) r ) t; t=1:size(m,1 ); T=T '; r=m 653360,3 ) m 65:4; I=m 65:1 )-r; %实际数据散布图figure('name,'实际数据散布图); subplot (1,2,1 ); plot(t,I,' * '; title (实际数据—I(t ) ); xlabel t; YlabelI(t; subplot (1,2,2 ); plot(t,r,' * '; title (实际数据—r(t ) ); xlabel t; ylabelr(t;

三.利用实际数据估计参数%求差symsu(t ) lam (t ); dr=diff(r; di=diff(I; 为了与%差分数据对应,废弃最后值I=I(1:end-1 ); r=r(1:end-1; t=t(1:end-1; u=dr./i; Lam=(didr )./i; %代拟合数据散点图figure('name )、'拟合参数散点图); subplot (1,2,1 ); plot(t,lam,' * '; title ('参数—lamda(t ) ); xlabel t; YabelLamda(t; subplot (1,2,2 ); plot(t,u,' * '; title ('参数—u ) t ) ); xlabel t; Ylabelu(t;

四.时变参数拟合%拟合工具箱cftoolsyms勤奋啤酒(t ) llam(t ) t; x=t ) 2:21; y=lam(2:21; DISP(lam(t )的指数拟合); lam=fit(x,y,' exp1' ) disp ) ) u ) t )的指数拟合); x=t(20336050; y=u(20336050; 勤奋的啤酒=fit(x,y,' exp1' ) figure(2) 2; subplot (1,2,1 ); 保持打开; plot(llam ) t ); subplot (1,2,2 ); 保持打开; plot (勤奋的啤酒(t );

五、常微分方程的数值求解法1、欧拉法求解SIR模型的数值解%r(t1 )=u ) t )-I ) t ) r ) t ); h=1; f=@(t,r )勤奋的啤酒(t ) ) ii ) t; y=Zeros(size ) t ); y(1)=r ) 1; fork=1:(Length(t )-1 ) (根据通常的欧拉方法y ) k1 )=y ) k ) h*f ) k,y ) k ) ) ) ) ) ) ) ) ) 65 eue endrr=y; %同样,I(t ) ) di/dt=) lamda-u ) I ) dr/dt=u*if=@ ) t,I ) I* ) llam(t ) -勤奋啤酒) t ); ii=Eulerpro(f,I )1),t ); 图形(1); subplot (1,2,1 ); 保持打开; plot(t,ii ); subplot (1,2,2 ); 保持打开; plot(t,rr ); 2、龙格—库塔法求解SIR模型的数值解%fi=@(t,I ) I* ) llam(t )勤奋啤酒(t ) ); %fr=@(t,r )勤奋的啤酒) t ) ) I; f=@(t,y ) [y(1) * ) llam(t ) -勤奋的啤酒(t ) ); 勤奋的啤酒(t ) y )1); [x,y]=ode45(f,1:t(end ),[I )1) r )1) ]; 图形(1); subplot (1,2,1 ); 保持打开; plot(x,y ) :1 ); legend (原始数据)、) Euler )、) R-K ); subplot (1,2,2 ); 保持打开; plot(x,y ) :2 ); legend (原始数据)、) Euler )、) R-K );

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。