Я работаю над разложением многомерных полиномов по некоторым полям расширения, используя Sympy.
Если бы я мог разложить многовариантные многочлены на вещественные числа, думаю, у меня был бы рабочий код. Для моего кода это сводит меня к разложению одномерного полинома через 'QQ' и, если необходимо, через некоторое числовое поле.
Мой подход теперь состоит в том, чтобы определить эти одномерные многочлены над «QQ», затем посмотреть на корни и решить для каждого корня, является ли он действительным или нет. Если это правда, я добавляю необходимые термины в «QQ», а затем прошу Sympy учитывать. Это означает, что я пытаюсь автоматизировать следующие шаги:
- F = поли ((х ^ 2-3) * (х ^ 2-5), х, домен = 'QQ')
- решить (е, х)
- (дает [-sqrt (3), sqrt (3), - sqrt (5), sqrt (5)])
- f.factor (е, расширение = [SQRT (3), SQRT (5)])
(.. или каким-то другим способом, но я думаю, с похожими шагами и временем выполнения)
Этот курс имеет очень длительное время выполнения, так как вы как бы дважды рассчитываете факторы. И есть также много исключений, о которых мне нужно подумать.
Короче говоря: есть ли способ попросить Sympy разложить многочлен над 'QQ' и позволить ему, если необходимо, сделать несколько расширений?
Есть ли что-то вроде f.factor (numberfield = True)?
Заранее спасибо !!