你能得到多项式的幂列表吗?巴黎大奖赛

Can you get a list of the powers in a polynomial? Pari GP

我正在处理系数为 +1/-1(和零)的单变量多项式。这些可以很长,权力的范围可以很大。将权力视为矢量会很方便 - 有什么方法可以快速做到这一点?我曾希望 Pari 中已经有一个命令可以执行此操作,但我似乎看不到一个?

只是一个例子来确认我正在尝试做的事情...

输入:x^10 - x^8 + x^5 - x^2 + x + 1

期望的输出:[10, 8, 5, 2, 1, 0]

您可以使用Vecrev来获得多项式系数。之后只需将它们枚举到 select 非零的基于零的位置。您需要以下一行:

nonzeros(xs) = Vecrev([x[2]-1 | x <- select(x -> x[1] != 0, vector(#xs, i, [xs[i], i]))])

现在你可以轻松得到多项式幂的列表:

p = x^10 - x^8 + x^5 - x^2 + x + 1
nonzeros(Vecrev(p))
>> [10, 8, 5, 2, 1, 0]