4
\ begingroup美元

我使用,以计算一天中每小时(由早上七时至晚上七时)的紫外线值。和使用pysolar模块来获取太阳天顶角.公式如下:

从pysolar。*从数学import cos import datetime dobj = datetime.datetime(2017,7,1,8,0) sza = float(90)-get_altitude(42.57952, 1.65362, dobj) ozone = 300 raw_uvi = 12.50*pow(cos(sza),2.42)*pow(float(ozone)/300,-1.23) print (raw_uvi)

输出为:0.4850283419701262+1.8890606693266203j

我的问题是当cos(sza)变成负的时候它会输出一个复数,我怎么处理这个?而且,在早上7点,紫外线就会进入9.232276464148745这是错误的。我错过什么了吗?还是我对算法的解释错了?

\ endgroup美元

    1回答1

    2
    \ begingroup美元

    这只是为了解决标题问题

    在某种程度上,你是对的。我建议你这样设置一个if语句

    如果cos(sza)>=0: raw_uvi= 12.50*pow(cos(sza),2.42)*pow(float(ozone)/300,-1.23) else: raw_uvi=0.0

    这使得当太阳在地平线下时,太阳不会“收回”能量

    \ endgroup美元

      你的答案

      点击“发表您的答案”,即表示您同意我们的服务条款隐私政策饼干的政策

      不是你想要的答案吗?浏览其他有标签的问题问自己的问题