Разберите случай: при решении квадратного уравнения ax^2 + bx + c = 0 студент отбросил дискриминант как полагающийся положительным и получил ошибочные корни для a
Краткая корректная процедура (все формулы — в KaTeX). 1) Проверить вырожденность: - Если a=0\,a=0a=0: - если b≠0\,b\neq0b=0, решение линейного уравнения bx+c=0\,bx+c=0bx+c=0 и корень x=−cb\displaystyle x=-\frac{c}{b}x=−bc. - если b=0\,b=0b=0: либо бесконечно много решений при c=0\,c=0c=0, либо решений нет при c≠0\,c\neq0c=0. После этого прекращаем. 2) Вычислить дискриминант: - D=b2−4ac\displaystyle D=b^2-4acD=b2−4ac. 3) Рассмотреть три основных случая: - D>0D>0D>0: два различных действительных корня x1,2=−b±D2a.\displaystyle x_{1,2}=\frac{-b\pm\sqrt{D}}{2a}.x1,2=2a−b±D.
- D=0D=0D=0: один (двойной) действительный корень x=−b2a.\displaystyle x=-\frac{b}{2a}.x=−2ab.
- D<0D<0D<0: два комплексно-сопряжённых корня x1,2=−b±i∣D∣2a.\displaystyle x_{1,2}=\frac{-b\pm i\sqrt{|D|}}{2a}.x1,2=2a−b±i∣D∣. (Замечание: знак aaa не меняет формулы; стандартная формула верна и при a<0a<0a<0. Ошибка студента — не в знаке aaa, а в предположении, что всегда D>0D>0D>0.) 4) Численная устойчивость (рекомендация при потере значащих цифр, когда ∣b∣|b|∣b∣ велико и DDD мал): - Пусть sgn(b)=1\operatorname{sgn}(b)=1sgn(b)=1 при b≥0b\ge0b≥0, иначе −1-1−1. Введите q=−12(b+sgn(b)D).\displaystyle q=-\tfrac{1}{2}\bigl(b+\operatorname{sgn}(b)\sqrt{D}\bigr).q=−21(b+sgn(b)D). Тогда устойчивые корни вычисляются как x1=qa,x2=cq.\displaystyle x_1=\frac{q}{a},\qquad x_2=\frac{c}{q}.x1=aq,x2=qc.
- Эта схема избегает вычитания близких величин; при D<0D<0D<0 используется комплексная арифметика аналогично. 5) Проверка найденных корней: - Подставить каждый корень xxx в многочлен и убедиться, что ∣ax2+bx+c∣\,|ax^2+bx+c|∣ax2+bx+c∣ мало (с учётом допустимой погрешности). - Дополнительная проверка по Виету: если корни x1,x2x_1,x_2x1,x2, то должно выполняться x1+x2=−ba,x1x2=ca.\displaystyle x_1+x_2=-\frac{b}{a},\qquad x_1x_2=\frac{c}{a}.x1+x2=−ab,x1x2=ac.
- Для численных методов сравнивать относительную или абсолютную погрешность (в зависимости от масштаба). Итог: не отбрасывайте заранее возможность D≤0D\le0D≤0 и не полагайтесь на знак aaa. Всегда вычисляйте DDD, разбирайте соответствующие случаи и проверяйте корни подстановкой и по формулам Виета; при необходимости используйте устойчивую форму вычисления корней.
1) Проверить вырожденность:
- Если a=0\,a=0a=0:
- если b≠0\,b\neq0b=0, решение линейного уравнения bx+c=0\,bx+c=0bx+c=0 и корень x=−cb\displaystyle x=-\frac{c}{b}x=−bc .
- если b=0\,b=0b=0: либо бесконечно много решений при c=0\,c=0c=0, либо решений нет при c≠0\,c\neq0c=0.
После этого прекращаем.
2) Вычислить дискриминант:
- D=b2−4ac\displaystyle D=b^2-4acD=b2−4ac.
3) Рассмотреть три основных случая:
- D>0D>0D>0: два различных действительных корня
x1,2=−b±D2a.\displaystyle x_{1,2}=\frac{-b\pm\sqrt{D}}{2a}.x1,2 =2a−b±D . - D=0D=0D=0: один (двойной) действительный корень
x=−b2a.\displaystyle x=-\frac{b}{2a}.x=−2ab . - D<0D<0D<0: два комплексно-сопряжённых корня
x1,2=−b±i∣D∣2a.\displaystyle x_{1,2}=\frac{-b\pm i\sqrt{|D|}}{2a}.x1,2 =2a−b±i∣D∣ .
(Замечание: знак aaa не меняет формулы; стандартная формула верна и при a<0a<0a<0. Ошибка студента — не в знаке aaa, а в предположении, что всегда D>0D>0D>0.)
4) Численная устойчивость (рекомендация при потере значащих цифр, когда ∣b∣|b|∣b∣ велико и DDD мал):
- Пусть sgn(b)=1\operatorname{sgn}(b)=1sgn(b)=1 при b≥0b\ge0b≥0, иначе −1-1−1.
Введите q=−12(b+sgn(b)D).\displaystyle q=-\tfrac{1}{2}\bigl(b+\operatorname{sgn}(b)\sqrt{D}\bigr).q=−21 (b+sgn(b)D ).
Тогда устойчивые корни вычисляются как
x1=qa,x2=cq.\displaystyle x_1=\frac{q}{a},\qquad x_2=\frac{c}{q}.x1 =aq ,x2 =qc . - Эта схема избегает вычитания близких величин; при D<0D<0D<0 используется комплексная арифметика аналогично.
5) Проверка найденных корней:
- Подставить каждый корень xxx в многочлен и убедиться, что ∣ax2+bx+c∣\,|ax^2+bx+c|∣ax2+bx+c∣ мало (с учётом допустимой погрешности).
- Дополнительная проверка по Виету: если корни x1,x2x_1,x_2x1 ,x2 , то должно выполняться
x1+x2=−ba,x1x2=ca.\displaystyle x_1+x_2=-\frac{b}{a},\qquad x_1x_2=\frac{c}{a}.x1 +x2 =−ab ,x1 x2 =ac . - Для численных методов сравнивать относительную или абсолютную погрешность (в зависимости от масштаба).
Итог: не отбрасывайте заранее возможность D≤0D\le0D≤0 и не полагайтесь на знак aaa. Всегда вычисляйте DDD, разбирайте соответствующие случаи и проверяйте корни подстановкой и по формулам Виета; при необходимости используйте устойчивую форму вычисления корней.