0

我正在使用这个源来计算一天中每个小时的 UVI 值(从早上 7 点到晚上 7 点)。并使用pysolar模块获取Solar Zenith Angle. 等式如下:

from pysolar.solar import *
from math 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 点的 uvi 结果9.232276464148745是错误的。我错过了什么吗?还是我对算法的解释是错误的?

4

1 回答 1

0

math.cos期望弧度,但您似乎通过度数。

使用 将度数转换为弧度sza * math.pi / 180。那么你不应该得到 -90 到 +90 度之间角度的负值(我想这是有道理的,假设 0 度意味着太阳在天顶,90 度是地平线)。

于 2017-07-20T13:46:31.790 回答