надеюсь, у вас все хорошо.
Я не очень хорошо знаком AstroPy
, и у меня возникла проблема с вычислением преобразования между единицами углового момента .
Если я определяю абс. значение углового момента
от движения тела взаимодействие с , предполагая кеплерово движение, я напишу:
затем общий пресс. анг. мама. , скажем
J1 = u.m * u.kg * u.m * (1/u.s)
должны иметь эквивалентные размеры по сравнению с
. Поэтому я должен быть в состоянии проверить, используя
J2.decompose()
или J2.to(J1)
, но все, что я получаю, этоUnitConversionError: 'AU(1/2) earthMass G(1/2) solMass(1/2)' and 'kg m2 / s' (angular momentum) are not convertible
J1 = angular_momentum(1* u.Msun, 3*u.Mearth, 0.1*u.au)
J2 = u.m * u.kg * u.m * (1/u.s)
J1.to(J2)
---> UnitConversionError
или
angular_momentum(1*u.Msun, 3*u.Mearth, 0.1*u.au).decompose() #why?
это похоже * u.au
не работает, как ожидалось. В любом случае, передача юнитов, например, u.m
не решает проблему.
Вопрос: кто-нибудь знает, что здесь происходит?
Изменить: это функция, которую я использую для вычисления def angular_momentum (мс, мп, а):
#from Lp = r x p ~~ a * (mp (G ms / a)^1/2) keplerian rot ~~ mp (g ms a)^1/2
Lp = mp * (u.G * ms * a)**(1./2.) #This MUST! have L units
return Lp
В астрофизике u.G
представляет Гаусса , а не гравитационную постоянную. Вот почему вы получаете «А» в одном из сообщений об ошибках; он представляет собой ампер. Чтобы использовать гравитационную постоянную в своем коде, вам нужно использоватьastropy.constants
и заменить u.G
в своем коде на constants.G
(или просто добавить import astropy.constants as c
и использовать c.G
, если хотите).
ооо