Как справиться с отрицательным косинусом солнечного зенитного угла при расчете УФ-индекса ясного неба?

Я использую этот источник для расчета значения UVI для каждого часа в сутки (с 7:00 до 19:00). И с помощью модуля 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 что неправильно. Я что-то пропустил? Или моя интерпретация алгоритма неверна?

1 ответ

Решение

math.cos ожидает радианы, но вы, кажется, пройти в градусах.

Преобразовать из градусов в радианы с sza * math.pi / 180, Тогда вы не должны получать отрицательные значения для углов от -90 до +90 градусов (что, я думаю, имеет смысл, предполагая, что 0 градусов означает, что Солнце находится в зените, а 90 градусов - горизонт).

Другие вопросы по тегам