计算R中两个多项式的乘积

计算R中两个多项式的乘积,r,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= f

我想创建一个函数“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)时它不起作用
有人有更好的想法吗?

你能给出
A
B
的有效示例吗?是的~我认为我的函数是正确的,但它不起作用使用软件包
polynom
。。是的,输入A=c(1,1),B=c(3,0,2),然后输出[1]3 3 2你能给出
A
B
的有效示例吗?是的~我认为我的函数是正确的,但它不工作使用包
polynom
。。是的,输入A=c(1,1),B=c(3,0,2),然后输出[1]3 3 2谢谢,但我们不允许使用“polynom”yetSO不是家庭作业服务。这是对你的问题的有效回答。你没有义务接受它,但我更愿意为其他人提供这个答案@梁楷葳 如果你想问一个家庭作业问题,所以他们要求你表现出一些努力(你做到了),将其标记为家庭作业,并在作业中引用。所以基本上你只需要给它贴上家庭作业的标签。是的,我对你的问题没有异议。但你要求的是更好的想法,这是更好的。在家庭作业之外,如果您有正当理由不使用包,您可以从包polynom中提取代码@梁楷葳 是的,你做到了。我只是说你也需要把它标记为家庭作业。这为人们提供了上下文,以便他们提供相关答案等。谢谢,但我们不允许使用“polynom”yetSO,因为它不是家庭作业服务。这是对你的问题的有效回答。你没有义务接受它,但我更愿意为其他人提供这个答案@梁楷葳 如果你想问一个家庭作业问题,所以他们要求你表现出一些努力(你做到了),将其标记为家庭作业,并在作业中引用。所以基本上你只需要给它贴上家庭作业的标签。是的,我对你的问题没有异议。但你要求的是更好的想法,这是更好的。在家庭作业之外,如果您有正当理由不使用包,您可以从包polynom中提取代码@梁楷葳 是的,你做到了。我只是说你也需要把它标记为家庭作业。这为人们提供了背景,以便他们提供相关的答案等。
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`