小船过河 matlab实现.doc

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
小船过河 matlab实现

(一)问题分析 一只小船要渡过一条宽为d的河流,目标是起点A正对着的另一岸B点。已知河水的流速v1与船在静水中的速度v2之比为k。 建立小船的航线模型,并求其解析解。 设d=100m,v1=1m/s,v2=2m/s,用数值解法求渡河所需时间,任意时刻小船的位置及航行曲线,作图,并于解析解比较; 若流速v1=0,0.5,1.5,2(m/s),结果如何。 这个问题涉及的主要变量有:船在静水中的速度v2,河水的速度v1,v1与v2速度之比为k,船的航行时间t,船在任意时刻的位置x,y。由于k未知,所以船过河的具体航线有多种情况,但针对本题过河问题为了更好的解决问题,不妨做以下假设: (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) 又由于cos(a)=x/sqrt(x^2+y^2),sin(a)=-y/sqrt(x^2+y^2)。 则微分方程为: dx/dt=v1-v2* x/sqrt(x^2+y^2) dy/dt=-v2* y/sqrt(x^2+y^2) 初始条件为: x(0)=0,y(0)=-100;6 以上就是小船航线的数学模型。 (三)求解模型的数学方法(解析解与数值解) (1)解析解的得出,matlab算法的具体实现,以及解析解的图形 根据 dx/dt=v1-v2* x/sqrt(x^2+y^2) dy/dt=-v2* y/sqrt(x^2+y^2) 两式相除得到dy/dx=v2*y/(v1* sqrt(x^2+y^2)-v2) 分离变量得到: dx/x=du/(-u*v1*sqrt(1+u^2)/(v1*sqrt(1+u^2)-v2)) 其中u=y/x; 然后利用微分方程得到x关于y的解析表达式: x=1/2*c^(-k)*y^(1-k)-1/2*c^k*y^(k+1) 然后根据初始条件:x(0)=0,y(0)=-d,d=100; 得到:c=-0.01. 则小船航线的解析数学表达式为: x=1/2*(-0.01)^(-k)*y^(-k+1)-1/2*(-0.01)^(k)*y^(k+1). 解析解的matlab程序: xiaochuan.m function x=xiaochuan(y) k=0.3; x=1/2*(-0.01).^(-k).*y.^(-k+1)-1/2.*(-0.01).^(k).*y.^(k+1); hangxing.m y=[0:-0.1:-100]; for i=0:1:1000 x(:,i+1)=xiaochuan(-i/10); end plot(x,y); title(小船过河1) xlabel(x轴); ylabel(y轴); hangxing.m (2)数值解法的具体实现与matlab算法: 根据此模型的微分方程: dx/dt=v1-v2* x/sqrt(x^2+y^2) dy/dt=-v2* y/sqrt(x^2+y^2) 并且初始条件: x(0)=0,y(0)=-d 通过龙格——库塔方程求其数值解: 由于该模型的参数为:河宽d,船在静水中的速度v2,河水流速v1,船在任意时刻的位置(x,y),时间t,船在a点时t=0。则小船航线的微分方程的matlab算法如下: xiaochuan1.m?: function dx=xiaochuan1(t,x,v1,v2) s=(x(1)^2+x(2)^2)^0.5;%x(1),x(2)表示x,y dx=[v1-v2*x(1)/s;-x(2)*v2/s];%以列向量的形式表示小船过河的微分方程 在编写运行程序时设定时间t的起终点和中间的等分点,终点时间根据船在静水中速度和水的流速设为150s,时间间隔为0.01s。 lv.m ts=[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,x] subplot(1,2,1),plo

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档