(f, x_args, y_args)
return X, Y, Z
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)
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.
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 .
def sample3d(f, x_args, y_args):
    """
    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 AttributeError:
        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
def sample3d ( f , x_args , y_args ) : 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 AttributeError : 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