class_docstr: Method for formulating the equations of motion using a set of interconnected bodies with joints.
  
  Parameters
  ==========
  
  newtonion : Body or ReferenceFrame
      The newtonion(inertial) frame.
  *joints : Joint
      The joints in the system
  
  Attributes
  ==========
  
  q, u : iterable
      Iterable of the generalized coordinates and speeds
  bodies : iterable
      Iterable of Body objects in the system.
  loads : iterable
      Iterable of (Point, vector) or (ReferenceFrame, vector) tuples
      describing the forces on the system.
  mass_matrix : Matrix, shape(n, n)
      The system's mass matrix
  forcing : Matrix, shape(n, 1)
      The system's forcing vector
  mass_matrix_full : Matrix, shape(2*n, 2*n)
      The "mass matrix" for the u's and q's
  forcing_full : Matrix, shape(2*n, 1)
      The "forcing vector" for the u's and q's
  method : KanesMethod or Lagrange's method
      Method's object.
  kdes : iterable
      Iterable of kde in they system.
  
  Examples
  ========
  
  This is a simple example for a one degree of freedom translational
  spring-mass-damper.
  
  >>> from sympy import symbols
  >>> from sympy.physics.mechanics import Body, JointsMethod, PrismaticJoint
  >>> from sympy.physics.vector import dynamicsymbols
  >>> c, k = symbols('c k')
  >>> x, v = dynamicsymbols('x v')
  >>> wall = Body('W')
  >>> body = Body('B')
  >>> J = PrismaticJoint('J', wall, body, coordinates=x, speeds=v)
  >>> wall.apply_force(c*v*wall.x, reaction_body=body)
  >>> wall.apply_force(k*x*wall.x, reaction_body=body)
  >>> method = JointsMethod(wall, J)
  >>> method.form_eoms()
  Matrix([[-B_mass*Derivative(v(t), t) - c*v(t) - k*x(t)]])
  >>> M = method.mass_matrix_full
  >>> F = method.forcing_full
  >>> rhs = M.LUsolve(F)
  >>> rhs
  Matrix([
  [                     v(t)],
  [(-c*v(t) - k*x(t))/B_mass]])
  
  Notes
  =====
  
  ``JointsMethod`` currently only works with systems that do not have any
  configuration or motion constraints.
code: def __init__(self, newtonion, *joints):
      if isinstance(newtonion, BodyBase):
          self.frame = newtonion.frame
      else:
          self.frame = newtonion
  
      self._joints = joints
      self._bodies = self._generate_bodylist()
      self._loads = self._generate_loadlist()
      self._q = self._generate_q()
      self._u = self._generate_u()
      self._kdes = self._generate_kdes()
  
      self._method = None
  
imports: from sympy.physics.mechanics import Body, Lagrangian, KanesMethod, LagrangesMethod, RigidBody, Particle
  from sympy.physics.mechanics.body_base import BodyBase
  from sympy.physics.mechanics.method import _Methods
  from sympy import Matrix
label_desc: Use image node_id 1 to create a new JointsMethod object from inherited base classes: _Methods with example: obj = JointsMethod(newtonion)