The software packages [Octave](http://www.gnu.org/software/octave/) and [scilab](http://www.scilab.org/) can also do this. An example for $y^3 + x^3 - 6x^2y=0$ would be as follows. Change the last line from contour(z) to surf(z) to get a surface plot; to surfl(z) to get a shaded and illuminated surface plot. xmin=-5.0; xstep=0.1; xmax=5.0; // replace with your values ymin=.... ; // replace with your values // // generate x,y lattice points for plot [x y]=meshgrid(xmin:xstep:xmax, ymin:ystep:ymax); // // define z=f(x,y), replace with your desired function z=y.^3 + x.^3 - 6 * x.^2 .* y; // // now perform contour plot of function contour(z); // or surf(z), or surfl(z) for surface plots and Octave and Scilab are free software and open-source software which can be freely downloaded and used on multiple operating system platforms. - http://en.wikipedia.org/wiki/Scilab -- http://www.scilab.org/ - http://en.wikipedia.org/wiki/GNU_Octave -- http://www.gnu.org/software/octave/ If you've got a Macintosh with OS X, or System 9, you can use the built in [Graphing Calculator](http://en.wikipedia.org/wiki/Grapher) program [NuCalc](http://en.wikipedia.org/wiki/NuCalc) to directly type in the equation, zoom in and out, and fly around the 3-d surface plot; Graphing Calculator can also do inequalitiies such as $x^2+y^2 \gt 5$.