小船过河matlab实现.docx
《小船过河matlab实现.docx》由会员分享,可在线阅读,更多相关《小船过河matlab实现.docx(10页珍藏版)》请在三一办公上搜索。
1、(一) 问题分析一只小船要渡过一条宽为d的河流,目标是起点A正对着的另一岸B点。已知 河水的流速v1与船在静水中的速度v2之比为k。(1) 建立小船的航线模型,并求其解析解。(2) 设d=100m,v1=1m/s,v2=2m/s,用数值解法求渡河所需时间,任意时刻小 船的位置及航行曲线,作图,并于解析解比较;(3) 若流速 v1=0,0.5,1.5,2(m/s),结果如何。这个问题涉及的主要变量有:船在静水中的速度v2,河水的速度v1,v1与v2速 度之比为k,船的航行时间t,船在任意时刻的位置x,y。由于k未知,所以船 过河的具体航线有多种情况,但针对本题过河问题为了更好的解决问题,不妨做
2、以下假设:(1) 船的速度方向始终指向终点B;(2) 船在航行的过程中任意时刻的总速度与航线相切。通过以上假设,小船过河问题就简化为:速度求曲线轨迹问题,微分方程问题。(二) 建立数学模型建立直角坐标系,为方便起见,将B点设为坐标原点,河岸为x轴,垂直于河 岸方向为y轴,如图所示。设在t时刻,小船的位置为(x,y),船头指向与水平 方向的夹角为a。则此时水平方向的速度为 v1-v2*cos(a),竖直方向的速度为 v2*sin(a)。又由于水平方向的速度为dx/dt,竖直方向的速度为dy/dt。则可列出小 船航线的微分方程:dx/dt=v1-v2*cos(a)dy/dt v2*sin(a)又由
3、于 cos(a)=x/sqrt(xA2+yA2),sin(a)=-y/sqrt(xA2+yA2)0则微分方程为:dx/dt=v1-v2* x/sqrt(xA2+yA2)dy/dt=-v2* y/sqrt(xA2+yA2)初始条件为:x(0)=0,y(0)=-100;6以上就是小船航线的数学模型。(三) 求解模型的数学方法(解析解与数值解)解析解的得出,matlab算法的具体实现,以及解析解的图形根据dx/dt=v1-v2* x/sqrt(xA2+yA2)dy/dt=-v2* y/sqrt(xA2+yA2)两式相除得到 dy/dx=v2*y/(v1* sqrt(xA2+yA2)-v2)分离变量得
4、到:dx/x=du/(-u*v1*sqrt(1+uA2)/(v1*sqrt(1+uA2)-v2)其中u=y/x;然后利用微分方程得到x关于y的解析表达式:x=1/2*cA(-k)*yA(1-k)-1/2*cAk*yA(k+1)然后根据初始条件:x(0)=0,y(0)=-d,d=100;得到:c=-0.01.则小船航线的解析数学表达式为:x=1/2*(-0.01)A(-k)*yA(-k+1)-1/2*(-0.01)A(k)*yA(k+1).解析解的matlab程序:xiaochuan.mfunction x=xiaochuan(y) k=0.3;x=1/2*(-0.01).A(-k).*y.A(
5、-k+1)-1/2.*(-0.01).A(k).*y.A(k+1); hangxing.my=0:-0.1:-100;for i=0:1:1000x(:,i+1)=xiaochuan(-i/10);endplot(x,y);title(小船过河1)xlabel(x轴);ylabel(y轴); hangxing.m小船过河1-10 -20 -、-XI -40 -J-雪-50 -/ -60 -70 -80 -90 -10L! -11;-1-U.600.611.52-.2:633.5(2)数值解法的具体实现与matlab算法:根据此模型的微分方程:dx/dt=v1-v2* x/sqrt(xA2+yA
6、2)dy/dt=-v2* y/sqrt(xA2+yA2)并且初始条件:x(0)=0,y(0)=-d通过龙格一一库塔方程求其数值解:由于该模型的参数为:河宽d,船在静水中的速度v2,河水流速v1,船在任意 时刻的位置(x,y),时间t,船在a点时t=0。则小船航线的微分方程的matlab 算法如下:xiaochuanl.m :function dx=xiaochuan1(t,x,v1,v2)s=(x(1)A2+x(2)A2)A0.5;%x(1),x(2)表示x,ydx=v1-v2*x(1)/s;-x(2)*v2/s; %以列向量的形式表示小船过河的微分方程在编写运行程序时设定时间t的起终点和中间
7、的等分点,终点时间根据船在静水 中速度和水的流速设为150s,时间间隔为0.01s。Iv.mts=0:0.01:150;d=input(输入河宽d=);x0=0,-d;opt=odeset(reltol,1e-6,abstol,1e-9);v1=input(输入河水流速v1=);v2=input(输入船在静水中速度v2=);t,x=ode15s(xiaochuan1,ts,x0,opt,v1,v2);t,xsubplot(1,2,1),plot(t,x),title(xt 图),gtext(t轴),gtext(x轴);grid;subplot(1,2,2),plot(x(:,1),x(:,2)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 小船过河 matlab实现 小船 过河 matlab 实现
链接地址:https://www.31ppt.com/p-5177930.html