Advertisement
bolverk

rhoades_ruffini_1974

Feb 9th, 2015
483
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.07 KB | None | 0 0
  1. def main():
  2.  
  3.     import sympy
  4.     from scipy.integrate import odeint
  5.     import numpy
  6.     import pylab
  7.  
  8.     r = sympy.Symbol('r')
  9.     p = sympy.Symbol('p')
  10.     G = sympy.Symbol('G')
  11.     rho = sympy.Symbol('rho')
  12.     c = sympy.Symbol('c')
  13.     m = sympy.Symbol('m')
  14.  
  15.     tov_equation = (p(r)).diff(r) + (G/r**2)*(rho(r)+p(r)/c**2)*(m(r)+4*sympy.pi*r**3*p(r)/c)/(1-2*G*m(r)/(c**2*r))
  16.     tov_equation = tov_equation.subs(p(r),c**2*rho(r))
  17.     tov_equation = tov_equation.subs(rho(r),(m(r)).diff(r)/(4*sympy.pi*r**2))
  18.     tov_equation = tov_equation.subs(G,1).subs(c,1)
  19.  
  20.     m_rr = sympy.solve(tov_equation.doit(),m(r).diff(r,2))[0]
  21.  
  22.     def deriv(y,x):
  23.         return [y[1], m_rr.subs(m(r).diff(r),y[1]).subs(m(r),y[0]).subs(r,x).n()]
  24.  
  25.     x_range = numpy.logspace(-6,0,1000)
  26.     for slope in numpy.logspace(-3,3,7):
  27.         nsol = odeint(deriv, [0,slope], x_range)
  28.         pylab.loglog(x_range, nsol.T[0], label=str(slope))
  29.     pylab.legend(loc='lower right')
  30.     pylab.xlabel('r')
  31.     pylab.ylabel('m')
  32.     pylab.show()
  33.  
  34. if __name__ == '__main__':
  35.  
  36.     main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement