

   DDrraaww FFuunnccttiioonn PPlloottss

        curve(expr, from, to, n=101, add=FALSE, type="l", ylab = NULL, log=NULL, ...)
        plot.function(fn, from=0, to=1, n=101, ...)

   AArrgguummeennttss::

       expr: an expression written as a function of `x', or
             alternatively a function which will be plotted.

         fn: a `vectorizing' numeric R function.

    from,to: the range over which the function will be plotted.

          n: integer; the number of x values at which to evalu-
             ate.

        add: logical; if `TRUE' add to already existing plot.

        ...: graphical parameters can also be specified as
             arguments.  `plot.function' passes all these to
             `curve'.

   DDeessccrriippttiioonn::

        Draws a curve corresponding to the given function or
        expression (in `x') over the interval `[from,to]'.

   DDeettaaiillss::

        The evaluation of `expr' is at `n' points equally
        spaced over the range `[from, to]'.  The points deter-
        mined in this way are then joined with straight lines.
        `fn(x)' or `expr' (with `x' inside) must return a
        numeric of the same length as `x'.

        This used to be a quick hack which seems to serve a
        useful purpose, but can give bad results for functions
        which are not smooth.

   VVaalluuee::

        `NULL'. For ``expensive'' `expr'essions, you should use
        smarter tools.

   SSeeee AAllssoo::

        `splinefun' for spline interpolation, `lines'.

   EExxaammpplleess::

        par(mfrow=c(2,2))
        curve(x^3-3*x, -2, 2)
        curve(x^2-2, add = TRUE, col = "violet")

        curve(sin, -pi, 3*pi)
        plot(cos)
        chippy <- function(x) sin(cos(x)*exp(-x/2))
        curve(chippy, -8, 7, n=2001)

        for(ll in c("","x","y","xy"))
           curve(log(1+x), 1,100, log=ll, sub=paste("log=",ll))

