'Initializes a SymbolicSystem object'

def __init__(self, coord_states, right_hand_side, speeds=None, mass_matrix=None, coordinate_derivatives=None, alg_con=None, output_eqns={}, coord_idxs=None, speed_idxs=None, bodies=None, loads=None):

    if (speeds is None):
        self._states = Matrix(coord_states)
        if (coord_idxs is None):
            self._coordinates = None
        else:
            coords = [coord_states[i] for i in coord_idxs]
            self._coordinates = Matrix(coords)
        if (speed_idxs is None):
            self._speeds = None
        else:
            speeds_inter = [coord_states[i] for i in speed_idxs]
            self._speeds = Matrix(speeds_inter)
    else:
        self._coordinates = Matrix(coord_states)
        self._speeds = Matrix(speeds)
        self._states = self._coordinates.col_join(self._speeds)
    if (coordinate_derivatives is not None):
        self._kin_explicit_rhs = coordinate_derivatives
        self._dyn_implicit_rhs = right_hand_side
        self._dyn_implicit_mat = mass_matrix
        self._comb_implicit_rhs = None
        self._comb_implicit_mat = None
        self._comb_explicit_rhs = None
    elif (mass_matrix is not None):
        self._kin_explicit_rhs = None
        self._dyn_implicit_rhs = None
        self._dyn_implicit_mat = None
        self._comb_implicit_rhs = right_hand_side
        self._comb_implicit_mat = mass_matrix
        self._comb_explicit_rhs = None
    else:
        self._kin_explicit_rhs = None
        self._dyn_implicit_rhs = None
        self._dyn_implicit_mat = None
        self._comb_implicit_rhs = None
        self._comb_implicit_mat = None
        self._comb_explicit_rhs = right_hand_side
    if ((alg_con is not None) and (coordinate_derivatives is not None)):
        alg_con = [(i + len(coordinate_derivatives)) for i in alg_con]
    self._alg_con = alg_con
    self.output_eqns = output_eqns
    if ((type(bodies) != tuple) and (bodies is not None)):
        bodies = tuple(bodies)
    if ((type(loads) != tuple) and (loads is not None)):
        loads = tuple(loads)
    self._bodies = bodies
    self._loads = loads
