Serguei Kaniovski <[EMAIL PROTECTED]> writes:

> Hi all,
> 
> starting from a vector "v[1:n]" I would like to compute the coefficients
> of the polynomial (1+x^v[1])*(1+x^v[2])*...*(1+x^v[n]). The following
> code works but is extremely slow for a large "n" due to, I believe, the
> polynomial being factorized. I wanted to try the package "polynom"
> command "unclass" but I could not figure out how to input a factorized
> polynomial. Can you please help?
> 
> Serguei
> 
> v<-c(1,1,2,3,4,6)
> 
> e<-parse(text=paste("(1+x^", v, sep="", collapse="*", ")"))
> 
> DD<-function(expr, name, order = 0) {
>       if(order == 0)expr
>       else DD(D(expr, name), name, order - 1)
> }
> 
> sapply(0:18, function(i) eval(DD(e, "x", i), list(x=0)))/factorial(0:18)

You can do this much more efficiently by working directly with the
polynomial: Represent them as vectors of length sum(v)+1, then

c(1, 0, ..., 0) 

is the polynomial 1, multiply by x^n is right-shift by n, and add is
add.

> v<-c(1,1,2,3,4,6)
> y <- rep(0,18)
> y[1] <-1
> for (i in v) y <- y+c(rep(0,i),y)[1:18]
> y
 [1] 1 2 2 3 4 4 5 6 5 5 6 5 4 4 3 2 2 1



-- 
   O__  ---- Peter Dalgaard             Ă˜ster Farimagsgade 5, Entr.B
  c/ /'_ --- Dept. of Biostatistics     PO Box 2099, 1014 Cph. K
 (*) \(*) -- University of Copenhagen   Denmark          Ph:  (+45) 35327918
~~~~~~~~~~ - ([EMAIL PROTECTED])                  FAX: (+45) 35327907

______________________________________________
R-help@stat.math.ethz.ch 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