Hans W Borchers wrote:
> 
> Let's see how many zeroes are there of the function sin(1/x) in the
> interval
> [0.1, 1.0].  Can you find out by plotting?
> 
> In the 1-dimensional case the simplest approach is to split into
> subintervals
> small enough to contain at most one zero and search each of these, e.g.,
> with 
> the secant rule --- or uniroot() if you like.
> 
> The following function will find 31 zeroes for sin(1/x) using subintervals
> of length 1/000, i.e. x <- seq(0.1, 1.0, len=1001); y <- sin(1/x); and
> call
> piecewise(x, y).
> 
> Hans Werner
> 
> ----
> piecewise <- function(x, y) {
>       n <- length(x)
>       zeros <- if (y[1] == 0) c(x[1]) else c()
>       for (i in 2:n) {
>               if (y[i]*y[i-1] >= 0) {
>                       if (y[i] == 0) zeros <- c(zeros, x[i])
>               } else {
>                       x0 <- (x[i-1]*y[i] - x[i]*y[i-1])/(y[i] - y[i-1])
>                       zeros <- c(zeros, x0)
>               }
>       }
>       return(zeros)
> }
> ----
> 

Sorry, I meant "how many zeroes are there in the interval [0.01, 1.0] ?" !
The following will find 31 zeroes, and these are all.

    x <- seq(0.01, 1.0, len=1001)
    y <- sin(1/x);
    piecewise(x, y)

Hans Werner

-- 
View this message in context: 
http://r.789695.n4.nabble.com/Finding-Zeros-of-a-Function-tp2713980p2968249.html
Sent from the R help mailing list archive at Nabble.com.

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to