Ejemplo n.º 1
0
def run2():
    pygsl.set_debug_level(10)

    x = 2.0
    step = odeiv.step_rk8pd(2, func, None, x)
    control = odeiv.control_y_new(step, 1e-6, 1e-6)
    evolve  = odeiv.evolve(step, control)

    pass
Ejemplo n.º 2
0
def run2():
    pygsl.set_debug_level(10)

    x = 2.0
    step = odeiv.step_rk8pd(2, func, None, x)
    control = odeiv.control_y_new(step, 1e-6, 1e-6)
    evolve = odeiv.evolve(step, control)

    pass
Ejemplo n.º 3
0
def run():

    mu = 2.0
    dimension = 2
    # The different possible steppers for the function
    # Comment your favourite one out to test it.
    #stepper = odeiv.step_rk2
    #stepper = odeiv.step_rk4
    #stepper = odeiv.step_rkf45
    #stepper = odeiv.step_rkck
    stepper = odeiv.step_rk8pd
    #stepper = odeiv.step_rk2imp
    #stepper = odeiv.step_rk4imp
    #stepper = odeiv.step_gear1
    #stepper = odeiv.step_gear2
    #stepper = odeiv.step_bsimp
    
    step = stepper(dimension, func, jac, mu)
    # All above steppers exept the odeiv.step_bsimp (Buerlisch - Stoer Improved
    # method can calculate without an jacobian ...
    # step = stepper(dimension, func)

    #print step
    #print step.type()
    
    control = odeiv.control_y_new(step, 1e-6, 1e-6)
    evolve  = odeiv.evolve(step, control)
    print  "# Using stepper %s with order %d" %(step.name(), step.order())
    print  "# Using Control ", control.name()
    print "# %5s %9s %9s  %9s " % ("iter", "t", "y[0]", "y[1]")
    h = 1.
    tstart = 0.0
    t1 = 5
    ystart = (1.0, 0.0)
    
    t = tstart
    y = ystart
    stamp = time.time()
    nsteps = 1000
    for i in xrange(nsteps):
        if t >= t1:
            break

        t, h, y = evolve.apply(t, t1, h, y, mu)
        #print t
	##y = y[-1]
	print "  %5d % 10.6f % 10.6f  % 10.6f " %(i, t, y[0], y[1])
    else:
        raise ValueError, "Maximum number of steps exceeded!"
    print "Needed %f seconds" %( time.time() - stamp,)

    print "  % 10.6f % 10.6f  % 10.6f " %(t, y[0], y[1])
    stamp = time.time()
Ejemplo n.º 4
0
def run():

    mu = 2.0
    dimension = 2
    # The different possible steppers for the function
    # Comment your favourite one out to test it.
    #stepper = odeiv.step_rk2
    #stepper = odeiv.step_rk4
    #stepper = odeiv.step_rkf45
    #stepper = odeiv.step_rkck
    stepper = odeiv.step_rk8pd
    #stepper = odeiv.step_rk2imp
    #stepper = odeiv.step_rk4imp
    #stepper = odeiv.step_gear1
    #stepper = odeiv.step_gear2
    #stepper = odeiv.step_bsimp

    step = stepper(dimension, func, jac, mu)
    # All above steppers exept the odeiv.step_bsimp (Buerlisch - Stoer Improved
    # method can calculate without an jacobian ...
    # step = stepper(dimension, func)

    #print step
    #print step.type()

    control = odeiv.control_y_new(step, 1e-6, 1e-6)
    evolve = odeiv.evolve(step, control)
    print "# Using stepper %s with order %d" % (step.name(), step.order())
    print "# Using Control ", control.name()
    print "# %5s %9s %9s  %9s " % ("iter", "t", "y[0]", "y[1]")
    h = 1.
    tstart = 0.0
    t1 = 5
    ystart = (1.0, 0.0)

    t = tstart
    y = ystart
    stamp = time.time()
    nsteps = 1000
    for i in xrange(nsteps):
        if t >= t1:
            break

        t, h, y = evolve.apply(t, t1, h, y, mu)
        #print t
        ##y = y[-1]
        print "  %5d % 10.6f % 10.6f  % 10.6f " % (i, t, y[0], y[1])
    else:
        raise ValueError, "Maximum number of steps exceeded!"
    print "Needed %f seconds" % (time.time() - stamp, )

    print "  % 10.6f % 10.6f  % 10.6f " % (t, y[0], y[1])
    stamp = time.time()