Создан класс CubicEquationCardano (обычный класс C++, но с применением объектов из библиотеки Qt, таких как объекты класса QVector, а также всё GUI - Qt-шное), реализующий решение кубического уравнения методом Кардано (
вычисляются только действительные корни).
Уравнение общего вида
ax^3 + bx^2 + cx + d = 0 реализовано так:
koeff_A*x^3 + koeff_B*x^2 + koeff_C*x + koeff_D = 0. (1)
При этом по умолчанию koeff_A = 1, т.е. решается уравнение вида
x^3 + koeff_B*x^2 + koeff_C*x + koeff_D = 0. (2)
В алгоритме класса вид (1) приводится к канонической форме
y^3 + koeff_p*y + koeff_q = 0 (3)
с помощью замены переменных:
y = x + koeff_A / (3.0*koeff_B) => x = y - koeff_A / (3.0*koeff_B)
p = (3.0*koeff_A*koeff_C - koeff_B^2) / (3.0*koeff_A^2)
q = (2.0*koeff_B^3 - 9.0*koeff_A*koeff_B*koeff_C + 27.0*koeff_A^2*koeff_D) / (27.0*koeff_A^3)
В Википедии приводится алгоритм решениям данным методом не полностью. За восстановление всего алгоритма решения методом Кардано - отдельное спасибо математику Роману Скоробогатову
Проект Qt с исходниками лежит
тут (ссылка исправлена 21.04.2015)