永发信息网

样条插值求解湖水分层问题

答案:1  悬赏:70  手机版
解决时间 2021-05-04 13:05
  • 提问者网友:难遇难求
  • 2021-05-03 21:43

湖水在夏天会出现分层现象,接近湖面温度较高,越往下温度变低。这种上热下冷的现象影响了水的对流和混合过程,使得下层水域缺氧,导致水生鱼类的死亡。如果把水温看成深度的函数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) 求在什么深度处达到最大(即)

所涉及的知识——样条插值、数值微分。

注意并以可视化窗口实现,回答者留下代码最好添张图片或以邮件发给我也行,谢谢了

最佳答案
  • 五星知识达人网友:孤老序
  • 2021-05-03 21:56

原来的找不到了,给你用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 时温度变化最大。

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