Решить систему полиномиальных уравнений

У меня есть система, состоящая из 2-х многочленов от 2-х переменных с комплексными коэффициентами. Общий случай состоит из конечного числа пар комплексных чисел.

NSolve[{poly1==0,poly2==0},{x,y}]

в Mathematica работает для полиномов более низкой степени, но время, необходимое для нахождения всех корней, кажется экспоненциальным, 2 ^ град. Есть ли более эффективная альтернатива NSolve? На другом языке? Степень, к которой мы стремимся, находится в диапазоне 15-25, чем выше, тем лучше.


person Per Alexandersson    schedule 19.09.2011    source источник
comment
@Paxinum Трудно комментировать без конкретного примера. Ну, на самом деле легко написать комментарий StackOverflow, вот так. Но без такого примера это будет не очень информативно.   -  person Daniel Lichtblau    schedule 19.09.2011
comment
@Paxinum Поскольку вы имеете дело с полиномами, базис Грёбнера был бы хорошим инструмент для решения вашей системы. В системе Mathematica это реализовано как GroebnerBasis, а на вкладке «Приложения» есть пример решения системы полиномиальных уравнений.   -  person abcd    schedule 20.09.2011
comment
@yoda Reduce and Solve использует базы Грёбнера для решения систем уравнений.   -  person Dr. belisarius    schedule 20.09.2011
comment
@belisarius Ах, я должен был перепроверить!   -  person abcd    schedule 20.09.2011
comment
Да, NSolve использует базы Гребнера. В многочленах не так много структуры, которую можно использовать, это самая общая форма многочленов от 2 переменных, о которой вы только можете подумать (присутствуют все мономы).   -  person Per Alexandersson    schedule 20.09.2011
comment
@Paxinum Поскольку он двумерный, может быть эффективно взять результат по отношению к одной переменной, затем найти все интересующие корни в этой переменной и выполнить обратную замену, чтобы получить соответствующие значения в другой. Это может привести к паразитным решениям, поэтому вам нужно будет проверить их на достоверность. Однако это может быть быстрее, чем использование NSolve, особенно если вам нужны только определенные корни, например. настоящий и позитивный.   -  person Daniel Lichtblau    schedule 20.09.2011


Ответы (1)


Я не нашел решения, но кажется, что меньшее количество ядер лучше. (по сравнению с 2,4 и 50 ядрами процессора), а 64 битная архитектура быстрее в 2 раза.

Все это с помощью NSolve. Система из 17 многочленов 2-й степени от 2-х переменных решалась за 24 часа.

person Per Alexandersson    schedule 26.09.2011
comment
Повторюсь, не публикуя конкретного примера, вы могли бы написать самому себе. - person Daniel Lichtblau; 02.10.2011