坏学生旁听数学建模——作业一

    xiaoxiao2021-03-25  105

    终于蹭到了心心念的数学建模课,尽管不知道对未来意味着什么,我还是选择了旁听这门课,撂下了Web应用,不管了,以下是第一份实验报告。


    一、实验内容

    1、数学建模示例(三):药物中毒的施救

    2、建立数学模型分析题(习题8(4)-(5))

    3、微分方程数值解及MATLAB实现

    二、实验题目

    (一)题目一

    题目: 药物中毒施救模型延伸 利用1.5节药物中毒施救模型确定对于孩子(血液总量为2000ml)及成人(血液总量为4000ml)服用氨茶碱能引起严重中毒和致命的最小剂量。问题分析 由1.5节可知, {dxdt=λxdydt=λxμy , 结合当前题意,设 孩子至少服用 Nc1 片药片,成人至少服用 Na1 片药片,引起严重中毒; 孩子至少服用 Nc2 片药片,成人至少服用 Na2 片药片,致命, 也就是求解在 x(0)=100N(mg),(NNc1,Na1,Nc2,Na2),y(0)=0(mg) 时的上述方程组。模型建立 {dxdt=λxdydt=λxμy , x(0)=100N(mg),(NNc1,Na1,Nc2,Na2) , y(0)=0(mg) , λ=ln25,μ=ln26 ,

    解决方法及MATLAB程序代码 通过MATLAB解得方程 Trial>> x=dsolve(Dx=log(2)/5x,x(0)=100N,t) x = 100Nexp((tlog(2))/5) Trial>> y=dsolve(Dy=Cexp(vt)uy,y(0)=0,t) y = (Cexp(tutv)exp(tu))/(uv)(Cexp(tu))/(uv) 其中的C表示100*N*log(2)/5,v表示log(2)/5, u表示log(2)/6, 得到的 x=100Netln25y=100Nln25ln26ln25(etln25etln26) , 令 y=0 ,解得 tmax=30ln(65)ln2 ,即在 t=tmax 时,y取最大值。 由题意可知,孩子出现严重中毒时为 200(mg) ,致命时为 400(mg) , 成人出现严重中毒时为 400(mg) ,致命时为 800(mg) , 由MATLAB,利用getN函数(具体实现如下)解N的值,并使用getFun函数(具体实现如下)绘制图像 Trial>> Nc1 = getN(200) Nc1 = 4.9766 Trial>> Nc2 = getN(400) Nc2 = 9.9533 Trial>> Na1 = getN(400) Na1 = 9.9533 Trial>> Na2 = getN(800) Na2 = 19.9066 Trial>> getFun(Nc1) Trial>> getFun(Nc2) Trial>> getFun(Na1) Trial>> getFun(Na2) Trial>> legend(‘孩子严重’,’孩子致命’,’成人严重’,’成人致命’) grid on getN函数如下:

    function N = getN(Min) %在给定浓度下,求解药物服用。其中Min是最低药物中毒的浓度 v = log(2) / 5; u = log(2) / 6; x = log(6/5); N = (u - v) * Min / (100 * v * (exp(-6 * x) - exp(-5 * x))); end

    getFun函数如下:

    function getFun( N) %t表示时间,y表示血液药物量,函数用于生成y-t函数图像 t = 1:0.01:24; v = log(2) / 5; u = log(2) / 6; y = 100 * N * v * ( exp(t * v * -1) - exp(t * u * -1)) / (u - v); plot(t, y); hold on; end实验结果

    (二)题目二

    题目1:某人家住T市在他乡工作,每天下班后乘火车于6:00抵达T市车站,他的妻子驾车准时到车站接他回家,一日他提前下班搭早一班火车于5:30抵T市车站,随即步行回家,他的妻子往常一样驾车前来,在半路上遇到他,即接他回家,此时发现比往常提前了10min,问他步行了多长时间。问题分析 假设正常从车站驾车到家,使用了t分钟; 由于提前10分钟到家,则单程提前了5分钟; 又设步行tx分钟,由此可以的到 6:00 + t = 5:30 + tx + t - 5 + 10模型建立 解上面的方程,得 tx = 6:00 - 5:30 - 5 = 25分钟实验结果 解得他步行了25分钟。题目2:一男孩和一女孩分别在离家2km和1km且方向相反的两所学校上学,每天同时放学后分别以4km/h和2km/h的速度步行会见,一只小狗以6km/h的速度由男孩处奔向女孩,又从女孩奔向男孩,如此往返知道会小狗奔波了多少路程。 如果男孩和女孩上学时小狗也往返奔波在他们之间,问当他们到达学校时小狗在何处。问题分析 假设男孩与女孩家都在一点,并将其作为原点,建立一维数轴, 则学校1坐标是-2,学校2坐标是1,取数轴正方向为速度正方向; 则男孩经过的坐标为-2 + 4 * t, 女孩经过的坐标为 1 - 2 * t, 小狗的坐标为xOfDog= {6t+xd,v<06t+xd,v>0 其中的x_{d}是小狗当前的初始点,起始为0; 以上0 \leq t \leq 0.5.模型建立 2+4t=xOfDog ,解得的点作为x_{0}的新值,并将速度反向; 12t=xOfDog , 解得的点作为x_{0}的新值,并将速度反向; 重新建立起上述方程,循环求解,至她们到家。

    解决方法及MATLAB程序代码 解决方法,使用程序循环求解上述模型

    xd = 0;%表示小狗运动曲线的参数 t = 0;%初始时间为0 dis = 0;%表示所经过的距离 while(abs(t - 0.5) > 1e-6)%如果时间大于等于0.5,则跳出循环 t = (xd + 2) / 10;%建立男孩与小狗运动的方程,并求解,得相遇时间 if(abs(t - 0.5) < 1e-6) %如果时间大于等于0.5,则跳出循环 break; end dis = dis + 6 * t;%累计路程 xd = -6 * 2 * t + xd;%更新运动曲线参数 t = (1 - xd) / 8;%建立女孩与小狗运动的方程,并求解,得相遇时间 if(abs(t - 0.5) < 1e-6) break; end dis = dis + 6 * t;%累计路程 xd = 6 * 2 * t + xd;%更新运动曲线参数 end disp(dis);%显示运算结果 clear

    实验结果 在命令窗口中输入:BoyGirlDog

    显示:30.5000

    (三)题目三

    题目:微分方程的求解问题分析:使用MATLAB函数求解微分方程模型建立:求解 dydx+μy=1100λeλt ,在以t为自变量,y(2) = 236.5的条件下的解。解决方法及MATLAB程序代码 dsolve(Dy=11000.1386exp(0.1386t)0.4885y,y(2)=236.5,t) ;实验结果 ans = exp((977t)/2000)((473exp(977/1000))/2(1524600exp(3499/5000))/3499)+(1524600exp((977t)/2000)exp((3499t)/10000))/3499

    三、实验总结

    数学建模关键是将文字等信息转化为数学模型,其过程是建模之后借助于工具对问题求解的过程。以下是对MATLAB使用的总结: 编写函数时,要将函数名与文件名相同,函数格式function 返回值 函数名(函数参数) 函数体 end 其中的返回值,在函数体内直接赋值,不需要return语句返回具体的返回值,此处与C/C++等语言不同,见题目一getN函数。grid on也可以将图标用网格进行划分; legend(‘孩子严重’,’孩子致命’,’成人严重’,’成人致命’),分别标志图线1,图线2,图线3,图线4的名称。对于MATLAB中的dsolve()函数,得到的是一个特解,对于复杂的微分方程,可能求得的解并不准确,需要检验disp()函数用于输出变量名,至于print则是用于输出文件,此处与C/C++等语言不同。

    四、参考文献

    函数的编写,参考于http://www.cnblogs.com/luxiaolai/p/4011941.html关于以E底的对数函数:参考于http://blog.sina.com.cn/s/blog_56ef652d0100ebez.html曲线上加标注,参考于http://blog.sina.com.cn/s/blog_5bb18383010127v1.html其中数学公式的实现,参考于http://blog.sina.com.cn/s/blog_78a6df1d0101630x.html
    转载请注明原文地址: https://ju.6miu.com/read-37104.html

    最新回复(0)