close
http://acm.uva.es/p/v112/11241.html
簡單的來說 就是要算T(溫度) D(露點溫度) H(溼度)
給其中兩個求第三個
不難吧?只要會簡單的數學式就好

humidex = temperature + h
    h = (0.5555)*(e - 10.0)
    e = 6.11 * exp [5417.7530 * ((1/273.16) - (1/(dewpoint+273.16)))]
這是濕度的算法

其中exp是自然指數
其反函數在程式中是log()
(請記得include math.h)
給T跟D求H還有給D跟H求T都很簡單
只要代公式就好
至於給T跟H求D就需要移項

標準輸入輸出的格式..

Simple Input
                        輸入會有四個值 第一個值和第三個值代表已知的數種
T 30 D 15               第二個和第四個為其值
T 30.0 D 25.0           輸入E時代表結束
E

Output for Sample Input:

T 30.0 D 15.0 H 34.0        輸出三個數值 T 值 D 值 H 值
T 30.0 D 25.0 H 42.3        到小數點後第一位


(詳細移項方法請反白或按Ctrl+a)


從humidex = temperature + h
可得humidex -temperature = h
又h = (0.5555)*(e - 10.0)
所以e=(h/0.5555)+10.0
最後這個最麻煩  牽扯到了exp的關係
由e = 6.11 * exp [5417.7530 * ((1/273.16) - (1/(dewpoint+273.16)))]

可以得到e / 6.11 = exp [5417.7530 * ((1/273.16) - (1/(dewpoint+273.16)))]
兩邊開log 便可得到exp裡面的那段數字
即log(e / 6.11)=5417.7530 * ((1/273.16) - (1/(dewpoint+273.16)))
再把簡單的數字移過去...

log(e / 6.11)/5417.7530-(1/273.16)=- (1/(dewpoint+273.16))
我在這裡用一個變數k存放log(e / 6.11)/5417.7530-(1/273.16)
而dewpoint(D)的值就是k倒數然後*-1,再減掉273.16
D=-1*pow(k,-1)-273.16
這樣子=w=/

這邊是比較數學的部份 如果解釋比較深的話要記得自己導導看~
arrow
arrow
    全站熱搜

    aikosenoo 發表在 痞客邦 留言(0) 人氣()