Можете ли вы получить список степеней в полиноме? Пари ГП - PullRequest
0 голосов
/ 05 ноября 2019

Я работаю с полиномами с одной переменной с коэффициентами + 1 / -1 (и ноль). Они могут быть очень длинными, а диапазон полномочий может быть довольно большим. Мне было бы удобно рассматривать полномочия как вектор - есть ли способ сделать это быстро? Я надеялся, что в Пари уже будет команда для этого, но я не могу ее увидеть?

Просто пример, подтверждающий то, что я пытаюсь сделать ...

Ввод: x^10 - x^8 + x^5 - x^2 + x + 1

Желаемый вывод: [10, 8, 5, 2, 1, 0]

1 Ответ

1 голос
/ 05 ноября 2019

Вы можете использовать Vecrev, чтобы получить коэффициенты полинома. После этого просто перечислите их, чтобы выбрать нулевые позиции из нулей. Вам нужен следующий однострочный:

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]
...