# How do I find, algorithmically, which parts of a given function are interesting to graph?

I'm building a program that does 2D graphing, and was wondering: How can I determine the default zoom level and x/y extents to display on screen, in such a way as to maximise the 'interesting' parts of a function that are shown?

"Interesting parts" would include:

• Minimums/maximums/plateaus,
• Parts of the space where you can actually see the function,
• Roots,
• Discontinuities,
• and anything else that helps understand what the function looks like and what it does.

I am not necessarily looking for a perfect solution, just something that works well for most common cases, hopefully without having to solve the equation the user entered.

Is there a general method I can use? Or a book/reference that might help? Thanks!

-
The best output I've seen of such an algorithm is what Wolfram Alpha does when graphing functions. I assume they have all sorts of special cases for most common expressions. – anktastic Mar 29 '12 at 6:11

If a formula is given, you can do the same thing but set a default number of points to plot. After you have generated (x,y) coordinates you proceed as above. If you've ever worked with Octave you can see this for yourself by plotting $y = \tan x$. The default doesn't look like what you would expect.