Given a function $z=f(x,y)$, this code will do several things. *It will construct several different types of contour plots of the function. *It will plot the gradient field $\vec \nabla f$. *It will plot the level curves and gradient plot on the same axes. *If you uncomment the 3D portion, it will also construct a 3D graph of the surface. This requires that you have Java installed. When you are ready, just click "Evaluate" or type "Shift+Enter" while your cursor is in the input box.

var('x','y')          #Define your variables
f(x,y) = 9-x^2-2*y^2    #State the function
xbounds = (x,-3,3)          
ybounds = (y,-3,3)          

#This gives you a generic contour plot (a plot consisting of several level curves)
pcontour=contour_plot(f,(x,-2,2), (y,-2,2),colorbar=True)
show(pcontour)

#This section allows you to plot as many level curves as you want
level_curve_values=[0,1,2,3,4,5,6,7,8]

p=implicit_plot(f(x,y)==level_curve_values[0],xbounds,ybounds)
for z in level_curve_values:
 p+=implicit_plot(f(x,y)==z,xbounds,ybounds)
show(p)

#This section draws the gradient of your function.
gradf = f.diff()(x,y)
gradplot=plot_vector_field(gradf,xbounds,ybounds)
show(gradplot)

#This section combines your level curve plot and your gradient plot.
show(p+gradplot)

#Uncomment this section if you want a 3D image of the surface.
#p3D=plot3d(f,xbounds,ybounds)
#show(p3D)

Here's the command for plotting a vector field in Mathematica.

Plot3D[9-x^2-y^2,{x,-3,3},{y,-3,3}]

To get level curves in Mathematica, type

ContourPlot[z==9-x^2-y^2,{x,-3,3},{y,-3,3}]

{{page>get_sage}}