湖水的温度与深度的关系
简清林 20113306213;李惠森 20113306230;周晓辉 20113306234
(机电系应电2班;机电系应电2班;机电系应电2班)
一.问题的提出
炎热的夏天,大自然有这样的现状:湖泊出现温度分层的现象,其特点表现在于接近的水温比较高,越往下温度就越低。这种上热下冷现象会影响水的对流和混合过程,从而导致下层水缺氧,以致对鱼类的生存受影响。分析湖水温度随深度的变化,了解湖水在10米的温度和湖水在什么深度下温度变化最大。
二.问题的分析和假设
对于湖泊的温度分层的现象,徐了因为地理环境因素的不同之外,我们作出以下假设:
1)湖水的温度有湖的深度决定;
2)湖水的温度与天气、水流等自然因素无关;
3)假设湖的底部平坦;
4)湖里的物质对湖的温度无影响。
三.模型的建立与MATLAB的求解
湖水与温度之间的关系表现在温度随湖的越往下温度越低的现象。即湖水温度变化模型问题主要研究是湖水温度会随着深度而呈现出一定的规律。但模型中只是给出了温度与深度有关的有限实验数据,由此,想到可能要用到插值和多项拟合的方法来求解该模型。
设定湖水的深度是连续的函数,其中数据如下所示:
深度/m | 0 | 2.3 | 4.9 | 9.1 | 13.7 | 18.3 | 22.9 | 27.2 |
温度/c | 22.8 | 22.8 | 22.8 | 20.6 | matlab学好了有什么用13.9 | 11.7 | 11.1 | 11.1 |
(一)引入相关的变量符号如下:
x:湖水的深度,单位是米;
y:湖水的温度,单位是摄氏度,它是湖水深度的函数:y=f(x);
这里要应用数学中多项式拟合的方法,并且在matlab中实现编程,先求出乎谁温度函数y,然后再针对求出来的拟合函数进行求导,取极值。这样就可以方便地求解湖水模型中未知的问题。
(二)matlab的基本语句:
>>x=[a b c d e] 创建包含指定元素的行向量;
>>y=[a b c d e] 求该矩阵的转置;
>>plot(x,y,’s’) 画实线,s为实型;
>>a=polyfit(x,y,n) 返回多项式系数最底次系数,n是多项式的阶数;
>>polyfit[a b c d],[e f g h],n) 求拟合曲线函数方程系数
>>b=regress(X,Y) matlab统计工具
>>[b,bint,rint,statas]=regress[X,Y,alpha]
(三)函数的求解和检验
江湖水模型中所给的已知数据运用matlab数学软件进行编程作图,横轴代表湖水深度x,纵轴代表湖水温度y,
操作的编程命令为:
>>x=[0 2.3 4.9 9.1 13.7 18.3 22.9 27.2];
>>y=[22.8 22.8 22.8 20.6 13.9 11.7 11.1 11.1];
>>plot(x,y,’r*’)
用matlab数学软件画出散点图,其中绘图如下:
观察散点图的特点,由散点图像可知,图形中的散点随不同的深度变化,间距大体适中,
但是发现其中有明显的拐点,说明散点分布在一条曲线附近。由此得知湖水的深度x与湖水温度之间存在一种线性关系,因此采用二阶拟合不适用,于是对模型相关数据进行四阶拟合并通过实验选取不同的基函数类进行。
其中进行四次拟合的编程操作命令为;
>>x=[0 2.3 4.9 9.1 13.7 18.3 22.9 27.2];
>>y=[22.8 22.8 22.8 20.6 13.9 11.7 11.1 11.1];
>>polyfit([0 2.3 4.9 9.1 13.7 18.3 22.9 27.2], [22.8 22.8 22.8 20.6 13.9 11.7 11.1 11.1],4)
运行的结果为:
Ans =
-0.0001 0.0103 -0.2279 22.3743
拟合曲线的函数方程为
显示拟合函数图象的编程操作命令为:y=-0.0001*x.^4+0.0103*x.^3-0.2279*x.^2+0.997*x+22.3743
>>x=[0:0.1:27.2];
>>y=-0.0001*x.^4+0.0103*x.^3-0.2279*x.^2+0.997*x+22.3743;
>>plot(x,y)
图形如下:
观察图象可以发现,用四次方程拟合的曲线图象二次拟合的散点效果更好。更直观分析更逼真,而且,曲线的图像连续可求导,便于使用导数进行有关极值求解。
所以,可得10米处的温度。其编程为:
>>a=polyfit(x,y,4);
>>polyval(a,10)
由此得到水在10米处温度为摄氏度。
(2)求哪一个深度温度的变化最大,是二阶求导的问题,其中一阶导数的求法是
>>syms x;
>> y=-0.0001*x.^4+0.0103*x.^3-0.2279*x.^2+0.997*x+22.3743;
>>diff(y,x)
显示的图像如下
其操作为
>>x=[0:0.1:27.2];
>>y=-1/2500*x.^3=309/10000*x.^2-2279/10000;
>>plot(x,y)
求三阶导数的编程执行的命令为
syms x;
y=-1/2500*x.^3=309/10000*x.^2-2279/10000;
diff(y,x)
显示三阶导数图像如下:
其操作为
syms x;
y=-1/2500*x.^3=309/10000*x.^2-2279/10000;
polt(y,x)
求出二阶导数的编程过程为:
syms x;
y=-3/2500*x.^2+309/5000*x-2279/5000;
diff(y,x)
显示二阶导数图象的操作:
syms x;
y=-3/2500*x.^2+309/5000*x-2279/5000;
polt(y,x)
四.结论的陈述
五.实验模型的自我评价
通过这次数学建模,我们深深地体会到matlab数学软件在估值方面的应用,让我们深刻地认识到学好matlab能在更广泛的领域中的应用,因此,我们选择该门课程为选修是正确的选择。同时,我们将积极地去学习这个软件的其他方面的应用。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论