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

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

  • автор:

Решение квадратного уравнения | 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: Примеры и объяснения

Как решать квадратные уравнения на 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.

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

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