# Author : Pierre Schnizer import sys import pygsl._numobj as Numeric import pygsl from pygsl import odeiv sys.stdout = sys.stderr mu = 10.0 def func(t, y, mu): #print "--> func", t, y f = Numeric.zeros((2,), Numeric.Float) * 1.0 f[0] = y[1] f[1] = -y[0] - mu * y[1] * (y[0] ** 2 -1); #print f return f def jac(t, y, mu): #print "--> jac", t, y dfdy = Numeric.ones((2,2), Numeric.Float) dfdy[0, 0] = 0.0 dfdy[0, 1] = 1.0 dfdy[1, 0] = -2.0 * mu * y[0] * y[1] - 1.0 dfdy[1, 1] = -mu * (y[0]**2 - 1.0) #print "dfdy[0, 0]", dfdy[0, 0] #print "dfdy[0, 1]", dfdy[0, 1] #print "dfdy[1, 0]", dfdy[1, 0] #print "dfdy[1, 1]", dfdy[1, 1] dfdt = Numeric.zeros((2,)) return dfdy, dfdt def test_evolve_bsimp(): dimension = 2 step = odeiv.step_bsimp(dimension, func,jac, mu) control = odeiv.control_y_new(step, 1e-6, 1e-6) evolve = odeiv.evolve(step, control, dimension) step1 = odeiv.step_rkf45(dimension, func,jac,mu) control1 = odeiv.control_y_new(step1, 1e-6, 1e-6) evolve1 = odeiv.evolve(step1, control1, dimension) h = 1 t = 0.0 t1 = 100.0 y = Numeric.array((1.0, 0.0)) while t