我想创建一个功能" 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)时它不起作用 有没有人有更好的想法?
答案 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`