code: def denominator(equation, variables=None):
      """find denominators containing the given variables in an equation
  
      Args:
          equation (str): a symbolic equation string, with no more than one line.
              Equation can be an equality or inequality, and must follow standard
              python syntax (the ``math`` and ``numpy`` modules are already imported).
          variables (str, defaut=None): base string (e.g. ``'x'`` = 'x0','x1',...),
              or a list of variable name strings (e.g. ``['x','y','z0']``).
              Default is ``'x'``.
      """
      if variables is None:
          variables = "x"
      # deal with the lhs and rhs separately
      cmp = comparator(equation)
      if cmp:
          res, equation = equation.split(cmp, 1)
          res = set(denominator(res, variables))
      else:
          res = set()
      # flatten and find all statements enclosed in parenthesis
      subs = {}
      equation = flat(equation, subs)
      # find denominators in flattened equation
      denom = set(_denominator(equation))
      res.update(
          _noparen(e) for e in denom if get_variables(e, variables)
      )
      # find denominators within the enclosed parentheses
      for k, v in subs.items():
          # replace tmp-names in denominators as necessary
          den = (e.replace(k, v) for e in denom if k in e)
          # exclude replaced k's that don't have variables
          res.update(d for d in den if get_variables(d, variables))
          # recurse into new statements
          res.update(denominator(v, variables))
      return list(res)
  
imports: from numpy import ndarray, asarray, any
  from mystic._symbolic import solve
  from mystic.tools import list_or_tuple_or_ndarray, flatten
label_desc: Use image node_id 12 for calling a global function with example usage: denominator(equation, variables) and returns: list