On 3/7/2011 1:59 PM, Jon Herman wrote:
And for the sake of completeness, the derivative function I am calling
from my integrator (this is the 3 body problem in astrodynamics):

def F(mu, X, ti):

     r1= pow((pow(X[0]+mu,2)+pow(X[1],2)+pow(X[2],2)),0.5)

    x0 = X[0]; x1 = X[1]; x2 = X[2]
    r1 = sqrt((x0+mu)**2) + x1*x1 + x2*x2)
    etc...
might be faster. Certainly, repeated lookups of pow is slow
and above is easier to read.

     r2= pow((pow(X[0]+mu-1,2)+pow(X[1],2)+pow(X[2],2)),0.5)

     Ax= X[0]+2*X[4]-(1-mu)*(X[0]+mu)/r1**3-mu*(X[0]-(1-mu))/r2**3
     Ay= X[1]-2*X[3]-(1-mu)*X[1]/r1**3-mu*X[1]/r2**3
     Az= -(1-mu)*X[2]/r1**3-mu*X[2]/r2**3

     XDelta=array([X[3], X[4], X[5], Ax, Ay, Az])

     return XDelta
\


--
Terry Jan Reedy

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to