Detecting Singularities in a Graph

Posted by nasufara on Stack Overflow See other posts from Stack Overflow or by nasufara
Published on 2010-03-07T19:06:42Z Indexed on 2010/04/05 2:43 UTC
Read the original article Hit count: 334

Filed under:
|
|
|
|

I am creating a graphing calculator in Java as a project for my programming class. There are two main components to this calculator: the graph itself, which draws the line(s), and the equation evaluator, which takes in an equation as a String and... well, evaluates it.

To create the line, I create a Path2D.Double instance, and loop through the points on the line. To do this, I calculate as many points as the graph is wide (e.g. if the graph itself is 500px wide, I calculate 500 points), and then scale it to the window of the graph.

Now, this works perfectly for most any line. However, it does not when dealing with singularities.

If, when calculating points, the graph encounters a domain error (such as 1/0), the graph closes the shape in the Path2D.Double instance and starts a new line, so that the line looks mathematically correct. Example:

Good Asymptote

However, because of the way it scales, sometimes it is rendered correctly, sometimes it isn't. When it isn't, the actual asymptotic line is shown, because within those 500 points, it skipped over x = 2.0 in the equation 1 / (x-2), and only did x = 1.98 and x = 2.04, which are perfectly valid in that equation. Example:

Bag Asymptote

In that case, I increased the window on the left and right one unit each.

My question is: Is there a way to deal with singularities using this method of scaling so that the resulting line looks mathematically correct?

I myself have thought of implementing a binary search-esque method, where, if it finds that it calculates one point, and then the next point is wildly far away from the last point, it searches in between those points for a domain error. I had trouble figuring out how to make it work in practice, however.

Thank you for any help you may give!

© Stack Overflow or respective owner

Related posts about java

Related posts about graph