Решение квадратного уравнения | 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")
Найти корни квадратного уравнения
Таким образом, программа для нахождения корней квадратного уравнения должна иметь три ветви условного оператора.
Функция 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: Примеры и объяснения
14 апреля 2023
Оценки статьи
Еще никто не оценил статью
Квадратные уравнения являются одним из наиболее распространенных типов уравнений, которые встречаются в математике и науке. Решение квадратных уравнений на Python может быть полезно в различных областях, таких как научные исследования, инженерные расчеты, финансовая аналитика и многих других.
В данной статье мы рассмотрим несколько примеров решения квадратных уравнений на Python с подробными объяснениями.
Решение квадратного уравнения с использованием дискриминанта на Python
from math import sqrt def solve_quadratic_equation(a, b, c): """ Решает квадратное уравнение ax^2 + bx + c = 0 :param a: коэффициент при x^2 :param b: коэффициент при x :param c: свободный член :return: корни уравнения """ discriminant = b**2 - 4*a*c if discriminant > 0: x1 = (-b + sqrt(discriminant)) / (2*a) x2 = (-b - sqrt(discriminant)) / (2*a) return x1, x2 elif discriminant == 0: x1 = -b / (2*a) return x1 else: return None # Задаем коэффициенты уравнения a = 1 b = -3 c = 2 # Решение уравнения и вывод результатов result = solve_quadratic_equation(a, b, c) if result is None: print("Уравнение не имеет действительных корней") elif isinstance(result, tuple): print(f"Корни уравнения: x1 = result[0]>, x2 = result[1]>") else: print(f"Корень уравнения: x = result>") # Корни уравнения: x1 = 2.0, x2 = 1.0
Данный код представляет функцию solve_quadratic_equation , которая решает квадратное уравнение вида ax^2 + bx + c = 0 , где a , b и c - коэффициенты уравнения. Функция использует импортированную из модуля math функцию sqrt для вычисления квадратного корня.
Функция solve_quadratic_equation принимает три аргумента - коэффициенты a , b и c уравнения, и возвращает корни уравнения в виде кортежа (tuple) или одиночного значения, в зависимости от количества корней.
Решение системы квадратных уравнений в Python
import math def solve_quadratic_equation(a, b, c): """ Решает квадратное уравнение ax^2 + bx + c = 0 :param a: коэффициент при x^2 :param b: коэффициент при x :param c: свободный член :return: корни уравнения """ discriminant = b**2 - 4*a*c if discriminant > 0: x1 = (-b + math.sqrt(discriminant)) / (2*a) x2 = (-b - math.sqrt(discriminant)) / (2*a) return x1, x2 elif discriminant == 0: x1 = -b / (2*a) return x1 else: return None def solve_system_of_equations(eq1, eq2): """ Решает систему из двух квадратных уравнений :param eq1: кортеж с коэффициентами первого уравнения (a, b, c) :param eq2: кортеж с коэффициентами второго уравнения (a, b, c) :return: корни системы уравнений """ a1, b1, c1 = eq1 a2, b2, c2 = eq2 # Решение первого уравнения x1 = solve_quadratic_equation(a1, b1, c1) if x1 is None: return None # Решение второго уравнения x2 = solve_quadratic_equation(a2, b2, c2) if x2 is None: return None return x1, x2 # Задаем систему уравнений eq1 = (1, -3, 2) eq2 = (2, 5, -3) # Решение системы уравнений и вывод результатов result = solve_system_of_equations(eq1, eq2) if result is None: print("Система уравнений не имеет действительных корней") else: x1, x2 = result print(f"Корни системы уравнений: x1 = x1>, x2 = x2>") # Корни системы уравнений: x1 = (2.0, 1.0), x2 = (0.5, -3.0)
Данный код решает систему из двух квадратных уравнений и выводит результаты.
Функция solve_quadratic_equation(a, b, c) решает квадратное уравнение вида ax^2 + bx + c = 0 , где a , b и c - это коэффициенты уравнения. Она использует дискриминант ( discriminant ), который вычисляется как разность квадрата коэффициента при x ( b ) и произведения . Затем, в зависимости от значения дискриминанта, функция возвращает корни уравнения или None , если уравнение не имеет действительных корней.
Решение квадратного уравнения с использованием библиотеки numpy для работы с массивами и матрицами
import numpy as np def solve_quadratic_equation(a, b, c): """ Решает квадратное уравнение ax^2 + bx + c = 0 :param a: коэффициент при x^2 :param b: коэффициент при x :param c: свободный член :return: корни уравнения """ discriminant = b**2 - 4*a*c if discriminant > 0: x1 = (-b + np.sqrt(discriminant)) / (2*a) x2 = (-b - np.sqrt(discriminant)) / (2*a) return x1, x2 elif discriminant == 0: x1 = -b / (2*a) return x1 else: return None # Задаем коэффициенты уравнения a = 1 b = -3 c = 2 # Решение уравнения и вывод результатов result = solve_quadratic_equation(a, b, c) if result is None: print("Уравнение не имеет действительных корней") elif isinstance(result, tuple): print(f"Корни уравнения: x1 = result[0]>, x2 = result[1]>") else: print(f"Корень уравнения: x = result>") # Корни уравнения: x1 = 2.0, x2 = 1.0
Данный код представляет функцию solve_quadratic_equation(a, b, c) , которая решает квадратное уравнение вида ax^2 + bx + c = 0 , где a , b и c - это коэффициенты уравнения, передаваемые в качестве аргументов в функцию. Функция использует библиотеку NumPy, импортированную как np, для выполнения математических операций, таких как извлечение квадратного корня.
Заключение
Решение квадратных уравнений на Python может быть полезным навыком при работе с математическими и научными расчетами.
В данной статье мы рассмотрели три примера решения квадратных уравнений на Python.
Решение квадратного уравнения в Python
Квадратное уравнение образовано от латинского термина «quadrates», что означает «квадрат». Это специальный тип уравнения, имеющий форму:
Здесь «x» неизвестное, которое вы должны найти, «a», «b», «c» задает числа, такие что «a» не равно 0. Если a = 0, то уравнение становится линейным, а не квадратным. В уравнении a, b и c называются коэффициентами.
Возьмем пример решения квадратного уравнения 8x 2 + 16x + 8 = 0.
# import complex math module import cmath a = float(input('Enter a: ')) b = float(input('Enter b: ')) c = float(input('Enter c: ')) # calculate the discriminant d =(b**2) -(4*a*c) # find two solutions sol1 =(-b-cmath.sqrt(d))/(2*a) sol2 =(-b+cmath.sqrt(d))/(2*a) print('The solution are and '.format(sol1,sol2))
Enter a: 8 Enter b: 5 Enter c: 9 The solution are(-0.3125-1.0135796712641785j) and(-0.3125+1.0135796712641785j)
В первой строке мы импортировали модуль cmath и определили три переменные с именами a, b и c, которые получают ввод от пользователя. Затем вычисляем дискриминант по формуле. С помощью метода cmath.sqrt() мы вычислили два решения и распечатали результат.
Второй метод
Мы можем получить решение квадратного уравнения, используя прямую формулу. Давайте разберем следующий пример.
Вышеприведенная формула состоит из следующих случаев.
- Если b 2 < 4ac, то корни комплексные (не вещественные). Например – x 2 + x + 1, корни -0,5 + i1,73205 и +0,5 – i1,73205.
- Если b 2 == 4ac, то оба корня одинаковы. Например – x 2 + x + 1, корни равны -0,5 + i1,73205 и +0,5 – i1,73205.
- Если b 2 > 4ac, то корни действительны и различны. Например – х 2 – 7 х – 12, корни 3 и 4.
# Python program to find roots of quadratic equation import math # function for finding roots def findRoots(a, b, c): dis_form = b * b - 4 * a * c sqrt_val = math.sqrt(abs(dis_form)) if dis_form > 0: print(" real and different roots ") print((-b + sqrt_val) /(2 * a)) print((-b - sqrt_val) /(2 * a)) elif dis_form == 0: print(" real and same roots") print(-b /(2 * a)) else: print("Complex Roots") print(- b /(2 * a), " + i", sqrt_val) print(- b /(2 * a), " - i", sqrt_val) a = int(input('Enter a:')) b = int(input('Enter b:')) c = int(input('Enter c:')) # If a is 0, then incorrect equation if a == 0: print("Input correct quadratic equation") else: findRoots(a, b, c)
Enter a:7 Enter b:5 Enter c:2 Complex Roots -0.35714285714285715 + i 5.5677643628300215 -0.35714285714285715 - i 5.5677643628300215
В приведенном выше коде мы импортировали математический модуль и определили формулу для вычисления дискриминанта. Затем мы определили функцию findRoots, которая принимает три целых значения в качестве аргументов. Затем мы проверили корни с помощью оператора if-elif-else.