数值分析课程设计

  • 格式:doc
  • 大小:1.05 MB
  • 文档页数:13

数值分析课程设计

数值分析课程设计—小船过河问题

理学院信息与计算科学专业

课程设计的目的和意义:

 《课程设计》是数值分析的同步课程,是《数值分析》的上机实习课。

 《数值分析》课程中构造了各种有效的算法和有效公式,同学们通过上机作课程设计,学习揣摩这些算法的思想和构造,评价算法的优劣性。

 通过上机,可以提高我们运用数学软件(如MATLAB软件)编程解决问题的能力,为今后从事科学计算和软件开发打下良好的基础。

课程设计的题目:

一定条件下小船过河问题的研究小船过河模型的研究

问题:小船渡过宽为d的河流(A—B),v1为河水流速,v2为静水速度.渡船时船头始终指向B点.

1)建立小船的航线方程,求其解析解.

2)设d=100m,v1=1m/s v2=2m/s,用数值解法求渡河所需时间, 任意时刻小船的位置及航行曲线,作图,并与解析解比较.若流速v1为0 ,0.5,1.5,2(m/s).结果如何?

问题分析与题目意义:

小船过河问题是我们在初中、高中都经常见到的,就本题而言,它是在已知小河的水流速度、小船在静水中的速度、小河宽的的条件下,用不同方法(解析方法与数值方法)求解小船的航线方程、小船在任意时刻的位置(坐标)及渡河所需的时间的问题,该问题虽然不是很难,但是通过此问题的研究我们可以进一步加深和巩固我们对数值分析课程的理解合运用,同时也可以提高我们运用数学软件(如MATLAB软件)编程解决问题的能力,为今后从事科学计算和软件开发打下良好的基础。

问题假设:

1、 假设小河的水流速度是恒定不变的。

2、 假设小船在小河中的速度大小是恒定不变的。

3、 假设小河的河岸线在一定的范围内是近似平行的两条平行线,任取垂直于河岸线的A、B两点,河宽为d(如下图(1)所示)。

4、 假设小船在行驶的过程中船头始终指向对岸(对岸的目的地B点)。

5、 假设水流速度v1与小船速度v2的合速度v与小船的行驶轨迹始终相切。

数值分析课程设计

图(1)

符号说明:

符号 符号意义

V1 小河中水流的速度

V2 小船在静水中的速度

V 水流速度v1与小船速度v2的合速度

A 小船过河的出发点

B 小船过河出发点垂直于对岸的一定(船头始终指向的点)

小船速度V2的方向与水流速度V1正向的夹角

的速度比

知识回顾:解析解、数值解究竟是什么东东

解析解的定义:

解析解是一些严格的公式,给出任意的自变量就可以求出其因变量,也就是问题的解, 他人可以利用这些公式计算各自的问题. 所谓的解析解是一种包含分式、三角函数、指数、对数甚至无限级数等基本函数的解的形式。用来求得解析解的方法称为解析法,解析法即是常见的微积分技巧,例如分离变量法等。解析解为一数值分析课程设计

封闭形式的函数,因此对任一独立变量,我们皆可将其带入解析函数求得正确的相依变量。解析解也被称为闭式解。

数值解的定义:

数值解是采用某种计算方法,如有限元的方法, 数值逼近,插值的方法, 得到的解.别人只能利用数值计算的结果, 而不能随意给出自变量并求出计算值. 当无法藉由微积分技巧求得解析解时,这时便只能利用数值分析的方式来求得其数值解了。数值方法变成了求解过程重要的媒介。在数值分析的过程中,首先会将原方程式加以简化,以利后来的数值分析。例如,会先将微分符号改为差分符号等。然后再用传统的代数方法将原方程式改写成另一方便求解的形式。这时的求解步骤就是将一独立变量带入,求得相依变量的近似解。因此利用此方法所求得的相依变量为一个个分离的数值,不似解析解为一连续的分布,而且因为经过上述简化的动作,所以可以想见正确性将不如解析法来的好。

第一部分:建立小船的航线方程,求其解析解

根据上面的假设可知小船的速度v2,小河的水流速度v1,小船速度与水速的合速度为v(如图(1)所示)以B为坐标原点,以过A点的河岸线沿水流方向为x轴,以AB(由A指向B为正向)为y轴建立平面直角坐标系,设v2与x轴正向的夹角为,小船的轨迹方程为,由平面几何的知识和容易得到:

