I'm defining a set of functions to convert from an Earth-centered reference frame to classical orbital elements. Here are my codes:
import numpy as np
import matplotlib.pyplot as plt
#converting r,v to orbital elements
u = 3.986*10e14 #gravitational parameter for Earth
list_r = [-2413.9, 6083.8, -1136.0]
r = np.array(list_r)
list_v= [-6.5461, -3.1365, -3.6385]
v = np.array(list_v)
def h(r,v):
return np.cross(r,v)
list_k = [0,0,1]
k = np.array(list)
def n(k,h):
return np.cross(k,h)
def e_vec(v,r):
vector = 1/u * (np.dot((np.linalg.norm(v))**2-u/np.linalg.norm(r),r)-np.dot(np.dot(r,v),v))
return vector
def p(h,u):
return (np.linalg.norm(h))**2/u
def a(p,e):
return p/(1-np.linalg.norm(e_vec)**2)
def i(h):
return np.arccos(np.dot(k,h(r,v))/np.linalg.norm(h(r,v)))
list_I = [1,0,0]
I = np.array(list_I)
def ohm(I,n):
nI = np.dot(n(h),I)
ohm = np.acos(nI/n)
return ohm
def w(n,e):
w = np.arccos(np.dot(n,e)/(np.linalg.norm(n)*np.linalg.norm(e)))
return w
def f(e,r):
f = np.arccos(np.dot(e_vec(v,r),r)/(np.linalg.norm(e_vec(v,r))*np.linalg.norm(r)))
return f
print(h(r,v))
print(e_vec(v,r))
print(p(h(r,v),u))
print(i(h(r,v)))
print(ohm(I,n))
print(w)
print(f)
I'm getting this error : TypeError: 'numpy.ndarray' object is not callable, for the function i(h). I don't know how I should fix this.