Exemple #1
0
def run_example(with_plots=True):
    #Create an instance of the problem
    exp_mod = Extended_Problem()  #Create the problem

    exp_sim = Radau5ODE(exp_mod)  #Create the solver

    exp_sim.verbosity = 0
    exp_sim.report_continuously = True

    #Simulate
    t, y = exp_sim.simulate(
        10.0, 1000)  #Simulate 10 seconds with 1000 communications points

    #Basic test
    nose.tools.assert_almost_equal(y[-1][0], 8.0)
    nose.tools.assert_almost_equal(y[-1][1], 3.0)
    nose.tools.assert_almost_equal(y[-1][2], 2.0)

    #Plot
    if with_plots:
        P.plot(t, y)
        P.title("Solution of a differential equation with discontinuities")
        P.ylabel('States')
        P.xlabel('Time')
        P.show()

    return exp_mod, exp_sim
def run_example(with_plots=True):
    r"""
    Example for the use of the implicit Euler method to solve
    Van der Pol's equation
    
    .. math::
       
        \dot y_1 &= y_2 \\
        \dot y_2 &= \mu ((1.-y_1^2) y_2-y_1)

    with :math:`\mu= 10^6`.

    on return:
    
       - :dfn:`exp_mod`    problem instance
    
       - :dfn:`exp_sim`    solver instance

    """

    #Define the rhs
    def f(t, y):
        eps = 1.e-6
        my = 1. / eps
        yd_0 = y[1]
        yd_1 = my * ((1. - y[0]**2) * y[1] - y[0])

        return N.array([yd_0, yd_1])

    y0 = [2.0, -0.6]  #Initial conditions

    #Define an Assimulo problem
    exp_mod = Explicit_Problem(f, y0)
    exp_mod.name = 'Van der Pol (explicit)'

    #Define an explicit solver
    exp_sim = Radau5ODE(exp_mod)  #Create a Radau5 solver

    #Sets the parameters
    exp_sim.atol = 1e-4  #Default 1e-6
    exp_sim.rtol = 1e-4  #Default 1e-6
    exp_sim.inith = 1.e-4  #Initial step-size

    #Simulate
    t, y = exp_sim.simulate(2.)  #Simulate 2 seconds

    #Plot
    if with_plots:
        import pylab as P
        P.plot(t, y[:, 0])  #, marker='o')
        P.xlabel('Time')
        P.ylabel('State')
        P.title(exp_mod.name)
        P.show()

    #Basic test
    x1 = y[:, 0]
    assert N.abs(x1[-1] - 1.706168035) < 1e-3  #For test purpose

    return exp_mod, exp_sim
Exemple #3
0
    def _default_solver_instance(self):
        from assimulo.solvers import Radau5ODE

        return Radau5ODE(self._assimulo_problem)