算法(伪代码)来计算高阶多项式

时间:2016-05-10 10:50:15

标签: algorithm polynomial-math

我需要一种算法来计算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循环"会解决这个问题,但我无法解决这个问题。 任何帮助表示赞赏。 感谢

2 个答案:

答案 0 :(得分:2)

这是一个强力的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中不受欢迎,所以可能有更合适(也可能更快)的方法。

答案 1 :(得分:0)

在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))

基本上,循环遍历系数[0,1,2,3] * 3的所有长度3排列(0到3重复3次)。

以下是Heap算法的链接,用于生成排列以及一些伪代码:

https://en.m.wikipedia.org/wiki/Heap%27s_algorithm