清华大学谢金星数学实验-作业6
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二常微分方程的数值解
土木系结23 李会平
【实验目的】
1、掌握用matlab解数值微分方程
2、了解龙格-库塔方法的基本原理
3、用这些手段解决一些实际的问题
【实验内容】
4-5 核废料问题
●首先列出问题的运动学方程,由牛顿第二定律,
md2s/dt2=G-F-f
其中m=G/g, f=kv,由于我们熟悉的单位是公制的,所以在定义函数的时候进行了单位转换。以下是函数的定义:
这其实是一个关于s的二阶常微分方程,需要定义两个变量x(1),x(2)将其化为一阶微分方程组,此处x(1),x(2)实际上分别代表速度和深度,相应的微分方程如代码中所示:
dx=[(G-F-k*x(1))/m;x(1)]
(如课堂提醒,中间应该是分号,这点容易出错。)
●接写来进行m文件的命令编写,如下所示:
(1)执行pause之前的代码,得到的结果如下图所示:
该图代表了假设水无限深的情况下,物体速度的变化情况,容易看出速度是有一个上限的,这也符合直观的感受,因为速度不可能无限大,否则阻力无限大,物体将无法继续运动。
(2)红线为题给的速度阈值,可见初步判断速度是有可能超过该阈值的,需要进一步判断沉底的时候是否超过该速度,于是需要做出s和v的关系曲线,即x(2),x(1)的关系曲线,如下所示:
从图像中看出,s趋于∞时候,v也趋于极限值,题给的smax=300*0.3048m,在编程的时候,如果要绘制该水平直线,需要将其转化为数组才能进行绘图,否则会出现错误。(3)但是从这幅图像中,由于s非常大,红线触底,无法直接看出s,v的相交情况,需要进一步限定坐标轴范围进行细化,如下所示:
从图中明显读出,当s达到smax时候,其相应的v>vmax,所以从题给的情况看,工程师们的说法是更有道理的。
在这个例题中,加深了对微分方程数值解的理解,同时在用matlab绘图时也有了更多的心得。绘图时候尤其要注意为数组和数组的对应!另外在通过查询相关知识知道,如果要绘制直接过(a,b)和(c,d)两点的直线,可以直接用plot([a,c],[b,d])命令快速实现,方便了一些作图过程。
4-6小船渡河问题
首先给出问题的理论解法:
建立小船运行的数学模型,用极坐标,以B为原点进行计算。取定BA为极轴。小船位置设为C,可以得到方程组:
消去t
积分得到:
可以解得:
接下来用程序进行数值解和理论解答的分析:
(1)用matlab运算时,采用普通坐标更加方便,所以以A为原点建立直角坐标系,容易得到
据此定义函数m文件如下所示:
(2)相应的主程序为:
其中pause前的代码表示进行v1=1,v2=2时候的数值运算求解绘图。pause后的代码表示分别绘制出v1=0,0.5,1,1.5,2时候的运动轨迹并实现题目(2)中要求的数值解与理论解的对比情况,运行的结果如下所示:
①v1=1m/s,v2=2m/s时候的轨迹图:
(2)然后是v1=0,0.5m/s,1m/s,1.5m/s,2m/s的理论曲线,并实现v1=1m/s时候的理论曲线和实际曲线的对比:
该图中有两点需要注意的地方:
1)标注均在曲线的右方,而v1=0时候的曲线实际上和y轴重合,所以绘出的曲线没有显现出来;
2)注意到v1=1m/s时候的曲线,实际上此处还有一条蓝色曲线,图上可以看到蓝色曲线的痕迹,这是v1=1m/s时候的数值解曲线,可以看出二者的重合度是非常高的,几乎完全重合,这说明之前的数值解的结果是可信的。
另外我们注意到
1)当v1=2m/s的时候,船已经不可能正好到达河的正对岸了,从物理规律也可以直观的理解,因为当v1≥v2时候,v2的任何一个分量都不可能大于v1,这样一定会随着水流向下游走一定的距离,而不可能完全到达对岸;
2)当水流速度逐渐增大的时候,路径越来越凸向右侧,即要到达正对岸会更加‘费力气’,这也是符合生活规律的。
【实验总结】
本次实验总的来说思路较为清晰,通过实验进一步加深了对matlab的了解,巩固了课堂所学的常微分方程的一些知识。在matlab的实现过程中,有很多需要注意的细节,需要耐心细致的去理解和注意,尤其是一些基本命令的实现,编程的时候不能凭感觉,而要符合规范。最后就是可以通过直观的生活规律、物理定律对所得的结果进行初步验证,体现了数值解法的科学性。