http://www.math.ucsd.edu/~math20f/Fall/Lab2/Lab2.shtml