-1

我正在尝试使用 python 绘制椭圆轨道。使用公式 r=a(1-e^2)/(1+ecos(theta))。需要绘制的数据点是:

  • a 的值:0.39、0.72、1.00、1.52
  • e 的值:0.205、0.007、0.017、0.093
  • theta 值(度):77.5、132、103、336

到目前为止,这是我的代码:

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()

我似乎得到的错误是 NameError: name 'r' is not defined。由于我返回了该函数,我不明白为什么没有定义它。

4

1 回答 1

0

不确定,如果你的数学和绘图函数是正确的,但看看你的函数radius,你几乎很难编码 a,e,deg并返回r,deg,rad.
由于您没有将任何值/变量传递给函数,因此它必须是
radius()而不是radius(r,deg,rad)

此外,您需要收集函数返回的值,然后将其用于绘图。

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()

数字 在此处输入图像描述

于 2017-09-21T03:45:13.667 回答