Все-таки, так как на компьютере пофиг линейные уравнения или квадратные решать, я бы выбросил только куб, точность (по сравнению с линейным случаем) выросла бы на несколько порядков. Один из корней конечно надо выбросить. И здесь, тоже наберите статистики.
Проверил возникающие случаи. Действительно, кое-где подходит аппроксимация квадратичной функцией, кое-где линейной, где-то сделать этого нельзя. Проводить анализ и выбирать какой способ использовать, пока считаю путем, приводящем к ошибкам. Тем не менее начальные приближения для численных методов получаются хорошими.
-- 10.04.2015, 22:20 --Всё зависит от того, сколько уравнений надо решить и как быстро. Если особых требований по производительности нет, я бы действовал так.
1. Избавился бы от дробей, домножив уравнение на
и подставив
2. Подобрал бы наиболее подходящее целое приближение к корню методом двоичного поиска.
Программу удобно писать на Питоне, где есть целая арифметика неограниченной точности.
Пока попробовал использовать длинную арифметику без модернизации алгоритма. Результат плохой. Буду пробовать и ваш вариант.
-- 10.04.2015, 22:22 --Формулу Кардано можно преобразовать так, чтобы она была более численно устойчивой
Применил ваши изменения, результат стал лучше.
-- 10.04.2015, 22:39 --Более оптимизировал вычисления и результат стал идеальным на тех данных, что у меня были дома, используя формулу venco и длинную арифметику Python. Буду пробовать переносить все на С++ и проверять в общем случае. Спасибо.