Я использую функцию solve() matlab и она всегда выводит 8 корней. Некоторые выводятся комплексные, другие чисто вещественные. Когда корней нет выводится тупо 8 комплексных корней. Как реализовать, что то подобное матлабовской solve, не понятно. Скорость решения меня вполне устраивает. К тому же функция не требует ни каких начальных условий.
Функция
solve служит для аналитического поиска решений и принадлежит системе компьютерной алгебры. Равносильно тому, чтобы на бумажке самому преобразовывать уравнения и искать решения. Поэтому начальных условий не требует. Конечно, эта функция способна разрешить не любую систему уравнений. Для численного (итерационного) поиска решений используется функция
fsolve, которое естественно требует начальное приближение и если сойдется, то только к одному корню. Чтобы искать другие корни, нужно задавать другие начальные приближения, а какие -- без априорных сведений и деталей о системе уравнений -- не известно. Таков мир численных методов
Можете попробовать взять в пространстве поиска сколько надо точек, равномерно распределенных по области, и из каждой точки запустить солвер.