2012/5/22 Matthias Felleisen <matth...@ccs.neu.edu>: > On May 22, 2012, at 8:05 AM, Neil Toronto wrote: > >> I've thought of such things before. Unfortunately, plot doesn't know where >> any > singularities are, so it can't specifically sample the function at those > points. I could > probably allow the user to tell plot where they are, but I > can't think of a good API > for it. I'd want something general enough to handle 1D, 2D and 3D functions, > which allows the user to specify countably many missing values, and direction > of > (dis)continuity.
It is in no way a simple matter to plot functions with singularities. Especially not if points are not known in advance. A simple heuristic is better than none though. Consider the one dimensional case. Let's for the sake of argument say that we sample the function f in two values a and b such that f(a) is below y-min and f(b) is over y-max. If there is a singularity between a and b, then the points P(a,f(a)) and Q(b,f(b)) should not be connected, and if there is no singularity (but a pretty steep ascent) then the points should be connected. By sampling points between a and b it ought to be possible to give a heuristic of whether a singularity has been found or not. Thinking aloud: Would a comparison of the rate ascent between a and b to the mean rate of ascent of all sampled pairs of neighbors give anything usable? If you know any references to papers and/or algorithm on the subject, then do give a pointer. I was only able to find this paper of Fateman: http://www.cs.berkeley.edu/~fateman/papers/intervalplot.ps which present a some nice examples of things to look out for. (Just so I don't forget where I found it) Matlab code using succesive refinement: http://www.stat.colostate.edu/~estep/paov/plotfuns.m -- Jens Axel Søgaard ____________________ Racket Users list: http://lists.racket-lang.org/users