[R] Skip jumps in curve

Duncan Murdoch murdoch@dunc@n @end|ng |rom gm@||@com
Tue Feb 13 17:05:47 CET 2024


On 13/02/2024 10:29 a.m., Leo Mada via R-help wrote:
> Dear R-Users,
> 
> Is there a way to skip over without plotting the jumps/discontinuities in curve()?
> 
> I have not seen such an option, but maybe I am missing something.
> 
> plot.gamma = function(xlim = c(-6, -1), ylim = c(-1,3), hline = NULL, n = 1000) {
>     curve(gamma(x), from = xlim[1], to = xlim[2], ylim=ylim, n=n);
>     if( ! is.null(hline)) abline(h = hline, col = "green");
> }
> 
> Euler = 0.57721566490153286060651209008240243079;
> plot.gamma(hline = Euler)
> 
> Adding an option to the function curve may be useful:
> options = c("warn", "silent", "unconnected")
> 
> This is part of some experiments in math; but that's another topic. For latest version:
> https://github.com/discoleo/R/blob/master/Math/Integrals.Gamma.Inv.R

If you know where the discontinuities are, plot multiple times with the 
discontinuities as endpoints:

plot.gamma = function(xlim = c(-6, -1), ylim = c(-1,3), hline = NULL, n 
= 1000) {
   start <- floor(xlim[1]):floor(xlim[2])
   end <- start + 1

   start[1] <- xlim[1]
   end[length(end)] <- xlim[2]

   n <- round(n/length(start))

   curve(gamma(x), from = start[1], to = end[1], ylim=ylim, n=n, xlim = 
xlim)
   for (i in seq_along(start)[-1])
     curve(gamma(x), from = start[i], to = end[i], add = TRUE, n)
   if( ! is.null(hline)) abline(h = hline, col = "green");
}

Euler = 0.57721566490153286060651209008240243079;
plot.gamma(hline = Euler)

If you don't know where the discontinuities are, it would be much 
harder, because discontinuities can be hard to detect unless the jumps 
are really big.

Duncan Murdoch



More information about the R-help mailing list