我遇到了一个问题,一颗卫星正在离地球中心p=15000公里的高度绕地球运行。我需要使用方程r= p/1-e*cos( theta )创建一个从地球表面到θ的高度与0- 360之间的高度的表,增量为30度,其中e代表偏心,p是15000公里。我得到e= 0,0.2,0.7。执行以下操作将导致浮点错误。我猜想这是因为我试图用整数绘制theta的数字列表,但我不知道如何修复它。
pi = 3.14159
eccentricity = 0
theta = pi/6, pi/4, pi/3, pi/2, 2*pi/3, 3*pi/4, 5*pi/6, pi, 7*pi/6, 5*pi/4, 4*pi/3, 3*pi/2, 5*pi/3, 7*pi/4, 11*pi/6, 2*pi
p = 8629 #15000 - radius of Earth in km
def r(eccentricity, p, theta):
return p/(1-eccentricity*math.cos(theta))
print r(eccentricity, p, theta)发布于 2019-09-22 02:47:10
由于theta是浮点数的元组,因此不能将其传递给需要单个浮点数的函数。
您有两个选择:
使用列表理解计算高度:
heights = [r(eccentricity, p, th) for th in theta]使用numpy,它允许直接使用数组
import numpy as np
theta = np.array(theta)
heights = r(eccentricity, p, theta)编辑:由于您使用的是theta,因此可以使用以下命令来简化您的numpy数组
theta = np.deg2rad(np.arange(0, 360, 30))https://stackoverflow.com/questions/58043062
复制相似问题