No se puede obtener RK4 para resolver la posición del cuerpo en órbita en Python

Estoy tratando de resolver la posición de un cuerpo en órbita alrededor de un cuerpo mucho más masivo, usando la idealización de que el cuerpo mucho más masivo no se mueve. Estoy tratando de resolver la posición en coordenadas cartesianas usando Runge-Kutta de cuarto orden en python.

Aquí está mi código:

dt = .1
t = np.arange(0,10,dt)

vx = np.zeros(len(t))
vy = np.zeros(len(t))
x = np.zeros(len(t))
y = np.zeros(len(t))

vx[0] = 10 #initial x velocity
vy[0] = 10 #initial y velocity
x[0] = 10 #initial x position
y[0] = 0 #initial y position

M = 20

def fx(x,y,t): #x acceleration
     return -G*M*x/((x**2+y**2)**(3/2))

def fy(x,y,t): #y acceleration
     return -G*M*y/((x**2+y**2)**(3/2))

def rkx(x,y,t,dt): #runge-kutta for x

     kx1 = dt * fx(x,y,t)
     mx1 = dt * x
     kx2 = dt * fx(x + .5*kx1, y + .5*kx1, t + .5*dt)
     mx2 = dt * (x + kx1/2)
     kx3 = dt * fx(x + .5*kx2, y + .5*kx2, t + .5*dt)
     mx3 = dt * (x + kx2/2)
     kx4 = dt * fx(x + kx3, y + x3, t + dt)
     mx4 = dt * (x + kx3)

     return (kx1 + 2*kx2 + 2*kx3 + kx4)/6
     return (mx1 + 2*mx2 + 2*mx3 + mx4)/6

 def rky(x,y,t,dt): #runge-kutta for y

     ky1 = dt * fy(x,y,t)
     my1 = dt * y
     ky2 = dt * fy(x + .5*ky1, y + .5*ky1, t + .5*dt)
     my2 = dt * (y + ky1/2)
     ky3 = dt * fy(x + .5*ky2, y + .5*ky2, t + .5*dt)
     my3 = dt * (y + ky2/2)
     ky4 = dt * fy(x + ky3, y + ky3, t + dt)
     my4 = dt * (y + ky3)

     return (ky1 + 2*ky2 + 2*ky3 + ky4)/6
     return (my1 + 2*my2 + 2*my3 + my4)/6

for n in range(1,len(t)): #solve using RK4 functions
    vx[n] = vx[n-1] + fx(x[n-1],y[n-1],t[n-1])*dt
    vy[n] = vy[n-1] + fy(x[n-1],y[n-1],t[n-1])*dt
    x[n] = x[n-1] + vx[n-1]*dt
    y[n] = y[n-1] + vy[n-1]*dt

Originalmente, no importa de qué manera modifiqué el código, recibía un error en mi bucle for, ya sea "objeto de tipo 'float' no tiene len ()" (No entendí a qué se refería float python) , o "establecer un elemento de matriz con una secuencia" (tampoco entendí a qué secuencia se refería). Me las arreglé para deshacerme de los errores, pero mis resultados son simplemente incorrectos. Obtengo matrices vx y vy de 10s, una matriz x de enteros del 10. al 109. y una matriz y de enteros del 0. al 99.

Sospecho que hay problemas con fx (x, y, t) y fy (x, y, t) o con la forma en que he codificado las funciones runge-kutta para ir con fx y fy, porque he usado lo mismo código runge-kutta para otras funciones y funciona bien.

Aprecio mucho cualquier ayuda para descubrir por qué mi código no funciona. Gracias

Respuestas a la pregunta(2)

Su respuesta a la pregunta