Учитывая, что интегральный многочлен степени строго больше единицы, полностью разложить его на композицию целых многочленов степени строго больше единицы.
Детали
- Целочисленный многочлен является многочленом только с целыми числами в качестве коэффициентов.
- Принимая во внимание два полинома
p
и композиции определяется .q
(p∘q)(x):=p(q(x))
- Разложение интегрального полинома
p
является конечной упорядоченной последовательностью целочисленных многочленов ,q1,q2,...,qn
гдеdeg qi > 1
для всех1 ≤ i ≤ n
иp(x) = q1(q2(...qn(x)...))
, и всеqi
далее не разложимые. Разложение не обязательно уникально. - Вы можете использовать, например, списки коэффициентов или встроенные полиномиальные типы в качестве входных и выходных данных.
- Обратите внимание, что многие встроенные функции для этой задачи фактически разлагают полиномы по заданному полю и не обязательно являются целыми числами, в то время как для этой задачи требуются разложенные целочисленные полиномы. (Некоторые целочисленные полиномы могут допускать разложение на целочисленные полиномы, а также разложение, содержащее рациональные полиномы.)
Примеры
x^2 + 1
[x^2 + 1] (all polynomials of degree 2 or less are not decomposable)
x^6 - 6x^5 + 15x^4 - 20x^3 + 15x^2 - 6 x - 1
[x^3 - 2, x^2 - 2x + 1]
x^4 - 8x^3 + 18x^2 - 8x + 2
[x^2 + 1, x^2 - 4x + 1]
x^6 + x^2 + 1
[x^3 + x + 1, x^2]
x^6
[x^2, x^3]
x^8 + 4x^6 + 6x^4 + 4x^2 + 4 = (x^2 + 1)^4 + 3
[x^2 + 3, x^2, x^2 + 1]
x^6 + 6x^4 + x^3 + 9x^2 + 3x - 5
[x^2 + x - 5, x^3 + 3*x], [x^2 + 5*x + 1, x^3 + 3*x - 2]
Используйте Maxima для генерации примеров: попробуйте онлайн!
divisors
функция в Pari / GP всегда возвращает примитивные полиномы, когда она принимает целочисленный полином. Можно доказать, что еслиp=q∘r
, гдеp
иr
являются интегральными иr
примитивнымиr(0)=0
, тоq
также должны быть интегральными. Здесьp
,q
,r
соответствуютf
,g
,h
в работе.Wolfram Language (Mathematica) , 29 байт
Попробуйте онлайн!
У меня есть пример, приведенный здесь, чтобы составить случайный многочлен из случайных квадратиков (или меньше), развернуть его, а затем попытаться разложить его.
Необходимо усложнить полином с помощью фиктивной переменной (а), поскольку встроенный не будет пытаться разложить моном.
Я заметил, что ответ часто имеет гораздо большие коэффициенты, чем в исходной композиции, но они действительно всегда целые числа.
источник
Decompose[]
которая всегда будет возвращать целочисленные полиномы (если они снабжены целочисленными полиномами)? При обсуждении в чате недавно мы ничего не могли найти по этому поводу.Options@Decompose
и это тебе скажет{Modulus->0}
. Теперь посмотрите на модуль и вы увидите, что «Настройка модуля> 0 определяет полное кольцо [DoubleStruckCapitalZ] целых чисел».