Решить квадратное уравнение python

Решить квадратное уравнение python

Don’t learn to code. Code to learn!

  • Python — Обзор
  • Основы синтаксиса Python
  • Операторы в Python
  • Типы данных в Python
  • Условные конструкторы в Python
  • Циклы в Python
  • Функции в Python
  • Функциональное программирование в Python
  • ООП в Python
  • Модули в Python
  • Работа с файлами в Python
  • Обработка исключительных ситуаций в Python

Рассмотрим пример создания графического интерфейса (GUI) на Python. В качестве «жертвы» напишем простенькую программу — решатель квадратных уравнений. Наше задание мы разобъем на несколько частей.

Часть первая: функция решения квадратного уравнения.

Напомним, что квадратным является уравнение вида:

Есть несколько способов решить квадратное уравнение, мы выберем решение через дискриминант.

Используя эту формулу мы можем вывести решение. Если дискриминант больше или равен нулю, то корни уравнения высчитываются по формуле:

Если же дискриминант меньше нуля, то уравнение не имеет решений.

Превратим данные формулы в код:

def solver(a,b,c): """ Решает квадратное уравнение и выводит отформатированный ответ """ # находим дискриминант D = b*b - 4*a*c if D >= 0: x1 = (-b + sqrt(D)) / (2*a) x2 = (-b - sqrt(D)) / (2*a) text = "The discriminant is: %s \n X1 is: %s \n X2 is: %s \n" % (D, x1, x2) else: text = "The discriminant is: %s \n This equation has no solutions" % D return text

Чтобы все работало не забудьте импортировать функцию sqrt из модуля math.

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

Теперь пора переходить к созданию графической оболочки для нашего приложения.

Часть вторая: создаем GUI для программы

Для простоты будем создавать GUI встроенными средствами Python, поэтому импортируем все из библиотеки Tkinter:

В Python версии 3.х название модуля следует писать с маленькой буквы — tkinter.

Далее создаем само окно и размещаем на нем необходимые виджеты:

# родительский элемент root = Tk() # устанавливаем название окна root.title("Quadratic calculator") # устанавливаем минимальный размер окна root.minsize(325,230) # выключаем возможность изменять окно root.resizable(width=False, height=False) # создаем рабочую область frame = Frame(root) frame.grid() # поле для ввода первого аргумента уравнения (a) a = Entry(frame, width=3) a.grid(row=1,column=1,padx=(10,0)) # текст после первого аргумента a_lab = Label(frame, text="x**2+").grid(row=1,column=2) # поле для ввода второго аргумента уравнения (b) b = Entry(frame, width=3) b.grid(row=1,column=3) # текст после второго аргумента b_lab = Label(frame, text="x+").grid(row=1, column=4) # поле для ввода третьего аргумента уравнения (с) c = Entry(frame, width=3) c.grid(row=1, column=5) # текст после третьего аргумента c_lab = Label(frame, text="= 0").grid(row=1, column=6) # кнопка решить but = Button(frame, text="Solve").grid(row=1, column=7, padx=(10,0)) # место для вывода решения уравнения output = Text(frame, bg="lightblue", font="Arial 12", width=35, height=10) output.grid(row=2, columnspan=8) # запускаем главное окно root.mainloop()

Если вы в точности повторили указанный код, то после запуска скрипта у вас получится примерно следующее окно:

Читайте также:  Заголовок

окно калькулятора квадратных уравнений с Python и Tkinter

Отлично, программа работает. Осталось объяснить Python как связать эти две части.

Часть третья: объединяем все воедино

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

Функция вставки информации:

def inserter(value): """ Inserts specified value into text widget """ output.delete("0.0","end") output.insert("0.0",value)

Функция inserter предельно проста: очищает поле для ввода и вставляет туда переданный ей аргумент value.

Напишем функцию обработки введенной информации. Назовем ее handler:

def handler(): """ Get the content of entries and passes result to the output area """ try: # make sure that we entered correct values a_val = float(a.get()) b_val = float(b.get()) c_val = float(c.get()) inserter(solver(a_val, b_val, c_val)) except ValueError: inserter("Make sure you entered 3 numbers")

В зависимости от данных введенных в поля для ввода передает функции inserter либо результат решения уравнения, либо сообщение о неверно введенных данных.

Чтобы все работало, следует изменить строку создания виджета Button следующим образом:

but = Button(frame, text="Solve", command=handler).grid(row=1, column=7, padx=(10,0))

Теперь можно спокойно пользоваться нашей программой:

Пример программы с GUI на Python и Tkinter #1 Пример программы с GUI на Python и Tkinter #2
Дискриминант больше нуля Дискриминант равен нулю
Пример программы с GUI на Python и Tkinter #3 Пример программы с GUI на Python и Tkinter #4
Дискриминант меньше нуля. Решений нет Введены не все аргументы

Часть четвертая: необязательная

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

def clear(event): """ Clears entry form """ caller = event.widget caller.delete("0", "end")

Таким образом мы очищаем виджет, вызвавший данную функцию. Чтобы все работало, добавьте следующие строки после создания виджетов, но до размещения. Например, после строки a = Entry(. , но до строки a.grid(.

a.bind("", clear) b.bind("", clear) c.bind("", clear)

Готово. Программа работает, Вы великолепны!

Исходный код калькулятора квадратных уравнений с GUI на GitHub

Источник

Решить квадратное уравнение python

Как решать квадратные уравнения на Python: Примеры и объяснения

Как решать квадратные уравнения на Python: Примеры и объяснения

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

Читайте также:  Java scanner nextline after nextint

В данной статье мы рассмотрим несколько примеров решения квадратных уравнений на 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.

Источник

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

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

Функция 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, то квадратное уравнение превращается в линейное, которое решается иным способом. Оно всегда имеет один корень.

Источник

Оцените статью