计算R

时间:2016-10-11 14:40:28

标签: r

我想创建一个功能" f"它计算两个多项式的乘积

a0 +a1X + ···+anX^n and b0+b1X+···+bmX^m

例如,由于(1 + x)(3 + 2x ^ 2)= 3 + 3x + 2x ^ 2 + 2x ^ 3,我们期望以下结果:

f(c(1,1),c(3,0,2))
  [1] 3 3 2 2

我在这里有一些想法:

X^0: a0b0
X^1: a0b1+a1b0
X^2: a0b2+a1b1+a2b0
.
.

所以,我有这样的功能

A =(a0,a1,....,an),B=(b0,b1,...,bn)
f= function(A,B){
          n=length(A)
          m=length(B)
     for(k in 0:(n+m-2))
       for(j in 0:k)
             {
               C[k+1]=sum(A[j+1]*B[k-j+1])
}
     }

但是当我键入f(A,B)时它不起作用 有没有人有更好的想法?

1 个答案:

答案 0 :(得分:2)

library(polynom)
p1 <- polynomial(c(1,1))
p2 <- polynomial(c(3,0,2))

p1 * p2
#3 + 3*x + 2*x^2 + 2*x^3 

coefficients(p1 * p2)
#[1] 3 3 2 2

以下是如何在包中实现乘法:

m <- outer(c(1,1), c(3,0,2))
as.vector(tapply(m, row(m) + col(m), sum))
#[1] 3 3 2 2

参见

的源代码
polynom:::`Ops.polynomial`