Расчет радиуса Земли по широте в Python - репликация формулы - PullRequest
2 голосов
/ 03 июня 2019

Я пытаюсь повторить формулу, которую я нашел на этом сайте, она относится к вычислению радиуса Земли на данной широте.

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км.

Любая помощь будет оценена. Заранее спасибо

Ответы [ 2 ]

3 голосов
/ 03 июня 2019

математическая библиотека 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
1 голос
/ 03 июня 2019

Это потому, что аргументы math.cos и math.sin приведены в радианах. Вам нужно конвертировать градусы в радианы в верхней части вашей функции:

B *= math.pi/180
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...