code: def sample3d(f, x_args, y_args):
      r"""
      Samples a 3d function f over specified intervals and returns three
      2d arrays (X, Y, Z) suitable for plotting with matlab (matplotlib)
      syntax. See examples\mplot3d.py.
  
      f is a function of two variables, such as x**2 + y**2.
      x_args and y_args are intervals given in the form (var, min, max, n)
      """
      x, x_min, x_max, x_n = None, None, None, None
      y, y_min, y_max, y_n = None, None, None, None
      try:
          f = sympify(f)
      except SympifyError:
          raise ValueError(
              "f could not be interpreted as a SymPy function"
          )
      try:
          x, x_min, x_max, x_n = x_args
          y, y_min, y_max, y_n = y_args
      except (TypeError, IndexError):
          raise ValueError(
              "x_args and y_args must be tuples of the form (var, min, max, intervals)"
          )
  
      x_l = float(x_max - x_min)
      x_d = x_l / float(x_n)
      x_a = np.arange(float(x_min), float(x_max) + x_d, x_d)
  
      y_l = float(y_max - y_min)
      y_d = y_l / float(y_n)
      y_a = np.arange(float(y_min), float(y_max) + y_d, y_d)
  
      def meshgrid(x, y):
          """
          Taken from matplotlib.mlab.meshgrid.
          """
          x = np.array(x)
          y = np.array(y)
          numRows, numCols = len(y), len(x)
          x.shape = 1, numCols
          X = np.repeat(x, numRows, 0)
  
          y.shape = numRows, 1
          Y = np.repeat(y, numCols, 1)
          return X, Y
  
      X, Y = np.meshgrid(x_a, y_a)
  
      Z = np.ndarray((len(X), len(X[0])))
      for j in range(len(X)):
          for k in range(len(X[0])):
              try:
                  Z[j][k] = float(f.subs(x, X[j][k]).subs(y, Y[j][k]))
              except (TypeError, NotImplementedError):
                  Z[j][k] = 0
      return X, Y, Z
  
imports: from sympy.core.sympify import sympify, SympifyError
  from sympy.external import import_module
label_desc: Use image node_id 2 for calling a global function with example usage: sample3d(f, x_args, y_args) and returns: X,  Y,  Z, X,  Y