Я пытаюсь воспроизвести формулу, которую нашел на этом сайте, она касается расчета радиуса Земли на заданной широте.
https://rechneronline.de/earth-radius/ или https://planetcalc.com/7721/
Затем я использую калькулятор на веб-сайте, чтобы определить, правильно ли я воспроизвел формулу.
Я написал следующий код, но не могу воспроизвести ответ, данный на веб-сайте (кроме случаев, когда широта равна нулю). Поскольку уравнение довольно сложное, я даже разделил каждую часть на отдельную переменную. Однако мои результаты все еще неверны.
import math
def radius (B):
a = 6378.137 #Radius at sea level at equator
b = 6356.752 #Radius at poles
c = (a**2*math.cos(B))**2
d = (b**2*math.sin(B))**2
e = (a*math.cos(B))**2
f = (b*math.sin(B))**2
R = math.sqrt((c+d)/(e+f))
return R
Например, используя широту 2 (переменная B), веб-сайт вычисляет радиус Земли как 6378,111 км. Мой ответ: 6360,481 км.
Любая помощь будет оценена. заранее спасибо






математическая библиотека python принимает радианы в качестве входных данных для тригнометрических функций,
поэтому убедитесь, что вы конвертируете значение B в радианы
это можно сделать B=math.radians(B)
окончательный код:
import math
def radius (B):
B=math.radians(B) #converting into radians
a = 6378.137 #Radius at sea level at equator
b = 6356.752 #Radius at poles
c = (a**2*math.cos(B))**2
d = (b**2*math.sin(B))**2
e = (a*math.cos(B))**2
f = (b*math.sin(B))**2
R = math.sqrt((c+d)/(e+f))
return R
Это потому, что аргументы math.cos и math.sin даны в радианах. Вам нужно преобразовать градусы в радианы в верхней части вашей функции:
B *= math.pi/180
Эта формула предполагает, что переменная B содержит геоцентрическую широту. Гораздо чаще используются геодезические широты. Например, если вы возьмете широту карты, это будет геодезическая широта. Приемники GPS обычно дают геодезические широты. Формула для радиуса Земли с учетом геодезической широты приведена во второй ссылке, которую вы включаете. Это несколько проще, чем тот, который вы используете.