Страница 1 из 2 В данной статье представлен алгоритм для решения кубического уравнения методом Виета-Кардано. Программа написана для случая действительных коэффициентов, причем корни могут быть комплексными.
Кубическое уравнение записывается в виде: x3+a*x2+b*x+c=0. Для нахождения его корней, в случае действительных коэффициентов, вначале вычисляются: Q=(a2-3b)/9, R=(2a3-9ab+27c)/54. Далее, если R2<Q3, то уравнение имеет три действительных корня, вычисляющихся по формулам (Виета): t=acos(R/sqrt(Q3))/3, x1=-2*sqrt(Q)cos(t)-a/3, x2=-2*sqrt(Q)cos(t+(2*pi/3))-a/3, x3=-2*sqrt(Q)cos(t-(2*pi/3))-a/3. В том случае, когда R2>=Q3, то действительных корней один (общий случай) или два (вырожденные случаи). Кроме действительного корня, имеется два комплексно-сопряженных. Для их нахождения вычисляются (формула Кардано): A=-sign(R)[|R|+sqrt(R2-Q3)]1/3, B=Q/A при A!=0 или B=0 при A=0. Действительный корень будет: x1=(A+B)-a/3. Комплексно-сопряженные корни: x2,3=-(A+B)/2-a/3 + i*sqrt(3)*(A-B)/2 В том случае, когда A=B, то комплексно-сопряженные корни вырождаются в действительный: x2=-A-a/3. Формулы Кардано и Виета требуют применения специальных функций, и в том случае, когда требуется провести большую серию вычислений корней кубического уравнения с не слишком сильно меняющимися коэффициентами, более быстрым алгоритмом является использование метода Ньютона или других итерационных методов (с нахождением начального приближения по формулам Кардано-Виета). |