- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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
您可能关注的文档
最近下载
- 2025年包头铁道职业技术学院单招职业适应性考试题库完整版.docx VIP
- 2025年包头铁道职业技术学院单招职业适应性考试题库汇编.docx VIP
- 2024《企业现金流量管理问题研究国内外文献综述》7000字.docx VIP
- 交互设计(第2版)教学课件257.ppt VIP
- 2024年徐州幼儿师范高等专科学校高职单招职业技能测验历年参考题库(频考版)含答案解析.docx
- focus-pdca改善案例-提高护士对糖尿病患者胰岛素注射部位正确轮换执行率.pptx
- 2025年合肥通用职业技术学院单招职业技能考试题库及答案1套.docx VIP
- 装配式建筑预制构件运输与堆放—构件现场存放管理.pptx
- 儿保科的发展与规划.pptx
- 思想道德修养与法律基础说课PPT课件.ppt
文档评论(0)