湖水在夏天会出现分层现象,接近湖面温度较高,越往下温度变低。这种上热下冷的现象影响了水的对流和混合过程,使得下层水域缺氧,导致水生鱼类的死亡。如果把水温看成深度的函数T(x),有某个湖的观测数据如下:
T (°C) | 22.8 | 22.8 | 22.8 | 20.6 | 13.9 | 11.7 | 11.1 | 11.1 |
x (m) | 0 | 2.3 | 4.9 | 9.1 | 13.7 | 18.3 | 22.9 | 27.2 |
环境工程师希望:
1) 用样条插值求出 T(x).
2) 求在什么深度处达到最大(即)
所涉及的知识——样条插值、数值微分。
注意并以可视化窗口实现,回答者留下代码最好添张图片或以邮件发给我也行,谢谢了
原来的找不到了,给你用matlab多项式拟合的吧
1) 问题的提出
湖水在夏天会出现分层现象,其特点为接近湖面的水温度较高,越往下温度变低。这种上热下冷的现象影响了水的对流和混合过程,使得下层水域缺氧,导致水生鱼类的死亡。下面是某个湖的观测数据
深度(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 |
13.9 |
11.7 |
11.1 |
11.1 |
请问
1. 湖水在10m处的温度是多少?
2. 湖水在什么深度温度变化最大?
2)问题的分析与假设
本问题只给出了有限的实验数据点,可以想到用插值和拟合的方法来解决题目的要求。假设湖水深度是温度的连续函数,引入符号如下:
h: 湖水深度,单位为m
T: 湖水温度,单位为°C,它是湖水深度的函数:T=T(h)
这里多项式拟合的方法来求出湖水温度函数T(h)。然后利用求出的拟合函数就可以解决本问题了。
3)模型的建立
将所给数据作图,横轴代表湖水深度,纵轴代表湖水温度,用Mathematica 数学软件画出散点图,操作的命令为:
In[1]:= d={{0,22.8},{2.3,22.8},{4.9,22.8},{9.1,20.6},{13.7,13.9},
{18.3,11.7},{22.9,11.1},{27.2,11.1}}
In[2]:= q=ListPlot[d,PlotStyle->PointSize[0.04]]
得出如下散点图
Out[2]=-Graphics-
观察散点图的特点,并通过实验选取不同的基函数类进行实验发现用4次多项式拟合比较好,相应的命令为:
In[3]:= q1=Fit[d,{1,h,h^2,h^3,h^4, h^5},h]
Out[3]=22.711+0.0280756 h+0.0865552 h 2 -0.0235702 h 3 +0.00132018 h 3 -0.0000218133 h 5
In[4]:= q2=Plot[q1,{h,0,27.2}]
Out[4]= -Graphics-
In[5]:= Show[q,q2]
Out[5]= -Graphics-
因此有
T(h) » q1=22.711+0.0280756 h+0.0865552 h 2 -0.0235702 h 3 +0.00132018 h 3 -0.0000218133 h 5
为求出湖水在10m处的温度,键入命令:
In[6]:= q1/.h->10
Out[6]= 19.0975
于是得出湖水在10m处的温度约为19.0975 °C。为求湖水在什么深度温度变化最大,要求出函数T(h)的导函数T¢(h)的绝对值最大值点。为此对所求拟合函数q1关于h的导数并找出最大值点,键入如下命令:
In[7]:= q2=D[q1,h]
Out[7]= 0.0280756+0.17311h-0.0707107h 2 + 0.00528073 h 3 - 0.000109067 h 4
In[8]:= Plot[q2,{x,0,27.2}]
输出图形为
Out[8]=
-Graphics-
从导函数图形上观察到其在10附近可以取得绝对值最大值,键入命令:
In[9]:= FindMinimum[q2,{x,10}]
Out[9]= {-1.21357, {h -> 11.9312}}
得出 h=11.9312 是导函数的绝对值最大值点,于是可以知道湖水在深度为11.9312m 时温度变化最大。