因為對熱力學概念公式完全不懂,本文參考自以下blog,感謝其貢獻
原部落格c++語言編寫,由於需要,本文將其改寫為python版本
# 已知室外溫度、濕度,計算溼焓值
defcalculatehz_s
(tw)
: mm0 = tw /
234.5
mm1 = tw *
(18.678
- mm0)
/(tw +
257.14
) mm2 = np.exp(mm1)
hw =
1.01
* tw +
0.6219*(
2500
+1.84
* tw)
*611.2
* mm2 /
(101326
-611.2
* mm2)
return hw
# 計算空氣焓值,輸入引數:series,list(矩陣運算)或者 單個值,輸入溫度、濕度
defcalculatehz
(temper, humidity)
: t1 =
(18.678
- temper /
234.5
)* temper /
(temper +
257.14
) pv =
611.2
* np.exp(t1)
d =0.6219*(
0.01
* humidity * pv /
(101326
-0.01
* humidity * pv)
) h =
1.01
* temper +
(2500
+1.84
* temper)
* d return h
# 輸入溫度、濕度
defcalwbt
(temper, humidity)
: nums =
0# 迭代次數
val =0.
# 溼球溫度迭代初值
ii =
0 e = e_1 = e_2 = ee_1 = ee_2 =0if
0<= temper <60:
e = np.
abs(calculatehz_s(val)
- calculatehz(temper, humidity)
)while e >
0.02
: e = calculatehz_s(val)
- calculatehz(temper, humidity)
e_2, e_1 = e_1, e
ii += e
ee_2, ee_1 = ee_1,
(e_1 - e_2)
# 微分
if e >0:
val -=
0.1*
abs(e)
+0.001
* ii +
0.01
* ee_1
else
: val +=
0.1*
abs(e)
if e_1 - e_2 <0:
val +=
0.005
else
: val -=
0.005
e = np.
abs(calculatehz_s(val)
- calculatehz(temper, humidity)
) nums +=
1if nums >
2000
:if e >3:
e = calculatehz_s(val)
- calculatehz(temper, humidity)
if e <0:
val +=
-0.1
* e if val > temper:
val = temper *
0.99
return val
return val
# 計算溼球溫度,溼球溫度需要用到空氣焓值,輸入溫度、濕度
defcalculatewbt
(temper, humidity):if
len(temper)
!=len
(humidity)
: logger.info(
'溼球溫度計算 - 輸入資料有誤!'
)return
none
res_val =
for i in
range
(len
(temper)):
, humidity[i]))
return res_val
計算pi的近似值公式法 利用python計算圓周率
圓周率沒有精確的計算公式,所以只能用近似的方式計算它的近似值。我們運用蒙特卡羅方法,思路很簡單,在下面圖形中隨機拋置大量的點,計算落在1 4圓內的點的數量。為了得到pi值,由思路,我們知道需要引用random math以及time資料庫,具體 如下 pi.py from random import ...
用Python實現徑向分布函式(RDF)的計算
首先,因為我需要讀lammps的輸出的dump檔案,所以readxyzufile 所實現的是讀入dump檔案的功能。然後進入正題,說白了,計算rdf就是計算粒子與粒子之間的距離,並按照距離的遠近進行統計。在這裡說明一下,為了能夠使 可以計算包含兩種粒子的體系,在一些細節方面會有些小的變動。wrap ...
交換兩變數的值(python)實現
以下總結了交換兩變數的三種方法,分別為 臨時變數法,求和做差法和按位異或法。臨時變數法 deffunc1 i,j print 臨時變數法 n交換前 a s,b s i,j end temp i i j j temp print 交換後 a s,nb s i,j 求和做差法 deffunc2 i,j ...