2017-09-21 8 views
-1

J'essaie de tracer des orbites elliptiques en utilisant python. En utilisant la formule , r = a (1-e^2)/(1 + ecos (thêta)). Les points de données nécessaires à tracer sont:Tracer des orbites elliptiques

  • valeurs d'un: 0,39, 0,72, 1,00, 1,52
  • valeurs de e: 0,205, 0,007, 0,017, 0,093
  • valeurs de thêta (degrés): 77,5, 132, 103, 336

Voici mon code à ce jour:

import numpy as np 
import matplotlib.pyplot as plt 

def radius(r,deg,rad): 
    a=np.array([0.39,0.72,1.00,1.52]) 
    e=np.array([0.205,0.007,0.017,0.093]) 
    deg=np.array([77.5,132,103,336]) 
    rad=(deg*np.pi)/180 
    r=(a*(1-e**2))/(1+e*np.cos(rad)) 
    return r,deg,rad 

plt.polar(rad, r) 
plt.show() 

L'erreur que je semble obtenir est NameError: nom 'r' est pas défini. Depuis que j'ai renvoyé la fonction je ne comprends pas pourquoi elle n'est pas définie.

+0

où l'utilisation de la fonction de rayon? – eyllanesc

+0

Pourquoi créer une fonction et ne pas l'utiliser ?, Utilisez directement les valeurs: 'a = np.array ([0.39,0.72,1.00,1.52]) e = np.array ([0.205,0.007,0.017, 0,093]) deg = np.array ([77,5,132,103,336]) rad = (deg * np.pi)/180 r = (a * (1-e ** 2))/(1 + e * np .cos (rad)) plt.polar (rad, r) plt.show() ' – eyllanesc

+0

Lors de l'exécution du code précédent, je reçois ce qui suit: https://imgur.com/a/sHT13 – eyllanesc

Répondre

0

Vous ne savez pas, si votre fonction mathématique et graphique est correcte, mais en regardant votre fonction radius vous êtes à peu près en train de coder a,e,deg et de retourner r,deg,rad.
Puisque vous n'êtes pas de passage des valeurs/variables à la fonction, il doit être
radius() et non radius(r,deg,rad)

De plus, vous devez recueillir les valeurs renvoyées par la fonction et l'utiliser ensuite pour le traçage.

import numpy as np 
import matplotlib.pyplot as plt 

def radius(): 
    a=np.array([0.39,0.72,1.00,1.52]) 
    e=np.array([0.205,0.007,0.017,0.093]) 
    deg=np.array([77.5,132,103,336]) 
    rad=(deg*np.pi)/180 
    r=(a*(1-e**2))/(1+e*np.cos(rad)) 
    return r,deg,rad 

r,deg,rad = radius() 
plt.polar(rad, r) 
plt.show() 

Figure enter image description here