Как решить квадратное уравнение линейным алгоритмом?
И так, суть вопроса: недавно была контрольная по информатике, где мой препод сказал, что невозможно решить квадратное уравнение с помощью линейного алгоритма (то есть без циклов и условий).
Я подумал, неужели действительно все так безнадежно? Около двух дней пытался что-то придумать, но все попытки тщетны.. может у вас есть какие-либо идеи?
Степан Гервик, что как? Формула вычисления корней квадратного уравнения со школы не менялась. Просто нужно отбросить предубеждение, что нельзя вычислить квадратный корень из отрицательного дискриминанта
solveQdr :: (Float,Float,Float) -> (Float,Float)
solveQdr = \ (a,b,c) -> if a == 0 then error "not quadratic"
else let d = b^2 - 4*a*c in
if d < 0 then error "no real solutions"
else
((- b + sqrt d) / 2*a,
(- b - sqrt d) / 2*a)
Алексей Тен, Я ж говорю - чисто программерская проверка. Представьте консольную программу - запрашиваем a, b и c. И a нам надо на !=0 проверить обязательно, а то деление на ноль (если мы о формуле с дискриминантом говорим).
Т.е. оно как бы да, не квадратное и "неверный ввод" и в теории эта проверка не относится непосредственно к алгоритму именно решения, но все же написать ее придется для нормального функционирования.
Ну так а математически такое решение есть? Вот чтобы прям без условий в тексте вообще.
По моему - нет. Потому что могут быть квадратные уравнения, не имеющие корней, и это надо все таки проверять.
Но какие то определенные частные случаи - вполне можно.