package planeta; public class Planeta { private double r; //distancia al centro de fuerzas private double a, b, c, d; private double l1, l2, l3, l4; private double k1, k2, k3, k4; private double m1, m2, m3, m4; private double q1, q2, q3, q4; private double dt; //intervalo public double t; public double x; public double y; public double Vx; public double Vy; Planeta(double x, double y, double Vx, double Vy, double t, double dt){ this.x=x; this.y=y; this.Vx=Vx; this.Vy=Vy; this.dt=dt; this.t=t; } public void resolver(){ //resolución del sistema de ecuaciones diferenciales de segundo orden //por el procedimiento de Runge-Kutta a=x; b=y; c=Vx; d=Vy; l1=c*dt; q1=d*dt; r=Math.sqrt(a*a+b*b); k1=-a*dt/r/r/r; m1=-b*dt/r/r/r; a=x+l1/2; b=y+q1/2; c=Vx+k1/2; d=Vy+m1/2; l2=c*dt; q2=d*dt; r=Math.sqrt(a*a+b*b); k2=-a*dt/r/r/r; m2=-b*dt/r/r/r; a=x+l2/2; b=y+q2/2; c=Vx+k2/2; d=Vy+m2/2; l3=c*dt; q3=d*dt; r=Math.sqrt(a*a+b*b); k3=-a*dt/r/r/r; m3=-b*dt/r/r/r; a=x+l3; b=y+q3; c=Vx+k3; d=Vy+m3; l4=c*dt; q4=d*dt; r=Math.sqrt(a*a+b*b); k4=-a*dt/r/r/r; m4=-b*dt/r/r/r; //valores de las variables en el instante t+dt t+=dt; x+=(l1+2*l2+2*l3+l4)/6; y+=(q1+2*q2+2*q3+q4)/6; Vx+=(k1+2*k2+2*k3+k4)/6; Vy+=(m1+2*m2+2*m3+m4)/6; } }