Мне нужно просто прочитать Using adaptive step sizes with scipy.integrate.ode и принятое решение этой проблемы и даже воспроизвести результаты путем копирования и вставки в моем интерпретаторе Python.Использование адаптивного шага времени для scipy.integrate.ode при решении систем ODE
Моя проблема в том, что когда я пытаюсь адаптировать код решения к своему собственному коду, я получаю только плоские линии.
Мой код выглядит следующим образом:
from scipy.integrate import ode
from matplotlib.pyplot import plot, show
initials = [1,1,1,1,1]
integration_range = (0, 100)
f = lambda t,y: [1.0*y[0]*y[1], -1.0*y[0]*y[1], 1.0*y[2]*y[3] - 1.0*y[2], -1.0*y[2]*y[3], 1.0*y[2], ]
y_solutions = []
t_solutions = []
def solution_getter(t,y):
t_solutions.append(t)
y_solutions.append(y)
backend = "dopri5"
ode_solver = ode(f).set_integrator(backend)
ode_solver.set_solout(solution_getter)
ode_solver.set_initial_value(y=initials, t=0)
ode_solver.integrate(integration_range[1])
plot(t_solutions,y_solutions)
show()
спасибо! Ссылки по-прежнему удается иногда путать меня ... Кстати, как вы пришли к этому решению? – Ezbob
Отладка. Решение q'n'd заключается в том, чтобы добавлять утверждения print внутри решения_getter и перед графикой, чтобы увидеть, каковы фактические данные. – LutzL