终于蹭到了心心念的数学建模课,尽管不知道对未来意味着什么,我还是选择了旁听这门课,撂下了Web应用,不管了,以下是第一份实验报告。
解决方法及MATLAB程序代码 通过MATLAB解得方程 Trial>> x=dsolve(′Dx=−log(2)/5∗x′,′x(0)=100∗N′,′t′) x = 100∗N∗exp(−(t∗log(2))/5) Trial>> y=dsolve(′Dy=C∗exp(−v∗t)−u∗y′,′y(0)=0′,′t′) y = (C∗exp(t∗u−t∗v)∗exp(−t∗u))/(u−v)−(C∗exp(−t∗u))/(u−v) 其中的C表示100*N*log(2)/5,v表示log(2)/5, u表示log(2)/6, 得到的 ⎧⎩⎨⎪⎪⎪⎪x=100∗N∗e−t∗ln25y=100∗N∗ln25ln26−ln25∗(e−tln25−e−tln26) , 令 y′=0 ,解得 tmax=30∗ln(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))); endgetFun函数如下:
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实验结果解决方法及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使用的总结: 编写函数时,要将函数名与文件名相同,函数格式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