- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于微分方程方法求解的鸭子过河问题
李xl,刘mz,刘y
摘要: 本文首先用MATLAB模拟鸭子过河的过程,得到鸭子在河中的轨迹;接着应用物理学的知识,通过建立并求解关于鸭子轨迹的微分方程,得出了轨迹的解析式:
并验证了轨迹的正确性和对结果经行了有关分析、评价等。
关键词:微分方程;鸭子过河;MATLAB模拟
问题重述
有一条河,宽s米。一只鸭子在河的一侧,在河的对岸有鸭子最喜欢吃的食物。现在鸭子很饿,它想尽快吃到食物。鸭子在河中游动的轨迹。设鸭子的游动速度是,河水流动的速度是。
二、模型假设
河水的流动速度是一个定值。
鸭子的游动速度是一个定值,并且速度方向始终是朝向食物的。
对于假设一,在无风的情况下,河不同位置的水流动速度相差不大,可以近似看作定值。对于假设二,对于鸭子等熟悉水性的动物,在一个不长的时间内,其游动速度是不会变化太大的,而且一般的动物接近食物时总是直接朝向食物的。
模型建立及求解
以鸭子的位置为坐标原点,以垂直于的方向和的方向分别为x轴和y轴的正方向建立坐标系。以下的过程中均使用该坐标系。易得鸭子的坐标为(0,0),食物的坐标为(s,0)。
基于MATLAB的鸭子过河过程的模拟
由于鸭子实际的游动过程中,的方向是不断变化的。故以一个很小的时间t为单位,将鸭子的整个游动过程按时间分段。在每一段时间t内,近似地认为的方向不变。设()(t=1,2,3…)表示第i段时间末鸭子的位置坐标,并令()=(0,0);表示第i段时间开始时鸭子与食物的距离,为第i段时间开始时与x轴正方向的夹角。可得如下递推关系式:
i=1,2,3…
以下是MATLAB中的实现。
function duck1(duck_v,water_v,width,dt)
%duck_v为鸭子的游动速度,water_v为河水的流动速度,width为河的宽度
%dt为将时间段的长度
xi=0;yi=0;n=0;x=[xi];y=[yi];
while(n=500 xi=width)
r=sqrt((width-xi)^2+yi^2);
cos=(width-xi)/r;sin=yi/r;
xi=xi+duck_v*cos*dt;yi=yi+(water_v-duck_v*sin)*dt;
x=[x,xi];y=[y,yi];n=n+1;
end
plot(x,y,b--,width,0,rp-);
title(鸭子过河的模拟程序);
xlabel(河的垂直方向);ylabel(河的方向);
text(width+2,2,食物);
下面以河长100,时间间隔0.5,水的流动速度2,鸭子的流动速度1、2、3进行模拟。
duck1(1,2,100,0.5)
duck1(2,2,100,0.5)
duck1(3,2,100,0.5)
通过MATLAB的模拟粗略地可知,鸭子的游动轨迹可能有三种情形。下面定量的研究鸭子的运动轨迹。
用微分方程求解鸭子的游动轨迹
设鸭子的的游动轨迹的参数方程为)。用为鸭子在x轴,y轴方向的分速度。根据物理学的相关知识,鸭子在点(x,y)时,有以下关系成立:
②÷①得:
令,得y=u(s-x),则。
则③可化为
得:
当x=0,y=0时,u=0。可求得=-ln(s)。
得:
得:
故鸭子的游动轨迹为:
。
通过将方程的图像和模拟所得的图像进行比较,对所求的方程进行检验如下。重新编写函数文件(为了让图像更清楚,在图像中只画出了模拟得到的部分数据)并运行。
duck3(1,2,100,0.5)
duck2(2,2,100,0.5)
duck2(3,2,100,0.5)
从图像的比较中,可以很容易看出二者吻合的十分一致。
3、结果分析
由可知:只要不变,鸭子的轨迹就不会变。具体的:
故,当时鸭子是可以直接游到食物处的;当时,鸭子能游到距食物处;当时,鸭子将永远游不到对岸(当然这种情况不会发生,鸭子一定会采取其他游动方式)。
模型评价
文中的模型虽然是在大小不变的条件下得到的,但是仍具有很好的借鉴意义并可经过修改仍用建立该模型的过程重新建立一个更具有普遍意义的模型。由于知识所限,并没有对得到的模型经行更深入的分析,但是应该已经足够了。
参考文献
东北师范大学微分方程教研室. 常微分方程第二版:高等教育出版社
王正林、龚纯、何倩等.精通MATLAB科学计算:电子工业出版社
附件
function duck2(duck_v,water_v,width,dt)
%duck_v为鸭子的游动速度,water_v为河水的流动速度,width为河的宽度
%dt为将时间段的长度
xi=0;yi=0;
n=0;x=[xi];y=[yi];
while(n=500 xi=width)
r=sq
文档评论(0)