我无法找出执行以下操作的简洁方法(我正在使用 C):
给定多个变量 n 和最大次数 d,我想生成相应的多项式。
例如,如果 n = 4,并且 d = 3,我想生成以下内容: x4 x3 x2 + x4 x3 x1 + x4 x2 x1 + x3 x2 x1 + x4 x3 + x4 x2 + x4 x1 + x3 x2 + x3 x1 + x2 x1 + x4 + x3 + x2 + x1
每个 xn 都是一个不同的变量。多项式从最大次数 3 开始,遍历所有这些单项式,然后遍历所有二次项,最后是线性项。这应该适用于任何正 n 和 d。
我可以使用一些嵌套的 while 循环和整数来对其进行硬编码,以跟踪每个变量,这样我就可以使其工作。但我需要概括,而且我不知道如何做到这一点,至少在没有大量 while 或 for 循环的情况下是这样。
所以,我的问题是,以一种非常通用的方式以正确的顺序生成这些变量数字的好方法是什么?谢谢。
最佳答案
您似乎需要 power set 的过滤子集(所有子集的集合)变量,按程度过滤。
在Rosetta Code有两个 C 示例来生成幂集。应该很容易修改它以将其限制为给定顺序的子集。 (我假设您不想要重复的术语,例如 x2x4^2。)
对于您的示例,起始集是 {x1, x2, x3, x4},多项式的项由 3 阶或更低阶的子集形成。
关于c - 按最大次数顺序生成多项式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4824095/