计算高阶多项式的算法(伪代码)
algorithm (pseudo-code) to compute higher order polynomial
我需要一种算法来根据 3 个随机变量计算高阶多项式,例如X,Y,Z
我需要最高 9 次的多项式。例如:
Degree 2:
X * Y
X * Z
Y * Z
Degree 3:
X * Y * Z
X^2 * Y
X^2 * Z
Y^2 * X
Y^2 * Z
Z^2 * X
Z^2 * Y
.
.
.
Degree 9:
X^3*Y^3*Z^3
.
.
.
我相信三个内部 "for loop" 会解决这个问题,但我想不通。
任何帮助表示赞赏。
谢谢
这是一个蛮力Java解决方案。您可以简单地遍历从 9 到 9 的所有指数值,并保留总阶数小于或等于 9 的那些配置。
for (int i=0; i <= 9; ++i) {
for (int j=0; j <= 9; ++j) {
for (int k=0; k <= 9; ++k) {
if (i + j + k >= 2 && i + j + k <= 9) {
System.out.println("x^" + i + "*y^" + j + "*z^" + k);
}
}
}
}
您可以很容易地将它移植到 R,但由于循环在 R 中往往不受欢迎,因此可能有更合适(也可能更快)的方法来完成它。
例如在Python中我会做这样的事情:
from itertools import permutations
for p in permutations([0,1,2,3] * 3, 3):
if sum(p) >= 2:
print("x^{} * y^{} * z^{}".format(*p))
基本上,遍历系数的所有长度 3 排列 [0,1,2,3] * 3
(0 到 3 重复 3 次)。
这里是 link 用于生成排列的 Heap 算法以及一些伪代码:
我需要一种算法来根据 3 个随机变量计算高阶多项式,例如X,Y,Z
我需要最高 9 次的多项式。例如:
Degree 2:
X * Y
X * Z
Y * Z
Degree 3:
X * Y * Z
X^2 * Y
X^2 * Z
Y^2 * X
Y^2 * Z
Z^2 * X
Z^2 * Y
.
.
.
Degree 9:
X^3*Y^3*Z^3
.
.
.
我相信三个内部 "for loop" 会解决这个问题,但我想不通。 任何帮助表示赞赏。 谢谢
这是一个蛮力Java解决方案。您可以简单地遍历从 9 到 9 的所有指数值,并保留总阶数小于或等于 9 的那些配置。
for (int i=0; i <= 9; ++i) {
for (int j=0; j <= 9; ++j) {
for (int k=0; k <= 9; ++k) {
if (i + j + k >= 2 && i + j + k <= 9) {
System.out.println("x^" + i + "*y^" + j + "*z^" + k);
}
}
}
}
您可以很容易地将它移植到 R,但由于循环在 R 中往往不受欢迎,因此可能有更合适(也可能更快)的方法来完成它。
例如在Python中我会做这样的事情:
from itertools import permutations
for p in permutations([0,1,2,3] * 3, 3):
if sum(p) >= 2:
print("x^{} * y^{} * z^{}".format(*p))
基本上,遍历系数的所有长度 3 排列 [0,1,2,3] * 3
(0 到 3 重复 3 次)。
这里是 link 用于生成排列的 Heap 算法以及一些伪代码: