Найти - Пользователи
Полная версия: Решение ОДУ с scipy.inegrate.odeint.
Начало » Python для новичков » Решение ОДУ с scipy.inegrate.odeint.
1 2 3
Olmer
fongostev
Ясное дело, ты же меняешь вектор действия потенциала на противоположный
Ну не так же будет меняться картина!

fongostev
Ничего странного, видимо реализуется сценарий выхода на орбиту силового центра. Посмотри, что происходит при малых временах и все поймешь.
Olmer
fongostev
Ничего странного, видимо реализуется сценарий выхода на орбиту силового центра. Посмотри, что происходит при малых временах и все поймешь.
Мы же строим график x и y, так? Тогда там не будет прямых линий, всё же движение происходит по эллипсу.
fongostev
А, я что-то подумал, траекторию строишь x(t). x(y) - это фазовый портрет. Не факт, эллипсы наблюдаются только при финитном движении. А еще есть сценарий инфинитного выхода на бесконечность при отталкивающем центре.
Olmer
fongostev
А, я что-то подумал, траекторию строишь x(t). x(y) - это фазовый портрет. Не факт, эллипсы наблюдаются только при финитном движении. А еще есть сценарий инфинитного выхода на бесконечность при отталкивающем центре.
Даже так, если мы будем вылетать на бесконечность, мы будем двигаться по гиперболе, но не по прямой.
fongostev
Olmer
Ну ладно, это уже физика, твоя задача - тебе и анализировать, что у тебя там происходит. Мой совет - посмотри около центра траектории, а то картинка неинформативна. Полагаю, при малых значениях координат обнаружишь искомую гиперболу с асимптотой на прицельном параметре.
Olmer
Вот какой код у меня получился. Только график рисует ужасно. Можете посмотреть, господа знатоки,почему так плохо?
from matplotlib import pyplot as plt
import numpy as np
from scipy.integrate import odeint
my=open('motion2','w')
G=6.67*10**-8
M=2*10**33.
a = - G*M
def traekt(u,t):
	y,vy,x,vx=u
	return [vy, a/y**2.,vx,a/x**2.]
y0 = [10.,3*10**6.,1.5*10**13.,10**4.]
t_output = np.arange(0., 10**7., 10**2.)
u = odeint(traekt, y0, t_output)
print u
my.write(str(u) + '\n')
plt.plot(u[:,0], u[:,2])
plt.show()
fongostev
Ты задумывался о том, что ты вообще строишь?
Да, и еще, так с файлами работать плохо, лучше
with open(filename, "w") as f:
    f.write(data)
Olmer
fongostev
Ты задумывался о том, что ты вообще строишь?Да, и еще, так с файлами работать плохо, лучше
Да! Я должен получить орбиту или некую траекторию в y,x координатах.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB