see FAQ 7.31 and read "What Scientists should know about floating point
numbers"
On 7/5/07, James Foadi <[EMAIL PROTECTED]> wrote:
>
> True.
> I've corrected my function in this way:
>
> #######################################
> sinca <- function(N,th)
>
> {
>
> mod_th <- th%%(2*pi)
>
> if (mod_th == 0)
>
> {
>
> ff <- 2*N+1
>
> }
>
> else
>
> {
>
> ff <- sin((N+0.5)*th)/sin(0.5*th)
>
> }
>
> return(ff)
>
> }
>
> #######################################
>
> The function is equal to 2*N+1 at 0, 2Pi, 4Pi, etc.
>
> Still having the same problem.
>
> J
>
> ----- Original Message -----
> From: jim holtman
> To: James Foadi
> Cc: [email protected]
> Sent: Thursday, July 05, 2007 8:44 PM
> Subject: Re: [R] unexpected result in function valuation
>
>
> Very simple; it is your function. You need to step through and see that
> you are evaluating close to zero:
>
> > x[701]
> [1] 6.283185
> > sin((4.5*x[701]))
> [1] -1.666142e-14
> > sin(.5*x[701])
> [1] -1.653896e-15
> > sin((4.5*x[701]))/sin(.5*x[701])
> [1] 10.07404
> >
>
> With numbers that small you might be losing significance. See the FAQ on
> floating point numbers.
>
>
> On 7/5/07, James Foadi <[EMAIL PROTECTED]> wrote:
> Dear all,
> I have a very small script to plot a function. Here it is:
>
> ##########################################
> sinca <- function(N,th)
>
> {
>
> return(sin((N+0.5)*th)/sin(0.5*th))
>
> }
>
> plot_sinca <- function(N)
>
> {
>
> x <- seq(-5*pi,5*pi,by=pi/100)
>
> y <- rep(0,length=length(x))
>
> for (i in 1:length(x))y[i] <- sinca(N,x[i])
>
> plot(x,y,type="l",ylim=c(0,2*N+4))
>
> return(c(x,y))
>
> }
>
> ##########################################
>
> When I load the script and run the function like this:
>
> ###########################################
> > data <- plot_sinca(4)
> > y <- data[1002:2002]
> ###########################################
>
> I notice a spike on the plot which should not be there.
> In fact I have checked and:
> ###########################################
> > y[701]
> [1] 10.07404
> > sinca(4,2*pi)
> [1] 9
> ###########################################
>
> The second result is the correct one. Why, then do
> I get the y[701]=10.07404? This function is not supposed
> to be higher than 9...
>
> Any help is greatly appreciated.
>
> Regards,
>
> J
>
> Dr James Foadi
> Membrane Protein Laboratory
> Diamond Light Source Ltd
> Chilton, Didcot
> Oxfordshire OX11 0DE
> ---
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> [email protected] 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.
>
>
>
>
> --
> Jim Holtman
> Cincinnati, OH
> +1 513 646 9390
>
> What is the problem you are trying to solve?
> [[alternative HTML version deleted]]
>
> ______________________________________________
> [email protected] 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.
>
--
Jim Holtman
Cincinnati, OH
+1 513 646 9390
What is the problem you are trying to solve?
[[alternative HTML version deleted]]
______________________________________________
[email protected] 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.