Re: Plotting Piecewise Functions with Discontinuites
- To: mathgroup at christensen.cybernetics.net
- Subject: [mg1974] Re: [mg1941] Plotting Piecewise Functions with Discontinuites
- From: Allan Hayes <hay at haystack.demon.co.uk>
- Date: Wed, 30 Aug 1995 01:51:12 -0400
"Paul J. Simonich" <simonichpj%dfms%usafa at dfmail.usafa.af.mil>
in [mg1941] Plotting Piecewise Functions with Discontinuites
wishes to avoid Mathematica drawing vertical asymptotes.
Paul:
Here is a way in which you don't need to know where the asymptotes
are.The third entry controls the slope beyond which the line
elements are to be removed: the default is 25 times the slope of the
line from bottom left to top right of the bounding rectangle in
user coordinates.
The treatment can be varied by, for example, adding an option or an
entry to Plot (though the former way is quite tricky - see
[mg874]).
We can also arrange for the graphics object produced to contain
multi-point lines instead of two point line segments.
Allan Hayes
hay at haystack.demon.co.uk
****************8
PlotNA[f_,{x_,a_,b_},n:(_Integer?Positive):25, opts___?OptionQ] :=
Module[ {graph,ar,graphNA,pairs},
graph = Plot[f, {x,min,max}, DisplayFunction->Identity,opts];
ar = Divide@@Reverse[FullOptions[graph,PlotRange].{-1,1}];
graphNA =
graph/.Line[lst_] :>
(pairs = Partition[lst, 2, 1];
Cases[pairs,
p_/;Greater@@(Abs/@(Subtract@@p){n ar,1}) :> Line[p]
]
);
Show[graphNA, DisplayFunction -> $DisplayFunction]
]