docs: def jacobian(expr, symbols):
      """
      Derive a symbolic expr w.r.t. each symbol in symbols. This returns a symbolic jacobian vector.
  
      :param expr: A sympy Expr.
      :param symbols: The symbols w.r.t. which to derive.
      """
      jac = []
      for symbol in symbols:
          # Differentiate to every param
          f = sympy.diff(expr, symbol)
          jac.append(f)
      return jac