Я хотел бы реализовать собственный базовый интегратор Runge-Kutta 4 в Python. Формат должен быть что-то вроде этого:Передача набора функций в качестве аргументов другой функции в Python
---- EXAMPLE set of equations ----
f1 = lambda x: x**2
f2 = lambda y: y**2
.
.
.
fn = lambda n: n**2
f = [f1, f2, f3, ... , fn]
result = integrate(f, other arguments [e.g. stepsize etc.])
---- result should be of format ----
result = [result1 result2 result3 ... resultn]
Поэтому в основном я хочу, чтобы иметь возможность определить, например, набор из трех уравнений движения, и быть в состоянии передать их в функцию и получить доступ к ним, чтобы манипулировать эти уравнения внутри этой функции. Как это возможно?
В идеале, я хочу для того чтобы достигнуть что-то похожее на Matlabs ode45 функцию, которую можно назвать, например, следующим образом:
% ---- file 1 ---- %
function xp=F(t,x)
xp=zeros(2,1);
xp(1)=x(2);
xp(2)=-t*x(1)+exp(t)*x(2)+3*sin(2*t);
% ---- file 2 ---- %
[t,x]=ode45(’file 1’,[t0,tf],[x10,x20]);
% where t0 tf initial and final values of t
% x10 x20 initial values of x
Примечание 1:
я уже смотрел на источник для dopri5 в SciPy но он реализован на C и слишком продвинут для моих целей.
Примечание 2:
Дайте мне знать, если то, что я написал выше, не понятно вообще, что
FYI вы знаете, что это, вероятно, будет медленным, не так ли? – katrielalex