22一些数值方法的建模问题docWord文档下载推荐.docx
《22一些数值方法的建模问题docWord文档下载推荐.docx》由会员分享,可在线阅读,更多相关《22一些数值方法的建模问题docWord文档下载推荐.docx(12页珍藏版)》请在冰豆网上搜索。
![22一些数值方法的建模问题docWord文档下载推荐.docx](https://file1.bdocx.com/fileroot1/2022-10/11/e9ab7a16-ab34-408f-8e23-0bbad1089f11/e9ab7a16-ab34-408f-8e23-0bbad1089f111.gif)
而质量守衡定律告诉我们
Q=UBH
(2)
将式
(1)代入式
(2),同时将S,N,B,Q用给定的数值替代,有
(3)
令,于是问题归结为求方程的正根问题。
4)
模型求解
由于方程没有求根公式,故采用数值方法求根,这里采用Newton迭代法来求根。
为找到迭代初始值x0,先画出的图形观察:
In[1]:
=f[h_]=Sqrt[0.0002]/0.03*(20*h)^(5/3)*(20+2h)^(-2/3)-5;
In[2]:
=Plot[f[h],{h,0,5}]
输出图形为
Out[2]=-Graphics-
从图中可以看到函数在1附近有根,选取迭代初始值x0=1,根的精度为10-6做Newton迭代,对应的程序为
Clear[x,f,g];
f[x_]=Sqrt[0.0002]/0.03*(20*x)^(5/3)*(20+2x)^(-2/3)-5;
g[x_]=D[f[x],x];
x0=1;
eps1=0.000000000001;
nmax=500;
eps=0.000001;
Do[u1=g[x0];
If[Abs[u1//N]<
eps1,Print["
迭代法失效"
];
Break[]];
x=N[x0-f[x0]/u1,10];
u1=Abs[x-x0]//N;
Print["
H="
x,"
n="
n,"
eps="
u1];
If[u1<
eps,Break[],x0=x],
{n,1,nmax}];
If[u1>
eps,Print["
迭代失败"
]]
执行程序后得输出结果为
H=0.7292262368n=1eps=0.270774
H=0.7025912396n=2eps=0.026635
H=0.702293294n=3eps=0.000297946
H=0.7022932563n=4eps=3.777210-8
从输出结果说明所求的水渠深度约为0.7022932563,其误差为3.777210-8.
2.2.2.男大学生的身高问题
1)问题的提出
有关统计资料表明,我国大学生男性群体的平均身高约为170cm,且该群体中约有99.7﹪的人身高在150cm至190cm之间。
如果将[150cm,190cm]等分成20个高度区间,试问该群体身高在每一高度区间的分布情况怎样?
特别地,身高中等(165cm至175cm之间)的人占该群体的百分比会超过60﹪吗?
解:
2)问题分析与建立模型
因为一个人的身高涉及很多因素,通常它是一个服从正态分布N(,)的随机变量。
正态分布的概率密度函数(x)为:
于是密度函数(x)在区间[a,b]上的定积分
的值正好代表大学生身高在区间[acm,bcm]的分布。
在密度函数(x)中的两个参数、分别为正态分布的均值与标准差。
根据题目中我国大学生男性群体的平均身高约为170cm,可选取正态分布的均值=170cm,而由“该群体中约有99.7﹪的人身高在150cm至190cm之间”和正态分布N(,)的“3规则”,有
-3=150cm
+3=190cm
于是可以得到=,故其密度函数(x)为
将[150cm,190cm]等分成20个高度区间后,得到高度区间为
[150,152],[152,154],…,[188,190]
对应的分布为
身高在165cm至175cm之间的人占该群体的百分比为
(2)
如上式
(1)和
(2)的定积分是不能用定积分基本公式方法求出的,但用计算方法中的数值积分可以算出。
模型求解
选用数值积分中的复化梯形公式求积方法编程可以计算出求误差小于10-4的式
(1)的定积分值从而得出相应分布依次为
[150cm,152cm]的分布为0.0021
[152cm,154cm]的分布为0.0047
[154cm,156cm]的分布为0.0097
[156cm,158cm]的分布为0.0181
[158cm,160cm]的分布为0.0309
[160cm,162cm]的分布为0.0483
[162cm,164cm]的分布为0.0690
[164cm,166cm]的分布为0.0902
[166cm,168cm]的分布为0.1078
[168cm,170cm]的分布为0.1179
[170cm,172cm]的分布为0.1179
[172cm,174cm]的分布为0.1078
[174cm,176cm]的分布为0.0902
[176cm,178cm]的分布为0.0690
[178cm,180cm]的分布为0.0483
[180cm,182cm]的分布为0.0309
[182cm,184cm]的分布为0.0181
[184cm,186cm]的分布为0.0097
[186cm,188cm]的分布为0.0047
[188cm,190cm]的分布为0.0021
对
(2)式有
0.5467246173
说明身高中等(165cm至175cm)的大学生约为54.67﹪,不足60﹪。
4)Mathematica编写的通用程序为
Clear[a,b,x,n,f];
a=Input["
a="
]
b=Input["
b="
f[x_]=3/20*Exp[-9(x-170)^2/800]/Sqrt[2Pi]
eps=0.0000001;
n=1;
h=b-a;
t1=(f[a]+f[b])*h/2;
h=h/2;
t2=t1/2+h*f[a+h];
er=t2-t1//N;
While[Abs[er]>
eps,
Print["
n="
2^n,"
定积分值为"
N[t2,10]];
误差="
er];
t1=t2;
n=n+1;
t2=t1/2+h*Sum[f[a+k*h],{k,1,2^n,2}];
er=t2-t1//N];
er]
说明本程序从梯形公式T1开始,用复合梯形求积公式求[a,b]上满足精度小于eps要求的定积分近似值。
程序执行后,按要求通过键盘输入积分下限a、积分上限b、被积函数f(x)和精度要求eps后,计算机则给出满足精度要求的定积分近似值及中间计算值和误差。
程序中变量说明
a:
存放积分下限
b:
存放积分上限
f[x]:
存放被积函数f(x)
eps:
存放求积精度
h:
存放节点步长
x:
为函数f[x]:
提供变量
t1:
存放复合梯形值Tn
t2:
存放复合梯形值T2n和定积分近似值
n:
存放复合梯形公式的节点加密次数
er:
存放误差
注:
为提高计算效率,计算T2n时使用了公式
2.2.3湖水温度变化问题
湖水在夏天会出现分层现象,其特点为接近湖面的水温度较高,越往下温度变低。
这种上热下冷的现象影响了水的对流和混合过程,使得下层水域缺氧,导致水生鱼类的死亡。
下面是某个湖的观测数据
深度(m)
2.3
4.9
9.1
13.7
18.3
22.9
27.2
温度(C)
22.8
20.6
13.9
11.7
11.1
请问
1.
湖水在10m处的温度是多少?
2.
湖水在什么深度温度变化最大?
2)问题的分析与假设
本问题只给出了有限的实验数据点,可以想到用插值和拟合的方法来解决题目的要求。
假设湖水深度是温度的连续函数,引入符号如下:
湖水深度,单位为m
T:
湖水温度,单位为C,它是湖水深度的函数:
T=T(h)
这里多项式拟合的方法来求出湖水温度函数T(h)。
然后利用求出的拟合函数就可以解决本问题了。
3)模型的建立
将所给数据作图,横轴代表湖水深度,纵轴代表湖水温度,用Mathematica数学软件画出散点图,操作的命令为:
=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.0280756h+0.0865552h2-0.0235702h3+0.00132018h3-0.0000218133h5
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.0280756h+0.0865552h2-0.0235702h3+0.00132018h3-0.0000218133h5
为求出湖水在10m处的温度,键入命令:
In[6]:
=q1/.h->
10
Out[6]=19.0975
于是得出湖水在10m处的温度约为19.0975C。
为求湖水在什么深度温度变化最大,要求出函数T(h)的导函数T(h)的绝对值最大值点。
为此对所求拟合函数q1关于h的导数并找出最大值点,键入如下命令:
In[7]:
=q2=D[q1,h]
Out[7]=0.0280756+0.17311h-0.0707107h2+0.00528073h3-0.000109067h4
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时温度变化最大。
2.2.4储量计算问题
某地区为估计某矿物的储量,在该地区内进行勘探,得到如下数据(见表一)。
请估计出此地区内(1≤X≤4,1≤Y≤5)该矿物的储量.
编号
1
2
3
4
5
6
7
8
9
x坐标(KM)