Problem mit Astropieeinheiten

hoffe es geht euch allen gut.

Ich bin nicht sehr vertraut mit AstroPyund habe ein Problem bei der Berechnung der Umrechnung zwischen Drehimpulseinheiten .

Wenn ich die abs definiere. Wert Drehimpuls

J 2 R × P ! A 2 M 2 ( G M S A 2 ) 1 / 2 = M 2 ( G M S A 2 ) 1 / 2

aus der Bewegung eines Körpers M 2 interagieren mit M S , unter der Annahme einer Keplerschen Bewegung, werde ich schreiben:

dann ein generischer abs. ang. Mutter. J 1 , sagen wir

J 1 ( ( 1 M ) × ( 1 k G M S ) ) = 1 k G M S
J1 = u.m * u.kg * u.m * (1/u.s)sollte äquivalente Abmessungen im Vergleich zu haben J 2 . Also sollte ich in der Lage sein, die Verwendung zu überprüfen

J2.decompose()oder J2.to(J1), aber alles, was ich bekomme, istUnitConversionError: '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

oder

angular_momentum(1*u.Msun, 3*u.Mearth, 0.1*u.au).decompose() #why?

3.0900743 × 10 43 k G 2 M 1 / 2 A 1 / 2 S ( Ö u T P u T )

das sieht so aus, als ob * u.aues nicht wie erwartet funktioniert. Wie auch immer, das Übergeben von Einheiten, z. B. in, u.mbehebt das Problem nicht.

Frage: Weiß jemand, was hier passiert?

Bearbeiten: Dies ist die Funktion, die ich zum Berechnen verwende J 2 def Winkel_Impuls(ms, mp, a):

    #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 
Von Screenshots von Text wird in Stack Exchange aus mehreren Gründen abgeraten, darunter, dass sie nicht durchsucht werden können und dass Benutzer, die Screenreader (z. B. Text-to-Speech) verwenden, sie nicht lesen können. Die Standardmethode besteht darin, den Text aus Ihrer Computerausgabe in Ihren Beitrag zu kopieren und dann für Code/Skript vier Leerzeichen vor jeder Zeile hinzuzufügen, um sie als Codeblock anzuzeigen. Ich habe das hier für Sie getan (indem ich es einfach neu eingetippt habe) und es sollte wahrscheinlich auch hier getan werden. Danke!

Antworten (1)

Stellt in der Astropie u.Gein Gauß dar , nicht die Gravitationskonstante. Deshalb erhalten Sie in einer der Fehlermeldungen das "A"; es repräsentiert ein Ampere. Um die Gravitationskonstante in Ihrem Code zu verwenden, müssen Sie in Ihrem Code verwendenastropy.constants und durch ersetzen (oder einfach hinzufügen und verwenden , wenn Sie dies bevorzugen).u.Gconstants.Gimport astropy.constants as cc.G