本题的微分方程表达式

可以推出y-x的解析表达式,如下:

其中c为待定常数,为速度比。代入初值条件得,所以有,可以表示为x(y)的显示表达式:。

用matlab画出此函数的曲线,程序如下:

xy.m:

function x=f(y)

k=0.5;

x=-0.5.*(-0.01).^k.*y.^(k+1)+0.5.*(-0.01).^(-k).*y.^(-k+1);

xyplot.m:

clear;

y=[0:-0.1:-100];

for i=0:1:1000;

x(:,i+1)=xy(-i/10);

end

plot(x,y);

grid; gtext('x'); 数值分析课程设计

gtext('y');

title('小船过河时的轨迹图(1)');

结果如下:

-505101520-100-90-80-70-60-50-40-30-20-100xy小船过河时的轨迹图(1)

第二部分:用数值解法求渡河所需时间, 任意时刻小船的位置及航行曲线,作图,并与解析解比较.

这是一个微分方程模型,初始条件为

由微分方程表达式

用龙格-库塔方法求解此微分方程,程序如下:

gh.m:

function dx=gh(t,x,v1,v2)

s=(x(1)^2+x(2)^2)^0.5;

dx=[v1-x(1)/s*v2;-x(2)/s*v2];%以向量形式表示微分方程

ghdraw.m:

h=0.01;%所取时间点间隔

ts=[0:h:100];%粗略估计到达目标点时间在100以内

x0=[0,-100];%初始条件

opt=odeset('reltol',1e-6,'abstol',1e-9);%相对误差1e-6,绝对误差1e-9

[t,x]=ode15s(@gh,ts,x0,opt,1,2);%使用解刚性方程得龙格—库塔公式计算,1,2是给gh函数的数值分析课程设计

参数

[t,x]%输出t,x(t),y(t)

plot(t,x,'-'),grid%输出x(t),y(t)的图形

gtext('x(t)'),gtext('y(t)');

title('小船过河时的轨迹图(3)'),pause

plot(x(:,1),x(:,2),'-'),grid,%作y(x)的图形

gtext('x'),gtext('y');

title('小船过河时的轨迹图(2)')

02468101214161820-100-90-80-70-60-50-40-30-20-100xy小船过河时的轨迹图(2) 数值分析课程设计

010203040506070-100-80-60-40-20020x(t)y(t)小船过河时的轨迹图(3) (1)流速v1=0(m/s)时

这时水是静止的,船延直线开到B点,所用时间为21/()100/(21)50dvv(s)

程序运行结果如下(由ode23s算得):

[t,x]:

可以看到t=50时,到达B点,与解析解相符。

下面给出x(t),y(t),和y(x)的图形: 数值分析课程设计

(2)流速v1=0.5(m/s)时

程序运行结果如下(由ode15s算得):

[t,x]: 数值分析课程设计

可以看到t53时,到达B点。

下面给出x(t),y(t),和y(x)的图形: 数值分析课程设计

图形和V1=1时十分相似。

(3)流速v1=1.5(m/s)时

程序运行结果如下(由ode15s算得):

[t,x]:

可以看到t114时,到达B点。

下面给出x(t),y(t),和y(x)的图形: 数值分析课程设计

右图可见由于河水速度的上升,船的轨迹绕的弯增大了。

(3)流速v1=2(m/s)时

预测:

由于12vv,所以 数值分析课程设计

2112222(1)0,(0)vxdxxvvxdtxyxy,

1220(1)0,0TxvdtTxy,船不可能到达正对岸的B点。

程序运行结果如下(由ode15s算得):

[t,x]:

可以看到船无法到达目标点,经过足够长时间后会停在(50,0)处

下面给出x(t),y(t),和y(x)的图形: 数值分析课程设计

这个结果与预测相统一,船最后停在(50,0)处。

心得体会:

1) 深入了解matlab运行环境和操作环境,初步学会调试程序,运用绘图命令制 数值分析课程设计

作函数图象。

2) 懂得如何运用已有的知识更进一步了解未知的问题。

3) 独立解决和思考问题的能力有了一定的提高。

参考文献:

《数值分析及实验》科学出版社 杜廷松 沈艳军 覃太贵 主编

《数值分析》华中科技大学出版社 李红 著

《matlab从入门到精通》人民邮电出版社 求是科技 编著

《MATLAB及其在理工课程中的应用指南》(第三版)西安电子科技大学出版社 陈怀琛 编著