from math import sin, cos

class forceddampedduffing2d(object):
    """Vector field that describes the phase space of the forced damped Duffing oscillator."""

    def __init__(self, Alpha = -0.25, Beta = 0.4):
        self.alpha = Alpha
        self.beta = Beta

    # Samples the phase space vector field of the forced damped duffing oscillator
    def sample(self, x, y, t):
        u = y
        v = self.alpha * y - x * x*x + x + self.beta * cos(t)
        return u, v;

    # Samples the phase space x-partial of the vector field of the forced damped duffing oscillator
    def sample_dx(self, x, y, t):
        u = 0
        v = 1 - 3 * x*x
        return u, v;

    # Samples the phase space y-partial of the vector field of the forced damped duffing oscillator
    def sample_dy(self, x, y, t):
        u = 1
        v = self.alpha
        return u, v;

    # Samples the phase space t-partial of the vector field of the forced damped duffing oscillator
    def sample_dt(self, x, y, t):
        u = 0
        v = -self.beta * sin(t)
        return u, v;