sistema solar

1
# -*- coding: utf-8 -*- from numpy import * from matplotlib.pyplot import * from scipy.integrate import ode ''' solcuion un cuerpo sistema solar usando dopri5 ''' # sea la funcion f(t,Y) def planetas(t,Y): x,y,vx,vy,xm,ym,vxm,vym,xma,yma,vxma,vyma = Y # define valores de [x,y,vx,vy d3 = (x**2+y**2)**1.5 # ||x||^3 tierra d3m = (xm**2+ym**2)**1.5 # ||x||^3 mercurio d3ma = (xma**2+yma**2)**1.5 # ||x||^3 mercurio M =1 G=39.47 dx=-G*M*x/d3 #tierra dy=-G*M*y/d3 dmx=-G*M*xm/d3m #mercurio dmy=-G*M*ym/d3m dmax=-G*M*xma/d3ma #marte dmay=-G*M*yma/d3ma return array([vx,vy,dx,dy,vxm,vym,dmx,dmy,vxma,vyma,dmax,dmay]) # ondiciones iniciales t0 =0 # iempo inicial tfinal =2 # tiempo fnal años dt = 2.73785078e-3 # delta de tiempo (dopri5 algorithm uses adaptive) y0 = array([1.0,0.0,0.0,6.283,0.4,0.0,0.0,10.47,1.52,0,0,5.013]) # initial posit # solucionador solucionador = ode(planetas).set_integrator('dopri5',atol=1e-6) solucionador.set_initial_value(y0,t0) # toma valores inciales de y y t fig = figure() # inicio de grafica imagen = fig.add_subplot(111) # estilo y nombre de la grafica while solucionador.successful() and solucionador.t < tfinal: # integrador solucionador.integrate(solucionador.t+dt) # plot datos # en el mismo orden [x,y,vx,vy,xm,ym,vxm,vym,xma,yma,vxma,vyma imagen.plot(solucionador.y[0],solucionador.y[1],'b.',markersize=2)# posiscio imagen.plot(solucionador.y[4],solucionador.y[5],'g.',markersize=2)# posiscio imagen.plot(solucionador.y[8],solucionador.y[9],'r.',markersize=2)#posiscion imagen.plot(0,0,'oy',markersize=12)# sol imagen.set_xlim([-2,2]) imagen.set_ylim([-2,2]) imagen.set_title('Orbita Mercurio Tierra Marte') xlabel('x (uA)') # Título eje x ylabel('y (uA)') # Título eje y show() # show plot 1

Upload: eduardo-mafla

Post on 28-Sep-2015

8 views

Category:

Documents


3 download

DESCRIPTION

sistema un cuerpo para cada planeta

TRANSCRIPT

  • # -*- coding: utf-8 -*-from numpy import *from matplotlib.pyplot import *from scipy.integrate import ode

    '''solcuion un cuerpo sistema solar usando dopri5'''

    # sea la funcion f(t,Y)def planetas(t,Y): x,y,vx,vy,xm,ym,vxm,vym,xma,yma,vxma,vyma = Y # define valores de [x,y,vx,vy,xm,ym,vxm,vym,xma,yma,vxma,vyma]=[0,1,..11] d3 = (x**2+y**2)**1.5 # ||x||^3 tierra d3m = (xm**2+ym**2)**1.5 # ||x||^3 mercurio d3ma = (xma**2+yma**2)**1.5 # ||x||^3 mercurio M = 1 G=39.47 dx=-G*M*x/d3 #tierra dy=-G*M*y/d3 dmx=-G*M*xm/d3m #mercurio dmy=-G*M*ym/d3m dmax=-G*M*xma/d3ma #marte dmay=-G*M*yma/d3ma

    return array([vx,vy,dx,dy,vxm,vym,dmx,dmy,vxma,vyma,dmax,dmay])

    # ondiciones inicialest0 = 0 # iempo inicialtfinal = 2 # tiempo fnal aosdt = 2.73785078e-3 # delta de tiempo (dopri5 algorithm uses adaptive)y0 = array([1.0,0.0,0.0,6.283,0.4,0.0,0.0,10.47,1.52,0,0,5.013]) # initial position and velocity

    # solucionadorsolucionador = ode(planetas).set_integrator('dopri5',atol=1e-6)solucionador.set_initial_value(y0,t0) # toma valores inciales de y y t

    fig = figure() # inicio de graficaimagen = fig.add_subplot(111) # estilo y nombre de la graficawhile solucionador.successful() and solucionador.t < tfinal:

    # integrador solucionador.integrate(solucionador.t+dt)

    # plot datos # en el mismo orden [x,y,vx,vy,xm,ym,vxm,vym,xma,yma,vxma,vyma]=[0,1,..11] imagen.plot(solucionador.y[0],solucionador.y[1],'b.',markersize=2)# posiscion x=y[0] posisicion y=[1] para tierra imagen.plot(solucionador.y[4],solucionador.y[5],'g.',markersize=2)# posiscion x=y[4] posisicion y=[5] para mercurio imagen.plot(solucionador.y[8],solucionador.y[9],'r.',markersize=2)#posiscion x=y[8] posisicion y=[9] para marte imagen.plot(0,0,'oy',markersize=12)# sol imagen.set_xlim([-2,2]) imagen.set_ylim([-2,2]) imagen.set_title('Orbita Mercurio Tierra Marte') xlabel('x (uA)') # Ttulo eje x ylabel('y (uA)') # Ttulo eje yshow() # show plot

    1