Форум сайта python.su
0
fongostevДа! Я про эту ссылку говорил. Вот мой вариант кода
from matplotlib import pyplot as plt import numpy as np from scipy.integrate import odeint G=6.67*10**-8 M=2*10**33. def motion(x_vec, t): x, y = x_vec # tuple unpacking return [y, G*M/y**2.] y0 = [10**13., 10**13.] t_output = np.arange(0, 10**7, 10**3) y_result = odeint(motion, y0, t_output) plt.plot(y_result[:,0],y_result[:,1]) plt.show()
Офлайн
4
OlmerТам идет распаковка набора аргументов. Грубо говоря, там происходит следующее:
a, b, c = (a, b, c)
Отредактировано fongostev (Апрель 21, 2014 10:40:22)
Офлайн
0
fongostevВот здесь? “x, y = x_vec ” Немного не догоняю…
x, y = x_vec
Офлайн
4
OlmerДа, именно. Просто в интерпретаторе введи
t = (1,2) a, b = t
Офлайн
0
fongostevНо x_vec, что такое? Что это за вектор?
Офлайн
4
Olmerэто твой набор независимых переменных, в твоем случае х и х с точкой.
Офлайн
0
fongostevА ты можешь записать, как будет выглядеть тело функции, или у меня правильно написано?
Офлайн
4
Ты просто неаккуратно расписал систему. Замени строку и попробуй. Должно быть так:
return [y, G*M/x**2]
Отредактировано fongostev (Апрель 21, 2014 11:03:08)
Офлайн
0
fongostevОн рисует, что-то похожее. Но если поменять знак на минут перед G*M, то получается страшное решение.
Ты просто неаккуратно расписал систему. Замени строку и попробуй. Должно быть так:
Офлайн
4
Ясное дело, ты же меняешь вектор действия потенциала на противоположный
Офлайн