Как построить орбиту, которая спиральна в центр орбиты, используя петли? - PullRequest
0 голосов
/ 28 апреля 2020

Привет, я написал несколько кодов, когда я пытаюсь построить орбиту, b = бета = 3, G = 1, я не могу получить орбиту, которая спиральна в центр, используя петли, которые показывают неполную орбиту. ниже приведен код с b = beta = 3 и G = 1:

import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import solve_ivp
def dbydt(t,v):
    x,y,vx,vy=v
    rsq=x**2+y**2
    G=1
    b=3
    beta=3
    return vx,vy,-G*x/rsq**((b+1)/2),-G*y/rsq**((beta+1)/2)
result=solve_ivp(dbydt,[0,2],[1,0,0,1],t_eval=np.linspace(0,2,100))
plt.scatter(result.y[0],result.y[1])
plt.scatter(0,0,color='yellow',s=200)
plt.show()

1 Ответ

0 голосов
/ 28 апреля 2020

Если вы увеличите свой последний раз более чем на 2, например. 25 в данном случае:

import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import solve_ivp
def dbydt(t,v):
    x,y,vx,vy=v
    rsq=x**2+y**2
    G=1
    b=3
    beta=3
    return vx,vy,-G*x/rsq**((b+1)/2),-G*y/rsq**((beta+1)/2)

t_final = 25
result=solve_ivp(dbydt,[0,t_final],[1,0,0,1],t_eval=np.linspace(0,t_final,512))
plt.scatter(result.y[0],result.y[1])
plt.scatter(0,0,color='yellow',s=200)
plt.show()

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...