Как решить квадратное уравнение в питоне
Перейти к содержимому

Как решить квадратное уравнение в питоне

  • автор:

Найти корни квадратного уравнения

Таким образом, программа для нахождения корней квадратного уравнения должна иметь три ветви условного оператора.

Функция float преобразует переданный ей аргумент в вещественное число.

import math print("Введите коэффициенты для уравнения") print("ax^2 + bx + c = 0:") a = float(input("a = ")) b = float(input("b = ")) c = float(input("c = ")) discr = b ** 2 - 4 * a * c print("Дискриминант D = %.2f" % discr) if discr > 0: x1 = (-b + math.sqrt(discr)) / (2 * a) x2 = (-b - math.sqrt(discr)) / (2 * a) print("x1 = %.2f \nx2 = %.2f" % (x1, x2)) elif discr == 0: x = -b / (2 * a) print("x = %.2f" % x) else: print("Корней нет")

Примеры выполнения кода:

Введите коэффициенты для уравнения ax^2 + bx + c = 0: a = 2 b = 4 c = 2 Дискриминант D = 0.00 x = -1.00
Введите коэффициенты для уравнения ax^2 + bx + c = 0: a = 3.2 b = -7.8 c = 1 Дискриминант D = 48.04 x1 = 2.30 x2 = 0.14
Введите коэффициенты для уравнения ax^2 + bx + c = 0: a = 8 b = 4 c = 2 Дискриминант D = -48.00 Корней нет

Обратите внимание, что для данной программы коэффициент a не должен быть равен нулю. Иначе в теле условного оператора будет происходить попытка деления на 0, что приведет к аварийному завершению программы.

Если a = 0, то квадратное уравнение превращается в линейное, которое решается иным способом. Оно всегда имеет один корень.

X Скрыть Наверх

Решение задач на Python

Решение квадратного уравнения | Python

Необходимо решить квадратное уравнение Формат ввода Вводится 3 вещественных числа a, b, c — коэффициенты уравнения вида: ax^2+bx+c=0ax Формат вывода Если у уравнения нет решений — следует вывести «No solution». Если корней конечное число — их нужно вывести через пробел в порядке возрастания с точностью до сотых. Если корней неограниченное число — следует вывести «Infinite solutions». Примечание Обратите внимание, что ограничения на значения коэффициентов отсутствуют.

a = float(input()) b = float(input()) c = float(input()) x1 = float(0.00) x2 = float(0.00) if a == 0 and b == 0 and c == 0: print("Infinite solutions") elif a == 0 and b != 0 and c != 0: x1 = -(c / b) print("%.2f" % x1) elif a == 0 and b == 0 and c != 0: print("No solution") # no sol elif a == 0 and b != 0 and c == 0: x1 = 0 print("%.2f" % x1) elif b == 0 and c == 0 and a != 0: x1 = 0 print("%.2f" % x1) elif c == 0 and b != 0 and a != 0: x1 = 0 x2 = -(b / a) print(min("%.2f" % x1, "%.2f" % x2), max("%.2f" % x1, "%.2f" % x2), sep=' ') elif b == 0 and a != 0 and c != 0: if (-(c / a)) < 0: print("No solution") else: x1 = (-c / a) ** 0.5 x2 = -((-c / a) ** 0.5) print(min("%.2f" % x1, "%.2f" % x2), max("%.2f" % x1, "%.2f" % x2), sep=' ') elif a != 0 and b != 0 and c != 0: disc = (b ** 2) - (4 * a * c) # discriminant if disc < 0: print("No solution") elif disc == 0: x1 = (-b / (2 * a)) print("%.2f" % x1) elif disc >0: x1 = (-b - (disc ** 0.5)) / (2 * a) x2 = (-b + (disc ** 0.5)) / (2 * a) print(min("%.2f" % x1, "%.2f" % x2), max("%.2f" % x1, "%.2f" % x2), sep=' ') 

Итог: 13 тестов код проходит, а на 14-ом ловлю ошибку «Wrong answer(WA)» UPD.Итог2.0: Примитивная ликвидация %f форматтера спасла ситуацию и код прошёл все тесты, после чего на пол экрана проявилась табличка с зелёным шрифтом «Решена полностью». Спасибо всем причастным к решению моей проблемы как советами, так и комментариями, задачу требовалось решить зная лишь 3 типа данных, условные и логические операторы — задача выполнена. Рабочий код ниже:

