Формулировка. Дано натуральное число n. Вывести на экран решения всех квадратных уравнений вида x2 + 2ax – 3 = 0 для всех a от 1 до n.
Решение. Эта задача очень похожа на задачу 13. В принципе, ее можно было бы решить, используя код этой задачи, взяв первый и последний коэффициенты равными 1 и -3 соответственно и запустив цикл по всем a от 1 до n, умножив a на 2 во всех формулах.
Однако исследуем это уравнение математически и попытаемся оптимизировать решение:
1) Найдем дискриминант уравнения:
Очевидно, что найденная величина неотрицательна, и, если быть точнее, то при a от 1 до n она всегда принимает значение не меньше 16 (так как при a = 1 она равна 4*(1 + 3) = 4 * 4 = 16). Следовательно, наше уравнение всегда имеет решение, причем их два.
2) Найдем формулы корней уравнения:
Итак, формулы корней уравнения получены, и теперь только осталось вывести в цикле значения корней для всех a от 1 доn, не забыв сделать вывод форматированным (так как решения будут вещественными).
Код:
- program MyQuadraticEquation;
- var
- a, n: word;
- x1, x2: real;
- begin
- readln(n);
- for a := 1 to n do begin
- x1 := sqrt(a * a + 3) — a;
- x2 := -a — sqrt(a * a + 3);
- writeln(‘a = ‘, a, ‘, x1 = ‘, x1:4:2, ‘, x2 = ‘, x2:4:2)
- end
- end.