1

你好我想知道这个函数乘以两个多项式的想法

它用于将两个多项式相乘

我想知道这个函数在这个代码中的系数发生了什么

mul(poly((10, 20, 30)), poly((1, 2, 3))).coefs == (10, 40, 100, 120, 90)

(10, 40, 100, 120, 90) 是怎么出来的?

mul() 代表乘法函数 poly() 代表多项式函数

4

2 回答 2

3

当您将多项式 A 的 N 次幂与多项式 B 乘以 M 次幂时,您将得到 (N+M) 次幂的多项式 C,它具有 N+M+1 个系数。第K个结果系数:

C[k]{k=0..N+M} = Sum(A[i] * B[k - i]){find proper range for i}

N = 3 和 M = 3 的示例:

C[5] = A[3]*B[2] + A[2]*B[3]

我希望这样一个简单的循环公式的实现在任何编程语言中都不是问题。

于 2015-04-02T06:27:26.157 回答
0

假设您的系数存储在两个数组 A[]、B[] 中,其中 coeff[0] 是零度项,并将结果存储在 C 中。

// degree of result
int deg=A.length+B.length-2;
int C[] = new int[deg+1];
// initialise to zero
for(i=0;i<=deg;++i) {
    C[i]=0;
}
for(i=0;i<A.length;++i) {
    for(j=0;j<B.length;++j) {
        C[i+j] += A[i] * B[j];
    }
}
于 2015-04-02T07:54:18.667 回答