数学建模实验报告4酵母培养物离散阻滞增长模型(共7页).doc
精选优质文档-倾情为你奉上成绩实验名称酵母培养物的离散阻滞增长模型院系理学院专业理科实验班级姓名学号日期实验目的简述本次实验目的:掌握酵母培养物的阻滞增长差分方程模型的分析与建模方法,并会利用Matlab作数值计算与误差分析. 实验准备你为本次实验做了哪些准备:学习离散阻滞增长模型,学习如何用差分方程建立离散阻滞增长模型,学习用MATLAB做数值计算与误差分析 实验进度本次共有 1 个练习,完成 1 个。实验总结日本次实验的收获、体会、经验、问题和教训: 本次试验我收获颇丰,学会了用差分方程建立离散阻滞增长模型,离散阻滞增长模型就是一阶非线性差分方程,离散阻滞增长模型中一个关键的要素是什么因素导致增长率的递减,我们学习离散阻滞增长模型,不仅要学会计算结果,作图分析,更重要的是我们要学会分析其机理。教师评语一实验题目:已知从测量酵母培养物增长的实验收集的数据如表:时刻/h0123456789生物量/g9.618.329.047.271.1119.1174.6257.3350.7441.0时刻/h101112131415161718生物量/g513.3559.7594.8629.4640.8651.1655.9659.6661.8二实验要求1、作图分析酵母培养物的增长数据、增长率、与相对增长率.2、建立酵母培养物的增长模型.3、利用线性拟合估计模型参数,并进行模型检验,展示模型拟合与预测效果图.4、利用非线性拟合估计模型参数,并进行模型检验,展示模型拟合与预测效果图.5、请分析两个模型的区别,作出模型的评价.三实验内容(1)对于此问,可直接根据数据作图先求相对增长率随时间的变化,程序如下:k=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18;x=9.6,18.3,29.0,47.2,71.1,119.1,174.6,257.3,350.7,441.0,513.3,559.7,594.8,629.4,640.8,651.1,655.9,659.6,661.8;n=1;for n=1:18 dx(n)=x(n+1)-x(n);endr=dx./x(1:18);plot(0:17,r,'kv')xlabel('时间k(小时)'),ylabel('增长率 (%)')title('增长率与时间')模拟效果图如下:再求增长量随时间的变化,程序如下:k=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18;x=9.6,18.3,29.0,47.2,71.1,119.1,174.6,257.3,350.7,441.0,513.3,559.7,594.8,629.4,640.8,651.1,655.9,659.6,661.8;n=1;for n=1:18 dx(n)=x(n+1)-x(n);endplot(0:17,dx,'ko')xlabel('时间k(小时) '),ylabel('增长量 (克)')title('增长量与时间')模拟效果图如下:(2)建立酵母培养物的模型k-时刻(小时);x(k)-酵母培养物在第k小时的生物量(克);r(k)-用前差公式计算的生物量在第k小时的增长率;r-生物量的固有增长率;N-生物量的最大容量。在营养有限的环境下,假设用前差公式计算的增长率r(k)随着生物量x(k)的增加而线性递减,即r_k=(x_(k+1)-x_k)/x_k=r*(1-x_k/N),k=0,1,2根据以上模型假设,即可建立离散阻滞增长模型x_(k+1)=x_k+r*x_k*(1-x_k/N),k=0,1,2(3)首先,根据r_k和x_k的数据多项式拟合出(2)问中的r,N;然后根据生物量的观测数据直接取x_0=9.6,用(2)问中的循环语句进行迭代计算,算出018小时酵母生物量的模拟值,并计算误差平方和,绘制模拟效果图和模拟误差图。程序如下:t=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18;x=9.6,18.3,29.0,47.2,71.1,119.1,174.6,257.3,350.7,441.0,513.3,559.7,594.8,629.4,640.8,651.1,655.9,659.6,661.8;r=(x(2:19)-x(1:18)./x(1:18);a1=polyfit(x(1:18),r,1);r1=a1(2),N1=-a1(2)/a1(1)x1=x(1);for k=1:18 x1(k+1)=x1(k)+r1*x1(k)*(1-x1(k)/N1);endresd1=x-x1;sse1=sum(resd1.2)subplot(2,1,1),plot(t,x,'k*',t,x1,'ks')axis(-1,19,0,670),legend('观测值 ','模拟值 ',4)xlabel('时间 k(小时)'),ylabel('生物量 x_k(克)')title('离散阻滞增长模型的线性模拟效果图 ')subplot(2,1,2),plot(t,resd1,'k.',-1,19,0,0,'k')axis(-1,19,-40,40)xlabel('时间k(小时)'),ylabel('模拟误差')title('离散阻滞增长模型的线性模拟误差')线性拟合结果如下:R1=0.66935 N1=635.71 sse1=6293.2线性模拟效果图如下:(4)对于此问,可以利用MATLAB统计工具箱的非线性拟合函数nlinfit计算参数r和N以及初始值x_0的值,使得误差平方和达到最小值。困难在于待拟合的函数模型不是熟悉的初等函数,而是数列递推关系,但是非线性拟合函数nlinfit仍然胜任。程序如下:函数:function y=Untitled(b,x)y=zeros(size(x);y(1)=b(3);for k=2:length(x) y(k)=y(k-1)+b(1).*y(k-1).*(1-y(k-1)./b(2);end脚本:t=0:18;x=9.6,18.3,29.0,47.2,71.1,119.1,174.6,257.3,350.7,441.0,513.3,559.7,594.8,629.4,640.8,651.1,655.9,659.6,661.8;a2,resd2=nlinfit(t,x,Untitled,0.5,660,9.6)sse2=sum(resd2.2)subplot(2,1,1)plot(t,x,'k*',t,Untitled(a2,t),'ks')axis(-1,19,0,670)legend('观测值 ','模拟值 ',4)xlabel('时间 k(小时)'),ylabel('生物量 x_k(克)')title('离散阻滞增长模型的非线性模拟效果图')subplot(2,1,2)plot(t,resd2,'k.',-1,19,0,0,'k')axis(-1,19,-40,40)xlabel('时间 k(小时)'),ylabel('模拟误差')title('离散阻滞增长模型的非线性模拟误差')非线性拟合结果如下:A2=0.56037 652.46 15Sse2=1353.5非线性模拟效果图如以下:(5)两个模型的区别及评价分别如下:由线性拟合得出的结果和模拟效果图可知,计算结果即固有增长率r=0.66935,大容量N=635.71,误差平方和等于6293.2。计算结果以及模拟误差图表明,线性拟合能够用离散阻滞模型模拟酵母培养物生物量的变化趋势,前半段的误差很小,但后半段的误差很大,误差平方和很大。另外,最大容量N的估计值偏低。总之,线性拟合的模拟效果不够令人满意。由拟和结果及模拟效果图可知,固有增长率r=0.56073,最大容量N=652.46,初始值x_0=15,误差平方和等于1353.5,计算结果以及模拟效果图和模拟误差图表明,非线性拟合能够更好地用离散阻滞增长模型模拟酵母培养物生物量的变化趋势,误差平方和比线性拟合明显下降。另外最大容量N的估计值也比线性拟合更合理。总之,非线性拟合的模拟效果比较令人满意。今后计算差分方程的数据拟合问题,一般都采用这种非线性拟合方法。专心-专注-专业