a = float(input()) b = float(input()) c = float(input()) x1 = float(0.00) x2 = float(0.00) if a == 0 and b == 0 and c == 0: print("Infinite solutions") elif a == 0 and b != 0 and c != 0: x1 = -(c / b) print(x1) elif a == 0 and b == 0 and c != 0: print("No solution") # no sol elif a == 0 and b != 0 and c == 0: x1 = 0 print(x1) elif b == 0 and c == 0 and a != 0: x1 = 0 print(x1) elif c == 0 and b != 0 and a != 0: x1 = 0 x2 = -(b / a) print(min(x1, x2), max(x1, x2), sep=' ') elif b == 0 and a != 0 and c != 0: if (-(c / a)) < 0: print("No solution") else: x1 = (-c / a) ** 0.5 x2 = -((-c / a) ** 0.5) print(min(x1, x2), max(x1, x2), sep=' ') elif a != 0 and b != 0 and c != 0: disc = (b ** 2) - (4 * a * c) # discriminant if disc < 0: print("No solution") elif disc == 0: x1 = (-b / (2 * a)) print("%.2f" % x1) elif disc >0: x1 = (-b - (disc ** 0.5)) / (2 * a) x2 = (-b + (disc ** 0.5)) / (2 * a) print(min(x1, x2), max(x1, x2), sep=' ') 

Укороченный код:

a = float(input()) b = float(input()) c = float(input()) x1 = float(0.00) x2 = float(0.00) if a == 0 and b == 0 and c == 0: print("Infinite solutions") elif a == 0 and b != 0 and c != 0: x1 = -(c / b) print(x1) elif a == 0 and b == 0 and c != 0: print("No solution") # no sol elif a == 0 and b != 0 and c == 0: x1 = 0 print(x1) else: disc = (b ** 2) - (4 * a * c) # discriminant if disc == 0: x1 = (-b) / (2 * a) print(x1) elif disc > 0: x1 = (-b - (disc ** 0.5)) / (2 * a) x2 = (-b + (disc ** 0.5)) / (2 * a) print(min(x1, x2), max(x1, x2), sep=' ') elif disc < 0: print("No solution") 

Решение квадратного уравнения

Author24 — интернет-сервис помощи студентам

Написать программу решения квадратного уравнения. Программа должна проверять правильность исходных данных и в случае, когда коэффициент при второй степени неизвестного равен нулю, выводить соответствующее сообщение.

Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Решение квадратного уравнения
Помогите найти ошибку import math a = int(input("Введите значение a= ")) b =.

Решение квадратного уравнения ах^2 + bx + c = 0
import math a = int(input("Введите значение a= ")) b = int(input("Введите значение b= ")) c =.

Решение приведенного квадратного уравнения
Напишите две функции larger_root(p,q) и smaller_root(p,q), которые возвращают больший и меньший.

Решение квадратного уравнения с корнями и степенью в коэффициенте
Написать программу решения квадратного уравнения, с корнями и степенью в коэффициенте и находить.

Решение квадратного уравнения при любом знаке дискриминанта
Помогите написать программу которая вычисляет корни, как у положительного, так и у отрицательного.

Эксперт Python

1356 / 653 / 207
Регистрация: 23.03.2014
Сообщений: 3,057

Лучший ответ

Сообщение было отмечено alex2352 как решение

Решение

alex2352, подойдет?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
print("Введите коэффициенты для квадратного уравнения (ax^2 + bx + c = 0):") a = float(input("a = ")) b = float(input("b = ")) c = float(input("c = ")) discr = b**2 - 4 * a * c; print("Дискриминант D = %.2f" % discr) if discr > 0: import math x1 = (-b + math.sqrt(discr)) / (2 * a) x2 = (-b - math.sqrt(discr)) / (2 * a) print("x1 = %.2f \nx2 = %.2f" % (x1, x2)) elif discr == 0: x = -b / (2 * a) print("x = %.2f" % x) else: print("Корней нет")

Просто Лис

Эксперт Python

5483 / 3397 / 1031
Регистрация: 17.05.2012
Сообщений: 9,992
Записей в блоге: 9

1 2 3 4 5
Введите коэффициенты для квадратного уравнения (ax^2 + bx + c = 0): a = Traceback (most recent call last): File "", line 1, in module> ValueError: could not convert string to float:

