下面结合附图对本发明作进一步的说明。
公式的几何图形转换
将公式(1)改变为:
将式(3)两边取对数,得下式:
由于td、e、ph、A为已知,求tw,将式(2)、(4)组成一对方程组,由于两个方程中均隐含tw的未知变量,且不能直接求解。但如果假设一个tw值,就可以根据方程(2)、(4)分别计算出两个不等的logEtw值,当计算的两个logEtw值相等时,对应假设的tw值就是要求解的值。
为了便于说明,令y=logEtw、x=tw,将方程(2)、(4)进一步转化为:
本文采用南京气象站1999年8月17日一组实测资料(td=28.5℃ e=29.8hpaph=1006.7hpa A=0.0007947℃-1),因为同时观测的湿球温度总是低于干球温度,所以x值从28.5起算,步长取0.2,计算到-0.1,表1为函数f1(x)、f2(x)对应x的计算值;将表1所有计算数据复制到autoCAD中绘制成图1;为了节省篇幅,将x=21.5℃及以上步长所对应的f1(x)、f2(x)值以及Δf(x)/Δx值列于表2:表2为变量x值与对应的f1(x)、f2(x)、Δf(x)/Δx计算值。
表1
表2
从表2中的Δf1(x)/Δx、Δf2(x)/Δx的数值变化可以判断,图1中的两条折线是两条近似直线,因为折线的斜率只有微小的变化,
对于Y=f1(x)的折线平均斜率:K1=(1.5900-1.4088)/(28.5-21.5)=0.0259
分段斜率在0.0252-0.0266之间,斜率变化是随x值的增大而逐渐均匀变小,与平均斜率之间的差值小于1‰,可以近似看着是一条直线;
对于Y=f2(x)的平均斜率:K2=(1.3689-1.4620)/(28.5-21.5)=-0.0133
分段斜率在-0.0148--0.0120之间,斜率的绝对值变化是随x值的增大而逐渐均匀变大,与平均斜率之间的差值小于1.5‰,也可以近似看着是一条直线。
为了便于表达,将表1中x值大于21.5的折线段放大显示为图2所示。假设在x轴上x1处作垂直于x轴的直线分别与两条近似直线交叉于C、A两点,在x2处作垂直于x轴的直线分别与两条近似直线交叉于G、E两点;假设两条近似直线的交点为D,过D点作一条平行于x轴的直线分别与直线AC交于B点、 与直线EG交于F点。
再假设各点的坐标值分别为:C(x1,y11)、A(x1,y12)、D(x,y)、B(x1,y)、E(x2,y21)、F(x2,y)、G(x2,y22)。
以下采用两种方法来进一步求解。
直接计
算法从图1、图2可以看出,方程组(5)是两条交叉近似直线,两条近似直线的交点(x,y)就是要求解的点,求解的x值就是tw。根据几何学相似三
角形原理:三角形ABD与三角形DFG相似、三角形BCD与三角形DEF相似,根据相似三角形对应边长成比例的定义有:
据此可以列出如下对应的坐标数值方程组(6):
根据方程组(6)可以求解出:
式(7)是以x1小于x、x2大于x推导的。同理,在保证式(6)的几何意义不变的情况下,x1、x2都小于x或x1、x2都大于x时式(7)均不变。
因为观测站当日实测的干球温度总是比湿球温度高,根据多站资料分析,逐日平均干球温度与湿球温度的差值在江苏省为0.2-6.5,差值的高限在南方可 能偏小、在北方偏大。计算时取x2=td,x1取值范围在td-2与td-8之间都可以,x1分别取td-2、td-8所计算x值的绝对误差在0.02以内,对结果基本没有影响。
通过多站资料分析对比,取x1=td-3误差相对最小,也就是在差值0.2-6.5的中间值附近误差最小。因此在江苏省采用x2=td,x1=td-3来计算y21、y22、y11、y12的值,然后计算出x值、也就是求解的tw值。
据此编程计算,根据连续5年夏季三个月逐日实测的td、e、ph参数来计算逐日平均湿球温度在1秒左右就可以完成,计算的精度达到0.02℃以内。也可以将式(2)、(4)、(7)编写到Excel电子表格中直接计算,非常方便,但在Excel中计算的精度只能达到0.03℃(Excel中计算精度比编程计算精度低),但都能满足精度0.1℃要求。
在其它省份,因为同点同时观测值td>tw恒定不变,因此x2=td;x1取值范围在td-2与td-10之间都可以满足计算精度要求,但是如果能预估到当地逐日平均干球温度与湿球温度差值的中间值(不需要很准确),那么x1采用td+中间值时精度更高。
迭代法
从图2可以看出,对应x1可以计算出Δ1=abs(y11-y12)、x2可以计算出Δ2=abs(y21-y22),abs代表绝对值函数。当Δ趋近于0时所对应的x值就是要求的值,由于两条近似直线只有一个交点,因此迭代逐步收敛。这里介绍一种变步长迭代法,为了简单易懂,采用basic语言来表达:
10 x=td-3:st=0.5
20 Δ2=abs(f1(x)-f2(x))
30 x=x+st
40 Δ1=abs(f1(x)-f2(x))
50 ifΔ1<0.0001 then 80
60 ifΔ1<Δ2 then Δ2=Δ1:goto 30
70 st=-st/2:Δ2=Δ1:goto 30
80 tw=x
90 end
采用以上迭代计算,其初值x与步长st的取值决定迭代步数,如果初值取干球温度td、步长取5,20步以内完成计算。为了减少迭代步数,初值取td-3,步长取0.5,7-15步以内完成计算。初值的取值理由同前,目的主要是使初值尽量靠近真值,然后按照差值Δ逐渐变小的方向以每步缩减二分之一步长逼近真值。据此编程,计算连续5年夏季三个月逐日平均湿球温度在2秒左右完成。根据50行Δ1<0.0001结束计算条件设置,湿球温度的计算精度达到0.002℃。
由于该迭代法逐步收敛,只要初值x取值不大于干球温度且步长取值适当,迭代均可很快完成。但如果x初值大于干球温度,并使式(3)中[Aph(td-tw)+e]≤0,则程序出错。
误差的分析
直接计算的误差分析:
1)根据表1全部144个数据,采用相关计算拟合的直线方程为:
y=0.8010+0.0282x 对应y=f1(x)
y=1.7311-0.00856x 对应y=f1(x)
由以上两个相关方程,求得交点处的
x=(1.7311-0.801)/(0.0282+0.00856)=25.302;
2)根据表2局部36个数据,采用相关计算拟合的直线方程为:
y=0.85288+0.02589x 对应y=f1(x)
y=1.77955-0.01068x 对应y=f1(x)
由以上两个相关方程,求得交点处的
x=(1.77955-0.85288)/(0.02589+0.01068)=25.340;
3)利用迭代法计算的x=25.3445,是根据Δ1<0.000001计算的,误差小于0.0001;
4)采用直接计算求得x=25.3651。将几种计算结果列于表3,表3为误差对比表。
表3
计算方法 全部数据拟合的直线方 局部数据拟合 直接计算 迭代法
程 的直线方程
计算值 25.302 25.340 25.365 25.345
与迭代法的差值 -0.043 -0.005 0.020 0
从表3可以看出,由于前三个计算值均是近视直线计算值,存在误差。迭代法从理论上来说计算精度最高,其计算误差小于0.001。因此,如果以迭代法计数值为标准值来分析,采用全部数据(tw=-0.1-28.5℃)拟合的直线方程计算值的误差应该最大,而采用两条直线交点附近的局部数据(tw=21.5-28.5℃)拟合的直线方程计算值的误差较小,直接计算实际上是采用近视直线上两点插值计算的,其误差介于两者之间。从表3可以看出,采用直接计算的误差应该小于0.04,完全满足计算精度要求。
直接计算与迭代计算误差的分析
为了进一步检验直接计算法的精度,本次采用江苏省13个气象站共计806组资料、对直接计算法与迭代法进行比较,以两种方法计算结果的差值绝对值来统计,结果为:平均差值在0.01℃左右,其中≤0.02℃的个数占85%,≤0.03℃的个数占96%,差值最大为0.06℃的仅有2个,差值为0.05℃的也仅有2个,差值为0.04℃的只有5个。说明两种计算方法的结果基本接近,满足湿球温度计算精度0.1℃要求。
计算值与观测值误差分析
按照地域分布均匀的原则,在江苏省选用13个气象站,采用以上直接计算法、迭代法两种方法,选用2000年7、8两个月62个实测的逐日平均td、e、ph参数来计算逐日平均湿球温度,并将逐日计算值减去逐日实测值,对差值进行统计、对比分析。表4为逐日平均湿球温度计算值与实测值统计表。
表4
逐日 逐日 逐日误 逐日误 逐日误 逐日误 逐日误
站名 逐日 误差 最大 差绝对 差绝对 差绝对 差绝对 差绝对
误差 绝对 误差 值在 值在 值在 值在 值在
平均 值平 绝对 0.45-0. 0.55-0. 0.65-0. 0.75-0. 0.85-0.
(℃) 均 值 54之间 64之间 74之间 84之间 94之间
(℃) (℃) 的个数 的个数 的个数 的个数 的个数
徐 直算 0.02 0.03 0.09 0 0 0 0 0
州 迭代 0.0 0.03 0.07 0 0 0 0 0
新 直算 -0.02 0.18 0.65 4 1 1 0 0
浦 迭代 -0.03 0.18 0.66 4 1 1 0 0
宿 直算 0.0 0.15 0.87 1 0 0 1 1
迁 迭代 -0.02 0.15 0.86 2 0 0 1 1
射 直算 0.01 0.03 0.06 0 0 0 0 0
阳 迭代 0.0 0.03 0.07 0 0 0 0 0
淮 直算 0.01 0.03 0.07 0 0 0 0 0
安 迭代 0.0 0.03 0.08 0 0 0 0 0
洪 直算 -0.04 0.15 0.51 1 0 0 0 0
泽 迭代 -0.05 0.15 0.5 1 0 0 0 0
盐 直算 -0.20 0.22 0.62 4 3 0 0 0
城 迭代 -0.21 0.23 0.63 4 3 0 0 0
如 直算 -0.11 0.15 0.52 2 0 0 0 0
东 迭代 -0.12 0.16 0.53 2 0 0 0 0
镇 直算 -0.11 0.19 0.72 4 0 1 0 0
江 迭代 -0.13 0.19 0.72 6 0 1 0 0
南 直算 0.01 0.03 0.08 0 0 0 0 0
京 迭代 0.0 0.03 0.08 0 0 0 0 0
南 直算 0.01 0.03 0.08 0 0 0 0 0
通 迭代 0.0 0.03 0.06 0 0 0 0 0
金 直算 -0.02 0.15 0.76 1 0 0 1 0
坛 迭代 -0.04 0.15 0.76 2 0 0 1 0
无 直算 -0.12 0.22 0.76 2 2 0 1 0
锡 迭代 -0.13 0.22 0.73 3 1 2 0 0
从表4可以看出,本次共分析了13个气象站共806组资料,其中有8个站逐日误差绝对值平均数较大,平均误差在0.15-0.23℃,盐城气象站与无锡气象站为0.22-0.23℃;盐城、如东、镇江、无锡4个站出现偏差,计算值比观测值 偏小-0.11--0.21℃,其中盐城站偏小值-0.21℃;逐日误差绝对值有8个站大于0.5℃,但误差大于0.7℃的个数只有7个,其中最大值发生在宿迁,为0.87℃。
根据江苏省
气候中心介绍,南京站、淮安站、南通站、徐州站为每小时观测一组的数据,各要素的日平均值均是24次观测值的平均值,所以代表性高,与公式符合性好;盐城站、无锡站为3次观测,日平均值是3次观测值的平均值,所以代表性就低,易产生偏差;其余站均为4次观测,代表性介于两者之间。
由于公式(1)、(2)是根据逐时观测资料建立的,当采用日平均值来计算时,采用3、次4次观测值来计算日平均值本身就存在偏差,因此采用公式计算时就会产生偏差,而采用24次观测值来计算日平均值时基本不存在偏差。
本发明巧妙地将一组复杂的隐性方程组化解为一组近似线性方程组,并以几何学中的相似三角形原理来直接求解,解决了湿球温度求解的难题,使湿球温度的计算方法变得简单易懂。
从应用角度来看,直接计算法是对求解湿球温度这一复杂方程组的重大突破,在确保满足计算精度的情况下,计算步骤大大减少、计算过程简单,计算速度可以提高30倍以上,并可以在Excel电子表格中直接计算,满足批量数据计算,能更好的应用于工程设计,节约工时。
迭代法是传统求解隐性方程组的方法,属于试算法,本次经过线性处理后的迭代更简单明了,但本法只能编程计算,计算量比直接计算法要多三十倍,且不能在Excel电子表格中计算。所以迭代法没有直接计算法好。
以上已以较佳
实施例公开了本发明,然其并非用以限制本发明,凡采用等同替换或者等效变换方式所获得的技术方案,均落在本发明的保护范围之内。