Exemplo n.º 1
0
 def test_atan(self):
     pi4p = helpers.nudge(math.pi / 2, +1)
     self.assertEqual(imath.atan(interval[-fpu.infinity, fpu.infinity]),
                      interval([-pi4p, pi4p]))
     self.assertEqual(imath.atan(1),
                      interval[math.pi / 4,
                               helpers.nudge(math.pi / 4, +1)])
Exemplo n.º 2
0
def initial_alpha_r_interval(model, v_y_I, yaw_dot_I, v_x_I):
    '''
       Function: compute the interval of beta for the kinematic bicycle model
       Input: intervals of vy, yaw_dot, vx
    '''
    L_f = model.L_f
    fun = lambda v_y, yaw_dot, v_x: imath.atan((v_y - L_f * yaw_dot) / v_x)
    alpha_r = fun(v_y_I, yaw_dot_I, v_x_I)
    return [alpha_r[0][0], alpha_r[0][1]]
def initial_state_interval(delta, uncertainty):
    global L
    global L_f
    global L_r
    delta_0 = interval[delta - uncertainty, delta + uncertainty]
    beta = (lambda delta: imath.atan(L_r * imath.tan(delta) / L))(delta_0)
    beta_min = min(beta[0][0], beta[0][1])
    beta_max = max(beta[0][0], beta[0][1])
    return [beta_min, beta_max]
Exemplo n.º 4
0
def initial_beta_interval(model, delta_I):
    '''
       Function: compute the interval of beta for the kinematic bicycle model
       Input: steering angle interval
    '''
    L = model.L
    L_r = model.L_r
    beta = (lambda delta: imath.atan(L_r * imath.tan(delta) / L))(delta_I)
    beta_min = min(beta[0][0], beta[0][1])
    beta_max = max(beta[0][0], beta[0][1])
    return [beta_min, beta_max]
Exemplo n.º 5
0
 def test_atan(self):
     pi4p = helpers.nudge(math.pi / 2, +1)
     self.assertEqual(imath.atan(interval[-fpu.infinity, fpu.infinity]),
                      interval([-pi4p, pi4p]))
     self.assertEqual(imath.atan(1), interval[math.pi / 4, helpers.nudge(math.pi / 4, +1)])
Exemplo n.º 6
0
 def test_atan(self):
     pi4p = helpers.nudge(math.pi / 2, +1)
     assert imath.atan(interval[-fpu.infinity, fpu.infinity]) == interval([-pi4p, pi4p])
     assert imath.atan(1)                                     == interval[math.pi / 4, helpers.nudge(math.pi / 4, +1)]
Exemplo n.º 7
0
    def __eval(self, n_id, box):
        n = self.__dag[n_id]

        rec = self.__eval

        if n[0] == '+':
            v1 = rec(n[1], box)
            v2 = rec(n[2], box)
            return v1 + v2
        elif n[0] == '-':
            v1 = rec(n[1], box)
            v2 = rec(n[2], box)
            return v1 - v2
        elif n[0] == '*':
            v1 = rec(n[1], box)
            v2 = rec(n[2], box)
            return v1 * v2
        elif n[0] == '/':
            v1 = rec(n[1], box)
            v2 = rec(n[2], box)
            return v1 / v2

        elif n[0] == '^':
            v = rec(n[1], box)
            i = self.__dag[n[2]][1]
            return v**i

        elif n[0] == 'exp':
            v = rec(n[1], box)
            return imath.exp(v)

        elif n[0] == 'log':
            v = rec(n[1], box)
            return imath.log(v)

        elif n[0] == 'sqrt':
            v = rec(n[1], box)
            return imath.sqrt(v)

        elif n[0] == 'sin':
            v = rec(n[1], box)
            return imath.sin(v)

        elif n[0] == 'cos':
            v = rec(n[1], box)
            return imath.cos(v)

        elif n[0] == 'tan':
            v = rec(n[1], box)
            return imath.tan(v)

        elif n[0] == 'asin':
            v = rec(n[1], box)
            return imath.asin(v)

        elif n[0] == 'acos':
            v = rec(n[1], box)
            return imath.acos(v)

        elif n[0] == 'atan':
            v = rec(n[1], box)
            return imath.atan(v)

        elif n[0] == 'sinh':
            v = rec(n[1], box)
            return imath.sinh(v)

        elif n[0] == 'cosh':
            v = rec(n[1], box)
            return imath.cosh(v)

        elif n[0] == 'tanh':
            v = rec(n[1], box)
            return imath.tanh(v)

        elif n[0] == 'C':
            return interval[n[1]]
        elif n[0] == 'V':
            return box[n[1]]
        else:
            print('unsupported node: ' + str(n))
            assert (False)
Exemplo n.º 8
0
 def test_atan(self):
     pi4p = helpers.nudge(math.pi / 2, +1)
     assert imath.atan(interval[-fpu.infinity,
                                fpu.infinity]) == interval([-pi4p, pi4p])
     assert imath.atan(1) == interval[math.pi / 4,
                                      helpers.nudge(math.pi / 4, +1)]