在 Java 中乘以大量多项式的有效方法是什么?
What is an efficient way of multiplying massive polynomials in Java?
我有一个函数,它定义了一个非常长的多项式,在矩阵运算中很有用。
该公式乘以 (1+xi*yj)
形式的二项式,其中 i
和 j
带有下标,分别对应于相关矩阵的行和列。结果的多项式是所有二项式与 i 和 j 的每个排列的乘积。
例如,一个 3 x 2 矩阵的多项式乘积为:
(1+x1*y1)(1+x1*y2)(1+x2*y1)(1+x2*y2)(1+x3*y1)(1+x3*y2)
为说明起见,变量后的每个数字都应视为下标。
java 是否有可能计算如此庞大的数量,或者可以将任务委托给另一个数学引擎?
如果可能的话,人们会如何实施呢?
也许这个想法可以帮助您解决问题:
int result = 1;
int x = 2;
int y = 3;
Integer [][] polynomials = new Integer[x][y];
polynomials[0][0] = 1;
polynomials[0][1] = 2;
polynomials[0][2] = 3;
polynomials[1][0] = 4;
polynomials[1][1] = 5;
polynomials[1][2] = 6;
for(int i = 0; i<x; i++) {
for(int j = 0; j<y; j++) {
result *= (1 + polynomials[i][j]);
}
}
System.out.println(result);
我有一个函数,它定义了一个非常长的多项式,在矩阵运算中很有用。
该公式乘以 (1+xi*yj)
形式的二项式,其中 i
和 j
带有下标,分别对应于相关矩阵的行和列。结果的多项式是所有二项式与 i 和 j 的每个排列的乘积。
例如,一个 3 x 2 矩阵的多项式乘积为:
(1+x1*y1)(1+x1*y2)(1+x2*y1)(1+x2*y2)(1+x3*y1)(1+x3*y2)
为说明起见,变量后的每个数字都应视为下标。
java 是否有可能计算如此庞大的数量,或者可以将任务委托给另一个数学引擎?
如果可能的话,人们会如何实施呢?
也许这个想法可以帮助您解决问题:
int result = 1;
int x = 2;
int y = 3;
Integer [][] polynomials = new Integer[x][y];
polynomials[0][0] = 1;
polynomials[0][1] = 2;
polynomials[0][2] = 3;
polynomials[1][0] = 4;
polynomials[1][1] = 5;
polynomials[1][2] = 6;
for(int i = 0; i<x; i++) {
for(int j = 0; j<y; j++) {
result *= (1 + polynomials[i][j]);
}
}
System.out.println(result);