Вычисление дискриминанта квадратного уравнения: программа на Python

0
15

Краткая памятка по написанию программы

  1. Запросите у пользователя значения коэффициентов a, b и c.
  2. Преобразуйте введенные значения в тип float.
  3. Вычислите дискриминант по формуле D = b**2 — 4*a*c.
  4. Проверьте условие: если D > 0, вычислите два корня.
  5. Если D == 0, вычислите один корень.
  6. Если D < 0, выведите сообщение об отсутствии действительных корней.
  7. Для извлечения квадратного корня используйте math.sqrt().
  8. Добавьте обработку ошибок для некорректного ввода.
  9. Выведите результаты на экран в понятном формате.
  10. Протестируйте программу на нескольких примерах.

Постановка задачи

Python - изображение номер один
Python — изображение номер один

Уравнение, которое будем решать, выглядит следующим образом: a·x²+b·x+c=0. Пользователю предлагается ввести значения a, b и с в терминале. После этого программа посчитает дискриминант. На его основе найдем решения уравнения – значения x, для которых будет выполняться равенство.

py004 - изображение номер два
py004 — изображение номер два

Программа

Решение системы уравнений python - изображение номер три
Решение системы уравнений python — изображение номер три

Для решения квадратных уравнений на Python 3 напишем код, приведенный ниже. Разберем некоторые моменты, которые мы использовали в этой простой программе:

  • print — эта функция выводит на экран информацию.
  • input — выводит информацию и предлагает пользователю ввести данные.
  • b**2 — это возведение в степень, в данном случае переменная b возводится в квадрат.
  • str — эта функция приводит данные к строковому виду.
  • if-elif-else — это условные операторы в языке Python. Исходя из значения discriminant мы определяем количество корней квадратного уравнения.
  • discriminant ** 0.5 — с помощью такого способа извлекаем квадратный корень. В Python есть несколько способов извлечения корней, например, с помощью функции sqrt из библиотеки math. Про способы извлечения корней в Python описано в отдельной статье.
ЧИТАТЬ ТАКЖЕ:  Комментирование нескольких строк в Python: блок кода, символ решетки, однострочные, многострочные и docstring

Все посчитано, найдены два корня, которые будут являться решением квадратного уравнения.

Решение квадратных уравнений в Python

Python program to solve quadratic equation - изображение номер четыре
Python program to solve quadratic equation — изображение номер четыре

Для написания кода нам понадобится метод sqrt() из модуля math, который возвращает квадратный корень числа. Импортируем его:

Перейдём к нахождению корней. Зададим условие, что если дискриминант больше нуля, то x1 и x2 будут высчитаны по формуле:

from math import sqrt a = float(input(‘a = ‘)) b = float(input(‘b = ‘)) c = float(input(‘c = ‘)) d = b**2 — 4 * a * c if d > 0: x1 = (-b + sqrt(d) / (2 * a)) x2 = (-b — sqrt(d) / (2 * a)) print(f’x1 = {x1:.2f}; x2 = {x2:.2f}’)

from math import sqrt a = float(input(‘a = ‘)) b = float(input(‘b = ‘)) c = float(input(‘c = ‘)) d = b**2 — 4 * a * c if d > 0: x1 = (-b + sqrt(d) / (2 * a)) x2 = (-b — sqrt(d) / (2 * a)) print(f’x1 = {x1:.2f}; x2 = {x2:.2f}’) elif d == 0: x1 = -b / (2 * a) print(f’x1 = {x1:.2f}’)

from math import sqrt a = float(input(‘a = ‘)) b = float(input(‘b = ‘)) c = float(input(‘c = ‘)) d = b**2 — 4 * a * c if d > 0: x1 = (-b + sqrt(d) / (2 * a)) x2 = (-b — sqrt(d) / (2 * a)) print(f’x1 = {x1:.2f}; x2 = {x2:.2f}’) elif d == 0: x1 = -b / (2 * a) print(f’x1 = {x1:.2f}’) else: print(‘Нет корней’)

Дополнительно

Хотелось бы уделить внимание ещё одному моменту. Если дискриминант отрицательный, то действительных корней нет. Но будут комплексные корни. Если мы хотим их обрабатывать, то следует изменить конструкцию условных операторов следующим образом:

Этот простой код написанный на Python 3 можно для обучения программированию немного усложнить:

  • Предлагать запрос в конце программы «Решить ещё одно уравнение (y/n):». И если пользователь введет «y», то заново запросить коэффициенты. Это нужно делать в цикле. Подробнее о циклах в Python можно прочитать здесь.
  • Сделать проверку корректности ввода. Ведь пользователь вместо числа может ввести какую-нибудь строку, которая не будет корректно обработана. Про проверку на число описано в отдельной статье.
ЧИТАТЬ ТАКЖЕ:  Что такое from import в Python 3: основы работы импортов, абсолютный и относительный импорт, отличие от from import, ошибки импорта

Часто задаваемые вопросы о вычислении дискриминанта в Python

Вопрос: Какой модуль нужно импортировать для вычисления квадратного корня?
Ответ: Для вычисления квадратного корня из дискриминанта используется функция sqrt() из модуля math.

Вопрос: Что произойдет, если дискриминант окажется отрицательным?
Ответ: Если дискриминант меньше нуля, программа должна вывести сообщение о том, что действительных корней нет, так как квадратный корень из отрицательного числа не извлекается.

Вопрос: Как обработать случай, когда коэффициент ‘a’ равен нулю?
Ответ: Если a = 0, уравнение перестает быть квадратным. В программе нужно добавить проверку и вывести соответствующее сообщение или решать его как линейное.

Вопрос: Какой тип данных лучше использовать для коэффициентов?
Ответ: Лучше использовать тип float (числа с плавающей точкой), чтобы корректно обрабатывать дробные значения коэффициентов.

Вопрос: Как вывести корни, если они являются комплексными числами?
Ответ: Для работы с комплексными числами можно использовать модуль cmath, который поддерживает извлечение корня из отрицательных чисел.

Вопрос: Нужно ли проверять ввод пользователя на корректность?
Ответ: Да, желательно обернуть ввод в блок try-except, чтобы программа не вылетала при вводе букв или спецсимволов вместо чисел.

Вопрос: Как вычислить корень, если дискриминант равен нулю?
Ответ: Если D = 0, то уравнение имеет один корень, который вычисляется по формуле x = -b / (2*a).

Вопрос: Можно ли решить квадратное уравнение без вычисления дискриминанта?
Ответ: Формула дискриминанта является стандартным и универсальным способом, поэтому в учебных программах его вычисление обязательно.

Вопрос: Как округлить полученные корни?
Ответ: Для округления можно использовать функцию round(), например, round(x, 2) для округления до двух знаков после запятой.

Вопрос: Как выглядит полная формула для нахождения корней?
Ответ: Корни находятся по формуле: x1,2 = (-b ± sqrt(D)) / (2*a), где D = b^2 — 4*a*c.