Добавлено через 1 минуту

1 2 3 4 5 6 7 8 9
Введите коэффициенты для квадратного уравнения (ax^2 + bx + c = 0): a = 0 b = 1 c = 1 Дискриминант D = 1.00 Traceback (most recent call last): File "1.py", line 10, in module> x1 = (-b + math.sqrt(discr)) / (2 * a) ZeroDivisionError: float division by zero

337 / 126 / 114
Регистрация: 09.04.2011
Сообщений: 246

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
from math import sqrt a = int(input()) b = int(input()) c = int(input()) if a != 0: if b !=0 and c != 0: d = b*b - 4*a*c print("D=", d) if d  0: print("Нет корней") elif d == 0: print("1 Корень") x = -b / (2*a) print("x=", x) else: print("2 Корня") x1 = (-b + sqrt(d)) / (2*a) x2 = (-b - sqrt(d)) / (2*a) print("x1=", x1, "x2=", x2) elif b == 0 and c == 0: print("Неполное кв. ур") print("Корень x=" , 0) elif b == 0: print("Неполное кв. ур") if -c / a  0: print("Нет корней") else: print("2 Корня") x1 = sqrt(-c / a) x2 = -x1 print("x1=", x1, "x2=", x2) else: print("Неполное кв. ур") print("2 Корня") x1 = 0 x2 = -b / a print("x1=", x1, "x2=", x2) else: print("Нужно вводить a > 0, иначе это не кв. ур-е !")

Эксперт Python

1356 / 653 / 207
Регистрация: 23.03.2014
Сообщений: 3,057

Рыжий Лис, а точность не 1.0)?

Добавлено через 1 минуту
Пишк со смартфона,пардон за орфографию

Квадратное уравнение

Программа, позволяющая находить корни квадратного уравнения, – это один из примеров простых программ, которые можно написать на Python 3. Она хорошо подойдет для начинающих изучать этот язык программирования.

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

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

Вот пример работы программы, которая будет написана.

Программа

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

  • print — эта функция выводит на экран информацию.
  • input — выводит информацию и предлагает пользователю ввести данные.
  • b**2 — это возведение в степень, в данном случае переменная b возводится в квадрат.
  • str — эта функция приводит данные к строковому виду.
  • if-elif-else — это условные операторы в языке Python. Исходя из значения discriminant мы определяем количество корней квадратного уравнения.
  • discriminant ** 0.5 — с помощью такого способа извлекаем квадратный корень. В Python есть несколько способов извлечения корней, например, с помощью функции sqrt из библиотеки math. Про способы извлечения корней в Python описано в отдельной статье.
print('Решаем уравнение a•x²+b•x+c=0') a = input('Введите значение a: ') b = input('Введите значение b: ') c = input('Введите значение c: ') a = float(a) b = float(b) c = float(c) discriminant = b**2 - 4*a*c print('Дискриминант = ' + str(discriminant)) if discriminant < 0: print('Корней нет') elif discriminant == 0: x = -b / (2 * a) print('x = ' + str(x)) else: x1 = (-b + discriminant ** 0.5) / (2 * a) x2 = (-b - discriminant ** 0.5) / (2 * a) print('x₁ = ' + str(x1)) print('x₂ = ' + str(x2))

Запустим программу и введём нужные коэффициенты.

Решаем уравнение a•x²+b•x+c=0 Введите значение a: -4 Введите значение b: -231 Введите значение c: 34 Дискриминант = 53905.0 x₁ = -57.89681291718352 x₂ = 0.1468129171835173

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

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

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

if discriminant == 0: x = -b / (2 * a) print('x = ' + str(x)) else: x1 = (-b + discriminant ** 0.5) / (2 * a) x2 = (-b - discriminant ** 0.5) / (2 * a) print('x₁ = ' + str(x1)) print('x₂ = ' + str(x2))

Тогда пример решения уравнения будет выглядеть следующим образом:

Решаем уравнение a•x²+b•x+c=0 Введите значение a: 4 Введите значение b: 1 Введите значение c: 2 Дискриминант = -31.0 x₁ = (-0.12499999999999996+0.6959705453537527j) x₂ = (-0.12500000000000006-0.6959705453537527j)

Как видим, получили два комплексных корня.

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

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *