def BZ(t, X, params):
(x, y, z) = X
(epsilon, delta, q, f) = params
dx = (q * y - x * y + x * (1 - x)) / epsilon
dy = (- q * y - x * y + 2 * f * z) / delta
dz = x - z
return [dx, dy, dz]
def BZJacobian(t, X, params):
(x, y, z) = X
(epsilon, delta, q, f) = params
dFxdx = (1 - 2 * x - y) / epsilon
dFxdy = (q - x) / epsilon
dFxdz = 0
dFydx = - y / delta
dFydy = (- q - x) / delta
dFydz = 2 * f / delta
dFzdx = 1
dFzdy = 0
dFzdz = -1
dFxdt = 0
dFydt = 0
dFzdt = 0
return [[dFxdx, dFxdy, dFxdz],
[dFydx, dFydy, dFydz],
[dFzdx, dFzdy, dFzdz],
[dFxdt, dFydt, dFzdt]]